From a4747aff4d5151be04c190b4e9036836a9f98590 Mon Sep 17 00:00:00 2001 From: shg8 <38004233+shg8@users.noreply.github.com> Date: Fri, 23 Feb 2024 01:43:02 -0600 Subject: [PATCH] Update README.md --- README.md | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index a0bdea9..5ae781e 100644 --- a/README.md +++ b/README.md @@ -5,19 +5,34 @@ VulkanSplatting is an (not-yet-highly-) optimized, cross-platform implementation ![VulkanSplatting Demo macOS](https://github.com/shg8/VulkanSplatting/assets/38004233/66542056-ce30-4998-a612-dd4f6792599e) +## TODO +The goal of this project is to provide a go-to implementation for high performance rendering of point-based radiance fields that works on all platforms, but we need your help! Please feel free to open an issue if you have any ideas or are interested in contributing. + +- [ ] Better controls and GUI on GLFW +- [ ] Implement SOTA parallel radix sort for sorting Gaussian instances +- [ ] Use Vulkan subgroups to batch Gaussian retrievals at the warp level +- [ ] OpenXR support +- [ ] Apps for iOS and visionOS +- [ ] Training + ## Command Line Usage ``` ./vulkan_splatting [options] ``` ### Options -- `-h`, `--help`: Show help message and exit -- `-v`, `--validation-layers`: Enable Vulkan validation layers -- `-d`, `--device`: Select physical device by index -- `-i`, `--immediate-swapchain`: Set swapchain mode to immediate (VK_PRESENT_MODE_IMMEDIATE_KHR) -## Prebuilt Binaries -We provide prebuilt binaries on amd64 for both Windows and Linux for each commit. There're available under the *Artifacts* section of each run [here](https://github.com/shg8/VulkanSplatting/actions/workflows/cmake-multi-platform.yml). +- `--validation`: Enable Vulkan validation layers. This is useful for debugging and development purposes. + +- `-v`, `--verbose`: Enable verbose logging. This will output more detailed logs, which can be helpful for troubleshooting issues. + +- `-d`, `--device `: Select physical device by index. This allows you to specify which physical device (e.g., GPU) to use for rendering. + +- `-i`, `--immediate-swapchain`: Set swapchain mode to immediate (VK_PRESENT_MODE_IMMEDIATE_KHR). This can affect the presentation mode of the swapchain. + +- `--no-gui`: Disable GUI. This runs the application in a headless mode, without a graphical user interface. + +- `scene `: Path to the scene file. This is a positional argument that specifies the path to the .ply file that contains the 3D scene to be rendered. ## Building ### Linux @@ -25,14 +40,16 @@ VulkanSplatting requires the following dependencies: `Vulkan headers, Vulkan validation layers, glslangValidator, glfw, glm` - The easiest way to install the first three is through the [LunarG Vulkan SDK](https://www.lunarg.com/vulkan-sdk/). Alternatively, you can install the corresponding packages from your distro. For Ubuntu, the packages to install are `vulkan-headers, vulkan-validationlayers, glslang-dev, libglfw3-dev, libglm-dev`. ### Windows -After installing [LunarG Vulkan SDK](https://www.lunarg.com/vulkan-sdk/), set the `VULKAN_SDK` environmental variable to the install path. Alternatively, pass `-DVULKAN_SDK=\INSTALL\LOCATION\OF\YOUR\SDK` to CMake when configuring. +After installing Vulkan SDK, set the `VULKAN_SDK` environmental variable to the install path. Alternatively, pass `-DVULKAN_SDK=\INSTALL\LOCATION\OF\YOUR\SDK` to CMake when configuring. A full CMake configure command is as follows: ``` mkdir .\VulkanSplatting\build cmake -DCMAKE_BUILD_TYPE=Release -DVULKAN_SDK=\INSTALL\LOCATION\OF\YOUR\SDK -S .\VulkanSplatting -B .\VulkanSplatting\build ``` + +### macOS +After installing the Vulkan SDK, please proceed with CMake configuration and build steps as usual.