Found the normal equation. Will need some transformations for rotation of thread. And I need to figure out how to put it into an OSL map with Vray. (Also thanks to Emanuele Lecchi for his off-the-forums help getting the alternative displacement map approach working pretty well.) Displacement kind of sort of usually works but falls apart at sub-sub-pixel levels. This should work perfectly infinitely close and infinitely far since it’s an implicit sampler.
x: (random pixel sample)
v: camera vector length in ‘thread space’.
For x[0,2] and v [-1,0]
((v^2-1)*x)-SQRT(v^2*x*(((v^2-1)*x)+(2*SQRT(1-v^2))))+SQRT(1-v^2)
Compared to ground truth render of macro-facets (image 2) test scene in vray:
Also left “to do” in addition to per-pixel orientation of the thread structure is to expose user-controlled thread spacing.

