Skip to main content

DiffBMP: Differentiable Rendering with Bitmap Primitives

Project Page arXiv GitHub PyPI

Accepted to CVPR 2026

Authors

Seongmin Hong1,*, Junghun James Kim2,*, Daehyeop Kim3, Insoo Chung3, Se Young Chun1,2,3,†

1 INMC, 2 IPAI, 3 Dept. of ECE, Seoul National University, Republic of Korea

* Co-first authors    † Corresponding author


Overview

DiffBMP is a fast differentiable rendering framework for creating vector art with arbitrary bitmap primitives. Unlike traditional vector graphics that rely on geometric primitives, DiffBMP enables the use of any image as a primitive, opening new possibilities for artistic expression and image synthesis.

🚀 Installation

You have two options for installation:

Option 1: PyPI Installation (Linux/WSL Only - Simple & Fast)

Best for users who want to quickly use DiffBMP without building from source.

# Install PyTorch first (if not already installed)
# Note: You can use any CUDA version compatible with your system (cu118, cu121, cu124, etc.)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121

# Install pydiffbmp
pip install pydiffbmp

# Install system dependencies
sudo apt-get install poppler-utils

# Install additional Python dependencies (if needed)
pip install tqdm nvidia-ml-py fonttools svgwrite svgpathtools scour cairosvg psd-tools piq moviepy pyvista pandas scikit-image scipy

System Requirements

  • Python: 3.8, 3.9, 3.10, or 3.11
  • Platform: Linux x86_64 (Windows/macOS not supported for PyPI installation)
  • GPU: NVIDIA GPU with CUDA capability 8.6+ (RTX 3090, A100, RTX 4090, L40S, etc.)
  • CUDA Driver: 11.8+ (CUDA toolkit NOT required for PyPI installation)
  • PyTorch: 1.13.0+

⚠️ Note: Pre-built binaries are currently available for Linux only. Windows users should use WSL2 or build from source.

Option 2: Build from Source (All Platforms - Flexible)

Best for developers, customization, or if you need to build on Windows/macOS.

# Clone the repository
git clone https://github.com/smhongok/diffbmp.git
cd diffbmp

# Install dependencies
pip install -r requirements.txt

# Build CUDA extensions
cd cuda_tile_rasterizer
python setup.py build_ext --inplace
python setup_fp16.py build_ext --inplace
python setup_psd_export.py build_ext --inplace
cd ..

# Install in editable mode
pip install -e .

Build Requirements:

  • CUDA Toolkit 12.3+ (recommended)
  • C++ compiler (GCC 9.4.0+ recommended)
  • PyTorch 1.13.0+

For detailed build instructions and troubleshooting, see DEVELOPMENT.md.

Running the Original Research Code

The original research implementation is available in the GitHub repository:

# Clone the repository
git clone https://github.com/smhongok/diffbmp.git
cd diffbmp

# Run with configuration
python main.py --config configs/default.json

For more details on research code, evaluation scripts, and advanced features, see DEVELOPMENT.md.


📚 Citation

If you use DiffBMP in your research, please cite our paper:

@misc{hong2026diffbmp,
    author    = {Hong, Seongmin and Kim, Junghun James and Kim, Daehyeop and Chung, Insoo and Chun, Se Young},
    title     = {DiffBMP: Differentiable Rendering with Bitmap Primitives},
    arxiv     = {2602.22625},
    year      = {2026}
}

🙏 Acknowledgments

This work was inspired by and builds upon several excellent open-source projects:

We thank the authors of these projects for their contributions to the community.


📝 License

This project is licensed under the MIT License - see the LICENSE file for details.


For questions or issues, please open an issue on GitHub.

Metadata

Release files for pydiffbmp 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pydiffbmp 0.1.3
File Size Uploaded
pydiffbmp-0.1.3.tar.gz 553.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pydiffbmp 0.1.3
File Interpreter ABI Platform
pydiffbmp-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 1.1 MB

Release files / pydiffbmp-0.1.3.tar.gz

Download URL pydiffbmp-0.1.3.tar.gz
Size 553.2 kB
Tags Source
SHA-256 checksum
How to use checksums
87907d780d4bbbcc602277e69b85c4aaa46efb8c8ca5e76b41e821bebfffab14
BLAKE2b-256 checksum
How to use checksums
81edf1c40b3c90ac6c58bdccb35497e8c577ab8fe262c8b23a75c28ecfdf22ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.18

Release files / pydiffbmp-0.1.3-py3-none-any.whl

Download URL pydiffbmp-0.1.3-py3-none-any.whl
Size 587.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9a2a876d2b143bb556bc845bf33f227b5d0af88fb72e16167787bf605045e97a
BLAKE2b-256 checksum
How to use checksums
41a119e836e6c274ba55b780fc492315e76622df8228cc6db309e44ba48dead9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.18

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page