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.


2 Answers 2


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?"

Camera ray being cast at a cube

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.

Voronoi texture displayed on a plane and as a cube volume.

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.

Coordinate Spaces visualized ignoring depth

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:

Enter image description here

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.

  • $\begingroup$ Excuse me, mister. Could you please help me with this question? blender.stackexchange.com/questions/300633/… Thank you so much! $\endgroup$
    – Orange Cat
    Commented Sep 6, 2023 at 23:33
  • $\begingroup$ Hello, @IanAmbrose. I think it turns out that (IMO) Nathan has answered it very well, since this request! If his answer doesn't quite do it for you, i'd recommend a diplomatic nudge to clarification, over there :D $\endgroup$
    – Robin Betts
    Commented Sep 7, 2023 at 7:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .