Color Space, Lighting and HDR Rendering

Sneak Peek

Greetings everybody! 👋

With today’s blog-post we want to give you an insight about our render engine, in particular about color spaces, how much they affect the look of a game and our recent work on it that will be release in future updates.

We could say that BeamNG.drive always had a clean and spartan look. This is in part an artistic choice to favor visual clarity, but also a necessity due the engine’s old-school techniques.

Let’s start talking about color spaces.

Our eyes don’t react to light in a linear way, and with the necessity to compress video signals, we use a color space that provides greater accuracy to ranges which our eyes are more sensible to. This color space is called gamma color space, and that’s what our game uses.

Because light behaves in a linear way, we cannot use gamma space to achieve physically correct results. For that reason we need to work in the so-called linear space, where the contribution of different light sources returns their correct intensity, opposed to gamma space where this is not true.

In the below scheme you can appreciate the differences between gamma and linear space, as the problems in doing math in the first:

One of the main challenges of moving to the more physically correct linear color space is retaining the look of the existing assets, as well as mods. In this period we have tested various solutions in order to achieve that, with very promising results.

After these improvements, the next natural step is to enable proper HDR rendering: whereas in LDR (Low Dynamic Range) the engine works with values in a range of 0-1, in HDR (High Dynamic Range) the internal range is much higher, allowing for much more realistic lighting. Very bright things can actually be bright, and very dark things dark.

**Please note that the following images contain work-in-progress content**

In the former two comparisons, you can see Hirochi Raceway and West Coast USA. We managed to keep most of their original look while also allowing the lighting fixes to reveal more details in asset textures:

And here’s old Utah and its upcoming refresh, which is taking advantage of ad-hoc settings for this change:

Last but not least, a direct comparison of the vehicles, which now have a more vibrant look:

Some bonus ‘in-motion’ clips! 😁

Bloom Post-processing can now properly work on bright pixels

Lights projecting on parallel surfaces also behave better now

In conclusion, despite working within certain self-imposed restrictions we are still able to push the envelope of what our rendering engine is capable of doing. We are very happy with the quality improvements this work has resulted in and we hope you are too. Look forward to seeing it in action on your PC with a future update of BeamNG.drive!

Sneak Peek

BeamNG Major Updates

The 2021 Summer Release – BeamNG.drive v0.23
BeamNG.drive v0.23 release highlights
The 2021 Spring Release – BeamNG.drive v0.22
BeamNG.drive v0.22 release notes
The 2020 Winter Release – BeamNG v0.21
BeamNG.drive v0.21 release notes
The 2020 Summer Release – BeamNG v0.20
BeamNG.drive v0.20 release notes
“La Vie à Toute Vitesse” – BeamNG.drive v0.19
BeamNG.drive v0.19 release notes
The 2019 Winter Release – BeamNG.drive v0.18
BeamNG.drive v0.18 release notes
Buckle up, heavy traffic ahead: Update 0.17 released
BeamNG.drive v0.17 release notes
Electrifying 0.16
BeamNG.drive v0.16 release notes
A Small Car on a Big Map – Version 0.15 released
BeamNG.drive v0.15 release notes
Light Runner – Version 0.14 Released
BeamNG.drive v0.14 release notes
The Automation Collaboration – Version 0.13 Released
BeamNG.drive v0.13 release notes
Get Busy – version 0.12 released
BeamNG.drive v0.12 release notes
Alpha version 0.11 – The Coast is Clear
BeamNG.drive v0.11 release notes
Sounds like version 0.10 is out!
BeamNG.drive v0.10 release notes
Hopping into 0.9
BeamNG.drive v0.9 release notes
Version 0.8 rolling in …
BeamNG.drive v0.8 release notes
Alpha version 0.7 released :)
BeamNG.drive v0.7 release notes
Version 0.6 released
BeamNG.drive v0.6 release notes
Version 0.5 released
BeamNG.drive v0.5 release notes
Version 0.4.0.0 – 0.4.0.2 changelog
BeamNG.drive v0.4 release notes