PixelFlow
A Processing/Java library for high performance GPU-Computing (GLSL). Fluid Simulation + SoftBody Dynamics + Optical Flow + Rendering + Image Processing + Particle Systems + Physics +...
Install / Use
/learn @diwi/PixelFlowREADME
![]()
PixelFlow
A Processing/Java library for high performance GPU-Computing (GLSL).
<br>Features
+ Fluid Simulation (GLSL)
- Jos Stam, Real-Time Fluid Dynamics for Games
- Particle Sytems
- Flow Field Visualisation
- Streamlines
- ...
+ Flow Field Particles (GLSL)
- Collision Detection, Particle <-> Particle
- Collision Detection, Particle <-> Obstacle
- Cohesion
- Verlet Integration
- FlowField/SDF(Signed Distance Field) based
- Streamlines
- ...
+ Softbody Dynamics (CPU, GLSL is coming)
- 2D and 3D
- Collision Detection
- Cloth, Grids, Chains, Rigid Folding ...
- Particle Systems
- ...
+ Skylight Renderer (GLSL)
- Interactive/Realtime Viewport Renderer
- Ambient Occlusion
- Diffuse Shading
- ShadowMapping
- ...
+ PostProcessing Filters (GLSL)
- Box Blur
- Binomial Blur
- Gauss Blur
- Gauss Blur Pyramid
- Median
- Bilateral Filter
- Custom Convolution Kernel
- DoG (Difference of Gaussian)
- BackgroundSubtraction
- Difference
- Laplace
- Sobel
- Gamma Correction
- Luminace
- Thresholding
- Harris Corner Detection
- Optical Flow
- Bloom
- Depth of Field (DoF)
- Liquid FX Filter
- Summed Area Table (SAT)
- Distance Transform (Jumpflood), Voronoi, Distance Map
- Min/Max (global)
- Min/Max (local)
- Merge Shader
- FlowField
- Line Integral Convolution (LIC) / Streamlines
- ...
+ AntiAliasing (GLSL)
- MSAA (Processing Default)
- FXAA
- SMAA
- GBAA/DEAA
+ Shadertoy (GLSL)
- Wrapper for running existing Shadertoy sketches inside Processing.
+ Utils
- HalfEdge
- Subdivision Polyhedra
- Sampling
- GLSL-Shader PreProcessor (#define, #include)
- GLSL-Shader Uniform Caching
- ...
JavaDoc: http://thomasdiewald.com/processing/libraries/pixelflow/reference/index.html
<br>Download
- Releases
- PixelFlow Website
- Processing IDE -> Library Manager
Videos / Examples / Demos / Applications
Skylight Renderer
<img src="https://i.vimeocdn.com/video/661407332.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/621790715.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/621791014.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/635968099.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/627412633.jpg" alt="alt text" width="30%">
Softbody Dynamics
<img src="https://vimeo.com/184854758/og_image_watermark/59441739" alt="alt text" width="30%"> <img src="https://vimeo.com/184854746/og_image_watermark/594416647" alt="alt text" width="30%"> <img src="https://vimeo.com/184853892/og_image_watermark/594415861" alt="alt text" width="30%">
Computational Fluid Dynamics
<img src="https://vimeo.com/184850259/og_image_watermark/594412638" alt="alt text" width="30%"> <img src="https://vimeo.com/184850254/og_image_watermark/594412429" alt="alt text" width="30%"> <img src="https://vimeo.com/184849960/og_image_watermark/594410553" alt="alt text" width="30%"> <img src="https://vimeo.com/184849959/og_image_watermark/594412244" alt="alt text" width="30%"> <img src="https://vimeo.com/184849892/og_image_watermark/594411994" alt="alt text" width="30%"> <img src="https://vimeo.com/184849880/og_image_watermark/594411757" alt="alt text" width="30%">
Optical Flow
<img src="https://i.vimeocdn.com/video/594413465.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/644816088.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/645059994.jpg" alt="alt text" width="30%">
Flow Field Particle Simulation
<img src="https://i.vimeocdn.com/video/659213047.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/659220662.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/659039289.jpg" alt="alt text" width="30%">
Flow Field - LIC
<img src="https://i.vimeocdn.com/video/660270815.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/659919142.jpg" alt="alt text" width="30%">
Realtime 2D Radiosity - Global Illumination (GI)
<img src="https://i.vimeocdn.com/video/668126268.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/668525007.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/646193678.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/646483311.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/646679859.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/630695092.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/646490228.jpg" alt="alt text" width="30%">
Space Syntax
<img src="https://i.vimeocdn.com/video/648427506.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/654202699.jpg" alt="alt text" width="30%"> <img src="https://i.vimeocdn.com/video/653671271.jpg" alt="alt text" width="30%">
<br>More Videos on Vimeo.
<br>Getting Started - Fluid Simulation
// 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);
}
<br>
<br>
Installation, Processing IDE
-
Download Processing 3
-
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.
-
Also make sure you have the latest graphics card driver installed!
Platforms
Windows, Linux, MacOSX
<br>Dependencies, to run the examples
-
Video, by the Processing Foundation<br> https://processing.org/reference/libraries/video/index.html
-
ControlP5, by Andreas Schlegel<br> http://www.sojamo.de/libraries/controlP5
-
PeasyCam, by Jonathan Feinberg<br> http://mrfeinberg.com/peasycam
-
HE_Mesh, by Frederik Vanhoutte<br> https://github.com/wblut/HE_Mesh
Processing/Java Alternatives
JRubyArt
JRubyArt is a ruby wrapper for processing by Martin Prout (monkstone)
- Blog: https://monkstone.github.io/
- Setup: http://ruby-processing.github.io/JRubyArt/
- Demos: [JRubyArt Pixelflow Examples](https://github.com/
Related Skills
node-connect
334.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
82.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
334.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
82.2kCommit, push, and open a PR
