diff options
author | Freya Murphy <freya@freyacat.org> | 2024-12-27 00:56:58 -0500 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2024-12-27 00:58:02 -0500 |
commit | 799e6680d40119dc9c2a9e0b320054a40324bebe (patch) | |
tree | dbcd308d59eb6e4f937a5547dd77d9f91d4fec20 /VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/ModularShaderSystem/Scriptables/Variable.cs | |
parent | move to self host (diff) | |
download | unityprojects-799e6680d40119dc9c2a9e0b320054a40324bebe.tar.gz unityprojects-799e6680d40119dc9c2a9e0b320054a40324bebe.tar.bz2 unityprojects-799e6680d40119dc9c2a9e0b320054a40324bebe.zip |
VRCSDK3Avatars found!
Diffstat (limited to 'VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/ModularShaderSystem/Scriptables/Variable.cs')
-rw-r--r-- | VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/ModularShaderSystem/Scriptables/Variable.cs | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/ModularShaderSystem/Scriptables/Variable.cs b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/ModularShaderSystem/Scriptables/Variable.cs new file mode 100644 index 00000000..892210bc --- /dev/null +++ b/VRCSDK3Avatars/Assets/_PoiyomiShaders/Scripts/ModularShaderSystem/Scriptables/Variable.cs @@ -0,0 +1,138 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Poiyomi.ModularShaderSystem +{ + [Serializable] + public class Variable : IEquatable<Variable> + { + public override int GetHashCode() + { + int hashCode = (Name != null ? Name.GetHashCode() : 0); + return hashCode; + } + + public string Name; + public VariableType Type; + public string CustomType; + + public string GetDefinition() + { + switch (Type) + { + case VariableType.Half: + return $"half {Name};"; + case VariableType.Half2: + return $"half2 {Name};"; + case VariableType.Half3: + return $"half3 {Name};"; + case VariableType.Half4: + return $"half4 {Name};"; + case VariableType.Float: + return $"float {Name};"; + case VariableType.Float2: + return $"float2 {Name};"; + case VariableType.Float3: + return $"float3 {Name};"; + case VariableType.Float4: + return $"float4 {Name};"; + case VariableType.Sampler2D: + return $"sampler2D {Name};"; + case VariableType.SamplerCUBE: + return $"samplerCUBE {Name};"; + case VariableType.Sampler3D: + return $"sampler3D {Name};"; + case VariableType.Texture2D: + return $"Texture2D {Name};"; + case VariableType.Texture2DArray: + return $"Texture2DArray {Name};"; + case VariableType.Texture2DMS: + return $"Texture2DMS {Name};"; + case VariableType.TextureCube: + return $"TextureCube {Name};"; + case VariableType.TextureCubeArray: + return $"TextureCubeArray {Name};"; + case VariableType.Texture3D: + return $"Texture3D {Name};"; + case VariableType.UnityTex2D: + return $"UNITY_DECLARE_TEX2D({Name});"; + case VariableType.UnityTex2DNoSampler: + return $"UNITY_DECLARE_TEX2D_NOSAMPLER({Name});"; + case VariableType.UnityTexCube: + return $"UNITY_DECLARE_TEXCUBE({Name});"; + case VariableType.UnityTexCubeNoSampler: + return $"UNITY_DECLARE_TEXCUBE_NOSAMPLER({Name});"; + case VariableType.UnityTex3D: + return $"UNITY_DECLARE_TEX3D({Name});"; + case VariableType.UnityTex3DNoSampler: + return $"UNITY_DECLARE_TEX3D_NOSAMPLER({Name});"; + case VariableType.UnityTex2DArray: + return $"UNITY_DECLARE_TEX2DARRAY({Name});"; + case VariableType.UnityTex2DArrayNoSampler: + return $"UNITY_DECLARE_TEX2DARRAY_NOSAMPLER({Name});"; + case VariableType.UnityTexCubeArray: + return $"UNITY_DECLARE_TEXCUBEARRAY({Name});"; + case VariableType.UnityTexCubeArrayNoSampler: + return $"UNITY_DECLARE_TEXCUBEARRAY_NOSAMPLER({Name});"; + case VariableType.Custom: + return $"{CustomType} {Name};"; + } + + return ""; + } + + public override bool Equals(object obj) + { + return Equals(obj as Variable); + } + + public bool Equals(Variable other) + { + return other != null && + Name.Equals(other.Name); + } + + public static bool operator ==(Variable left, Variable right) + { + return EqualityComparer<Variable>.Default.Equals(left, right); + } + + public static bool operator !=(Variable left, Variable right) + { + return !(left == right); + } + } + + public enum VariableType + { + Half, + Half2, + Half3, + Half4, + Float, + Float2, + Float3, + Float4, + Sampler2D, + SamplerCUBE, + Sampler3D, + Texture2D, + Texture2DArray, + Texture2DMS, + TextureCube, + TextureCubeArray, + Texture3D, + UnityTex2D, + UnityTex2DNoSampler, + UnityTexCube, + UnityTexCubeNoSampler, + UnityTex3D, + UnityTex3DNoSampler, + UnityTex2DArray, + UnityTex2DArrayNoSampler, + UnityTexCubeArray, + UnityTexCubeArrayNoSampler, + Custom = 999 + } +}
\ No newline at end of file |