Better Indoor Reflections - Live for Future Lighting

Hi developers,

How have you been enjoying the beta for Indoor Dynamic Environment Maps? We’re excited to share that we just released an update which enables the lighting beta for places with Lighting.Technology set to Future mode and comes with a few improvements based off of your feedback!

We hope these adjustments brighten your day :sun_with_face:

How Does It Work?

When rendering a scene, the engine calculates whether an object is indoor or outdoor based on a light grid. When the cell at the object’s position is occluded from the sky, it will be considered as being indoor.

Outdoor objects use the skybox to generate information on how reflections should look. And, before this update, we used to have very little information about the indoor environment, so indoor reflections looked… well, a little boring.

In this update, we added a true environment probe that can automatically capture and update the environment map, taking into consideration camera movement, and then use it to apply a realistic reflection on smooth objects. Each environment map takes a few frames to generate and if the engine finishes generating a new map, the old map will slowly fade out and be replaced with the new one.

The purpose of this update is to improve the appearance of indoor metals. Just note that while the reflections are more realistic, they are not intended to be used as a real-time mirror. At this time, humanoids are explicitly excluded from the reflection (because they usually keep moving and don’t belong to the environment).

Additionally, the reflection will be blurred on surfaces that have some roughness (see for example the metal and foil materials).



How to Enable

:high_brightness: Set Lighting.EnvironmentSpecularScale to 1 to have full power

:no_entry_sign: Set Lighting.EnvironmentSpecularScale to 0 to turn it off

If you are already in ‘Future’ mode, this feature is already live on all platforms. If not, you will need to enable it via Studio beta before it can be previewed.

Important Notes

  • Frame generation does not happen real-time - it takes several frames to generate an environment map. This might cause some side effects, especially when you walk from a bright room to a dark room.

  • You may be wondering, “Why isn’t there Screen Space Reflection (SSR)?” SSR can only run smoothly on high end devices. We’d like to have a solution that can run on most devices. This update is supported by all graphics APIs except GLES2.0.

    We’ll add other technologies for higher quality in the future.

Known Issues

  • Sky visibility is not accurate if you use MeshParts or CSGs as the wall or roof of a room, doing this can cause light leaks. In this case you’ll see sky reflection instead of the indoor reflection. We have plans to improve the way this functions.

  • The environment map is captured at an empty space in the room, not from the position of each object reflection we render. So it’s expected to see the object reflecting itself.

  • For performance reasons, objects in the environment map are rendered with low quality. That means some objects in the reflection will not match the resolution of the scene.


This topic was automatically opened after 6 minutes.

Do you mind sharing some more information about what’s planned? I’d love to hear about future possibilities to make lighting more immersive.

I’m also wondering about the “crossfade” when you move and a new map is generated - could some sort of “morph” effect be used to ease the transition? I found a fade looked quite jarring in scenes with a lot of reflections.


Drums please,
Ladies and gentlemen this is the moment you all have been waiting for…!
Hyped to try the new reflections! These for sure will get the visuals to the next level, if it’s well optimized too, this is going to be one of the features every developer will greatly appriciate every time they set their lightning engine to future.


Whoa! Two new lighting features were announced at the same time. My jaw practically dropped when I saw the before and after. It’s amazing to see the object actually reflect its surrounding.


Yes! I’ve been using this in 2 of my showcases! It’s finally live for good.

It’s much better and near perfect now! If EnvMaps could change faster that would be even better, but that’s not a top priority now. I’d much rather you optimize an existing Lighting Technology that went live in November 2020.

Thank you!


The future of lighting is here yay :grin:. So excited this will definitely make the the future of Roblox experiences so much better an so much greater! As a lighting fan myself on Roblox, it’s exciting to see that there are improvements to lighting which is needed for awhile can’t wait to try it!


Highly disappointing that there is no separate option to disable this functionality and it is tied to using EnvironmentSpecularScale. This could cause a lot of damage in terms of colour distribution for games which have relied on the previous functionality for the last 1 1/2 years since Phase 2.5 FiB initially released.


How are we supposed to set this to both 1 and 0 at the same time?


creative mode, its in studio settings, it applies full value control :slight_smile:


Is there / will there be any kind of option for devs to toggle between low and high quality?


Do you think I can get an image of where to enable that? I’ve looked around studio settings and haven’t found it.


How can I turn this feature off? I do not like the way it looks since I have no control over it.


Hell Yeah Rtx technology Best Reflection


Set Lighting.EnvironmentSpecularScale to 0 to turn it off


It’s explained in the post, set Lighting.EnvironmentalSpecularScale to 0.


Is there a way to toggle this off separately? I really want to use EnvironmentSpecularScale for my normal maps, but I’m already using a custom skybox of my own and don’t want the indoor env maps to overlap my current skybox.

Also, can we please have an API that lets us choose between Automatic and Manual indoor reflection placement, and lets us manually relocate it by position?


This does not disable the reflections. This disables PBR rendering and specular highlight.

What @builderwaci said.


Why not let players choose what’s best for their device instead of forcing this on everyone? If someone’s device can’t run SSR smoothly then they don’t have to enable it, this will allow both low-end device users to enjoy reflections and the high-end device users to enjoy even better and more accurate reflections while maintaining smooth gameplay.

There are many games, and literally, every single one of them has advanced graphics settings allowing players to choose what’s best for them, however, Roblox prefers to force less appealing graphics on everyone regardless if they have some powerful gaming pc or just an average laptop. I don’t understand this, but I can only hope for Roblox to change.

Roblox Advanced Graphics Settings UI Design Concept

There could be a “?” icon with a tooltip instead for the description, but as I mentioned earlier, this is just a concept.


How come there is no setting to disable this properly? Changing EnvironmentSpecularScale is not an acceptable method for my games.

Updates like this that heavily affect the aesthetic of games need to take feedback in consideration, specially when it’s something that can completely reshape the feeling of a game.

I was hoping this would be a feature by release, but seems like it isn’t. Please, seriously consider adding this and please do implement it, it’s of extreme importance right now. My games just don’t look the same with this, and not in a good way.