深度图像webgl

时间:2015-03-15 21:43:19

标签: webgl depth-buffer

我想以下列方式仅绘制没有任何颜色的深度图像:

enter image description here

这可能吗?如果是这样,有人可以指出我正确的资源来获取这些信息或给出相同的基本解释吗?

1 个答案:

答案 0 :(得分:2)

没有直接的方法可视化WebGL中深度缓冲区的实际内容。但是,绘制深度很容易;这与绘图雾基本相同(在旧的固定功能样式中)。

在顶点着色器中,通过变量传递顶点位置的z分量。当你在它时,将其范围从[-1,1]重新调整为[0,1]。

// do this after you've set gl_Position, of course.
vZ = (gl_Position.z + 1.0) / 2.0;

在片段着色器中,使用此值作为颜色。

gl_FragColor = vec4(vZ, vZ, vZ, 0.0);

请注意,这将产生非线性阴影,其方式与实际深度缓冲区值非线性相同。如果想要从近平面到远平面的线性亮度,则需要在投影变换之前从获取z坐标,并根据近和远平面距离重新缩放。 / p>