1. 程式人生 > >渲染器的一些特徵指標

渲染器的一些特徵指標

Color masking: Pixelshader輸出的顏色會乘上掩碼

Alpha to Coverage: 以較低的成本實現的一種OIT-Order-independent transparent

Multi-texturing: 多紋理貼圖技術,一個object可以貼多張紋理

Sphere Map: 球面貼圖是覆蓋整個紋理影象的一個圓形區域,它與紋理影象的頂、底、左、右邊緣相切。這個圓形區域之外的紋理值不會對結果產生影響,因為它們不會在環境紋理中使用。球面貼圖用於環境反射-reflection

Cube Map: 與球面貼圖類似,也是做環境反射的。

Normal Map(法線貼圖):通過改變物體表面的明暗值-光照來體現表面的凹凸感,缺點是在近處看效果不好。一個解決辦法是可以設定一個強度係數來調整凹凸的強度,即縮放法線圖中法線的r,g分量,n=normaize((f,f,1)*(r,g,b)),f=0~10,0沒有凹凸效果,1使用原始的法線向量,大於1增強凹凸效果。

Effects:

Bloom(泛光),HDR,Gamma Correction,Lens Flare,GodRay,Fog,Billboards,Water,粒子(fire,smoke,snow),SkyDome,Dynamic Shadows,Terrain,Texture Animation,投影燈(Light Projector),SSAO,Depth of Field,Motion Blur,Fur

Gamma校正:根據sRGB標準(大部分成像裝置都支援),大部分顯示器使用了2.2的display gamma,因此為了不讓渲染的影象失真,輸出時使用1/2.2的encoding gamma進行校正。在遊戲中,因為美工提供的紋理都是線上性空間的(沒有進行gamma encoding),因此光照和混合都線上性空間進行即可,最後進行一個post process將顏色進行gamma校正。注意由相機拍攝的影象是在非線性空間了。關於gamma在unity中的設定(不支援移動平臺):

它有兩個選項:一個是Gamma Space,一個Linear Space。

- 當選擇Gamma Space時,實際上就是“放任模式”,不會對shader的輸入進行任何處理,即使輸入可能是非線性的;也不會對輸出畫素進行任何處理,這意味著輸出的畫素會經過顯示器的display gamma轉換後得到非預期的亮度,通常表現為整個場景會比較昏暗。

-當選擇Linear Space時,Unity會背地裡把輸入紋理設定為sRGB模式,這種模式下硬體在對紋理進行取樣時會自動將其轉換到線性空間中;並且,也會設定一個sRGB格式的framebuffer,此時GPU會在shader寫入color buffer前自動進行伽馬校正。如果此時開啟了混合(像我們之前的那樣),在每次混合是,之前buffer中儲存的顏色值會先重新轉換回線性空間中,然後再進行混合,完成後再進行伽馬校正,最後把校正後的混合結果寫入color buffer中。這裡需要注意,Alpha通道是不會參與伽馬校正的。