material rotate position and normal

Then maybe I need two use two custom UVs (one for XY and one for Z and unused) since custom UV is Float2 while normal is Float3. In any case, doing the calculations per-vertex vs. per-pixel is a performance optimization.

My problem is that the functionality I implemented doesn’t work as expected. As seen in my first screen shot, I use RotateAboutWorldAxis_cheap on position and on normal, and I expected this to give me correct normals for lighting calculations. But the lighting looks broken.

To test how broken the lighting is, I hardcoded Base Color to white and I used the material editor’s preview with a sphere primitive. Since the light is fixed and both the position and normal are rotated the same, I expect the sphere’s color to look static. But it doesn’t. It looks like it’s rotating (or like the light is rotating about it).