Smoothing Waffle Voronoi Boundary/Corners

Happy weekend, Hoping someone can help me with some texturing:

I’m trying to create a procedural ‘waffle’ texture.
The best solution I have found is to use Voronoi Chebychev with 0 randomness fed into displacement.
It is almost perfect, however the result has very sharp edges.

By feeding the texture through a eased colour ramp and/or using the brightness/contrast node I am able to somewhat smooth the high and low peaks, however the corners remain sharp.

I’ve tried using the blurring technique, however it completely destroys the actual shading.

I think what I am trying to do is spread out the corner of the gradient as circled below.


Here’s the node set up and .blend:

Procedural Waffle.blend (1.1 MB)

Any help or ideas would be great!


Sorry, I cannot show now.

Well, the problem with voronoi (and brick texture by the way) is that it keeps pointy edges, but the upward falloff you can control somewhat.

Try using an RGB curves node and lift the curve middle up to make a slope. That slope would be your black to white shape.

Also, as an extra, you may add these before that:

Colour burn, B slot set to black, and run it into a colour dodge, B slot set to white. First one controls black amount (“mortar”), white controls the top, so the width of the falloff.

1 Like

In this case, you need to obtain the distance to the edges of the cell and smooth those out.

As the voronoi node does not allow you to do this, I’d compute the distance to some square cells manually, and use the “smooth minimum” operation to smooth out the transition. The smoother step map range is used for the transition from the outside to the inside of the cells:

waffle.blend (104.0 KB)

Edit: with displacement instead of bump:


Wow I would never have got there! Thanks so much!
How would you go about controlling the ‘bevel’ on the top and bottom of the waffle with that solution?

I can see the map range interpellation is what effects it, but is this slider controllable at all?

Found a way by playing with brightness/contrast and another smooth minimum.

If you have a better way please let me know but this is good enough for my needs.

Thanks again!

1 Like

That is a pretty good way!

If you want complete control you can implement something like this:

  1. use a linear map range node without clamp to define the steepness and offset (separation between the bumps) of the slopes
  2. use a smooth minimum with comparison value 1.0 for the top bevel
  3. use a smooth maximum with comparison value 0.0 for the bottom bevel

Even better!
Not sure why it works but it does, thanks a lot for the help!

1 Like