Giter VIP home page Giter VIP logo

snow's Introduction

My MSc. on GPU-Acceleration of the Material-Point-Method can be found here.

Visuals

Click the video folder for a video! :) or watch on youtube!

Project

Ready for Windows: mingw-w64, VS (2013 and 2017 tested), NMake(compile_commands activated) Theoretically portable to unix-systems (no dependency restrictions)

Dependencies

GLEW (Tested 2.1.0, build from source)

GLFW (Tested 3.2.1, build from source)

ASSIMP (Tested 4.1.0, build from source)

GLM (Tested GLM 0.9.9.0, Header only)

Compute Shader ready GFX introduced with OpenGL 4.3

Included Dependencies

stb_image

voxelizer (A precomputed voxelization of the Stanford-Bunny is already included in resources/model/)

Usage

Manipulate the physical constants in defines.h to alter the simulation. (Changes might not be numerically stable)

Abstract

Physic simulations allow the creation of dynamic scenes on the computer. Computer generated images become lively and find use in movies, games and engineering applications. GPGPU techniques make use of the graphics card to simulate physics.

The simulation of dynamic snow is still little researched. The Material Point Method is the first technique which is capable of showing the dynamics and characteristics of snow.

The hybrid use of Lagrangian particles and a regular cartesian grid enables solving of partial differential equations. Therefore particles are transformed to the grid.

The grid velocities can be updated with the calculation of gradients in an FEM-manner (finite element method). Finally grid node velocities are weight back to the particles to move them across the scene. This method is coupled with a constitutive model to cover the dynamic nature of snow. This includes collisions and breaking.

This bachelor thesis connects the recent developments in GPGPU techniques of OpenGL with the Material Point Method to efficiently simulate visually compelling, dynamic snow scenes.

snow's People

Contributors

meyerfabian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

mpm-msc

snow's Issues

CountingSortPipeline

Change:

  • Buffer to support Uniform Buffers (Binding, BufferData)
  • CountingSortPipeline init to switch between SortingMethod and execute that method, additionally setting up a uniform block and decorate BufferData with SortedBufferData
  • BufferDataInterface with childs BufferData and SortedBufferData as Decorator, generateCommands as virtual method

build&run

Hello, I hope to learn your code better by running successfully.
But I didn't see relevant details in the readme document.
How can I build and run this project? (sorry to ask the questions)

C1202 on MSVC using sizeof(T) >= 256 Bytes

struct Particle {
  glm::dvec4 a;
  glm::dvec4 b;
  glm::dvec4 c;
  glm::dvec4 d;
  glm::dvec4 e;
  glm::dvec4 f;
  glm::dvec4 g;
  glm::dvec4 h; // 256Bytes
}

Particle particle = {};
boost::pfr::for_each_field(particle, [](const auto& field, std::size_t idx){
  size_t byte_of_field = sizeof(field);
}

throws: fatal error C1202: recursive type or function dependency context too complex

Renderable/Simulatable

It would be preferable to abstract away how each object gets rendered/simulated, now it's done very manually in rendering and simulation.
Low Priority.

performance hit

6372706 + 5da6019 introduced a hit in performance although only architectural changes were done. Can use the new programed Benchmarker maybe, although i have the GLFWcontext in suspicion.

Grid to Particle Transfers

Atomic writing is completely unneccessary in G2P as a particle has already all information needed to do access grid nodes with a kernel.

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.