如果是進行3d遊戲開 發的話,想必您對著兩個詞不會陌生。Shader(著色器)實際上就是一小段程式,它負責將輸入的Mesh(網格)以指定的方式和輸入的貼圖或者顏色等組 合作用,然後輸出。繪圖單元可以依據這個輸出來將影象繪製到螢幕上。輸入的貼圖或者顏色等,加上對應的Shader,以及對Shader的特定的引數設 置,將這些內容(Shader及輸入引數)打包儲存在一起,得到的就是一個Material(材質)。之後,我們便可以將材質賦予合適的 renderer(渲染器)來進行渲染(輸出)了。
所以說Shader並沒有什麼特別神奇的,它只是一段規定好輸入(顏色,貼圖等)和輸出(渲染器能夠讀懂的點和顏色的對應關係)的程式。而Shader開發者要做的就是根據輸入,進行計算變換,產生輸出而已。
Shader大體上可以分為兩類,簡單來說
表面著色器(Surface Shader) - 為你做了大部分的工作,只需要簡單的技巧即可實現很多不錯的效果。類比卡片機,上手以後不太需要很多努力就能拍出不錯的效果。
片段著色器(Fragment Shader) - 可以做的事情更多,但是也比較難寫。使用片段著色器的主要目的是可以在比較低的層級上進行更復雜(或者針對目標裝置更高效)的開發。
如果是進行3d遊戲開 發的話,想必您對著兩個詞不會陌生。Shader(著色器)實際上就是一小段程式,它負責將輸入的Mesh(網格)以指定的方式和輸入的貼圖或者顏色等組 合作用,然後輸出。繪圖單元可以依據這個輸出來將影象繪製到螢幕上。輸入的貼圖或者顏色等,加上對應的Shader,以及對Shader的特定的引數設 置,將這些內容(Shader及輸入引數)打包儲存在一起,得到的就是一個Material(材質)。之後,我們便可以將材質賦予合適的 renderer(渲染器)來進行渲染(輸出)了。
所以說Shader並沒有什麼特別神奇的,它只是一段規定好輸入(顏色,貼圖等)和輸出(渲染器能夠讀懂的點和顏色的對應關係)的程式。而Shader開發者要做的就是根據輸入,進行計算變換,產生輸出而已。
Shader大體上可以分為兩類,簡單來說
表面著色器(Surface Shader) - 為你做了大部分的工作,只需要簡單的技巧即可實現很多不錯的效果。類比卡片機,上手以後不太需要很多努力就能拍出不錯的效果。
片段著色器(Fragment Shader) - 可以做的事情更多,但是也比較難寫。使用片段著色器的主要目的是可以在比較低的層級上進行更復雜(或者針對目標裝置更高效)的開發。