FlintMcgee Posted January 12 Posted January 12 (edited) Hey ED team, Any chance we could get occlusion culling in DCS? I feel like the game’s rendering way too much stuff that’s hidden (like terrain behind mountains or stuff under the cockpit). Pretty sure this could be fixed with client-side occlusion culling since the server doesn’t care what we can see, just sends all the data. If the client handled culling and skipped rendering stuff we can’t see, it’d probably help a ton with FPS, especially in big missions or multiplayer. Not sure how hard it’d be to add, but seems like it’d be a huge win for performance. Would this be possible with the current engine? Edited January 16 by FlintMcgee
cfrag Posted January 13 Posted January 13 On 1/12/2025 at 3:54 AM, FlintMcgee said: Any chance we could get occlusion culling in DCS? What makes you believe that there isn't any in DCS? On 1/12/2025 at 3:54 AM, FlintMcgee said: I feel like the game’s rendering way too much stuff that’s hidden Can you put a number on that? I believe that you mean to request 'occluded object culling', i.e. that objects (geometry) that are behind other objects or terrains should be culled (removed) from the rendering pipeline before they are submitted to rendering. I believe that DCS already uses object culling for the viewing frustum. Adding a visibility pass to determine which objects occlude others doesn't add much, and may even be more expensive - this is especially true for large objects like carriers or buildings that may be partly occluded and require tests to determine if all their geometry is occluded. So simply rendering all geometry inside the view frustum can be a much more cost-efficient approach compared to trying to cull objects/geometry by determining if they are obscured (occluded) by other objects/terrain. I believe that since around 2005 most render pipelines support a 'bounding box' check for early culling, and it's usually applied for initial view testing/culling during the render process. Applying it after view (frustum) culling on the remaining geometry, to determine mutual occlusion requires that the (massively parallel) GPU first waits for all view culling processes be complete before it can start on mutual occlusion culling. This forces a global synch of all parallel operations in the pipeline. That breaks the rendering pipeline into discrete steps and I believe that it will induce a heavy performance penalty. I do not fully understand what you are recommending here, and why that would improve performance. But it's been a couple of years since I last worked on render processes, so maybe things have changed drastically. (Note: I think it best to disregard 'client-side' from the title, because I think that all rendering in DCS is done on all clients exclusively, no rendering is done on the host.) 2
FlintMcgee Posted January 14 Author Posted January 14 On 1/13/2025 at 1:06 PM, cfrag said: What makes you believe that there isn't any in DCS? I’m not sure if DCS has occlusion culling, I was just guessing based on FPS drops in areas with a lot of objects or when looking down in the cockpit. After reading your reply, I get why frustum culling might be the better option for performance. That said, I’d really love to see Vulkan added soon. With my mid-level PC, I can’t get a stable 60 FPS as it is, so Vulkan could really help with performance. Thanks for the explanation, but I’d still love to hear a reply from the ED Team
draconus Posted January 16 Posted January 16 On 1/14/2025 at 2:23 PM, FlintMcgee said: Vulkan could really help with performance Don't get your hopes up. It's for future proofing and new possibilities, not to double fps on old hardware. Sure, you can expect some improvement after the implementation but rather for more demanding cases like VR. 1 Win10 i7-10700KF 32GB RTX4070S Quest 3 T16000M VPC CDT-VMAX TFRP FC3 F-14A/B F-15E CA SC NTTR PG Syria
Recommended Posts