Epic Games (2019-2026)
Shader Tools Programmer
In 2019, I relocated close to the Triangle Research Park in NC and worked at Epic Games for 7 years. I initially transitioned UE4 and later UE5 from their old shader cross-compiler Hlslcc to Microsoft's DirectXShaderCompiler (DXC). This involved mostly the Vulkan, OpenGL, Metal, and NVIDIA Maxwell-based architecture backends which are all SPIR-V based now (Metal has a second path based on DXIL). I'm particularly proud of the contributions I was able to make to public repositories in the name of Epic's UnrealEngine, specifically DXC, SPIRV-Tools, and SPIRV-Cross. To name a few, I implemented a new optimization pass in SPIRV-Tools (PR#5778) to compact constant buffers which allowed us to reduction friction and close the gap in the compiler pipeline to be efficient for mobile devices where memory is limited; I made several dozen contributions to SPIRV-Cross (see commit history) to improve the output for Metal and HLSL (We cross-compiled HLSL2021 to SPIR-V and back to HLSL2019 in order to support modern HLSL features in D3D11); I also submitted several bug fixes to DXC (see commit history).
I made major contributions to the new IR-based material translator that will replace the old and rigid HLSLMaterialTranslator in the upcoming UE 5.8 and onward. I implemented many of the material expressions in the new translator and engineered the system for external expressions that are data-driven to speedup the development of the new translator.
I integrated the shader compilation pipeline into Epic's in-house solution for distributed processing (UBA). I worked closely with the team that implemented the core system, extended the UE plugin UbaController for shader compilation and also integrated it with the build graph system via encrypted communication using OpenSSL. This helped speedup the shader compilation in UE drastically, where build processes for Fortnite can churn through hundret of thousands of compile jobs.
My most recent work was to integrate the packaging process (UnrealPak) and runtime shader library into the on-demand system to reduce the size of the Fortnite client. This brought me much closer to performance critical runtime development in one of the largest video games in the world. I ran numerous tests on Epic's build farm to also improve shader deduplication and evaluate the more tightly packed data in the client application.
I also had the opportunity to work with the tools for virtually all major platforms, especially when I helped improve the optimization passes in the Maxwell-based shader backend for Fortnite. I particularly enjoyed the collaboration with folks from NVIDIA that helped us with their backend compiler.
Skills
Programming Languages
Core systems, libraries, and engine development in native code: C, C++, and Objective-C
Visual effects and cross-compilation in shading languages: HLSL, GLSL, Metal, SPIR-V, DXIL
Tooling, scripting, and data analysis: C#, Python, Java, Go
Highlights
I write optimized C++ code in highly multi-threaded environments on a daily basis
I have written Python scripts for Blender exporters, format converters, data analysis, and content generation numerous times
I initiated a new plugin for UE5 to analyze the numerous shader compilation pipelines in an interactive manner
APIs & Frameworks
RHI and shader development: Direct3D 11 & 12, Vulkan, Metal, and OpenGL
Toolchain integration and improvements: DirectXShaderCompiler, SPIRV-Tools, SPIRV-Cross
Build graphs and distributed systems: Epic's in-house solutions Horde/XML and UBA, XGE
Worked with source control systems daily: Perforce (P4) and Git
Platforms
Desktop development with native APIs: Windows, Linux, and Mac
Mobile development with native APIs: Android and iOS
Tools development and pipeline optimizations for virtually all major gaming consoles (left out explicitly due to NDAs)
MA Lighting (2012-2018)
Graphics Engineer
In 2012, I worked for MA Lighting Technology GmbH as freelancer and later as employee for 18 months half-time while I was finishing my Master of Science in Computer Science at TU Darmstadt. I developed their in-house 3D engine with OpenGL to visualize stage shows on their 3rd generation lighting consoles (see MA's product page for grandMA 3) with a deferred and amortized renderer to handle many more light sources than the graphics hardware can handle in a 60 Hz frame time. I contributed to the development of the General Device Type Format (GDTF) for data exchange between device manufacturers. I also researched ways to extend the legacy 3D format *.3ds for compatibility while providing modern features such as hardware tessellation in the scene description.
During my time as freelancer, I wrote several dozen visual effects in HLSL for their 2nd generation lighting console and a Hap video encoder with DirectShow.
Aramark (2016-2017)
Freelancer
For a short time I worked as a freelancer and developed an end-user application in C# to manage payment orders for Aramark GmbH & Co. KG. I later transitioned their tool to XML based payment information transactions.
Fraunhofer IGD (2010-2017)
Student Research Assistant
During my studies at TU Darmstadt, I worked as a research assistant at the Fraunhofer Institute for Computer Graphics Research (IGD) where I gathered experience in rendering and web technology and made my first contribution to a SIGGRAPH poster (see Academics page for details). I worked with their OpenGL-based clustered renderer and later integrated a Direct3D 11 backend to be used with Microsoft's HoloLens. I also briefly experimented with NIVIDA OptiX, WebRTC for remote rendering, and WebGL on iOS.