| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #include "$ENGINE$\PPBase.bslinc"
- shader PPBuildHiZ
- {
- mixin PPBase;
-
- variations
- {
- NO_TEXTURE_VIEWS = { true, false };
- };
-
- code
- {
- SamplerState gDepthSamp;
- Texture2D gDepthTex;
-
- // Older OpenGL versions don't support views, meaning we need to specify mip level explicitly
- #if NO_TEXTURE_VIEWS
- [internal]
- cbuffer Input
- {
- float2 gHalfPixelOffset;
- int gMipLevel;
- }
- #endif
-
- float fsmain(VStoFS input) : SV_Target0
- {
- #if NO_TEXTURE_VIEWS
- float4 depth;
-
- float2 uv = input.uv0 - gHalfPixelOffset;
-
- depth.x = gDepthTex.SampleLevel(gDepthSamp, uv, gMipLevel, int2(0, 0));
- depth.y = gDepthTex.SampleLevel(gDepthSamp, uv, gMipLevel, int2(1, 0));
- depth.z = gDepthTex.SampleLevel(gDepthSamp, uv, gMipLevel, int2(1, 1));
- depth.w = gDepthTex.SampleLevel(gDepthSamp, uv, gMipLevel, int2(0, 1));
- #else
- float4 depth = gDepthTex.Gather(gDepthSamp, input.uv0);
- #endif
-
- return min(min(depth.x, depth.y), min(depth.z, depth.w));
- }
- };
- };
|