Unity -Shader精講(一)OpenGL,DirectX,CG選擇 着色器選擇

Unity 渲染需要兩個組件 Mesh Filter 和 Mesh Renderer

Mesh Filter : 存儲一個Mesh(網格,模型的網格,就是模型的由哪些三角面組成,組成一個什麼樣子的模型,三角面的一些頂點信息)

Mesh Renderer:用來渲染一個模型的外觀,就是樣子, 按照 mesh給它皮膚,給它顏色

通過Material(材質)控制模型渲染的樣子

Material(材質)簡單的理解爲 是由 貼圖+Shader組成的(貼圖可以沒有也可以是單純的顏色 但是Shader必須要有)

shader可以認爲是一種渲染命令 ,由opengl 或者dx進行解析,來控制渲染

CPU   <===應用程序(C#代碼由CPU計算   Shader調用opengl 或者DX)===> opengl 或者dx==>GPU 

DX 和OPengl 是敵對關係 兩者實現功能一樣都是用來進行圖像編程 其中DX在PC平臺用的多OPengl在移動平臺用的多

OpenGL 使用GLSL 編寫shader
DirectX 使用HSSL 編寫shader
英偉達 CG 編寫shader(跨平臺)

CG語言教程官網(初學者不推薦看)
http://http.developer.nvidia.com/CgTutorial/cg_tutorial_frontmatter.html

這裏推薦使用CG編寫shader 因爲他是跨平臺的 可以用OpenGL解析也可以使用DX解析

使用Unity也不會直接使用CG語言編寫 而是使用了Unity封裝好的 叫ShaderLab

ShaderLab 對這三種語言都做了封裝 通常使用CG來編寫Shader

Unity Shader的分類
使用的是ShaderLab編寫Unity中的Shader
1,表面着色器 Surface Shader(Unity獨有的 是對,頂點/片元着色器的一種封裝 封裝的還不全面肯會有一些功能無法實現 編寫起來或許會簡單點   運行時會被解析成頂點/片元着色器 )
2,頂點/片元着色器 Vertex/Fragment Shader(最基本的 編寫起來代碼可能會多一點 因爲是最基本的所以可以實現所有的效果 比如 表面着色器 無法實現的  頂點/片元着色器可以實現 )
3,固定函數着色器 Fixed Function Shader(現在已經被啓用了 在舊設備上使用)

總結:

如果遊戲場景燈光較多(比如三四個以上的時候)的話推薦使用 表面着色器 因爲它 幫我們處理好了許多光照的細節 我們不用挨個去處理每個光源了 反之 使用頂點/片元着色器 固定函數着色器在老設備上使用


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章