实时光线追寻技能它或许呈现在当时的次世代主机上吗?多年搞各种实时、离线烘托,我来说说观点。我的观点是当时次世代主机真不或许。未来3-5年或许一些内根据光线追寻的非大局光照算法呈现,例如镜面反射等,首要用来补偿或许增强现有算法的缺点。光线追寻的真实遍及则会是一个绵长的进程,要整个 industry一同尽力。至于真实的无偏的大局光照,要做到实时所需求的核算量在可预见的未来都仍是太大。
一说到光线追寻,许多人榜首反响便是图形烘托的圣杯,完成今后游戏的画面就会和好莱坞大片相同震慑。这其实是很不实践的片面假定。
误点1:把光线追寻等价于大局光照,乃至一系列牛逼的特效例如焦散,云雾,次外表散射,根据物理上色。
其实光线追寻单纯便是指的核算出三维空间中一个给定射线和一群三角形中的焦点的进程。这是一个逻辑上十分简略的操作。根据这个操作,咱们能够衍生出许多大局光照的算法。为什么这个操作如此有用的实质原因是因为烘托方程
是一个外表法线周围半球上的积分。这个半球方向上的东西不管是光源仍是各种古怪形状,原料的其他东西都会对这个外表上的色彩有影响。在不知道这个半球方向规模内有什么办法的情况下,发射光线去对周围采样是最通用,可是很低效的办法,如下图。可是光线追寻自身除了用来采样场景也能够用在碰撞检测,寻路等和烘托无关的当地。
误点2:以为有了光线追寻游戏画面就电影化了,并以为根据光栅化的办法便是做欠好光照核算,需求被推翻。
这简直是忽视了曩昔20年图形学界和游戏开发者们所堆集的各种技能,技巧和优化。我先举两个比如。下面的图片是用虚幻引擎4制造的修建可视化。关于这种静态场景来说,光照贴图(Light Map)就一下把最难搞的漫反射部分经过预核算搞定了,运转时没任何overhead。UE4用Photon Mapping算Light Map,这是个共同的大局光照算法,也便是说终究的成果加上SSR和Probes做镜面部分的话和你离线烘托成果就根本没有什么不同了,小场景60Fps 跑起来无压力。
另一个比如是Unreal的风筝demo它运用的地势是Epic在新西它运用的地势是Epic在新西兰实地扫描的,方针大约是要发明Pixar 类型的电影化体会。这个Demo我不能说他有上面那个那么准确兰实地扫描的,方针大约是要发明Pixar类型的电影化体会。这个Demo我不能说他有上面那个那么准确兰实地扫描的,方针大约是要发明Pixar类型的电影化体会。这个Demo我不能说他有上面那个那么准确CPU跑起来都不能60Fps么,使命管理器是各种爆满的。
所以我想说的是,视觉上看到的无偏大局光照是体会的重要部分,可是根据光栅化的程序也能在一些特定情况下供给这种体会,而且光照并不是和电影仅有的距离。电影和游戏的可用资源的巨大距离和两种前言体会的实质距离等归纳要素都是游戏画面电影化的妨碍!资源的距离包含一帧画面核算的时刻资源(1/60秒和数小时),核算资源(一般CPU+GPU和一个烘托农场),美术资料资源(几十万个三角形和过火细分到比像素还多的三角形)还有物理模仿的精度等等。体会的实质不同则是电影的是线性的。导演,特效师只需求确保一切的画面在一个视点,一个时刻到达完美即可。而游戏则是可交互式的办法。所以光线追寻真不是终究的救命稻草。实时程序便是一个要把及其宝贵的时刻和软硬件资源合理的分配到不同的要素里去。
当然我不是保存派,光线追寻作为一个最根本的采样场景的操作来说,通用且直观,假如功能跟的上,必然会带来许多烘托技能的开展。可是高效的完成难度便是很大,前面许多答复也都多少剖析了些原因,我就总结和弥补一下。
难点1:核算量大。
假如拿一个4K分辨率的游戏要做大局光照算法,例如途径追寻,假定每个像素要1000个样本噪点才收敛(这是十分十分保存的数字),每个样本的途径长度是5次反射(也是十分短的1000个样本噪点才收敛(这是十分十分保存的数字),每个样本的途径长度是5次反射(也是十分短的2000000 * 60 = 2488320000000。也便是说一秒钟要射出2500G跟光线,这个数字大约现在最快的烘托器也慢了至少一万倍。挖苦的是关于电影级的画质来说求交的进程和上色比较仅仅十分小的一部分。离线烘托的最前沿的研讨我也了解且完成过不少,有许多进步采样功率的办法。可是不管怎样部分。离线烘托的最前沿的研讨我也了解且完成过不少,有许多进步采样功率的办法。可是不管怎样本数量的做法在实时使用里真的没什么期望。要怪就怪1/60秒的要求是在太严苛。但我不想显得过火失望,上面10000倍的距离也仅仅真实要做一个无偏途径追寻的需求,实践上就算是离线烘托也有许多trick能削减noise,biased 去加快收敛速度,所以假如真的使用到游戏里必定能用一些其他biased办法去cheat away这么大的核算量。
难点2:现代GPU现已将根据光栅的管线功能优化的将近极致了。
榨干了终究的功能,一方面是光栅化算法确实比较于光线追寻更简单被集成进硬件,三角形能够在不同管线阶段Stream,另一方面光栅化大规模流行了20年,厂商现已有太多的时刻和经历堆集经得起检测的优化。在NV每次多深化了解一些GPU架构都会感叹本来在底层还有那么多的硬件上的各种优化。于此一同,根据光栅的烘托算法也有GPU架构都会感叹本来在底层还有那么多的硬件上的各种优化。于此一同,根据光栅的烘托算法也有以说要从头开展,当然必定有新的东西能够搞,只不过也真的需求人来做这个作业。
难点3:现代根据光栅的图形管线现已烙印到GPU里,接口暴露在API里,许多现成的算法完成在游戏引擎里和游戏开发者的脑子里。
所以光线追寻的参加意味着图形管线的改动,是否以为着有一种新的引擎里和游戏开发者的脑子里。所以光线追寻的参加意味着图形管线的改动,是否以为着有一种新的引擎里和游戏开发者的脑子里。所以光线追寻的参加意味着图形管线的改动,是否以为着有一种新的里发射光线呢,仍是像compute shader那样一次运转许多光线然后批量回来呢,场景的加快结构是要在API Level供给支撑呢,仍是交给开发者?在功能还跟不上做共同的大局算法的情况下,有什么其他作用、算法咱们能够测验呢?等这些都跟上了,又要等多久市面上的游戏才会逐步开端遍及。所以我以为就算功能跟上之后,光线追寻的遍及也会是个缓慢逐步的进程,而且需求整个industry的一同尽力。