JS matrices
// local transform (object space)
// composed from position / rotation / scale
// object.updateMatrix() must be called for this to be correct
object.matrix
// global transform (world space)
// scene graph must be updated for this to be correct
// scene.updateMatrixWorld()
object.matrixWorld
// just rotation part of global transform,
// computed on demand in Ray / Projector
// otherwise not used
object.matrixRotationWorld
Positions in JS
localPosition = object.position;
worldPosition = object.matrixWorld.getPosition();
JS matrices => GLSL uniforms
object.matrixWorld => objectMatrix // till r49
object.matrixWorld => modelMatrix // since r50
camera.projectionMatrix => projectionMatrix
camera.matrixWorldInverse => viewMatrix
camera.matrixWorldInverse * object.matrixWorld => modelViewMatrix
JS buffer => GLSL attribute
geometry.vertices[ i ].position => position
GLSL full transform
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
Alternatively
gl_Position = projectionMatrix * viewMatrix * objectMatrix * vec4( position, 1.0 ); // till r49
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4( position, 1.0 ); // since r50