Skip to content

FionaWright/CherryPip

Repository files navigation

CherryPip

by Fiona Wright

Info

D3D12 Graphics Engine with a focus on Path-Tracing / Spectral-Tracing using RayQuery.
Built for fun and to further my skills in the graphics programming field.
Trying to work on it when I have free time from college.

Uses CMAKE for the build system.
C++, HLSL and Python are the main languages.

Third-Party Tools

  • Dear ImGui (GUI)
  • spng (PNG Loader)
  • tinyddsloader (DDS Loader)
  • texconv (PNG/JPG -> DDS Build Step)
  • zlib/fastgltf (GLTF Loader)
  • WinPixEventRuntime (GPU Events/Markers)

Features

Engine

  • Repository split between engine (HWI + System + Render) and Apps (SceneStudio)
  • Python Execution at runtime for data analysis / debugging
  • Hot reloading for shaders
  • Set up scene configs and switch between them at runtime seamlessly
  • Scene GUI tab where you can modify each objects transform, material, etc

Forward + Deferred Render Backends

  • Microfacet lighting model + Irradiance IBL
  • Rotatable cubemap skybox that has parity with path tracer backend
  • Many different debug view modes (WorldPos, Normals, Tangents, Roughness, UV, Lambert, Albedo, etc) (Over 20)
  • Ability to render lines for debugging directions/axes/etc

Path Tracer Render Backend

  • Fully deterministic and seeded
  • Russian Roulette, Firefly Threshold, Cosine Importance Sampling
  • Furnace Tests for debugging
  • Depth of Field
  • Independent, Halton, Apple Halton and Owen-Scrambled Halton RNG sampling strategies
  • Environment maps with support for Panoramic and Octohedral Equal-Area (Rotatable at runtime)
  • Directional lighting + GPU max parallel search on the EA Environment Map to set automatically direction to where luminance is highest
  • Denoising (Box, Gaussian, Median, Edge-Avoiding A-Trous) using GBuffer pre-pass
  • Proper BSDF / BRDF / BTDF lighting model system

Lighting Models

  • BRDF Diffuse: Lambertian
  • MM: GGX Smith
  • MM: GGX Smith Anisotropic
  • MM: GGX VCavity VNDF
  • MM: GGX Smith VNDF
  • MM: GGX Smith Anisotropic VNDF
  • All MMs work for both BRDF Specular & BTDF

Debug Tools

Readback System
  • Click on a pixel and see its RGBA output value in the GUI
  • Automatically collect a pixels value over multiple frames and then plot it in a histogram
Info Output System
  • Output different variables inside the path-tracer for each pixel (Normals, Albedo, HitDist, RNG, FirstBounceDirection, etc) (Over 30)
Convergence System
  • Take snapshots of the path-tracer output into 2 slots and find the RMSE between them with a compute shader
  • Generate golden images, save them as PNGs and load them into slot A
  • Automatically take snapshots into slot B every frame and compute the RMSE. Then plot RMSE convergence graphs using python
Path Visualizer System
  • Click on a pixel to have all rays shot from that pixel next frame store their positions at each bounce
  • That data is then converted into coloured lines so you can follow the rays path

Spectral Tracer Render Backend

  • CIE2006 + Mallet&Yuksel2019 spectral primary decomposition
  • Multi-Lobe gaussian curve fitting for CIE_XYZbar & D65 Illuminant curves
  • Logistic curve fitting for CIE spectral primaries
  • Sellmeier curve fitting for material reflective index spectra
  • Many different debug spectra tests
  • Zero round-trip error
  • Full-Spectrum, Single-Wavelength and Hero-Sampling spectral sampling modes
  • Lambert and microfacet BSDF lighting models
  • Maxwell fresnell for dielectrics, conductors and glass materials

History

Progress as of 29/10/25:
image

Progress as of 08/11/25:
image

Progress as of 09/11/25:
image

Progress as of 10/01/26:
image

Progress as of 18/01/26:
image

Progress as of 25/01/26:
image

Progress as of 29/01/26:
image

Progress as of 18/02/26: Chess Beauty

Progress as of 21/02/26: Chess DOF

Progress as of 11/03/26: image

Progress as of 23/03/26: image

Progress as of 29/03/26: Spectral

Releases

No releases published

Packages

 
 
 

Contributors