Files
UnrealEngine/Engine/Plugins/TextureGraph/Shaders/Expressions/Expression_Maths_TwoInputs.usf
2025-05-18 13:04:45 +08:00

66 lines
1.8 KiB
HLSL

// Copyright Epic Games, Inc. All Rights Reserved.
#include "/Engine/Public/Platform.ush"
#include "/Plugin/TextureGraph/SamplerStates.ush"
Texture2D Operand1;
Texture2D Operand2;
float4 FSH_Multiply(float2 uv : TEXCOORD0) : SV_Target0
{
float4 op1 = Operand1.Sample(SamplerStates_Wrap, uv);
float4 op2 = Operand2.Sample(SamplerStates_Wrap, uv);
return op1 * op2;
}
float4 FSH_Divide(float2 uv : TEXCOORD0) : SV_Target0
{
float4 op1 = Operand1.Sample(SamplerStates_Wrap, uv);
float4 op2 = Operand2.Sample(SamplerStates_Wrap, uv);
return op1 / (op2 + float4(0.0001, 0.0001, 0.0001, 0.0001));
}
float4 FSH_Add(float2 uv : TEXCOORD0) : SV_Target0
{
float4 op1 = Operand1.Sample(SamplerStates_Wrap, uv);
float4 op2 = Operand2.Sample(SamplerStates_Wrap, uv);
return op1 + op2;
}
float4 FSH_Subtract(float2 uv : TEXCOORD0) : SV_Target0
{
float4 op1 = Operand1.Sample(SamplerStates_Wrap, uv);
float4 op2 = Operand2.Sample(SamplerStates_Wrap, uv);
return op1 - op2;
}
float4 FSH_Dot(float2 uv : TEXCOORD0) : SV_Target0
{
float3 op1 = Operand1.Sample(SamplerStates_Wrap, uv).rgb;
float3 op2 = Operand2.Sample(SamplerStates_Wrap, uv).rgb;
float dp = dot(op1, op2);
return float4(dp, dp, dp, 1);
}
float4 FSH_Cross(float2 uv : TEXCOORD0) : SV_Target0
{
float4 op1 = Operand1.Sample(SamplerStates_Wrap, uv);
float4 op2 = Operand2.Sample(SamplerStates_Wrap, uv);
float3 cp = cross(op1.xyz, op2.xyz);
return float4(cp, 1);
}
float4 FSH_Pow(float2 uv : TEXCOORD0) : SV_Target0
{
float4 op1 = Operand1.Sample(SamplerStates_Wrap, uv);
float4 op2 = Operand2.Sample(SamplerStates_Wrap, uv);
return pow(op1, op2);
}
float4 FSH_Step(float2 uv : TEXCOORD0) : SV_Target0
{
float4 op1 = Operand1.Sample(SamplerStates_Wrap, uv);
float4 op2 = Operand2.Sample(SamplerStates_Wrap, uv);
return step(op1, op2);
}