如何在片段着色器中使用 "return" 的多重采样?

How to use multisampling with "return" in a fragment shader?

我用depth peeling绘制透明图形,渲染到multisample时效果很丑(出现网格)

vec4 fragColor = texelFetch(frontTexture, ivec2(gl_FragCoord.xy), 0); 
if (gl_FragCoord.z < nearestDepth) {
// Skip this depth in the peeling algorithm
return;
}
fragColor += someColor;

没有"if return"一切正常(但我需要这个"if")。网格与我使用具有非均匀流控制的 mipmapping 时完全相同。

Available only in the fragment language, gl_FragCoord is an input variable that contains the window relative coordinate (x, y, z, 1/w) values for the fragment. If multi-sampling, this value can be for any location within the pixel [!!!]

P.S。深度剥离使用严格的深度比较,如果我们得到深度"for any location within the pixel"是不可能的。而不是

if (gl_FragCoord.z < nearestDepth)

使用

if (gl_FragCoord.z < nearestDepth - 0.0001)

(这是第一个粗解)