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