全局光照 GI
這里所說的反射就是,一個紅色的物體,當太陽照射它的時候,它周圍的物體也會變得有點紅。
1:Realtime每幀都會計算光照,實時光照是不會反射的,所以它的光影顯得單調;
2:Baked GI:通過烘培光照貼圖的方式獲得很好的光照效果,無法實時的改變光照;
3: 預先計算全局光照: Precumputed Realtime GI
實時光照不能很好的顯示間接光照的效果, 比如實時光照到一個紅色的物體上。
紅色物體發生反射,本來如果是實時不會有反射,如果使用預先光照,那么會預先計算好靜態物體的反射, 讓物體顯示出間接光效果;
4: 環境光
預先全局光照思路
先把物體標記為靜態,預先把光的反射計算出來,實時光照+光的反射=既有實時光照又有反射,性能也不錯。
1: 使用實時光照,編寫場景;
2: 開啟預先光照選項 Window --->Lighting-->Scene面板-->Precomputed Realtime GI;
Realtime resolution代表間接光照分辨率,值越高間接光照效果越明顯,間接光就是太陽照在物體上,物體反射出的太陽光就是間接光。
3: 運行場景,看到光源角度變化后,場景中的光影效果也是實時的;
4: 通過預先光照,有效的降低了原本要在游戲中實時計算的全局光照運算數量,若用戶需要在游戲中頻繁的對光源修改顏色,光源方向,光源強度,一般使用預先光照;
5: 預先光照也是針對靜態物體而言;對於動態物體時不會計算預先光照的;
6: 實時光照 + 預先光照 對靜態物體生成反射效果;
全局光照GI實例
1.創建Unity工程和文件目錄
2.去掉環境光Window---->Lighting---->Skybox設置為none
3.創建一個平面plane和一個立方體cube搭建靜態場景,創建Materials文件夾,里面再創建一個紅色的材質球
4.使立方體cube關聯紅色材質球,這時候光線照下來,發現地板plane上只有恨生硬的陰影。
5.創建一個腳本來控制太陽光源繞着世界坐標的y軸旋轉,使得光照不斷變化,腳本叫rotate_lighgt,掛載在Directional Light節點下
打開rotate_lighgt:
using UnityEngine; using System.Collections; public class rotate_light : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { this.transform.Rotate(Vector3.up, Time.deltaTime * 50, Space.World);//繞世界的y軸旋轉,1秒鍾轉50度,Space.World是讓它繞世界坐標系的y軸旋轉,沒寫的話會繞它自己坐標系的y軸旋轉 //顯然,Time.deltaTime是按照每秒來統計的。 Update()的刷新是按照每幀來顯示的,但是Time.deltaTime是按照秒來統計的。 } //我的理解是我們這里只設置它1秒鍾,也就是1個Time.deltaTime轉多少度,系統會幫我們計算每一幀該轉多少度(除於60),然后每次update的時候都轉這個它自己計算好的角度 }
6.把cube和plane都標記為static,打開預先光照Window---->Lighting---->Scene---->Precomputed Realtime GI,出現反射光,比之前的逼真
光照總結
分類:
1.實時光照:模擬現實生活中的光照打在物體上,分為點光源,聚光燈,太陽光
這些光有一些特性如:Draw Halo光暈,Flare耀斑(光源對着攝像頭才能看見)
特點:不能參與反射,就直接光照加陰影,性能開銷大
2.baked光照貼圖:把光源都配置成baked或者mixed模式,把物體都配置成static,烘焙出整個的光照貼圖,區域光源只有在這個模式下才能使用
特點:效果和性能都很好,但是再也不能改變
兩個問題:1.動態物體進到場景中怎么辦---->光探頭Light Probes,動態物體收集光探頭信息,最后把光探頭信息作用在動態物體上面,所以動態物體就能很好地融合到靜態烘焙好的光照場景里面
2.沒有反射,想做倒影怎么辦---->反射探頭Reflection Probes,在場景中布置一個反射探頭的點,布置好了以后,
會把周圍的物體的投影反射到動態材質上面,某個物體(plane)再貼上這個動態材質顯示出來,這樣就能顯示出倒影。
反射探頭模式:1.realtime 2.baked 3.custom(和baked模式唯一不同的是手動關聯反射貼圖,勾選Dynamic Object,可以不勾選cube的static)
3.預先光照:由於光源不參與反射,當光打到紅色物體上,明明應該有紅色的光反射出來,但是只有黑黑的陰影,效果不好,這時候就要使用預先光照。先把物體標記為靜態,預先把光的反射計算出來,實時光照+光的反射=既有實時光照又有反射,性能也不錯。
技術:
1.天空盒SkyBox,用在兩個地方,一個是只對攝像機有用的,一個是全局Window---->LIghting---->Scene---->Environment Lighting下面的
2.自發光材質Emission
3.法線貼圖(Normal map),希望模型更精細又不增加模型頂點
4.環境遮罩貼圖(Occulsion),更加逼真的模型貼圖,黑色(不透光)白色(透光)紋理圖
5.光照過濾cookies(窗戶投影),黑色(不透光)白色(透光)紋理圖
6.二級紋理貼圖Secondary Maps
7.環境光的設置Environment Lighting
自帶的shader模式:
1.Mobile Diffuse
2.Standard
3.Lagacy Shaders---->Bumped Diffuse(既能帶基礎的漫反射貼圖又能加法線貼圖)