A bit of explanation about the SDF nodes:

**SDF primitives:**

This node contains a list of primitives and come in two flavours - 2D and 3D.

3D primitives include things like sphere, box, pyramid, torus, cone etc and aren’t all that dissimilar to the normal geometry primitives we use every day in modeller.

Similarly 2D primitives include things like circle, rectangle, triangle, hexagon, parabola, arc etc but also include some more obscure shapes such as star, moon, horseshoe.

The primitives have various parameters that let you tweak the shape and should be thought of as building blocks.

The primitives can be used to drive things like colour, emission, displacement or volumetric density in materials.

**SDF Operator:**

The SDF operator node includes mathematical and boolean functions that allows you to perform various operations on the inputs.

Some of these operations work off a single input, such as invert or flatten, whereas other operations work using two inputs such as add, subtract, multiple, boolean etc.

These operations when used with SDF primitives work in a similar manner to operations on geometry (e.g. you can boolean two SDF primitives together to say carve out a spherical indent in a cube).

**SDF Vector Operators:**

These operators can be used to modify vectors. They can be used to tile a shape (either infinitely or a set number of times). Repeat a pattern around a polar coordinate. Twist, skew, mirror etc.

All of these nodes work with existing procedural texture, converter, vector nodes etc - so for example you can tile a Musgrave texture or perform a boolean operation on two Voronoi textures. You can also combine regular procedural textures with SDF primitives (like Charlie’s example above, where Voronoi was used to erode the surface of SDF primitives to give a pitted appearance)