欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

连GTX 1060都支持了光线追踪:NV是如何做到的?

程序员文章站 2023-02-25 20:34:29
本文经授权转载,其它媒体转载请经爱活网同意 就在刚刚,,geforce gtx 1060 6gb以上的帕斯卡架构显卡正式加入光线追踪技术阵营。这意味着拥有geforc...

本文经授权转载,其它媒体转载请经爱活网同意

就在刚刚,,geforce gtx 1060 6gb以上的帕斯卡架构显卡正式加入光线追踪技术阵营。这意味着拥有geforce gtx 1060 6gb以上显卡的小伙伴不用升级到geforce rtx 20系列显卡,也可以开启一定的光线追踪效果。

连GTX 1060都支持了光线追踪:NV是如何做到的?

但rtx 20系列与gtx 10系列之间在物理结构上存在着巨大差距,其中之一便是采用图灵架构的rtx 20系列显卡拥有rt core加速光线追踪。那么gtx 10系列是如何实现光线追踪?能实现到什么程度?本文将会进行解答。

连GTX 1060都支持了光线追踪:NV是如何做到的?

加了实时光线追踪效果的《雷神之锤ii》dxr的野望早在去年gdc游戏开发者峰会上,微软宣布将directx raytracing融入directx 12中,也就是我们常说的dx12 dxr。从那一刻开始,光线追踪从传统的离线渲染转入实时渲染变成了可能。

如今微软directx api遵循一套机制,就是将软件、游戏层面与硬件隔离,也就是说游戏本身实际上不知道自己跑在什么硬件上,它们只需要遵守微软directx的规则,就能调用新特效。这也是为什么新推出的3a大作通常只支持windows 10系统,很大原因在于directx 12完全体仅能在windows 10上运行。虽然近期微软博客有放出风声会反向移植dx12到windows 7以支持《魔兽世界》更新,但仅是个例,不会影响主流3a游戏在windows 10上运行的格局。

连GTX 1060都支持了光线追踪:NV是如何做到的?

游戏们不需要知道使用了什么硬件,那么任何显卡支持光线追踪在理论上都是有可能的。但当视角换成硬件与directx api之间,却没有这么简单。微软dxr虽然没有明确硬件应该如何运作,但指明了硬件应该具备哪些特性,并允许厂商将函数功能以黑盒子硬件的方式实现,这套做法让gpu厂商有了使用自己方式实现功能的可能性。

在dxr下,光线追踪提供了两种执行方案,分别是compute-base path和dxr api path。顾名思义,compute-base path是在dxr框架下使用通用计算单元来进行光线追踪。geforce gtx 10系列就是利用这一套方式。

另外一套执行方案dxr api path,则是使用dxr框架的硬件加速电路在gpu上执行光线追踪,在geforce rtx 20系列上,这套硬件加速电路就是rt core。

连GTX 1060都支持了光线追踪:NV是如何做到的?

无论哪一套执行方式,都会把光线追踪拆分成三个动作,分别是:射线的生成,找出射线与场景物体交汇点的求交测试,以及对交汇点进行着色计算。其中,第二步求交测试是最耗时的操作,对于简单场景来说,75%的耗时都花费在了光线和场景物体的求交计算上,在更复杂的场景中,这类操作的耗时会高达95%,求交计算的耗时与场景中涉及的物体数量直接相关。

这套技术最终回归到了玩家们都很清楚的道理:游戏场景越复杂,光线追踪操作越多,帧数越低。

因此如果要没有rt core加速的geforce gtx 10系列实现光线追踪,靠着色器硬抗不会有好结果。这时候,一套光线追踪的分类方案就此诞生了。

连GTX 1060都支持了光线追踪:NV是如何做到的?

光线追踪的5套方案将光线追踪实现质量分级其实不太确切,事实上在接下来提到的5套光线运行模式中包含了对不同元素的取舍,并且可以相互叠加,最终实现不同效果的光线追踪效果。

反射reflections

通过实时光线追踪完成对光源的单次反射,光线主要涉及到物体表面。全局bvh都会有所响应,以换取较为逼真的光照效果。根据不同材质,算法上也会进行压缩,以换取性能。

连GTX 1060都支持了光线追踪:NV是如何做到的?

多说一句,bvh(bounding volume hierarchy包围盒层级)是实时光线追踪技术采用的加速结构,简单的说对物体进行逐一分类,并不断层层递进,最后具体到每一需要处理的三角形。

连GTX 1060都支持了光线追踪:NV是如何做到的?

其实在离线渲染时代,开发者会建立一套镜面模型,以实现单次反射效果,只不过相对实时光线追踪会不太自然。

二次反射advanced reflections

真实世界中的自然光线是存在折射、反射和漫反射的。这也是实时光线追踪要追求的真正效果。这是所有显卡噩梦的开始,它不但包含全局bvh响应,每一个三角形之间还会考虑到折射、反射的效果。

连GTX 1060都支持了光线追踪:NV是如何做到的?

从实际的游戏和demo证明,如果没有rt core运算,和tensor core进行dlss加速,大多数显卡流畅度难以得到保证。

连GTX 1060都支持了光线追踪:NV是如何做到的?

全局光照global illumination

自然世界中,材质不同所产生的反射,漫反射效果也不会只有一个方向。全局光照将会体现出一道光源照射到物体后反射、折射、焦散等自然光效。配合二次光效,就是大多数显卡噩梦中的噩梦。

连GTX 1060都支持了光线追踪:NV是如何做到的?

阴影shadows

由于光线漫反射,阴影也不可能只有一种亮度,它会考虑到数个光源以及光源类别,执行全局bvh。

连GTX 1060都支持了光线追踪:NV是如何做到的?

环境光遮蔽ambient occlusion

实时光线追踪技术中的环境光遮蔽会考虑到数个光源,以及局部bvh,主要目的仍然是改善场景中物体漏光、阴影不切实际等效果,并使得画面更有层次感。

连GTX 1060都支持了光线追踪:NV是如何做到的?

上述的5套方案之间可以单一选择,也可以相互叠加,取决于游戏对光源和特效的选择方案,叠加越多,实现效果也解决自然。相反,屏蔽掉一定效果,让geforce gtx 10系列显卡吃到实时光线追踪的甜头,也能让实时光线追踪技术有机会普及到更多游戏中。

连GTX 1060都支持了光线追踪:NV是如何做到的?

连GTX 1060都支持了光线追踪:NV是如何做到的?

当然对于绝大多数玩家而言,将游戏画质设置交给geforce experience调整,免费获得相对真实的自然光照效果,无论怎么算都不会吃亏。