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

39 lines
1.5 KiB
HLSL

// 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)
// Substitute for 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