Unity3D的光照渲染简介

Unity3D的光照渲染

U3D支持不同的渲染路径,不同的渲染路径还有不同的表现效果,这中不同的效果体现在阴影以及光影方面。

Deferred Shading

Deferred Shading拥有最佳的光照和阴影效果。当场景中存在许多的实时光照时,使用Deferred Shading也是最佳的方案。当然Deferred Shading对硬件的要求稍高。

性能:

显卡应支持Multiple Render Targets(MRT),Shader Model 3.0(及更高),Depth Render Textures。大多数产于2006年以后的PC显卡都支持本功能。

性能主要取决于物体受光源的数量,而不是场景复杂度,非常适用于小范围的点光源或者光源部分或全部遮挡的情况。

Forward Rendering

Forward是传统渲染路径。支持所有的Unity图形特性。在默认情况下,只有少数最亮的光源得以成为Per-Pixel光源。其他的光源则视为Per-Vertex。

性能:

取决于影响物体的光源数量,Forward 在单个或多个Pass内渲染物体。需要注意的是,光源根据设置或强度的不同,本身也会具有不同的特性。
Forward下,一些(视Quality Setting里面的设置而定)最亮的光源渲染物体时以Per-Pixel的方式进行。紧接着可有四个光源为Per-Vetex光源。其余的光源都以球谐函数(SH:Spherical Harmonics)进行计算,可以高效但是粗略的得到计算结果。无论光源是不是Per-Pixel的都依赖以下规则:

(1)光源的Render Mode设为Not Important的,则不是Per-Pixel光源
(2)最亮的平行光是Per-Pixel光源
(3)光源的Render Mode设为Important的,则为Per-Pixel光源
(4)如果场景中的per-pixel光源数量少于Quality Setting中的Pixel Light Count设置的数量,则会按光照强度 从强至弱的顺序,将更多的光源设置为per-pixel。

渲染每个物体时会依以下规则:

Base Pass只会用到一个per-pixel光源,以及所有其它Per-Vertex光源或SH光源
其它的per-pixel光源则在Additional Pass中渲染,并且每个Pass对应一个per-pixel光源

Legacy Deferred Lighting

Legacy Deferred (light prepass) 类似于Deferred Shading,但是和其运用了不同的技术,有不同的侧重。

优点:

Deferred Lighting对影响物体的光源数量没有限制,所有的光源都是Per-Pixel光照,即所有光源都可以正确的和法线贴图得到正确的计算结果。另外,所有的光源都可以有Light Cookie和Shadow。其性能开销与光源数量成正比,这意味着可以通过控制光照面积,减少单个物体受到光照影响的数量来获得性能方面的提升。Deferred Lighting的另一个优点是结果能够很方便的预测,被个光源都是逐像素光照,具有一致的光照计算过程。

缺点:

在于不能真正的支持抗锯齿以及半透明物体(半透明物体采用 Forward Rendering 渲染路径)。同时也不支持Unity3D中的Mesh Renderer组件的Receive Shadows功能,对Culling Masks的支持也不完善,最多能使用四个Culling Mask。

Legacy Vertex Lit

效果最差,不支持实时阴影。属于Forward Rendering Path的子集。是性能最高,受支持度最多的Rendering Path(但是主机上不适用)。
所有的光照计算在Vertex层面完成,因此无法支持大多数的per-pixel效果,比如,阴影,法线贴图,Light Cookies,精细的高光效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值