WebGL2:将片段深度写入深度纹理
问题描述:
我在WebGL2中使用了简单的片段着色器,它将不同的颜色输出到两个不同的纹理目标中。如何将gl_fragDepth值写入第三个(深度)纹理目标(位置= 2)?WebGL2:将片段深度写入深度纹理
#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);
}
答
你只能输出一个真正的深度每个片段价值,但它听起来像是你不这样做呢,所以你需要do是将DEPTH_ATTACHMENT附加到帧缓冲区,并写入片段着色器中的gl_FragDepth。
答
它原来是这么简单
layout (location = 2) out float fragDepth;
...
fragDepth = gl_FragCoord.z;