Files
UnrealEngine/Engine/Shaders/Private/SimpleElementVertexShader.usf
2025-05-18 13:04:45 +08:00

43 lines
1.2 KiB
HLSL

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
SimpleElementVertexShader.hlsl: Vertex shader for drawing simple elements.
=============================================================================*/
#include "Common.ush"
#ifndef ENABLE_LWC
#define ENABLE_LWC 0
#endif
float4x4 Transform;
#if ENABLE_LWC
float3 TransformPositionHigh;
#endif
void Main(
in float4 InPositionHigh : ATTRIBUTE0,
in float4 InPositionLow : ATTRIBUTE1,
in float2 InTextureCoordinate : ATTRIBUTE2,
in float4 InColor : ATTRIBUTE3,
in float4 InHitProxyId : ATTRIBUTE4,
out float2 OutTextureCoordinate : TEXCOORD0,
out float4 OutColor : TEXCOORD1,
out float4 OutHitProxyId : TEXCOORD2,
out float4 OutPosition : SV_POSITION
)
{
#if ENABLE_LWC
FDFVector4 InPosition = MakeDFVector4(InPositionHigh, InPositionLow);
FDFInverseMatrix WorldToClip = MakeDFInverseMatrix(TransformPositionHigh, Transform);
OutPosition = DFMultiplyDemote(InPosition, WorldToClip);
OutPosition.z = max(OutPosition.z, 0);
#else
OutPosition = mul(InPositionHigh, Transform);
#endif
OutTextureCoordinate = InTextureCoordinate;
OutColor = InColor;
OutHitProxyId = InHitProxyId;
}