ImagesDescription
Flintlock Marmoset Render B

Interior view of the Piper PA-28 Cherokee.

Flintlock Marmoset Render B

Interior view of the Piper PA-28 Cherokee.

Flintlock Marmoset Render B

Interior view of the Piper PA-28 Cherokee.

Flintlock Marmoset Render B

Interior view of the Piper PA-18 Super Cub.

Flintlock Marmoset Render B

Interior view of the Piper PA-28 Cherokee.

Flintlock Marmoset Render B

Interior view of the Piper PA-28 Cherokee.

Flintlock Marmoset Render B

Interior view of the Piper PA-28 Cherokee.

Flintlock Marmoset Render B

Exterior view of the Piper PA-28 Cherokee.

Flintlock Marmoset Render B

Exterior view of the Piper PA-28 Cherokee.

Flintlock Marmoset Render B

Interior view of the Piper PA-28 Cherokee.

Flintlock Marmoset Render B

Interior view of the Piper PA-28 Cherokee.

Flintlock Marmoset Render B

Interior view of the Piper PA-28 Cherokee.

In 2014, Dovetail Games acquired the rights to develop and publish new titles using Microsoft’s flight simulation technology. Since then, Dovetail Games has been redeveloping the technology into its own proprietary engine by embedding many next-gen mechanics into the codebase. The first of the changes was to upgrade the engine to use DirectX 11 and run in 64-bit mode.

My contributions to this project were extensive and varied, spanning right across the art production spectrum. This page will focus purely on rendering, and omit many of my other contributions such as managing outsourcers and developing art production tools.

I was the sole technical artist, and spent much time collaborating with both in-house and third-party programmers, working to achieve the simulator’s final aesthetic. I focused extensively on implementing many advanced rendering mechanisms into our proprietary technology, including the following:

  • Atmospheric Light Scattering (Rayleigh & Mie scattering)
  • Screen-space Ambient Occlusion
  • Physically-based Rendering
  • Image-based Lighting
  • Normal-mapped Terrain
  • High Dynamic Range Lighting & Adaptive Luminance
  • Bloom
  • Omni Lighting

Atmospheric Light Scattering
This turned out to be a real beast to tame. To prepare for this project, I studied relevant ACM SIGGRAPH publications and theses on Light Scattering theory and implementation.

The formulae involved in approximating real-life Rayleigh and Mie Scattering are complex and very sensitive to a range of factors. Due to the complexity of the algorithm, most of the calculations are performed in vertex shader functions, which are then passed into a pixel shader for Gouraud Interpolation.

To avoid floating-point imprecision issues, Flight School has no concept of camera position in world-space. Instead of the camera moving, it is Planet Earth that moves. These nuances added to the challenge in getting the light scattering to operate correctly. I was responsible for solving these problems.

Physically-based Rendering & Image-based Lighting
Dovetail originally approached me because of my strong knowledge of Physically-Based Rendering (PBR) shaders.

I developed all the HLSL code used in Flight School while working closely with a rendering engineer. The engineer focused on getting the C++ codebase ready for PBR implementation and our efforts met somewhere in the middle.

The model used for PBR was the Cook-Torrance Bidirectional Reflectance Distribution Function (BRDF) with some modifications made here and there to integrate Image-Based Lighting.

High Dynamic Range Lighting & Adaptive Luminance
The original tonemapper function we received from an outsourced developer did not achieve the results we wanted. Everything appeared washed-out and lacked contrast.

I redeveloped the tonemapper based upon a modified version of the Hable Filmic algorithm.

I also modified the approach to Adaptive Luminance (AL) to improve its performance across a wider range of lighting scenarios. The AL system produces a camera exposure value by calculating an average luminance value in a compute shader. The original AL value derived from the mean average of all pixels on screen meshed with some human colour perception biasing. I developed a more context-sensitive approach, producing more consistent results across various lighting conditions.