博客 / 詳情

返回

Zenith.NET v0.0.2 發佈 — 統一的 .NET GPU 編程庫,支持 DX12/Vulkan + 6 大 UI 框架

大家好!我是 @qian-o,今天很高興向大家介紹我的新項目 Zenith.NET 的首個公開預覽版本!

🎯 項目簡介

Zenith.NET 是一個現代的、跨平台的 .NET 圖形與計算庫,旨在為 .NET 開發者提供統一的 GPU 編程接口。無論你是要做高性能渲染、圖形應用,還是 GPU 通用計算,Zenith.NET 都能幫你屏蔽底層 API 的差異,讓代碼在不同平台上無縫運行。

🖼️ 效果展示

以下是使用 Zenith.NET 實現的 Sponza 場景渲染示例,展示了延遲渲染、級聯陰影貼圖(CSM)、地面實況環境光遮蔽(GTAO)等高級渲染技術

示例項目: SponzaScene — 完整的延遲渲染管線實現

✨ 核心特性

  • 🔄 統一的 GPU API — 一套代碼,多個後端(DirectX12、Vulkan,Metal 規劃中)
  • 🎨 豐富的 UI 框架集成 — 支持 Avalonia、MAUI、WinForms、WinUI、WPF 等 6 大框架
  • ⚡ 高性能設計 — 充分利用現代 GPU 能力,支持 Native AOT 編譯
  • 🧩 模塊化架構 — 核心庫 + 後端 + 擴展的清晰分層設計
  • 🛠️ 實用擴展 — 內置 ImGui、ImageSharp、Slang 着色器編譯器等集成

📦 NuGet 包

核心庫

  • Zenith.NET — 核心圖形抽象層

圖形後端

  • Zenith.NET.DirectX12 — DirectX 12 後端 ✅
  • Zenith.NET.Vulkan — Vulkan 後端 ✅
  • Zenith.NET.Metal — Metal 後端 🚧 規劃中

UI 框架集成

  • Zenith.NET.Views — 共享視圖抽象
  • Zenith.NET.Views.Avalonia — Avalonia UI
  • Zenith.NET.Views.Maui — .NET MAUI
  • Zenith.NET.Views.WinForms — Windows Forms
  • Zenith.NET.Views.WinUI — WinUI 3 / Uno Platform
  • Zenith.NET.Views.WPF — WPF

擴展庫

  • Zenith.NET.Extensions.ImageSharp — 紋理加載
  • Zenith.NET.Extensions.ImGui — Dear ImGui 集成
  • Zenith.NET.Extensions.Slang — Slang 着色器編譯器
  • Zenith.NET.Extensions.Skia — SkiaSharp 集成 🚧 規劃中

🎓 如何開始?

⚠️ 當前狀態説明

這是一個早期預覽版本,目前還沒有完整的文檔和入門指南。如果你想了解如何使用 Zenith.NET,推薦通過以下方式:

  1. 📂 查看示例項目 — Zenith.NET.Samples 倉庫展示了各個 UI 框架的集成方式
  2. 🧪 參考實驗代碼 — 主倉庫的 Experiments 目錄包含了更多示例
  3. 🔍 參考 Veldrid — Zenith.NET 的設計結構與 Veldrid 非常相似,如果你熟悉 Veldrid,上手會很快
  4. 💡 閲讀源碼 — 核心 API 設計簡潔清晰,可以直接閲讀源碼瞭解用法

📚 完整示例

想要看完整的可運行項目?查看以下示例:

  • 核心渲染邏輯 — 完整的渲染器實現
  • WPF 集成示例 — 在 WPF 中使用 Zenith.NET
  • MAUI 集成示例 — 在 .NET MAUI 中使用
  • Avalonia 集成示例 — 在 Avalonia 中使用
  • 更多 UI 框架示例 — WinForms、WinUI、Uno Platform

🛠️ 快速安裝

# 安裝核心包
dotnet add package Zenith.NET

# 選擇圖形後端
dotnet add package Zenith.NET.DirectX12
# 或
dotnet add package Zenith.NET.Vulkan

# 如果需要 UI 集成
dotnet add package Zenith.NET.Views.(Avalonia、Maui、WinForms、WinUI、WPF)

🎯 設計理念

如果你熟悉 Veldrid,你會發現 Zenith.NET 的設計非常相似:

  • 統一的抽象層,屏蔽底層 API 差異
  • 顯式的資源管理和命令記錄
  • 清晰的對象生命週期

同時,Zenith.NET 在此基礎上增加了:

  • 更現代的 .NET API 設計(支持 .NET 10+)
  • 原生 AOT 支持
  • 更豐富的 UI 框架集成
  • 內置常用擴展(ImGui、Slang 等)

🚧 當前限制

作為早期預覽版,請注意:

  • 暫無系統化文檔 — 文檔正在編寫中,目前只能通過示例學習
  • API 可能變化 — 後續版本中 API 可能會有破壞性更改
  • ⚠️ Metal 後端未完成 — macOS/iOS 支持還在開發中
  • ⚠️ 可能存在 Bug — 這是預覽版,歡迎反饋問題

🤝 為什麼分享?

雖然項目還在早期階段,但我希望:

  1. 收集反饋 — 聽聽社區對 API 設計和功能的意見
  2. 尋找協作者 — 如果你對跨平台圖形編程感興趣,歡迎參與
  3. 推動進展 — 早期曝光能激勵我更快完善文檔和功能
  4. 幫助他人 — 也許有人正在尋找類似的解決方案

🔗 鏈接

  • 📦 GitHub 倉庫: https://github.com/qian-o/Zenith.NET
  • 🎨 示例倉庫: https://github.com/qian-o/Zenith.NET.Samples
  • 📥 NuGet 包: https://www.nuget.org/packages/Zenith.NET
  • 📋 發佈説明: https://github.com/qian-o/Zenith.NET/releases/tag/v0.0.2

💬 討論與反饋

如果你:

  • ✅ 對項目有任何疑問或建議
  • ✅ 發現了 Bug 或問題
  • ✅ 想要貢獻代碼或文檔
  • ✅ 有功能請求

歡迎在以下地方交流:

  • GitHub Discussions — 一般討論和問題
  • GitHub Issues — Bug 報告和功能請求

🙏 致謝

感謝所有啓發了這個項目的開源項目,特別是:

  • Veldrid — 優秀的跨平台圖形庫,深刻影響了 Zenith.NET 的架構設計
  • Silk.NET — 提供了底層圖形 API 的 .NET 綁定
  • Slang — 強大的跨平台着色器編譯器

注意: 這是一個個人項目,目前還在積極開發中。如果你決定在生產環境使用,請做好充分測試!

期待聽到大家的反饋!🚀


user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.