PPBuildHiZ.bsl 992 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "$ENGINE$\PPBase.bslinc"
  2. shader PPBuildHiZ
  3. {
  4. mixin PPBase;
  5. variations
  6. {
  7. NO_TEXTURE_VIEWS = { true, false };
  8. };
  9. code
  10. {
  11. SamplerState gDepthSamp;
  12. Texture2D gDepthTex;
  13. // Older OpenGL versions don't support views, meaning we need to specify mip level explicitly
  14. #if NO_TEXTURE_VIEWS
  15. [internal]
  16. cbuffer Input
  17. {
  18. float2 gHalfPixelOffset;
  19. int gMipLevel;
  20. }
  21. #endif
  22. float fsmain(VStoFS input) : SV_Target0
  23. {
  24. #if NO_TEXTURE_VIEWS
  25. float4 depth;
  26. float2 uv = input.uv0 - gHalfPixelOffset;
  27. depth.x = gDepthTex.SampleLevel(gDepthSamp, uv, gMipLevel, int2(0, 0));
  28. depth.y = gDepthTex.SampleLevel(gDepthSamp, uv, gMipLevel, int2(1, 0));
  29. depth.z = gDepthTex.SampleLevel(gDepthSamp, uv, gMipLevel, int2(1, 1));
  30. depth.w = gDepthTex.SampleLevel(gDepthSamp, uv, gMipLevel, int2(0, 1));
  31. #else
  32. float4 depth = gDepthTex.Gather(gDepthSamp, input.uv0);
  33. #endif
  34. return min(min(depth.x, depth.y), min(depth.z, depth.w));
  35. }
  36. };
  37. };