Home

Awesome

NVIDIA RENDER INTERFACE (NRI)

Status

NRI is a low-level abstract render interface, which has been designed to support all low level features of D3D12 and Vulkan GAPIs, but at the same time to simplify usage and reduce the amount of code needed (especially compared with VK).

Goals:

Non-goals:

Currently supported GAPIs:

Key features:

Available interfaces:

(some interfaces can be missing in the listing)

NRI sample code:

C/C++ INTERFACE DIFFERENCES

C++C
nri::InterfaceNriInterface
nri::Enum::MEMBERNriEnum_MEMBER
nri::CONSTNRI_CONST
nri::nriFunctionnriFunction
nri::FunctionnriFunction
Reference &Pointer *

ENTITIES

NRID3D11D3D12VK
DeviceID3D11DeviceID3D12DeviceVkDevice
CommandBufferID3D11DeviceContext (deferred)ID3D12CommandListVkCommandBuffer
CommandQueueID3D11DeviceContext (immediate)ID3D12CommandQueueVkQueue
FenceID3D11FenceID3D12FenceVkSemaphore (timeline)
CommandAllocatorN/AID3D12CommandAllocatorVkCommandPool
BufferID3D11BufferID3D12ResourceVkBuffer
TextureID3D11TextureID3D12ResourceVkImage
MemoryN/AID3D12HeapVkDeviceMemory
DescriptorID3D11*ViewD3D12_CPU_DESCRIPTOR_HANDLEVk*View or VkSampler
DescriptorSetN/AN/AVkDescriptorSet
DescriptorPoolN/AID3D12DescriptorHeapVkDescriptorPool
PipelineLayoutN/AID3D12RootSignatureVkPipelineLayout
PipelineID3D11*Shader and ID3D11*StateID3D12StateObjectVkPipeline
AccelerationStructureN/AID3D12ResourceVkAccelerationStructure

BUILD INSTRUCTIONS

Notes:

CMAKE OPTIONS

VK only:

D3D12 only:

AGILITY SDK

Overview and Download sections can be found here.

D3D12 backend uses Agility SDK to get access to most recent D3D12 features. As soon as these features become available in the OS, installation of Agility SDK will be deprecated.

Installation steps:

SAMPLES OVERVIEW

NRI samples can be found here.

Samples:

LICENSE

NRI is licensed under the MIT License. This project includes NVAPI software. All uses of NVAPI software are governed by the license terms specified here.