쉐이더에서 THREE.js를 사용하고 있습니다. zbuffer 정보를 얻으려고합니다.gl_FragCoord.x, y, z는 모든 픽셀에서 1이고 w는 깊이입니다.
버텍스 쉐이더 :
// switch on high precision floats
#ifdef GL_ES
precision highp float;
#endif
void main()
{
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
조각 쉐이더 :
따라서 z 버퍼의 값이 변화해야하는 장면에서 서로 다른 위치에 객체가있다#ifdef GL_ES
precision highp float;
#endif
void main()
{
gl_FragColor = vec4(gl_FragCoord.x, gl_FragCoord.y, gl_FragCoord.z, 1.0);
}
. gl_FragCoord.w
다른 조각에 따라 다를 것 같다 동안
그것은 gl_FragCoord.x
, gl_FragCoord.y
및 gl_FragCoord.z
모든 조각에 대한 1.0
것 같다 이상하다.
내가 gl_FragCoord.w
를 사용하는 경우 : gl_FragCoord.z
는 항상 모든 조각에 대한 1.0
동안
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);
}
z 버퍼 이미지 것 같다?
쉐이더에서 화면 너비와 높이를 얻으려면 어떻게해야합니까? – Ovilia
@Ovilia : 유니폼 사용시 다른 값과 동일한 방식으로 사용합니다. –
하지만 왜 'gl_FragCoord.w'가 다른 조각들에 대해 다양합니까? – Ovilia