Nodegroups to ship with Blender 2.8x

Funny - my setup also contained a value like this previously, but I removed it before posting it here. Since you also found it useful, I’ll just add it back in my original post. A simple power node Min:0.01 Max:10.0 should do.

I also initially went with a power-based approach but wasn’t happy with it for some reason. I can’t quite remember now why I didn’t like it, but I ended up going with an approach based on tan-1, which gives a slightly different behaviour I was more fond of.

That’s right, the behaviour I was expecting is that the value in the bias would be the ‘progress’ in the output range when the input was at 50%, and I wanted the range to go from 0 to 1 to be compatible with texturing this input too. I’ve found this a very pleasant falloff to work with for a variety of applications such as AO-based rust factors, cloud density factors and shader blending.

On another note, does anyone know of a way to create a checkbox input to a node-group? It would be great to be able to work with booleans in an easy way - I am aware you can work around this by having a 0-1 slider and using math nodes to make it exclusively 0 or 1, but having a checkbox in the UI would be nice (though this does mean you forfeit the ability to drive the input).

Sadly not possible currently. I would also like to like to have that feature. Enums would be great too, but I’m not sure in which way they should be exposed in the Group Input (inside the group).

I’ll look into your bias technique later. Having the range from 0 to 1 is a better idea.

1 Like

Glass Dispersion:

Compatibility: Cycles, Eevee
Category: Shader
Type: Nodegroup
Description: Simulates Dispersion in a glass shader.

glass_dispersion_group

Example:


.blend File

There are other, more advanced ways to fake dispersion in Cycles. I was not sure if that’d be overkill.
Fake caustics could also be integrated as a separate “Passthrough” node.

4 Likes

My “edgefinder” could be good to have as default. Works even on a simple cube.
image

6 Likes

image

2 Likes

it would be interesting if the guys of blender would create an archive folder in the datafile for this type of nodes, so that they appear automatically in the node menu …
@billrey

2 Likes

Good Idea, though in my opinion it could be simplyfied dramatically by not including the Musgrave texture. The same effect can be achieved by mixing it in before or after the Node. I cleaned it up a bit and instead added a Factor input that can be mapped and defaults to 0.5.
edge_detection_group

I think propper curvature is a planned feature for Cycles anyway - so it might get irrelevant in the future.
.blend File

4 Likes

The “Exposure” node group from this website could also pretty useful, there is no way to control exposure in the Blender compositor, I have to create this manually once and again.

Here is the picture:

And here is the blend file.

3 Likes

Great - no need to separate the channels though:


does the same thing

4 Likes

Great initiative. This will be useful when the Asset Manager ships. It makes obvious sense to include some useful node groups.

2 Likes

Terrain Mask

*UPDATE

Compability: Cycles, Eevee
Category: Shader
Type: Nodegroup
Description: Mixes Grass, Rock and Snow Shaders based on general terrain parameters like height and steepness.
terrain_mix_group


Example:

.blend File

Not sure if I’m breaking my own rule with this one. I think it’d be nice to have a standardized shader for mixing terrain shaders automatically. It’s still general in the way that the user needs to define his own Grass/Rock/Snow shaders and distortion maps.

1 Like

This could be verging on too specialised. That being said I have needed to create something similar before. What if I wanted to occlusion to play a part? Or wanted the south side to be more mossy, etc? I guess it could be used as a way to teach people how to work with normals.

1 Like

I’ll propose my physically based PBR shader ‘mix modes’ such as ‘fill’ and ‘erode’ later today. They use the height map of two materials along with the shader of those materials and blend them based on some rules about the two height maps, then outputs the mixed shader and new height map.

I have found this very helpful for layering PBR materials. You can easily ‘fill in’ the crevasses of a rock material with dirt or ‘hack away’ at a coated metal with deep scratches and gouges.

The one technical improvement which would help with the usefulness of this shader is being able to see real-time displacement changes on geometry. I expect there are some significant issues to address here though since I believe BVH has to be recalculated.

1 Like

Yeah you are right - I changed it to output the masks separately instead with an additional height gradient. This way the result is the same - the node setup afterwards gets a bit more complicated though. Now you can still access the masks after the nodegroup to add occlusion or whatever.
This example isn’t very realistic of course, but if you don’t just mix simple diffuse shaders with it, i think it could be helpful.
terrain_mask_group



.blend File

1 Like

I would find this version more versatile. I like it!

1 Like

I think with all of these it is important to apply some software design principles, since in reality they aren’t a whole lot different.

These node groups should favour composability over extensive settings. The unix philosophy of doing one thing and doing it well applies here.

While this isn’t a necessity, having defined interfaces can help with interoperability. Blends should be from 0 to 1, if there are distances or other standard measurements involved, they should be specified in SI units or the appropriate unit for the job.

Input and output node types should represent the data they carry, while (purple) vectors and (yellow) colours can be used interchangably, I think these should have the correct type on the node group boundary for self-documentation. Values should not be stored in a colour, and you should not accept a colour then convert it to a value unless it is also being used as a colour.

Edit: @SimonStorl-Schulke I’m not talking about your node groups here, just as a general rule of thumb for future contributions from myself and others. Sorry, I forgot you have covered most of what I’ve pointed out at the top of the thread!

1 Like

Someone has written a nice addon to collect presets …
let’s start to collect many presets ^______^

2 Likes

Blender 2.8 - Procedural Fire In Under 9 Minutes by masterxeon1001