three
Version:
JavaScript 3D library
77 lines (45 loc) • 1.34 kB
JavaScript
export default /* glsl */`
float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
vec3 fdx = dFdx( vViewPosition );
vec3 fdy = dFdy( vViewPosition );
vec3 normal = normalize( cross( fdx, fdy ) );
vec3 normal = normalize( vNormal );
normal *= faceDirection;
mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );
mat3 tbn = getTangentFrame( - vViewPosition, normal,
vNormalMapUv
vClearcoatNormalMapUv
vUv
);
tbn[0] *= faceDirection;
tbn[1] *= faceDirection;
mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );
mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );
tbn2[0] *= faceDirection;
tbn2[1] *= faceDirection;
// non perturbed normal for clearcoat among others
vec3 nonPerturbedNormal = normal;
`;