A Processing/Java library for high performance GPU-Computing (GLSL). Fluid Simulation + SoftBody Dynamics + Optical Flow + Image Processing + Particle Systems + Physics +...
Java GLSL
Permalink
Failed to load latest commit information.
examples updated to platest p5 version Feb 18, 2017
src/com/thomasdiewald/pixelflow updated to platest p5 version Feb 18, 2017
LICENSE . Sep 6, 2016
README.md Update README.md Jan 6, 2017

README.md

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


videos

Softbody Dynamics

alt text alt text
alt text alt text

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
  • 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