diff options
Diffstat (limited to 'Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Runtime/ShaderProps.cs')
-rw-r--r-- | Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Runtime/ShaderProps.cs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Runtime/ShaderProps.cs b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Runtime/ShaderProps.cs new file mode 100644 index 00000000..36d9a825 --- /dev/null +++ b/Assets/ThirdParty/VRM/VRMShaders/ShaderProperty/Runtime/ShaderProps.cs @@ -0,0 +1,67 @@ +#if UNITY_EDITOR +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +#endif + + +namespace UniGLTF.ShaderPropExporter +{ + public enum ShaderPropertyType + { + TexEnv, + Color, + Range, + Float, + Vector, + } + + public struct ShaderProperty + { + public string Key; + public ShaderPropertyType ShaderPropertyType; + + public ShaderProperty(string key, ShaderPropertyType propType) + { + Key = key; + ShaderPropertyType = propType; + } + } + + public class ShaderProps + { + public ShaderProperty[] Properties; + +#if UNITY_EDITOR + static ShaderPropertyType ConvType(ShaderUtil.ShaderPropertyType src) + { + switch (src) + { + case ShaderUtil.ShaderPropertyType.TexEnv: return ShaderPropertyType.TexEnv; + case ShaderUtil.ShaderPropertyType.Color: return ShaderPropertyType.Color; + case ShaderUtil.ShaderPropertyType.Float: return ShaderPropertyType.Float; + case ShaderUtil.ShaderPropertyType.Range: return ShaderPropertyType.Range; + case ShaderUtil.ShaderPropertyType.Vector: return ShaderPropertyType.Vector; + default: throw new NotImplementedException(); + } + } + + public static ShaderProps FromShader(Shader shader) + { + var properties = new List<ShaderProperty>(); + for (int i = 0; i < ShaderUtil.GetPropertyCount(shader); ++i) + { + var name = ShaderUtil.GetPropertyName(shader, i); + var propType = ShaderUtil.GetPropertyType(shader, i); + properties.Add(new ShaderProperty(name, ConvType(propType))); + } + + return new ShaderProps + { + Properties = properties.ToArray(), + }; + } +#endif + } +} |