28 lines
865 B
HLSL
28 lines
865 B
HLSL
#include "common.hlsli"
|
|
|
|
struct _input
|
|
{
|
|
float4 tc0 : TEXCOORD0; // tc.xy, tc.w = tonemap scale
|
|
float2 tcJ : TEXCOORD1; // jitter coords
|
|
float4 pos2d : SV_POSITION;
|
|
};
|
|
|
|
uniform float4 scaled_screen_res;
|
|
|
|
float4 main(_input I) : SV_Target0
|
|
{
|
|
float4 Depth;
|
|
|
|
#ifndef SM_5
|
|
Depth.x = s_position.SampleLevel(smp_nofilter, I.tc0.xy, int2(1, 0), 0).x;
|
|
Depth.y = s_position.SampleLevel(smp_nofilter, I.tc0.xy, int2(1, 1), 0).x;
|
|
Depth.z = s_position.SampleLevel(smp_nofilter, I.tc0.xy, int2(0, 1), 0).x;
|
|
Depth.w = s_position.SampleLevel(smp_nofilter, I.tc0.xy, int2(0, 0), 0).x;
|
|
#else // !SM_5
|
|
Depth = s_position.GatherRed(smp_nofilter, I.tc0.xy + 0.5f * scaled_screen_res.zw);
|
|
#endif // SM_5
|
|
|
|
Depth = depth_unpack.x * rcp(Depth - depth_unpack.y);
|
|
return min(min(Depth.x, Depth.y), min(Depth.z, Depth.w));
|
|
}
|
|
|