Git Product home page Git Product logo

pbf-cuda's Introduction

PBF-CUDA

This project is an implementation of Position Based Fluids[1] written in CUDA and modified Screen Space Fluids Rendering[2] written in OpenGL.

Gallery

Double Dam Break 32K particles

Double Dam Break

See figs for additonal screenshots of single dam, surface normal map and sweeping boundary scene.

Features

Techniques

  • Imcompressible fluids simulation using Macklin[1]. Vorticity confinement is not implemented.
  • Screen space surface reconstruction based on Laan[2].
  • Surface smoothed by applying bilateral filter on depth texture.
  • GPU particle neighbor searching using Green[3].
  • GUI using NanoGUI. Talk with wjakob last year inspired me for this project.

Evaluation

Performance evaluated on a notebook with GTX 1050, i7-7700 HQ.

Under configuration of 4 incompressibility confinement iterations and 2 smoothing iterations each frame, this implementation runs at ~30 fps with 32K particles in Double Dam Break scene (Screenshots above).

Dependencies

  • CUDA 9.1
  • Visual Studio 2017 15.4.5.
    Higher version fails to build CUDA 9, as of 15.7.3.
    See Microsoft vcpkg Github issue.
  • GPU and driver support OpenGL 4.5

Licence

Apache License 2.0 (Apache-2.0)

References

[1] M. Macklin and M. Müller, “Position based fluids,” ACM Trans. Graph., vol. 32, no. 4, p. 1, Jul. 2013.
[2] W. J. van der Laan, S. Green, and M. Sainz, “Screen space fluid rendering with curvature flow,” in Proceedings of the 2009 symposium on Interactive 3D graphics and games - I3D ’09, 2009, p. 91.
[3] S. Green, “Particle Simulation using CUDA,” cse.uaa.alaska.edu, no. September, pp. 1–12, 2013.
[4] Learn OpenGL, extensive tutorial resource for learning Modern OpenGL for great skybox tutorial.

pbf-cuda's People

Contributors

naeioi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.