Snowed In Studios
AAA Studio B – Tools/Graphics
Nov 2019 – Present
- Added support for cylindrical spotlights as well as gobo strategies for point and area lights.
- Implemented and maintained a volume placement system for use by lighting and audio teams
- Implemented a cloud rendering strategy through the use of distant 2D cloud domes illuminated by atmospheric scattering as well as believable absorption approximation to introduce silver lining effects.
- Additionally, implemented a cloud sprite rendering strategy using baked directional textures selected by light direction to approximate cloud light scattering.
- Implemented the foundations of a material animation system.
- Worked with artists to solidify requirements for cloud tech.
- Fixing bugs in various systems from tools to graphics to systems.
- Added support for Screen Space Indirect Specular Occlusion using the existing Screen Space Ambient Occlusion pipeline.
- Tech leadership. Making sure that the team is working effectively, that everyone is growing and that everyone feels heard. Continued work in pushing the team to excellence while also balancing overall comfort and satisfaction.
Airborne Kingdom Console Port – Unity Graphics Work
Mar 2021 – August 2021
- Provided support in assessing necessary changes to port from HDRP to URP
- Implemented first pass at image based lighting in URP. (Based on split-sum approximation)
- Implemented first pass at auto exposure in URP.
- Integrated SSAO into the indirect lighting solution.
- Saved 20ms from frame time through budgeting skinned animations, various logic overhead improvements, improved reflection probe selection performance and unifying shaders. Some interesting but less successful endeavours also included storing textures into a global texture array cache to minimize state transitions between different materials as well as managing rigid body animations through changes in game behaviour.
AAA Studio A – Pipeline/Engine Development
Nov 2017 – Nov 2019
- Re-implemented their AI scripting language interpreter
- Added state networking of the language interpreter
- Worked on reducing it’s snapshot size from 8 kilobits to 130 bits on the initial snapshot and 32 bits per delta. (Using delta compression, variable length encoding and quantization)
- Co-wrote a scripting language converter that converted their visual scripting language to C++
- Took on some leadership responsibilities to reduce the load of our team lead
Mowin’ & Throwin’ – UE4 Xbox Local Multiplayer Controller Support
Jumped onto this project to lend a helping hand when the main engineer needed a break. Added Xbox One Local Multiplayer Controller Support to make it pass certification.
Henry Danger Crime Warp
May 2017 – Nov 2017
Snowed In Studios was commissioned by Nickleodeon to develop the mobile title Henry Danger Crime Warp with Unity.
Worked on a broad range of systems from game design tools for our in-house designer, input systems and gameplay systems as well as various other systems.
Developped a C Iterative Path Tracer. Features include:
- Hand written SSE BVH traversal providing roughly 4x performance improvements over the scalar approach.
- Surface Area Heuristic Bounding Volume Hierarchy construction.
- Importance Sampled GGX+Smith Microfacet Specular BRDF.
- Lock Free Multi-threading for rendering to various screen tiles.
- Environment Map Importance Sampling.
- Multiple Importance Sampling to select between diffuse and specular BRDFs.
- N-rooks for sub-pixel sample generation.
- Custom bi-linear texture sampling.
- Custom OBJ+MAT file loader.
- Bump mapping for pixel level geometry detail.
- ACES tonemapping for converting from HDR to LDR.
- Custom per-thread stack allocator for efficient dynamic memory.
- 0.25 MRays/s on an Intel Core i7-4702HQ CPU @ 2.20GHz.
Simple single-header thread-safe profiling library that hooks into Google Chrome’s profiling tools.
Work In Progress sub cycle accurate 6502 emulator attempting to emulate 6502 circuit diagrams to challenge understanding of the hardware.
A retro GO game for the NES implemented in 6502 along with an instant mode GUI sprite editor implemented in Vulkan. Multiple sprites per scanline handled by rendering them to the background using a draw list.
A series of fragment shader demos in the webgl sandbox ShaderToy. Some work in progress and completed shaders can be found there.