High Dynamic Range Rendering
High Dynamic Range Rendering
The “Future is Bright” project is an ongoing project to upgrade the lighting system in Roblox. As part of this, Roblox is upgrading from our old Low Dynamic Range (LDR) rendering system to High Dynamic Range (HDR). To enable these upgrades, you can change the Technology property on Lighting as follows:
- “Voxel” enables the new HDR system which simulates wide ranges of brightness in a physically realistic way. Camera exposure can be adjusted similar to how your eyes adjust to bright or dark environments.
- “Legacy” enables an approximation of the old lighting engine for backwards compatibility.
Low vs High Dynamic Range
In the old LDR renderer, values stored for each pixel directly represent what percentage of the display’s maximum pixel brightness to emit. The value of a part’s pixel on screen is roughly equal to the RGB color of the part multiplied by the RGB intensity of the light it’s receiving (ignoring fog, post-process effects, etc.). For example, a part whose RGB color is [0.5, 0.5, 0.5] receiving a light with intensity [1, 1, 1] will show up on screen approximately as [0.5, 0.5, 0.5].
LDR is not capable of storing wide ranges of brightness typical in real-life scenarios. For example, outdoor areas in direct sunlight can be over 100 times brighter than indoor areas. HDR rendering solves this by storing intermediate values for each pixel that represent physical brightness quantities, then it converts these values to a 0 to 1 range with a tonemap so they can be displayed on screen.
Higher Brightness Values
The old LDR renderer did not support light values greater than 1. Around the light with the Brightness value of 25, there’s a visible circle where higher brightness values are being limited to 1.
In the new HDR renderer, arbitrarily bright values are supported:
HDR allows you to simulate camera exposure. In real life, cameras and human eyes can adjust how much light contributes to the resulting image. In HDR, we simulate an exposure for the camera which can be controlled with the ExposureCompensation property on Lighting.
Converting to HDR
Due to the tonemap compressing colors, objects that appeared in the “Legacy” system with LDR values of 1 may appear with LDR values of ~0.8 in the HDR system. Consequently, some areas may appear darker. There are several options for tuning the overall brightness of your place:
- Modify Lighting → Brightness to change the brightness of direct sunlight. We’ve found that most old content looks good with this value set to 2.
- Modify Lighting → Ambient to change the base brightness everywhere in your place.
- Modify Lighting → OutdoorAmbient to change the brightness from the sky.
- Modify Lighting → ExposureCompensation to change the brightness of the final results you see on screen.
Bloom is an effect that creates highlights in bright areas on screen. In the HDR system, bloom is enabled by default, with a threshold of 2. The default bloom properties are overridden by those on a
BloomEffect if one is present in Lighting or Camera. Setting the Intensity to 0 disables bloom entirely.
BloomEffectinstances from the old lighting system and find bloom is too prevalent on the sky or on bright objects, try increasing the Threshold to 2 or higher.
The behavior of the Neon material in the new system is different from legacy. Previously, Neon always had a blurry overlay that could not be configured or disabled. In the new system, Neon is no longer special in this way — it is simply an emissive material, just like beams and particle emitters, that glows based on bloom settings. Therefore, the size and intensity of the glow around Neon can be modified through
BloomEffect settings and through the brightness of the part color. Also, black Neon no longer glows.
Overly Bright Lights
If you see a bright area, you may have too many lights in that area or too high of Brightness values. With HDR, brightness is no longer capped at 1 as it was in the old LDR renderer, so multiple lights and lights with high brightness can add up to be brighter than desired.
Since a higher brightness contrast can be achieved in the new system between indoor and outdoor areas, light leaking may become more apparent.
Light leaking is a consequence of the 4×4×4 resolution of the voxel grid. If you have a thin wall that intersects a voxel that is mostly exposed to sunlight, some of the sunlight may be visible from behind the wall in an indoor environment. To fix this, try increasing the wall’s thickness.