Gaussian BlendingRethinking Alpha Blending in 3D Gaussian Splatting[AAAI 2026]
April 5, 2026 · View on GitHub
Junseo Koo, Jinseo Jeong, Gunhee Kim
Paper | arXiv | Project Page
Installation
Our code is tested with Python 3.8 with CUDA 12.4.
git clone https://github.com/1207koo/gaussian_blending.git
cd gaussian_blending
conda create -y -n gaussian_blending python=3.8
conda activate gaussian_blending
pip install -r requirements.txt
pip install submodules/simple-knn
pip install submodules/gaussian-blending
Dataset
Our experiments are conducted on multi-scale Blender dataset and multi-scale Mip-NeRF 360 dataset.
You can download the datasets from their official websites: Blender (nerf_synthetic), Mip-NeRF 360
Please download and extract the datasets into the data/ directory as data/nerf_synthetic and data/mipnerf360, respectively.
Multi-scale Blender dataset
To create a multi-scale Blender dataset, you can use the provided script convert_blender_data.py to convert the original single-scale Blender dataset into a multi-scale version.
# python convert_blender_data.py --blender_dir <BLENDER_DIR> --out_dir <BLENDER_MULTI_DIR>
python convert_blender_data.py --blender_dir data/nerf_synthetic --out_dir data/nerf_synthetic_multi
Training
By default, our code performs multi-scale training and multi-scale testing.
To perform single-scale training and multi-scale testing, you can use the --train_res argument to specify the training resolution.
For example, --train_res 1.0 indicates training at the original resolution only (zoom-out setting), while --train_res 8.0 indicates training at 1/8 resolution only (zoom-in setting).
Multi-scale Blender dataset
# python train.py -m <OUTPUT_DIR> -s <DATA_DIR> --white_background --eval --sample_more_highres --train_res <LIST_OF_TRAIN_RESOLUTIONS>
# Single-scale training and multi-scale testing (zoom-out setting)
python train.py -m output/blender_lego_stmt1 -s data/nerf_synthetic_multi/lego --white_background --eval --train_res 1.0
# Single-scale training and multi-scale testing (zoom-in setting)
python train.py -m output/blender_lego_stmt8 -s data/nerf_synthetic_multi/lego --white_background --eval --train_res 8.0
# Multi-scale training and multi-scale testing
python train.py -m output/blender_lego_mtmt -s data/nerf_synthetic_multi/lego --white_background --eval --sample_more_highres
Mip-NeRF 360 dataset
# use '-r 4' for outdoor scenes, and '-r 2' for indoor scenes
# python train.py -m <OUTPUT_DIR> -s <DATA_DIR> --filter3d --white_background --eval --sample_more_highres -r <DEFAULT_RESOLUTION> --train_res <LIST_OF_TRAIN_RESOLUTIONS>
# Single-scale training and multi-scale testing (zoom-out setting)
python train.py -m output/mipnerf360_bicycle_stmt1 -s data/mipnerf360/bicycle --filter3d --white_background --eval -r 4 --train_res 1.0
# Single-scale training and multi-scale testing (zoom-in setting)
python train.py -m output/mipnerf360_bicycle_stmt8 -s data/mipnerf360/bicycle --filter3d --white_background --eval -r 4 --train_res 8.0
# Multi-scale training and multi-scale testing
python train.py -m output/mipnerf360_bicycle_mtmt -s data/mipnerf360/bicycle --filter3d --white_background --eval --sample_more_highres -r 4
Rendering
You can render images using a trained model with the following command:
# python render.py -m <OUTPUT_DIR> -s <DATA_DIR> --white_background --eval --train_res <LIST_OF_TRAIN_RESOLUTIONS> -r <DEFAULT_RESOLUTION> --lpips --vis
python render.py -m output/blender_lego_mtmt -s data/nerf_synthetic_multi/lego --white_background --eval --lpips --vis
python render.py -m output/mipnerf360_bicycle_mtmt -s data/mipnerf360/bicycle --filter3d --white_background --eval --lpips --vis
Drop-in Replacement
You can easily integrate our Gaussian Blending as a drop-in replacement into existing 3DGS-based models.
- Instead of using the original rendering module
submodules/diff-gaussian-rasterization, replace it with oursubmodules/gaussian-blendingmodule. - install the
submodules/gaussian-blendingmodule using the following command:
pip install submodules/gaussian-blending
- Modify the rendering code
gaussian_renderer/__init__.pyto useGaussianRasterizationSettingsandGaussianRasterizerfrom our module:
from gaussian_blending import GaussianRasterizationSettings, GaussianRasterizer
- And it's done! You can now use Gaussian Blending in your existing 3DGS-based model.
Changelog
2026-04-05 — CUDA Rasterizer Optimization
- Optimized the CUDA rasterizer for faster training and rendering while maintaining equivalent quality (PSNR within ±0.1 dB).
- Faster training across all configurations (multi-scale and single-scale).
- Up to 190 FPS rendering at 800×800 on a 48GB NVIDIA A40 GPU (lego, 283K Gaussians).
2025-11-26 — Initial Code Release
- Code release accompanying the arXiv preprint (2511.15102).
Acknowledgment
Our code is built upon the following repositories:
Citation
If you find our work useful in your research, please consider citing our paper:
@inproceedings{koo2026gb,
author = {Koo, Junseo and Jeong, Jinseo and Kim, Gunhee},
title = {{Gaussian Blending: Rethinking Alpha Blending in 3D Gaussian Splatting}},
booktitle = {Proceedings of the AAAI conference on artificial intelligence},
year = {2026},
}