When creating wood textures in Blender, I often use the Cycles 'Wave' procedural texture (the equivalent of the Blender-Internal 'Wood' texture). I can use it to create what appears to be very realistic wood grain.

However, I run into a problem whenever I'm modeling wood blocks with sharply cut edges. Real wood would have a different cross-sectional type of grain on each side, depending on how it was cut (for example, in the image below, one side would have a 'ring' structured texture, and the other two would each have a different 'band' texture). Moreover, if you look at any one of the individual dark bands, you'll see that they 'align' with each other across the three faces.

enter image description here

Is it possible to make three different procedural textures that align with each other in this way? If that isn't possible, is there any way to produce a similar effect using other techniques?

  • $\begingroup$ can you provide a sample picture of real wood which displays the output you are looking for? I don't understand "real wood would have a different cross-sectional type of grain on each side". The wave procedural texture is very much like real wood grain, it just lacks the "knots" often present in real wood. To control the grain, you need to control the direction of the wave. $\endgroup$ Commented Apr 20, 2017 at 15:07
  • $\begingroup$ thank you very much ! it helps a lot $\endgroup$
    – Alexandre
    Commented May 3, 2019 at 9:43

3 Answers 3


A very flexible way to make the texture is to make it from scratch with the nodes, not relying on the built-in, a bit limited wave texture. Using some math nodes and adjusting the value results in a pretty nice wood texture.

Result of node material

The core of the material

Here the two vector inputs define a line that passes through both (the core of the three), and the distance from that to the object surface is calculated inside the distance node.

Inside the distance group

The surface positions are distorted a bit by adding a bit of noise to them, the distance calculation is done per the equation here.

Using modulo makes the distance from the surface to the line a looping range of values from 0 to the distance between the waves in the wood. Multiplying that by the inverse of the distance brings the range to 0 - 1, which can then be mapped into a nice gradient using a map range node. That can be used to multiply or mix the color value to achieve the final result.

See also:

  • 1
    $\begingroup$ In order to make this practically useful, this needs to be changed to use object-space positions to define the core line, so the wood-core-lines don't move around when the object is translated or rotated. This can be done by computing the distance to "texture coordinate->object" instead of geometry->position $\endgroup$ Commented Apr 24, 2017 at 5:59

If you can use generated coordinates, there shouldn't be a need for multiple textures. Just adjust the mapping to place and distort the grain to your liking.

Example cube and node setup


I know this is an old question, but it's very simple to solve. The wave texture is taking an input vector that uses all three axes (X, Y, and Z). A sphere is basically x, y, and z, equally in all directions. If you eliminate the Z axis, it becomes a cylinder because it's just x and y along a constant z. If that doesn't make sense, here's a super simple node network that just removes Z, and you'll see it gets you on your way to what you want.

super simple wood

Play with the colors and distortion values, as well as the scaling coordinates, and you should arrive at a decent basic wood.

You probably want to use Object coordinates rather than Generated, because Object coordinates make the shader as if your objects are carved from a solid piece. Generated coordinates are like painting on the surface.

If you want to dive into an advanced network of nodes for wood, I have several blog posts that go into great detail of how I create a realistic wood shader: my blog


You must log in to answer this question.

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