Hello!
‘Critias Tree & Grass’ is an system that is designed to paint, render and extract millions of instances of foliage without taking into account all the foliage but only the one that is in the proximity of the player.
Based on Unreal’s foliage flow and UI and the ‘Critias Tree/Grass’ systems, I have decided to merge all of them for people who are interested in a all-in-one system, for trees, grass and any other terrain details that you might require in huge quantities.
But that is only a bonus, the core of the system is an super-fast instancing based rendering engine, that batches together foliage based on cells and sends them packed to the GPU so that your game’s FPS is happy even with millions of foliage instances!
For a significant performance difference you should use more than 10000 mesh grass instances and more than 5000 trees. Only then you can unlock the full power of the system.
With ‘Critias Tree & Grass System’ you can:
- Paint your grass/meshes on your objects/terrain
- Extract existing trees or meshes from your scene
- Render at awesome FPS your foliage
Features (V 1.3.0):
- Primitive colliders for navmesh generation
- Add a ‘Cleanup’ command
- Convert items to native Unity game object format
Bug Fixes:
- Collision duplicating mesh rendering
Features (V 1.2.1):
- YOffset’ per-type and not global any more. Works with extraction too
- Code fixes, improved caching
Bug Fixes:
- Changing foliage types from ‘OTHER_GRASS’ to ‘OTHER_TREE’ works
- Data does not get duplicated when changing the foliage type any more
- Fixed the ‘NullShader’ depth issues
Features (V 1.2.0):
- GPU distance foliage bending (experimental)
- Adding foliage instances
- DrawMeshInstancedIndirect with GPU caching
- Runtime hue/color changes
- Grass shadow fade
- Billboard shadows
- Foliage align to terrain in case of heightmap change
- Detail extraction from multiple terrains at once is possible now
- Auto-set the names of the extracted items
- Advanced Foliage Shader 5 integration
- Per foliage type surface align options
- Better painting
- Allow higher and lower densities
- Code examples
- Editor performance optimization
- Documentation notes on common pitfalls like: billboard lighting, foliage normals facing etc…
Bug Fixes:
- Billboard hue variation always matches tree hue variation now
- Various other resource releasing and cleanup bugs are fixed
- Wind not working in certain conditions (could not reproduce any more on my spec)
Features (V 1.1):
- Artist friendly
- Foliage instance batching and culling
- Existing tree and details extracting from terrains
- Hand painting
- Spatial hashed foliage placement. Terrains are not required any more!
- Paint your foliage on absolutely anything! Terrains, objects etc
- Not dependent on SpeedTree only!
- Awesome FPS (actually that’s the whole point of this system)
- Smarter billboard batching
- Automatic setup. No need for any fancy setup like the old system
- Per foliage type culling distances
- Per foliage shadow casting
- Global grass density scaler
- GPU Instance calculations, very low CPU overhead
- Possibility to remove trees at runtime (destructible trees)
- Labels - The system will remember from which source it’s instances came from
- Hard-drive serialization
- Support for 100k+ tress with collisions
- Support for multiple foliage types
- Instancing support
- Tillable terrain support
- Billboard rotation
- Billboard Tree Y rotation
- Tree/Grass SpeedTree wind
- LOD System for trees
- Animated SpeedTree style CrossFade
- Uber-fast billboard system (SpeedTree only)
- Everything from Critias Grass System
- Everything from Critias Tree System
System:
- Pending (Asset Store)
- Repository
Demo:
- Download here (Windows)
Documentation:
- Documentation here (PDF)
Tutorials:
- Quick setup (Video)
- Advanced setup (Video)
Support:
Found a bug or have some great idea of improvement? No problem, just grab your torch and pitchfork and join me here on the forum!
UI:
Compatibility:
For good performance and support this system will target Unity 5.6.3f/2017+ due to shader managing issues for lower versions. DX11 and any other platform that supports instancing. I would really not recommend this system for mobile, mobile games have enough from the Unity default systems.
The requirements are:
- Unity 2017+
- DX11
- DX11 equivalent graphic API’s with instancing support
- GTX570/GTX750TI Golden Sample or equivalent GPU
Other Assets Compatibility:
- Advanced Foliage Shader V5 (Working)
Limitations:
Based on feedback with the other systems it is clear that a good video card with true GPU instancing is required. The minimum GPU would be an GTX570. I’ve also tested on a GTX750TI Golden Sample with very good results. I’ll have a demo shortly where you can test if the performance is good for your PC before downloading the system. And check the PassMark of your GPU. A value higher than 4000 is required.
If it works bad on your PC with instancing on, you can try disabling it and keeping only the tree rendering.
If the system or the demo behaves bad on your machine or on the machines that you are testing on, I recommend to use Unity’s build TreeCreator and foliage systems that are designed for very low-end machines!