Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float3 d1 = v2 - v1;
- float3 d2 = v3 - v1;
- float2 st1 = w2 - w1;
- float2 st2 = w3 - w1;
- float r = 1.0F / (s1 * t2 - s2 * t1);
- Vector3D sdir((t2 * x1 - t1 * x2) * r, (t2 * y1 - t1 * y2) * r, (t2 * z1 - t1 * z2) * r);
- Vector3D tdir((s1 * x2 - s2 * x1) * r, (s1 * y2 - s2 * y1) * r, (s1 * z2 - s2 * z1) * r);
- t1[i1] = sdir;
- t1[i2] = sdir;
- t1[i3] = sdir;
- t2[i1] = tdir;
- t2[i2] = tdir;
- t2[i3] = tdir;
- // Gram-Schmidt orthogonalize
- tangent = normalize(t1 - n * dot(n, t));
- // Calculate handedness
- tangent.w = (dot(cross(n, t), t2) < 0.0F) ? -1.0F : 1.0F;
Advertisement
Add Comment
Please, Sign In to add comment