I'm a senior technical artist with a career spanning more than a decade. I started off with characters, then moved into shaders and pipeline development for the thrill.
Optimisation comes naturally after years of working close to VR headsets and their performance budgets. I thrive on building custom solutions to new problems.
My day job is the bridge between art and programming, making the artists' work shippable, and making the engineers' tools bearable to use. I write some high-level Python, some low-level assembly (NASM), and some specialised MaxScript.
Outside of all that I keep a small open-source habit, enjoy long motorcycle rides on the winding roads, and read more than I write.
• Found a bug in zallist – simple lit shadergraph implementation for unity, and implemented a fix with other team members, where opaque shaders turned transparent in mixed reality passthrough mode.
• Built a tool to manage files that auto upgraded when switching between unity engine versions control did not have any problems, using C++ (Win32 api) for minimal memory usage.
• Built a tool so that shader variants could be calculated in Unity without having to run different scenarios in game, with the simplicity of clicking a few buttons. Shader variants are used to force include shaders during build, if stripping is turned on, and is essential if global keywords are turned off during build but are needed during runtime.
• Fixed a bug in Meta SDK for mixed reality system where distant objects either wouldn’t render or wouldn’t occlude, as well as fixed the problem with glass being tracked as opaque object in environment depth. This was done with the minimal cost of adding a 16bit channel into the existing _depthMaskRT buffer to act as an occlusion flag that activates on glass surfaces.
• Applied custom shaders to enable both occlusion and lighting on an invisible lit shader that writes to Z depth, enabling occlusion and relighting for MRUK in mixed reality environment.
• Implemented a UV based shapekeys for blender that could be used to convert character creator characters to the custom character pipeline used by the company.
• Found a solution to implement shader based culling of smoke to contain it in a room, with three independent approaches:
SDF based voxels to define room boundary,
Getting colliders from spherical ray-cast to define structures using inverse quaternion mathematics to find local space and alignment in the world. (Production solution)
Getting room boundary using a custom camera that would only render depth to a texture that could then be compared to screen space. The camera spawned could use layers to filter out only the walls and roof, so as not to be occluded by objects in the room.
• Deploying character lookdev pipeline and real-time performance, and bridging system requirements for games made for VR/AR as well as PC (RTX 4070).
• Optimizing shaders and creating FX in Unity using HLSL and C#
• Optimizing drawcalls on shadergraph and shader files.
Built texture assets on trim sheets, as well as modelling clothes, and dynamic props for the environment.
Led comprehensive character pipeline redevelopment, improving modular character system and studio-wide custom rigging workflow
Optimized Unreal Engine performance through development of consolidated master shaders, reducing instruction count and texture lookup operations to be compatible with VR requirements, while also improving visual fidelity of characters to match AAA video game quality
Supervised international team at Bangkok studio responsible for characters
Completed a three-month special assignment from V-Armed to train Bangkok studio character artists in using the master shader and rigging system I had developed in-house, facilitating knowledge transfer and pipeline adoption between studios
Worked on character lookdev pipeline as well as creating clothing assets and hair grooming using Xgen
Developed custom tools to adapt proprietary third-party character rigs, as wel as tools to convert the rigs to be used in game engines, optimizing the character creation pipeline
Created proprietary Python tool for MetaHuman rig transfer in Maya, predating Epic Games' DNA file editing capabilities
Engineered custom tools for seamless transfer of speech synthesis animations between Maya and Unreal Engine
Created realistic characters within the realms of technical limitations compatible with VR, for the video game simulation - Artheon VR Museum
Created creature and characters for a mobile video game
Responsible for rigging and animating blob like characters to look like soft body simulation while staying within the technical limitations of using only a certain number of joints
Was also responsible for maintaining existing in-house 3ds Max exporter tool to work with the in-house game engine updates, using maxscript
Responsible for creating miniature models of trucks and vehicles, as wel as rendering them using Keyshot