Graphics
Graphics: 3D engines, raytracers, fractals, animation and effects, from MS-DOS and Java applets to GLSL shaders and microcontrollers. 45 articles.
3D Script IDE
An interactive environment for creating 3D animations using a simple scripting language.
14 March 2023FractalToy
An online real-time fractal explorer made with WebGL, with test renderings streamed to FFmpeg for video encoding.
15 January 2015Clip3D
An online collaborative game creation tool, outputting to WebGL, iOS and Android.
14 January 2015GLSL fractals
Animated fractals with WebGL and GLSL: raycasting with a slowly moving camera, colour from surface normals, edge detection and toon shading.
29 January 20143D fractals
Write-up to come.
June 2013GLSL raycasting
Testing the feasibility of raycasting inside a fragment shader with moderately complex models: 3D fractals reminiscent of gothic cathedrals.
9 September 2012WebGL raytracer
WebGL is quite effective at raytracing simple scenes with a decent frame rate: a fragment shader framework and eight raytracers built on it.
26 December 2010PHP 3D engine
Write-up to come.
June 2009Reflective sphere
Analytical reflections in OpenGL: reverse reflection mapping draws objects at their reflected positions inside a sphere in a second pass.
27 January 2008Polychorons
Animated 3-dimensional Schlegel diagrams of 4-dimensional objects, in C++ and OpenGL.
25 January 2008CubeLogix 3D website
A Flash 3D engine with real-time shadows: navigation breaking through the background, with cubes and windows casting accurate shadows.
4 March 2007Java 3D engine
A 3D engine in Java with a scene graph and a cartoon rendering style.
13 November 2005Flash smoke
A smoke effect in six versions: smokey motion, smooth particles, lines, a grid with scale and fade, and direction and scale.
30 October 2005Flash bubbles
Simple example of animation with friction and wind, in two versions.
12 October 2005TextureEvolver
TextureEvolver: a Java applet for evolving textures, with source for three versions.
17 June 2005Flash panorama ball
Simulating affine texture mapping with shears on triangular MovieClips: a sphere built by easing, texture mapped, then viewed from inside as a panorama.
28 May 2005Flash ZoomGrid
A zooming grid built two ways: a simple overlay method and an optimised binary method.
23 May 2005Fluid dynamics galaxy
Trying out a galaxy effect using an FFT-based fluid solver, where the force field on the liquid is gravitational.
29 March 2005Galaxy simulation
Simulating gravity in a 2D wrap-around universe, from Java applets to a C++ version using FFT convolution for the force field.
1 January 2005Flash bouncing ball
A bouncing ball: a simple animation example for ActionScript 1.0 and 2.0.
21 November 2004Flash 3D: landscape
Flying over a Cartesian terrain with a generated heightmap: a simple version, then faded edges and reflected symmetry.
19 May 2004Flash growing things
Particle trails making plant-like patterns: simple cracks, branching parameters, an oil spill and plants.
17 May 2004Flash 3D: cubes reflection
Combining reflections and shadow casting: three cubes over a reflective surface with a moving light, then a wavey distortion.
8 May 2004Flash 3D mixer
How to overlay Flash with a transparent background over your HTML.
3 December 2003Flash circle strips
Circle strips: a simple animation example for ActionScript 1.0 and 2.0.
24 July 2002Flash 3D: intersection
Intersecting 3D objects in Flash: eleven versions, from outlines and polygon splits to intersecting squares and cubes.
2 July 2002Flash 3D: cubes navigation
Simple objects, rotation and hit testing: solid cubes drawn with the painter's algorithm, masks, mouseover events and a wavey effect.
11 June 2002Flash dust
Dust: a simple animation example for ActionScript 1.0 and 2.0.
22 May 2002RTRay: a realtime raytracer
A realtime raytracer in C++: a classic scene with reflections and shadows, then cutting first-hit sphere tests with on-screen bounding boxes.
27 March 2002Java animated Julia fractals
Weird Julia-style animated fractals: a Java applet, with source.
16 December 2001Java 3D panoramas
A barebones Java renderer with a software triangle rasteriser, then a textured cube viewed from inside as a panorama viewer, then an unfolded panorama.
2 December 2001Java fog effects
Six fog effects as Java applets: embossed zoom, blurred checks and XOR patterns, checkers, zooming smoke and morphing patterns.
1 September 2001Java 2D blobs
Animated 2D blobs: a Java applet effect, with source.
22 July 2001Java green liquid goo
Green liquid goo: an animated Java applet effect, with source.
8 July 2001Java 3D pillars
A demonstration scene of pillars with a reflective floor, then a cartoon shading post-process that finds outlines from discontinuities in the Z-buffer.
20 March 2001Java XOR patterns
A Java applet that spins 3D objects and XORs their polygons into the frame, leaving interesting patterns.
8 February 2001Java Mandelbrot zoom
A Java applet that draws the Mandelbrot set and zooms into any rectangle you drag out with the mouse.
24 July 2000Procedural city block
A procedural method (grid subdividing, random building generation) to create the layout of a city, in C++ and OpenGL.
16 July 2000OpenGL ribbon
A Windows C++ OpenGL example: a ribbon effect, with full source.
26 January 2000OpenGL patterns with cubes
Using a 3D grid of cubes to create shapes and patterns. You could say that these are very primitive voxels.
17 January 2000Cloth simulation
A simple spring-mass grid simulates a piece of flexible material falling under gravity and slipping off objects.
13 October 1999LRay: a Java raytracer
A reference raytracer in Java: spheres, planes, reflections and procedural textures, rendered in successive passes.
10 June 1999Box & reflective tetrahedron
Using a BSP tree for reflections and object intersection, stored in flattened fixed-size arrays for speed.
31 October 1998C++ graphics effects
C++ graphics experiments for Windows: a fractal universe generator, a pattern generator and its function networks, triangles, pixel text and polygon booleans.
1 June 1998MS-DOS 3D engine
Write-up to come.
January 1995