Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 8 additions & 19 deletions .github/ISSUE_TEMPLATE/bug_report.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,23 @@ body:
required: true
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is.
placeholder: E.g. When initializing a DirectX12 context, an exception is thrown on integrated graphics.

- type: textarea
validations:
required: true
attributes:
label: Steps to reproduce
description: Steps to reproduce the behavior. Include a minimal code example if possible.
description: A clear and concise description of what the bug is, including steps to reproduce and expected behavior.
placeholder: |
What happened:
E.g. When initializing a DirectX12 context, an exception is thrown on integrated graphics.

Steps to reproduce:
1. Create a GraphicsContext with DirectX12
2. Call CreateSwapChain()
3. See exception

- type: textarea
validations:
required: true
attributes:
label: Expected behavior
description: What you expected to happen.
placeholder: DirectX12 context should initialize successfully.
Expected behavior:
DirectX12 context should initialize successfully.

- type: textarea
validations:
required: true
attributes:
label: Environment
description: Please provide your environment details.
description: Please provide your environment details (if applicable).
placeholder: |
- OS: Windows 11 / macOS 15 / Ubuntu 24.04 / etc.
- Graphics API: DirectX12 / Metal / Vulkan
Expand Down
5 changes: 1 addition & 4 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,4 @@ contact_links:
about: I have a question about how to use Zenith.NET or need help with graphics programming.
- name: Documentation
url: https://qian-o.github.io/Zenith.NET/
about: Check out the documentation and tutorials for Zenith.NET.
- name: Feature Discussions
url: https://github.com/qian-o/Zenith.NET/discussions/categories/ideas
about: Discuss new ideas and features for Zenith.NET with the community.
about: Check out the documentation and tutorials for Zenith.NET.
24 changes: 0 additions & 24 deletions .github/ISSUE_TEMPLATE/custom.yaml

This file was deleted.

16 changes: 5 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,25 @@

<p align="center">
A modern, cross-platform graphics and compute library for .NET.<br/>
One API for DirectX 12, Metal, and Vulkan.
One API for DirectX 12, Metal 4, and Vulkan 1.4.
</p>

<p align="center">
<a href="https://www.nuget.org/packages/Zenith.NET"><img src="https://img.shields.io/nuget/v/Zenith.NET.svg?style=flat-square" alt="NuGet"></a>
<a href="https://github.com/qian-o/Zenith.NET/blob/master/LICENSE"><img src="https://img.shields.io/github/license/qian-o/Zenith.NET?style=flat-square" alt="License"></a>
</p>

<p align="center">
<img src="https://img.shields.io/badge/Status-Work%20in%20Progress-orange?style=for-the-badge" alt="Status: Work in Progress">
</p>

---

## 📖 Overview

Zenith.NET is a GPU abstraction layer that unifies DirectX 12, Metal, and Vulkan under a single .NET API. It enables developers to build high-performance rendering and compute applications without writing backend-specific code. The library supports modern GPU features including ray tracing and mesh shading, and integrates seamlessly with popular .NET UI frameworks.
Zenith.NET is a GPU abstraction layer that unifies DirectX 12, Metal 4, and Vulkan 1.4 under a single .NET API. It enables developers to build high-performance rendering and compute applications without writing backend-specific code. The library supports modern GPU features including ray tracing and mesh shading, and integrates seamlessly with popular .NET UI frameworks.

Visit the [documentation site](https://qian-o.github.io/Zenith.NET/) for tutorials and API reference.

## ✨ Features

- 🎯 **Unified API** — Write once, run on DirectX 12, Metal, and Vulkan
- 🎯 **Unified API** — Write once, run on DirectX 12, Metal 4, and Vulkan 1.4
- 🎨 **Graphics** — Vertex and pixel shaders
- ⚡ **Compute** — General-purpose GPU computing
- 💡 **Ray Tracing** — Hardware-accelerated BLAS/TLAS with RayQuery in any shader stage
Expand All @@ -42,11 +38,9 @@ Visit the [documentation site](https://qian-o.github.io/Zenith.NET/) for tutoria
| | DirectX 12 | Metal 4 | Vulkan 1.4 |
| :-------: | :--------: | :-----: | :--------: |
| Windows | ✅ | | ✅ |
| Linux | | | ✅ |
| Apple | | 🚧 | ✅ |
| Apple | | ✅ | ✅ |
| Android | | | ✅ |

> 🚧 Metal backend is under development.
| Linux | | | ✅ |
Comment thread
qian-o marked this conversation as resolved.

---

Expand Down
4 changes: 2 additions & 2 deletions documents/api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ Welcome to the Zenith.NET API Reference. This documentation is automatically gen
|-----------|-------------|
| Zenith.NET | Core graphics abstractions and resource types |
| Zenith.NET.DirectX12 | DirectX 12 backend implementation for Windows |
| Zenith.NET.Metal | Metal backend implementation for Apple platforms |
| Zenith.NET.Vulkan | Vulkan backend implementation for cross-platform support |
| Zenith.NET.Metal | Metal 4 backend implementation for Apple platforms |
| Zenith.NET.Vulkan | Vulkan 1.4 backend implementation for cross-platform support |

## Key Types

Expand Down
9 changes: 7 additions & 2 deletions documents/docfx.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
]
}
],
"output": "api"
"output": "api",
"enumSortOrder": "declaringOrder"
}
],
"build": {
Expand All @@ -35,7 +36,6 @@
]
}
],
"output": "_site",
"template": [
"default",
"modern",
Expand All @@ -45,10 +45,15 @@
"_appTitle": "Zenith.NET",
"_appLogoPath": "images/Zenith.NET-Logo.svg",
"_appFaviconPath": "images/Zenith.NET.png",
"_enableSearch": true,
"_gitContribute": {
"repo": "https://github.com/qian-o/Zenith.NET",
"branch": "master"
}
},
"output": "_site",
"sitemap": {
"baseUrl": "https://qian-o.github.io/Zenith.NET/"
}
}
}
2 changes: 1 addition & 1 deletion documents/docs/concepts/graphics-context.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
This topic covers:

- GraphicsContext creation methods for each backend
- Three backend options: DirectX12, Metal, Vulkan
- Three backend options: DirectX 12, Metal 4, Vulkan 1.4
- Querying device capabilities via `Capabilities`
- Handling validation messages via `ValidationMessage` event
18 changes: 16 additions & 2 deletions documents/docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,20 @@ This section provides conceptual documentation to help you understand Zenith.NET
> [!NOTE]
> Looking for step-by-step coding guides? Check out the [Tutorials](../tutorials/index.md) section.

## Design Philosophy

Zenith.NET abstracts DirectX 12, Metal 4, and Vulkan 1.4 under a unified API. The design follows a clear principle: **adopt the latest API versions and expose only the capabilities shared across all three backends**. This means platform-specific features are intentionally excluded to maintain a consistent cross-platform experience.

Each backend targets real-world device coverage:

| Backend | Strategy |
|---------|----------|
| **DirectX 12** | Targets mainstream Windows 10 and above, covering the vast majority of Windows devices |
| **Metal 4** | Supports Apple Silicon (M-series) Macs and compatible iPhone/iPad models. Intel-based Macs are not supported |
| **Vulkan 1.4** | Serves as the cross-platform fallback. While Vulkan has evolved rapidly with many extensions, mobile and Linux driver support remains uneven — so adaptation is driven by actual device capabilities rather than spec version alone |

For detailed backend selection guidance, see [Backend Selection](platform/backend-selection.md).

## Core Concepts

### Graphics Context
Expand Down Expand Up @@ -51,12 +65,12 @@ Pipelines reference a single `ResourceLayout`, and you bind a corresponding `Res

## Platform Support

| Platform | DirectX 12 | Metal | Vulkan |
| Platform | DirectX 12 | Metal 4 | Vulkan 1.4 |
|----------|:----------:|:-----:|:------:|
| Windows | <span class="status-yes">Yes</span> | <span class="status-no">No</span> | <span class="status-yes">Yes</span> |
| Linux | <span class="status-no">No</span> | <span class="status-no">No</span> | <span class="status-yes">Yes</span> |
| Apple | <span class="status-no">No</span> | <span class="status-yes">Yes</span> | <span class="status-yes">Yes</span> |
| Android | <span class="status-no">No</span> | <span class="status-no">No</span> | <span class="status-yes">Yes</span> |
| Linux | <span class="status-no">No</span> | <span class="status-no">No</span> | <span class="status-yes">Yes</span> |

## Best Practices

Expand Down
10 changes: 5 additions & 5 deletions documents/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ _layout: landing
<img src="images/Zenith.NET.svg" alt="Zenith.NET Logo" class="hero-logo" />
<h1>Zenith.NET</h1>
<p class="hero-tagline">Unified Cross-Platform GPU Programming for .NET</p>
<p class="hero-description">A modern graphics and compute library that provides a single API for DirectX 12, Metal, and Vulkan. Build high-performance rendering and GPU compute applications with ease.</p>
<p class="hero-description">A modern graphics and compute library that provides a single API for DirectX 12, Metal 4, and Vulkan 1.4. Build high-performance rendering and GPU compute applications with ease.</p>
<div class="hero-buttons">
<a href="tutorials/index.md" class="btn btn-primary">Get Started</a>
<a href="api/index.md" class="btn btn-secondary">API Reference</a>
Expand All @@ -26,12 +26,12 @@ _layout: landing
<div class="tech-bar">
<div class="tech-bar-group">
<span class="tech-bar-label">Graphics APIs</span>
<span class="tech-bar-items">DirectX 12 · Metal · Vulkan</span>
<span class="tech-bar-items">DirectX 12 · Metal 4 · Vulkan 1.4</span>
</div>
<div class="tech-bar-divider"></div>
<div class="tech-bar-group">
<span class="tech-bar-label">Platforms</span>
<span class="tech-bar-items">Windows · Linux · Apple · Android</span>
<span class="tech-bar-items">Windows · Apple · Android · Linux</span>
</div>
</div>

Expand All @@ -43,7 +43,7 @@ _layout: landing
<div class="highlight-item">
<div class="highlight-icon">🎯</div>
<div class="highlight-text">
<strong>Unified API</strong> — Write once, run everywhere. A single API abstracts DirectX 12, Metal, and Vulkan.
<strong>Unified API</strong> — Write once, run everywhere. A single API abstracts DirectX 12, Metal 4, and Vulkan 1.4.
</div>
</div>
<div class="highlight-item">
Expand Down Expand Up @@ -98,7 +98,7 @@ _layout: landing
<div class="step-number">1</div>
<div class="step-content">
<h4>Initialize</h4>
<p>Create a graphics context with your preferred backend (DirectX 12, Metal, or Vulkan).</p>
<p>Create a graphics context with your preferred backend (DirectX 12, Metal 4, or Vulkan 1.4).</p>
</div>
</div>
<div class="workflow-step">
Expand Down
Loading