Unannounced Game Project
Graphics Engineer (Apr. 2019 - Present)
I am working on an unannounced project at Monolith, with a focus on lighting and shadows.
Open Source Contributor (June 2019 - Present)
I am an active contributor to RenderDoc on GitHub. I implemented vertex, pixel, and compute shader debugging for D3D12 up to shader model 5.1, including support for bindless resources and the new binding syntax introduced in shader model 5.1.
The Grand Tour Game (PlayStation 4, Xbox One)
Amazon Game Studios
Senior Graphics Engineer (Sept. 2017 - Mar. 2019)
I led the graphics team for The Grand Tour Game, handling architecture and implementation for many features and coordinating with production to stage work appropriately and communicate status.
I designed and programmed the architecture enabling The Grand Tour Game to support up to 4 player split screen. I separated the work into stages so that after initial groundwork was complete, additional graphics engineers could focus on enabling specific features. In support of split screen, I architected and implemented a new occlusion culling system, supporting all cameras in under 1ms on target hardware, using a combination of artist-placed proxy geometry and auto-generated geometry supporting level of detail. I rewrote our tiled deferred shading algorithm to gracefully support multiple views without divergent code paths or shader permutations. Near the end of production, I led performance optimization efforts with a focus on split screen, and offering guidance and analysis to gameplay and content teams.
I worked with lighting artists to understand their needs for time of day and lighting, and made numerous improvements to their workflow to accelerate their work. To simplify vista creation, I provided a shader for depth fade clouds which enables better blending around vista geometry with fewer cards. I improved our decal system to support segmented decals that can float or perform volume projections. This feature was created for environment artists to more easily blend between the road and dirt or grass, but it was also used for skid marks for cars braking or driving over dirt or snow.
For some features, I provided a design and coordinated with remote developers for implementation. Our material override system uses a suite of materials and constrained tweaking for each use to enable a consistent look across assets. We improved our terrain system to support a simpler workflow for level of detail texturing, while still supporting hand-tuned textures if needed.
Amazon Game Studios
Graphics Engineer II (Mar. 2017 - Sept. 2017)
I implemented a fur shader for Lumberyard, which was demoed at SIGGRAPH 2017. It supports tiled deferred rendering, permitting many lights to contribute to the look of fur. Minimal setup is required, with only an additional fur heightmap texture and, optionally, vertex color data to specify per-vertex combing and fur length. It supports artist-tunable stiffness and wind bending, anisotropic specular highlights, subsurface scattering, self-shadowing, and fur detail in shadow passes. I provided custom shaders for both Maya and 3dsMax to allow artists to previz the fur heightmap textures before exporting to the engine.
Unannounced Game Project (PC)
Amazon Game Studios
Tools Engineer II (Aug. 2015 - Mar. 2017)
I worked on an unannounced PC title at Amazon game Studios, focusing on tools development. I collaborated with environment artists to identify pain points in their workflows. I created a terrain copy/paste tool that allowed them to replicate heightmap data, vegetation placement, terrain blend layers, and objects to other regions of a level, or to a different level entirely. I also split file saving for terrain into multiple files per region, rather than a single file for the entire terrain. This enabled artists to collaborate on separate areas or types of content simultaneously, and reduced turnaround time for environment art by days.
I authored a feature that enabled particle systems to follow along a spline that was specified at either edit time or runtime. This allowed visual effects artists to have finer control over their effects and was useful for gameplay purposes as well.
I managed a new engine integration for the project, which I organized into dependency layers to streamline the work across multiple developers. I wrote a set of Python scripts to ease code merging, as our integration did not have a common baseline that Perforce merge tools could identify. This integration finished ahead of schedule and with fewer bugs than similar integrations performed by other teams, and my approach was later reused by other teams with similar success.
Elly Cooper and the City of Antiquity (PC)
Developer (Nov. 2014 - Aug. 2015)
Elly Cooper is a hidden object game developed with Unity. I wrote editor extensions to expedite importing and positioning of art assets in scenes, and designed an extensible animation framework that responds to user input with tweens, sprite animations and audio cues.
Near the end of development, I identified several ways to reduce build size which resulted in 60% reduction. I devised a method to display videos with alpha from a WMV, allowing us to better compress cutscenes and eliminate the need for players to install custom video codecs.
Unannounced Puzzle Platformer (PC)
Lead Developer (Oct. 2013 - Aug. 2015)
I was leading gameplay design and development for a 2.5D puzzle platformer using Unity3D. I created shaders to enable realistic lighting for 2D sprites, and implemented a staged depth of field postprocessing effect, allowing our art team to remove certain items from its effect. I wrote an input recording/playback system allowing us to rewatch playtest sessions in-engine to easily reproduce issues.
I maintained regular communication with our artists to create our desired visual aesthetic and identify any level design or art workflow issues as early as possible.
Minecart Madness (Windows Phone)
Lead Developer (Mar. 2011 - Jan. 2013)
Minecart Madness is a 2D infinite runner for Windows Phone developed with XNA. We wrote a custom physics engine to support vehicles on curved surfaces, and a procedural level generator using data loaded from XML for potential level segments. We implemented real-time quality detection, and improved low framerates by reducing resolution and disabling certain effects.
Awarded 2013 "Most Downloaded Paid App or Game" from Microsoft Employee Developer Program.
It has been downloaded over 2 million times on Windows Phone.
Microsoft Office (PC, Android)
Software Engineer 2 (June 2010 - July 2015)
As an engineer on the Office Graphics team, I was responsible for maintaining and improving the low level rendering code for Powerpoint, as well as most visual elements of Word, Excel, and other Office apps. I migrated older components to use newer DirectX technologies, and worked on the OpenGL and software rasterizing components for Office on Android.
I was the resident expert for image rendering, printing, Direct3D, and HLSL shader programming. Performance and memory usage is always a priority in the code that I write, and in my tenure I measurably improved image rendering throughput in Office by 300% while also reducing memory usage.