unity渲染路径

本文深入探讨了Unity中两种主要的光照渲染路径:deferred shading和forward rendering path。deferred shading在实时光照密集的场景中表现优异,通过延迟光照计算提高效率;forward rendering path则适合光源较少的场景,直接在物体上应用光照。文章详细分析了两者的优缺点及工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)      deferred shading:有最佳的光照和阴影效果,在场景中存在许多的实时光照时,使用deferred shading也是最佳的方案,之所以叫做deferred(延迟),是因为shading的时机不是发生在第一个Pass的顶点/片元函数内,而是存在延迟,直到第二Pass的时候才执行,每个光源都是逐像素光照。

缺点:不能真正的支持抗锯齿以及半透明物体,也不支持MeshRenderer组件的ReceiveShadow功能,最多使用四个cullingmask

延迟渲染第一个pass不进行真正的光照计算,仅仅把光照计算需要的信息存储到G-Buffer中,第二个pass利用G-Buffer中的信息进行真正的光照计算。延迟渲染的效率不依赖于场景的复杂度,而是根据屏幕空间的大小相关。

(2)      Forward Renderer Path:作用在每个物体上一定数量最亮的光(一般4个)逐像素,而后四个逐顶点,剩余的SH计算。(渲染模式时important的逐像素,notImportant逐顶点或SH)

缺点:当场景包含大量的实时光源时,前向路径的性能就会急剧下降 。假设场景中有N个物体,每个物体受到M个光源的影响,那么要渲染整个场景,就需要N*M个pass,因此,如果逐像素光照比较多,那么pass就会很大。而每执行一个pass,就需要重新渲染一遍物体,有很多计算是重复的。

分为BasePass:会计算环境光,最重要的平行光,逐顶点/SH光源和Lightmaps。

AdditionalPass:会计算额外的逐像素光源,每个pass对应一个光源。

转载于:https://www.cnblogs.com/mcyushao/p/10746399.html

### Unity 不同渲染模式的使用方法和效果比较 #### 前向渲染 (Forward Rendering) 前向渲染是最常用的渲染方式之一,在这种模式下,每个对象会针对每一个影响该对象的光源执行一次或多次渲染传递。这意味着当场景中有多个动态光源时,性能开销将会显著增加。 对于大多数现代游戏来说,默认情况下都会启用前向渲染路径[^2]。为了优化性能并获得更好的画质表现: - 尽量减少场景内的实时计算光源数量; - 使用烘焙光照贴图代替部分静态物体上的直射光; - 合理配置阴影投射距离和其他质量选项; ```csharp // 设置摄像机采用前向渲染路径 camera.renderingPath = RenderingPath.Forward; ``` #### 延迟渲染 (Deferred Lighting/Rendering) 延迟渲染将几何信息保存在一个中间缓冲区中,直到所有的几何体都被绘制完毕之后再统一处理光照。这种方式使得即使存在大量光源也不会造成过多额外负担,因为每帧只需遍历一遍屏幕空间即可完成全部照明运算。 不过值得注意的是,并不是所有平台都能良好支持这一特性——特别是移动设备上可能缺乏必要的硬件加速能力。此外,由于其工作原理的缘故,某些特殊材质属性(比如透明度)无法被正确呈现出来。 ```csharp // 切换至延迟渲染路径 if(SystemInfo.supportsDeferredShading){ camera.renderingPath = RenderingPath.DeferredLighting; } else{ Debug.LogWarning("当前设备不支持延迟渲染!"); } ``` #### 经典顶点光照 (Legacy Vertex Lit) 经典顶点光照属于较为古老的技术方案,主要适用于低配终端或是对图形品质要求不高但追求极致效率的应用场合。在这种模式里,仅能在顶点级别施加简单的定向光源效果,而面片间的平滑过渡则依赖于插值算法来近似模拟真实感观。 尽管如此,随着GPU架构不断进步以及新一代API逐渐普及开来,这类传统做法已经很少见到了,取而代之是以更先进的PBR材料体系为代表的解决方案成为主流趋势。 ```csharp // 设定为旧版顶点光照模式 camera.renderingPath = RenderingPath.VertexLit; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值