颜辉 2019-06-28
很多时候如果想写一些特效,往往需要编写着色器代码GLSL,如果你不熟悉着色器语言,自然需要学习着色器语言语法,如果你有着色器语言基础,直接使用Threejs引擎的ShaderMaterial或RawShaderMaterial API编写就可以。相比较在原生WebGL代码中编写着色器要方便的多,在threejs中想着色器传递数据不需要像WebGL中要使用WebGL API来传递,threejs会自动帮你处理。
关注郭隆邦技术博客,有很多关于webgl的知识和书籍资料。
threejs所谓的材质对象Material本质上就是着色器代码和需要传递的uniform数据(光源、颜色、矩阵...)。
很多时候如果想写一些特效,往往需要编写着色器代码GLSL,如果你不熟悉着色器语言,自然需要学习着色器语言语法,如果你有着色器语言基础,直接使用Threejs引擎的ShaderMaterial或RawShaderMaterial API编写就可以。相比较在原生WebGL代码中编写着色器要方便的多,在threejs中想着色器传递数据不需要像WebGL中要使用WebGL API来传递,threejs会自动帮你处理。
和原生WebGL中一样,顶点着色器、片元着色器代码基本没有任何区别,
不过顶点数据和uniform数据可以通过threejs的API快速传递,要比使用WebGL原生的API与着色器变量绑定要方便得多。
ShaderMaterial比RawShaderMaterial更方便些,着色器中的很多变量不用声明,threejs系统会自动帮你设置,比如顶点坐标变量、投影矩阵、视图矩阵...