1. 程式人生 > >關於Unity中的光照(六)

關於Unity中的光照(六)

via back 定義 int 一次 pro lane 腳本 elf

反射探頭

1:鏡子金屬等具有光滑表面的物體都會反射,而遊戲中計算實時反射非常消耗CPU的資源,
 unity5.0新增了一個反射探頭的技術,通過采樣點,生成反射Cubemap,然後通過特定的著色器從Cubemap中采樣,就能顯示反射效果了;
2: 反射探頭的參數:
 type: 設置反射探頭的類型(baked, custom, realtime)三種類型;custom也是烘焙的,但是可以自定義
 Dynamic Object: 將場景中的沒有標識為Static的對象烘培到發射紋理中;
 Cubemap: 烘培出來的立方體紋理圖;
 Refresh Mode 刷新模式: OnAwake只在喚醒時刷新,EveryFrame 每幀刷新, Via Scripts 有腳本控制;
 Time slicing: 反射畫面刷新頻率: All face at once: 9幀完成一次刷新(中等) Individual Faces: 14幀完成刷新(性能消耗低) no time slicing: 每幀刷新(性能消耗最大);
 Importance: 權重,根據權重來混合不同Probe的反射情況;
 Intensity: 反射紋理的顏色亮度;
 Box Projection: 若是勾選此項, Probe的Size和Origin會影響反射貼圖的映射方式;
 Size:該探頭的區域大小,在該區域內所有的物體都會應用反射(需要Standard著色器);
 Probe Origin: 反射探頭原點,會影響到捕捉到的Cubemap;
 HDR 生成Cubemap中是否使用高動態範圍圖像(High Dymainc Range)這也會影響探頭的數據存儲位置;
 Shadown Distance: 在反射圖中的陰影距離,超過該距離陰影不會被反射;
 ClearFlags: 設置反射圖中的背景是天空盒或者是單一的顏色;
 Background: 設置背景的顏色;
 Culling Mask: 反射剔除,決定哪些層的物體是否進行反射;
 Using Occlustion Culling: 烘培時,是否啟動遮擋剔除;

 Clipping Plances: 反射的裁剪平面,有near, far兩個個參數

反射探頭實例

1.創建Unity工程和文件目錄

2.把天空盒資源文件夾拖到res下,在res下創建一個Materials文件,在裏面創建一個天空盒材質叫Skybox

3.設置材質球Skybox的Shader---->Skybox---->6sided,把天空盒的6張紋理關聯到Skybox材質

4.創建一個平面plane,調大這個plane的大小scaleX=100,scaleZ=100

5.創建一個空節點Ref_object,添加反射探頭的組件Relfection Probe,有一個黃色的框框,在這個框框內的物體都會參與反射

6.為了看見反射的材質,創建一個材質球ref在Materials文件夾下,勾選允許反射Reflections

7.把ref材質關聯到plane的材質屬性上,整個平面像一個鏡子。

8.創建一個cube,設置為Lightmap



關於Unity中的光照(六)