2

我想做一个卡通边框效果。为此,我将使用每个像素的相邻像素的深度值来确定它是否应该被涂黑。如何在片段着色器中访问该信息?

4

1 回答 1

3

当您以正常方式(顶点着色器,然后片段着色器 - 单通道)渲染场景时,在片段着色器中无法访问其他像素的深度值。

但是:您可以渲染场景两次并执行一些后处理效果。在第一次运行中,您将深度值和其他值(如法线等)存储在 RenderTarget 中(在纹理中),然后在第二遍中使用这些纹理。

这里你有来自 XNA 的效果,但可以快速移植到 GLSL:http: //xnameetingpoint.weebly.com/shader7f31.html

这里有一些关于渲染到纹理的链接:http: //learningwebgl.com/blog/ ?p=1786

提示:深度值不足以进行边界检测,您还必须使用法线。但它在 XNA 的上述教程中有所介绍。

于 2013-09-23T06:13:44.927 回答