60 lines
1.8 KiB
C#
60 lines
1.8 KiB
C#
using System;
|
|
using UnityEditor.Graphing;
|
|
using UnityEngine;
|
|
|
|
namespace UnityEditor.ShaderGraph
|
|
{
|
|
[Serializable]
|
|
class Texture3DMaterialSlot : MaterialSlot
|
|
{
|
|
public Texture3DMaterialSlot()
|
|
{ }
|
|
|
|
public Texture3DMaterialSlot(
|
|
int slotId,
|
|
string displayName,
|
|
string shaderOutputName,
|
|
SlotType slotType,
|
|
ShaderStageCapability shaderStageCapability = ShaderStageCapability.All,
|
|
bool hidden = false)
|
|
: base(slotId, displayName, shaderOutputName, slotType, shaderStageCapability, hidden)
|
|
{ }
|
|
|
|
[SerializeField]
|
|
bool m_BareResource = false;
|
|
internal override bool bareResource
|
|
{
|
|
get { return m_BareResource; }
|
|
set { m_BareResource = value; }
|
|
}
|
|
|
|
public override void AppendHLSLParameterDeclaration(ShaderStringBuilder sb, string paramName)
|
|
{
|
|
if (m_BareResource)
|
|
{
|
|
sb.Append("TEXTURE3D(");
|
|
sb.Append(paramName);
|
|
sb.Append(")");
|
|
}
|
|
else
|
|
base.AppendHLSLParameterDeclaration(sb, paramName);
|
|
}
|
|
|
|
public override SlotValueType valueType { get { return SlotValueType.Texture3D; } }
|
|
public override ConcreteSlotValueType concreteValueType { get { return ConcreteSlotValueType.Texture3D; } }
|
|
public override bool isDefaultValue => true;
|
|
|
|
public override void AddDefaultProperty(PropertyCollector properties, GenerationMode generationMode)
|
|
{ }
|
|
|
|
public override void CopyValuesFrom(MaterialSlot foundSlot)
|
|
{
|
|
var slot = foundSlot as Texture3DMaterialSlot;
|
|
if (slot != null)
|
|
{
|
|
m_BareResource = slot.m_BareResource;
|
|
}
|
|
}
|
|
}
|
|
}
|