1.culling(裁剪)

裁剪主要负责哪些物体要渲染到屏幕上,哪些不绘制,在CPU阶段,该阶段已经把大量不可见物体排除了

有三个因素影响裁剪:

(1)距离:

(2)视椎体:和相机的角度有关

(3)遮挡:如果物体a在物体b前面且a不透明,那么遮挡部分就不渲染

ue4像素流推送到python ue4像素流渲染_ue4像素流推送到python

在ue4编辑器中选中物体,会有一个黄色的圈叫Bounds,负责运算物体是画还是不画。

ue4像素流推送到python ue4像素流渲染_光栅化_02

在StaticmeshActor下面Rendering面板有控制最大渲染距离,如果该物体距离相机超过该距离就不渲染

ue4像素流推送到python ue4像素流渲染_ue4像素流推送到python_03

2 DrawCall

减少DrawCall的方法:

ue4像素流推送到python ue4像素流渲染_ue4像素流推送到python_04

GPU相对于CPU的优势:

可以理解为GPU有几百万的并行线程,可以同时处理顶点,像素

3 顶点着色和像素着色

ue4像素流推送到python ue4像素流渲染_ue4像素流推送到python_05

ue4对顶点着色控制不多,因为模型都是外部软件做好导进来的

对于像素着色,在光栅化阶段,把对应顶点画出三角形,三角形又有图元和像素组成,再对像素进行着色

4 深度缓冲

ue4根据DepthBuffer来区分哪些物体在前面,避免重复绘制

ue4像素流推送到python ue4像素流渲染_ue4像素流推送到python_06

ue4先拿出DepthBuffer来判断哪些物体画哪些不画

ue4像素流推送到python ue4像素流渲染_ue4像素流推送到python_07

在G缓冲中包含了这些信息,把这些数据处理好也即把BasePass处理好了

ue4像素流推送到python ue4像素流渲染_ue4像素流推送到python_08

对于每个信息都可以在这里去查看

ue4像素流推送到python ue4像素流渲染_ue4像素流推送到python_09

PBR(基于物理的渲染):尽可能模拟现实中每个物体的基础的物理属性

比如反光强度,粗糙程度,基础颜色,金属度,高光

在延迟渲染中,多个逐像素光源对多个物体时,只计算一次BassPass,再计算光照

5 静态光和动态光

静态光在运行之前就把光照颜色和阴影做好了,通过LightMass内置程序,将这些信息放到一张图片上,静态光缺点是消耗内存,因为一张图很占内存

ue4像素流推送到python ue4像素流渲染_ue4像素流推送到python_10

动态光

ue4像素流推送到python ue4像素流渲染_光栅化_11

固定光源

ue4像素流推送到python ue4像素流渲染_数据处理_12

6 反射

ue4像素流推送到python ue4像素流渲染_ue4像素流推送到python_13

ue4像素流推送到python ue4像素流渲染_数据处理_14

ue4一共以上三种反射,反射做完了进行alpha的特别处理

ue4像素流推送到python ue4像素流渲染_数据处理_15

ue4像素流推送到python ue4像素流渲染_光栅化_16

最后做后期处理

ue4像素流推送到python ue4像素流渲染_数据处理_17