Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

License

NotificationsYou must be signed in to change notification settings

NVIDIA-RTX/NVRHI

Repository files navigation

Build Status

Introduction

NVRHI (NVIDIARenderingHardwareInterface) is a library that implements a common abstraction layer over multiple graphics APIs (GAPIs): Direct3D 11, Direct3D 12, and Vulkan 1.2. It works on Windows (x64 only) and Linux (x64 and ARM64).

Key features:

  • Automatic tracking of resource states and barrier placement (optional).
  • Automatic tracking of resource usage and lifetime, deferred and safe resource destruction.
  • Convenient and efficient resource binding model with little runtime overhead.
  • Easy direct interaction with the underlying GAPI when necessary.
  • Easy portability of the rendering code between the supported GAPIs.
  • Hidden sub-allocation of upload buffers and versioning of constant buffers.
  • Parallel command list recording and multi-queue rendering.
  • Supports all types of pipelines: Graphics, Compute, Ray Tracing, and Meshlet.
  • Validation layer and resource reflection for easy debugging.

NVRHI is used in several NVIDIA SDKs:

Notable third-party projects using NVRHI:

Various early versions of NVRHI have been used in various projects created at NVIDIA, including:

Requirements

  • Windows or Linux (x64 or ARM64)
  • CMake 3.10
  • A C++ 17 compiler (Visual Studio 2019, GCC 8 or Clang 6)
  • Windows SDK version 10.0.22621.0 or later for DX12 support

Building NVRHI

NVRHI can be configured to be used a set of static libraries in CMake-based projects, or as a single dynamic library.

To include NVRHI into a CMake project as static libraries:

  1. Add this repository as a submodule.
  2. Add aadd_subdirectory(nvrhi) directive to the parent CMakeLists.txt.
  3. Add dependencies to the necessary targets:
    • nvrhi for the interface headers, common utilities, and validation;
    • nvrhi_d3d11 for DX11 (enabled whenNVRHI_WITH_DX11 isON);
    • nvrhi_d3d12 for DX12 (enabled whenNVRHI_WITH_DX12 isON); and
    • nvrhi_vk for Vulkan (enabled whenNVRHI_WITH_VULKAN isON).

To build NVRHI as a shared library (DLL or .so):

  1. Clone this repository recursively (including submodules).
  2. Generate the project with CMake:
    • Set theNVRHI_BUILD_SHARED variable toON.
    • Make sure to set the target platform to a 64-bit one. 32-bit builds are not supported.
  3. Build and install as normal.

Using NVRHI in Applications

See theprogramming guide and thetutorial.

NVAPI Support

NVRHI includes optional support for certain DX11 and DX12 extensions available through the NVAPI library. The library is not distributed with NVRHI but is available separatelyhere.

To enable NVAPI support, extract the NVAPI SDK into thenvapi subfolder of your main project and set theNVRHI_WITH_NVAPI CMake variable toON.

The following extensions are supported:

  • Opacity Micro-Maps (DX12, Ada+)
  • Shader Execution Reordering on DX12 (DX12, Ada+)
  • Single Pass Stereo (Pascal+)
  • Fast Geometry Shader with optional coordinate swizzling (Maxwell+)
  • Conservative Raster and other rasterizer features (Maxwell+)
  • HLSL Extensions through a fake UAV slot (seethis blog post)

RTXMU Integration

NVRHI includes an optional integration of theRTXMU library. The library is included as a git submodule, and can be enabled with theNVRHI_WITH_RTXMU CMake variable.

When RTXMU integration is enabled, all bottom-level ray tracing acceleration structures (BLAS'es) are managed by that library. All built BLAS'es that have theAllowCompaction flag set are automatically compacted whenICommandList::compactBottomLevelAccelStructs method is called. No other configuration is necessary.

License

NVRHI is licensed under theMIT License.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp