【问题标题】:Pixelshader: Feedback on whether anything rendered?Pixelshader:是否有任何渲染的反馈?
【发布时间】:2022-09-22 01:51:21
【问题描述】:

有什么方法可以从像素着色器获得关于像素是否实际渲染的反馈(而不是被 zbuffer 或模板缓冲区阻塞)?我正在使用 GLSL。

我正在尝试确定渲染对象是否对相机完全可见。就像我在纯软件中做的一样,我会设置一个布尔值 false,如果任何像素实际上通过了 z 和模板测试,则将其设置为 true。

有什么办法可以通过诡计或其他方式做到这一点?

【问题讨论】:

  • 标签被称为“片段着色器”而不是“像素着色器”是有原因的。

标签: glsl render fragment-shader


【解决方案1】:

片段着色器不能询问其他片段的问题(除非在非常孤立的情况下)。片段着色器也不能窥视未来并询问光栅化器尚未生成的片段问题。因此,片段着色器无法知道同一绘图命令中的其他片段是否通过了各种测试。

您的应用可以通过occlusion query 提出这些问题。可以得到查询范围内的绘图命令生成的采样是否通过的报告。您甚至可以获得(估计)通过的样本数量。

当然,获取信息是一回事。以性能友好的方式使用它是另一回事。毕竟,GPU 命令是异步执行的。所以这个问题的答案可能要等到你发出命令后的几毫秒后才能知道。当 GPU 处理东西时,您可能不希望 CPU 坐在那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    相关资源
    最近更新 更多