forked from BilalY/Rasagar
35 lines
1.4 KiB
C#
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}";
|
||
|
}
|
||
|
}
|
||
|
}
|