MCPcopy Index your code
hub / github.com/NK-CS-ZZL/DiscretizedSDF

github.com/NK-CS-ZZL/DiscretizedSDF @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
575 symbols 1,685 edges 80 files 68 documented · 12%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Gaussian Splatting with Discretized SDF for Relightable Assets

This repository contains the official implementation of the following paper:

Gaussian Splatting with Discretized SDF for Relightable Assets

Zuo-Liang Zhu1, Jian Yang1, Beibei Wang2

1Nankai University 2Nanjing University

In ICCV 2025

[Paper] [Project Page] [Video]

DiscretizedSDF is an efficient, robust solution for object relighting, aiming to produce decent decompositions of geometry, material, and lighting for multi-view observations.

News

  • Jul. 21, 2025: Our code is publicly available.
  • Jul. 22, 2025: Our paper is publicly available on ArXiv.
  • Jul. 22, 2025: Release pretrained models.

Method Overview

pipeline

For more technical details, please refer to our paper on arXiv.

Dependencies and Installation

  1. Clone repo.

bash git clone https://github.com/NK-CS-ZZL/DiscretizedSDF.git cd DiscretizedSDF

  1. Create Conda environment and install dependencies bash conda create -n dsdf python=3.10 conda activate dsdf pip install torch==2.2.1 torchvision==0.17.1 --index-url https://download.pytorch.org/whl/cu118 pip install -r requirements.txt git clone https://github.com/NVlabs/nvdiffrast pip install ./nvdiffrast pip install ./submodules/fused-ssim pip install ./submodules/diff-surfel-sdf-rasterization pip install ./submodules/simple-knn Note that

    • Our code is verfied under CUDA11.8 runtime, so we recommend to use the same environment to guarantee reproductibility.
    • Please switch to the corresponding runtime if the NVCC version is higher than 11.8.
  2. Download pretrained models for demos from Download and place them to the pretrained folder

Quick Demo

We provide a demo checkpoint and a environment map in the demo folder. You can simply run sh demo.sh to creating a relighting video demo in 3 minutes.

Download

Dataset Training Bash :link: Source :link: Checkpoint :link: Result
Glossy Synthetic train_glossy.sh Images Google Driver Google Driver
Shiny Blender train_shiny.sh Images / Point Cloud Google Driver Google Driver
TensoIR Synthetic train_tir.sh Images / Env. maps Google Driver Google Driver

Update: Now you can also download our checkpoints from HuggingFace.

Training and Evaluation

Please refer to develop.md to learn how to benchmark the DiscretizedSDF and how to train yourself DiscretizedSDF model from the scratch.

Citation

If you find our repo useful for your research, please consider citing our paper:

bibtex @inproceedings{zhu_2025_dsdf, title={Gaussian Splatting with Discretized SDF for Relightable Assets}, author={Zhu, Zuo-Liang and Yang, Jian and Wang, Beibei}, booktitle={Proceedings of IEEE International Conference on Computer Vision (ICCV)}, year={2025} }

License

This code is licensed under the Creative Commons Attribution-NonCommercial 4.0 International for non-commercial use only. Please note that any commercial use of this code requires formal permission prior to use.

Contact

For technical questions, please contact nkuzhuzl[AT]gmail.com.

For commercial licensing, please contact beibei.wang[AT]nju.edu.cn

Acknowledgement

We thank Zixiong Wang for his suggestions during the project.

Here are some great resources we benefit from: GaussianShader, 2DGS, NeRO, TensoSDF, Ref-NeuS

If you develop/use DiscretizedSDF in your projects, welcome to let us know. We will list your projects in this repository.

Core symbols most depended-on inside this repo

make_cuda_tensor
called by 107
scene/NVDIFFREC/renderutils/c_src/torch_bindings.cpp
clone
called by 70
scene/NVDIFFREC/light.py
_get_plugin
called by 27
scene/NVDIFFREC/renderutils/ops.py
getLaunchGridSize
called by 27
scene/NVDIFFREC/renderutils/c_src/common.cpp
backward
called by 26
scene/NVDIFFREC/renderutils/ops.py
getLaunchBlockSize
called by 25
scene/NVDIFFREC/renderutils/c_src/common.cpp
update_grid
called by 24
scene/NVDIFFREC/renderutils/c_src/torch_bindings.cpp
_dot
called by 14
scene/NVDIFFREC/renderutils/bsdf.py

Shape

Function 352
Method 156
Class 65
Enum 2

Languages

Python81%
C++19%

Modules by API surface

scene/NVDIFFREC/util.py72 symbols
scene/NVDIFFREC/renderutils/ops.py57 symbols
scene/gaussian_model.py49 symbols
scene/NVDIFFREC/renderutils/c_src/torch_bindings.cpp31 symbols
scene/NVDIFFREC/light.py28 symbols
submodules/diff-surfel-sdf-rasterization/cuda_rasterizer/auxiliary.h23 symbols
utils/graphics_utils.py21 symbols
utils/general_utils.py17 symbols
utils/render_utils.py15 symbols
scene/NVDIFFREC/renderutils/c_src/vec3f.h15 symbols
scene/NVDIFFREC/renderutils/bsdf.py15 symbols
utils/mesh_utils.py14 symbols

For agents

$ claude mcp add DiscretizedSDF \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact