【游戏引擎入门到实践】七.渲染效果的前沿解决方案

765 阅读4分钟

1.背景

(1)随着DirectX 12和Vulkan的出现,渲染的底层方法和逻辑几乎被彻底颠覆。将整个底层计算全部开放出来。开发者们过去很多想做而做不到功能,现在的硬件几乎都可以支持;

(2)硬件算力的提升,基于一个Warp或Wavefront的算力非常强大,而且相互之间的数据通讯和同步也非常方便。

(3)实践领域比理论领域更累。需要不断地跟进最前沿的知识和体系,特别是在硬件发生革命的时候,各种新的算法和方法就如雨后春笋般出现了。比如实时光线追踪技术。

2.实时光线追踪技术

1.背景和原理

(1)相当于硬件提供了一个功能,我们输入几何结构,硬件会帮助我们构建好BVH结构;

(2)这时输入一条光线,硬件会告诉我们有没有命中一个物体,如果命中,会提供一个回调函数,如果没有命中,也会提供一个回调函数,然后由程序员进行处理。

2.作用

(1)大部分游戏用实时光线追踪来实现高光反射功能;

(2)实际上,实时光线追踪技术不仅能够解决高光的问题,而且会彻底改变整个光照体系,进而可以实现实时全局光照GI效果。

(3)比如在虚幻5中,Lumen的效果令人震撼,这就是硬件的能力解放出来了。

一.新的全局光照方法GI

各种借助硬件实现全局光照的方法,整个游戏的画面有一次质的飞跃。

1.SSGI

最高效的 屏幕空间全局光照(Scree-Space Global Illumination),可以在屏幕空间快速形成GI信息。

2.基于有向距离场 (SDF) 的GI

3.基于将世界分成各个体素 (Voxel) 的GI方法

比如SVOGI (Sparse Voxel Octree GI)

还有VXGI,RSM (Reflective Shadow Map) 和RTX GI。

4.虚幻引擎的Lumen技术

1.非常复杂的工程问题

并不是一个单一算法,而是多种算法的组合,最后产生了我们想要的效果,Lumen是一个非常复杂工程问题。

详细内容,后面单独详细讲解

2.Lumen大概的总结

(1)屏幕空间,SSGI

(2)1.8m以内,基于距离场SDF的GI

(3)1.8-200M,基于体素Voxel的GI

(4)200m之外,立方体映射。

5.一场巨大的光照革命正在发生,这个时代已经到来了。

如果想要进入图形学行业,一定要密切关注这个领域,因为这个领域现在正在蓬勃发展,有大量的前沿技术和观点不断被人提出。如果几个月不看论文或者不和同行交流,就会有些落伍。

二.复杂材质的渲染

比如毛发渲染、3S的皮肤材质,现在都被推到了一个非常高的维度。

1.毛发渲染

由于Geometry Shader技术的发达,可迅速生成无数的细节,而且可以实现非常复杂的光影效果。

2.3S材质

(1)SSS,即Sub-Surface-Scattering,次表面散射的材质

用于表现光在物体内部会发生色散的材质,透出一种很有质感的颜色,比如玉石,皮肤,蜡烛等,3S也可以用液体的表现,应用范围很广。

(2)可以利用现代硬件强大的算力,模拟光在材质中的反射和折射效果。

(3)由于硬件的发展,对于3S材质来说,最近这两年的新方法和论文也非常多。

3.BSDF~双向散射分布函数(Bidirectional scattering distribution function)

(1)迪士尼对自己经典的BRDF的进一步优化升级

细节不过多说,可以参考这一篇

zhuanlan.zhihu.com/p/407007915

三.阴影~Virtual Shadow Map

1.Virtual Texture 虚拟纹理

将游戏环境中所有要用到的纹理全部打包到一张巨大的纹理上,这个纹理就叫做“Virtual Texture”。

需要使用的时候将纹理调出来使用,不用的时候就将纹理卸载掉。

2.Virtual Shadow Map 虚拟阴影贴图

1.详细逻辑

(0)思想和Virtual Texture有异曲同工之妙。

(1)在对一个很大的区域生成Cascade Shadow时,该方法会计算哪些地方真正需要生成Shadow Map,所生成的Shadow Map的密度是多少

(2)然后在一块完整的虚拟的Shadow Map中,分配所需要的空间,分块来生成Shadow Map。

(3)相机进行渲染时,每次命中一个物体,就可以知道应该取哪个Shadow Map的值,然而再去获取Shadow Map的值。

2.优点

能够解决Cascade Shadow在有些场合下空间利用率不高、占用空间过大的问题。