About Professional Project

Curse of Mermos

2014

Curse of Mermos - Student Project

I acted as instructor and technical director/artist (particles, lighting, animiation, shaders, performance). Result of 4 months creating a fun and fast paced hack 'n slash title. As the instructor of the course I assissted in the production aspects of the project and practiced common industry methods for development making the classroom environment an indy studio simulation. Was released on Steam!

Rendering Behind Walls

One of the simplest solutins would be to add a second pass to shaders that one wants seen behind a wall. The issue with deferred though is that the z-pass is already established before final shading so there wasn't a way to cleanly render hidden objects without dozens of pixel-sized errors. Instead a 2nd camera running forward was used that matched the primary camera's perspective setup which ran a replacement shader. One the replacements would render select (via shader choice in material) geometry only into the depth buffer (ZWrite On, ColorMask 0). This would prime the second replacement shader used on characters to use a ZGreater check in order to render. The replacement camera only cleared depth and rendered after the deferred passes.

Tools for Unity

Probe-O-Matic

From the link: "Probe-O-Matic is an automated Light Probe placement tool to speed up your workflow when it comes to ambient lighting for dynamic objects. Probe-O-Matic offers fast and robust probe placement through a variety of options such as Seeds, Volumes or NavMesh. This tool emerged from our real production need to semi-automate and control how and where light probes are placed in large scenes. Out of the box, Unity currently does not provide an easy way to do this which inspired us to write Editor tools to assist in this task."

Attack System for Animated Characters

This system was written from the gound up to support fast setup and configuration of attacks for an action game. I wanted the attacks to have careful setup and deliver results similar to what you would see in a Dark Souls game. The attack can control when 'damage sphers' are activated to fine tune this to the animation frames, as well as agent freezing and parrying windows. I wrote an editor to allow scrubbing of the animation to fine tune elements of the attack.

'Eventor' - Event scheduling tool for Unity

Eventor is a custom made tool allowing designers to schedule numerous events such as spawnign an object, playing an animation by visualizing the sequence in a cut-scene style editor. The system works by running Jobs which derive from an abstract class. This allows very easy extentions where someone only need implement a co-routine of how they would like a custom job to operate.

Per-Vertex Radiosity Baking

Below are some screen captures of a per-vertex radiosity baking script I wrote as an Editor Script inside of Unity. By capturing images from the point of view of each vertex and summing the colours it gave a very natural result to the lighting. This was also an excercise to explore the flexibility of the Unity Editor.

2011-2013

Exploration of shaders in Unity

2012

Lighting

Excercise in lighting a small scene entirely by hand with no pre-baked or dynamic light solutions. All bounces, highlights and fill lights were brought out through the placement of many small point lights. Exaggerations on the rims of arches were achived through spotlights to help make the geometry outline stand out more

2005-2009

Reality Engine

Reality Engine was a middleware solution for quick prototyping. During my time at U235 Studios we licensed the engine but found many shortcomings in it's rendering and tools. After U235 I kept exploring the source code and made many tool, rendering and shading modifications (C++, C#, HLSL, .NET).

Ubisoft test 2009

Small forest scene as part of a test process for Ubisoft in 2009. The scene was very small & stuck to stringent material/texture/polycount budgets. In addition to the art (meshes, materials, fx, lighting) I also wrote all shaders required (such as scrolling 'god rays') and even implemeted lightmap support into the mesh serializer (Reality Engine) so that I could bake in a lot of the subtle ambient light.

Dynamic Shadow Mapping

The enigne initially had basic shadow mapping that wasn't very satisfying. I took it upon myself to explore and improve this. I implemented a 3 stage LOD for the shadows - resolution would drop and at farther distances the depth buffer wouldn't update. Shaders would use less sampling (8x, 4x, unfiltered) which for the time (2007-2009) really helped performance. Visually the shadows were improved by using them as masks for lights (more natural) instead of Reality Engine's approach of multiply blend into the scene. Alpha tested materials were respected in the shadow rendering stage and normalmaps and parallax maps would bias the sampling which greatly improved the final look.

Per-Instance Ambient Occlusion

A baking tool written for Reality Engine. The engine previously had no baking options so I implemented a standard AO baking routine for static scene meshes. Though, as this information was stored at the vertex level, this could be written to instances (folige, grass). As a work-a-round, I modified the engine batch renderer (c++) and the instancing shader to allow an instance to have a single float AO term passed along with other instnacing data. Therefore the bake tool could bake information for instances by assuming each instance as a point. Whilst not entirely accurate, it was very fast to bake, added little shader over-head (1 more float) and gave convincing results.

Photography

I'll often have a camera with me when out on holidays or adventures and enjoy the artistic and technical sides to digital photography. It is a hobby I have actively persued for a few years enjoy it thouroughly.

2007-2009

UDK (UE3)

Built for a client as a freelancer, I created all materials, textures, meshes and lighting inside UDK. It was interesting exploring the Indian/Persian arcitecture!

2004

Id Tech 4 (Doom 3)

A small level I created out of interest of the iD technology which tied in with my studies at the time. All the assets were available through Doom III, though this was one of the last BSP blocking engines I used.

2003

AMP2 Engine (in-house)

Edge of Valour was to be a multi-player hack 'n slash similar to Rune. I created all environments with it's BSP blocking tools as well as materials, textures and lighting.