Unity渲染管线详解
1.UnityBuild-in渲染管線
當雙攝像機的時候,注意Camera中的Clear Flags 和 Depth。
其中Clear Flags在攝像機在渲染時,會進行清屏的操作。選擇skybox是除了天空盒都會被清除。
Depth數值越小越先被渲染。
層級剔除:culing mask選擇被剔除的層級
2.渲染隊列
RenderQueue 越小越先被渲染。
不透明隊列(RenderQueue < 2500) RenderQueue相同,按攝像機從前到后渲染。
半透明隊列(RenderQueue > 2500) RenderQueue相同,按攝像機從后到前渲染。
3.CPU打包數據傳GPU
SetPass Call:設置渲染狀態(讓GPU知道使用哪個shader,混合模式,背面剔除等)
Draw Call:讓GPU知道使用哪個模型數據
頂點shader最基本要完成:將頂點坐標轉換到裁剪空間(2x2x1的長方體cvv),投影成像。
片段shader:輸出顏色值
GPU階段:
背面剔除階段:三角形的索引順序是順時針就是背面。逆時針是正面。
4.片元shader
紋理技術:
? 1.紋理采樣,紋理在計算機中就是數組的形式。eg:(紋理坐標u,v) = (0.5,0.5),那對應32x32的紋理就是:x = 32 * 0.5,y = 32*0.5(真實不是這樣,簡單這樣理解)。紋理坐標是在建模軟件中展uv得到。
當x = 0.4*32時就是12.8 如果采用4舍5入就可能會產生失真(明顯鋸齒狀)解決看下方紋理過濾機制。
? 2.紋理過濾機制:在Unity中Point就是4舍5入的方式,雙線性插值,三線性插值。
??? 3.Mipmap:勾選即可Generate Mip Maps就可。
?? 4.紋理尋址模式
?? 5.紋理壓縮格式
光照計算
光照分析:直接光漫反射(eg:phong光照模型)+直接光鏡面反射(eg:GGX高光方程)+間接光漫反射(eg:球諧SH)+間接光鏡面反射(eg:反射球,ibl技術)+More(更多的光照技術eg:環境遮擋AO,SSR屏幕空間反射,SSS次表面散射)。
?
5.輸出合并
處理遮擋關系,處理半透明混合。Unity中有Z-Buffer和color-Buffer,Zwrite關閉了深度寫入的物體不會被寫入到Z-buffer中,但會被寫入到color-Buffer中。
提前深度測試:Early-Z,在頂點著色器后發生。(是否支持與硬件有關)
混合:從后到前,關閉Zwrite。控制公式:
?
?
總結
以上是生活随笔為你收集整理的Unity渲染管线详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 出差CVTE
- 下一篇: 这三个Offer,你怎么选?