forked from BilalY/Rasagar
56 lines
2.1 KiB
C#
56 lines
2.1 KiB
C#
|
using UnityEngine;
|
||
|
using UnityEditor.ShaderGraph;
|
||
|
using UnityEditor.Graphing;
|
||
|
using UnityEditor.ShaderGraph.Internal;
|
||
|
|
||
|
namespace UnityEditor.Rendering.CustomRenderTexture.ShaderGraph
|
||
|
{
|
||
|
[Title("Custom Render Texture", "Slice Index / Cubemap Face")]
|
||
|
[SubTargetFilter(typeof(CustomTextureSubTarget))]
|
||
|
class CustomTextureSlice : AbstractMaterialNode, IGeneratesFunction
|
||
|
{
|
||
|
private const string kOutputSlotCubeFaceName = "Texture Cube Face";
|
||
|
private const string kOutputSlot3DSliceName = "Texture Depth Slice";
|
||
|
|
||
|
public const int OutputSlotCubeFaceId = 3;
|
||
|
public const int OutputSlot3DSliceId = 4;
|
||
|
|
||
|
public CustomTextureSlice()
|
||
|
{
|
||
|
name = "Slice Index / Cubemap Face";
|
||
|
UpdateNodeAfterDeserialization();
|
||
|
}
|
||
|
|
||
|
protected int[] validSlots => new[] { OutputSlotCubeFaceId, OutputSlot3DSliceId };
|
||
|
|
||
|
public sealed override void UpdateNodeAfterDeserialization()
|
||
|
{
|
||
|
AddSlot(new Vector1MaterialSlot(OutputSlotCubeFaceId, kOutputSlotCubeFaceName, kOutputSlotCubeFaceName, SlotType.Output, 0));
|
||
|
AddSlot(new Vector1MaterialSlot(OutputSlot3DSliceId, kOutputSlot3DSliceName, kOutputSlot3DSliceName, SlotType.Output, 0));
|
||
|
RemoveSlotsNameNotMatching(validSlots);
|
||
|
}
|
||
|
|
||
|
public override string GetVariableNameForSlot(int slotId)
|
||
|
{
|
||
|
switch (slotId)
|
||
|
{
|
||
|
case OutputSlotCubeFaceId:
|
||
|
return "_CustomRenderTextureCubeFace";
|
||
|
default:
|
||
|
case OutputSlot3DSliceId:
|
||
|
return "_CustomRenderTexture3DSlice";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void GenerateNodeFunction(FunctionRegistry registry, GenerationMode generationMode)
|
||
|
{
|
||
|
// For preview only we declare CRT defines
|
||
|
if (generationMode == GenerationMode.Preview)
|
||
|
{
|
||
|
registry.builder.AppendLine("#define _CustomRenderTextureCubeFace 0.0");
|
||
|
registry.builder.AppendLine("#define _CustomRenderTexture3DSlice 0.0");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|