灯光阴影
灯光阴影
一、渲染路径
Unity支持不同的渲染路径,不同的渲染路径在光照和阴影方面会有不同的特点。
1.延迟着色渲染路径
定义:将着色步骤推迟处理的渲染方式,是实现最逼真光影效果的渲染路径,但对硬件要求较高。
使用延迟着色时,灯光Pass基于G-Buffer和深度信息计算光照,因此计算量与场景复杂程度无关,可以减少性能浪费。
延迟着色不支持真正的抗锯齿,也不能处理半透明物体,这些会自动使用前向渲染处理。
延迟着色只能在有多重渲染目标、Shader Model3.0或以上,并且支持深度渲染贴图的显卡上运行。
2.前向渲染路径
前向渲染是传统的渲染路径,支持所有Unity的图形功能。
前向渲染路径渲染使用一个或者火哥Pass渲染每一个物体,取决于影响到物体的灯光。
一个灯光是逐像素光照还是其他方式渲染取决于这四点:
(1)渲染模式设置为Not Important的灯光总是以逐顶点或者SH的方式渲染。
(2)渲染模式设置为Important的灯光总是逐像素渲染。
(3)最亮的平行光总是逐像素渲染。
(4)如果逐像素光照的灯光数量少于项目质量设置中Pixel Light的数量,那么其余较亮的灯光会被逐像素渲染。
其中,SH(Spherical Harmonics,球谐)光照渲染,几乎不消耗CPU性能。
灯光的渲染模式可以在每个灯光的属性面板中进行设置:
如果想要设置当前项目中逐像素灯光的限制数量,依次点击Edit->Project->Setting
,左侧选择Quality
,设置Pixel Light Count
数量即可。
3.两种渲染路径的特性对比
特性 | 前向渲染 | 延迟渲染 | |
---|---|---|---|
功能 | 逐像素光照(法线贴图、灯光cookie) | 支持 | 支持 |
实时阴影 | 需要满足某些条件 | 支持 | |
反射探针 | 支持 | 支持 | |
深度和发现缓存 | 需要添加额外的Pass | 支持 | |
软粒子 | 不支持 | 支持 | |
半透明物体 | 支持 | 不支持 | |
抗锯齿 | 支持 | 不支持 | |
灯光剔除蒙版 | 支持 | 部分功能被限 | |
光照的细节程度 | 部分灯光逐像素渲染 | 所有灯光逐像素渲染 | |
性能 | 单个逐像素照明所耗性能 | 取决于像素数量乘以灯光照亮的物体数量 | 取决于照亮的像素数量 |
物体被正常渲染需要的次数 | 取决于逐像素光照的灯光数量 | 1次 | |
对于简单场景的开销 | 无 | 高 | |
平台支持 | PC(Windows/Mac) | 支持 | Shader Model3.0以上 |
移动(IOS/Android) | 支持 | OpenGL ES3.0、MRT,Metal(A8或以上的设备) | |
Console | 支持 | XB1,PS4 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ackow!
评论