‹ benspencer.io

Work Portfolio

Jul 10, 2022

Shadertoy Demos

The following demos are all written in GLSL and embedded in the browser using Shadertoy. Given the constraints imposed upon programs written in shaders, each demo is an experiment to test both the strengths and weaknesses of a restricted compute framework.

Deep Upscaling

An end-to-end implementation of a simple machine learning pipeline, this demo does several things in tandem. First, it renders both a low- and native-resolution pass of a 3D scene and builds a set of training data. These data are subsequently passed into a multilayer perceptron (MLP), after which the model is evaluated over the original low-resolution image pixels. The result is an upscaled beauty pass at a quality comparable to its native resolution.

» View project page

Gravity Probe β

A digital recreation of a photo from NASA’s gravity probe experiment. The shader contains a wavelet image decompressor inspired by JPEG-2000 that decodes a compressed background texture. The image data is used to render a 3D scene of a quartz sphere which is post-processed and graded to reproduce the look of the original photo.

» View project page

Realtime Global Illumination

A collection of real-time illumination algorithms. The direct illumination component is evaluated using Stokes' analytic contour integral method with occlusion approximated using signed distance functions. The indirect component is evaluated using a progressive path tracer which bakes incident radiance into a linear grid of spherical harmonic light probes.

» View project page

· · ·


An open-source repository of code written over the course of my experiments with GLSL shaders.

» GitHub repository
» Instagram movie gallery