mathe/Library/PackageCache/com.unity.shadergraph@14.0.8/Editor/Data/Graphs/VectorShaderProperty.cs
2024-09-20 20:30:10 +02:00

35 lines
1.4 KiB
C#

using System;
using System.Text;
using UnityEditor.Graphing;
using UnityEngine;
namespace UnityEditor.ShaderGraph.Internal
{
[Serializable]
public abstract class VectorShaderProperty : AbstractShaderProperty<Vector4>
{
internal override bool isExposable => true;
internal override bool isRenamable => true;
internal virtual int vectorDimension => 4;
internal override string GetHLSLVariableName(bool isSubgraphProperty, GenerationMode mode)
{
HLSLDeclaration decl = GetDefaultHLSLDeclaration();
if (decl == HLSLDeclaration.HybridPerInstance)
return $"UNITY_ACCESS_HYBRID_INSTANCED_PROP({referenceName}, {concretePrecision.ToShaderString()}{vectorDimension})";
else
return base.GetHLSLVariableName(isSubgraphProperty, mode);
}
internal override string GetPropertyBlockString()
{
return $"{hideTagString}{referenceName}(\"{displayName}\", Vector) = ({NodeUtils.FloatToShaderValueShaderLabSafe(value.x)}, {NodeUtils.FloatToShaderValueShaderLabSafe(value.y)}, {NodeUtils.FloatToShaderValueShaderLabSafe(value.z)}, {NodeUtils.FloatToShaderValueShaderLabSafe(value.w)})";
}
internal override string GetPropertyAsArgumentString(string precisionString)
{
return $"{concreteShaderValueType.ToShaderString(precisionString)} {referenceName}";
}
}
}