发送到顶点着色器和片元着色器的GLSL程序的构造函数, 包含默认的变量(uniforms)和属性
// = object.matrixWorld
uniform mat4 modelMatrix;
// = camera.matrixWorldInverse * object.matrixWorld
uniform mat4 modelViewMatrix;
// = camera.projectionMatrix
uniform mat4 projectionMatrix;
// = camera.matrixWorldInverse
uniform mat4 viewMatrix;
// = inverse transpose of modelViewMatrix
uniform mat3 normalMatrix;
// = camera position in world space
uniform vec3 cameraPosition;
// default vertex attributes provided by Geometry and BufferGeometry
attribute vec3 position;
attribute vec3 normal;
attribute vec2 uv;
注意,可以通过以下方式计算顶点着色器中顶点的位置:
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
或者也可以这样:
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.0);
#ifdef USE_COLOR
// vertex color attribute
attribute vec3 color;
#endif
#ifdef USE_MORPHTARGETS
attribute vec3 morphTarget0;
attribute vec3 morphTarget1;
attribute vec3 morphTarget2;
attribute vec3 morphTarget3;
#ifdef USE_MORPHNORMALS
attribute vec3 morphNormal0;
attribute vec3 morphNormal1;
attribute vec3 morphNormal2;
attribute vec3 morphNormal3;
#else
attribute vec3 morphTarget4;
attribute vec3 morphTarget5;
attribute vec3 morphTarget6;
attribute vec3 morphTarget7;
#endif
#endif
#ifdef USE_SKINNING
attribute vec4 skinIndex;
attribute vec4 skinWeight;
#endif
uniform mat4 viewMatrix;
uniform vec3 cameraPosition;
参数详见WebGLRenderer.
The name of the respective shader program.
The identifier of this instance.
This key enables the reusability of a single WebGLProgram for different materials.
How many times this instance is used for rendering render items.
The actual shader program.
An instance of WebGLShader representing the vertex shader.
An instance of WebGLShader representing the frament shader.
返回所有活动态的变量(uniform)位置的name-value映射
返回所有活动态的顶点属性位置的name-value映射
Destroys an instance of WebGLProgram.
src/renderers/webgl/WebGLProgram.js