These are some examples of my personal graphics programming projects. They are entirely programmed by me, either in GLSL (for shaders), or using C++/OpenGL.


C++ / OpenGL demos

Dynamic Nebula Clouds (video)Screenshot
I developed a high-performance and versatile nebula effect for space games. This example uses just 18 textured quads at various angles (no particle effects or billboards etc). Adaptive transparency is used to prevent visual artefacts when viewing the polygons edge-on.



Spaceship DemoScreenshot
For this demo, I implemented a scripted particle system, shadow volumes, stencilled reflections, and a simple skybox. (Note that the vessel is self-shadowing, although it’s not very clear in the image.)



Per-Fragment LightingScreenshot
I implemented a per-fragment lighting shader for this demo. Geometry outside the spotlight cone is rendered in low-brightness greyscale to mimic the colour sensitivity of human eyes.



Procedural LandscapeScreenshot
The landscape shown in the screenshot was generated randomly using a combination of trigonometric functions. It adapts to any practical scale and level of detail. This example has ~32,000 polygons, showing a wireframe overlay, with a skybox in the background.



Real-world LandscapeScreenshot
Landscape geometry generated using real topographical data from the Grand Canyon. This scene contains roughly 500,000 polygons.



Shader demos

Seasick (online demo)Screenshot
(GLSL) An animated underwater effect using parallaxed texture distortions and some fake caustic lighting effects. (You can see the lighting effect separately in the “Light Rays” demo below.)



Light Rays (online demo)Screenshot
(GLSL) Simulating animated beams of light (e.g. caustics or crepuscular rays) implemented entirely in an image shader. Fairly pointless, but fun.




Really Basic Bump-mapping (online demo)Screenshot
(GLSL) This shader attempts to automatically infer surface angle at any given point on a texture by comparing the brightness of nearby pixels.




Plasma Triangle (online demo)Screenshot
(GLSL) Colourful animation giving a sense of 3d movement using only a 2d image shader.