AI prompts
base on LichtFeld Studio: Where reality and the digital world blend. <div align="center"><img src="src/visualizer/gui/assets/logo/lichtfeld-logo-white.svg" alt="LichtFeld Studio" height="60"></div>
<div align="center">
**A high-performance C++ and CUDA implementation of 3D Gaussian Splatting**
[](https://discord.gg/TbxJST2BbC)
[](https://mrnerf.github.io/lichtfeld-studio-web/)
[](https://mrnerf.github.io/awesome-3D-gaussian-splatting/)
[](LICENSE)
[](https://developer.nvidia.com/cuda-downloads)
[](https://en.cppreference.com/w/cpp/23)
<img src="docs/viewer_demo.gif" alt="3D Gaussian Splatting Viewer" width="85%"/>
[**Quick Start**](#quick-start) •
[**Installation**](#installation) •
[**Usage**](#usage) •
[**Results**](#benchmark-results) •
[**Community**](#community--support)
</div>
---
## Support LichtFeld Studio Development
LichtFeld Studio is a free, open-source implementation of 3D Gaussian Splatting that pushes the boundaries of real-time rendering performance.
**Why Your Support Matters**:
This project requires significant time and resources to develop and maintain.
Unlike commercial alternatives that can cost thousands in licensing fees, LichtFeld Studio remains completely free and open. Your contribution helps ensure it stays that way while continuing to evolve with the latest research.
Whether you're using it for research, production, or learning, your support enables us to dedicate more time to making LichtFeld Studio faster, more powerful, and accessible to everyone in the 3D graphics community.
[](https://paypal.me/MrNeRF)
[](https://donorbox.org/lichtfeld-studio)
---
## Overview
LichtFeld Studio is a high-performance implementation of 3D Gaussian Splatting that leverages modern C++23 and CUDA 12.8+ for optimal performance. Built with a modular architecture, it provides both training and real-time visualization capabilities for neural rendering research and applications.
### Key Features
- **2.4x faster rasterization** (winner of first bounty by Florian Hahlbohm)
- **MCMC optimization strategy** for improved convergence
- **Real-time interactive viewer** with OpenGL rendering
- **Modular architecture** with separate core, training, and rendering components
- **Multiple rendering modes** including RGB, depth, and combined views
- **Bilateral grid appearance modeling** for handling per-image variations
## Community & Support
Join our growing community for discussions, support, and updates:
- **[Discord Community](https://discord.gg/TbxJST2BbC)** - Get help, share results, and discuss development
- **[Website](https://mrnerf.com)** - Visit our website for more resources
- **[Awesome 3D Gaussian Splatting](https://mrnerf.github.io/awesome-3D-gaussian-splatting/)** - Comprehensive paper list
- **[@janusch_patas](https://twitter.com/janusch_patas)** - Follow for the latest updates
## Active Bounties
### Fourth Bounty: Automatic Per-Scene Hyperparameter Optimization
**💰 $2,430** | [Issue #443](https://github.com/MrNeRF/LichtFeld-Studio/issues/443)
**📅 Deadline:** October 12, 2025 at 11:59 PM PST
### Third Bounty: Follow-up to Bounty #002
**💰 $500** | [Issue #421](https://github.com/MrNeRF/LichtFeld-Studio/issues/421)
**📅 Deadline:** None (open-ended)
## Quick Start
```bash
# Clone and build (Linux)
git clone https://github.com/MrNeRF/LichtFeld-Studio
cd LichtFeld-Studio
# Download LibTorch
wget https://download.pytorch.org/libtorch/cu128/libtorch-cxx11-abi-shared-with-deps-2.7.0%2Bcu128.zip
unzip libtorch-cxx11-abi-shared-with-deps-2.7.0+cu128.zip -d external/
# Build
cmake -B build -DCMAKE_BUILD_TYPE=Release -G Ninja
cmake --build build -- -j$(nproc)
# Train on sample data
./build/LichtFeld-Studio -d data/garden -o output/garden --eval
```
## Installation
### Requirements
#### Software
- **OS**: Linux (Ubuntu 22.04+) or Windows
- **CMake**: 3.30 or higher
- **Compiler**: C++23 compatible (GCC 14+ or Clang 17+)
- **CUDA**: 12.8 or higher (required)
- **LibTorch**: 2.7.0 (setup instructions below)
- **vcpkg**: For dependency management
#### Hardware
- **GPU**: NVIDIA GPU with compute capability 7.5+
- **VRAM**: Minimum 8GB recommended
- **Tested GPUs**: RTX 4090, RTX A5000, RTX 3090Ti, A100, RTX 2060 SUPER
### Build Instructions
<details>
<summary><b>Linux Build</b></summary>
```bash
# Set up vcpkg (one-time setup)
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg && ./bootstrap-vcpkg.sh -disableMetrics && cd ..
## If you want you can specify vcpkg locally without globally setting env variable (see -DCMAKE_TOOLCHAIN_FILE version)
export VCPKG_ROOT=/path/to/vcpkg # Add to ~/.bashrc
# Clone repository
git clone https://github.com/MrNeRF/LichtFeld-Studio
cd LichtFeld-Studio
# Download LibTorch 2.7.0 with CUDA 12.8
wget https://download.pytorch.org/libtorch/cu128/libtorch-cxx11-abi-shared-with-deps-2.7.0%2Bcu128.zip
unzip libtorch-cxx11-abi-shared-with-deps-2.7.0+cu128.zip -d external/
rm libtorch-cxx11-abi-shared-with-deps-2.7.0+cu128.zip
# Build
cmake -B build -DCMAKE_BUILD_TYPE=Release -G Ninja
## Or if you want you can specify your own vcpkg
# cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE="<path-to-vcpkg>/scripts/buildsystems/vcpkg.cmake" -G Ninja
cmake --build build -- -j$(nproc)
```
</details>
<details>
<summary><b>Windows Build</b></summary>
note: [Detailed instructions here](https://github.com/MrNeRF/LichtFeld-Studio/blob/master/docs/docs/installation/building/windows.md)
Run in <u>**x64 native tools command prompt for VS**</u>:
```bash
# Set up vcpkg (one-time setup)
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg && .\bootstrap-vcpkg.bat -disableMetrics && cd ..
## If you want you can specify vcpkg locally without globally setting env variable (see -DCMAKE_TOOLCHAIN_FILE version)
set VCPKG_ROOT=%CD%\vcpkg
# Clone repository
git clone https://github.com/MrNeRF/LichtFeld-Studio
cd LichtFeld-Studio
# Create directories
if not exist external mkdir external
if not exist external\debug mkdir external\debug
if not exist external\release mkdir external\release
# Download LibTorch (Debug)
curl -L -o libtorch-debug.zip https://download.pytorch.org/libtorch/cu128/libtorch-win-shared-with-deps-debug-2.7.0%2Bcu128.zip
tar -xf libtorch-debug.zip -C external\debug
del libtorch-debug.zip
# Download LibTorch (Release)
curl -L -o libtorch-release.zip https://download.pytorch.org/libtorch/cu128/libtorch-win-shared-with-deps-2.7.0%2Bcu128.zip
tar -xf libtorch-release.zip -C external\release
del libtorch-release.zip
# Build
## Or if you want you can specify your own vcpkg
# cmake -B build -DCMAKE_BUILD_TYPE=Release -G ninja -DCMAKE_TOOLCHAIN_FILE="<path-to-vcpkg>/scripts/buildsystems/vcpkg.cmake"
# Ninja should be included with Visual Studio installation,
# if not you can either install it,
# or ignore this flag and use native generator - Building time might be extended
cmake -B build -DCMAKE_BUILD_TYPE=Release -G Ninja
cmake --build build -j
```
</details>
<details>
<summary><b>Docker Build</b></summary>
```bash
# Build and start container
./docker/run_docker.sh -bu 12.8.0
# Build without cache
./docker/run_docker.sh -n
# Stop containers
./docker/run_docker.sh -c
```
</details>
### Compiler Setup
<details>
<summary><b>Ubuntu 24.04+ (GCC 14)</b></summary>
```bash
# Install GCC 14
sudo apt update
sudo apt install gcc-14 g++-14 gfortran-14
# Set as default
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 60
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
```
</details>
<details>
<summary><b>Ubuntu 22.04 (Build GCC 14 from source)</b></summary>
```bash
# Install dependencies
sudo apt install build-essential libmpfr-dev libgmp3-dev libmpc-dev -y
# Download and build GCC
wget http://ftp.gnu.org/gnu/gcc/gcc-14.1.0/gcc-14.1.0.tar.gz
tar -xf gcc-14.1.0.tar.gz
cd gcc-14.1.0
# Configure and build (1-2 hours)
./configure --prefix=/usr/local/gcc-14.1.0 --enable-languages=c,c++ --disable-multilib
make -j$(nproc)
sudo make install
# Set up alternatives
sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-14.1.0/bin/gcc 14
sudo update-alternatives --install /usr/bin/g++ g++ /usr/local/gcc-14.1.0/bin/g++ 14
```
</details>
## Usage
### Introduction Tutorial: dataset preparation with Reality Capture and training with LichtFeld Studio
[](http://www.youtube.com/watch?v=JWmkhTlbDvg "Watch on youtube")
### Dataset Preparation
Download and extract the Tanks & Trains dataset:
```bash
wget https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/input/tandt_db.zip
unzip tandt_db.zip -d data/
```
### Training
Basic training:
```bash
./build/LichtFeld-Studio -d data/garden -o output/garden
```
Training with evaluation and visualization:
```bash
./build/LichtFeld-Studio \
-d data/garden \
-o output/garden \
--eval \
--save-eval-images \
--render-mode RGB_D \
-i 30000
```
MCMC strategy with limited Gaussians:
```bash
./build/LichtFeld-Studio \
-d data/garden \
-o output/garden \
--strategy mcmc \
--max-cap 500000
```
### Command-Line Options
#### Required
- `-d, --data-path [PATH]` - Path to training data with COLMAP reconstruction
#### Training Configuration
- `-o, --output-path [PATH]` - Output directory (default: `./output`)
- `-i, --iter [NUM]` - Training iterations (default: 30000)
- `-r, --resize_factor [NUM]` - Image resolution factor (default: 1)
- `--strategy [mcmc|default]` - Optimization strategy (default: `mcmc`)
- `--max-cap [NUM]` - Maximum Gaussians for MCMC (default: 1000000)
#### Evaluation
- `--eval` - Enable evaluation during training
- `--save-eval-images` - Save evaluation images
- `--test-every [NUM]` - Test/validation split ratio (default: 8)
#### Visualization
- `--headless` - Run without GUI (terminal-only mode)
#### Advanced Options
- `--bilateral-grid` - Enable appearance modeling
- `--steps-scaler [NUM]` - Scale training steps for multiple checkpoints
- See `--help` for complete list of options
### LPIPS Model Details
The implementation uses `weights/lpips_vgg.pt`, exported from `torchmetrics` with:
- **Network**: VGG with ImageNet pretrained weights
- **Input range**: [-1, 1] (conversion handled internally)
- **Normalization**: Included in model
## Project Architecture
```
LichtFeld-Studio/
├── src/
│ ├── core/ # Foundation (data structures, utilities)
│ ├── geometry/ # Geometric operations
│ ├── loader/ # Dataset loading (COLMAP, PLY, Blender)
│ ├── training/ # Training pipeline and strategies
│ ├── rendering/ # CUDA/OpenGL rendering
│ └── visualizer/ # Interactive GUI
├── gsplat/ # Optimized rasterization backend
├── fastgs/ # Fast Gaussian splatting kernels
└── parameter/ # JSON configuration files
```
## Contributing
We welcome contributions! See our [Contributing Guidelines](CONTRIBUTING.md).
### Getting Started
- Check issues labeled **good first issue**
- Join our [Discord](https://discord.gg/TbxJST2BbC) for discussions
- Use the pre-commit hook: `cp tools/pre-commit .git/hooks/`
### Development Requirements
- C++23 compatible compiler (GCC 14+ or Clang 17+)
- CUDA 12.8+ for GPU development
- Apply `clang-format` for code style
## Acknowledgments
This implementation builds upon:
- **[gsplat](https://github.com/nerfstudio-project/gsplat)** - Optimized CUDA rasterization backend
- **[3D Gaussian Splatting](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/)** - Original work by Kerbl et al.
## Citation
```bibtex
@software{lichtfeld2025,
author = {LichtFeld Studio},
title = {A high-performance C++ and CUDA implementation of 3D Gaussian Splatting},
year = {2025},
url = {https://github.com/MrNeRF/LichtFeld-Studio}
}
```
## License
This project is licensed under GPLv3. See [LICENSE](LICENSE) for details.
---
<div align="center">
**Connect with us:** [Website](https://mrnerf.com) • [Discord](https://discord.gg/TbxJST2BbC) • [Twitter](https://twitter.com/janusch_patas)
</div>
", Assign "at most 3 tags" to the expected json: {"id":"14802","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"