提示和技巧:光线跟踪最佳实践 (5)

手动管理堆栈(如果适用)。使用API的查询函数来确定每个着色器所需的堆栈大小,并应用关于调用图的应用程序端知识来减少内存消耗和提高性能。一个很好的例子是在trace depth 1上使用昂贵的反射着色器来拍摄阴影光线(trace depth 2),应用程序知道这些阴影光线只会命中堆栈要求较低的小命中着色器。驱动程序无法预先知道此调用图,因此默认的保守堆栈大小计算将过度分配内存。             

重用临时资源。例如,为BVH构建重用scratch内存资源以用于其他目的(可能是非光线跟踪)。在DXR上,使用放置的资源和第2层资源堆。

5.0 – Profiling and Debugging

请注意以下工具,其中包括对DirectX光线跟踪和NVIDIA的VKRay的支持。它们发展很快,所以请确保使用最新版本。             

NVIDIA Nsight图形。为光线跟踪开发人员提供了优秀的调试和分析工具(着色器表和资源检查器、加速结构查看器、范围分析、扭曲占用和GPU度量、通过NVIEW后的崩溃调试、C++帧捕获)。             

NVIDIA Nsight系统。提供系统范围的分析功能和口吃分析功能。             

微软PIX

FAQ

Q、 基本体的数量和加速结构构建/更新的成本(时间)之间的关系是什么?

A、 基本上是线性关系。好吧,它开始变得线性超过某个原始计数,在此之前,它被常数开销所限制。这里的确切数字在不断变化,不可靠。             

Q、 假设最大占用率,加速结构构建/更新的GPU吞吐量SOL是多少?             

A、 一个数量级准则是:对于完整构建,O(1亿)原语/秒;对于更新,O(10亿)原语/秒。             

Q、 RT-PSOs的唯一着色器数量与编译成本(时间)之间的关系是什么?             

A、 它大致是线性的。             

Q、 现在游戏中RT-PSO编译的典型成本是多少?             

A、 任何地方,20 ms→300 ms,每条管道。             

Q、 有没有关于应该使用多少alpha/透明度的指导?任何命中和最近命中的代价是什么?             

A、 任何打击都是昂贵的,应该使用最少。最好将几何体(或实例)标记为不透明,这将允许在固定功能硬件中进行光线遍历。当需要AH时(如评估透明度等),尽可能简单。不要仅仅为了执行alpha-tex查找和if语句而计算巨大的着色网络。             

Q、 开发人员应该如何管理阴影差异?             

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwgsj.html