I have a scene that is populated by imposters. The issue is that these imposters intersect my terrain. I need to somehow force the complete imposter quad to be rendered, or parts of the houses will not be shown. The solution is probably obvious and I’m probably missing it due to a long day, but I can’t for the life of me come up with an answer. Here is an image that shows what I mean. Any ideas?
Perhaps they can be rendered in a second pass, clearing the Z buffer beforehand.
This is a common issue with imposters. You can't make a 2D object appear 3D because it does not have any depth information, there are some workarounds that people came up with on the internet, like using the stencil buffer with rendering bounding boxes and what not (haven't looked too deeply on that). Clearing the ZBuffer before rendering the imposter would introduce additional issues so I wouldn't suggest that. I think it's best if you use some LOD here instead, at a far distance, replace the houses with a simple box and roof, this comes out to 10 verticles, then add those to the same batch to instance them.
Thanks for the ideas.
I tried clearing the z-buffer and that worked perfectly. Until the terrain actually had to be in front of the building.
The way it works now is that the buildings become lower in detail as the moved farther away. Somehow this leaves me with a scene with the following metrics (including Terrain):
On a 8800 GS.
I feel like I should be able to get a higher performance. The houses are often based on the same model, so they're all SharedNodes based on this model. What am I missing?
Modern cards prefer to handle big batches in low quantity, instead of small batches in a large quantity; so, you must instance your houses to get good performance. For mesh instancing/batching, check the geometryinstancing package in jME.