如何在片段着色器中使用带有“返回”的多重采样?

时间:2019-01-21 21:56:52

标签: opengl multisampling

我通过深度剥离绘制透明图形,当我渲染到多样本(出现网格)时,结果很难看

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

没有“如果返回”,一切都很好(但是我需要这个“如果”)。网格与我将mipmapping与非均匀流控制一起使用时完全相同。

1 个答案:

答案 0 :(得分:0)

  

gl_FragCoord仅在片段语言中可用,是一个输入变量,其中包含片段的窗口相对坐标(x,y,z,1 / w)值。如果是多采样,则此值可以用于像素[ !!! ]

内的任何位置

P.S。深度剥离使用严格的深度比较,如果“对于像素内的任何位置”都无法获得深度,则不可能。代替

if (gl_FragCoord.z < nearestDepth)

使用

if (gl_FragCoord.z < nearestDepth - 0.0001)

(这是第一个简单的解决方案)