计算光栅化片段的数量

Posted

技术标签:

【中文标题】计算光栅化片段的数量【英文标题】:Count number of rasterized fragments 【发布时间】:2012-03-10 22:19:24 【问题描述】:

抽象问题:我需要计算给定几何体在渲染/光栅化时生成的片段,无论这些片段是否通过了深度/模板测试。

背景:我目前正在尝试为我正在进行的项目实施镜头光晕。我正在使用 OpenGL 遮挡查询来计算从光源可见的像素,方法是在光源位置渲染屏幕对齐的四边形,同时激活查询以确定光源的可见片段的数量。该四边形具有给定的widthheight,因此它最初应该在距相机一些 距离处具有width * height 像素。之后,我想调整实际眩光效果的 alpha 值以考虑光源的遮挡部分。为此,我需要知道组装原始渲染四边形的片段总数。

那么,有谁知道我如何确定给定渲染操作生成的片段数量?

【问题讨论】:

这对我来说没有多大意义。您说您已经使用遮挡查询来计算像素,但随后询问如何确定如何找出渲染了多少像素? 我正在尝试获取被遮挡查询测试的像素数量,包括那些没有通过深度/模板测试的像素,但似乎只用一个是不可能的通过。 【参考方案1】:

您已经被建议遮挡查询,这正是这项工作的正确工具。你的斗争在于你试图一次完成所有事情的误解。

将您的问题拆分为多个子任务。在您的情况下,您应该为几何体的遮挡查询(没有着色器、纹理等)添加一个渲染通道,并禁用所有片段丢弃测试。

请注意,遮挡查询会计算刚刚通过所有测试的所有片段,但如果深度和颜色写入被禁用,也会计算它们。因此,您可以绘制遮挡查询四边形,而不会使其可见或损坏深度缓冲区。

【讨论】:

以上是关于计算光栅化片段的数量的主要内容,如果未能解决你的问题,请参考以下文章

片段着色器会覆盖光栅化生成的片段颜色吗?

渲染管道光栅阶段一“总览”

渲染管道光栅阶段一“总览”

为啥保守光栅化无法为某些三角形调用片段着色器?

当我读取图像时,源光栅波段和源色彩空间分量的数量不匹配[重复]

OpenGL线段光栅化规范