关于如何判断是否接收lightmap、接收lightmap的shader和怎么烘焙更快

来源:互联网 发布:淘宝网店怎么寻找货源 编辑:程序博客网 时间:2024/05/01 05:43

在场景里设置平行光或者点光源,
1,点击希望能进行烘焙的光对象,在右侧Baking下选择mix或者baked,并将intensity调的大一点儿。另外设置该光的方向,使要测试的物体在光显示或者隐藏的情况下会有较大的区别,能明显区分开。
2,将要测试的物体复制两份(Ctrl+D),一份勾选上static,一份不勾选(为了清晰地对比)。
3,Window->lighting,勾选掉Precomputed RealTime,只勾选上Baked Gi,compression改成uncompression,Baked Resolution改到4以下,compressed勾选掉,Directional Mode改成Non-Directional,Default Parameters改成Default-veryLowResolution,然后烘焙会比较快。
4,在下面auto勾选掉,点build开始烘焙。(注意:运行状态build为灰色)
5,烘焙完后,看static的和非static的有没有区别,关掉light后,若没有影响则是接受lightmap,若变暗,则是不接收lightmap。若关掉light重新打开后有影子,则是不接收lightmap。
shader需要添加以下代码才能接收lightmap:#pragma multi_compile LIGHTMAP_OFF LIGHTMAP_ON

v2f里:#ifndef LIGHTMAP_OFF
half2 uvLM : TEXCOORD5;
#endif

vert里:#ifndef LIGHTMAP_OFF
o.uvLM = v.texcoord1.xy * unity_LightmapST.xy + unity_LightmapST.zw;
#endif

frag里:#ifndef LIGHTMAP_OFF
fixed3 lm = DecodeLightmap (UNITY_SAMPLE_TEX2D(unity_Lightmap, i.uvLM.xy));
finalRGB *= lm;
#endif

0 0
原创粉丝点击