What is the difference between “Generated” and “Normal” texture coordinates?

I cannot understand from the documentation the difference in the Texture Coordinate node (in Shader) between Generated and Normal, and even the purpose of the Texture Coordinate node itself, which I have as the first node.

• you could try daniel kraffts video (on youtube) titled "all material nodes in blender explained" – Isaiah Haveman Nov 19 '20 at 16:21
• Have a look at this presentation by Bartek Skorupa on texture coordinates.It is a bit long, but a lot of good information in the talk. – Timaroberts Nov 19 '20 at 16:28
• – susu Nov 19 '20 at 16:40
• And 2 English sentences, one for Generated and one for Normal could be given ? – user3357120 Nov 19 '20 at 18:21
• you can start here: docs.blender.org/manual/en/latest/render/shader_nodes/input/… – susu Nov 19 '20 at 19:48

It may help to visualize it this way:

When we render a scene, for each pixel on the camera we project a ray, and if we make contact with the surface of an object, we ask "What is the color that should be reported for this pixel given material properties, lighting, occlusion etc?"

This is fairly simple when the material is a solid color, but what about materials that vary?

A procedural material can be thought of as a "field" in the physics sense, it exists and has a value in every position in your scene. When you map this texture to an object and look at it in the viewport you are displaying the cross section of this field that coincides with the surface of your object.

The Texture Coordinate node merely defines the X,Y,Z coordinate space used to map the texture. Object coordinates, for example, use Blender's scale setting and set the object's origin as 0,0,0. Generated coordinates use the object's bounding box as the coordinate space over a range of 0,0,0 to 1,1,1.

Normal coordinates are a little strange. My current understanding is that they are less based on position, and more on the rotation of each individual face (more specifically the normal direction). Maybe someone will expand on how this may be useful for you, my knowledge is limited on this one.

Just to expand a bit on Allen Simpson's fine answer:

Generated coordinates return the location of the currently evaluated shading-point, say, P, calculated in the 'Generated' texture space, which, whatever the size of the shaded object, measures 0-1 along the sides of its bounding box, with its origin at the minimum. The bounding box is parallel to the object's local axes, (which may be skew to the mesh, if you rotated the mesh in Edit Mode).

(This is a default; the 'Generated' space actually can be scaled and shifted in the Texture Space panel of the object's Data tab.. but I think that's a bit of a legacy?)

Two of the outputs of the Texture Coordinate node, Normal and Reflection, don't return the location of P; they return directions from P: locations on the unit sphere centred on P.

Normal in the Texture Coordinate node returns the vector from P, in the direction of the interpolated (after smoothing) normal of the surface, to the tip of the yellow arrow, 1 Blender unit long. It's measured in Object Space: its X,Y and Z components are parallel to the Object's X,Y, and Z.

Normal in the Geometry node returns the same thing, but in World Space. The Reflected output returns the direction of the currently evaluated incoming ray, onward, after reflection from the surface at P. It is also measured along axes aligned with the World.