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 Tree 消除重複物件的 GPU 優化資產轉換器。

適用對象

需要高效率、彈性且與執行緒無關的框架,以建構自訂渲染設定、基於物理的渲染(PBR)或移植舊版 OpenGL 與 DirectX 應用程式的圖形程式設計師與引擎開發者。

主要亮點

  • 統一的 HLSL/C++ 庫:支援 GPU 邏輯的單一來源程式庫,可在 CPU 上進行單元測試。
  • 自動生命週期追蹤:使用參考計數確保 GPU 物件在佇列中仍在使用時不會被銷毀。
  • 精選核心配置:提供預先選定的 Vulkan 擴展集,避免手動進行硬體相容性檢查的複雜性。
  • 進階記憶體存取:完全支援 Buffer Device Address (BDA) 與 Descriptor Indexing,實現動態資源繫結。
  • 非同步基礎設施:實作可取消 Future 基礎的 I/O 與虛擬檔案系統,以實現高效的資產載入。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案