Showing posts with label LTrees. Show all posts
Showing posts with label LTrees. Show all posts

Tuesday, July 31, 2012

LTrees, Instanced

So, it wasn't terribly hard to get instancing working with LTrees, at least the trunks.  I basically used the instancing code I had before, but rather than passing it a Model object, I made it able to accept a VertexBuffer and IndexBuffer combo (which it would get anyway by extracting from the model).  I haven't fiddled with the leaf clouds yet.  I may not, I may move on to set tree models where I can fully control the level of detail, and have billboard imposters at low LOD.

At any rate, it works pretty well.    This is a 3x3 chunk of terrain (32x32x64 sized chunks), so this is drawing more than 9000 trees (simply set now to about 1 per cell), all at full detail and still managing ~ 30 fps.  That's without any real optimization.

The shadows aren't working quite correctly with instanced item though.  Dunno if I will worry about that for the time being.

I did pull some updates from the newer versions of Project Vanquish.  I need to sit down and figure out if I've done something to mess up the shadows...


Thursday, July 26, 2012

The Return of LTrees

In my original code, way back when I was basically working through Riemer Grootjan's excellent tutorials, I stumbled upon LTrees, a procedural tree generation system that worked with XNA. It was really quite straightforward, and I easily added it in.

My current voxel implementation is more complicated however, and adding the intricacies of deferred rendering (I swear I will eventually get around to discussing Project Vanquish and what I've been doing with it), I'd put off re-integrating it for a while.

I've finally done that, and it was mostly easy. Generally speaking I had to change the shaders to deal with deferred rendering, adding normal and depth to the pixel shader output. I've not fiddled with getting shadows to work yet, but I can see my way through that.

There are two other real issues left. The first is alpha blending on the leaves. Alpha blending is a bit of an Achilles heel for deferred rendering setups.  The funny light coloring around the leaves is due to the alpha problems.  The second is that... well the naive implementation of simply drawing a lot of trees works slowly, of course.

So, I'm working to implement LTrees, but make the items themselves instanced.  That will take a bit of work, so in the meanwhile, these images are what it looks like now.