Realtime GI介绍
Bake GI, Progressive Lightmapper,Light Probes Reflection介绍
Mixed GI Bake indirect,ShadowMask,Subtractive介绍
没有光线烘焙的场景,只有直接光照和环境光,场景偏暗
光线烘焙的场景,有直接光照和间接光,场景明亮且真实
unity中的光照系统
在Unity中,光照的计算中有两部分,一是直接光照,二是间接光照。
灯光有三种模式,分别是Realtime,Baked,Mixed。
物体分为两种模式Lightmap Static和Lightmap NonStatic。
直接光照,间接光照
直接光是成光线经过物体一次放射进入摄像机,而间接光是光源经过多次放射进入摄像机的效果。不做处理的情况下,unity场景中只有直接光照。但是间接光照使场景看起来真实,因为没有光线直接到达的地方也会被不同程度的照亮,就像真实的世界里的规则。
你会觉得有时候没有开启GI,物体背光面也会被照亮,那是因为开启了环境光,环境光会照亮所有面,当你关闭环境光会发现背光面是纯黑的。
静态物体,动态物体
对于物体,只有Lightmap static的物体参与光线烘焙,参与烘焙我们下称为静态物体,反之称为动态物体,动态物体想分享烘焙光的话,需要借助光探针。
灯光三种模式Realtime,Baked,Mixed区别
Realtime GI:使用Enlighten提前计算(非实时)多个表面之间的光路,所有可以提供实时的间接光。、
特点:Realtime光和Mixed光和静态物体的参与光照烘焙,烘焙结束后,直接光和间接光都会实时计算。
Bake GI:直接和间接光照以及阴影都被烘焙在一张额外的贴图上,场景中不会再实时计算光照。
特点:Baked光和Mixed光和静态物体的参与光照烘焙,烘焙结束后,场景中直接光和间接光都读贴图。
Mixed GI:保留直接光照的计算,间接光照被烘焙。
特点:所有光和和静态物体的参与光照烘焙,烘焙后直接光实时计算,而间接光读贴图。
重要参数
RealtimeGI的参数不能单个修改,所有参数在Lightmap Parameter中设置High,medium,low
下面是BakeGI的重要参数解释
Indirect Sample:每个像素点进行间接光采样的次数。
Lightmap resolution每个单位(一般是每米)的分辨率,越大效果越好。
当一个1米见方的cube,Indirect Sample设为10,Lightmap resolution设为4。1m对应4个像素,一个一平方米的UV对应16个像素,一个正方体6个面,则有6*16=96个像素,每个像素10词采样,则要96*10=960次采样。
Bounces:光线反弹的次数,每增加1,计算时间都会显著增加,最高为4.
LightMapPadding:光照贴图中不同面的间距。
Direction Mode选择方向性会增加额外的贴图,但是如果选择非方向性,当你转动已经完成光照贴图烘焙的物体是,光照会出错。
Filter:对噪点进行平滑度的处理,同时对物体连接处的阴影进行校正。
Filter Advance 两种模式
Gaussian(用过PS的都知道高斯模糊)阴影边缘柔和
Trous阴影边缘会变硬,同时对物体连接处的阴影进行校正。
Progressive向比较Elighten的优势:1.优先烘焙Scene中看见的区域2.可以一边烘焙一边看效果,可以暂停,可以强制结束。
参数的意义
值得注意的是,realtimeGI的UVchart大小不能单独修改,但是BakeGI的UVchart大小可以修改,你甚至可以修改不同的物体对应的UVChart的大小,数值越大,上边的光照贴图的纹理约精细。
UV Overlap的问题处理
就是在Unity生成光照贴图UV的时候,UV之间的间距过于接近,造成不同物体的UV共用了同一个像素点造成的错误。
解决:调整GenerateUV的间距。
模型ImportSetting中,GenerateUV-Advance-Pack Margin调大。
但是UV间距增加,每张图的UV容量会变少,可能导致贴图数量增加,从而导致内存增加。
光照贴图的接缝
同一个物体上的UV展开,有接缝,导致最后的效果,同一个物体上有一条明显的光照分界线。
解决:MeshRender中,勾选Stitch Seams。
光照探针
光照探针,对场景中个别的点接受的直接光照和间接光照进行记录,形成空间阵列,当物体出于阵列中间时,物体表面的光照数据,会根据它周围的光照探头,进行差值(或者某种算法)计算。
通常来讲,接受光照探头的物体,不应该大于八个光探针规定的正方体区域,当单个物体较大的时候,超过了区域的时候,上面的效果会失真,这时候需要使用Light probe Proxy Volume,可以为大型的动态物体提供预先计算的光照信息。
放射探针的使用
场景中某个点的视觉环境可以用Cubemap表示,用于着色器采样,实现反射效果;
放射探针都由在一个规定的范围,该范围内的所有物体的放射信息都由该探针记录,当场景中有很多金属物品时候要注意使用放射探头,因为金属对放射敏感。
Mixed GI保留直接光照的信息(可以变动),间接光照烘焙(固定不变)。
例子灯光小幅度的摇晃,对于全局的间接光照影响不大,但是直接光照的变动还是明显的。
Mixed的三种模式
Bake Indirect:只烘焙间接光照,直接光和阴影实时计算
Shadow Mask:对于静态物体,阴影会被烘焙到shadowmask贴图,没有实时阴影的效果。
Subtractive:对于静态物体,直接和间接光照都烘焙到贴图上。对于动态物体,高光动态,而且可以在静态物体上投射主方向光阴影。