A game about forced loneliness, made by TACStudios
1using System;
2using System.Text;
3using UnityEditor.Graphing;
4using UnityEngine;
5
6namespace UnityEditor.ShaderGraph.Internal
7{
8 [Serializable]
9 public abstract class VectorShaderProperty : AbstractShaderProperty<Vector4>
10 {
11 internal override bool isExposable => true;
12 internal override bool isRenamable => true;
13 internal virtual int vectorDimension => 4;
14
15 internal override string GetHLSLVariableName(bool isSubgraphProperty, GenerationMode mode)
16 {
17 HLSLDeclaration decl = GetDefaultHLSLDeclaration();
18 if (decl == HLSLDeclaration.HybridPerInstance)
19 return $"UNITY_ACCESS_HYBRID_INSTANCED_PROP({referenceName}, {concretePrecision.ToShaderString()}{vectorDimension})";
20 else
21 return base.GetHLSLVariableName(isSubgraphProperty, mode);
22 }
23
24 internal override string GetPropertyBlockString()
25 {
26 return $"{hideTagString}{referenceName}(\"{displayName}\", Vector) = ({NodeUtils.FloatToShaderValueShaderLabSafe(value.x)}, {NodeUtils.FloatToShaderValueShaderLabSafe(value.y)}, {NodeUtils.FloatToShaderValueShaderLabSafe(value.z)}, {NodeUtils.FloatToShaderValueShaderLabSafe(value.w)})";
27 }
28
29 internal override string GetPropertyAsArgumentString(string precisionString)
30 {
31 return $"{concreteShaderValueType.ToShaderString(precisionString)} {referenceName}";
32 }
33 }
34}