Skip to content
forked from diwi/PixelFlow

A Processing/Java library for high performance GPU-Computing (GLSL). Fluid Simulation + SoftBody Dynamics + Optical Flow + Image Processing + Particle Systems + Physics +...

License

Notifications You must be signed in to change notification settings

jkruseAUT/PixelFlow

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

PixelFlow Header

PixelFlow

A Processing/Java library for high performance GPU-Computing (GLSL).


## Features ``` + Fluid Simulation (GLSL) + Fluid Particle Systems (GLSL) + Optical Flow (GLSL) + Harris Corner Detection (GLSL) + Image Processing Filters (GLSL) - Bilateral Filter - Box Blur - Custom Convolution Kernel - DoG (Difference of Gaussian) - Gaussian Blur - Laplace - MedianFilter - Sobel - ... + Softbody Dynamics (CPU, GLSL is coming) - 2D and 3D - Collision Detection - Cloth, Grids, Chains, ... - Particle Systems - etc ... + Utils - HalfEdge - Subdivision Polyhedra ```

JavaDoc: http://thomasdiewald.com/processing/libraries/pixelflow/reference/index.html


## Download + [Releases] (https://github.com/diwi/PixelFlow/releases) + [PixelFlow Website] (http://thomasdiewald.com/processing/libraries/pixelflow) + Processing IDE -> Library Manager
## videos

Softbody Dynamics

alt text alt text
[alt text](https://vimeo.com/184853892 SoftBody Dynamics 2D - Playground") [alt text](https://vimeo.com/184853883 SoftBody Dynamics 2D - Connected Bodies")

Computational Fluid Dynamics

alt text alt text alt text alt text alt text alt text

More Videos on Vimeo.


## Getting Started
// FLUID SIMULATION EXAMPLE
import com.thomasdiewald.pixelflow.java.DwPixelFlow;
import com.thomasdiewald.pixelflow.java.fluid.DwFluid2D;

// fluid simulation
DwFluid2D fluid;

// render target
PGraphics2D pg_fluid;

public void setup() {
  size(800, 800, P2D);

  // library context
  DwPixelFlow context = new DwPixelFlow(this);

  // fluid simulation
  fluid = new DwFluid2D(context, width, height, 1);

  // some fluid parameters
  fluid.param.dissipation_velocity = 0.70f;
  fluid.param.dissipation_density  = 0.99f;

  // adding data to the fluid simulation
  fluid.addCallback_FluiData(new  DwFluid2D.FluidData() {
    public void update(DwFluid2D fluid) {
      if (mousePressed) {
        float px     = mouseX;
        float py     = height-mouseY;
        float vx     = (mouseX - pmouseX) * +15;
        float vy     = (mouseY - pmouseY) * -15;
        fluid.addVelocity(px, py, 14, vx, vy);
        fluid.addDensity (px, py, 20, 0.0f, 0.4f, 1.0f, 1.0f);
        fluid.addDensity (px, py, 8, 1.0f, 1.0f, 1.0f, 1.0f);
      }
    }
  });

  pg_fluid = (PGraphics2D) createGraphics(width, height, P2D);
}


public void draw() {    
  // update simulation
  fluid.update();

  // clear render target
  pg_fluid.beginDraw();
  pg_fluid.background(0);
  pg_fluid.endDraw();

  // render fluid stuff
  fluid.renderFluidTextures(pg_fluid, 0);

  // display
  image(pg_fluid, 0, 0);
}

result



## Installation, Processing IDE
  • Download [Processing 3.x.x] (https://processing.org/download/?processing)
  • Install PixelFlow via the Library Manager.
  • Or manually, unzip and put the extracted PixelFlow folder into the libraries folder of your Processing sketches. Reference and examples are included in the PixelFlow folder.

Platforms

Windows, Linux, MacOSX


## Dependencies, to run the examples

About

A Processing/Java library for high performance GPU-Computing (GLSL). Fluid Simulation + SoftBody Dynamics + Optical Flow + Image Processing + Particle Systems + Physics +...

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 80.7%
  • GLSL 19.3%