nvk-optix
Bindings of NVIDIA's Optix Denoiser for node-vulkan. Allows to share VkBuffers between Vulkan and the Optix Denoiser for real-time denoising.
Screenshots
API
denoiser.create
Name | Type | Description |
---|---|---|
width | Number | Width of the input to operate |
height | Number | Height of the input to operate |
Creates a new instance of the denoiser with the desired with and height.
denoiser.destroy
Destroyes the denoiser and all imported memory buffers and semaphores.
denoiser.denoise
Name | Type | Description |
---|---|---|
blendFactor | Number | Blending factor (0-1 range) of the input and the denoised output |
denoiser.setVulkanInputMemory
Name | Type | Description |
---|---|---|
color | BigInt | Importable Vulkan handle to the color channel |
albedo | BigInt | Importable Vulkan handle to the albedo channel |
normal | BigInt | Importable Vulkan handle to the normal channel |
- Color is the final image to denoise
- Albedo contains the primary hit albedo color
- Normal contains the primary hit normals of the scene in camera-space
Example:
let memoryGetWin32HandleInfoKHRInfo = ;memoryGetWin32HandleInfoKHRInfomemory = deviceMemory;memoryGetWin32HandleInfoKHRInfohandleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT; let buffer = 0x8;result = ;; let colorHandle = buffer0;... denoiser;
denoiser.setWaitSemaphore
Name | Type | Description |
---|---|---|
handle | BigInt | Importable Vulkan Semaphore |
Vulkan Semaphore which is used to wait for a finished render of a Vulkan ray-traced image, which then can be processed by the denoiser.
Example:
let semaphoreGetWin32HandleInfoKHRInfo = ;semaphoreGetWin32HandleInfoKHRInfosemaphore = denoiseWaitSemaphore;semaphoreGetWin32HandleInfoKHRInfohandleType = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT; let buffer = 0x8;result = ;; let waitHandle = buffer0; denoiser;
denoiser.setUpdateSemaphore
Name | Type | Description |
---|---|---|
handle | BigInt | Importable Vulkan Semaphore |
Vulkan Semaphore which is used to indicate when the denoiser finished denoising, so Vulkan can (for example) display the denoised result.
Example:
let semaphoreGetWin32HandleInfoKHRInfo = ;semaphoreGetWin32HandleInfoKHRInfosemaphore = denoiseUpdateSemaphore;semaphoreGetWin32HandleInfoKHRInfohandleType = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT; let buffer = 0x8;result = ;; let updateHandle = buffer0; denoiser;