Unity3D基础知识之光照系统、渲染管线

Unity3D基础知识之光照系统、渲染管线

一、光照系统

1. 全局光照GI(Global Illumination)

能够计算直接光、间接光、环境光以及反射光的光照系统。通过GI算法可以使渲染出来的光照效果更为真实丰富。

2. 直接光照

从光源直接发出的光,通过Light组件实现。
(1)Directional Light平行光:平行发射光线,可以照射场景里所有物体,用于模拟太阳。
在这里插入图片描述
(2)Point Light点光源:在灯光位置上向四周发射光线,可以照射其范围内的所有对象,用于模拟灯泡,图1是Scene面板,图2是Game面板效果显示。
在这里插入图片描述
在这里插入图片描述
(3)Spot Light聚光灯:在灯光位置上向圆锥区域内发射光线,只有在这个区域内的物体才会受到光线照射,用于模拟探照灯。
在这里插入图片描述
(4) Area Light区域光 :由一个面向一个方向发射光线,只照射该区域内物体,仅烘焙时有效,用在光线较为集中的区域。

  • Range范围:光从物体的中心发射的范围。仅适用于点光源和聚光灯。
  • Spot Angle聚光角度:灯光的聚光角度。仅适用于聚光灯。
  • Color颜色:光线的颜色。
  • Intensity强度:光线的明亮程度。
  • Culling Mask选择遮蔽层:选择要照射的层Layer。
  • Shadow Type阴影类型:Hard硬阴影、Soft软阴影
3. 间接光照

物体表面在接受光照后反射出来的光。
注:只有标记Lightmaping Static的物体才能产生间接反弹光照。

4. 环境光照

作用于场景内所有物体的光照。
Ambient Source环境光源

  • Skybox通过天空盒颜色设置环境光照;
  • Gradient梯度颜色,Sky天空颜色、Equator地平线颜色、Ground地面颜色;
  • Ambient Color纯色
    Ambient Intensity环境光强度
    Ambient GI环境光GI模式: Realtime实时更新;Backed烘焙,环境光源不会改变选择此项。
5. 反射光照

根据天空盒或立方体贴图计算的作用于所有物体的反射效果。
Reflection Source反射源
Reflection Intensity反射强度

6.烘焙

当场景包含大量的物体时,实时光照和阴影对游戏性能有很大影响。
使用烘焙技术,可以将光线效果预渲染成贴图再作用到物体上模拟光影,从而提升性能。适用于在性能较低的设备上运行的程序。

7.光源侦测Light Probes

由于 LightMapping 只能作用于 static 物体,所以导致运动的物体与场景中的光线无法融合在一起,显得非常不真实。而 Light Probes 组件可以通过 Probe 收集光影信息,然后对运动物体邻近的几个 Probe 进行插值运算,最后将光照作用到物体上。

二、渲染管线

将图形数据在GPU上运算处理,然后输出到屏幕的过程。
在这里插入图片描述
Draw Call绘制调用:引擎准备数据并通知GPU的过程,即每帧调用显卡渲染物体的次数。

顶点处理:接收模型顶点数据。
图元装配:组装面:连接相邻的顶点,绘制为三角面。
光栅化:计算三角面上像素,并为后面着色阶段提供合理的插值参数。
像素处理:对每个像素区域进行着色。写入缓存。
缓存: 一个存储像素数据的内存块,有帧缓存与深度缓存。

  • 帧缓存:存储每个像素的色彩,即渲染后的图像。帧缓存常常在显存中,显存不断读取并输出到屏幕中。
  • Z-buffer深度缓存:存储像素的深度信息,即物体到摄像机的距离。光栅化时便计算各像素的深度值,如果新的深度值比现有值更近,则像素颜色被写到帧缓存,并替换深度缓存。

遮挡剔除:当物体被送进渲染流水线之前,将摄像机视角内看不到的物体进行剔除,从而减少了每帧渲染数据量,提高渲染性能。
多细节层次Levels of Detail:根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

猜你喜欢

转载自blog.csdn.net/lolly114/article/details/127462887
今日推荐