>>2884989>Normals output can be edited, but it'd be regular HLSL code, nothing MMM-specific.The point is that what you provide to the skinning functions is the original model data: vertex positions and normal directions. HLSL has a 'tangent' semantic, analogous to the 'normal' semantic that MME supports, but I don't think MMD would provide data to a shader using that semantic even if a model had tangent data. That might be up to the PMX format.
But even if the PMX model can't store tangent data specifically, it can store other arbitrary data: AutoLuminous does this with a complex process of decoding the stored data (storing different types of data in different digits) for later interpretation. So a model could theoretically store tangent data the same way, to be decoded by MMM and skinned the same way as normals.
And even if a model doesn't have this, you can still use somewhat arbitrary tangents, that can make sense due to how the model looks in the original A-pose. Like, draw a line from top of the head down towards feet, and make all tangent vectors coplanar with this line.
You can still sort of do this in the pixel shader, but it's not consistent: even if an arm sleeve goes from pointing downwards to pointing sideways, the tangent vectors just point up all the time, so they're not consistent on the surface as it moves.
Image: showing effects of tangent vectors that don't get interpolated from vertex shader. Bottom two are the [-1,1] tangent vectors compressed to [0,1] rgb space. The main point is they aren't smooth. If they were interpolated from pixel shader, like the normals at mid-right, their values would be almost the same on all sides of a vertex, and consequently on both sides of a face's edge. Instead they change suddenly at those edges. This represents a rotation around the normal, which still changes smoothly.
In the top images, you can see how these sudden rotations are visible with a satin shader.