TL;DR: Phase 1 of Future Is Bright project is now live! We’re excited to see what you will create with phase 1 and are looking forward to future phases that will further elevate the look & feel of Roblox.
We’re excited to announce that Future Is Bright Phase 1, aka Technology.Voxel, is enabled on all platforms for all developers to use. Huge thanks to the entire team that worked hard on making sure we squash all bugs that needed to be squashed and spent a lot of time making sure rendering performance, including low-end phones, does not regress compared to the old mode. In no particular order, thanks to @NeoBuilder101, @Qiblox, @ConvexRumbler, @Homeomorph and @zeuxcg for making this happen.
What’s new?
We took our existing voxel lighting system, cranked it up a notch and converted our entire pipeline to use gamma-correct HDR lighting and rendering with a tonemapper that tries to maintain balance between keeping the content look reasonable but handling overly bright regions nicer.
On the voxel front, our lighting grid now uses anisotropic occupancy (which is short for "in each voxel we track more data to know more about the geometry occlusion properties”), which allows us to handle thin parts much nicer, stores skylight (“how much of the sky is visible from this voxel”) separately so we can use it for improved water shading and, soon, glass. Also changing OutdoorAmbient should be instant now since it doesn’t require us to update the voxel grid. Finally, we now compute lighting math in linear space (which is roughly how it should work in real life) and can store a very high range of lighting values in the grid, which means that light impact is no longer limited to 1.
On the lighting front, we had to integrate linear space lighting into the entire pipeline, which required changing all shaders accordingly - now in some cases just sun lighting looks more accurate. The entire pipeline is now using HDR as well, with a custom tonemapper that we plan to expose controls for in the future.
Finally, the postfx chain had to be redone - most effects like sun rays required some tuning but neon was pretty fundamentally incompatible with HDR and some internal implementation details. We have reimplemented neon/bloom pipeline using techniques inspired by games such as recent Call Of Duty and INSIDE; this results in a nicer bloom and unifies neon/bloom - neon parts are very bright but so are some other parts if you have a very bright light source next to them. Unfortunately this means that the stylized “black part bloom” that some devs used doesn’t exist anymore - it wasn’t physically realistic so we could not keep it.
How do I use it?
As you might already know, you can use Lighting.Technology property to use the new lighting engine. It defaults to Technology.Legacy where there’s no visual impact on your existing games - we tried to make sure we don’t just make this change unexpectedly - and switching it to Technology.Voxel uses the new voxel engine and the new HDR rendering pipeline. You also get a new property, Lighting.ExposureCompenstaion, to tweak HDR behavior and all light intensity values can now go far beyond 1 and still have a visible impact.
We expect that while games generally mostly work when switched to Voxel with minor tweaks (e.g. increasing the Lighting.Brightness value from 1 to 2, or changing Bloom.Threshold - if present in the scene - to some value between 1.5 and 2.5), to take full advantage of the system and make your levels look much nicer you should experiment with high intensity values for lights, higher Lighting.Brightness, etc. to give your levels more contrast and lighting detail. We have published an article on devhub that talks about the difference in the systems and has some content guidelines, check it out: High Dynamic Range Rendering. We will also be updating templates in the coming week or two to use the new system well.
There’s one bug that we couldn’t ship a fix for in time for today which deals with water look in Voxel mode when Lighting.Brightness is large (e.g. 5-10). A fix for this will ship in two days on Wednesday; note that the water look for Voxel technology will change a bit as a result. All other visuals are final, and we don’t have other known bugs (obviously if you find something that looks like a bug feel free to report it).
What’s next?
We’re already working hard on phase 2 (crisp and performant sun shadows from all objects on higher quality levels and higher-end mobile devices) and phase 3 (crisp lighting and shadows from local light sources such as point & spot lights). We expect these to ship throughout next year; we will likely do Studio betas again, and we will have separate Technology options for future updates as well.
The idea of Technology.Voxel is that you can tune the game once and it looks close on all platforms on all quality levels. We expect this value to stay around for the foreseeable future - future phases will fall back to Voxel on low quality and low end devices to preserve performance, but will enhance the look on higher quality levels.
We are also going to be shipping a couple of last-minute bug fixes/improvements - the water fix mentioned above and improved computation for bloom that improve the look of halo around neon/bloom parts.
Part of phase 3 will be the optional auto-exposure system. Right now you can already use ExposureCompensation and tween it from scripts so that when the character leaves a house, you rebalance the exposure of the entire scene, but we plan to make this much easier for devs who want this by implementing an exposure metering system.
One other change that is going to happen next year is the transition from Technology.Legacy to Technology.Compatibility. The way Technology.Legacy works right now is that it uses the new rendering pipeline, except for the post-processing stack; it has to tweak all shaders in the game to make sure that they generate the same output despite the technology differences, which makes them up to 10% slower. We had to do this so that we aren’t changing games without notice, but we plan to implement Compatibility option that will use the new rendering paths without requiring us to spend precious rendering time on maintaining compatibility, but will tweak some inputs as well as some internals that are cheap to tweak such as light clamping behavior. After we ship Compatibility option, we’ll have a grace period after which all places that still use Legacy will automatically switch to Compatibility - hopefully with relatively minimal impact on how they look. We will have separate updates on this before the transition happens with more details available at the time, but we encourage switching to Voxel pipeline as that isn’t going to change.