Skip to content

arminkz/PointCloudRendering

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PointCloudRendering

A point cloud renderer using splatting method.

screenshot


Deferred Shading

The renderer uses a deferred shading pipeline. Instead of computing lighting directly while rasterizing each splat, the geometry pass writes per-pixel surface attributes into a set of off-screen textures called the G-buffer (geometry buffer). A second full-screen pass then reads those textures and computes lighting once per pixel.

This decouples geometry complexity from lighting cost — overlapping splats no longer pay the lighting price multiple times — and makes it straightforward to add screen-space effects (SSAO, shadows, etc.) that need access to position and normal information.

The G-buffer in this renderer stores three attributes, which are then composited into the final image:

Albedo Normals Depth Final
albedo normals depth final
  • Albedo — per-splat base color.
  • Normals — view-space surface normals reconstructed from the splat's oriented disk.
  • Depth — linearized depth, used for reconstructing view-space position during the lighting pass.
  • Final — composited result after the lighting pass.

Build Instructions

All C++ dependencies are vendored as git submodules under external/. You only need a C++17 compiler and CMake (3.20+).

  1. Clone with submodules:
git clone --recurse-submodules <repo-url>

If you already cloned without --recurse-submodules, run:

git submodule update --init --recursive
  1. Configure and build:
cmake -S . -B build
cmake --build build -j

About

A point cloud renderer using EWA splatting method.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors