@threlte/extras
Version:
Utilities, abstractions and plugins for your Threlte apps
33 lines (26 loc) • 940 B
JavaScript
export const vertexShader = `uniform mat4 viewMatrixInverse;
varying vec3 vWorldPosition;
varying vec3 vNormal;
varying mat4 vModelMatrixInverse;
varying vec3 vInstanceColor;
void main() {
vec4 transformedNormal = vec4(normal, 0.0);
vec4 transformedPosition = vec4(position, 1.0);
transformedNormal = instanceMatrix * transformedNormal;
transformedPosition = instanceMatrix * transformedPosition;
vModelMatrixInverse = inverse(modelMatrix * instanceMatrix);
vModelMatrixInverse = inverse(modelMatrix);
vInstanceColor = instanceColor.rgb;
vWorldPosition = (modelMatrix * transformedPosition).xyz;
vNormal = normalize((viewMatrixInverse * vec4(normalMatrix * transformedNormal.xyz, 0.0)).xyz);
gl_Position = projectionMatrix * viewMatrix * modelMatrix * transformedPosition;
}`;