Hey! If you're looking to hire and you think I fit your needs, I would love to hear more! Shoot me an email with any questions or enquiries and I'll get back to you as soon as I can.


Projects


Snapshot Shaders Pro was my first attempt at creating a premium shader pack. From the outset of the project, I knew I would have to develop new skills such as marketing and project management to ensure the product was successful.


This asset pack was originally designed for just the built-in pipeline, and over time, it grew to support all of Unity's major render pipelines. It became increasingly challenging to design updates to the pack, given the need to support each pipeline across multiple major Unity versions.


  • The built-in pipeline uses the Post Processing Stack v2. This API was the easiest of the three to work with.
  • HDRP provides its own solution for custom post process effects. Although HDRP is generally geared towards high-end development and tends to be more difficult to use, the custom post-process API is well-designed and easy to use.
  • URP does not provide an official post processing solution. I have opted to use Renderer Features for the pack's effects, with a learning curve far steeper than the other two APIs.

Supporting URP was easily the biggest challenge during development. The Renderer Features API and related APIs constantly change between major Unity releases: the move from RenderTargetHandle to RTHandle, the move from command buffer Blit to the new Blitter API, and the upcoming move to the Render Graph API in Unity 6 being three such examples. Each change demanded a swift reaction from me to understand the new requirements, learn new APIs, and implement changes in response to feedback from users who needed the assets to function properly in the newest versions of Unity.


Recently, for the latest update, I have implemented an installer window to assist users with unpacking the correct assets for the render pipeline they are using, levaraging Unity's extensive Editor scripting tools to build the installer. Snapshot Shaders Pro has expanded from the original 13 to 34 different visual effects. It is still actively developed and I plan to support Unity 6 LTS whenever it arrives.


I was approached by Happy Broccoli Games to write a couple of HLSL-based shaders for their Unity game, Kraken Academy.


The color grading shader uses look-up textures (LUTs) to transform from one set of colors to another, allowing the artists to create only one set of sprites and convert those sprites to any lighting condition by using LUTs, saving time.


Kraken Academy color grading effect.

The outline shader is used within the gameplay to highlight objects the player interacts with. It works by detecting pixels partly-transparent pixels which are themselves adjacent to opaque pixels.


Kraken Academy outline effect.

The project scope for these shaders was defined very early on, and delivering the product went smoothly. The color grading shader needed a couple of tweaks, and I was able to easily communicate with the rest of the development team to identify and fix problems in a timely manner.


Personally, I was most surprised to find out the main character was to be voiced by Brian David Gilbert. I'm a fan.


I'd always wanted to eventually write a book about shaders at some point in my career, and the opportunity arrived far earlier than I expected when Apress reached out to gauge my interest.


I was the sole author of the book and I was assisted in writing a team of editors and a technical reviewer. I wrote an initial propsal outlining each chapter, and was given the green light to start writing the full book shortly thereafter.


This project was the most challenging to complete in this portfolio. I chose to cover all of Unity's render pipelines in both HLSL and Shader Graph, which expanded the scope of the project beyond a comfortable size. The book ballooned to around 75% longer than originally anticipated. I learned the importance of restricting the project scope to only the essentials prior to starting any future projects.


Writing this book was a crucial step in developing my communication skills in multiple respects. First and foremost, I learned how to more effectively condense complicated topics into manageable chunks by actively thinking of a hypothetical reader who would the book to learn shaders from scratch. I imagined each section as a conversation with that reader. Secondly, I was in constant communication with my technical reviewer, Simon Jackson, to ensure the text flowed well and correct any mistakes.


Since release, I occasionally hear from people via reviews, YouTube comments, and other social media that they have found the book invaluable while learning shaders for the first time.


Using what I learned during the development of other shader packs, I developed PSX Shaders Pro with a tightly defined scope in mind. This asset pack was a direct response to the proliferation of "retro revival" games on sites like itch.io, as I wanted to expand the options available to developers in this space.


This pack relies on HLSL shaders for terrain, meshes, and skyboxes. In that respect, it is distinct from Snapshot Shaders Pro (post-processing shaders) and Hologram Shaders Pro (based on Shader Graph). I researched the limitations of the PS1 so that I could accurately model behavior such as affine texture mapping, color posterization, and low-precision vertex "snapping" with each of the shaders in the pack. Throughout development, I learned a lot about how terrain shaders work in particular, and I was able to put together a fully-featured demo scene showcasing all of the assets.


A demo scene showing off PSX-style shader effects.

The development cycle from first prototype to delivery was a little over a month (working concurrently alongside other projects), and I was able to fulfil all of the goals I formulated at the start of the project.



For Hologram Shaders Pro, I wanted to create a set of shader effects which could be attached to meshes, and I wanted users to be able to easily tweak the effects to meet their requirements, so I opted to use Shader Graph.


Shader Graph makes it relatively painless to support multiple render pipelines, so I was able to cut down in iteration time compared to HLSL-based projects such as Snapshot Shaders Pro. I created different versions of the base hologram shader, with one "uber" shader and several trimmed-down versions with fewer features (glitches, scanlines etc.). Users can also disable features using shader keywords.


A mesh with a hologram effect applied, currently mid-glitch.

One challenge I faced was the need to keep the number of shader keywords to a minimum, as each new keyword can result in an exponential explosion in the number of shader variants that need to be compiled. This constraint needs to be balanced with the need to provide enough agency to those who may want to change the shader's behavior at runtime.


Hologram Shaders Pro is currently rated five stars on the Unity Asset Store and it is almost always my best-selling asset each month since release.


CUE Cards is a collectible card game with many visual effects during battles. Avid Games reached out to me to create several effects, primarily using Unity's particle system and HLSL shaders.


I worked on effects one-at-a-time. The dev team would send me a brief for the effect they wanted, and I would be given relative freedom to work on the effect however I wanted. With each effect, I would receive feedback from the team and I would make changes based on that feedback. The effects became more complex over time.


A glowing card effect from CUE Cards.

As my first freelance job, I felt under a lot of pressure to deliver - thankfully, the dev team were happy with the results I turned in.


For Global Game Jam 2022, I wanted to create a "vertical slice" encompassing as many of my skills as possible. The result was Spooky Slice, a platforming combat game in which the player must defeat endlessly-spawning ghosts.


  • The player cannot jump. Instead, whenever they hit a ghost, the floor, or a wall, the player is given knockback - they must skilfully attack the floor and combo off ghosts in order to reach the higher areas.
  • Ghosts dissolve upon death. This effect was created in Shader Graph,
  • The scene uses a stylized post processing outline effect as the main visual aesthetic. By choosing this aesthetic, I was able to eliminate the amount of time it would otherwise have taken to texture many of the scene's details.
  • I created several effects using Unity's VFX Graph for this gane, including the ghost spawning animation, a damage indicator, the sword's slice effect, ambient fireflies around the scene, and a sword beam effect.
  • I used publicly-available model assets for the ghosts and the scenery, and was able to successfully integrate them into the gameplay without the assets appearing mismatched or "cobbled together".

A demo of the gameplay and VFX in Spooky Slice.

I was able to execute my original vision within the 48 hour time limit of the jam, and without sacrificing key features. Overall, the skill I developed the most throughout the jam was VFX Graph, a tool I had used sparingly prior to making this game.


Outlier Games contacted me to create a handful of shaders for their cooperative roguelite game, This Means Warp. The development cycle for my work consisted of Outlier sending me a list of requirements for the effect they wanted, and I was given plenty of freedom within those boundaries.


A freeze effect from TMW.

The effects included an energy shield effect which reacts to projectiles and highlights parts of the scene which intersect with the shield, a freeze effect which slowly covers players that float into space, a cloud effect, and a warp gate surface effect which glows as the ship passes through.


A shield effect from TMW.

I was able to successfully complete the tasks I was given and the team were able to integrate them into the gameplay.


About Me

I am a game developer with a specific interest in shaders and visual effects!

I have used Unity since 2013, starting off with many small hobbyist projects before deciding to share my deep knowledge about shaders and graphics through my website in 2019 and YouTube channel in 2020. Throughout that time, I have worked on a handful of freelance projects, and have developed a range of asset packs for sale on different storefronts. All of my game development skills are self-taught and I am constantly expanding my skillset by embarking on challenging new projects.

I graduated from the University of Warwick with a first-class master's degree in Computer Science in 2018 and began a PhD in Engineering later that year, which I am currently in the process of writing up. Throughout my time at university, I have been heavily involved in societies, co-founding the university's thriving Nintendo Society in late 2014 and being an exec member of Warwick Game Design Society for most of my time here, rising up to the position of President between 2018-2022.

Although my time at university has taught me many skills, I have always been a big believer in the power of self-teaching - prior to university, I taught myself Java programming in 2012 and I have never stopped learning in my own time. My contributions to the online Unity tutorial space were recognized by Unity themselves in Feb 2022, when I was invited to join the Unity Insider Program, which provides prominent voices in the creator community access to pre-release material and connections to Unity developers.

I am a highly driven individual and I can't wait to hear from you if you think I would be a good fit for your team!