three
Version:
JavaScript 3D library
37 lines (20 loc) • 705 B
JavaScript
export default /* glsl */`
vec3 transformedNormal = objectNormal;
// this is in lieu of a per-instance normal-matrix
// shear transforms in the instance matrix are not supported
mat3 m = mat3( instanceMatrix );
transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );
transformedNormal = m * transformedNormal;
transformedNormal = normalMatrix * transformedNormal;
transformedNormal = - transformedNormal;
vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;
transformedTangent = - transformedTangent;
`;