我从头开始制作3D渲染器,没有外部库。正如我试图优化的那样,我想知道画家的算法是否比Z-Buffering快。假设我正在渲染一个相同的立方体,这会更快。但我不希望相交的多边形搞乱,所以我可能想要实施纽维尔的Painter算法版本,该算法切割多边形,使它们不会相交和混乱。Z缓冲通常比Painter算法更快吗?
所以我能有什么将平均更快渲染一个多维数据集的顺序:
此外,如果任何人有任何其他好的建议我可以可能使用?
我从头开始制作3D渲染器,没有外部库。正如我试图优化的那样,我想知道画家的算法是否比Z-Buffering快。假设我正在渲染一个相同的立方体,这会更快。但我不希望相交的多边形搞乱,所以我可能想要实施纽维尔的Painter算法版本,该算法切割多边形,使它们不会相交和混乱。Z缓冲通常比Painter算法更快吗?
所以我能有什么将平均更快渲染一个多维数据集的顺序:
此外,如果任何人有任何其他好的建议我可以可能使用?
在计算机图形画家算法被称为Z-Sorting
有时有时快不行。这取决于您拥有多少个对象,您渲染的分辨率有多大,以及您需要的坐标精度。
Z-Buffering
为更好:
动态场景(对象或相机的移动/旋转)
它需要额外的缓冲器中相同的分辨率渲染后的图像,并且每个片段执行单个条件(每个多边形的渲染像素甚至看不见)。在渲染之后,每个可见像素的坐标都处于许多高级渲染技术所需的位置。
Z-Sorting
是为了更好:
如果很少的内存是在处置(上8位电脑最3D使用的应用程序Z-sorting
,因为没有用于Z-buffer
的内存)
它需要索引缓冲区来存储所有的对象/多边形索引,并且它对每个场景变化执行排序(通过Z坐标排序许多对象可能会很慢)。如今它被使用,因为:
透明的多边形需要Z分级
有时这两种技术结合在一起
尤其对于高动态范围的Z
坐标,因为标准Z缓冲区(24/32位宽)在整个范围内的分辨率非常差。它可以通过使用线性或对数刻度Z-buffer
来部分解决,但是如果您需要在全范围内定义准确度/分辨率,则需要使用某种类型的Z分类组合,并将更多frustrums合并在一起,或将自定义Z-Buffer
与高动态范围,目前不支持HW
谢谢你的提问。 – Hyden
这很愚蠢,我20分钟前就问这个问题,在“最新”上已经是8页了 – Hyden