[RELEASED] QuadIT - LOD system designed mainly for unity trees

Hello all game developers,

As there was nothing like a good LOD system for unity trees and I had to use it in my game. I did QuadIT. Hope few of you find it also useful.

QuadIT bakes your hi poly trees into objects created from few quads and bake them together. Reducing batches, increasing fps and visibility of trees at high distance. Asset is made for drag and drop, but can be simply customized for your needs.


Right half of trees are quaded and left are original meshes without any LOD. You can see as original trees lose their leaves on distance. (there is around 5000 trees on the scene).

2761754--199413--Untitled-1.jpg

There is detail of quaded object on the right and original mesh on the left. Note: original mesh is still used for near distances quaded only for further distances.

2761754--199414--Untitled-2.jpg
Right quaded object and left original mesh from above.

Trees for demo scene are from Nature Starter Kit2
If you want to learn more about author assets

Asset specifics:

  • support Baked objects (no ingame calculations) and Dynamic object baking (can be instantiated during game play and then object is calculated only once).

  • relative fast baking capable of runtime baking for few objects at once without lag ( on high quality it takes 0.1s per object).

  • Faces under steep angle are less up to not visible (look on image 2 on the right object).

  • Smooth fading between mesh and quaded object.

  • Good visibility even on very high distance.

  • All shadows recieved on the mesh are rendered correctly. Also it renders intersections with other objects - much more correct results even for very dense forrest.

  • Reduces batches for classic unity trees 4x, Reducing poly count from thouasands per object to 4-40(depending on the shape), increasing fps (various from cca 40% to hundreds% based on settings and gpu).

  • Various shapes to get best results for your needs.

  • Capable of creating sprites outside of playable area with one click.

  • All values are set for all objects, but if some object needs specific settings you can simply override only them.

  • Bitewise shadow baking. All shadows are baked into single texture (4k texture can hold up 8192 shadows with 256px rexolution). So there is only one material for all the trees or few materials for huge scenes with more trees.

Note: baked data will increase size of the game. If you need to save hdd space you will need lower resolutions (than presented resolution 256px).

Developed for mainly these assets:
-Manufactura 4k trees
-Shapes trees
-Forrest Vision (paid only- free version has max axis space)

Current restrictions for trees assets to work properly:

  • remove all tree LOD, keep only LOD0. remove LOD group.
  • Tree has to have 0,0,0 rotation when standing upwards.
  • For smooth fading tree has to have only one leaf material.

Not fully supported trees:

  • SpeedTree

QuadIT alpha price 25$ ( from 35$ ) on Asset Store

Thanks for your interest and support.

Asset demo scene (download a folder) from dropbox
For any questions leave comment here or contact me via e-mail hamho@seznam.cz

1 Like

oh Yes, i want to see video ^^

1 Like

Asset sent for unity Approval :slight_smile: There is promised video :slight_smile:

1 Like

So just to be clear for VR purposes. The unity built in terrain billboard renderer follows the camera in a really bad way making it unusable. With your system when the model goes into Quadit or billboard mode does this follow the camera around or stay put? Been trying to find a solution for VR for sometime now being that unity never fixed that terrain problem.

No they does not move then. If you want to look on object from more sides, you will use other model options than billboards. Billboards are for very distant trees you will never reach them from other sides. It is becaused if that sprite would rotate, texrure on that sprite will not change and then you could have shadows from sunny side. You would need to render every model texture everytime you move, and it is not a clever solution. Other models (than sprites) are made to be visible from all angles without need of rotation or extra computations. It looks like in old 3D games, when trees were just sprites rotated by certain angle into " * " shape. But I am using shader, which reduce stripes made by almost upright faces. Only problem is that this asset consumes more HDD space (I have 5800 trees and they increased game size by 1GB). But it should not be a problem nowadays, and also I will try to solve this problem in future. It could even more improve performance. Well I never tested it on VR, but there is almost no calculations running on play. Main problem is that each tree has its own material instance in distance, where is big space where I can move with performance if I solve it. Still for me it increases fps by 50-80%. All depends on number of trees if you are using only hundreds to thousand there is absolutely no problem, otherwise it could be heavy for VR. But I do not have a clue, sorry.

Hiii

i’am waiting the version with impatience :))

It is released!!! :slight_smile:

Congrats!! :slight_smile:

Can you plug speed tree models into this ?

1 Like

Thanks Adam,
Well speedTrees will work with this asset as it works for all objects with renderer, but smooth fading is not possible right now, due to problems with material property block where unity does not expect that renderer uses more than 1 material. I am solving this with unity and hope we will find solution soon.

3 Likes

hello @Kusras
congrats! :wink:
I’ve got a question: works with deferred rendering path?

Hi ghiboz,

I am also using deferred rendering path, so it is working. It should not have any problem to run on any path or on any colorspace. It is using your settings to render quads.

hello @Kusras
congratulations for the release.
I’ve a general question related to your asset.
Now Unity gives us the shader instancing and considering that when you build an open world you have some trees that you duplicates a lot spreading the world…do you think that instancing could help in this situation? If yes, do your asset have some feature in this way? Your shader has shader instancing implemented?

Thanks in advance

Hello, marcatore
Thanks. It is quite problematic area of this asset. First problem is in tree material per property block, which I found works only for material at index 0. unfortunately most of the trees has leaf material at index 1. So currently there is some performance space for improvements.

The second problem lays within quadIT textures itself.Main problem is shading, if your objects does not have same rotation, or are shaded by other objects (mountains). You have to bake somehow this information per object if you want to show them correctly. This could still be optimised by some simplified shadow maps. But one problem remains in intersections of objects. If you have dense forrest, you have to bake other objects visible inside of rendered object bounding box, other way sprite will show one object infront of other, which is usually look as this LOD would not match.

So I wanted to create real look LOD at first place and performance at second place. If you want any performance friendly LOD you can take a screenshot of that tree and just switch it with classic LOD group. I am afraid that something with better results and same performance is not possible right now in unity.
I got an idea, that at least shadows could be baked into normal maps and intersections could be baked into bitwise maps so then there will be all materials shared per prefab within QuadIT, but at this moment I cannot tell you it will look correctly or not and when I get enough time to do some research in that way. Just I know if it will work it will be absolutely performance friendly for even infinite open worlds.

So currently it is not suitable for very large open worlds with tens thousands of trees or more. This could take a lot of space on HDD. But still it should work if you do not load all trees at once and loading only objects nearby camera in so huge open worlds. Do you have any expectation about number of trees in your open world?

1 Like

New patch 1.02 sent for submission . It changes a lot of things.
Most important change is that all textures/materials/meshes are per prefab now instead of object.

  • another LOD level (sprites) for very distant objects.
  • Many bugs repaired.
  • It is one step closer for Time of the Day changes. (possible currently for custom scripts).

I purchased this but it doesn’t seem to work at all with 5.5. Any updates coming to fix this?

I have 5.5. and nothing changed for me it seems. Could you please send more detailed report what you do and does not work? You have to have QuadIT manager in the scene and then add trees prefabs with quad it script into scene.

The demo scene wasn’t working for me. All the billboards were invisible. Maybe I missed something. I’ll take a look again when I get home. Thanks for your response!

Well I found that the newer version throws an error when building a game. Made hotfix for it. And thanks for reply that it is connected with demo… Take a look onto it. Also I see that problem with demo scene. It seems like references got lost after uploading last patch. Strange is that exported asset works, and downloaded not. Anyway working on it :slight_smile:

It’s working well now. Thanks for your support! :slight_smile:

Hey, interesting asset, I purchased it, and have been playing with it for the past couple hours.
I am a very confused, I was able to bake the billboard properly except I am having troubles testing the LOD levels, I can manually toggle on/off the quad, however I can’t seem to get it working nor can I find it in the docs?
Does the game need to be in play mode, or does it work in the editor? None of the variables seem to effect it, it just stays on the mesh with the QuadIT toggled off.

A few more questions,
Do the QuadITS batch to under 10 drawcalls? If not, why not just use SpeedTrees?
Do the QuadITS shaders work on all mobile devices and support SM 2?
Do you have plans to support real time lighting? It is completely unusable in a game which has a day and night cycle.
Does the QuadITS sprite LOD level billboard?
What is the workflow for supporting prefabs? For example, setting up my tree prefab, baking it, etc. and then painting them into a scene, I am unclear on how to achieve this.

My honest feedback about this asset, would be that it feels to heavy, it feels to complicated, there is too many required components, it does not seem to fit well into an already big game (we use SpeedTree) it would be much better if we could just bake our low poly mesh and textures, and use a custom LOD script for the smooth fading, or the built in Unity LOD if smooth fade is not needed, right now it needs needs managers, multiple scripts on each tree, etc. it just seems waaay to heavy.
Also the demo scene is broken, the LODs don’t show.

I hope this did not come off as rude, I am just a bit lost, some help would be great :slight_smile: