Lighting
The Lighting service controls global lighting in an experience. It includes a range of adjustable properties that you can use to change how lighting appears and interacts with other objects.
Memory category | Instances |
---|
Member index 29
Removed member index 2
History | Member | |
---|---|---|
433 | LegacyOutlines: bool |
Description
The Lighting service controls global lighting in an experience. It includes a range of adjustable properties that you can use to change how lighting appears and interacts with other objects, as summarized in Lighting Properties.
Lighting may also contain an Atmosphere object to render realistic atmospheric effects, including particle density, haze, glare, and color. See Atmospheric Effects for details.
In addition, Lighting (along with Workspace.CurrentCamera) may contain post-processing effects such as SunRaysEffect and BlurEffect. See Post-Processing Effects for more information.
History 118
- 645 Change PreferredDescriptor of getMinutesAfterMidnight from GetMinutesAfterMidnight to GetMinutesAfterMidnight
- 645 Change ThreadSafety of GetSunDirection from Unsafe to Safe
- 645 Change ThreadSafety of GetMoonDirection from Unsafe to Safe
- 645 Change ThreadSafety of GetMinutesAfterMidnight from Unsafe to Safe
- 644 Remove
- 641 Add Quality
- 641 Add Intent
- 631 Change ReadSecurity of Technology from None to RobloxScriptSecurity
- 631 Change Tags of Technology from [NotScriptable] to []
- 631 Change WriteSecurity of Technology from None to RobloxScriptSecurity
- 573 Change ReturnType of setMinutesAfterMidnight from void to null
- 573 Change ReturnType of SetMinutesAfterMidnight from void to null
- 553 Change PreferredDescriptor of setMinutesAfterMidnight from to SetMinutesAfterMidnight
- 553 Change PreferredDescriptor of getMinutesAfterMidnight from to GetMinutesAfterMidnight
- 553 Change Default of TimeOfDay from to 14:00:00
- 553 Change Default of from to false
- 553 Change Default of Technology from to Compatibility
- 553 Change Default of ShadowSoftness from to 0.5
- 553 Change Default of ShadowColor from to Color3(0.7, 0.7, 0.72)
- 553 Change Default of Outlines from to true
- 553 Change Default of OutdoorAmbient from to Color3(0.5, 0.5, 0.5)
- 553 Change Default of GlobalShadows from to false
- 553 Change Default of GeographicLatitude from to 41.7332993
- 553 Change Default of FogStart from to 0
- 553 Change Default of FogEnd from to 100000
- 553 Change Default of FogColor from to Color3(0.75, 0.75, 0.75)
- 553 Change Default of ExposureCompensation from to 0
- 553 Change Default of EnvironmentSpecularScale from to 0
- 553 Change Default of EnvironmentDiffuseScale from to 0
- 553 Change Default of ColorShift_Top from to Color3(0, 0, 0)
- 553 Change Default of ColorShift_Bottom from to Color3(0, 0, 0)
- 553 Change Default of ClockTime from to 14
- 553 Change Default of Brightness from to 1
- 553 Change Default of Ambient from to Color3(0.5, 0.5, 0.5)
- 486 Change ThreadSafety of TimeOfDay from ReadOnly to ReadSafe
- 486 Change ThreadSafety of from ReadOnly to ReadSafe
- 486 Change ThreadSafety of Technology from ReadOnly to ReadSafe
- 486 Change ThreadSafety of ShadowSoftness from ReadOnly to ReadSafe
- 486 Change ThreadSafety of ShadowColor from ReadOnly to ReadSafe
- 486 Change ThreadSafety of Outlines from ReadOnly to ReadSafe
- 486 Change ThreadSafety of OutdoorAmbient from ReadOnly to ReadSafe
- 486 Change ThreadSafety of GlobalShadows from ReadOnly to ReadSafe
- 486 Change ThreadSafety of GeographicLatitude from ReadOnly to ReadSafe
- 486 Change ThreadSafety of FogStart from ReadOnly to ReadSafe
- 486 Change ThreadSafety of FogEnd from ReadOnly to ReadSafe
- 486 Change ThreadSafety of FogColor from ReadOnly to ReadSafe
- 486 Change ThreadSafety of ExposureCompensation from ReadOnly to ReadSafe
- 486 Change ThreadSafety of EnvironmentSpecularScale from ReadOnly to ReadSafe
- 486 Change ThreadSafety of EnvironmentDiffuseScale from ReadOnly to ReadSafe
- 486 Change ThreadSafety of ColorShift_Top from ReadOnly to ReadSafe
- 486 Change ThreadSafety of ColorShift_Bottom from ReadOnly to ReadSafe
- 486 Change ThreadSafety of ClockTime from ReadOnly to ReadSafe
- 486 Change ThreadSafety of Brightness from ReadOnly to ReadSafe
- 486 Change ThreadSafety of Ambient from ReadOnly to ReadSafe
- 485 Add
- 462 Change ThreadSafety of LightingChanged from to Unsafe
- 462 Change ThreadSafety of setMinutesAfterMidnight from to Unsafe
- 462 Change ThreadSafety of getMinutesAfterMidnight from to Unsafe
- 462 Change ThreadSafety of SetMinutesAfterMidnight from to Unsafe
- 462 Change ThreadSafety of GetSunDirection from to Unsafe
- 462 Change ThreadSafety of GetMoonPhase from to Unsafe
- 462 Change ThreadSafety of GetMoonDirection from to Unsafe
- 462 Change ThreadSafety of GetMinutesAfterMidnight from to Unsafe
- 462 Change ThreadSafety of TimeOfDay from to ReadOnly
- 462 Change ThreadSafety of Technology from to ReadOnly
- 462 Change ThreadSafety of ShadowSoftness from to ReadOnly
- 462 Change ThreadSafety of ShadowColor from to ReadOnly
- 462 Change ThreadSafety of Outlines from to ReadOnly
- 462 Change ThreadSafety of OutdoorAmbient from to ReadOnly
- 462 Change ThreadSafety of GlobalShadows from to ReadOnly
- 462 Change ThreadSafety of GeographicLatitude from to ReadOnly
- 462 Change ThreadSafety of FogStart from to ReadOnly
- 462 Change ThreadSafety of FogEnd from to ReadOnly
- 462 Change ThreadSafety of FogColor from to ReadOnly
- 462 Change ThreadSafety of ExposureCompensation from to ReadOnly
- 462 Change ThreadSafety of EnvironmentSpecularScale from to ReadOnly
- 462 Change ThreadSafety of EnvironmentDiffuseScale from to ReadOnly
- 462 Change ThreadSafety of ColorShift_Top from to ReadOnly
- 462 Change ThreadSafety of ColorShift_Bottom from to ReadOnly
- 462 Change ThreadSafety of ClockTime from to ReadOnly
- 462 Change ThreadSafety of Brightness from to ReadOnly
- 462 Change ThreadSafety of Ambient from to ReadOnly
- 433 Remove LegacyOutlines
- 429 Change Parameters of LightingChanged from (skyboxChanged: bool) to (skyChanged: bool)
- 428 Change Parameters of LightingChanged from (skyChanged: bool) to (skyboxChanged: bool)
- 429 Change Parameters of LightingChanged from (skyboxChanged: bool) to (skyChanged: bool)
- 407 Add EnvironmentSpecularScale
- 407 Add EnvironmentDiffuseScale
- 395 Change Tags of Outlines from [] to [Deprecated]
- 389 Add LegacyOutlines
- 380 Add ShadowSoftness
- 359 Change Tags of Technology from [NotReplicated, NotScriptable] to [NotScriptable]
- 355 Add Technology
- 355 Add ExposureCompensation
- 303 Add ClockTime
- 254 Change Tags of ShadowColor from [NotReplicated] to [NotReplicated, Deprecated]
- 114 Add Outlines
- 101 Add OutdoorAmbient
- 98 Add GlobalShadows
- 50 Add setMinutesAfterMidnight
- 50 Add getMinutesAfterMidnight
- 49 Add FogStart
- 49 Add FogEnd
- 49 Add FogColor
- 47 Add LightingChanged
- 47 Add SetMinutesAfterMidnight
- 47 Add GetSunDirection
- 47 Add GetMoonPhase
- 47 Add GetMoonDirection
- 47 Add GetMinutesAfterMidnight
- 47 Add TimeOfDay
- 47 Add ShadowColor
- 47 Add GeographicLatitude
- 47 Add ColorShift_Top
- 47 Add ColorShift_Bottom
- 47 Add Brightness
- 47 Add Ambient
- 47 Add Lighting
Members 29
Ambient
Type | Default | |
---|---|---|
Color3 | 0.5, 0.5, 0.5 |
The lighting hue applied to areas that are occluded from the sky, such as indoor areas.
This property defaults to 0, 0, 0 (black).
As long as the red, green and blue channels of this property do not exceed the corresponding channels in Lighting.OutdoorAmbient the change in hue will be reserved for areas occluded from the sun/moon. The effective Lighting.OutdoorAmbient value is clamped to be greater than or equal to Ambient in all channels. This means, if a channel of Ambient exceeds its corresponding Lighting.OutdoorAmbient channel then the hue will begin to apply to outdoor areas.
Note, when Lighting.GlobalShadows is disabled there is no distinction between areas occluded and areas that are not. In this case Lighting.OutdoorAmbient will be ignored and the hue from the Ambient property will be applied everywhere.
For more properties that influence the color of lighting, please see Lighting.ColorShiftBottom and Lighting.ColorShiftTop.
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
Brightness
Type | Default | |
---|---|---|
float | 1 |
The intensity of illumination in the place.
Changing this value will influence the impact of the light source (sun or moon) on the map's lighting. When brightness is set to 0, there will be no effect due to Lighting.ColorShift_Top or Lighting.ColorShift_Bottom as the light source is having no effect. Note, it will not influence the shadows created by the Lighting.GlobalShadows property.
Whilst this property is not clamped, the effect is clamped between 0 and 2. Meaning setting Brightness to 10 will be no different to setting it to 2.
Note, Lighting.Ambient and Lighting.OutdoorAmbient can also be used to influence how bright a place appears. For example, setting Lighting.OutdoorAmbient to 255, 255, 255 will make the place appear brighter than its default value of 127, 127, 127 (as it is more white).
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
History 4
- 553 Change Default of Brightness from to 1
- 486 Change ThreadSafety of Brightness from ReadOnly to ReadSafe
- 462 Change ThreadSafety of Brightness from to ReadOnly
- 47 Add Brightness
ClockTime
Type | Default | |
---|---|---|
float | 14 |
A numerical representation (in hours) of the current time of day used by Lighting.
Note, this property does not correspond with the actual time of day and will not change during the game unless it has been changed by a script.
For a measure of Lighting time formatted as a 24 hour string use Lighting.CurrentTime. Changing Lighting.CurrentTime or using Lighting:SetMinutesAfterMidnight() will also change this property.
Using ClockTime requires the time to be normalized:
minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local hours = minutesNormalised / 60
Lighting.ClockTime = hours
task.wait()
end
Using Lighting.TimeOfDay requires the time to be normalized and a string formatted:
minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local seconds = minutesNormalised * 60
local hours = string.format("%02.f", seconds//3600)
local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)))
local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60))
local timeString = hours..":"..mins..":"..secs
Lighting.TimeOfDay = timeString
task.wait()
end
Using Lighting:SetMinutesAfterMidnight() requires no extra processing:
minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end
Thread safety | ReadSafe |
---|---|
Category | Data |
Loaded/Saved | true/false |
ColorShift_Bottom
Type | Default | |
---|---|---|
Color3 | 0, 0, 0 |
The hue represented in light reflected in the opposite surfaces to those facing the sun or moon.
The surfaces of a BasePart influenced by ColorShift_Bottom depends on the position and orientation of the BasePart relative to the sun or moon's position. Where the sun is directly overhead a BasePart, the shift in color will only apply to the bottom surface.
This effect can be increased or reduced by altering Lighting.Brightness.
ColorShift_Bottom influences the opposite surfaces to Lighting.ColorShift_Top
Note, Lighting.ColorShift_Top and ColorShift_Bottom will interact with the Lighting.Ambient and Lighting.OutdoorAmbient properties if they are greater than 0, 0, 0. Also, the influence of ColorShift_Bottom can be very hard to identify when Lighting.GlobalShadows is enabled (as it is by default).
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
History 4
- 553 Change Default of ColorShift_Bottom from to Color3(0, 0, 0)
- 486 Change ThreadSafety of ColorShift_Bottom from ReadOnly to ReadSafe
- 462 Change ThreadSafety of ColorShift_Bottom from to ReadOnly
- 47 Add ColorShift_Bottom
ColorShift_Top
Type | Default | |
---|---|---|
Color3 | 0, 0, 0 |
The hue represented in light reflected from surfaces facing the sun or moon.
The surfaces of a BasePart influenced by ColorShift_Top depends on the position and orientation of the BasePart relative to the sun or moon's position. Where the sun is directly overhead a BasePart, the shift in color will only apply to the top surface.
This effect can be increased or reduced by altering Lighting.Brightness.
Whilst ColorShift_Top influences surfaces exposed to light, Lighting.ColorShift_Bottom influences surfaces sheltered from light.
Note, ColorShift_Top and ColorShift_Bottom will interact with the Lighting.Ambient and Lighting.OutdoorAmbient properties if they are greater than 0, 0, 0.
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
History 4
- 553 Change Default of ColorShift_Top from to Color3(0, 0, 0)
- 486 Change ThreadSafety of ColorShift_Top from ReadOnly to ReadSafe
- 462 Change ThreadSafety of ColorShift_Top from to ReadOnly
- 47 Add ColorShift_Top
EnvironmentDiffuseScale
Type | Default | |
---|---|---|
float | 0 |
Ambient light that is derived from the environment. The value of this property defaults to 0.
It is similar to Lighting.Ambient and Lighting.OutdoorAmbient property but it's dynamic and can change according sky and time of day. It is recommended when this property is increased, Ambient and OutdoorAmbient are decreased accordingly.
It also makes skybox appear at night.
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
History 4
- 553 Change Default of EnvironmentDiffuseScale from to 0
- 486 Change ThreadSafety of EnvironmentDiffuseScale from ReadOnly to ReadSafe
- 462 Change ThreadSafety of EnvironmentDiffuseScale from to ReadOnly
- 407 Add EnvironmentDiffuseScale
EnvironmentSpecularScale
Type | Default | |
---|---|---|
float | 0 |
Specular light derived from environment. The value of this property defaults to 0.
It will make smooth objects reflect the environment. Especially important to make metal more realistic.
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
History 4
- 553 Change Default of EnvironmentSpecularScale from to 0
- 486 Change ThreadSafety of EnvironmentSpecularScale from ReadOnly to ReadSafe
- 462 Change ThreadSafety of EnvironmentSpecularScale from to ReadOnly
- 407 Add EnvironmentSpecularScale
ExposureCompensation
Type | Default | |
---|---|---|
float | 0 |
This property determines the exposure compensation amount which applies a bias to the exposure level of the scene prior to the tonemap step. Defaults to 0.
- A value of +1 indicates twice as much exposure and -1 means half as much exposure.
- A value of 0 indicates no exposure compensation will be done.
- Range: -5 to 5
This property is replicated and can be set from scripts or Studio.
1 2 |
|
You can use this property to adjust the exposure amount prior to the tonemap step to show more detail either in lighter or darker areas. This is needed as we move to a HDR pipeline.
When Lighting.Technology is set to Legacy, this property has no effect.
1 2 3 4 5 |
|
Thread safety | ReadSafe |
---|---|
Category | Exposure |
Loaded/Saved | true |
History 4
- 553 Change Default of ExposureCompensation from to 0
- 486 Change ThreadSafety of ExposureCompensation from ReadOnly to ReadSafe
- 462 Change ThreadSafety of ExposureCompensation from to ReadOnly
- 355 Add ExposureCompensation
FogColor
Type | Default | |
---|---|---|
Color3 | 0.75, 0.75, 0.75 |
Fog properties are hidden when Lighting contains an Atmosphere object.
A Color3 value giving the hue of Lighting fog.
How does fog work?
Fog in Roblox is displayed in a plane perpendicular to the Workspace.CurrentCamera direction. It fades between the Lighting.FogStart property where it is not visible, to the Lighting.FogEnd property where it is fully opaque. The effect of fog is it blends color with the FogColor.
At distances greater than Lighting.FogEnd, color will be determined entirely by the FogColor. However at distances between Lighting.FogStart and Lighting.FogEnd the degree to which the color is blended depends on the position.
Roblox's fog uses linear interpolation between Lighting.FogStart and Lighting.FogEnd. This means if Lighting.FogStart is 10 and Lighting.FogEnd is 20, at a distance of 15 studs the fog will be at 50%. That means the color of a pixel at 15 studs will be 50% its normal color blended with 50% of the fog color.
local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200
Note, fog does not obscure the skybox.
Thread safety | ReadSafe |
---|---|
Category | Fog |
Loaded/Saved | true |
FogEnd
Type | Default | |
---|---|---|
float | 100000 |
Fog properties are hidden when Lighting contains an Atmosphere object.
The depth from the Workspace.CurrentCamera, in studs, at which fog will be completely opaque.
How does fog work?
Fog in Roblox is displayed in a plane perpendicular to the Workspace.CurrentCamera look direction. It fades between the Lighting.FogStart property where it is not visible, to the FogEnd property where it is fully opaque. The effect of fog is it blends color with the Lighting.FogColor.
At distances greater than FogEnd, color will be determined entirely by the Lighting.FogColor. However at distances between Lighting.FogStart and FogEnd the degree to which the color is blended depends on the position.
Roblox's fog uses linear interpolation between Lighting.FogStart and FogEnd. This means if Lighting.FogStart is 10 and FogEnd is 20, at a distance of 15 studs the fog will be at 50%. That means the color of a pixel at 15 studs will be 50% its normal color blended with 50% of the fog color.
local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200
The color of the fog can be adjusted using Lighting.FogColor.
Note, fog does not obscure the skybox.
Thread safety | ReadSafe |
---|---|
Category | Fog |
Loaded/Saved | true |
FogStart
Type | Default | |
---|---|---|
float | 0 |
Fog properties are hidden when Lighting contains an Atmosphere object.
The depth from the Workspace.CurrentCamera, in studs, at which fog begins to show.
How does fog work?
Fog in Roblox is displayed in a plane perpendicular to the Workspace.CurrentCamera look direction. It fades between the FogStart property where it is not visible, to the Lighting.FogEnd property where it is fully opaque. The effect of fog is it blends color with the Lighting.FogColor.
At distances greater than Lighting.FogEnd, color will be determined entirely by the Lighting.FogColor. However at distances between FogStart and Lighting.FogEnd the degree to which the color is blended depends on the position.
Roblox's fog uses linear interpolation between FogStart and Lighting.FogEnd. This means if FogStart is 10 and Lighting.FogEnd is 20, at a distance of 15 studs the fog will be at 50%. That means the color of a pixel at 15 studs will be 50% its normal color blended with 50% of the fog color.
local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200
The color of the fog can be adjusted using Lighting.FogColor.
Note, fog does not obscure the skybox.
Thread safety | ReadSafe |
---|---|
Category | Fog |
Loaded/Saved | true |
GeographicLatitude
Type | Default | |
---|---|---|
float | 41.7332993 |
The geographic latitude, in degrees, of the scene, influencing the result of `Class.Lighting time on the position of the sun and moon.
When calculating the position of the sun, the earth's tilt is also taken into account.
Changing GeographicLatitude will alter the position of the sun at every Lighting.TimeOfDay. Developers looking to obtain the sun or moon's position should use Lighting:GetSunDirection() or Lighting:GetMoonDirection().
Thread safety | ReadSafe |
---|---|
Category | Data |
Loaded/Saved | true |
History 4
- 553 Change Default of GeographicLatitude from to 41.7332993
- 486 Change ThreadSafety of GeographicLatitude from ReadOnly to ReadSafe
- 462 Change ThreadSafety of GeographicLatitude from to ReadOnly
- 47 Add GeographicLatitude
GetMinutesAfterMidnight
Parameters (0) | ||
---|---|---|
No parameters. | ||
Returns (1) | ||
double |
Returns the number of minutes that have passed after midnight for the purposes of lighting.
This number will be nearly identical to Lighting.ClockTime multiplied by 60.
This number will not always be equal to the value given in Lighting:SetMinutesAfterMidnight() as it returns minutes after midnight in the current day.
For Lighting time formatted as a string, see Lighting.TimeOfDay.
Thread safety | Safe |
---|
History 3
- 645 Change ThreadSafety of GetMinutesAfterMidnight from Unsafe to Safe
- 462 Change ThreadSafety of GetMinutesAfterMidnight from to Unsafe
- 47 Add GetMinutesAfterMidnight
GetMoonDirection
Parameters (0) | ||
---|---|---|
No parameters. | ||
Returns (1) | ||
Vector3 |
Returns a Vector3 representing the direction of the moon from the position 0, 0, 0.
Note, when the moon has 'set' and is no longer visible, the Vector3 returned by this function will continue to point towards the moon below the map.
Developers looking to change the positioning of the moon should use the Lighting.ClockTime or Lighting.GeographicLatitude properties.
A variant of this function exists for obtaining the direction of the sun, Lighting:GetSunDirection().
Thread safety | Safe |
---|
History 3
- 645 Change ThreadSafety of GetMoonDirection from Unsafe to Safe
- 462 Change ThreadSafety of GetMoonDirection from to Unsafe
- 47 Add GetMoonDirection
GetMoonPhase
Parameters (0) | ||
---|---|---|
No parameters. | ||
Returns (1) | ||
float |
Returns the moon's current phase. There is no way to change the moon's phase so this will always return 0.75.
Thread safety | Unsafe |
---|
History 2
- 462 Change ThreadSafety of GetMoonPhase from to Unsafe
- 47 Add GetMoonPhase
GetSunDirection
Parameters (0) | ||
---|---|---|
No parameters. | ||
Returns (1) | ||
Vector3 |
Returns a Vector3 representing the direction of the sun from the position 0, 0, 0.
Note, when the sun has set and is no longer visible, the Vector3 returned by this function will continue to point towards the sun below the map.
Developers looking to change the positioning of the sun should use the Lighting.ClockTime or Lighting.GeographicLatitude properties.
A variant of this function exists for obtaining the direction of the moon, Lighting:GetMoonDirection().
Thread safety | Safe |
---|
History 3
- 645 Change ThreadSafety of GetSunDirection from Unsafe to Safe
- 462 Change ThreadSafety of GetSunDirection from to Unsafe
- 47 Add GetSunDirection
GlobalShadows
Type | Default | |
---|---|---|
bool | false |
Toggles voxel-based dynamic lighting in the game
What does GlobalShadows do?
When set to true, shadows are rendered in sheltered areas depending on the position of the sun and moon. The lighting hue applied to these areas is determined by the Lighting.Ambient property. The lighting hue in all other areas is determined by the Lighting.OutdoorAmbient property.
When disabled, shadows are not drawn and no distinction is made between indoor and outdoor areas. As a result, the Lighting.Ambient property determines the lighting hue and Lighting.OutdoorAmbient will do nothing.
Shadows are calculated using a voxel system, and each lighting voxel is 4x4x4 studs. This means objects need to be larger than 4x4x4 studs to display a realistic shadow. Shadows are also recalculated when BaseParts are moving.
Note, this property is unrelated to shadows from characters which are displayed regardless of what GlobalShadows is set to.
For more information about Roblox's dynamic lighting, please see this blog post.
Toggling GlobalShadows
Developers toggling the GlobalShadows setting will notice that disabling it makes the place considerably darker. This is because when GlobalShadows is disabled Lighting.Ambient is used to calculate the lighting hue in both indoor and outdoor spaces. This darkness can be resolved by setting Lighting.Ambient to a higher value such as the default of Lighting.OutdoorAmbient.
In most cases developers are recommended to leave GlobalShadows enabled due to the superior visual appearance. See Lighting Properties guide for a comparison.
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
History 4
- 553 Change Default of GlobalShadows from to false
- 486 Change ThreadSafety of GlobalShadows from ReadOnly to ReadSafe
- 462 Change ThreadSafety of GlobalShadows from to ReadOnly
- 98 Add GlobalShadows
Intent
Type | Default | |
---|---|---|
Intent | Realistic |
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
LightingChanged
Parameters (1) | |
---|---|
skyChanged | bool |
This event fires when a Lighting property is changed or a Sky is added or removed from Lighting.
Although this event fires when most properties of Lighting are changed, developers should be aware of the few exceptions:
- Changing Lighting.GlobalShadows will not fire this event
- The fog properties, Lighting.FogColor, Lighting.FogStart and Lighting.FogEnd will not fire this event
In cases where this behavior is not desired, the Object.Changed event or Object:GetPropertyChangedSignal() function can be used.
Thread safety | Unsafe |
---|
History 5
- 462 Change ThreadSafety of LightingChanged from to Unsafe
- 429 Change Parameters of LightingChanged from (skyboxChanged: bool) to (skyChanged: bool)
- 428 Change Parameters of LightingChanged from (skyChanged: bool) to (skyboxChanged: bool)
- 429 Change Parameters of LightingChanged from (skyboxChanged: bool) to (skyChanged: bool)
- 47 Add LightingChanged
OutdoorAmbient
Type | Default | |
---|---|---|
Color3 | 0.5, 0.5, 0.5 |
The lighting hue applied to outdoor areas.
This property defaults to 127, 127, 127.
As long as the red, green and blue channels of Lighting.Ambient do not exceed the corresponding channels in this property, the hue of the lighting in outdoor areas will be determined by this property. The effective OutdoorAmbient value is clamped to be greater than or equal to Lighting.Ambient in all channels. This means, if a channel of Lighting.Ambient exceeds its corresponding OutdoorAmbient channel then the hue of Lighting.Ambient will begin to apply to outdoor areas.
Note, when Lighting.GlobalShadows is disabled there is no distinction between areas occluded from the sky and areas that are not. In this case OutdoorAmbient will be ignored and the hue from the Lighting.Ambient property will be applied everywhere.
For more properties that influence the color of lighting, please see Lighting.ColorShift_Bottom and Lighting.ColorShift_Top.
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
History 4
- 553 Change Default of OutdoorAmbient from to Color3(0.5, 0.5, 0.5)
- 486 Change ThreadSafety of OutdoorAmbient from ReadOnly to ReadSafe
- 462 Change ThreadSafety of OutdoorAmbient from to ReadOnly
- 101 Add OutdoorAmbient
Outlines
Type | Default | |
---|---|---|
bool | true |
This property determines whether outlines are enabled or disabled in a place.
Outlines can be disabled on a global basis, using this Lighting property, or alternatively on a surface-by-surface basis for BaseParts using SurfaceType.
Although this property can be set by scripts, it recommended this property is set in Roblox Studio prior to publishing the place.
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
Quality
Type | Default | |
---|---|---|
Quality | Quality |
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
SetMinutesAfterMidnight
Parameters (1) | ||
---|---|---|
minutes | double | |
Returns (1) | ||
null |
Sets Lighting.TimeOfDay and Lighting.ClockTime to the given number of minutes after midnight.
How can I make a day / night script?
SetMinutesAfterMidnight allows a numerical value to be used, for example in a day/night cycle Script, without the need to convert to a string in the format required by Lighting.TimeOfDay. It also allows values greater than 24 hours to be given that correspond to times in the next day. See the code snippets below for an example.
Using Lighting.TimeOfDay requires the time to be normalized and a string formatted:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Using Lighting.ClockTime requires the time to be normalized:
1 2 3 4 5 6 7 8 9 10 11 |
|
Using Lighting:SetMinutesAfterMidnight() requires no extra processing:
minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end
Thread safety | Unsafe |
---|
History 3
- 573 Change ReturnType of SetMinutesAfterMidnight from void to null
- 462 Change ThreadSafety of SetMinutesAfterMidnight from to Unsafe
- 47 Add SetMinutesAfterMidnight
ShadowColor
Type | Default | |
---|---|---|
Color3 | 0.7, 0.7, 0.72 |
This is supposed to change the color of player shadows, but currently doesn't do anything.
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true/false |
History 5
- 553 Change Default of ShadowColor from to Color3(0.7, 0.7, 0.72)
- 486 Change ThreadSafety of ShadowColor from ReadOnly to ReadSafe
- 462 Change ThreadSafety of ShadowColor from to ReadOnly
- 254 Change Tags of ShadowColor from [NotReplicated] to [NotReplicated, Deprecated]
- 47 Add ShadowColor
ShadowSoftness
Type | Default | |
---|---|---|
float | 0.5 |
Controls how blurry the shadows are. The value of this property defaults to 0.2.
This property only works when Lighting.Technology mode is ShadowMap or Future and the device is capable of ShadowMap.
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |
History 4
- 553 Change Default of ShadowSoftness from to 0.5
- 486 Change ThreadSafety of ShadowSoftness from ReadOnly to ReadSafe
- 462 Change ThreadSafety of ShadowSoftness from to ReadOnly
- 380 Add ShadowSoftness
Technology
Type | Default | |
---|---|---|
Technology | Compatibility |
Determines the lighting system for rendering the 3D world. Non-scriptable and only modifiable in Studio. See Technology for available options and Lighting Technology for detailed descriptions and visual effects of each option.
Security | RobloxScriptSecurity |
---|---|
Thread safety | ReadSafe |
Category | Appearance |
Loaded/Saved | true |
History 8
- 631 Change ReadSecurity of Technology from None to RobloxScriptSecurity
- 631 Change Tags of Technology from [NotScriptable] to []
- 631 Change WriteSecurity of Technology from None to RobloxScriptSecurity
- 553 Change Default of Technology from to Compatibility
- 486 Change ThreadSafety of Technology from ReadOnly to ReadSafe
- 462 Change ThreadSafety of Technology from to ReadOnly
- 359 Change Tags of Technology from [NotReplicated, NotScriptable] to [NotScriptable]
- 355 Add Technology
TimeOfDay
Type | Default | |
---|---|---|
string | 14:00:00 |
A 24 hour string representation of the current time of day used by Lighting.
Note, this property does not correspond with the actual time of day and will not change during the game unless it has been changed by a script.
For a numeric measure of Lighting time use Lighting.ClockTime. Changing Lighting.ClockTime or using Lighting:SetMinutesAfterMidnight() will also change this property.
Using TimeOfDay requires the time to be normalized and a string formatted:
minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local seconds = minutesNormalised * 60
local hours = string.format("%02.f", seconds//3600)
local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)))
local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60))
local timeString = hours..":"..mins..":"..secs
Lighting.TimeOfDay = timeString
task.wait()
end
Using Lighting.ClockTime requires the time to be normalized:
minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local hours = minutesNormalised / 60
Lighting.ClockTime = hours
task.wait()
end
Using Lighting:SetMinutesAfterMidnight() requires no extra processing:
minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end
Thread safety | ReadSafe |
---|---|
Category | Data |
Loaded/Saved | true |
getMinutesAfterMidnight
Parameters (0) | ||
---|---|---|
No parameters. | ||
Returns (1) | ||
double |
Thread safety | Unsafe |
---|
History 4
- 645 Change PreferredDescriptor of getMinutesAfterMidnight from GetMinutesAfterMidnight to GetMinutesAfterMidnight
- 553 Change PreferredDescriptor of getMinutesAfterMidnight from to GetMinutesAfterMidnight
- 462 Change ThreadSafety of getMinutesAfterMidnight from to Unsafe
- 50 Add getMinutesAfterMidnight
setMinutesAfterMidnight
Parameters (1) | ||
---|---|---|
minutes | double | |
Returns (1) | ||
null |
Thread safety | Unsafe |
---|
History 4
- 573 Change ReturnType of setMinutesAfterMidnight from void to null
- 553 Change PreferredDescriptor of setMinutesAfterMidnight from to SetMinutesAfterMidnight
- 462 Change ThreadSafety of setMinutesAfterMidnight from to Unsafe
- 50 Add setMinutesAfterMidnight
Removed members 2
LegacyOutlines
Type | Default | |
---|---|---|
bool |
Category | Appearance |
---|---|
Loaded/Saved | true |
History 2
- 433 Remove LegacyOutlines
- 389 Add LegacyOutlines