Ovi*_*lia 7 shader zbuffer glsl webgl three.js
我正在使用带着色器的THREE.js.我正在尝试获取zbuffer信息.
顶点着色器:
// switch on high precision floats
#ifdef GL_ES
precision highp float;
#endif
void main()
{
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
Run Code Online (Sandbox Code Playgroud)
片段着色器:
#ifdef GL_ES
precision highp float;
#endif
void main()
{
gl_FragColor = vec4(gl_FragCoord.x, gl_FragCoord.y, gl_FragCoord.z, 1.0);
}
Run Code Online (Sandbox Code Playgroud)
场景中有不同位置的对象,因此zbuffer中的值应该有所不同.
奇怪的是gl_FragCoord.x,gl_FragCoord.y并且gl_FragCoord.z似乎是1.0针对所有碎片,而gl_FragCoord.w对于不同的碎片似乎有所不同.
如果我使用gl_FragCoord.w:
#ifdef GL_ES
precision highp float;
#endif
void main()
{
float zbuffer = gl_FragCoord.w * 500.0;
gl_FragColor = vec4(zbuffer, zbuffer, zbuffer, 1.0);
}
Run Code Online (Sandbox Code Playgroud)
它似乎是zbuffer图像:

那么为什么gl_FragCoord.w要表示深度信息而gl_FragCoord.z总是1.0为所有片段?
| 归档时间: |
|
| 查看次数: |
11395 次 |
| 最近记录: |