大家好!我是 @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 UIZenith.NET.Views.Maui— .NET MAUIZenith.NET.Views.WinForms— Windows FormsZenith.NET.Views.WinUI— WinUI 3 / Uno PlatformZenith.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,推薦通過以下方式:
- 📂 查看示例項目 — Zenith.NET.Samples 倉庫展示了各個 UI 框架的集成方式
- 🧪 參考實驗代碼 — 主倉庫的 Experiments 目錄包含了更多示例
- 🔍 參考 Veldrid — Zenith.NET 的設計結構與 Veldrid 非常相似,如果你熟悉 Veldrid,上手會很快
- 💡 閲讀源碼 — 核心 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 — 這是預覽版,歡迎反饋問題
🤝 為什麼分享?
雖然項目還在早期階段,但我希望:
- 收集反饋 — 聽聽社區對 API 設計和功能的意見
- 尋找協作者 — 如果你對跨平台圖形編程感興趣,歡迎參與
- 推動進展 — 早期曝光能激勵我更快完善文檔和功能
- 幫助他人 — 也許有人正在尋找類似的解決方案
🔗 鏈接
- 📦 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 — 強大的跨平台着色器編譯器
注意: 這是一個個人項目,目前還在積極開發中。如果你決定在生產環境使用,請做好充分測試!
期待聽到大家的反饋!🚀