Three.js着色器
很多時候如果想寫一些特效,往往需要編寫着色器代碼GLSL,如果你不熟悉着色器語言,自然需要學習着色器語言語法,如果你有着色器語言基礎,直接使用Threejs引擎的ShaderMaterial或RawShaderMaterial API編寫就可以。相比較在原生WebGL代碼中編寫着色器要方便的多,在threejs中想着色器傳遞數據不需要像WebGL中要使用WebGL API來傳遞,threejs會自動幫你處理。
學習基礎
- 具備基本WebGL和着色器語言知識,不一定要深入學習。
- 基本Threejs基礎。
- 如果有圖形學基礎更好,沒有也沒關係,可以慢慢學習。
WebGL入門
關注郭隆邦技術博客,有很多關於webgl的知識和書籍資料。
- 郭隆邦技術博客提供的webgl視頻教程
- 《WebGL編程指南》,適合入門的書籍
- 《交互式計算機圖形學》源碼也是WebGL,相比較《WebGL編程指南》圖形學算法內容更多,內容更詳實,適合深入學習。
Three.js着色器API
threejs所謂的材質對象Material本質上就是着色器代碼和需要傳遞的uniform數據(光源、顏色、矩陣…)。
很多時候如果想寫一些特效,往往需要編寫着色器代碼GLSL,如果你不熟悉着色器語言,自然需要學習着色器語言語法,如果你有着色器語言基礎,直接使用Threejs引擎的ShaderMaterial或RawShaderMaterial API編寫就可以。相比較在原生WebGL代碼中編寫着色器要方便的多,在threejs中想着色器傳遞數據不需要像WebGL中要使用WebGL API來傳遞,threejs會自動幫你處理。
RawShaderMaterial
和原生WebGL中一樣,頂點着色器、片元着色器代碼基本沒有任何區別,
不過頂點數據和uniform數據可以通過threejs的API快速傳遞,要比使用WebGL原生的API與着色器變量綁定要方便得多。
ShaderMaterial
ShaderMaterial比RawShaderMaterial更方便些,着色器中的很多變量不用聲明,threejs系統會自動幫你設置,比如頂點座標變量、投影矩陣、視圖矩陣…