一般在游戲物體GameObject上面會有最為基本的組件MeshFilter以及MeshRender組件梯醒,MeshFilter主要用來存儲網(wǎng)格宽堆,就是模型由哪些三角面組成茸习,組成一個什么樣子的模型,三角面的一些頂點信息。
MeshRender用來渲染一個模型的外觀浸遗,按照Mesh給它皮膚嗡综、外觀,通過Material(材質(zhì))來控制模型渲染的樣子极景。
Material由貼圖(可以沒有,可以是一個單純的顏色)和Shader組成(由反光程度氢卡、光滑程度等構(gòu)成)。
Shader可以認為是一種渲染命令译秦,由OpenGL組成或DX進行解析击碗,來控制渲染豐富多彩的圖形。其中GLSLshader語言用于OpenGL,HLSLshader語言用于DirectX,而CG(NIVADA公司)是跨平臺的稍途,可以在這兩種平臺上運行。
Unity Shader的分類:1.表面著色器?Surface Shader (表面著色器相當(dāng)于頂點著色器的封裝)突勇;2.頂點/片元著色器 Vertex/Fragment Shader,頂點著色器比表面著色器會更強大一些坷虑;3.固定函數(shù)著色器Fixed Function Shader,現(xiàn)在已經(jīng)棄用甲馋。
我們在場景的模型有些時候會出現(xiàn)紫色的情況迄损,其實是Unity不知道如何對其進行渲染就會出現(xiàn)這樣一種狀態(tài)。
Shader的基本構(gòu)成
在上面Shader就相當(dāng)于C#里面的MonoBehaviour{}共屈;里面包含的有屬性Properties以及SubShader塊党窜,在SubShader塊中的Pass相當(dāng)于C#里一個個的方法借宵;子SubShader塊可以有很多個,用來控制效果,很多個是因為顯卡不同哼凯,功能強的顯卡用第一個SubShader,如果第一個SubShader里面的效果可以實現(xiàn),那么就使用第一個SubShader,如果顯卡這個SubShader里面的某些效果它實現(xiàn)不了断部,就會自動去運行下一個SubShader班缎。
FallBack用來指定一個存在的Shader,相當(dāng)于后備方案,前面的所有SubShader都實現(xiàn)不了就運行這個达址。