Raking through the embers

September 26, 2017

Let’s build up the “Juhannus Embers” GLSL fragment shader step-by-step to see how wandering particles emerge from an almost stateless system.


Embers (inline)

September 2, 2017

This is the same “Juhannus Embers” shader I posted earlier, but this time I upgraded my own lightweight WebGL javascript library (so far called “gle.js”) to support animations so that it can be shown running without the embedded shadertoy player. Because the shadertoy player is quite fully featured, and more inteded for desktop browsers, it has some trouble on some mobile devices. The gle.js player is quite slim, so it may work slightly better on mobile. (more)


August 31, 2017

This was a small experiment to create a simple particle engine in a fragment shader that could run with good performance on mobile devices. I will describe in more detail how it works in a future post, but you can examine the source already on shadertoy. It’s built around triangle waves which I showed in the last post. (Unfortunately the embedded player may not work on all devices)

Triangle Waves

August 30, 2017

One of my favourite little shader techniques is to take continuous linear values, and turn them into oscillating triangle waves. Oscillation is useful in all kinds of cases. It can create repetition in space, or repeating animation over time. The most common way to generate oscillation is with the trigonometry function sin, which creates the well known smooth sine wave shape. But sin can sometimes be a little expensive, and other times that smoothness and non-linearity is not exactly what you want. (more)

Sketching a logo with shaders

August 24, 2017

When twitter avatars recently went from square to circular, even though my old image had a circle in the centre, the cropping they picked meant it ended up looking even more ugly than before.

So now seemed like a good time to update it, and at the same time replace the old thndl logo with something fresher.

As usual, my go-to tool for this kind of thing is not to sketch in a drawing app, but instead to write a little shader program. You can already see the result in the top left corner of your page, but this is the short story of how it was constructed.


thndl v3

May 19, 2017

It has been more than 2 years since the last post here on thndl, and the technology world has moved on noticeably during that time. When I first started writing thndl, shaders were a bit exotic, and WebGL wasn’t widely supported.


Some live coding with python

October 7, 2014

I've worked on a few different live coding environments in the past, but now I thought I would try to make something simple with Python that could later maybe form the basis for a bigger tool.


How DNG compresses raw data with lossless JPEG92

October 4, 2014


The Back Story

For the last year, I've been developing a cross-platform (i.e. Linux, Mac and Windows) Python-based desktop application called "MlRawViewer".

It was born out of the troubles I had working with the large raw video files produced using Magic Lantern with my Canon 7D (see Life Without Artifacts for more details).


Life Without Artifacts

September 24, 2013

Practically every film or video you watch these days is made up from thousands of 8x8 blocks of pixels described by a tiny stream of bits taking up just a fraction of the size of the original uncompressed data.

When the bitrate is high and the compression was done well (for example in a BluRay film), it can be almost impossible to tell this while the image is changing and you aren't sitting close to the screen.


RAW, a new way of recording the world

September 21, 2013


1:1 crop from a 7D RAW video frame. Processed with RawTherapee (sharpening, noise reduction).

A while ago I bought a Canon 7D DSLR camera to use for taking pictures and making videos. It's had a good life so far, producing thousands of pictures and many videos from different events.