39 lines
1.5 KiB
HLSL
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
|