Close Show/hide page

{zero point nine} personal experiments, etc.

WebGL Motion Blur Shader

This is a WebGL shader that applies a Gaussian blur along an arbitrary angle, which makes it potentially useful for motion blur effects. I wasn't able to find any such WebGL shader on the web, which is what led to my first real approach at shader programming.

The following parameters can be set at runtime via uniforms:

  • number of samples used to create the blur
  • pixel distance between samples
  • blur angle

Gaussian blur works by sampling and averaging color values starting from a middle point and going outwards along an axis. Points closer to the center are factored in more than those further away, such that those values form a bell curve.

In this implementation, the vertex shader stores the texture coordinates and sample weights in varying arrays that get passed to the fragment shader. This is done based on the premise that avoiding texture lookups in the fragment shader may be faster (see here). However, because there are hard limits on the amount of data that can be passed thru varyings depending on browser, it may not run in all browsers (use Chrome, in other words). Moving all the logic to the fragment shader or devising some other design compromise could get around this incompatibility, possibly at the expense of performance or flexibility.

Voxel Renderer (3D + Isometric)

This is a volumetric voxel drawing library for the browser which originally started as a 'Hello World' exercise for three.js and pixi.js. It renders in 3D using three.js or in isometric 2D using pixi.

Read more

Scala Mandelbrot Visualizer

This was written as an exercise in learning Scala and experimenting with concurrency using Akka, using Processing as the front-end library.

Also of potential interest in the source is a minimal number-tweening library written in Scala, found in /src/leelib/tween.

The video capture shows how the visualizer starts to break down as we zoom in beyond what double-precision floating point can handle.

From late 2013.

Drive Wiki Maker

I've been keeping a publicly viewable wiki of developer notes for a while now (running on PmWiki), but when I switched to taking notes using Google Documents, I still wanted a way to make them publicly accessible.

Drive Wiki Maker is a node.js service which generates static html files from documents on Google Drive, and makes them browsable through a public front-end.

It can run in the background on a server to automatically update documents in an assigned Google Drive directory on an interval. It also includes a front-end configuration dashboard.

Virtual Trackpad for Android

What started out as a quick test with sockets inevitably grew into a fully baked app.

Read more