光线追踪的表现

时间:2012-10-30 12:20:23

标签: performance graphics time-complexity raytracing

我想知道我们是否可以制定射线追踪的表现。在我的原始光线追踪器中,性能主要依赖于这个公式:宽度x高度x采样器数量x(对象数量+光源数量)

例如,在皮克斯或任何其他大公司中,他们是否遵循这样的绩效评估公式。性能是否取决于对象的三角形数量?例如,如果我想大致计算1000x1000帧的最大渲染时间,平均500个对象包含5.000.000个三角形,那么它是否可能?

2 个答案:

答案 0 :(得分:1)

用于认真工作的光线追踪器使用各种加速方法,使它们与log(三角形)成比例,而不是三角形的数量。并且有时相对于灯的数量也是次线性的(不包括不影响场景部分的灯光,一次性对所有灯光进行集体采样,这类事情)。

另一方面,材质变化(即使具有固定的分辨率和场景几何形状)也可以发生重大变化。例如,制作或多或少反射/折射的东西可能会对场景的平均“光线深度”产生很大的变化。

一般来说,对于一组给定的几何体,灯光和材质,时间应该与光线的总数成线性比例(即分辨率和采样率),但对于部分非常大的场景,这可能会被抛弃在读取场景输入(可能是GB和GB的解析)和从磁盘或网络读取纹理时序列化(我们通常具有参考>>> 1 TB纹理的场景)。

总体而言,您可能希望时间与以下内容有关:

scene_I / O + xres * yres * samples *(shading_factor + texture_factor + log(三角形))+ texture_I / O

与您的材料有关的I / O数字以及任意阴影和纹理因素可能会使您难以准确预测。

答案 1 :(得分:0)

您只能拥有表演的上限 例如,如果所有多边形(三角形或其他)都不在视图中,则计算速度会非常快 但是如果你想计算上边界,你需要定义算法细节:你使用行进立方体吗?你删除背面多边形等... 但对于特定的算法,计算应该非常简单。

P.S。对象的数量只与其所有多边形的总和无关。