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