Website powered by

Universal Foliage Shader | Non-PivotPainter

A universal foliage shader I've been working on for Unreal Engine 4. The shader is designed to work with any foliage you've got lying around without any extra work, so there's no need for PivotPainter or Speedtree-based workflows. Plugging it into more or less any static mesh will yield good results, especially after minor tweaking.

Both the grass- and tree-material are largely math driven (grass samples a noise texture as well), and almost entirely parametric. Both are incredibly cheap, being around 150 instructions (deferred). I chose to implement these features with positional maths rather than textures to save on memory and texture-samplers, both of which tend to be in short supply during production.

All shaders shown here were created in UE4's material node networks, as the the relatively simple nature of the effects makes it somewhat pointless to divert to HLSL/GLSL/custom.

None of the models seen are made by me, I mainly deal with the technical side of art implementation.

Universal Wind Shader - Realistic Foliage Demonstration (Assets from NatureManufacture's Environment Pack)

Universal Wind Shader || A No-Strings-Attached Foliage Shader for Unreal Engine 4

This set of materials can handle pretty much any kind of foliage, without needing any special prep-work or workflow-changes.

This set of materials can handle pretty much any kind of foliage, without needing any special prep-work or workflow-changes.

The tree-shader is useable for anything large, and works very well for vines and regular trees. Some bushes are better handled by the grass-shader.

The tree-shader is useable for anything large, and works very well for vines and regular trees. Some bushes are better handled by the grass-shader.

Trees get brighter and more heavily affected by wind in the top. Their outer branches are also more affected by wind. Tree-wind is entirely driven by maths.

Trees get brighter and more heavily affected by wind in the top. Their outer branches are also more affected by wind. Tree-wind is entirely driven by maths.

The shader works well for various kinds of grass-like objects and can be UV- or position-based.

The shader works well for various kinds of grass-like objects and can be UV- or position-based.

Due to the parameter-based workflow, the grass material can also be effectively utilized for things like small plants and tall crops.

Due to the parameter-based workflow, the grass material can also be effectively utilized for things like small plants and tall crops.

Due to the nature of the grass-shader, it's also highly capable of working on high-complexity meshes and blending them into their low-res billboard counterparts. The difference between the two is barely noticeable.

Due to the nature of the grass-shader, it's also highly capable of working on high-complexity meshes and blending them into their low-res billboard counterparts. The difference between the two is barely noticeable.

It's also able to mimick terrain-highlights effectively, making it blend in perfectly with the terrain it's planted on.

It's also able to mimick terrain-highlights effectively, making it blend in perfectly with the terrain it's planted on.

A configurable noise-mask controls wind, with direction and strength controlled per material, making for consistent and visible wind across your worlds.

A configurable noise-mask controls wind, with direction and strength controlled per material, making for consistent and visible wind across your worlds.