我想制作一个香椿边框效果。为此,我将使用每个像素的相邻像素的深度值来确定它是否应该被黑化。如何在片段着色器中访问该信息?
答案 0 :(得分:3)
以正常方式渲染场景时(顶点着色器,然后是片段着色器 - 单遍),然后在片段着色器中无法访问其他像素的深度值。
但: 您可以渲染场景两次并执行一些后期处理效果。在第一次运行中,您可以在RenderTarget(纹理中)中存储深度值和其他值(如法线等),然后在第二遍中使用这些纹理。
这里有XNA的效果,但可以快速移植到GLSL:http://xnameetingpoint.weebly.com/shader7f31.html
这里有一些关于渲染到纹理的链接:http://learningwebgl.com/blog/?p=1786
提示:深度值不足以进行边框检测,您也可以使用法线。但是XNA的上述教程对此进行了介绍。