Personal graphics toolkits
- DirectX12 & Vulkan RHI backends, supporting RTX, mesh shader and work graph
- Render graph with transient resource aliasing
- Explicit binding group management in shader
- (Experimental) compute shader DSL embedded in C++
- Physically-based atmosphere rendering
- Distortion-free displacement map optimizer
- Exact floating-point computation based on arithmetic expansion
- Exact predicates for computational geometry
- Constrained Delaunay triangulation
- Array-style halfedge mesh
- Exact mesh corefinement
- Discrete differential operators on triangle mesh
Name | Thumbnail |
---|---|
01.TexturedQuad Basic texture mapping |
|
02.ComputeShader Basic usage of compute shader |
|
03.BindlessTexture Basic usage of bindless resource array |
|
04.RayTracingTriangle Basic usage of ray tracing pipeline |
|
05.PathTracing Basic unidirectional path tracer using ray query |
|
06.DistortionFreeDisplacementMap https://cg.ivd.kit.edu/english/undistort.php |
|
07.Gizmo Basic gizmo elements |
|
08.FeatureAwareDisplacementMap https://airguanz.github.io/articles/2024.02.23.VDM-Baking |
|
09.MeshShader Basic usage of mesh shader |
|
10.FastMarchingMethod Basic fast marching method on 2d grid |
|
11.GeodesicDistance Geodesic distance field on voxels |
|
12.ShaderDSL Embedded DSL in C++ for writing shader |
|
13.HorizonMap Basic horizon shadow described in paper 'Interactive Horizon Mapping' |
|
14.HalfedgeMesh Halfedge data structure for triangle mesh |
|
15.HeatMethod Heat method for geodesic distance computation |
|
16.MeshCorefinement Embed all intersection lines between meshes |
|
17.WorkGraph Basic example of work graph |
|
18.ShortestGeodesicPath Find globally shortest geodesic path on triangle mesh |
|
19.Archive Serialize/deserialize to/from JSON/bytes |
|
20.MultiLayerOIT Multi-layered order-independent transparency |
|
WIP | ... |
avir for image resizing
boost-multiprecision for multi-precision floating-point numbers
bvh for BVH construction
Catch2 for testing
cista for counting class members
cxxopts for parsing command arguments
cyCodeBase for generating possion disk samples
D3D12MemAlloc for memory management in D3D12 backend
DearImGui for creating GUI in samples
DirectXAgilitySDK (binary) for accessing D3D12 preview features
DirectXShaderCompiler (binary) for compiling shaders
Eigen for solving linear systems
fmt for formatting strings
geometry-central for computing local parameterization (logarithmic map)
GLFW for managing windows and system events
half for conversions between float16 and float32
libigl for planar mesh parameterization in samples
magic_enum for formatting enum values
mimalloc for memory allocation
nlohmann-json for parsing & writing JSON strings
oneapi-tbb for spin locks and thread-safe containers
ryu for numer-to-string conversion
sigslot for thread-safe event broadcasting
smhasher for hash operators
spdlog for logging
SPIRV-Reflect for reflecting SPIRV codes
stb for image IO
tinyexr for EXR image IO
tinyobjloader for loading wavefront obj files
unordered_dense for replacing std::unordered_*
vk-bootstrap for Vulkan initialization
volk for loading Vulkan entry points
VulkanMemoryAllocator for memory management in Vulkan backend
WinPIXEventRuntime (binary) for generating PIX captures