Agenda
Optimizing a Large, Time-Critical Problem: Occlusion Culling at 'Roblox'
How do you occlusion cull fully dynamic, user-generated content? We don't know what parts of the scene are static, since we free creators to change anything at any time. We want to empower amateur authors to bring their visions to life, not to burden them with constructing occlusion geometry that they must redo whenever they make other changes to their scenes. We present how we solved this problem at Roblox, for fully dynamic occlusion culling with no manual authoring. We also discuss spatiotemporal antialiasing in software rasterization, limiting software rasterization to where it helps, and avoiding multithreaded stalls. We show how our feedback loops automatically adjust to unknown scenes and hardware.
Takeaway
You will see an example of how thinking differently about a problem can give you a better solution. You will also see a way to add spatiotemporal antialiasing to software rasterization at very little cost, methods to spend rasterization time only where it helps, and examples of modifying multithreaded code to avoid stalls.
Intended Audience
This talk is for programmers needing to write time critical code to solve large problems on a wide range of hardware. The scenario will be most familiar to graphics engineers, but is easily understood by all. There is no graphics API usage; the methods and solutions shown are entirely on the CPU.