大家好!我是 @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
🛠️ 快速安装
bash
# 安装核心包
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 --- 强大的跨平台着色器编译器
注意: 这是一个个人项目,目前还在积极开发中。如果你决定在生产环境使用,请做好充分测试!
期待听到大家的反馈!🚀