Fixing anisotropy artifacts in Redshift
If your material uses anisotropy, then a surface direction must be defined to control the direction of the “smearing.” By default, the renderer calculates everything internally, computing the surface tangent based on the UV direction. However, if the UVs are not clean, the anisotropy direction may vary across seams, causing visual artifacts.
In theory, you can manually define the surface direction using the Anisotropy parameters in the Advanced tab of the Standard Material. But in my experiments, these parameters had no effect at all. No matter what data I fed into the specified attributes, nothing changed. I even dug up some old documentation stating that Redshift reads both tangentu
and tangentv
attributes as a single tangent
attribute, and that you’re supposed to reference it via the Tangent Channel parameter but that didn’t work for me either. If this does work for someone, please leave a comment, maybe I missed something.
Apparently, Redshift simply reads the tangentu
and tangentv
attributes from the geometry to determine the anisotropy direction. If you compute those tangents manually, based on some reference vector, the anisotropy will align nicely with the surface. That’s exactly how I fixed the issues with the beetle shell material.
You can calculate tangents using Point Wrangle
vector general_dir = set(0,0,1); // general direction of the surface, ref vector vector side_dir = cross(v@N, general_dir); if (length(side_dir) < 1e-6) { general_dir = set(0, -1, 0); // fallback if normal aligns with ref vector side_dir = cross(v@N, general_dir); } vector tangentv = normalize(cross(side_dir, v@N)); v@tangentv = tangentv; v@tangentu = normalize(cross(tangentv, v@N));