Indoor (cave like) culling

Started by
11 comments, last by biki_ 14 years, 5 months ago
Hi guys! I'm moving forward in my (our) current project...we're developing a game that will contain parts inside caves environment, but also with open underground rooms. I just ask you: what techniques are used nowadays for frustum and occlusion culling? I know that Unreal Engine 1 and 2 used portal based-culling, but now they use Dynamic PVS (afaik), that I think is something of a summa of various techniques! What do you use for occlusion culling of your indoor scenes? I'm thinking about Image-Space Portal Culling, that seems really easy to me. Thanks!
---------------------------------------http://badfoolprototype.blogspot.com/
Advertisement
well i think portals + antiportals will rule for quite some time. maybe implementation details will change but general idea is so simple and efficient that even if you use some fancy occlusion query system it's still worth your time to implement it in some form.
Good...portals and antiportals: this is what I am thinking about!
Can you point me to some link in which the math around it is explained?

And...are you using it? Image-space or creating volume projection?

Thanks!
---------------------------------------http://badfoolprototype.blogspot.com/
I personally dislike the using of portals.

Automatic generation of portals is pretty inefficient, expecially with the big assets used nowadays. Artists would be forced to manually specify them, and specify every item contained, limiting their freedom. Portals are good just in Quake1-like enviroments.

I'm trying, instead, to go somewhere else, utilizing image-space methods. Z-based occlusion culling systems, for me, work well. As far as I'm concerned, hierachical z-based rejections are a good idea.
well noone generates portals automatically, you need to hire a graphics artist who will, it's not a lot of work if it's designed properly.
for example you can ask level designer to put boxes defining sectors and portals on their intersections, should be fast and simple.
as for rendering fastest way is to do it in world space by narrowing view frustum. you keep 6 clip planes and cull object with that, and when you look through the portal you just adjust clip planes to fit portal. (they will still form rectangle in screen space).
of course you can do some fancy culling using hardware occlusion query, HOM or something else, but remember that portals are almost free on modern machines (at the cost of small increase of work for level designer).
same applies to antiportals.
Very well...could you point me to some math related?
---------------------------------------http://badfoolprototype.blogspot.com/
there's not a lot of math in it.
all you need is to be able to test box-frustum intersection and to find reduced frustum going through portal.
for second thing check this thread: http://www.gamedev.net/community/forums/topic.asp?topic_id=384601
box-frustum intersections have been discussed in many places here on this forum

my suggestion is to start simple . for example only axis aligned boxes define sectors, level designer will put only those boxes and portals (axis aligned rectangles laying on 2 touching faces of 2 boxes) then while loading you intersect scene geometry with boxes so you know which objects belong to which sectors , then find center of each portal and move it a bit along normal in one direction and then in other , that way you get information about which sectors portal connects. after that you can use it for rendering.
So basically you test portal-frustum intersection, and then create a new frustum starting from the portal and recursively reduce the frustum? Is it correct?

And...Box-Frustum intersection...because a Portal must be a 3d polygon (so at least a box)?

thanks biki!!!
---------------------------------------http://badfoolprototype.blogspot.com/
Quote:Original post by JorenJoestar
So basically you test portal-frustum intersection, and then create a new frustum starting from the portal and recursively reduce the frustum? Is it correct?

yes

Quote:Original post by JorenJoestar
And...Box-Frustum intersection...because a Portal must be a 3d polygon (so at least a box)?


well. box frustum or box-box is for culling and dividing scene objects into 'sectors' depending on which sector box it is in. portal is just rectangle (not box) it can be any flat shape but method i described will use it's screen space axis aligned rectangle.
Mmmm...so first step is to create a screen-space-axis-aligned box: if it fit the screen, then create a new frustum right?
---------------------------------------http://badfoolprototype.blogspot.com/

This topic is closed to new replies.

Advertisement