Files
UnrealEngineUWP/Engine/Shaders/Private/ScreenPass.ush
Guillaume Abadie 07bc47754f Implements FScreenTransform with operator overload to construct custom viewport transformations easily
#rb zach.bethel

[CL 16114603 by Guillaume Abadie in ue5-main branch]
2021-04-26 11:28:05 -04:00

39 lines
1.5 KiB
Plaintext

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#define SCREEN_PASS_STRUCT_MEMBER(StructName, MemberType, MemberName) MemberType StructName##_##MemberName;
#define SCREEN_PASS_TEXTURE_VIEWPORT(StructName) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, Extent) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, ExtentInverse) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, ScreenPosToViewportScale) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, ScreenPosToViewportBias) \
SCREEN_PASS_STRUCT_MEMBER(StructName, uint2, ViewportMin) \
SCREEN_PASS_STRUCT_MEMBER(StructName, uint2, ViewportMax) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, ViewportSize) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, ViewportSizeInverse) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, UVViewportMin) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, UVViewportMax) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, UVViewportSize) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, UVViewportSizeInverse) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, UVViewportBilinearMin) \
SCREEN_PASS_STRUCT_MEMBER(StructName, float2, UVViewportBilinearMax)
// Poor man's structure abstraction until HLSLCC is gone
#define FScreenTransform float4
float2 ApplyScreenTransform(float2 PInA, FScreenTransform AToB)
{
return PInA * AToB.xy + AToB.zw;
}
#if PLATFORM_SUPPORTS_REAL_TYPES
half2 ApplyScreenTransform(half2 PInA, FScreenTransform AToB)
{
return PInA * half2(AToB.xy) + half2(AToB.zw);
}
#endif