Files
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

50 lines
1.6 KiB
HLSL

// Copyright Epic Games, Inc. All Rights Reserved.
#include "/Engine/Private/Common.ush"
#include "/Engine/Private/LensDistortion.ush"
#include "/Engine/Private/ScreenPass.ush"
Texture2D InputTexture;
SamplerState InputSampler;
SCREEN_PASS_TEXTURE_VIEWPORT(Input)
SCREEN_PASS_TEXTURE_VIEWPORT(Output)
#define EDistortionUV_None 0
#define EDistortionUV_Distorted 1
#define EDistortionUV_Undistorted 2
Texture2D<float2> DistortingDisplacementTexture;
SamplerState DistortingDisplacementSampler;
Texture2D<float2> UndistortingDisplacementTexture;
SamplerState UndistortingDisplacementSampler;
uint DistortionUV;
float2 CalcInputUVs(float2 ViewportUV, float2 ViewportSize, float2 ViewportMin, float2 ExtentInverse, uint InDistortionUV)
{
BRANCH
if(InDistortionUV == EDistortionUV_Distorted)
{
ViewportUV = ApplyLensDistortionOnViewportUV(DistortingDisplacementTexture, DistortingDisplacementSampler, ViewportUV);
}
else if(InDistortionUV == EDistortionUV_Undistorted)
{
ViewportUV = ApplyLensDistortionOnViewportUV(UndistortingDisplacementTexture, UndistortingDisplacementSampler, ViewportUV);
}
return (ViewportUV * ViewportSize + ViewportMin) * ExtentInverse;
}
void MainPS(
float4 SvPosition : SV_POSITION,
out float4 OutColor : SV_Target0
)
{
float2 ViewportUV = (SvPosition.xy - Output_ViewportMin) * Output_ViewportSizeInverse;
float2 Texture_UV = CalcInputUVs(ViewportUV, Input_ViewportSize, Input_ViewportMin, Input_ExtentInverse, DistortionUV);
OutColor = InputTexture.SampleLevel(InputSampler, Texture_UV, 0);
}