Portfolio Home

Well, if you've come here you should already know that my name is Steven Leigh, and I'm a programmer.

I finished my double degree in IT and Mathematics on the 21st of June. My GPA was:

My main passion in programming is 3D Graphics and/or real time simulation. In recent months, I've been spending all day working at Sauce Software as the lead web developer, and then coming home and spending 6hrs programming and learning about graphics before eventually dragging myself to bed.

I've worked as a web developer at Sauce for 18 months, 6 of those as the lead developer. Working at Sauce has allowed me to gain significant skills in managing projects and making decisions which affect the running of over 100 client companies. I've also defined some project processes that are now being used for new projects.

Most of my professional experience has been based in the web industry, though in 2005-2006, I worked for a year as an application developer for Dialog, where I helped support, maintain and developer a HR Application called "AXiOM". This was a part of QUT's "Cooperative Education" program, and lasted 12 months.

While these professional jobs were very helpful and interesting, my main passion has been the programming I do at home in my spare time. These are available for perusal by clicking the links at the top of the page.

 

Contact

 

Fluid Simulation

Select Video:
You must have flash installed...

In Semester 1, 2008 I completed a Real-Time 3D Fluid simulation, which solves the Navier-Stokes equations in real time. The project was implemented in C++, OpenGL and Cg. It simulates the fluid or gas entirely on the GPU, which is fast enough to be used inside a game.

On the right are a few videos showcasing the end results of this simulation. It could be inserted as a node in a scene graph quite easily, with minimal recoding required.

The smoke is rendered using a simple raycasting technique. It will only perform the raycast on visible portions of the fluid volume, and the fluid blends in appropriately with its surroundings.

Small steps have been made in making in react to light properly, though this is currently limited to a directional light.

These videos are also available at http://au.youtube.com/xwipeoutx85.

Download Demo

If the videos on the right do not capture your attention enough, click here.

Controls

Space: switch between camera mode and inject mode
Q: Quit
G: Perturb to a circular vortex
G: Inject Gridded Ink
[ and ]: Change X Size
; and ': Change Y Size
. and /: Change Z Size
(inject mode)
  Click+Drag: inject smoke (colour depends on button pressed)
(camera mode)
  WASD + Mouse: Move around
				

 
Select Video:
You must have flash installed...

DirectX Volleyball

Note: This is still in development

This started off as my first dabbling in DirectX programming. I started with a few tutorials to learn the basics, then went on to develop a simple and easy to manage game engine from that.

However, as things always seem to when dabbling, it grew and grew. As I went, I refined and refactored clunky pieces of code and decided to make a goal of creating a 3 dimensional version of Arcade Volleyball

The prime purpose of the game was to provide a showcase of skills that I have developed, and also my capacity for learning - most of the techniques employed here have been gleaned from reading journal papers, and going through tutorials - reworking them to work properly within the game engine.

Techniques

A variety of common techniques were used for DirectX Volleyball

Yet to be implemented

Several effects are planned to be implemented still

Download Demo

If the videos on the right do not capture your attention enough, latest snapshots can be found here.

Controls

WASD+mouse - move the skeleton around
Space - jump
Q - encourage the ball to go up
1 - turn shadow mapping on or off (this will probably double your performance)
LMB + WASD/space/c/mouse - move light around (monkey head is the light)
MMB + WASD/space/c/mouse - move camera around
RMB - throw a ball
B - release a crazy stream of balls
ESC - quit
				

 

Old School OpenGL Scene

Well, when I did this back in 2005, I never thought I'd be putting it in a portfolio, but here it is. This was all done as part of the graphics subjects offered at QUT.

The spheres shown obey simple AI wander and chase behaviours, and the shading for the bump mapping was produced using Cg

The graveyard scene shown was implemented using a scene graph. The hanging skeleton is in D-H notation, and swings from side to side as time goes on.

Beyond that, the demos are relatively straight-forward. Since a picture is worth so many words, I'll let them do the rest of the talking for me.