Skip to content

[SIGGRAPH 25 Poster] A realtime global illumination renderer using Surfels as scene cache.

License

Notifications You must be signed in to change notification settings

ZhiQing-R/SurfelPlus

 
 

Repository files navigation

SurfelPlus Readme

A project by Zhen Ren, Ruipeng Wang and Jinxiang Wang

This project is developed base on Nvidia's vk_raytrace renderer.

IMPORTANT: This readme file will only include the basic setup and usage for this project. For a complete development log and demo, please visit this site: SurfelPlus Project Page

Demos

image.png

DemoVideo.mp4

Introduction

SurfelPlus is a real-time dynamic global illumination renderer built on top of NVIDIA's vk_raytrace framework. Using Vulkan ray tracing and surfel-based techniques, SurfelPlus aims to deliver high-quality lighting effects with dynamic scene updates, providing an efficient solution for realistic and immersive visual rendering in real time.

DemoImage.png

Setup

You can use cmake to build this project.

git clone https://github.com/WANG-Ruipeng/SurfelPlus.git
cd ./SurfelPlus
mkdir build
cd ./build
cmake-gui ..
  • The original vk_raytrace renderer will require cloning both the nvpro_core and the vk_raytrace renderer itself. In our project, we did this for you so you only have to clone this repository.
  • We recommend build this project based on Visual Studio 2022 as it is used by everyone in the team.

Usage

Controls

Action Description
LMB Rotate around the target
RMB Dolly in/out
MMB Pan along view plane
LMB + Shift Dolly in/out
LMB + Ctrl Pan
LMB + Alt Look around
Mouse wheel Dolly in/out
Mouse wheel + Shift Zoom in/out (FOV)
Space Set interest point on the surface under the mouse cursor.
F10 Toggle UI pane.

Change glTF model

  • Drag and drop glTF files (.gltf or .glb) into viewer

Change HDR lighting

  • Drag and drop HDR files (.hdr) into viewer

Loading Different Models

All of the scene file resources are under downloaded_resources folder. You can edit the main function in the main.cpp file to load different models.

InputParser parser(argc, argv);
std::string sceneFile   = parser.getString("-f", "Sponza/Sponza.gltf");
std::string hdrFilename = parser.getString("-e", "std_env.hdr");

Enjoy! :)

About

[SIGGRAPH 25 Poster] A realtime global illumination renderer using Surfels as scene cache.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 61.4%
  • C 33.2%
  • GLSL 3.3%
  • CMake 1.6%
  • Python 0.3%
  • Lua 0.2%