EveryCulling
gl_occlusion_culling
Our great sponsors
EveryCulling | gl_occlusion_culling | |
---|---|---|
3 | 3 | |
120 | 511 | |
- | 1.4% | |
3.4 | 4.0 | |
3 months ago | 3 months ago | |
C++ | C++ | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
EveryCulling
-
Introduce my in-house game engine
And I have been trying to make game engine faster. So I implemented SW ViewFrustumCulling(https://www.ea.com/frostbite/news/culling-the-battlefield-data-oriented-design-in-practice) and SW Occlusion Culling ( Masked SW Occlusion Culling, https://www.intel.com/content/dam/develop/external/us/en/documents/masked-software-occlusion-culling.pdf ), Distance Culling from unreal engine. You can see source code at here ( https://github.com/SungJJinKang/EveryCulling )
-
I implemented Masked SW Occlusion Culling in my in-house game engine
And Data layout is defined for multithreading. You can see at here https://github.com/SungJJinKang/EveryCulling/blob/main/DataType/EntityBlock.h. Every entities's datas is stored in this EntityBlock. EntityBlock has 16 ~ 24 entities datas. Then Each threads work on a entity block. It makes no requirement for lock to prevent data race. And It prevent false sharing because threads works on different cache line.
gl_occlusion_culling
-
Occlusion Culling Dilemma
A low-latency (and frankly better) alternative to hardware occlusion queries is to make your own using indirect drawing. Simply draw a chunk's bounding box against the depth buffer and set the instance count of the indirect struct to one if any fragments are drawn. The next frame you can use these indirect commands to draw the actual chunk geometry and repeat the whole process. This has a guaranteed latency of one frame. More info here.
-
Occlusion Culling for Chunks?
One approach is to use occlusion queries, draw chunks which were visible last frame and then occlusion test the bounding volumes of chunks which weren't rendered and render the ones which pass using a shader based occlusion approach similar to this NVIDIA sample: https://github.com/nvpro-samples/gl_occlusion_culling
-
Has anyone used Intel's Masked Occlusion Culling library?
For occlusion culling, specifically, there’s this reference implementation: https://github.com/nvpro-samples/gl_occlusion_culling
What are some alternatives?
ozz-animation - Open source c++ skeletal animation library and toolset
filament - Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2
rttr - C++ Reflection Library
CornerCulling - Fast and Maximally Accurate Occlusion Culling
DoomsEngine - Dooms Engine ( Game Engine )
gl_cadscene_rendertechniques - OpenGL sample on various rendering approaches for typical CAD scenes
simdjson - Parsing gigabytes of JSON per second : used by Facebook/Meta Velox, the Node.js runtime, ClickHouse, WatermelonDB, Apache Doris, Milvus, StarRocks
bgfx - Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
highway - Performance-portable, length-agnostic SIMD with runtime dispatch
clReflect - C++ Reflection using clang