TL;DR: Phase 1 of Future Is Bright project is now live in Studio! We’re still tuning a few bits & pieces - note that this update is not yet available when you play the game outside of Studio. Make sure to submit feedback if any.
As many of you know, we’ve been working on Future Is Bright project for a while. We’re starting to ship the first phase of the project to production which is extremely exciting. A large team worked on this - thanks to @NeoBuilder101, @Qiblox, @ConvexRumbler, @Homeomorph and one other engineer who isn’t on devforum for all the hard work! I’m just the messenger here
The way this is going to happen is that we’re shipping the project in three phases:
New voxel engine - we’ve done a series of significant updates to both the voxel lighting engine and the lighting-related parts of the rendering pipeline. We can now represent lighting values above 1, enabling HDR rendering, handle parts that are thinner than 1 voxel much better and have done a lot of internal work to prepare our rendering pipeline for the future. This includes a reworked post-effect chain including Neon.
Sun shadows - high resolution detailed shadows from the sun that unify voxel shadows and custom humanoid shadows in a single efficient and high fidelity system, with developer control over shadow softness
Local lights & shadows - high resolution detailed shadows from other light sources and significantly higher quality lights that aren’t confined to coarse voxel grid and support specular response from local light sources on materials. This update will also include an option to use automatic exposure.
The prototype builds that some of you have been playing with represent all 3 phases combined, but we’re shipping these in smaller pieces to reduce the risk and gather feedback as we go. Today we’ve enabled Studio-only preview of phase 1.
The idea behind these phases is that on lowest graphics quality we can’t use most of the technology from phases 2 & 3, so we needed a new voxel engine as our new lowest common denominator. When all 3 phases ship, we will still use the voxel engine on low quality, and use the other engine on high quality, with some blend in the middle - on some quality levels we might use voxel engine for more distant parts of the scene.
Since we’re redoing large parts of the rendering pipeline, existing content won’t look exactly the same as it used to. This is due to some changes in lighting equations we use internally, the fact that the new pipeline is using HDR and a tone-mapper which alters the contrast of the scene, and mostly unclamped lighting values in internal computations which leads to overly-bright light sources behaving differently from dim light sources (unlike before where the difference between Brightness 10 and Brightness 2 was insignificant).
Because of this, we give developers control over the lighting engine they use. This is controlled by Lighting.Technology property, with two enum values available now:
- Lighting.Legacy - this is the old lighting engine, or a close approximation thereof. We’re trying to maintain the behavior of the old engine largely using the new pipeline, so there might be slight differences in some cases.
- Lighting.Voxel - this is the new voxel lighting engine, that will be supported on every single platform on every single device on every single quality level.
With the introduction of phases 2 and 3, we’ll add more values to this enum - for example, if you want your game to look the same everywhere and want to highly tune your content for the specific look that voxel engine gives you, you can use Voxel technology; if you want the game to look better on high end desktop/mobile hardware, you’d be able to choose a different enum value associated with Phase 2 or 3.
We’re still doing some polish on the rendering behavior for Voxel mode - both Neon and the color balance with default settings will change before the final release - and some optimization for mobile hardware, but we want to give everyone a chance to look at the new mode as early as possible so we’ve enabled support for Voxel technology in Studio as of today. We’re hoping to get the final or close-to-final look for phase 1 in Studio next week, so that you’ll be able to start tweaking your content and expect it to look the same in the global release.
Here’s a couple of screenshots, shamelessly stolen from @Maximum_ADHD:
And a couple more that I made on Village template with slightly tweaked settings and the new tonemapper that should ship next week:
Remember that if you publish your game right now, the changes won’t be visible for your players since the change is Studio-only for now. The full release is around a month away (mobile…); be sure to let us know if you notice anything amiss so that we can fix it before final release.
Some games will require tuning after switching the mode from Legacy to Voxel - the engine is different, and, while we’re correcting a lot of ingrained errors in how light simulation worked before, and believe that the result is superior, some levels are tuned to the specific behavior of the old engine and won’t look very good.
We encourage switching to Voxel mode after it ships and tuning the content to look great - while we intend to maintain the Legacy mode for a while, supporting it is proving to be somewhat complicated and it has a small performance cost on Voxel mode as well, so at some point we might have to make some changes that will change the way Legacy games look in subtle ways.
So - go download the Studio update, open your levels, switch Lighting to Voxel to try this out, let us know if you find any bugs, and get excited for when this phase and subsequent phases release to production!
Just for reference, a full list of known bugs - they will be fixed and this list will be updated accordingly:
- Default tonemap alters the hue/saturation a bit too much. Fixed in 358
- Neon is very different from what we intend to ship. Fixed in 358
- GUI objects with AlwaysOnTop=true and LightInfluence!=0 are too dark. Fixed in 358.
- Surface and spot lights with Range=0 don’t work correctly. Fixed in 359.
- Surface lights don’t always work properly in Voxel mode. Fixed in 359.
- Beams aren’t affected by Fog. Fixed in 359.
- Glass doesn’t look good in some lighting conditions. - not a bug
- Technology property doesn’t replicate which makes Play Solo revert to Legacy. Fixed in 359.
- Inserting a Bloom effect into a level with Technology=Voxel changes the visuals because the defaults for the Threshold are wrong. Fixed in 359.
- Neon desaturates colors unless they are extremely highly saturated in the first place. Fixed in 360. Now you have more colors that don’t desaturate but colors with low saturation will still desaturate into white. You might need to adjust neon colors.
- Fog behavior changes substantially in Voxel mode. Will be fixed in 361.