MaskedOcclusionCulling | Example code for the research paper

 by   GameTechDev C++ Version: Current License: Apache-2.0

kandi X-RAY | MaskedOcclusionCulling Summary

kandi X-RAY | MaskedOcclusionCulling Summary

MaskedOcclusionCulling is a C++ library. MaskedOcclusionCulling has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can download it from GitHub.

This code accompanies the research paper "Masked Software Occlusion Culling", and implements an efficient alternative to the hierarchical depth buffer algorithm. Our algorithm decouples depth values and coverage, and operates directly on the hierarchical depth buffer. It lets us efficiently parallelize both coverage computations and hierarchical depth buffer updates.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              MaskedOcclusionCulling has a low active ecosystem.
              It has 537 star(s) with 69 fork(s). There are 54 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              There are 6 open issues and 9 have been closed. On average issues are closed in 56 days. There are 2 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of MaskedOcclusionCulling is current.

            kandi-Quality Quality

              MaskedOcclusionCulling has 0 bugs and 0 code smells.

            kandi-Security Security

              MaskedOcclusionCulling has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              MaskedOcclusionCulling code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              MaskedOcclusionCulling is licensed under the Apache-2.0 License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              MaskedOcclusionCulling releases are not available. You will need to build from source code and install.
              Installation instructions, examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of MaskedOcclusionCulling
            Get all kandi verified functions for this library.

            MaskedOcclusionCulling Key Features

            No Key Features are available at this moment for MaskedOcclusionCulling.

            MaskedOcclusionCulling Examples and Code Snippets

            No Code Snippets are available at this moment for MaskedOcclusionCulling.

            Community Discussions

            No Community Discussions are available at this moment for MaskedOcclusionCulling.Refer to stack overflow page for discussions.

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install MaskedOcclusionCulling

            The code is optimized for runtime performance and may require a long time to compile due to heavy code inlining. This can be worked around by compiling a library file. An alternative solution is to disable whole program optimizations for the MaskedOcclusionCulling.cpp, MaskedOcclusionCullingAVX2.cpp and MaskedOcclusionCullingAVX512.cpp files. It does not impact runtime performance, but greatly reduces the time of program linking. Most inputs are given as clip space (x,y,w) coordinates assuming the same right handed coordinate system as used by DirectX and OpenGL (x positive right, y positive up and w positive in the view direction). Note that we use the clip space w coordinate for depth and disregard the z coordinate. Internally our masked hierarchical depth buffer stores depth = 1 / w. The TestRect() function is an exception and instead accepts normalized device coordinates (NDC), (x' = x/w, y' = y/w), where the visible screen region maps to the range [-1,1] for x' and y' (x positive right and y positive up). Again, this is consistent with both DirectX and OpenGL behavior. By default, the screen space coordinate system used internally to access our hierarchical depth buffer follows DirectX conventions (y positive down), which is not consistent with OpenGL (y positive up). This can be configured by changing the USE_D3D define. The screen space coordinate system affects the layout of the buffer returned by the ComputePixelDepthBuffer() function, scissor rectangles (which are specified in screen space coordinates), and rasterization tie-breaker rules if PRECISE_COVERAGE is enabled.
            We begin by creating a new instance of the occlusion culling object. The object is created using the static Create() function rather than a standard constructor, and can be destroyed using the Destroy() function. The reason for using the factory Create()/Destroy() design pattern is that we want to support custom (aligned) memory allocators, and that the library choses either the AVX-512, AVX or SSE implementation based on the CPU's capabilities. The created object is empty and has no hierarchical depth buffer attached, so we must first allocate a buffer using the SetResolution() function. This function can also be used later to resize the hierarchical depth buffer, causing it to be re-allocated. Note that the resolution width must be a multiple of 8, and the height a multiple of 4. This is a limitation of the occlusion culling algorithm. After setting the resolution we can start rendering occluders and performing occlusion queries. We must first clear the hierarchical depth buffer. Optional The SetNearClipPlane() function can be used to configure the distance to the near clipping plane to make the occlusion culling renderer match your DX/GL renderer. The default value for the near plane is 0 which should work as expected unless your application relies on having onscreen geometry clipped by the near plane.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/GameTechDev/MaskedOcclusionCulling.git

          • CLI

            gh repo clone GameTechDev/MaskedOcclusionCulling

          • sshUrl

            git@github.com:GameTechDev/MaskedOcclusionCulling.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link