e4s-game/gamedata/shaders/d3d11/depth_downs.ps.hlsl
2026-06-18 01:18:29 +03:00

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));
}