是否有任何方法可以从像素着色器获得反馈,以了解像素是否实际呈现(而不是被zbuffer或模具缓冲区阻塞)?我在用GLSL。
我试图确定一个渲染的物体是否对摄像机是可见的。就像我在纯软件中做的那样,我会设置一个布尔假,如果任何像素都通过了z和模具测试,就会将其变为真。
有什么办法,通过诡计或其他手段吗?
发布于 2022-09-21 17:51:21
片段着色器不能问其他片段的问题(除非在非常孤立的情况下)。也不能让碎片着色器窥视未来,并提出问题的碎片,尚未产生的光栅。因此,片段着色器无法知道同一绘图命令中的其他片段是否通过了各种测试。
您的应用程序可以通过遮挡查询询问这些问题。您可以得到关于查询作用域中的绘图命令是否生成采样的报告。你甚至可以得到(估计)通过的样本数量。
当然,获取信息是一回事。以一种对性能友好的方式使用它是另一回事。毕竟,GPU命令是异步执行的。因此,在发出命令后的几毫秒内,才可能知道这个问题的答案。当GPU处理东西的时候,你可能不想让CPU坐在那里。
https://stackoverflow.com/questions/73804740
复制相似问题