This is a collection of powerful material functions, which can be used to create complex and highly adjustable materials for visual effects and user interfaces. It contains 45 material functions, all of which are completely based on mathematical operations, without the use of any textures.
10 utility functions
7 functions to transform UV coordinates
14 functions to create different shapes (3x polygon, 2x rays, 2x star, astroid, 2x spiral, 2x flower, heart, cannabis)
7 noise functions (different complexity and type)
3 utility noise functions (can be used with many different noises to create new patterns)
4 functions to create flares (based on different noise types)
A demonstration map shows what each material function does and how changing the parameters affects the result. For this purpose the project includes 85 master materials and 123 material instances.
The materials and material functions are commented and include descriptions for nodes and input and output pins.
Some additional information regarding the functions (especially on noise) can be found in the map as well. So this project can also act as a learning resource.
Advantages of procedurally generated shapes include:
Little disk space required, reducing download time of your project.
Almost no space in memory required.
Effects look sharp and clean, no matter how close you get or how big you scale them.
Parameters can be adjusted at runtime and animated frame-by-frame.
A huge number of variations can easily be generated.
Great material functions, great results, nothing more expensive (instruction wise) then it should be, versatile, and handy.
Great for stylized vfx, nice material effects, and a lot more.
I’ll be using this loads.
Thanks for all the nice comments. It’s really cool to see so many people interested in these functions. And huge thanks again to Luos for his feedback and support.
Well, to list a few numbers - These are the “Info Base pass shader without light map” instructions for an emissive unlit material:
Polygon_01: 70
Star_01: 80
Noise_02: 60
Flare_01: 76
Noise_02 is the simplest 2D value noise function and it’s used in the Flare_01 function, which you can see in all 6 examples in the first screenshot.
In comparison, the engine default noise node options with 1 level, without turbulence:
Simplex - texture based: 119
Gradient - texture based: 121
Fast Gradient - 3D texture (doesn’t work on mobile): 59
Gradient - Computational: 124
Value - Computational: 87
Voronoi: 198
Don’t take these numbers too literal though. Instruction count is more or less just an estimate of the true performance impact. The three texture based noise types from the engine node have obviously an additional texture lookup. When choosing multiple layers for noise, the instruction count doesn’t show increased numbers of the iterations. Different instructions have different cost. These are pixel shader instructions, so performance impact depends on how many pixels the material covers on your screen, etc.
Simply put, the performance cost of these functions is pretty low, unless you go overboard with noise with a high number of levels. I hope that answers your question.
If you are really worried about the performance cost of noise, you can always just bake it out and use a noise texture instead of calculating it in the material (see https://www.unrealengine.com/blog/getting-the-most-out-of-noise-in-ue4). That has its own drawbacks though. I also want to point out that most functions in this pack have nothing to do with noise.
I’m happy to announce, the release date on the marketplace has been set to June 7th! I’ll put the pack on Gumroad a day or two in advance for those who can’t wait or prefer to download from an alternative platform.