Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
467 commits
Select commit Hold shift + click to select a range
4a59e06
Refactor RenderState field names for clarity
qian-o Jun 14, 2026
9cdd5ee
Rename colorAttachmentBlendStates to states for clarity
qian-o Jun 14, 2026
58b2c3f
Remove Metal std and Xmetal args from compiler invocation
qian-o Jun 14, 2026
bea64c1
Add ThreadGroupSize struct and field to ShaderDesc
qian-o Jun 14, 2026
4ffa21d
Refactor ZenithCompiler to return ShaderDesc with reflection
qian-o Jun 14, 2026
1651079
Simplify shader creation by removing anonymous objects
qian-o Jun 14, 2026
831893a
Implement Metal compute pipeline support
qian-o Jun 14, 2026
c0dd220
Implement Metal mesh shading pipeline support
qian-o Jun 15, 2026
5464e8f
Implement Metal query heap support with MTLQueryHeap
qian-o Jun 15, 2026
bc3d76f
Implement Metal swap chain (MTLSwapChain) support
qian-o Jun 15, 2026
9b5091a
Dispose MetalDrawable after presenting in MTLSwapChain
qian-o Jun 15, 2026
9a1ae27
Update subresource index calculation in DXTexture
qian-o Jun 15, 2026
bd71605
Update subresource index calculation for consistency
qian-o Jun 15, 2026
54da185
Remove TextureSubresourceLayers struct definition
qian-o Jun 15, 2026
a404c4b
Add external texture import support to GraphicsContext
qian-o Jun 15, 2026
b7d4b48
Update ImportTextureType enum for Vulkan support
qian-o Jun 15, 2026
e8eda9b
Refactor Target to Drawable and update format property
qian-o Jun 15, 2026
07af404
Refactor D3DTexture to Surface and unify resource handling
qian-o Jun 15, 2026
60d61cf
Refactor to use DrawableFormat and handle unknown formats
qian-o Jun 15, 2026
ccee8e7
Expand swapchain texture usages and improve Metal import
qian-o Jun 15, 2026
1fddcfc
Update texture usages and simplify MTLHeap creation
qian-o Jun 15, 2026
f1518b5
Update swap chain queue usage and add drawable signaling
qian-o Jun 15, 2026
d3b79bb
Refactor native texture import API in graphics context
qian-o Jun 16, 2026
5048f25
Handle nullable CommandQueue in CommandSubmission
qian-o Jun 16, 2026
bf1f582
Remove SignalDrawable call from PresentImpl in MTLSwapChain
qian-o Jun 16, 2026
b016adb
Refactor NativeTextureType enum and texture handling
qian-o Jun 16, 2026
d680e42
Update DXCommandBuffer to use DXCommandQueue type
qian-o Jun 16, 2026
1d94d57
Add MTLCommandBuffer and refactor buffer GPU address usage
qian-o Jun 16, 2026
9c433b5
Refactor MTLBufferView to use explicit constructor
qian-o Jun 16, 2026
4e68f8c
Implement Metal command buffer ops and DX refactors
qian-o Jun 16, 2026
969f963
Refactor BarrierStages enum and update DirectX12 barrier handling
qian-o Jun 16, 2026
050739a
Update MTLFormats: public API and full enum mappings
qian-o Jun 17, 2026
58499a5
Fix BarrierImpl to use correct 'before' stage in barriers
qian-o Jun 17, 2026
4098185
Add barriers before ending render and compute encoders
qian-o Jun 18, 2026
def6681
Add locking for thread-safe descriptor heap allocation
qian-o Jun 19, 2026
1ae8c57
Add locking to MTLGraphicsContext for thread safety
qian-o Jun 19, 2026
eed0855
Remove Context.Unregister call from MTLHeap.Destroy
qian-o Jun 19, 2026
c02830b
Refactor command queue management in Metal backend
qian-o Jun 19, 2026
c740517
Refactor DX12 command queue management
qian-o Jun 19, 2026
8c187c9
Update command queue type to use DXFormats.DirectX12
qian-o Jun 19, 2026
61a16d9
Implement deferred pipeline state setting for Metal
qian-o Jun 19, 2026
3cd0ff8
Defer stencil/blend state in MTLCommandBuffer
qian-o Jun 19, 2026
92c3ef2
Implement Metal draw/dispatch methods in MTLCommandBuffer
qian-o Jun 20, 2026
5e4fbe2
Refactor index buffer handling and Metal mappings
qian-o Jun 20, 2026
afb9c88
Add Metal acceleration structure support and extensions
qian-o Jun 21, 2026
c786a49
Refactor: replace FillInputs with Inputs returning struct
qian-o Jun 21, 2026
63b476f
Refactor encoder fields; add BLAS management class
qian-o Jun 21, 2026
4987942
Refactor Metal pixel format handling and ray tracing desc
qian-o Jun 21, 2026
f405d43
Refactor and expand MTLTopLevelAccelerationStructure
qian-o Jun 21, 2026
109339f
Refactor geometry descriptors and implement TLAS descriptor
qian-o Jun 21, 2026
3cfa377
Make Metal method public and clarify parameter name
qian-o Jun 21, 2026
309774a
Add query and timestamp support to MTLCommandBuffer
qian-o Jun 21, 2026
ec88dcb
Refactor visibility query handling in MTLCommandBuffer
qian-o Jun 21, 2026
109fa33
Reorder IndexBinding struct before VisibilityKey
qian-o Jun 21, 2026
9b18e90
Implement SubmitImpl in MTLCommandQueue
qian-o Jun 21, 2026
d6852c0
Update render pass to use proper attachments
qian-o Jun 21, 2026
0a1a7fb
Map more API abstractions to Metal structures
qian-o Jun 21, 2026
340edcb
Update Metal support: set handle, target Metal 4.0
qian-o Jun 21, 2026
7cc65b4
Add full PixelFormat to MTLAttributeFormat mappings
qian-o Jun 21, 2026
5f4b233
Change matrix layout to ColumnMajor, add GPU barriers
qian-o Jun 21, 2026
3db729e
Remove unnecessary barrier calls after AS build/refit
qian-o Jun 21, 2026
e159a87
Remove global barrier after BLAS build
qian-o Jun 21, 2026
8974487
Refactor barrier logic in DXTopLevelAccelerationStructure
qian-o Jun 21, 2026
574855c
Remove post-build AllShading sync barrier in TLAS build
qian-o Jun 21, 2026
8a88836
Refactor and consolidate Metal mapping utilities
qian-o Jun 22, 2026
7773df3
Refactor enum initialization and expand barrier mappings
qian-o Jun 22, 2026
50e818a
Refactor: move ZenithViewHandler to its own file
qian-o Jun 22, 2026
0f0a8a6
Add VK_EXT_descriptor_heap extension bindings
qian-o Jun 23, 2026
0c4e0fb
Style: remove spaces in casts and assignments
qian-o Jun 23, 2026
13fdc3e
Restore VK_EXT_descriptor_heap native API bindings
qian-o Jun 23, 2026
9870da8
Update Avalonia and SkiaSharp package versions
qian-o Jun 24, 2026
9905331
Add Vulkan extension and layer arrays to VKGraphicsContext
qian-o Jun 24, 2026
0203c44
Simplify feature checks and error messages for DX12/Metal
qian-o Jun 26, 2026
d53ea65
Refactor CopyQueue to TransferQueue; Vulkan init overhaul
qian-o Jun 26, 2026
8a784d9
Add KHR_fragment_shading_rate extension support
qian-o Jun 26, 2026
dd878fe
Add VKCapabilities and stub extension methods
qian-o Jun 26, 2026
467e797
Refactor Vulkan queue retrieval and storage logic
qian-o Jun 26, 2026
927158b
Refactor queue setup; add VKCommandQueue class
qian-o Jun 26, 2026
7be260f
Refactor Vulkan queue creation and loading logic
qian-o Jun 26, 2026
0119f42
Add Vulkan validation layer support and minor DX refactor
qian-o Jun 26, 2026
49ee3b7
Replace null with default in DestroyDebugUtilsMessenger call
qian-o Jun 26, 2026
4bf250e
Destroy Vulkan device and instance in VKGraphicsContext
qian-o Jun 26, 2026
dd8d16e
Use default instead of null in Vulkan destroy calls
qian-o Jun 26, 2026
04edc08
Add VKHeap class and integrate with VKGraphicsContext
qian-o Jun 29, 2026
579aade
Use heap residency in CreateBufferImpl
qian-o Jun 30, 2026
ee1b56c
Add Vulkan usage mapping and memory allocation helpers
qian-o Jun 30, 2026
9fb705b
Replace CopySrc/CopyDst with TransferSrc/TransferDst
qian-o Jun 30, 2026
cab7b72
Implement debug naming and update GetNativeObject methods
qian-o Jun 30, 2026
103879f
Add VKBuffer class for Vulkan buffer management
qian-o Jun 30, 2026
d26384b
Refactor Vulkan buffer and memory management
qian-o Jun 30, 2026
1250281
Refactor Vulkan buffer sharing, remove VKSharing struct
qian-o Jun 30, 2026
669fe3e
Refactor VKBuffer memory management, add VKAllocation
qian-o Jun 30, 2026
2d42d13
Update Metal.NET and MAUI.Controls package versions
qian-o Jun 30, 2026
868e5ce
Add Vulkan texture support and QueueSharing struct
qian-o Jul 1, 2026
fa5ed1a
Refactor Vulkan queue sharing to use QueueFamilies struct
qian-o Jul 2, 2026
f873397
Add VKBuffer ctor with custom BufferUsageFlags support
qian-o Jul 2, 2026
d806745
Add Vulkan descriptor heap management system
qian-o Jul 2, 2026
9791a27
Add AccelerationStructureKhr to bufferRegion mapping
qian-o Jul 3, 2026
593c601
Refactor buffer address handling in descriptor classes
qian-o Jul 3, 2026
4173423
Refactor descriptor heap stride and range handling
qian-o Jul 3, 2026
47d2f2d
Refactor descriptor heap naming and stride types
qian-o Jul 3, 2026
cf64c21
Add Vulkan buffer and texture view support
qian-o Jul 3, 2026
bdf5ad0
Add View properties to VKBuffer and VKTexture
qian-o Jul 3, 2026
ad9cc3d
Add Vulkan sampler and shader resource support
qian-o Jul 3, 2026
41e9fd1
Add descriptor set/binding mapping to VKShader
qian-o Jul 3, 2026
4a24738
Add Vulkan pipeline classes and extension methods
qian-o Jul 3, 2026
756a66d
Refactor pipeline creation for DX12 and Vulkan
qian-o Jul 3, 2026
76691c4
Add dynamic state support to Vulkan pipeline creation
qian-o Jul 3, 2026
16e2afe
Reorder dynamic states in VKGraphicsPipeline creation
qian-o Jul 3, 2026
a338bb1
Refactor viewport, scissor, and stencil setup in CommandBuffer
qian-o Jul 3, 2026
7b1009e
Refactor deferred state application order in encoding
qian-o Jul 3, 2026
3e749e9
Initialize blend constant and stencil reference to zero
qian-o Jul 3, 2026
209d437
Change default blend constant to Vector4.One in CommandBuffer
qian-o Jul 3, 2026
b787118
Refactor VKComputePipeline constructor for Vulkan API
qian-o Jul 3, 2026
2905663
Expand VKMeshShadingPipeline Vulkan pipeline setup
qian-o Jul 3, 2026
b337106
Add Vk2DescriptorHeapBitExt flag to pipeline creation
qian-o Jul 3, 2026
a8918d3
Fix color attachment format assignment in VK pipelines
qian-o Jul 3, 2026
962620f
Rename local variables for consistency in VKGraphicsContext
qian-o Jul 3, 2026
49e8481
Rename local variables for clarity and consistency
qian-o Jul 3, 2026
d3e5442
Implement Vulkan enum mappings and expand pipeline setup
qian-o Jul 3, 2026
040878c
Refactor mesh shading pipeline state setup
qian-o Jul 3, 2026
2fd83b5
Add VKCommandBuffer class with Vulkan command buffer setup
qian-o Jul 3, 2026
3926580
Implement VKCommandBuffer Vulkan methods and debug utils
qian-o Jul 3, 2026
aef2761
Add Vulkan query heap support and integration
qian-o Jul 3, 2026
efcf432
Implement timeline semaphore support in VKCommandQueue
qian-o Jul 3, 2026
28fa535
Implement Vulkan barrier and heap binding logic
qian-o Jul 4, 2026
c47246d
Implement Vulkan image layout transitions and mapping
qian-o Jul 4, 2026
a542b07
Refactor default cases to use tuple defaults
qian-o Jul 4, 2026
926752b
Implement Vulkan copy/resolve commands in VKCommandBuffer
qian-o Jul 4, 2026
9fcbdbb
Implement Vulkan command buffer operations via Silk.NET
qian-o Jul 4, 2026
be70bd3
Implement SetConstantBufferImpl for Vulkan command buffer
qian-o Jul 4, 2026
8511976
Fix Vulkan viewport Y and height for correct origin
qian-o Jul 4, 2026
1b166a1
Update to use Vulkan CmdWriteTimestamp2 API
qian-o Jul 4, 2026
3d207ce
Implement Vulkan render pass setup and attachment views
qian-o Jul 5, 2026
5db9e22
Remove attachmentViews.Clear() from VKTexture cleanup
qian-o Jul 5, 2026
fa38f52
Fix stencil attachment check to use HasStencil
qian-o Jul 5, 2026
e71b5d2
Implement Vulkan acceleration structure classes
qian-o Jul 6, 2026
6c95ef2
Refactor VK acceleration structures for Vulkan resource mgmt
qian-o Jul 6, 2026
c8fbdf1
Update buffer creation for ray tracing support
qian-o Jul 6, 2026
cc73a2b
Add Vulkan BLAS creation, update, and device address support
qian-o Jul 6, 2026
0a22222
Implement BLAS Info method and add Vulkan format stubs
qian-o Jul 6, 2026
ec27eda
Fix scratch buffer sizing and triangle primitive count logic
qian-o Jul 6, 2026
b6e2b7f
Expand VKTopLevelAccelerationStructure and update BLAS
qian-o Jul 6, 2026
36e167d
Refactor descriptor initializers and AS token allocation
qian-o Jul 6, 2026
7f9cfd2
Implement Info method for TLAS build and buffer usage
qian-o Jul 6, 2026
af7c4c3
Reorder BLAS build to ensure device address validity
qian-o Jul 6, 2026
70aee84
Implement instance population in VKTopLevelAccelerationStructure
qian-o Jul 6, 2026
1636269
Refactor and extend Vulkan format mapping utilities
qian-o Jul 6, 2026
4891cf2
Refactor Surface handles, add Vulkan swapchain support
qian-o Jul 7, 2026
854c2a1
Support multiple Vulkan surfaces and improve swapchain logic
qian-o Jul 7, 2026
d61ca95
Switch Windows to Vulkan graphics context
qian-o Jul 7, 2026
e21f010
Update buffer usages and sync barriers for Vulkan RT
qian-o Jul 7, 2026
e0bfdf6
Rename WaitImpl to InsertWaitsImpl for clarity
qian-o Jul 7, 2026
0f5418b
Refactor to Timeline-based GPU synchronization
qian-o Jul 8, 2026
b96f4b7
Refactor timeline sync for Metal and Vulkan backends
qian-o Jul 8, 2026
77eae98
Remove Destroy() override from VKCommandQueue
qian-o Jul 8, 2026
9e094d7
Refactor allocation ownership handling in Vulkan wrappers
qian-o Jul 8, 2026
e0c59f9
Fix matrix layout for TransformMatrixKHR in VKFormats
qian-o Jul 8, 2026
14603c4
Refactor Vulkan matrix conversion to remove unsafe code
qian-o Jul 8, 2026
c040c50
Update Slangc.NET to version 2026.12.2
qian-o Jul 8, 2026
9073431
Switch Windows backend to DX12, improve swapchain cleanup
qian-o Jul 8, 2026
1446327
Update SkiaSharp and Slangc.NET package versions
qian-o Jul 9, 2026
44cea9c
Refactor command buffer reclamation logic
qian-o Jul 11, 2026
8f79ccb
Refactor SwapChain present and resize logic
qian-o Jul 11, 2026
f1267a4
Replace KhrExternalFenceFd with KhrExternalMemoryFd support
qian-o Jul 11, 2026
2cbc6cb
Support external native texture import in Vulkan
qian-o Jul 11, 2026
a09c651
Refactor shader structs, standardize naming, misc fixes
qian-o Jul 11, 2026
10e9af5
Add -spirv-unified-descriptor-heap-stride for Vulkan
qian-o Jul 11, 2026
355596a
Remove '-spirv-unified-descriptor-heap-stride' for Vulkan
qian-o Jul 11, 2026
0450248
Add spvRayQueryKHR capability to Vulkan compiler args
qian-o Jul 12, 2026
74d8387
Redesign DocFX documentation site
qian-o Jul 12, 2026
83da355
Remove Zenith.NET session handoff zip file
qian-o Jul 13, 2026
70a89fa
Refine DocFX documentation experience
qian-o Jul 13, 2026
5f413a7
Refactor CSS and improve search/navigation UX
qian-o Jul 13, 2026
d43ef88
Unify DocFX branding and interactions
qian-o Jul 14, 2026
4f30c29
Refine documentation sidebar layout
qian-o Jul 14, 2026
e6abdab
Harden DocFX theme for release
qian-o Jul 14, 2026
e92a8a9
Refactor CSS: wrap loose rules in braces, reformat
qian-o Jul 14, 2026
606d7fb
Clarify documentation navigation hierarchy
qian-o Jul 14, 2026
9b43dd8
Rewrite documentation for redesigned RHI
qian-o Jul 14, 2026
c8d2269
Revamp docs: restructure, modernize, and update tutorials
qian-o Jul 15, 2026
d56b244
Make texture layout transitions explicit in API
qian-o Jul 15, 2026
f45816f
Explicitly specify texture layout transitions
qian-o Jul 15, 2026
c09d8ad
Refactor texture layout transitions for uploads/downloads
qian-o Jul 15, 2026
0ce4256
Optimize ImGui color attachment load operation
qian-o Jul 15, 2026
a3d91b2
Refactor rendering to use explicit command buffers
qian-o Jul 15, 2026
7f45679
Add TransferSrc to Surface texture usage flags
qian-o Jul 15, 2026
6c29e38
Refresh documentation for the current RHI
qian-o Jul 16, 2026
5f166cd
Make command buffer reclamation thread-safe
qian-o Jul 16, 2026
165d40a
Move Queue.Reclaim() call to Timeline.Wait()
qian-o Jul 16, 2026
a0986ad
Refactor semaphore handling and remove explicit Reclaim calls
qian-o Jul 16, 2026
c458fcf
Refactor Timeline completed value access and recycling
qian-o Jul 16, 2026
2ee287b
Refactor recycling logic in CommandQueue and Timeline
qian-o Jul 16, 2026
0dd1eca
Rename Recycle to Poll in CommandQueue and update usages
qian-o Jul 16, 2026
866eb05
Rewrite and refine documentation
qian-o Jul 17, 2026
e3e34cb
Add heap guide and refine documentation
qian-o Jul 17, 2026
d10a633
Refine documentation examples and RHI guidance
qian-o Jul 18, 2026
d9e7cc1
Clarify swap chain submission ordering
qian-o Jul 18, 2026
0e8fd1e
Wrap multi-property snippet initializers
qian-o Jul 18, 2026
b265edd
Fix formatting of "# Heaps" heading in documentation
qian-o Jul 18, 2026
f8ac04a
feat: add theme cycle and expandable search functionality; implement …
qian-o Jul 19, 2026
36e0265
refactor: improve accessibility and streamline code in landing page c…
qian-o Jul 19, 2026
acf8710
refactor: clean up unused CSS variables and improve landing page styles
qian-o Jul 20, 2026
93b5aef
Refactor CSS: use nested selectors for better structure
qian-o Jul 20, 2026
a5d0c7a
Add PNG variants of project branding
qian-o Jul 20, 2026
fd4e1be
Align logo image margins
qian-o Jul 20, 2026
711a482
Balance logo horizontal spacing
qian-o Jul 20, 2026
210fcd1
Align Metal barrier usage and encoder stage handling
qian-o Jul 20, 2026
ae25dee
Refactor shader structs and resource bindings for clarity
qian-o Jul 20, 2026
6b15b6f
Clarify shader handle declaration and SetConstantBuffer usage
qian-o Jul 20, 2026
b309c23
Update NuGet package versions in Directory.Packages.props
qian-o Jul 20, 2026
496b1b4
docs: restructure tutorials into grouped sections
qian-o Jul 22, 2026
e16d038
docs: lead Project Setup with the fast path to Hello Triangle
qian-o Jul 22, 2026
8a8f917
Update NuGet packages: MAUI and Slangc.NET
qian-o Jul 23, 2026
3a9b38d
Merge branch 'refactor/rhi-redesign' of https://github.com/qian-o/Zen…
qian-o Jul 23, 2026
7c91d65
Refine C# formatting rules in .clang-format
qian-o Jul 23, 2026
46a2388
Optimize CornellBox rendering and resource handling
qian-o Jul 23, 2026
47bcba9
Rebuild documentation tutorials and presentation
qian-o Jul 25, 2026
e0e1371
Refactor docs, JS to ES modules, and CSS selectors
qian-o Jul 25, 2026
5455dd8
Standardize SVG <title> ids for accessibility
qian-o Jul 25, 2026
0d9cbd8
chore: bump Uno.WinUI to 6.6.176
qian-o Jul 26, 2026
0b1d136
Add GPU fluid tank experiment
qian-o Jul 27, 2026
82dd513
Optimize fluid simulation and surface reconstruction
qian-o Jul 27, 2026
ea637ec
Replace PBF with APIC FLIP fluid simulation
qian-o Jul 27, 2026
12d916f
Optimize APIC fluid stability and rendering
qian-o Jul 27, 2026
7878697
Polish FluidTank runtime and shaders
qian-o Jul 28, 2026
5ffa8ea
Polish FluidTank structure and runtime behavior
qian-o Jul 28, 2026
ea9cf74
Simplify FluidTank controls
qian-o Jul 28, 2026
6db0121
Replace msyh.ttf with new binary version
qian-o Jul 28, 2026
18e36fc
Reorder ImGui.Text lines for FPS and Particles display
qian-o Jul 28, 2026
d7f058f
Remove MemoryPlayground project from solution
qian-o Jul 28, 2026
b749fa7
Add launchSettings.json with standard and WSL2 profiles
qian-o Jul 28, 2026
798d0c3
Increase FluidTank simulation resolution
qian-o Jul 28, 2026
971a49b
Format FluidTank shader structures
qian-o Jul 28, 2026
7f635a6
Add command queue timestamp conversion
qian-o Jul 28, 2026
bf5db36
Update NuGet package to version 1.0.0-rc
qian-o Jul 28, 2026
e9d7369
Add explicit null checks in EndRender/EndComputeEncoding
qian-o Jul 28, 2026
581f530
Improve FluidTank flow and surface reconstruction
qian-o Jul 28, 2026
3d80bd5
Simplify FluidTank descriptor handle access
qian-o Jul 29, 2026
3cac5e6
Add query and shader workflow guides
qian-o Jul 29, 2026
916603b
Add UTF-8 BOM to queries.md and shaders.md
qian-o Jul 29, 2026
06a1059
Align documentation code example formatting
qian-o Jul 29, 2026
f2c90ea
Fix DocFX managed reference template export
qian-o Jul 29, 2026
c7048a6
Add BOM to solution and project files
qian-o Jul 29, 2026
fa2b9b6
Clarify math expressions in CameraHandler & FluidTankGeometry
qian-o Jul 29, 2026
c5e0336
Remove trailing blank lines
qian-o Jul 29, 2026
bc2f9de
Refactor ImGui logic with ImGuiHelper static class
qian-o Jul 29, 2026
a33bb83
Refactor FluidTank ImGui panels
qian-o Jul 29, 2026
bf0f56b
Refine package and documentation descriptions
qian-o Jul 29, 2026
2edd19c
Remove IDisposableObject and INativeObject interfaces
qian-o Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
Expand Down Expand Up @@ -46,9 +46,9 @@

###############################################################################
# diff behavior for common document formats
#
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ on:
pull_request:
branches: ["*"]

env:
SIXLABORS_LICENSE_KEY: ${{ secrets.SIXLABORS_LICENSE_KEY }}

jobs:
build:
strategy:
Expand Down
58 changes: 35 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,46 +5,53 @@
<h1 align="center">Zenith.NET</h1>

<p align="center">
A modern, cross-platform graphics and compute library for .NET.<br/>
One API for DirectX 12, Metal 4, and Vulkan 1.4.
A modern rendering hardware interface for .NET.<br/>
One consistent C# API for graphics and compute across 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>
<a href="LICENSE"><img src="https://img.shields.io/github/license/qian-o/Zenith.NET?style=flat-square" alt="License"></a>
</p>

---

## 📖 Overview
## Overview

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.
Zenith.NET provides a consistent C# API for resources, pipelines, command recording, synchronization, and presentation across DirectX 12, Metal 4, and Vulkan 1.4.

Visit the [documentation site](https://qian-o.github.io/Zenith.NET/) for tutorials and API reference.
The RHI exposes rasterization, compute, and indirect commands. Inline Ray Tracing and mesh shading are optional; check `Capabilities.RayTracingSupported` and `Capabilities.MeshShadingSupported` before use. Bindless resource handles expose shader resources, while queues, barriers, and texture layouts express ordering and access dependencies.

## ✨ Features
## Get Started

- 🎯 **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
- 🔷 **Mesh Shading** — GPU-driven geometry with mesh and amplification shaders
- 🖼️ **UI Integrations** — Avalonia, MAUI, WinForms, WinUI, WPF, and Uno Platform
Install the core package and one graphics API package:

---
```powershell
dotnet add package Zenith.NET
dotnet add package Zenith.NET.Vulkan
```

Create a graphics context in C#:

```csharp
using Zenith.NET;
using Zenith.NET.Vulkan;

using GraphicsContext context = GraphicsContext.CreateVulkan(useValidationLayer: true);
```

Continue with the [RHI Guide](https://qian-o.github.io/Zenith.NET/docs/) or build the examples in the [Tutorials](https://qian-o.github.io/Zenith.NET/tutorials/).

## 🌍 Platform Support
## Platform Support

| | DirectX 12 | Metal 4 | Vulkan 1.4 |
| :-------: | :--------: | :-----: | :--------: |
| Windows | | | |
| Apple | | | |
| Android | | | |
| Linux | | | |
| Windows | Yes | | Yes |
| Apple | | Yes | Yes |
| Android | | | Yes |
| Linux | | | Yes |

---

## 📦 NuGet Packages
## Packages

### Core

Expand All @@ -61,7 +68,6 @@ Visit the [documentation site](https://qian-o.github.io/Zenith.NET/) for tutoria
[![ImageSharp](https://img.shields.io/nuget/v/Zenith.NET.Extensions.ImageSharp.svg?label=ImageSharp&style=flat-square)](https://www.nuget.org/packages/Zenith.NET.Extensions.ImageSharp)
[![ImGui](https://img.shields.io/nuget/v/Zenith.NET.Extensions.ImGui.svg?label=ImGui&style=flat-square)](https://www.nuget.org/packages/Zenith.NET.Extensions.ImGui)
[![Skia](https://img.shields.io/nuget/v/Zenith.NET.Extensions.Skia.svg?label=Skia&style=flat-square)](https://www.nuget.org/packages/Zenith.NET.Extensions.Skia)
[![Slang](https://img.shields.io/nuget/v/Zenith.NET.Extensions.Slang.svg?label=Slang&style=flat-square)](https://www.nuget.org/packages/Zenith.NET.Extensions.Slang)

### Views

Expand All @@ -71,3 +77,9 @@ Visit the [documentation site](https://qian-o.github.io/Zenith.NET/) for tutoria
[![WinForms](https://img.shields.io/nuget/v/Zenith.NET.Views.WinForms.svg?label=WinForms&style=flat-square)](https://www.nuget.org/packages/Zenith.NET.Views.WinForms)
[![WinUI](https://img.shields.io/nuget/v/Zenith.NET.Views.WinUI.svg?label=WinUI&style=flat-square)](https://www.nuget.org/packages/Zenith.NET.Views.WinUI)
[![WPF](https://img.shields.io/nuget/v/Zenith.NET.Views.WPF.svg?label=WPF&style=flat-square)](https://www.nuget.org/packages/Zenith.NET.Views.WPF)

## Documentation

- [RHI Guide](https://qian-o.github.io/Zenith.NET/docs/)
- [Tutorials](https://qian-o.github.io/Zenith.NET/tutorials/)
- [API Reference](https://qian-o.github.io/Zenith.NET/api/)
3 changes: 1 addition & 2 deletions Zenith.NET.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@
<Folder Name="/Experiments/">
<File Path="sources/Experiments/Directory.Packages.props" />
<Project Path="sources/Experiments/CornellBox/CornellBox.csproj" />
<Project Path="sources/Experiments/MemoryPlayground/MemoryPlayground.csproj" />
<Project Path="sources/Experiments/FluidTank/FluidTank.csproj" />
<Project Path="sources/Experiments/PlatformDetection/PlatformDetection.csproj" />
</Folder>
<Folder Name="/Extensions/">
<Project Path="sources/Extensions/Zenith.NET.Extensions.ImageSharp/Zenith.NET.Extensions.ImageSharp.csproj" />
<Project Path="sources/Extensions/Zenith.NET.Extensions.ImGui/Zenith.NET.Extensions.ImGui.csproj" />
<Project Path="sources/Extensions/Zenith.NET.Extensions.Skia/Zenith.NET.Extensions.Skia.csproj" />
<Project Path="sources/Extensions/Zenith.NET.Extensions.Slang/Zenith.NET.Extensions.Slang.csproj" />
</Folder>
<Folder Name="/Solution Items/">
<File Path="sources/Directory.Build.props" />
Expand Down
128 changes: 30 additions & 98 deletions documents/api/index.md
Original file line number Diff line number Diff line change
@@ -1,100 +1,32 @@
# API Reference

Welcome to the Zenith.NET API Reference. This documentation is automatically generated from the source code and provides detailed information about all public types, methods, and properties.

## Namespaces

| Namespace | Description |
|-----------|-------------|
| Zenith.NET | Core graphics abstractions and resource types |
| Zenith.NET.DirectX12 | DirectX 12 backend implementation for Windows |
| Zenith.NET.Metal | Metal 4 backend implementation for Apple platforms |
| Zenith.NET.Vulkan | Vulkan 1.4 backend implementation for cross-platform support |

## Key Types

### Context & Queues

| Type | Description |
|------|-------------|
| `GraphicsContext` | Central hub for creating GPU resources and accessing command queues |
| `CommandQueue` | Provides command buffers and synchronization (Graphics, Compute, Copy) |
| `CommandBuffer` | Records and submits GPU commands |
| `Capabilities` | Reports device name and feature support (ray tracing, mesh shading) |

### Presentation

| Type | Description |
|------|-------------|
| `SwapChain` | Manages double/triple buffering and presentation to a surface |
| `FrameBuffer` | Render target attachments (color and depth/stencil) |

### Buffers & Textures

| Type | Description |
|------|-------------|
| `Buffer` | GPU buffer for vertex, index, constant, or structured data |
| `BufferView` | A view into a portion of a buffer for shader binding |
| `Texture` | GPU texture resource (2D, 3D, Cube, Array) |
| `TextureView` | A view into a texture for shader binding |
| `Sampler` | Texture sampling and filtering configuration |

### Pipelines

| Type | Description |
|------|-------------|
| `GraphicsPipeline` | Rasterization pipeline configuration |
| `ComputePipeline` | Compute dispatch pipeline configuration |
| `MeshShadingPipeline` | Mesh shading pipeline configuration |

### Resource Binding

| Type | Description |
|------|-------------|
| `ResourceLayout` | Declares expected shader resource bindings |
| `ResourceTable` | Binds actual resources to a layout |
| `Shader` | Compiled shader module with entry point and stage |

### Ray Tracing

| Type | Description |
|------|-------------|
| `BottomLevelAccelerationStructure` | BLAS containing triangle or AABB geometry |
| `TopLevelAccelerationStructure` | TLAS containing geometry instances |

### Query

| Type | Description |
|------|-------------|
| `QueryHeap` | GPU query heap for timestamps and statistics |

## Extensions

| Namespace | Description |
|-----------|-------------|
| Zenith.NET.Extensions.ImageSharp | Texture loading from files/streams via ImageSharp |
| Zenith.NET.Extensions.ImGui | Dear ImGui rendering integration |
| Zenith.NET.Extensions.Skia | Skia rendering integration |
| Zenith.NET.Extensions.Slang | Shader compilation from Slang source files |

## Views

| Namespace | Description |
|-----------|-------------|
| Zenith.NET.Views | Base view interface and frame scheduling |
| Zenith.NET.Views.Avalonia | Avalonia UI integration |
| Zenith.NET.Views.Maui | .NET MAUI integration |
| Zenith.NET.Views.WinForms | Windows Forms integration |
| Zenith.NET.Views.WinUI | WinUI 3 and Uno Platform integration |
| Zenith.NET.Views.WPF | WPF integration |

## Navigation

Browse the namespace tree on the left to explore all available types. Each type page includes:

- **Summary** - Brief description of the type
- **Properties** - Available properties
- **Methods** - Available methods

> [!TIP]
> Start with `GraphicsContext` to understand resource creation, then explore `CommandBuffer` for recording GPU commands.
The API reference documents the public Zenith.NET types, members, parameters, and enum values. Start with the [RHI Guide](../docs/index.md) when learning a workflow.

## Start Here

| Type | Purpose |
|------|---------|
| `GraphicsContext` | Creates resources and exposes capabilities and command queues |
| `CommandQueue` | Owns and lends command buffers for one class of GPU work |
| `CommandBuffer` | Queue-owned recorder borrowed for one immediate submission |
| `TimelineValue` | Represents a queue-submission completion point that can be queried or waited on |
| `QueryHeap` / `QueryHeapDesc` | Collect visibility results and GPU timestamps |
| `BufferDesc` / `TextureDesc` | Describe resources before creation |
| `GraphicsPipelineDesc` / `ComputePipelineDesc` | Describe shader pipelines |
| `Surface` / `SwapChain` | Connect rendering to a window |
| `ZenithCompiler` | Compiles Slang source for the selected graphics API |

## Public Namespaces

| Namespace | Contents |
|-----------|----------|
| `Zenith.NET` | Core RHI types and Slang compilation |
| `Zenith.NET.DirectX12` | DirectX 12 context factory |
| `Zenith.NET.Metal` | Metal context factory |
| `Zenith.NET.Vulkan` | Vulkan context factory |
| `Zenith.NET.Extensions.ImageSharp` | Image loading and mip generation |
| `Zenith.NET.Extensions.ImGui` | Dear ImGui integration |
| `Zenith.NET.Views` | Shared View contracts and frame event data |
| `Zenith.NET.Views.*` | Framework-specific View controls |

Browse the namespace tree to inspect the complete public API reference. The guide pages link related concepts, while the [Tutorials](../tutorials/index.md) show the types in complete applications.
8 changes: 4 additions & 4 deletions documents/docfx.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,17 @@
"globalMetadata": {
"_appTitle": "Zenith.NET",
"_appLogoPath": "images/Zenith.NET-Logo.svg",
"_appFaviconPath": "images/Zenith.NET.png",
"_appFaviconPath": "images/Zenith.NET.svg",
"_enableSearch": true,
"_appFooter": "Zenith.NET is a modern rendering hardware interface for .NET.",
"_gitContribute": {
"repo": "https://github.com/qian-o/Zenith.NET",
"branch": "master"
},
"_gitUrlPattern": "https://github.com/qian-o/Zenith.NET/blob/master/{path}#L{line}"
}
},
"output": "_site",
"sitemap": {
"baseUrl": "https://qian-o.github.io/Zenith.NET/"
}
}
}
}
12 changes: 0 additions & 12 deletions documents/docs/best-practices.md

This file was deleted.

11 changes: 0 additions & 11 deletions documents/docs/concepts/command-model.md

This file was deleted.

11 changes: 0 additions & 11 deletions documents/docs/concepts/graphics-context.md

This file was deleted.

10 changes: 0 additions & 10 deletions documents/docs/concepts/resource-binding.md

This file was deleted.

10 changes: 0 additions & 10 deletions documents/docs/features/compute.md

This file was deleted.

11 changes: 0 additions & 11 deletions documents/docs/features/graphics.md

This file was deleted.

10 changes: 0 additions & 10 deletions documents/docs/features/mesh-shading.md

This file was deleted.

12 changes: 0 additions & 12 deletions documents/docs/features/ray-tracing.md

This file was deleted.

Loading