Hi, Halifax.@christianclavet: By the way, how many polys is your demo level? Because I made need to implement a simple culling system for Summertime since its levels are filled with hallways, and things
I don't fully remember, but with all poly the level is around 50K poly.
There is no culling applied there beside the frustum culling.
You could try something (I will try this when I reach beta phase, When it be the time to optimize the level):
You could optimize your frustum rendering per frame. Based on a collision test update on the distace.
Check the colision demo. There is a ray/wall collision test. Once a collision is found, you could calculate the distance from the camera to the collision coordinate (I will surely multiply the distance per 2) and redefine your frustum FAR distance from this. So if your player is only seeing a wall, this will limit the frustum view to that and a little more. But will not have to render all the level. This seem pretty simple to do.
I will surely try it, when comes the time (A nicer thing could also be do 2 or 3 ray collision test (Instead of the center of the camera, the right and left estimated position of your view for the RAY start position; and take the farther position for the FAR frustum view. This way, If you are on a corner, it should still draw all that are in the view.
To better handle different situations, I'll probably do 5 ray/collision test. The four corner of the view and the center of the view. The farthest distance become the FAR(* 2) value of the Frustum view. You could also program more collisions to have a better accuracy of what is in the view.
I think for 5 could be ok, and very fast to compute.
The basic idea is to take what is into the view and try to draw only that.
The code for the Ray Collision test is in the demo (IRRlicht demo).
If you try this before me then, I'd would like to have your comment on how it perform.