我在WebGL2中使用了一个简单的片段着色器,它将不同的颜色输出到两个不同的纹理目标中。如何将gl_fragDepth值写入第三(深度)纹理目标(位置= 2)?
#version 300 es
precision mediump float;
layout(location = 0) out vec4 fragColor1;
layout(location = 1) out vec4 fragColor2;
void main(void) {
fragColor1 = vec4(1.0, 0.0, 0.0, 1.0); // printf of WebGL :)
fragColor2 = vec4(1.0, 0.0, 0.0, 1.0);
}
答案 0 :(得分:2)
每个片段只能输出一个真正的深度值,但听起来你还没有这样做,所以你需要做的就是将一个DEPTH_ATTACHMENT附加到帧缓冲区并写入片段着色器中的gl_FragDepth。
答案 1 :(得分:1)
事实证明就像
一样简单 layout (location = 2) out float fragDepth;
...
fragDepth = gl_FragCoord.z;