37 lines
1.1 KiB
Plaintext
37 lines
1.1 KiB
Plaintext
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
|
||
|
#include "/Engine/Public/Platform.ush"
|
||
|
|
||
|
#define NUM_VIEWS 2
|
||
|
|
||
|
// PS Textures Parameters
|
||
|
Texture2DArray EnvironmentDepthTexture;
|
||
|
SamplerState EnvironmentDepthSampler;
|
||
|
float2 DepthFactors;
|
||
|
float4x4 ScreenToDepthMatrices[NUM_VIEWS];
|
||
|
int DepthViewId;
|
||
|
|
||
|
void HardOcclusionsPS(
|
||
|
noperspective float4 UVAndScreenPos : TEXCOORD0,
|
||
|
float4 SvPosition : SV_POSITION,
|
||
|
#if INSTANCED_STEREO
|
||
|
in uint InstanceId : SV_InstanceID,
|
||
|
#elif MOBILE_MULTI_VIEW
|
||
|
in uint ViewId : SV_ViewID,
|
||
|
#endif
|
||
|
out float4 OutColor : SV_Target0,
|
||
|
out float OutDepth : SV_DEPTH)
|
||
|
{
|
||
|
#if INSTANCED_STEREO
|
||
|
uint ViewId = InstanceId & 1;
|
||
|
#elif !MOBILE_MULTI_VIEW
|
||
|
uint ViewId = DepthViewId;
|
||
|
#endif
|
||
|
float4 TexCoordH = mul(ScreenToDepthMatrices[ViewId], float4(UVAndScreenPos.x, 1.0f - UVAndScreenPos.y, 0.0, 1.0));
|
||
|
float3 TexCoord = float3(TexCoordH.x / TexCoordH.w, TexCoordH.y / TexCoordH.w, ViewId);
|
||
|
float InputDepthEye = EnvironmentDepthTexture.Sample(EnvironmentDepthSampler, TexCoord).r;
|
||
|
float DepthEye = InputDepthEye * DepthFactors.x + DepthFactors.y;
|
||
|
OutDepth = DepthEye;
|
||
|
OutColor = float4(0.0, 0.0, 0.0, 1.0);
|
||
|
}
|