Blender's description of Faceforward function is, quoted from Blender's document:
Orients a vector A to point away from a surface B as defined by its normal C. Computes (Dot(B,C)<0)?A:-A
I have a few questions regarding this description.
1.. A Dot Product between a surface (B) and a vector (C)? Is this Mathematically correct? As far as I know, there's no concept of Dot Product between a surface and a vector.
2.. This is the Faceforward node, why is B here defined as "incident (vector)" whereas it was defined as a "surface" in the document? So what actually is it, a surface or a vector?
3.. Why did the developers name the normal vector as "Reference"? Why didn't they just name it "normal"?
4.. Assuming B does act as surface according to the document, what controls the orientation of the surface then? Surface B or normal vector C?
5.. “Orients a vector A to point away from a surface B as defined by its normal C” - Is the function’s job really just to make A points away from the surface? Because it does make vector A points into the surface too.
(Dot(B,C)<0) ? A : -A means:
-- If B points inwards (i.e. B•C < 0), keep A that way (even if A pointed inwards or outwards, doesn’t care, keep it that way).
-- If B points outwards (i.e. B•C > 0), flip A (if A pointed inwards, flip it to point outwards and vice versa).
So does Faceforward’s job really to only make A points outwards?
Thank you. Any help is appreciated!