Unified GPU IPC Framework

November 28, 2025 ยท View on GitHub

This repository contains the source code for StiffGIPC, a Unified GPU Incremental Potential Contact Framework introduced in our paper: StiffGIPC: Advancing GPU IPC for Stiff Affine-Deformable Simulation ACM Transactions on Graphics, 2025. Our framework consistently achieves high performance in soft, stiff, and hybrid simulations (cloth, elastic solids, rigid bodies, and their hybrid couplings), even when handling high-resolution models, large deformations, and high-speed impacts.

Source code contributor: Kemeng Huang, Xinyu Lu

Note: this software is released under the MPLv2.0 license. For commercial use, please email the authors for negotiation.

video 1

Watch the video

BibTex

Please cite the following papers if it helps.

@article{stiffgipc2025,
      author = {Huang, Kemeng and Lu, Xinyu and Lin, Huancheng and Komura, Taku and Li, Minchen},
      title = {StiffGIPC: Advancing GPU IPC for Stiff Affine-Deformable Simulation},
      year = {2025},
      publisher = {Association for Computing Machinery},
      volume = {44},
      number = {3},
      issn = {0730-0301},
      doi = {10.1145/3735126},
      journal = {ACM Trans. Graph.},
      month = may,
      articleno = {31},
      numpages = {20}
}
@article{gipc2024,
      author = {Huang, Kemeng and Chitalu, Floyd M. and Lin, Huancheng and Komura, Taku},
      title = {GIPC: Fast and Stable Gauss-Newton Optimization of IPC Barrier Energy},
      year = {2024},
      publisher = {Association for Computing Machinery},
      volume = {43},
      number = {2},
      issn = {0730-0301},
      doi = {10.1145/3643028},
      journal = {ACM Trans. Graph.},
      month = {mar},
      articleno = {23},
      numpages = {18}
}

Requirements

Hardware requirements: Nvidia GPUs

Support platforms: Windows, Linux

Dependencies

NameVersionUsageImport
cuda>=11.0GPU programmingsystem install
eigen33.4.0matrix calculationpackage
freeglut3.4.0visualizationpackage
glew2.2.0#3visualizationpackage

linux

We use CMake to build the project.

sudo apt install libglew-dev freeglut3-dev libeigen3-dev nlohmann-json3-dev

Windows && linux

We use vcpkg to manage the libraries we need and use CMake to build the project. The simplest way to let CMake detect vcpkg is to set the system environment variable CMAKE_TOOLCHAIN_FILE to (YOUR_VCPKG_PARENT_FOLDER)/vcpkg/scripts/buildsystems/vcpkg.cmake

vcpkg install eigen3 freeglut glew freeglut nlohmann-json

EXTERNAL CREDITS

This work utilizes the following external software library, which have been included here for convenience: Copyrights are retained by the original authors.