Archived post by mattiasmalmer

“` void branchlessONB(vector n; vector b1; vector b2) { float sign =sign(n.z); float a = -1.0f / (sign + n.z); float b = n.x * n.y * a; b1 = set(1.0f + sign * n.x * n.x * a, sign * b, -sign * n.x); b2 = set(b, sign + n.y * n.y * a, -n.y); }
vector tangentu; vector tangentv;
branchlessONB(v@N,tangentu,tangentv);
v@tangentu=tangentu; v@tangentv=tangentv;
“`