Program The rantings of a lunatic Scientist


Hi I’m Joss Whittle,

a Computer Science student at Swansea University pursuing a PhD in Computer Graphics.

My research interests mainly focuses around accelerating integral approximations with respect to Photo-Realistic Graphics using Global Illumination such as Photon Mapping and Path Tracing. However, I’m also interested in other areas of Computer Science and Software Development such as Web Development, Game Programming, and Mobile App development.

This page contains a description of several projects I have worked on.

PhD Research

This image was generated using a Path Tracer I implemented for my research. The renderer features implementations for KD-Trees, Texture Mapping (with Normal & Specular Maps), BRDF Shading, a full BRTF model (for refraction), Direct Lighting Contributions for faster Path Tracing convergence, Multiple-Importance Sampling.

It also features an experimental Bi-Directional Environment Mapping Sampler which samples the scenes global light map intelligently (in constant time) to create properly weighted light samples.

GPU Accelerated Path Tracing for Real-Time Applications (Dissertation)

For my 3rd Year Dissertation at Swansea during my BSc I did a project on using the graphics card to accelerate global illumination. For this project I started by implementing a Ray Tracer in Java. Then over the course of the year I implemented more advance features into the render such as Meshes, Iso Surfaces, Refraction, Texture Mapping, Depth of Field, Global Illumination via Photon Mapping, and finally full Global Illumination using Path Tracing. Next I implemented a rudimentary Interactive Ray Tracer and Path Tracer in OpenCL on the GPU using a Java host program. The interactive renderer was demoed at the departments 3rd Year conference at Gregynog. Finally, a Real-Time renderer was developed; again using OpenCL but this time with a high performance host application written in C.

More details on this project can be found here.

First Person Pac-Man with a hint of Aliens

This project had the goal of creating a Ray Cast game in the style of the original Wolfenstein 3D. I also wanted to write my own game engine with scriptable events and effects. The game is written in Java and contains a almost full clone of the original Pac-Man, with a few twists. For starters the game is rendered from the first-person perspective, that is from the view of Pac-Man. Secondly, Pac-Man is now a lone Space Marine trapped in the dilapidated ruins of the LV-426 Colony and surrounded by hungry Xenomorphs! Unless you can’t tell my favourite movie is Aliens.

The Xenomorphs replace the four Ghosts of the original Pac-Man game. However, despite their somewhat more gruesome makeovers I still wanted them to chase the player around the map in the same way that Pinky, Blinky, Inky, and Clyde did. In the original Pac-Man regardless of whether the player knows much about the game or not they are aided by having a birds eye view of the maze and a constant knowledge of where the enemies are. In first-person however, it becomes much more of a challenge to stay ahead of your enemies. All too often you will turn a corner only to have a Xeno right on you, you turn to fire but OH NO! You’re out of bullets! All followed by a scream as the Xenomorph pounces and it’s Game Over.

The game is very much still in development, the next thing to be added is a 3D sound system so you can hear where the Xenomorphs are compared to you. More details on this project can be found here.

Sine Mesh simulation using OpenCL & OpenGL

This was a demo project I created to show how OpenCL can be used on the GPU to modify and calculate values for OpenGL to render. Because the OpenCL kernel modifies buffers created by OpenGL without moving them in and out of memory we are able to perform a large amount of computation very quickly with little overhead. The program created models in real time the propagation of an exponential sine curve on a high resolution triangular mesh. The function is of the format height = exp(-r * A) * sin((r * B) - step) where r = sqrt((x*x) + (y*y)) (the distance the current point is from the centre of the grid)

Using OpenCL to update the vertices of the mesh concurrently we are able to calculate and render a 1000 * 1000 grid (1,000,000 points, 1.9 million triangles) at framerates exceeding 100 frames per second!

More details on this project can be found here.

XKCD Image Patcher

This project was to create a viewer for the XKCD Comic 1110. The comic features a “Click to Drag” based map which is 32 Giga-Pixels in size. Given that it would take 52 GB of Ram to render the whole image at once a special viewer is required. The program allows the image to be navigated and rendered at around 60 frames per second and allows for both mouse and keyboard input. The engine used to run the program is based off of the engine used in the Alien / Pac Man game.

See the project on Github!

Turing Machine Engine

A summer project to write a Turing Machine interpreter that could read in and run files which specified Turing Machines. More details on this project can be found here.

See the project on Github!

A Binary Adder which counts up indefinitely in Base 2

Celtic Manor Wayfinder

Wayfinder was a project done for the Celtic Manor Resort while I was working at Pinnacle Internet Marketing. The client had installed three 50 inch touchscreen monitors around it’s conference center and wanted us to design a navigation system that would allow conference attendees to ‘touch’ their destination on the screen and instantly receive directions. The system also features a QR code for each directions page that when scanned by smartphone or tablet directs the user to a mobile web version of the directions so they can keep their directions as they move.

20Twenty Business Benchmarking Tool

A project for 20Twenty Leadership Management Training though Pinnacle Internet Marketing. The benchmarking tool is a survey which assesses how well your business is perfroming in an array of areas. At the end of your survey the results are shown to you via a series of clearly labeled graphs and a colour coded table. This results page can be downloaded as either a direct PDF version of the page or as a CSV spreadsheet. The survey is AJAX based with no hard refreshes, it also features on the fly graph generation and HTML to PDF conversion.

Elegant Blog

This was a project to build a blog system from the ground up which can be installed on any PHP/MySQL server. The blog system is a single page design with a partial dedicated admin page. It features a continuous scrolling system that loads new content as the the users scrolls down the page. There is no edit page for the blog creator. Instead, when the admin is logged in clicking on any of the articles will cause it to swap out for an editable version; once done the admin saves or discards the changes and they are swapped back out for the rendered article instantly.

Celtic Manor Mobile Site

The mobile website for the Celtic Manor Resort and backend Content Management System for updating it. This was a project for Pinnacle Internet Marketing.


A Content Management System for building and updating Mobile Websites. Sites are built and tested locally on the Sites4Mobiles website and then ‘Published’ to the server your choosing via a FTP system. This was a project for Pinnacle Internet Marketing.