diff options
Diffstat (limited to 'Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor')
4 files changed, 129 insertions, 0 deletions
diff --git a/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs new file mode 100644 index 00000000..b13dec97 --- /dev/null +++ b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs @@ -0,0 +1,99 @@ +using System.Reflection; +using System.Linq; +using UnityEditor; +using UnityEngine; +using System.IO; +using UniGLTF.ShaderPropExporter; +using System.Collections.Generic; + +namespace UniGLTF +{ + public static class ShaderPropMenu + { +#if VRM_DEVELOP + [MenuItem("VRM/ShaderProperty/PreExport ShaderProps")] +#endif + public static void PreExport() + { + foreach (var fi in typeof(PreExportShaders).GetFields( + BindingFlags.Static + | BindingFlags.Public + | BindingFlags.NonPublic)) + { + var attr = fi.GetCustomAttributes(true).FirstOrDefault(y => y is PreExportShadersAttribute); + if (attr != null) + { + var supportedShaders = fi.GetValue(null) as SupportedShader[]; + foreach (var supported in supportedShaders) + { + PreExport(supported); + } + } + } + } + + static string EscapeShaderName(string name) + { + return name.Replace("/", "_").Replace(" ", "_"); + } + + static string ExportDir + { + get + { + return Application.dataPath + "/VRM/ShaderProperty/Runtime"; + } + } + + static void PreExport(SupportedShader supportedShader) + { + var shader = Shader.Find(supportedShader.ShaderName); + var props = ShaderProps.FromShader(shader); + + var path = Path.Combine(ExportDir, supportedShader.TargetFolder); + path = Path.Combine(path, EscapeShaderName(supportedShader.ShaderName) + ".cs").Replace("\\", "/"); + Debug.LogFormat("PreExport: {0}", path); + File.WriteAllText(path, ToString(props, shader.name)); + } + + static string ToString(ShaderProps props, string shaderName) + { + var list = new List<string>(); + foreach (var prop in props.Properties) + { + list.Add(string.Format("new ShaderProperty(\"{0}\", ShaderPropertyType.{1})\r\n", prop.Key, prop.ShaderPropertyType)); + } + + return string.Format(@"using System.Collections.Generic; + + +namespace UniGLTF.ShaderPropExporter +{{ + public static partial class PreShaderPropExporter + {{ + [PreExportShader] + static KeyValuePair<string, ShaderProps> {0} + {{ + get + {{ + return new KeyValuePair<string, ShaderProps>( + ""{1}"", + new ShaderProps + {{ + Properties = new ShaderProperty[]{{ +{2} + }} + }} + ); + }} + }} + }} +}} +" +, EscapeShaderName(shaderName) +, shaderName +, string.Join(",", list.ToArray())); + } + + } +} diff --git a/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs.meta b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs.meta new file mode 100644 index 00000000..0626004d --- /dev/null +++ b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderPropMenu.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5eb12c186c6337e4db278b5f01d47cae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef new file mode 100644 index 00000000..382622a7 --- /dev/null +++ b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef @@ -0,0 +1,12 @@ +{ + "name": "ShaderProperty.Editor", + "references": [ + "ShaderProperty.Runtime" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false +}
\ No newline at end of file diff --git a/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef.meta b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef.meta new file mode 100644 index 00000000..f5affb98 --- /dev/null +++ b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Editor/ShaderProperty.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bc66ece0f33b52446a0830c05781d4db +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: |