2013-09-23 44 views
2

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

+1

可能要接受答案... –

+0

您也可以使用标准衍生扩展名并使用fwidth或[dFdx](https://www.opengl.org/sdk/docs/man/html/dFdx.xhtml )。它只允许你访问某个值的差值和另一个片段的值。什么使它完全无用的是,它只能访问同一个三角形中的相邻像素。 – Stefnotch

回答

3

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

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

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

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

提示:深度值是不够的边界检测,你也有也使用法线。但是它在XNA的上述教程中有介绍。