Collection of Vulkan samples

Overview

Vulkan Samples

This repository holds many samples, showing various aspect of Vulkan, debugging tips and usage of other Nvidia tools.

Most of the samples have for starting point, the base_sample sample. They are applying a few modifications to that base sample to illustrate the modifications required to enable the feature or what need to be demonstrate.

Each sample have its own documentation written in Markdown describing what was modified and where to get more information.

Build

Easy Method (Windows)

Clone this repository

git clone https://github.com/nvpro-samples/vk_samples.git
  1. Deploy.bat : pull and update all dependencies.
  2. Build.bat : build all projects in release and optionally to debug.
  3. Install.bat : copy the binaries and dlls to the _Install directory.

Hand Made

git clone --recursive --shallow-submodules https://github.com/nvpro-samples/nvpro_core.git
git clone https://github.com/nvpro-samples/vk_samples.git

Generate solution

cd vk_samples
mkdir build
cd build
cmake ..

Note: If there are missing dependencies in nvpro_core, run the following command in nvpro_core directory.

git submodule update --init --recursive --checkout --force

Extra SDK

Some samples depend on other SDKs. They are only required if you intend to build these projects.

Samples

Base Sample

base_sample

Extensions: VK_KHR_ray_tracing_pipeline, VK_KHR_acceleration_structure, VK_KHR_ray_query, VK_KHR_deferred_host_operations, VK_KHR_buffer_device_address

This is a simple but complete Vulkan sample. It loads glTF scenes and renders using rasterizer or ray tracer. Note, at some point, the other samples were created from this one.

Aftermath SDK

Extensions: VK_NV_device_diagnostics_config, VK_NV_device_diagnostic_checkpoints
Adding Aftermath SDK to automatically generate GPU crash dump when a there is a device lost. Dumps are written before the computer crashes and can be inspected in Nsight Graphics.

Inherited Viewport

Extensions: VK_NV_inherited_viewport_scissor
Using the inherited extension to avoid re-generating multiple recorded command buffers for different viewport sizes.

Multi-Sampling Anti-Aliasing (MSAA)

msaa

Using multi-sampling anti-aliasing in efficient way for the rasterizer.

Shader Debug Printf

debug_printf
Extensions: VK_KHR_shader_non_semantic_info

Adding debug printing information directly in the shader code.

OptiX Denoiser

img
Extensions: VK_KHR_synchronization2, VK_KHR_external_memory

Using the OptiX denoiser on the path traced image to remove residual noise.

HDR sampling


Extensions:

High Dynamic Range image sampling is added to the base sample for both raster and ray trace, using multiple importance sampling acceleration structure and convoluted cubemaps.

LICENSE

Copyright 2021 NVIDIA CORPORATION. Released under Apache License, Version 2.0. See "LICENSE" file for details.

You might also like...
dump and replace shaders of any OpenGL or Vulkan application

deshade deshade is a library that allows you to dump and replace the shaders of any OpenGL or Vulkan application, which includes: GL2 + extensions, GL

A Direct3D9 to Vulkan layer using the DXVK backend. [Upstreamed to DXVK]

This work has been upstreamed and is continuing development there This repo is only open for the remaining issues on the tracker https://github.com/do

C++/openGL/Vulkan 3D engine

Deus In Machina engine C++/GL/Vulkan 3D graphic engine This project should be an abstraction of the engine that I am using on BOC: Birth of Cultures,

collection of C/C++ programs that try to get compilers to exploit undefined behavior

------------------------------------------------------------------------------- UB Canaries: A collection of C/C++ programs that detect undefined beh

A collection of different Cellular Automata implementations for recreational purposes
A collection of different Cellular Automata implementations for recreational purposes

A collection of different Cellular Automata implementations for recreational purposes

SilentPatch for Yakuza Remastered Collection (Yakuza 3, 4 and 5)

Yakuza Remastered Collection is a collection consisting of Yakuza 3, Yakuza 4, and Yakuza 5, released on PC in January 2021. At the time of writing this, the games have several issues, one of them being high CPU usage. Since currently no official patches have been released yet, this patch aims to resolve those issues in Yakuza 3 and Yakuza 4 (Yakuza 5 might come later).

Learn how to connect your Flexispot (LoctekMotion) desk to the internet. This repository contains a collection of scripts to get your started, combined with research and instructions.
Learn how to connect your Flexispot (LoctekMotion) desk to the internet. This repository contains a collection of scripts to get your started, combined with research and instructions.

(image source: Windows Central) Turn your LoctekMotion/FlexiSpot desk into a smart desk Recently I acquired a new standing desk from FlexiSpot. During

Collection of C++ containers extracted from LLVM

lvc lvc is a set of C++ containers extracted form LLVM for an easier integration in external projects. To avoid any potential conflit, the llvm namesp

Collection of cross-platform single-header C libraries for doing a lot of stuff! (Still WIP)

ice_libs Collection of cross-platform single-header C libraries for doing a lot of stuff! (Still WIP) Brief ice_libs is collection of Single-Header C

Comments
  • Reimplement Optix Denoiser in Vulkan Compute

    Reimplement Optix Denoiser in Vulkan Compute

    Hi,

    Great to have this repo out there.

    Is there any plan or chance of making a plan to get the denoiser from Optix ported over to Vulkan? It'd be a lot cleaner and more widely useful that way than accessed through CUDA interrop.

    Thanks!

    opened by ahcox 1
  • Build issues

    Build issues

    Hi, I'm getting an error trying to build this sample:

    1>perproject_globals.cpp 1>D:\1111\vk_samples\base_sample\src\vulkan_sample.hpp(40,27): error C2039: 'AppBaseVkCreateInfo': is not a member of 'nvvk' (compiling source file D:\1111\vk_samples\base_sample\src\main.cpp) 1>D:\1111\nvpro_core\nvvk/raypicker_vk.hpp(65): message : see declaration of 'nvvk' (compiling source file D:\1111\vk_samples\base_sample\src\main.cpp) 1>D:\1111\vk_samples\base_sample\src\vulkan_sample.hpp(40,46): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int (compiling source file D:\1111\vk_samples\base_sample\src\main.cpp) 1>D:\1111\vk_samples\base_sample\src\vulkan_sample.hpp(40,46): error C2143: syntax error: missing ',' before '&' (compiling source file D:\1111\vk_samples\base_sample\src\main.cpp) 1>D:\1111\vk_samples\base_sample\src\vulkan_sample.hpp(40,8): error C3668: 'VulkanSample::create': method with override specifier 'override' did not override any base class methods (compiling source file D:\1111\vk_samples\base_sample\src\main.cpp)

    opened by BattleAxeVR 1
Owner
NVIDIA DesignWorks Samples
NVIDIA DesignWorks Samples
A collection of tools, libraries, and tests for Vulkan shader compilation.

Shaderc A collection of tools, libraries and tests for shader compilation. At the moment it includes: glslc, a command line compiler for GLSL/HLSL to

Google 1.4k Dec 29, 2022
The old Windows NT OpenGL samples/SDK from an MSDN CD.

The OpenGL API is supported on a variety of graphics hardware; the software in this release provides support for graphics hardware including basic emulation on any video adapter that is supported with the operating system, and accelerated graphics hardware that is supported by an OpenGL mini-client driver (MCD) or an OpenGL installable client driver (ICD).

Ian Hanschen 19 Aug 13, 2022
My Code Samples and Mods for - CODI6 ARGB CONTROLLER -

Gelid-Codi6-ARGB-Controller A small collection of codes for codi6 from Gelid Solutions. try and error ..... my led devices : 7 * ARCTIC P12 PWM PST A-

Klaus 1 Oct 25, 2021
Generate representative samples from Pwned Passwords (HIBP)

Generate representative samples from Pwned Passwords (HIBP) This program generates representative samples from Pwned Passwords (HIBP), taking the coun

Solar Designer 11 Nov 24, 2022
Android NDK samples with Android Studio

NDK Samples This repository contains Android NDK samples with Android Studio C++ integration. These samples use the new CMake Android plugin with C++

Android 9.2k Dec 27, 2022
A personal collection of Windows CVE I have turned in to exploit source, as well as a collection of payloads I've written to be used in conjunction with these exploits.

This repository contains a personal collection of Windows CVE I have turned in to exploit source, as well as a collection of payloads I've written to

null 85 Dec 28, 2022
layer to control the global priority of any vulkan application

vk-force-priority vk-force-priority allows you to control the global priority of any vulkan application. Building from Source Dependencies Before buil

Georg Lehmann 5 Sep 2, 2021
Vulkan and other GPU API bugs I found.

GPU-my-list-of-bugs what is it - list of bugs I found writing shaders, mostly shader bugs. Maybe this is my code bug or/and shader bugs, but this code

Danil 14 Dec 26, 2022
An implementation of physically based shading & image based lighting in D3D11, D3D12, Vulkan, and OpenGL 4.

Physically Based Rendering (c) 2017 - 2018 Michał Siejak (@Nadrin) An implementation of physically based shading model & image based lighting in vario

Michał Siejak 1.1k Jan 4, 2023
SMOL-V: like Vulkan/Khronos SPIR-V, but smaller.

SMOL-V: like Vulkan/Khronos SPIR-V, but smaller. Overview SMOL-V encodes Vulkan/Khronos SPIR-V format programs into a form that is smoller, and is mor

Aras Pranckevičius 271 Dec 19, 2022