have you thought to do a sort of fog that blends the far horizon in a haze,
and then clip the frustrum at a limit via the view port like frustrum culling?
in other words it would clip out the buildings farthest away.
another thing I could suggest is to instead of rendering buildings that are far away with 8 vertex,
try rendering a single billboard with only 4 vertex for those farthest. Let the fog and haze only discribe a siloet of the building visually.
and for textures, if there are any, try mip mapping. I.E. for textures closer to view would have higher rez textures, those farther away
would have less, say like 512x512 -> 256x256 -> 64x64 ->farthest->
cutting some of the resolution from the far objects, could show you your fps gain.
It is becoming more evident I need some kind of fog, but it would take away a bit of the wow-feeling of this project. I've had the billboards and mipmapping in mind, they are what is coming up next on my list if I don't find another solution. But I don't think they would reduce the performance enough to the level I want. Mipmapping either way is really good to have.
An alternative to fog might be to add some curvature, either to your actual world geometry, or hack it into your vertex shader.
Also, what's your current rendering strategy. Is each building a draw call? Are you using instancing?
My buildings will actually be extruded inside of a sphere, pointing inwards. So if you would look up (being inside the sphere) you would not see the geometry sticking out much, rather just a night sky of tiny stars in far distance. So at far far distance I'll just do a texture lookup and not actually create the objects unless I fly there. Is that something you mean with curvature?
All these buildings are one same vertex buffer. One draw call.
And my very optimistic hopes were for geoclipmapping to kind of merge the vertices and triangles together at far distance so it become possible to render with decent fps
Geometrical clipmaps (as intended here) don't do that. Geometrical clipmapping does not "merge" anything but its different LOD levels, which are themselves a representation of a single, coherent, 2D --> 1D function.
If geometry is static and you can afford the extra memory budget, just pre-transform everything to a single batch.
Nonetheless, "far" rendering is serious trouble, especially when there must be a connection between the "near" and "far" geometry. I'm currently inclined towards render-texture effects to somehow "splat" the "far" rendering on the background but I'm afraid doing that robustly would require some effort to work in the general case.
The clipmapping would make the buildings as mountains instead right?
If I were to somehow link different scenes together between farplane and the background, I would need to create the background with some geometry. You don't think I could take the same geometry that are underneath me, let's say a block of 80k buildings, move it forward, snap a texture, move it to the side, snap a texture, move it a bit further back, snap a texture etc etc. Until you fill the horizon and you link the textures together? And possibly create a bumpmap so that if you were to move the camera you would see the distant objects slightly change their shading. And these textures wouldn't have to be full resolution. Kind of like a depth mipmapping. Or too inefficient?
Thanks a lot for replying so fast.
Edited by lallish, 13 March 2013 - 04:42 AM.