You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.8 KiB
66 lines
2.8 KiB
using UnityEngine;
|
|
using UnityEditor.ShaderGraph;
|
|
using UnityEditor.Graphing;
|
|
using UnityEditor.ShaderGraph.Internal;
|
|
|
|
namespace UnityEditor.Rendering.CustomRenderTexture.ShaderGraph
|
|
{
|
|
[Title("Custom Render Texture", "Size")]
|
|
[SubTargetFilter(typeof(CustomTextureSubTarget))]
|
|
class CustomTextureSize : AbstractMaterialNode, IGeneratesFunction
|
|
{
|
|
private const string kOutputSlotWidthName = "Texture Width";
|
|
private const string kOutputSlotHeightName = "Texture Height";
|
|
private const string kOutputSlotDepthName = "Texture Depth";
|
|
|
|
public const int OutputSlotWidthId = 0;
|
|
public const int OutputSlotHeightId = 1;
|
|
public const int OutputSlotDepthId = 2;
|
|
|
|
public CustomTextureSize()
|
|
{
|
|
name = "Custom Render Texture Size";
|
|
UpdateNodeAfterDeserialization();
|
|
}
|
|
|
|
protected int[] validSlots => new[] { OutputSlotWidthId, OutputSlotHeightId, OutputSlotDepthId };
|
|
|
|
public sealed override void UpdateNodeAfterDeserialization()
|
|
{
|
|
AddSlot(new Vector1MaterialSlot(OutputSlotWidthId, kOutputSlotWidthName, kOutputSlotWidthName, SlotType.Output, 0));
|
|
AddSlot(new Vector1MaterialSlot(OutputSlotHeightId, kOutputSlotHeightName, kOutputSlotHeightName, SlotType.Output, 0));
|
|
AddSlot(new Vector1MaterialSlot(OutputSlotDepthId, kOutputSlotDepthName, kOutputSlotDepthName, SlotType.Output, 0));
|
|
RemoveSlotsNameNotMatching(validSlots);
|
|
}
|
|
|
|
public override string GetVariableNameForSlot(int slotId)
|
|
{
|
|
switch (slotId)
|
|
{
|
|
case OutputSlotHeightId:
|
|
return "_CustomRenderTextureHeight";
|
|
case OutputSlotDepthId:
|
|
return "_CustomRenderTextureDepth";
|
|
default:
|
|
return "_CustomRenderTextureWidth";
|
|
}
|
|
}
|
|
|
|
public void GenerateNodeFunction(FunctionRegistry registry, GenerationMode generationMode)
|
|
{
|
|
// For preview only we declare CRT defines
|
|
if (generationMode == GenerationMode.Preview)
|
|
{
|
|
registry.builder.AppendLine("#ifndef _CustomRenderTextureHeight");
|
|
registry.builder.AppendLine("#define _CustomRenderTextureHeight 1.0");
|
|
registry.builder.AppendLine("#endif");
|
|
registry.builder.AppendLine("#ifndef _CustomRenderTextureWidth");
|
|
registry.builder.AppendLine("#define _CustomRenderTextureWidth 1.0");
|
|
registry.builder.AppendLine("#endif");
|
|
registry.builder.AppendLine("#ifndef _CustomRenderTextureDepth");
|
|
registry.builder.AppendLine("#define _CustomRenderTextureDepth 1.0");
|
|
registry.builder.AppendLine("#endif");
|
|
}
|
|
}
|
|
}
|
|
}
|