/Rtrc

Real-time graphics toolkits

Primary LanguageC++MIT LicenseMIT

Rtrc

Personal real-time graphics toolkits

Samples

Name Thumbnail
01.TexturedQuad
Basic texture mapping
Samples01
02.ComputeShader
Basic usage of compute shader
Samples00
03.BindlessTexture
Basic usage of bindless resource array
Samples00
04.RayTracingTriangle
Basic usage of ray tracing pipeline
Samples00
05.PathTracing
Basic unidirectional path tracer using ray query
Samples00
06.DistortionFreeDisplacementMap
https://cg.ivd.kit.edu/english/undistort.php
Samples00
07.Gizmo
Basic gizmo elements
Samples00
08.FeatureAwareDisplacementMap
https://airguanz.github.io/2024/02/23/vdm-baking.html
Samples00
09.MeshShader
Basic usage of mesh shader
Samples00
10.FastMarchingMethod
Basic fast marching method on 2d grid
Samples00
11.GeodesicDistance
Geodesic distance field on voxels
Samples00
WIP ...

Third-party Dependencies

avir for image resizing

cista for counting class members

cxxopts for parsing command arguments

cyCodeBase for generating possion disk samples

D3D12MemAlloc for memory management in D3D12 backend

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

DearImGui for creating GUI in samples

nlohmann-json for parsing & writing JSON strings

libigl for planar mesh parameterization in samples

magic_enum for formatting enum values

mimalloc for memory allocation

oneapi-tbb for spin locks and thread-safe containers

DirectXAgilitySDK (binary) for accessing D3D12 preview features

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