Devsh-Graphics-Programming/Nabla
Vulkan, OptiX and CUDA Interoperation Modular Rendering Library and Framework for PC/Linux/Android
解决的问题
Nabla 通过提供经过筛选的、稳定的 Vulkan 扩展和功能配置,简化了低级别 GPU 编程,减少了开发者手动追踪硬件特性和快速演进的 API 规范的需求。它通过允许在 CPU 和 GPU 环境中共享逻辑和进行单元测试,弥合了 CPU 与 GPU 开发之间的差距。
工作原理
Nabla 将 SPIR-V 和 Vulkan 视为参考标准,构建了一个通过引用计数管理 GPU 对象生命周期,并使用时间线信号量同步 CPU-GPU 操作的框架。它包含一个独特的 HLSL2021 标准模板库,允许 HLSL 的子集同时编译为 C++ 和 SPIR-V,从而实现 GPU 逻辑在 CPU 上的测试。系统还包含一个用于资产管理的虚拟文件系统、基于可取消 Future 的异步 I/O,以及使用 Merkle 树消除重复对象的 GPU 优化资产转换器。
适用人群
需要高性能、灵活且与线程无关的框架来构建自定义渲染设置、基于物理的渲染(PBR)或移植旧版 OpenGL 和 DirectX 应用程序的图形程序员和引擎开发者。
主要亮点
- 统一的 HLSL/C++ 库:支持 GPU 逻辑的单源库,可在 CPU 上进行单元测试。
- 自动生命周期追踪:使用引用计数确保 GPU 对象在队列中仍在使用时不会被销毁。
- 精选核心配置:提供预选的 Vulkan 扩展集,避免手动进行硬件兼容性检查的复杂性。
- 高级内存访问:完全支持 Buffer Device Address (BDA) 和 Descriptor Indexing,实现动态资源绑定。
- 异步基础设施:实现基于可取消 Future 的 I/O 和虚拟文件系统,以实现高效的资产加载。
相关
- 项目
- 项目
- 项目
- 项目
- 项目