Future Is Bright: Phase 1 - Studio beta

I agree with the over saturation point you made there. Without a doubt, I’ll be using Voxel lighting all of my showcases, especially dark themed.



Here’s a bug I discovered while testing my game with the new Voxel lighting while using a flashlight. Shadows seem to invert themselves at night time.

Nighttime with flashlight turned on, near a shadow.

Inverted shadow near block where it would be darker during daytime:
Another area where there would be a shadow during daytime:


It was alluding to mobile causing the feature to not be live in games for a month. Roblox doesn’t usually force the mobile app to upgrade as soon as a new version is released (for convenience?), so it sounds like they’re going to wait a month before forcing an upgrade on everyone who hasn’t updated to at least this version.


SurfaceGUIs and decals seems to be very bloomy and there are interesting artifacts on the sides of them :thinking: This is probably due to multiple light sources being too close to eachother? There are also many cases of lights going through parts and in sometimes they create strange stripes and very bright areas.


The light issues are probably surface lights. Can you leave a link to the game so that we can check out UI issues?


I forgot to mention that the HDR system has exposure controls - similarly to a camera, you can adjust the exposure of the scene by using Lighting.ExposureCompensation.

In the future (phase 3 probably?) we plan to introduce an optional automatic exposure metering system - once again similar to what your camera might do - but you can script this value today to, say, have bright areas outside and dark areas inside the caves/tunnels and lerp ExposureCompensation as you get out of the tunnel or back in.

For example, here’s the racing template with higher sun brightness (in general we’d expect brightness to be above 1 for sun):

If you go into the tunnel you get this:

To be able to see details in the tunnel, you can make ExposureCompensation positive (in the future auto-exposure will be able to do this automatically):

This makes the tunnel more visible, but blows out the outside. If you get out of the tunnel, you should change the ExposureCompensation back to 0:


I understand bloom and neon are being fixed however im concerned about how I use surface lights. I generally use them to light a room evenly by putting them in the ceiling however this is how it looks in the new system:

Is this being fixed with the bloom and neon fixes or will I still see behavior like this with surface lights and white parts? (the ceiling is actually quite tall in this picture)

Edit: More odd behavior on the second floor. There is no surface light pointing up, its under the floor pointing down at the lower floor.

Another edit: This lighting does not work well in Dance Your Blox Off.


Same with my other games:

I like the new system but at this point I don’t know how I am supposed to use it. I don’t know how to achieve the look my games had before with the new system.

1 Like

With the new system enabled, if you already have a Bloom instance in your game, we’d be advising to change the Threshold to something like 2 (it was limited to 0-1 before).
If you don’t have a Bloom instance, then we’ll automatically set it to 2 by default instead of the current defaults - this will be changed in the update next week. It will be interesting to look at your place then. If you want to paste a link to the place for now we can check it out on the newer builds.


I never used the legacy bloom because it made certain objects unreadable.

1 Like

Yeah this is pretty extreme :slight_smile: It looks like new neon behavior (ships next week) substantially improves the situation though:

Current beta:

New beta:

And yeah your place suffers from Surface Light bugs mentioned in the OP as well. We’re looking at these.


The new build (next week) somewhat improves the behavior in Dance Your Blox Off but you will still need to tune the lighting to an extent (by making the scene lights less bright). I suspect that the other place that you linked may not require much tuning since that just looks like the neon issue other people brought up. Let’s revisit this next week :slight_smile:


Alright thanks for the help.

1 Like

Great update so far, however the HDR can look a bit much on characters, especially ones coloured white. It does a much better job at lighting up the room than the prior engine however.



local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local RNG = Random.new()

local node = Instance.new("Part")
node.Name = "_ExplosionLightNode"
node.Anchored = true
node.CanCollide = false
node.Locked = true
node.Transparency = 1
node.Parent = workspace

local expFadeOut = { Brightness = 0, Range = 0, Color = Color3.new() }
local expTweenOut = TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.In)
local expTweenIn = TweenInfo.new(0.5, Enum.EasingStyle.Back, Enum.EasingDirection.Out)

local function onExplosion(exp)
	local att = Instance.new("Attachment")
	att.Name = exp:GetFullName()
	att.CFrame = CFrame.new(exp.Position)
	local innerLight = Instance.new("PointLight")
	innerLight.Name = "InnerLight"
	innerLight.Brightness = expFadeOut.Brightness
	innerLight.Range = expFadeOut.Range
	innerLight.Color = expFadeOut.Color
	innerLight.Shadows = true
	local outerLight = innerLight:Clone()
	outerLight.Name = "OuterLight"
	local innerFadeIn = 
		Brightness = exp.BlastRadius * 30;
		Range = exp.BlastRadius * 1.5;
		Color = Color3.new(1,0.5,0.25);
	local outerFadeIn =
		Brightness = exp.BlastRadius * 2;
		Range = exp.BlastRadius * 3;
		Color = Color3.new(1,0.5,0.25);

	innerLight.Parent = att
	outerLight.Parent = att
	att.Parent = node
	spawn(function ()
		while exp:IsDescendantOf(workspace) do
			local x = RNG:NextNumber(-1,1)
			local y = RNG:NextNumber(-1,1)
			local z = RNG:NextNumber(-1,1)
			att.CFrame = CFrame.new(exp.Position) * CFrame.new(x,y,z)
	local innerTweenIn = TweenService:Create(innerLight, expTweenIn, innerFadeIn)
	local outerTweenIn = TweenService:Create(outerLight, expTweenIn, outerFadeIn)


	local innerTweenOut = TweenService:Create(innerLight, expTweenOut, expFadeOut)
	local outerTweenOut = TweenService:Create(outerLight, expTweenOut, expFadeOut)

local function onDescendantAdded(desc)
	if desc:IsA("Explosion") then


This is awesome! But, I feel like everything is too bright by default. It kind of hurts my eyes. I think the brightness (or saturation?) should be toned down if at all possible…


This should be fixed with the neon update next week. Looks neat though!




Looks absolutely incredible, very excited to see what more is to come. Especially impressed by the difference here (the terrain material is Salt)

I was also curious as to whether we are likely to get any extra control over shadow intensity for specific instances (or if anyone has discovered any tricks for doing this). My particular use case is for softening shadows under objects such as trees, to fake how light would typically penetrate through;



In Accurate Play Solo and a Local Server the Exposure property has no effect, however it works in the editor. I assume that’s a bug?

EDIT: Nevermind, it gets set back to Legacy lighting when the game is run. Manually changing it back to Voxel fixes it. Is this a bug? Hah.