# 第十五課:光照貼圖(Lightmap)
## 簡介
這堂課是視頻課程,沒有介紹新的OpenGL相關技術/語法。不過,大家會學習如何利用現有知識,生成高質量的陰影。
本課介紹了用Blender創建簡單場景的方法;還介紹了如何烘培(bake)光照貼圖(lightmap),以便在你的項目中使用。

無需Blender預備知識,我會講解包括快捷鍵的所有內容
## 關于光照貼圖
光照圖是永久、一次性地烘焙好的。也就是說光照圖是完全靜態的,你不能在運行時移動光源,連刪除都不行。
但對于陽光這種光源來說,光照圖還是大有用武之地的;在不會打碎燈泡的室內場景中,也是可以的。2009年發布的《鏡之邊緣》(*Mirror Edge*)室內、室外場景中大量采用了光照圖。
更重要的是,光照圖很容易配置,速度無可匹敵。
## 視頻
這是個1024x768 高清視頻。
[Youku 標清含中文字幕](http://v.youku.com/v_show/id_XNDg5MjYzMzk2.html)[Vimeo 高清原版視頻](http://player.vimeo.com/video/24359223?title=0&byline=0&portrait=0)
## 附錄
用OpenGL渲染時,你大概會注意到一些瑕疵(這里故意把瑕疵放大了):

這是由mipmap造成的。從遠處觀察時,mipmap對紋素做了混合。紋理背景中的黑色像素點和光照圖中的像素點混合在了一起。為了避免這一點,可以采取如下措施:
- 讓Blender在UV圖的limits上生成一個margin。這個margin參數位于bake面板。要想效果更好,可以把margin值設為20個紋素。
-
獲取紋理時,加上一個偏離(bias):
~~~
color = texture2D( myTextureSampler, UV, -2.0 ).rgb;
~~~
-2是偏離量。這個值是通過不斷嘗試得出的。上面的截圖中bias值為+2,也就是說OpenGL將在原本的mipmap層次上再加兩層(因此,紋素大小變為原來的1/16,瑕疵也隨之變小了)。-
-
后期處理中可將背景填充為黑色,這一點我后面還會再講。