Top
Best
New

Posted by krupitskas 1 day ago

Modern Rendering Culling Techniques(krupitskas.com)
68 points | 11 comments
Animats 13 minutes ago|
Occlusion culling is really tough in systems where users can add content to the world. Especially if there's translucency. As with windows (not Windows), or layered clothing.

You're in a room without windows. Everything outside the room is culled. Frame rate is very high. Then you open the door and go outside into a large city. Some buildings have big windows showing the interior, so you can't cull the building interior. You're on a long street and can look off into the distance. Now keep the frame rate from dropping while not losing distant objects.

Games with fixed objects can design the world to avoid these situations. Few games have many windows you can look into. Long sightlines are often avoided in level design. If you don't have those options, you have to accept that distant objects will be displayed, and level of detail handling becomes more important than occlusion. Impostors. Lots of impostors.

Occlusion culling itself has a compute cost. I've seen the cost of culling big scenes exceed the cost of drawing the culled content.

This is one of those hard problems metaverses have, and which, despite the amount of money thrown at the problem, were not solved during the metaverse boom. Meta does not seem to have contributed much to graphics technology.

This is much of why Second Life is slow.

nickandbro 3 hours ago||
Love this, I will now use backface culling for my game:

https://slitherworld.com

Tanoc 2 hours ago|
Backface culling has been common since the late 1990s when we started using face normals to determine lighting rather than per-vertex lighting. Pretty much every 3D game engine since about 2004 has included and enabled it by default. How is it that you made a game that doesn't use it?
nickandbro 2 hours ago||
I didn't use a game engine
Tanoc 1 hour ago||
Ahhh. So you used a wrapper or a library? Interesting then. I had assumed that almost every rendering method enables frustrum, occlusion, and backface culling by default if only to clear the number of objects needed to be tracked in memory. One thing I noticed in your game is that it's based on the absolute mouse position, which with a 16:9 window makes it difficult to turn in certain situations because your horizontal movement space is much larger than the vertical movement space and that adversely affects turning speed. Changing so that is based just on horizontal mouse movement or adding keyboard controls might be better.
nickandbro 1 hour ago||
Thanks for the feedback, I’ll try to get that sorted out.
LarsDu88 4 hours ago||
PVS isn't that expensive to compute. Especially nowadays. I assume this is actually referring to the binary space partitioning techniques used in DOOM and improved in Quake, Half-Life, etc in the late 90s, early 2000s.

The BSP tree was also extremely useful for optimizing netcode for games like Quake 3 Arena and games within that family and time period I believe.

yards 2 hours ago||
I always wonder about this IRL...I'm at work rn, is my apartment still rendered?
keyle 28 minutes ago|
The old philosophical question remains, "If a tree falls in a forest and no one is around to hear it, does it make a sound?" [1]

[1] https://en.wikipedia.org/wiki/If_a_tree_falls_in_a_forest_an...

igraubezruk 1 day ago||
Very good read and visualizations, thank you for writing it
yopstoday 1 day ago|
Dooope!