在看实时渲染之前,首先可以回顾一下我们在玩游戏当中的概念:
FPS与单帧渲染时间
提到FPS大家可能会想到枪战,但那个是第一人称射击(First Person Shooting)。在玩网络游戏的时候,屏幕的右上角可能会有fps这个东西,比如LOL。游戏当中的视觉体验,一般与fps成正比,这个fps的全称就是Frames Per Second,即帧率。与之相同的,就是单帧渲染时间,单位是ms,即渲染一帧所需要的毫秒数,该值越低,说明性能越高。
我在B站找到的第一个UE4相关的渲染课程,讲的就是实时渲染,里面会介绍一些基础概念。
首先,所有模型都是由顶点和三角形构成的。其次,计算机是以对象为单位进行渲染的,而不是行或者列或者其他。
最后,渲染技术是在性能、功能、画质之间找一个平衡,根据需要而有所侧重。
实时渲染
实时渲染大致包括:
0,前期处理
1,几何体
2,光栅化和G缓存(G_Buffer)
3,纹理
4,像素着色器和材质
5,反射
6,静态照明
7,动态照明
8,雾和透明度
9,后期处理
而实时渲染分为两大类,一是延时渲染,二是正向渲染,他们有不同的应用场景。
正向渲染
正向渲染通常应用于移动终端,VR这种小型应用中,具体特点有:
1,着色、几何体、材质在同一环节进行计算。
2,在功能较多的场景下表现较差
3,更擅长半透明渲染
4,轻量级应用表现更好
5,抗锯齿功能更好
延时渲染
延时渲染是UE4默认使用的渲染方式,有如下特点
1,着色发生在延时的环节中
2,使用一组图像(GBuffer)渲染,几何体首先被渲染
3,擅长动态光照,具有稳定性。
4,禁用一些功能时(开\闭)更灵活,设计表面属性时不灵活
5,无多重抗锯齿,依赖于实时抗锯齿(TAA)