WebGLProgram

Constructor for the GLSL program sent to vertex and fragment shaders, including default uniforms and attributes.

Built-in uniforms and attributes

Vertex shader (unconditional):

// = 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 BufferGeometry

attribute vec3 position;

attribute vec3 normal;

attribute vec2 uv;

Note that you can therefore calculate the position of a vertex in the vertex shader by:

gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );

or alternatively

gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4( position, 1.0 );

Vertex shader (conditional):

#ifdef USE_TANGENT

attribute vec4 tangent;

#endif

#if defined( USE_COLOR_ALPHA )

// vertex color attribute with alpha

attribute vec4 color;

#elif defined( 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

#ifdef USE_INSTANCING

// Note that modelViewMatrix is not set when rendering an instanced model,

// but can be calculated from viewMatrix * modelMatrix.

//

// Basic Usage:

// gl_Position = projectionMatrix * viewMatrix * modelMatrix * instanceMatrix * vec4(position, 1.0);

attribute mat4 instanceMatrix;

#endif

Fragment shader:

uniform mat4 viewMatrix;

uniform vec3 cameraPosition;

Constructor

WebGLProgram( renderer : WebGLRenderer, cacheKey : String, parameters : Object )

For parameters see WebGLRenderer.

Properties

.name : String

The name of the respective shader program.

.id : String

The identifier of this instance.

.cacheKey : String

This key enables the reusability of a single WebGLProgram for different materials.

.usedTimes : Integer

How many times this instance is used for rendering render items.

.program : Object

The actual shader program.

.vertexShader : WebGLShader

The vertex shader.

.fragmentShader : WebGLShader

The fragment shader.

Methods

.getUniforms () : Object

Returns a name-value mapping of all active uniform locations.

.getAttributes () : Object

Returns a name-value mapping of all active vertex attribute locations.

.destroy () : undefined

Destroys an instance of WebGLProgram.

Leave a comment

Your email address will not be published. Required fields are marked *