GPU流水線
- CPU將數(shù)據(jù)(紋理、網(wǎng)格等)從硬盤加載到內(nèi)存弃衍,然后再?gòu)膬?nèi)存加載到顯存盲厌,因?yàn)轱@卡對(duì)于顯存的訪問(wèn)速度更快,而且大多數(shù)顯卡對(duì)于內(nèi)存沒有直接的訪問(wèn)權(quán)限
-
準(zhǔn)備好之后臭脓,CPU調(diào)用DrawCall渲染命令開始進(jìn)行GPU流水線渲染
- 幾何階段:
- 頂點(diǎn)著色器:完全可編程酗钞,頂點(diǎn)空間變換、著色来累、逐頂點(diǎn)光照
- 曲面細(xì)分著色器:可選著色器砚作,細(xì)分圖元
- 幾何著色器:可選著色器,逐圖元著色
- 裁剪:可配置嘹锁,自定義裁剪區(qū)域葫录、控制裁剪正面還是背面等,不在攝像機(jī)視野范圍內(nèi)不需要處理
- 屏幕映射:不可领猾,把圖元坐標(biāo)轉(zhuǎn)換到屏幕坐標(biāo)系米同,對(duì)于OpenGL和DirectX對(duì)應(yīng)的坐標(biāo)系就不相同了
- 光柵化階段:
- 三角形設(shè)置:繪制出三角形三條邊
- 三角形遍歷:三角形圖形
- 片元著色器:完全可編程,逐片元著色
- 逐片元操作:可配置摔竿,修改顏色面粮,深度緩沖,混合等
Unity Shader
- 四種模版
- Standard Surface Shader:包含標(biāo)準(zhǔn)光照模型 表面著色器
- Unlit Shader:不包含光照(包含煙霧)頂點(diǎn)片元著色器
- Image Effect Shader:處理屏幕后處理效果
- Compute Shader:…(少用)
語(yǔ)法
-
Properties
類型 語(yǔ)法 例子 Int n _Int(“Int”,Int)=2 Float n _Float(“Float”,Float)=1.5 Range(min,max) n _Range(“Range”,Range(0.0,5.5))=3.0 Color (n,n,n,n) _Color(“Color”,Color)=(1,1,1,1) Vector (n,n,n,n) _Vector(“Vector”,Vector)=(2,3,4,5) 2D “defaulttexture”{} _2D(“2D”,2D)=“”{} Cube “defaulttexture”{} _Cube(“Cube”,Cube)=“white”{} 3D “defaulttexture”{} _3D(“3D”,3D)=“black”{} -
SubShader
每個(gè)UnityShader可包含多個(gè)SubShader語(yǔ)義塊继低,不支持就Fallback熬苍。
每個(gè)Pass都是一次完整的渲染流程,但是過(guò)多的Pass會(huì)造成渲染性能下降
狀態(tài)和標(biāo)簽同樣可以在Pass中設(shè)置袁翁,但是SubShader中一些標(biāo)簽設(shè)置是特定的柴底,和在Pass中使用不一樣婿脸,SubShader的設(shè)置會(huì)作用于所有Pass
SubShader{ [Tags] [RenderSetup] Pass{ } //other Passes }
-
狀態(tài)設(shè)置:
狀態(tài)指令可以設(shè)置顯卡的各種狀態(tài),例如是否開啟混合似枕,深度測(cè)試等