# How to make a spherical gradient texture "concave"?

I have a spherical gradient texture in one of my materials, and I would like to make it concave, kinda like a banana or boomerang shape:

However, I couldn't find a solution, the vector curves node doesn't allow for this:

Volumetrics:

The result I'd like to reach is a sort of upside down bowl shape. Currently the shape in 3D space looks like this:

But that's kinda hard to see, so here it is in mesh form, it's like a disk with 2 opposite points on its circumference pushed down:

This is the shape I'd like to get:

See the difference between them for more clarity:

Updated .blend:

• Do you want a hard cut-off as in your geometric illustrations, or a fuzzy one? Aug 19, 2021 at 18:38
• A fuzzy one, it's needed for combining it with other procedural textures.
– Geri
Aug 19, 2021 at 18:44

You could 'model' your bowl as the difference between two spheres:

The origins and Z-scale of the spheres can be adjusted to make them more or less ellipsoid, and cut into one another at different levels. This is what the internal Mapping nodes do. The Less Than and Greater Than nodes determine the overall diameter of the spheres. The whole lot can be shifted and/or scaled using the Mapping node before those groups. It's just for convenience.

This is the result:

To soften this, you would swap out the Less Than and Greater Than nodes for a Range Mapping of the absolute difference between the Lengths and the current Threshold values, to a range from 0 to 1, clamped.

To make a fuzzy version, use Map Range nodes to make fuzzy spheres, and subtract one fuzzy sphere from the other fuzzy sphere.

It's harder to see that it's bowl-shaped.. but it is...

• It's got a bit late for me, here, to make the fuzzy version.. I'll get to it if you haven't. As I'm sure you've figured, it's pretty difficult to light / illustrate the soft version... Aug 19, 2021 at 20:56
• Great stuff! And very elegant as well. Thanks! And yeah I think I need help with the fuzzy version when you have time :)
– Geri
Aug 19, 2021 at 21:07
• @Geri.. see edit. Blend file replaced. Aug 20, 2021 at 7:38
• Perfect, thanks!
– Geri
Aug 20, 2021 at 8:44

Create a circle using gradient texture node set to spherical. Then, insert a sep xyz node. We need to make two lines. Equation of first line is y-x=0. Put it like this:

Now, create second line using equation y+x = 0 like this:

Make sure you do it the correct order otherwise it may be wrong.

Now, insert math node and set it to "smooth maximum". And insert both outputs of the lines to the smooth maximum like this:

Set the distance to 0.6:

Now, add another math node and set it to smooth minimum. Then connect the output of the gradient texture node to the first socket and the smooth maximum node output to the second socket. Then after the smooth minium , add a map range node and just set it to smoother step for smooth gradient.

End result after tweaking things:

Please see the blend file attached. I have marked the tweaks I did in blue color. Thanks!

• Awesome! This is exactly what I wanted and it has all the controls to fine-tune its shape to my exact needs. Thanks a lot! (not gonna mark as answer just yet, curious to see if there'll be other answers, but this is already perfect)
– Geri
Aug 19, 2021 at 12:29
• No problem dude! Thanks for such kind words! You are an awesome guy Aug 19, 2021 at 12:47
• Well, I've been trying to implement it to my material, but I've seem to have run into a bit of an issue. See, I actually wanted this as a 3D volumetric material, as a sort of upside-down bowl. But I've been struggling with it. Can you also help with that?
– Geri
Aug 19, 2021 at 14:25
• I haven't played with volumes so I don't think I can help with that but I will try and let you know ok Aug 19, 2021 at 15:43
• Are you talking about displacement? I am very familiar with displacement Aug 19, 2021 at 15:46

Well, I kinda found a solution:

Iterated on @Kifayat's node tree, but it's really messy now, and not very elegant.