Horn Schunck Method Lucas Kanade Method
- Final render: 3840x2160x12 @ 37 fps on an Nvidia 1060 GTX GPU assembled on a Surface Book Pro 2
- Final render: 3840x2160x12 @ 93 fps on an Nvidia 2070 RTX (OFF) assembled on an MSI GS66 Stealth
You can find the coolest state of the project here on Vimeo.
- CMake v3.8+ [for CUDA support within CMake]
- CUDA v9.0+
- OpenCV 4.3.0 [for reading images and webcam]
- GLFW
- GLEW (Only Windows)
- GLM
- Let
$PROJECT_ROOT
be the root directory of the project. - Download an example video from here and place it in
$PROJECT_ROOT/src/resources
. - After installing the dependencies please follow the cmake build steps in the code block below.
- After the binary has been compiled, place it in
$PROJECT_ROOT/src
directory. - Run
.\particle_atractor
cd $PROJECT_ROOT
mkdir build
cd build
cmake ..
make -j4
-
CUDA based particle engine.
- Event system for Mouse, Keyboard and Window
- Object file reader
- Shader code parser
- Rendering Engine
- Instanced Rendering for "pixel" objects
- Materials and Lighting (Specular, Ambient and Diffuse)
-
Simulate gravity using CUDA OpenGL Interop.
-
Integrating OpenCV with the particle engine to render frames captured from the video file.
-
CUDA Kernel for LK and HS based velocity vector computation.
-
Update particle engine physics to simulate
Hooke's LawGradient descent. -
Navier Stokes based CFD Physics.
- 2D advection
- 2D Diffusion
- Cavity Flow
- Heap allocations are expensive.
- Locality of reference is critical.
- Random access is costlier than sliding things in a cache.