DepthDrawToMsFragmentShaderSource.frag 796 B

12345678910111213141516171819202122232425
  1. #version 450 core
  2. layout (std140, binding = 0) uniform sample_counts_log2_in
  3. {
  4. ivec4 sample_counts_log2;
  5. };
  6. layout (set = 2, binding = 0) uniform sampler2D src;
  7. void main()
  8. {
  9. int deltaX = sample_counts_log2.x - sample_counts_log2.z;
  10. int deltaY = sample_counts_log2.y - sample_counts_log2.w;
  11. int samplesInXLog2 = sample_counts_log2.z;
  12. int samplesInYLog2 = sample_counts_log2.w;
  13. int samplesInX = 1 << samplesInXLog2;
  14. int samplesInY = 1 << samplesInYLog2;
  15. int sampleIndex = gl_SampleID;
  16. int inX = (int(gl_FragCoord.x) << sample_counts_log2.x) | ((sampleIndex & (samplesInX - 1)) << deltaX);
  17. int inY = (int(gl_FragCoord.y) << sample_counts_log2.y) | ((sampleIndex >> samplesInXLog2) << deltaY);
  18. gl_FragDepth = texelFetch(src, ivec2(inX, inY), 0).r;
  19. }