I've updated my entity occlusion culling code to operate more in software. It already does regular entities in software on the server side, but now it's also handling static entities in software on the client side (using much the same algorithm). It's occurred to me that now that I already have everything doing cull checks against the world in software, I only need to do hardware cull checks if inline brush models are being drawn. This significantly speeds up the whole process as it means that generating and reading back a Z buffer need not be done all of the time.
I may even be able to further speed this up by projecting inline brush model bounding boxes to screen coords and checking if there is any possibility of them occluding first, but that's not too high on the priority list right now.
So now that I have this working fine without hardware occlusion queries being available, the next logical step seems to be to replicate it for cases where hardware occlusion queries are available. However, in tests, running hardware occlusion queries involves an explicit sync/wait, which is actually significantly slower than my method.
Tuesday, July 8, 2008
More occlusion culling
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment