Compatibility Lighting becomes Retro Tone Mapping [Sunset + Migration]


[Update] September 26, 2024

Hi Creators,

Today, we are announcing that Compatibility Lighting will be sunset over the course of the next 2 months and migrated to our new Tone Mapping Preset so you can continue achieving a similar visual look for your experience. :sunrise_over_mountains:

This sunset will enable us to make improvements to our lighting system, such as better lighting scalability, which were constrained by the maintenance of Compatibility Lighting, while letting you achieve a similar look.

  • If you are using Compatibility Lighting in your experiences, we encourage you to migrate your place to Voxel Lighting as early as possible. Voxel is the same code path as Compatibility Lighting and offers the same performance, but it treats light brightness differently.

    We provide information on how to migrate and preserve your visuals below.

  • If you are not using Compatibility Lighting, you have nothing to do :slightly_smiling_face:.

:sunrise: ColorGradingEffect and ToneMapperPreset

First, today we are releasing ColorGradingEffect, which is a new instance you can add to your post processing effects under “Lighting”. It currently provides only one simple property called ToneMapperPreset which has 2 options:

  • Default is the current Tone Mapping we use with Future, ShadowMap or Voxel Lighting.

  • Retro is the Tone Mapping we use for Compatibility Lighting and provides a retro Roblox style many of you like.

All values of ToneMapperPreset can be used with any lighting technology. For example, the “Retro” preset could be used with “Future” Lighting. Read more about the new tone mapping presets in our Creator Documentation.

:warning:Removal of Compatibility Lighting

Second, we will be sunsetting Compatibility Lighting over the course of the next 2 months, in 3 phases:

Phase 1 (Migration Opt-in): Starting now

  • Places using Compatibility be can migrated to Voxel Lighting + Retro Tone Mapping at your convenience, whenever it is the best time for you (we recommend migrating as early as possible).

    Please note: Compatibility Lighting will not be available anymore for places already using other lighting technologies (i.e. Future, ShadowMap or Voxel).

Phase 2 (Migration Opt-out): Week of Sept. 16

  • All places using Compatibility Lighting will be automatically migrated to Voxel Lighting + Retro Tone Mapping when opening Studio. You will be able to revert this migration and opt-out from it.

Phase 3 (Full sunset): Week of Oct. 21

  • Compatibility Lighting will be entirely removed from the Lighting. Technology dropdown and all places using Compatibility will use Voxel Lighting + Retro Tone Mapping instead. It will not be possible to revert this migration.

How to migrate from Compatibility to Voxel Lighting

During this transition period, we provide you with a migration tool to more easily convert experiences using Compatibility Lighting to Voxel Lighting.

To use this migration tool:

  1. Click on the Lighting > Technology property.

  2. Then click on the … button appearing next to it.

  3. The migration dialog will open. Click on “Migrate”.

  4. As an optional step, you can apply our local lights migration script provided below, under the “optional local lights migration script” section, to adapt your local lights.

:triangular_flag_on_post: This migration will not give you a perfect brightness match for your local lights. In Compatibility, local lights with a brightness > 1.0 are using a brightness of 1.0, but display a larger light radius. This is not achievable in Voxel Lighting. This means those specific lights will look brighter in Voxel to get the same radius, or will have a smaller radius for the same brightness. You might need to adjust your local lights’ brightness to retrieve your original look.

Please migrate as early as possible to have time to adjust your local lights before Compatibility’s full Sunset.


An outdoor scene and a local light with brightness = 5.0.
Compatibility (Left) and Voxel with Retro Tone Mapping (Right)

Optional: Local Lights Migration Script

This script sets all your lights that have a brightness > 1.0 to a brightness of exactly 1.0. This will give you the same brightness your lights had in Compatibility Lighting, but it will not give you the same light radius. It can help accelerate your migration work, but you will need to manually increase the brightness of the local lights you’d like to set at a larger radius.

To execute this script, open View > Command Bar and copy paste the code below. Press Enter. You can roll back this script with CTRL + Z ( ⌘ + Z on Mac).

local ChangeHistoryService = game:GetService("ChangeHistoryService")
local recording = ChangeHistoryService:TryBeginRecording("Clamp Local Lights to 1.0")

for _, part in pairs(workspace:GetDescendants()) do
    if part:IsA("Light") and part.Brightness > 1 then
        part.Brightness = 1
    end
end

ChangeHistoryService:FinishRecording(recording, Enum.FinishRecordingOperation.Commit)

:orange_heart: Made with care by the Engine team

As always, please let us know if you experience any challenges with the Compatibility Lighting migration or with using the new ColorGradingEffect.

Thank you.


FAQ

Click here to view the FAQ!

Why are you sunsetting Compatibility Lighting?

  • Compatibility Lighting was released when we updated our Lighting system many years ago with the intent of being sunset. Its purpose was to imitate Roblox’s old lighting system’s visual look. It is the exact same technology as Voxel Lighting, but it applies a different tone mapping curve and a brightness clamp on lights.

    We have several lighting improvement projects in the making, but with Compatibility not being a real Lighting Technology, we are facing complexities in keeping it around. However, we want to allow you to continue achieving a similar look which is why we decided to find a proper home for Compatibility, as a Tone Mapping feature.

Will moving to Voxel Lighting impact my experience’s performance?

  • Not one bit. Compatibility Lighting uses the exact same code as Voxel Lighting. Compatibility had additional code to change the Tone Mapping curve and it clamped the lights’ brightness to 1.0.

Will you provide more Tone Mapper Presets in the future?

  • Releasing our new ColorGradingEffect instance is the first step for that. We are not working on releasing more Tone Mapping Presets at this time, but we would like to extend those functionalities in the future. We don’t have concrete plans to announce at this time.

Why are the local lights’ brightness not adjusted with the migration tool?

  • In Compatibility Lighting, all lights with a brightness > 1.0 display a brightness of exactly 1.0, but can show a larger light radius. This is not achievable in Voxel so we can’t provide a perfect conversion for local lights.

    Some developers might find that the migration script provided above accelerates their migration, but that would not be true for all experiences. Additionally, our migration tool is built so that you can revert the migration during the opt-out phase (phase 2). Since an experience can have a very high amount of lights, we are not able to save the original state of all local lights to provide a way to revert it.

What should I do if I use Compatibility and I was scripting lights’ brightness?

  • :bulb:For local lights, If you are increasing brightness values above 1.0, we recommend that you verify the visual results obtained and choose if you’d like to lower the brightness values to avoid over-exposure.

  • :sunny:For the sunlight, there exists a direct value conversion between Compatibility and Voxel. If desired, you can use the following function to obtain the direct brightness conversion for the Sunlight:

local adjustBrightnessCompatibilityToVoxel = function(brightness: number)

	brightness = math.clamp(brightness, 0.0, 5.0)
	if brightness >= 0.5 then
		brightness = 3.135266 + (0.5605744 - 3.135266) / ((1 + (brightness / 92.74922) ^ 3.400255) ^ 3365850.0)
	else
		brightness *= 1.44611366946
	end
	return brightness
end

[Update] August 27, 2024

188 Likes

This topic was automatically opened after 10 minutes.

well that sucks, but understandable

also will the technology property of lighting ever be scriptable in the future?

75 Likes

Happy to see that Roblox is providing tooling to accurately reflect these removals, rather than fully removing them without the ability to replicate that same style. I did notice that the light brightness script doesn’t use ChangeHistoryService, so undoing will have weird side-effects. (Edit: this is now fixed! I’ll leave the code here.)

game:GetService("ChangeHistoryService"):SetWaypoint("Brightness Change Start")

for _, part in pairs(workspace:GetDescendants()) do
    if part:IsA("Light") and part.Brightness > 1 then
        part.Brightness = 1
    end
end

game:GetService("ChangeHistoryService"):SetWaypoint("Brightness Change Complete")
44 Likes

Thanks to the Engine team for the clear guidance on this transition! While it’s bittersweet to see Compatibility Lighting go, the new Retro Tone Mapping offers a great way to maintain that classic Roblox look. I’d suggest everyone migrate early to avoid last-minute issues and take advantage of the new lighting capabilities. Let’s embrace this change and see how it can enhance our creations! :rocket:

21 Likes

Well this should be better. I hope that tone mapping will be used for more interesting things in the future!

12 Likes

I was just talking with my friend about what the ColorGradingEffect could be a bit ago. Hopefully this gets expanded with more advanced lighting options in the future, like with color LUTs.

17 Likes

I PREDICTED THIS. NOOOOOOOoooooo

28 Likes

Nice to see color grading be added but i’m incredibly sad you can’t do more with it.

It’s also sad to see compatibility go but atleast you did the best to maintain the compatibility feel with the tonemapper preset.

Hopefully one day we can use the color grading effect like other game engines.

11 Likes

Great! I hope more technologies that are barely used anymore will be sunset which allows more focus on developing new features and improving upon already existing features which need improvement

7 Likes

It’s unfortunate that compatibility is getting removed, but I will say that this change was handled very well compared to some others in recent memory. I’m not really into gamedev but I can see tone mapping really helping creators with making the lighting in their games pop out. Also glad that you didn’t out right remove compatibility but rather made it into a tone map, which is pretty convenient for anyone wanting to make a classic styled game

14 Likes

Its being used in thousands of games right now

15 Likes

Welp, the day that i always had in the back of my head has arrived.

I still use compatibility for most of my work and i am thankful for there being a way to get a similar look, thanks for at least not out right removing it and instantly forcing Voxel onto games that already use compatibility out of nowhere.

While im not happy with the removal of Compatibility i can sort of see why its being removed (not a lot of games using it, it basically emulating Legacy, which hasnt existed for 5 years (RIP).

The gradient does a good job at replicating the Compatibility feel, but it does have a few issues such as the lights and shadows being a bit different, i wonder if there will be a way for old, abandoned games to not get their lighting kind of screwed by very bright lights (which seems to be the number 1 issue for me at least)

TLDR: While im not happy in the slightest about Compatibility lighting getting removed, i like the color gradient being added instead of a full on removal.

(also will there ever be a way to replicate the Legacy lighting neon look? I’d like that to be honest.)

Please feel free to correct me if i am wrong in anything that i said.

17 Likes

Hope roblox will eventually add the ability to make custom shaders & custom lighting.

23 Likes

Thanks for updating the lighting engine and providing us with the new post processing effects! Is it also possible that we could get Gobo Lighting feature in near future? Gobo (lighting) - Wikipedia

8 Likes

I think we’re getting closer to the launch of volumetric lighting (PLEASE)

13 Likes

Will stuff finally render behind transparent glass at some point?

26 Likes

My lights have a brightness is 5 in Compatibility. When I migrate, these lights give off a severe glow to all of the parts they’re being shined on. I can’t decrease the brightness, because then the effectiveness of the light is decreased.
What can I do about this?

12 Likes

As much as I love Compatibility I understand why this change was needed and I appreciate it that you guys created the new legacy version so classic style games can continue to exist accurately. Thanks for keeping us updated as always, looking forward to seeing some of the known issues with Compatibility’s replacement posted by others fixed.

3 Likes

Really? I havent seen any good games that use compatibility in a while

2 Likes