Portfolio

Here you can find some of my past work, in order of most recent.

  • Unity custom Scriptable Render Pipeline (Legendary Renderer working title)
Reflection probes with blending of up to 16 probes

The latest feature added, reflection probes with blending between them! :)

Cubemap point light cookies

Spot and point light cookies

Light on tessellated floor

Point light shadows.
Point and spot shadows with blending between dynamic and lightmap shadows
Baked lighting mixing shadows with dynamic cascaded shadowmaps

While real-time lighting can provide a lot of niceties, it's always good to support baked direct and indirect lighting, this can be seen above, where I have real-time cascaded shadowmapping for the sun shadows, but also precomputed baked indirect lighting for everywhere that there is no direct lighting from the sun.

I also support whole-scene raymarched volumetric lighting...

The volumetric lighting samples all of the active lights in a big loop, a good optimisation I want to make for this is to render lights into a volume texture, or simply raymarch not against the furthest depth in the scene, but within the light's actual bounding volume, which would be a cone for spot lights and a sphere for point lights, by clearing a depth buffer and rendering a flipped normal depth pass of a light volume before rendering the volumetrics for a given light, I can then sample this depth texture when rendering the light and limit its raymarching range between the surface of the light volume mesh, and the reversed normal depth pass texture, this will allow for far greater quality raymarching with far less sampling steps needed, a double win in my book.

The shadow technique makes use of a special calculation to avoid a common issue where on curved surfaces, the shadows show aliasing and ugly artifacts due to the lambert diffuse model failing to occlude them. I mitigate this by multiplying my shadows in the shader with a dot product of both the light and pixel normals, and the light and vertex normals, this can mitigate the problem in 99% of cases. Details below;

The above picture shows the common issue found when rendering curved surfaces with shadowcasting lights, you can see the clear staircase stepping from the shadowmap projection.

My technique, this fully mitigates the issue and only slightly changes the light's contribution.

I will publish the code for this in a blog post which I will link [here] when it's done.

  • Battle For Bricktropolis was the original idea, a game set in a city and its outskirts, based on LEGO. I changed my mind, this editor is now part of my LEGO-themed dungeon crawler.
  • Source Engine style water rendering, using custom shaders and some rendering magic.

  • Graffiti VR game, I didn't continue this because I lost focus and had no-one to make environment art for it.

  • My space game, another abandoned project, but I did some interesting stuff with this, including interactive 3D ui which could be applied to any shape of mesh and automatically just work.

  • Interstellar Shootout, a small game I worked on while trying to get more familiar with gameplay programming and some UI stuff I learned here made its way into future stuff.

  • INFRA, a popular, successful indie game of which I am in the in-game credits for my contribution. I worked on the water flow animation, by creating unique flow-map textures for a few levels.

  • Finally, my first ever attempt at making custom shaders inside of the Source Engine, my oldest work but probably one of my favourite videos due to how ancient the technique was that I used.

That's all I have to show for now, however you can find my full library of miscellaneous random-project-development videos on my YouTube channel, just click on my channel from one of the above videos.

Thanks for checking out my work.