When working with generated texture coordinates I see sometimes the Texture Coordinate (generated) and sometimes the Geometry (Position) node used. What is exactly the difference ?
The Generated and Position outputs each represent coordinate systems. These are often used as texture coordinates for procedural textures since they are 3-dimensional, though they can be useful for other effects as well.
Generated Texture Coordinates
Generated coordinates are defined by the bounding box of an object, and are unique to each object.
Generated texture coordinates give the bounding-box-space position across the mesh. The bottom, left, front of the bounding box is the origin (coordinates
[0, 0, 0]), and the top, right, back of the bounding box is
[1, 1, 1].
I use generated coordinates when I need the texturing to transform, particularly rotate, with the object. However when the bounding box is significantly non-cuboidal generated textures will stretch and distort the texturing. In these cases you may need to manually "un-stretch" the texture with a mapping node, or use Position coordinates.
Generated coordinates can also be useful for non-texturing methods, like creating gradients or other more advanced techniques.
The Geometry > Position output gives the position in world-space across the object. The origin (
[0, 0, 0]) is the world origin and all other points are simply their respective position in Blender Units relative to the origin.
I like to use Position coordinates to keep uniform texture scaling across with a material assigned to multiple objects with different sized bounding boxes. Using Position coordinates also prevents distorted stretching on objects with significantly non-cuboidal bounding boxes.