Skip to content

codesavory/GaussianRenderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GaussianRenderer

A CPU software rasterizer that renders 2D Gaussian splats to a PPM image.

Multiple Gaussians

Three RGB Gaussians — over-composite operator

Three overlapping RGB Gaussians composited with the over operator

Single Gaussian

Saturated Gaussian — α=25, σ=80

Saturated — α=25, σ=80
HDR alpha drives white core, red halo

Smooth Gaussian — α=0.5, σ=100

Smooth — α=0.5, σ=100
Correct straight-colour composite

Bug fixes (Phase 1)

  • Premultiplied writesplat() no longer bakes alpha into colour. Straight colour is stored; compositing happens explicitly in writePPM.
  • Index typoaccumAlpha[i*width + i]accumAlpha[j*width + i].
  • Separate alpha bufferrenderGaussian now returns pair<color_buf, alpha_buf> so both are available at write time.
  • HDR alpha clamp — Removed premature clamp(alpha, 0, 1) before the colour multiply. Alpha passes through unbounded; the clamp to display range happens at the unsigned char cast.
  • File error checkwritePPM now reports to stderr if the output path cannot be opened.

Timeline

  1. Software Rasterizer: Render a single Gaussian via CPU. ✅
  2. Extended Software Rasterizer: Render a scene with multiple Gaussians via CPU (over-composite operator). ✅
  3. GPU Rasterizer: Gaussian splatting via shaders.
  4. WebGPU Rasterizer: Real-time rendering in the browser via WebGPU.
  5. Bonus: Radiance field rendering via CPU.

About

Built a renderer that can visualize gaussians.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors