Skip to content

gkouros/RGS-DR

Repository files navigation

RGS-DR: Deferred Reflections and Residual Shading in 2D Gaussian Splatting

Georgios Kouros, Minye Wu, Tinne Tuytelaars

| Project page | Full paper |

This repository contains the official implementation of the paper "RGS-DR: Deferred Reflections and Residual Shading in 2D Gaussian Splatting" that will appear at 3DV 2026.

Also, check out our follow-up work SpecGloss-GS!

Abstract

In this work, we address specular appearance in inverse rendering using 2D Gaussian splatting with deferred shading and argue for a refinement stage to improve specular detail, thereby bridging the gap with reconstruction-only methods. Our pipeline estimates editable material properties and environment illumination while employing a directional residual pass that captures leftover view-dependent effects for further refining novel view synthesis. In contrast to per-Gaussian shading with shortest-axis normals and normal residuals, which tends to result in more noisy geometry and specular appearance, a pixel-deferred surfel formulation with specular residuals yields sharper highlights, cleaner materials, and improved editability. We evaluate our approach on rendering and reconstruction quality on three popular datasets featuring glossy objects, and also demonstrate high-quality relighting and material editing.

Pipeline

Pipeline figure. Our rendering pipeline consists of three passes. The geometry pass produces screen-space diffuse color Id, specular tint S, roughness M, normals N, and low-dimensional features K, which feed into the subsequent passes. The lighting pass employs a cube mipmap to model environmental light for shading, as in GaussianShader. Meanwhile, the residual pass uses a spherical-mip-based directional encoding (inspired by Ref-GS) along with a shallow MLP fres to predict view-dependent effects not captured by the lighting pass.

Installation Instructions

conda env create -f environment.yml
conda activate rgsdr

pip install submodules/diff-surfel-rasterization
pip install submodules/simple-knn

Datasets

  1. Download the datasets Shiny Synthetic, Shiny Real, and Glossy Synthetic.

  2. Convert the glossy dataset to blender format:

python scripts/nero2blender.py --path ./data/GlossySynthetic
  1. Arrange the datasets as follows:
./data/
├── glossy_synthetic/
│   ├── angel/
│   │   ├── rgb/
│   │   ├── test_transforms.json
│   │   └── train_transforms.json
.   .
.   .
├── ref_shiny/
│   ├── ball/
│   │   ├── train/
│   │   ├── test/
│   │   ├── test_transforms.json
│   │   └── train_transforms.json
.   .
.   .
└── ref_real/
    ├── garenspheres/
    │   ├── images/
    │   ├── test_transforms.json
    │   └── train_transforms.json
    .
    .

Evaluation

To evaluate our method run the following commands:

python scripts/glossy_eval.py --scene=all <exp_name> # choose from {all, angel, bell, cat, horse, luyu, potion, tbell, teapot}

python scripts/shiny_eval.py --scene=all <exp_name> # choose from {all, ball, car, coffee, helmet, teapot, toaster}

python scripts/real_eval.py --scene=all <exp_name> # choose from {all, gardenspheres, sedan, toycar}

Visualization

To visualize a scene, first run the web server with the following command:

python view.py -m "/path/to/experiment"

Then on a web browser go to the following address: https://localhost:8080

Acknowledgement

We gratefully acknowledge the following works that were instrumental in the development of our method:

BibTeX

@misc{kouros2025rgsdr,
      title={RGS-DR: Deferred Reflections and Residual Shading in 2D Gaussian Splatting},
      author={Georgios Kouros and Minye Wu and Tinne Tuytelaars},
      year={2025},
      eprint={2504.18468},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2504.18468},
}

About

[3DV 2026] Code for "RGS-DR: Deferred Reflections and Residual Shading in 2D Gaussian Splatting"

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors