Zenith.NET v0.0.6 发布 🧧 — API 大幅精简,为 Metal 后端铺路

大家好!我是 @qian-oZenith.NET v0.0.6 正式发布了!

这个版本的核心主题是 精简:为了让 API 更好地适配即将上线的 Metal 后端,我们对资源绑定模型、着色器阶段和光线追踪方案做了一次大规模的重构和瘦身。

🎯 项目简介

Zenith.NET 是一个现代的、跨平台的 .NET 图形与计算库,旨在为 .NET 开发者提供统一的 GPU 编程接口。无论你是要做高性能渲染、图形应用,还是 GPU 通用计算,Zenith.NET 都能帮你屏蔽底层 API 的差异,让代码在不同平台上无缝运行。

📦 GitHub 仓库:https://github.com/qian-o/Zenith.NET

📚 文档站点:https://qian-o.github.io/Zenith.NET

✨ 本次更新亮点

🔄 ResourceSet → ResourceTable

资源集合从 ResourceSet 全面更名为 ResourceTable,绑定方式也做了简化:

之前:commandBuffer.SetResourceSet(resourceSet, index);

现在:commandBuffer.SetResourceTable(resourceTable);

不再需要手动传入索引,使用更直观。

📦 单一 ResourceLayout

所有管线描述(Graphics / Compute / MeshShading)中的 ResourceLayout[] 统一改为单个 ResourceLayout?。这个改动大幅降低了资源绑定的复杂度,同时也更贴合 Metal 的设计模型,为后续 Metal 后端上线扫清了障碍。

🚀 移除 RayTracingPipeline,拥抱 RayQuery

这是本次最大的变更。我们移除了独立的 RayTracingPipeline,包括 HitGroupDispatchRays() 等全部相关 API。

光线追踪现在统一通过 RayQuery 实现,可以在任意着色器阶段中使用,不再需要专用的光追管线。这个方向更灵活,跨后端兼容性也更好。

✂️ 清理历史着色器阶段

移除了 HullDomainGeometry 等传统着色器阶段,以及所有光追专用阶段(RayGenerationMissClosestHit 等)。PrimitiveTopology 也精简掉了邻接拓扑和 PatchList

这些功能在现代图形 API 中已经被 Mesh Shading 和 RayQuery 取代,清理后 API 表面更小更干净。

📐 MeshShading 线程组大小

MeshShadingPipelineDesc 新增了 Object 和 Mesh 阶段的线程组大小字段,给予开发者更精细的调度控制。

🍎 Apple 平台统一命名

文档和 Issue 模板中原来分开的 "macOS" 和 "iOS" 统一为 Apple 标签,更清晰地表达对整个苹果生态的支持。

⚠️ 破坏性变更一览

如果你从 v0.0.5 升级,请注意以下改动:

  • ResourceSet / ResourceSetDescResourceTable / ResourceTableDesc
  • ResourceLayout[]ResourceLayout?
  • SetResourceSet(resourceSet, index)SetResourceTable(resourceTable)
  • RayTracingPipelineHitGroupDispatchRays() 已移除,请改用 RayQuery
  • HullDomainGeometry 着色器阶段已移除
  • PrimitiveTopology 邻接拓扑和 PatchList 已移除

📦 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 集成 🚧 规划中

🛠️ 快速安装

sh 复制代码
# 安装核心包
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)

🎓 学习资源

相比 v0.0.2 时代"只能看源码"的状况,我们现在有了完整的文档和教程:

🗺️ 接下来的计划

  • Metal 后端 --- 将在近期版本中正式上线,初步计划基于 SharpMetal 或 .NET macios TFM 搭建,具体技术路线还在评估中
  • SkiaSharp 集成

🚧 当前状态

  • ⚠️ 预览版本 --- API 后续仍可能有破坏性变更
  • ⚠️ Metal 后端开发中 --- macOS / iOS 原生支持即将到来
  • 文档已上线 --- 入门教程和 API 参考已可用
  • 6 大 UI 框架集成 --- 覆盖主流 .NET UI 方案

💬 讨论与反馈

如果你有任何疑问、建议、Bug 反馈或功能请求,欢迎在以下地方交流:

🔗 链接


🧧 今天是除夕,祝全球华人 2026 新春快乐,蛇年大吉,万事如意!

感谢大家的关注和支持,欢迎 Star ⭐ 和提 Issue,我们下个版本见!🚀