NVIDIA-RTX/NVRHI

GitHub: NVIDIA-RTX/NVRHI

NVRHI 是 NVIDIA 提供的跨图形 API(D3D11/D3D12/Vulkan)渲染抽象层库,通过自动化资源管理和统一接口简化高性能渲染引擎的开发与移植。

Stars: 1865 | Forks: 200

# NVRHI [![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/6a1280ee59184029.svg)](https://github.com/NVIDIA-RTX/NVRHI/actions/workflows/build.yml) ## 简介 NVRHI(**NV**IDIA **R**endering **H**ardware **I**nterface)是一个在多种图形 API (GAPI)(Direct3D 11、Direct3D 12 和 Vulkan 1.3)之上实现通用抽象层的库。它支持 Windows(仅限 x64)和 Linux(x64 和 ARM64)。 主要特性: - 自动跟踪资源状态并放置屏障(可选)。 - 自动跟踪资源使用情况和生命周期,延迟且安全地销毁资源。 - 便捷高效的资源绑定模型,运行时开销极小。 - 在必要时可轻松与底层 GAPI 直接交互。 - 渲染代码在受支持的 GAPI 之间易于移植。 - 上传缓冲区的隐藏子分配和常量缓冲区的版本控制。 - 并行命令列表记录和多队列渲染。 - 支持所有类型的管线:Graphics、Compute、Ray Tracing 和 Meshlet。 - 验证层和资源反射,便于调试。 NVRHI 被用于多个 NVIDIA SDK 中: - [Adaptive and Variable-Rate Shading SDK](https://github.com/NVIDIAGameWorks/nas-sample) - [Donut Framework](https://github.com/NVIDIA-RTX/Donut) 及其 [示例](https://github.com/NVIDIA-RTX/Donut-Samples) - [In-Game Inference (NVIGI) 示例](https://github.com/NVIDIA-RTX/NVIGI-3d-Sample) - [Opacity Micro-Map SDK](https://github.com/NVIDIA-RTX/OMM) - [RTX Character Rendering SDK](https://github.com/NVIDIA-RTX/RTXCR) - [RTX Mega Geometry SDK](https://github.com/NVIDIA-RTX/RTXMG) - [RTX Neural Shading SDK](https://github.com/NVIDIA-RTX/RTXNS) - [RTX Neural Texture Compression SDK](https://github.com/NVIDIA-RTX/RTXNTC) - [RTX Path Tracing SDK](https://github.com/NVIDIA-RTX/RTXPT) - [RTX Texture Filtering SDK](https://github.com/NVIDIA-RTX/RTXTF) - [RTX Texture Streaming SDK](https://github.com/NVIDIA-RTX/RTXTS) - [RTXDI SDK](https://github.com/NVIDIA-RTX/RTXDI) - [RTXGI SDK](https://github.com/NVIDIA-RTX/RTXGI) 使用 NVRHI 的著名第三方项目: - [RBDoom3-BFG](https://github.com/RobertBeckebans/RBDOOM-3-BFG) NVRHI 的各个早期版本已被用于在 NVIDIA 创建的多个项目中,包括: - [Asteroids 演示](https://developer.nvidia.com/blog/using-turing-mesh-shaders-nvidia-asteroids-demo) - [DLSS SDK](https://developer.nvidia.com/dlss) - [VRWorks](https://developer.nvidia.com/vrworks) - [VXGI](https://developer.nvidia.com/vxgi) - [WaveWorks](https://developer.nvidia.com/waveworks) ## 环境要求 * Windows 或 Linux(x64 或 ARM64) * CMake 3.10 * C++ 17 编译器(Visual Studio 2019、GCC 8 或 Clang 6) * Windows SDK 版本 10.0.22621.0 或更高版本(用于支持 DX12) ## 构建 NVRHI NVRHI 可以配置为在基于 CMake 的项目中用作一组静态库,或作为单个动态库使用。 要将 NVRHI 作为静态库包含到 CMake 项目中: 1. 将此仓库添加为 submodule。 2. 在父级的 CMakeLists.txt 中添加 `add_subdirectory(nvrhi)` 指令。 3. 为必要的目标添加依赖项: * `nvrhi` 用于接口头文件、通用工具和验证; * `nvrhi_d3d11` 用于 DX11(当 `NVRHI_WITH_DX11` 为 `ON` 时启用); * `nvrhi_d3d12` 用于 DX12(当 `NVRHI_WITH_DX12` 为 `ON` 时启用);以及 * `nvrhi_vk` 用于 Vulkan(当 `NVRHI_WITH_VULKAN` 为 `ON` 时启用)。 要将 NVRHI 构建为共享库(DLL 或 .so): 1. 递归克隆此仓库(包括 submodule)。 2. 使用 CMake 生成项目: * 将 `NVRHI_BUILD_SHARED` 变量设置为 `ON`。 * 确保将目标平台设置为 64 位。不支持 32 位构建。 3. 像往常一样进行构建和安装。 ## 在应用程序中使用 NVRHI 参见[编程指南](doc/ProgrammingGuide.md)和[教程](doc/Tutorial.md)。 ## NVAPI 支持 NVRHI 包含对通过 NVAPI 库提供的某些 DX11 和 DX12 扩展的可选支持。该库不随 NVRHI 一起分发,但可在[此处](https://developer.nvidia.com/nvapi)单独获取。 要启用 NVAPI 支持,请将 NVAPI SDK 解压到主项目的 `nvapi` 子文件夹中,并将 `NVRHI_WITH_NVAPI` CMake 变量设置为 `ON`。 支持以下扩展: - Cluster Level Acceleration Structures (DX12) - Linear Swept Spheres (DX12, Blackwell+) - Opacity Micro-Maps (DX12, Ada+) - Shader Execution Reordering on DX12 (DX12, Ada+) - Single Pass Stereo (Pascal+) - 带有可选坐标 swizzling 的 Fast Geometry Shader (Maxwell+) - Conservative Raster 和其他光栅化器特性 (Maxwell+) - 通过虚假 UAV 槽位实现的 HLSL 扩展(参见[此博客文章](https://developer.nvidia.com/unlocking-gpu-intrinsics-hlsl)) ## RTXMU 集成 NVRHI 包含对 [RTXMU](https://github.com/NVIDIA-RTX/RTXMU) 库的可选集成。该库作为 git submodule 包含在内,可以通过 `NVRHI_WITH_RTXMU` CMake 变量启用。 当启用 RTXMU 集成时,所有底层光线追踪加速结构 (BLAS) 均由该库管理。当调用 `ICommandList::compactBottomLevelAccelStructs` 方法时,所有设置了 `AllowCompaction` 标志且已构建的 BLAS 都将被自动压缩。无需进行其他配置。 ## 许可证 NVRHI 基于 [MIT 许可证](LICENSE.txt) 授权。
标签:Bash脚本, C++, Direct3D 11, Direct3D 12, GPU编程, NVRHI, RTX, Vulkan, 光线追踪, 图形API, 图形渲染, 图形调试, 多线程渲染, 实时渲染, 抽象层, 数据擦除, 游戏开发, 硬件接口, 网格着色, 计算管线, 资源管理, 镜像验证, 高性能计算