All Projects → sydneyzh → Gpu_occlusion_culling_vk

sydneyzh / Gpu_occlusion_culling_vk

GPU occlusion culling using compute shader with Vulkan

Labels

Projects that are alternatives of or similar to Gpu occlusion culling vk

Granite
My personal Vulkan renderer
Stars: ✭ 709 (+1985.29%)
Mutual labels:  vulkan
D9vk
A Direct3D9 to Vulkan layer using the DXVK backend. [Upstreamed to DXVK]
Stars: ✭ 805 (+2267.65%)
Mutual labels:  vulkan
Vulkan
Examples and demos for the new Vulkan API
Stars: ✭ 29 (-14.71%)
Mutual labels:  vulkan
Vulkan
Examples and demos for the new Vulkan API
Stars: ✭ 6,870 (+20105.88%)
Mutual labels:  vulkan
Vk9
Direct3D 9 compatibility layer using Vulkan.
Stars: ✭ 799 (+2250%)
Mutual labels:  vulkan
Swfw
Pure C Simple Window Framework (to be rebased soon).
Stars: ✭ 23 (-32.35%)
Mutual labels:  vulkan
Ash
Vulkan bindings for Rust
Stars: ✭ 676 (+1888.24%)
Mutual labels:  vulkan
Ktt
Kernel Tuning Toolkit
Stars: ✭ 33 (-2.94%)
Mutual labels:  vulkan
Tvm
Open deep learning compiler stack for cpu, gpu and specialized accelerators
Stars: ✭ 7,494 (+21941.18%)
Mutual labels:  vulkan
Spartanengine
Game engine with an emphasis on architectual quality and performance
Stars: ✭ 869 (+2455.88%)
Mutual labels:  vulkan
Rendy
State of the art "build your own engine" kit powered by gfx-hal
Stars: ✭ 750 (+2105.88%)
Mutual labels:  vulkan
Nvk
Vulkan API for JavaScript/TypeScript
Stars: ✭ 774 (+2176.47%)
Mutual labels:  vulkan
Code Red
A Graphics Interface for DirectX12 and Vulkan
Stars: ✭ 27 (-20.59%)
Mutual labels:  vulkan
Pbr
An implementation of physically based shading & image based lighting in D3D11, D3D12, Vulkan, and OpenGL 4.
Stars: ✭ 722 (+2023.53%)
Mutual labels:  vulkan
Vkquake
Vulkan Quake port based on QuakeSpasm
Stars: ✭ 955 (+2708.82%)
Mutual labels:  vulkan
Anki 3d Engine
AnKi 3D Engine - Vulkan backend, modern renderer, scripting, physics and more
Stars: ✭ 688 (+1923.53%)
Mutual labels:  vulkan
Rfw Rs
Framework for playing around with rendering libraries in Rust
Stars: ✭ 23 (-32.35%)
Mutual labels:  vulkan
Librush
Graphics prototyping framework
Stars: ✭ 34 (+0%)
Mutual labels:  vulkan
Vktk
Vulkan Toolkit
Stars: ✭ 32 (-5.88%)
Mutual labels:  vulkan
Acid
A high speed C++17 Vulkan game engine
Stars: ✭ 838 (+2364.71%)
Mutual labels:  vulkan

GPU occlusion culling using compute shader with Vulkan

This demo follows the hierarchical depth comparing method described in Experiments in GPU-Based Occlusion Culling by Kostas Anagnostou. Mesh, instance, and indirect draw command data stay in device local memory after initialization.

The commands(VkDrawIndexedIndirectCommand) for vkCmdDrawIndexedIndirect in this demo is not batched into one command for all instances, or packed as in the article above, but expanded as per instance. As a result, culling can be performed by setting the instanceCount to zero or one of a command according to visibility computation. According to query data, the demo shows that per-instance commands do not slow down draw performance. Shown in the following screenshots of non-extreme cases, significant amount of draw time is saved by enabling frustum and occlusion culling. (The program also provides a frustum culling only mode for isolating the effects.)

The frame time taken by compute pipelines for mipchain generation and depth image transfer commands is not trivial. But the convenience remains that it does not raise with scene complexity.

case 1

case 2


Controls:

  • pan: ADRF
  • forward/backward: WS
  • orbit: arrow keys
  • zoom: mousewheel
  • F1: MDI batched no culling
  • F2: MDI per-instance frustum culling
  • F3: MDI per-instance frustum and occlusion culling
  • F4: F3 with blending enabled
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].