Tim Dörries

Tim Dörries

Rendering Programmer at Epic Games

Epic Games

Biography

Hi, my name is Tim. I am passionate about real-time graphics programming, and like to learn about and implement new real-time rendering techniques that further push the performance and realism of virtual scenes. My real-time rendering journey started with OpenGL 3.3 and OpenGL 4.5, but since then I have come to enjoy working closer to the hardware with modern APIs such as Vulkan and DirectX 12. In my previous role as Software Engineer at skilltree GmbH I was responsible for designing, implementing and maintaining a DirectX 12 renderer for an application for creating digital twins of cities based on map data. Currently I am employed at Epic Games as a Rendering Programmer.

Interests
  • C++
  • Modern Graphics APIs (D3D12, Vulkan)
  • Advanced Real-Time Rendering Techniques
Education
  • MSc in Computer Science, 2020

    Trier University of Applied Sciences

  • BSc in Computer Science - Digital Media and Games with a major in Games, 2018

    Trier University of Applied Sciences

Work Experience

 
 
 
 
 
Rendering Programmer
May 2022 – Present Frankfurt, Germany
 
 
 
 
 
Software Engineer
Oct 2020 – Apr 2022 Trier, Germany

Responsible for writing and maintaining a D3D12 renderer and collaborating with artists and other engineers to work out desired features and their requirements.

Achievements:

  • Wrote a DirectX 12 renderer in C++ for an application for generating 3D models of cities.
  • The renderer is designed around SM6.0 and bindless descriptors, simplifying code and improving performance.
  • It leverages GPU-driven rendering for batching and culling, enabling the application to render geometry-heavy scenes in real-time.
  • Features include:
    • Dynamic time of day based on latitude, longitude, time and date.
    • Atmospheric scattering (realistic, real-time atmosphere rendering) and night sky rendering
    • Volumetric clouds
    • Tiled/clustered lighting
    • IES light profiles
    • Histogram auto exposure
    • Physically based rendering
    • Screen Space Global Illumination
    • Screen Space Ambient Occlusion
    • Depth of Field
    • Temporal Antialiasing

Projects

VEngine 2 (Vulkan/D3D12 Hobby Render Engine)
This is my current hobby render engine that I like to work on in my free time. (C++/D3D12/VK)
VEngine (Vulkan/D3D12 Hobby Render Engine)
This was another hobby render engine that I also used to implement my masters thesis. (C++ and Vulkan/D3D12)
CUDA Pathtracer
A simple pathtracer written in C++ and CUDA.
Experiments with ‘Scalable Real-Time Global Illumination’
An experimental implementation (C++/Vulkan) of a real-time GI technique based on the ‘Scalable Real-Time Global Illumination for Large Scenes’ talk by Anton Yudintsev.
Terrain Editor
A simple terrain editor for creating height maps written in TypeScript and WebGL 2.0.
Separable Subsurface Scattering
Implementation of the Separable Subsurface Scattering technique from http://www.iryoku.com/separable-sss/ in C++ and Vulkan 1.0
OpenGL Hobby Render Engine
This was my first hobby render engine that I also used to implement my bachelors thesis. (C++ and OpenGL 4.5)
Mesh Painter
A proof of concept tool for painting textures in 3D. Uses Qt for the GUI and OpenGL for rendering the viewport.
‘More than Fifty-Two’ (C++)
A C++ rework of the multiplayer card game sandbox which was originially developed with Java.
Implicit Surface Fluid Rendering
Demonstration of a technique for rendering fluids similar to those found in the video game ‘Portal 2’.
PlayStation Vita Rubik’s Cube
A small game that let’s the player solve a Rubik’s Cube on the PlayStation Vita.
‘More than Fifty-Two’ (Java)
A multiplayer card game sandbox written in Java and using a custom OpenGL renderer.