【问题标题】:How to access the depth value of the neighbor pixels in WebGL?如何访问 WebGL 中相邻像素的深度值?
【发布时间】:2013-09-23 21:58:07
【问题描述】:

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

【问题讨论】:

  • 可能想接受答案...
  • 您也可以使用标准衍生扩展并使用 fwidth 或 dFdx。它只允许您访问某个值与另一个片段中的值的差异。让它完全没用的是它只能访问同一个三角形中的相邻像素。

标签: opengl-es webgl shader


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-13
    • 2018-06-05
    • 2016-04-11
    • 2019-07-24
    • 2023-03-07
    • 2017-09-19
    • 1970-01-01
    • 2013-07-28
    相关资源
    最近更新 更多