@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
29 lines (27 loc) • 615 B
JavaScript
var TBNObjectSpacePS = `
void getTBN(vec3 tangent, vec3 binormal, vec3 normal) {
vec3 B = cross(normal, vObjectSpaceUpW);
vec3 T = cross(normal, B);
if (dot(B,B)==0.0)
{
float major=max(max(normal.x, normal.y), normal.z);
if (normal.x == major)
{
B=cross(normal, vec3(0,1,0));
T=cross(normal, B);
}
else if (normal.y == major)
{
B=cross(normal, vec3(0,0,1));
T=cross(normal, B);
}
else if (normal.z == major)
{
B=cross(normal, vec3(1,0,0));
T=cross(normal, B);
}
}
dTBN = mat3(normalize(T), normalize(B), normalize(normal));
}
`;
export { TBNObjectSpacePS as default };