# This file is automatically generated. Please don't edit it manually.
# To submit a bug report on the content, see
# https://devforum.roblox.com/c/bug-reports/documentation-issues/72
name: Lighting
type: class
memory_category: Instances
summary: |
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.
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](../../../environment/lighting.md).
`Lighting` may also contain an `Class.Atmosphere` object to render realistic
atmospheric effects, including particle density, haze, glare, and color. See
[Atmospheric Effects](../../../environment/atmosphere.md) for details.
In addition, `Lighting` (along with `Class.Workspace.CurrentCamera`) may
contain
[post‑processing effects](../../../environment/post-processing-effects.md)
such as `Class.SunRaysEffect` and `Class.BlurEffect`.
code_samples: []
inherits:
- Instance
descendants: []
tags:
- NotCreatable
- Service
deprecation_message: ''
properties:
- name: Lighting.Ambient
summary: |
The lighting hue applied to areas that are occluded from the sky, such as
indoor areas.
description: |
`Ambient` is the lighting hue applied to areas that are occluded from the
sky, such as indoor areas.
`Ambient` 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
`Class.Lighting.OutdoorAmbient|OutdoorAmbient`, the change in hue will be
reserved for areas occluded from the sun/moon.
Note that when `Class.Lighting.GlobalShadows|GlobalShadows` is disabled,
there is no distinction between areas occluded from the sky and
non‑occluded areas. In this case,
`Class.Lighting.OutdoorAmbient|OutdoorAmbient` will be ignored and the hue
from the `Ambient` property will be applied everywhere.
code_samples: []
type: Color3
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.Brightness
summary: |
The intensity of illumination in the place.
description: |
The intensity of illumination in the place.
Changing this value will influence the impact of the light source (sun or
moon) on the place's lighting. Note that `Class.Lighting.Ambient|Ambient`
and `Class.Lighting.OutdoorAmbient|OutdoorAmbient` can also be used to
influence how bright a place appears. For example, setting
`Class.Lighting.OutdoorAmbient|OutdoorAmbient` to `[255, 255, 255]` will make the place appear brighter
than its default value of `127, 127, 127`
(as it is more white).
code_samples: []
type: float
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.ClockTime
summary: |
A numerical representation (in hours) of the current time of day used by
`Lighting`.
description: |
A numerical representation (in hours) of the current time of day used by
`Lighting`. Note that this property does not correspond with the actual
time of day and will not change during gameplay unless it has been changed
by a script.
For a measure of `Lighting` time formatted as a 24-hour string, use
`Class.Lighting.TimeOfDay|TimeOfDay`. Changing
`Class.Lighting.TimeOfDay|TimeOfDay` or using
`Class.Lighting:SetMinutesAfterMidnight()|SetMinutesAfterMidnight()` will
also change this property.
code_samples: []
type: float
tags:
- NotReplicated
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Data
serialization:
can_load: true
can_save: false
capabilities:
- Environment
- name: Lighting.ColorShift_Bottom
summary: |
The hue represented in light reflected in the opposite surfaces to those
facing the sun or moon.
description: |
The hue represented in light reflected in the opposite surfaces to those
facing the sun or moon.
The surfaces of a `Class.BasePart` influenced by `ColorShift_Bottom`
depends on the position and orientation of the `Class.BasePart` relative
to the sun or moon's position. Where the sun is directly overhead a
`Class.BasePart`, the shift in color will only apply to the bottom
surface.
This effect can be increased or reduced by altering
`Class.Lighting.Brightness|Brightness`.
Note that `Class.Lighting.ColorShift_Top|ColorShift_Top` and
`ColorShift_Bottom` will interact with the
`Class.Lighting.Ambient|Ambient` and
`Class.Lighting.OutdoorAmbient|OutdoorAmbient` properties if they are
greater than `[0, 0, 0]`. Also note that
the influence of `ColorShift_Bottom` can be very hard to identify when
`Class.Lighting.GlobalShadows|GlobalShadows` is enabled (default).
code_samples: []
type: Color3
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.ColorShift_Top
summary: |
The hue represented in light reflected from surfaces facing the sun or
moon.
description: |
The hue represented in light reflected from surfaces facing the sun or
moon.
The surfaces of a `Class.BasePart` influenced by `ColorShift_Top` depends
on the position and orientation of the `Class.BasePart` relative to the
sun or moon's position. Where the sun is directly overhead a
`Class.BasePart`, the shift in color will only apply to the top surface.
This effect can be increased or reduced by altering
`Class.Lighting.Brightness|Brightness`.
Note that `ColorShift_Top` and
`Class.Lighting.ColorShift_Bottom|ColorShift_Bottom` will interact with
the `Class.Lighting.Ambient|Ambient` and
`Class.Lighting.OutdoorAmbient|OutdoorAmbient` properties if they are
greater than `[0, 0, 0]`.
code_samples: []
type: Color3
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.EnvironmentDiffuseScale
summary: |
Ambient light that is derived from the environment.
description: |
Ambient light that is derived from the environment with a default of `0`.
This property is similar to `Class.Lighting.Ambient|Ambient` and
`Class.Lighting.OutdoorAmbient|OutdoorAmbient` but it's dynamic and can
change according to the sky and time of day. When this property is
increased, it's recommended to decrease `Class.Lighting.Ambient|Ambient`
and `Class.Lighting.OutdoorAmbient|OutdoorAmbient` accordingly.
code_samples: []
type: float
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.EnvironmentSpecularScale
summary: |
Specular light derived from environment.
description: |
Specular light derived from environment with a default of `0`. This
property will make smooth objects reflect the environment and it is
especially important to make metal look more realistic.
code_samples: []
type: float
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.ExposureCompensation
summary: |
The exposure compensation value.
description: |
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` (no exposure compensation) and has a range from `-5` to
`5`. A value of `1` indicates twice as much exposure and `-1` means half
as much exposure.
code_samples: []
type: float
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Exposure
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.ExtendLightRangeTo120
summary: ''
description: ''
code_samples: []
type: RolloutState
tags:
- NotScriptable
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.FogColor
summary: |
A `Datatype.Color3` value giving the hue of `Lighting` fog.
description: |
A `Datatype.Color3` value giving the hue of `Lighting` fog. Note that fog
properties are hidden when `Lighting` contains an `Class.Atmosphere`
object.
code_samples: []
type: Color3
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Fog
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.FogEnd
summary: |
The depth from the `Class.Workspace.CurrentCamera`, in studs, at which fog
will be completely opaque.
description: |
The depth from the `Class.Workspace.CurrentCamera`, in studs, at which fog
will be completely opaque. Note that fog properties are hidden when
`Lighting` contains an `Class.Atmosphere` object.
code_samples: []
type: float
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Fog
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.FogStart
summary: |
The depth from the `Class.Workspace.CurrentCamera`, in studs, at which fog
begins to show.
description: |
The depth from the `Class.Workspace.CurrentCamera`, in studs, at which fog
begins to show. Note that fog properties are hidden when `Lighting`
contains an `Class.Atmosphere` object.
code_samples: []
type: float
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Fog
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.GeographicLatitude
summary: |
The geographic latitude, in degrees, of the scene, influencing the result
of `Lighting` time on the position of the sun and moon.
description: |
The geographic latitude, in degrees, of the scene, influencing the result
of `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
`Class.Lighting.TimeOfDay|TimeOfDay`. If you're looking to obtain the sun
or moon's position, use
`Class.Lighting:GetSunDirection()|GetSunDirection()` or
`Class.Lighting:GetMoonDirection()|GetMoonDirection()`.
code_samples: []
type: float
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Data
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.GlobalShadows
summary: |
Toggles voxel-based dynamic lighting for the place.
description: |
Toggles voxel-based dynamic lighting in the place. 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 sheltered areas is
determined by the `Class.Lighting.Ambient|Ambient` property while the
lighting hue in all other areas is determined by the
`Class.Lighting.OutdoorAmbient|OutdoorAmbient` property.
When `false`, shadows are not drawn and no distinction is made between
indoor and outdoor areas. As a result, the
`Class.Lighting.Ambient|Ambient` property determines the lighting hue and
`Class.Lighting.OutdoorAmbient|OutdoorAmbient` will do nothing.
Shadows are calculated using a voxel system and each lighting voxel is
4×4×4 studs. This means objects need to be larger than
4×4×4 studs to display a realistic shadow. Shadows are also
recalculated when `Class.BasePart|BaseParts` are moving.
code_samples: []
type: boolean
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.LightingStyle
summary: |
The artistic intent behind lighting in the experience.
description: |
`LightingStyle` indicates the artistic intent behind lighting in the
experience, as an `Enum.LightingStyle` option.
code_samples: []
type: LightingStyle
tags: []
deprecation_message: ''
security:
read: None
write: RobloxScriptSecurity
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.OutdoorAmbient
summary: |
The lighting hue applied to outdoor areas.
description: |
`OutdoorAmbient` is the lighting hue applied to outdoor areas.
`OutdoorAmbient` defaults to `[127, 127, 127]`. As long as the red, green,
and blue channels of `Class.Lighting.Ambient|Ambient` do not exceed the
corresponding channels in `OutdoorAmbient`, 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 `Class.Lighting.Ambient|Ambient` in all channels, meaning that if
a channel of `Class.Lighting.Ambient|Ambient` exceeds its corresponding
`OutdoorAmbient` channel, the hue of `Class.Lighting.Ambient|Ambient` will
begin to apply to outdoor areas.
Note that when `Class.Lighting.GlobalShadows|GlobalShadows` is disabled,
there is no distinction between areas occluded from the sky and
non‑occluded areas. In this case, `OutdoorAmbient` will be ignored and the
hue from the `Class.Lighting.Ambient|Ambient` property will be applied
everywhere.
code_samples: []
type: Color3
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.Outlines
summary: |
Determines whether outlines are enabled or disabled in a place.
description: |
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
`Class.BasePart|BaseParts` using `Enum.SurfaceType`.
Although this property can be set by scripts, it recommended this property
is set in Roblox Studio prior to publishing the place.
code_samples: []
type: boolean
tags:
- Deprecated
deprecation_message: |
This item is no longer supported as the outlines feature was removed from
the Roblox platform.
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.PrioritizeLightingQuality
summary: |
Indicates whether you prefer lighting/shading quality or view distance to
scale down first.
description: |
This property indicates whether you prefer lighting/shading quality or
view distance to scale down first. As the rendering quality level reduces,
a setting of `true` prioritizes features such as advanced shadows and
high‑quality shaders at closer distances, while a setting of `false`
prioritizes view distance.
code_samples: []
type: boolean
tags: []
deprecation_message: ''
security:
read: None
write: RobloxScriptSecurity
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.ShadowColor
summary: |
This is supposed to change the color of player shadows, but currently
doesn't do anything.
description: |
This is supposed to change the color of player shadows, but currently
doesn't do anything.
code_samples: []
type: Color3
tags:
- NotReplicated
- Deprecated
deprecation_message: |
This item is deprecated and has no current functionality. Do not use it
for new work.
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: false
capabilities:
- Environment
- name: Lighting.ShadowSoftness
summary: |
Controls how blurry the shadows are.
description: |
Controls how blurry the shadows are with a default of `0.2`. This property
only works when `Class.Lighting.Technology|Technology` mode is
`Enum.Technology|ShadowMap` or `Enum.Technology|Future` and the device is
capable of rendering shadow maps.
code_samples: []
type: float
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.Technology
summary: |
Determines the lighting system for rendering the 3D world. Non-scriptable.
description: |
Determines the lighting system for rendering the 3D world. This property
is non‑scriptable and only modifiable in Studio.
code_samples: []
type: Technology
tags: []
deprecation_message: |
This property has been superseded by
`Class.Lighting.LightingStyle|LightingStyle` which determines the artistic
intent behind lighting, and
`Class.Lighting.PrioritizeLightingQuality|PrioritizeLightingQuality` which
indicates whether you prefer lighting/shading quality or view distance to
scale down first.
security:
read: RobloxScriptSecurity
write: RobloxScriptSecurity
thread_safety: ReadSafe
category: Appearance
serialization:
can_load: true
can_save: true
capabilities:
- Environment
- name: Lighting.TimeOfDay
summary: |
A 24-hour string representation of the current time of day used by
`Lighting`.
description: |
A 24-hour string representation of the current time of day used by
`Lighting`. Note that this property does not correspond with the actual
time of day and will not change during gameplay unless it has been changed
by a script.
For a numeric measure of `Lighting` time, use
`Class.Lighting.ClockTime|ClockTime`. Changing
`Class.Lighting.ClockTime|ClockTime` or using
`Class.Lighting:SetMinutesAfterMidnight()|SetMinutesAfterMidnight()` will
also change this property.
code_samples: []
type: string
tags: []
deprecation_message: ''
security:
read: None
write: None
thread_safety: ReadSafe
category: Data
serialization:
can_load: true
can_save: true
capabilities:
- Environment
methods:
- name: Lighting:GetMinutesAfterMidnight
summary: |
Returns the number of minutes that have passed after midnight for the
purposes of lighting.
description: |
Returns the number of minutes that have passed after midnight for the
purposes of lighting. This number will be nearly identical to
`Class.Lighting.ClockTime|ClockTime` multiplied by `60`.
Note that this number will not always be equal to the value given in
`Class.Lighting:SetMinutesAfterMidnight()|SetMinutesAfterMidnight()` as it
returns minutes after midnight in the current day.
code_samples: []
parameters: []
returns:
- type: double
summary: |
The number of minutes after midnight.
tags: []
deprecation_message: ''
security: None
thread_safety: Safe
capabilities:
- Environment
- name: Lighting:getMinutesAfterMidnight
summary: ''
description: ''
code_samples: []
parameters: []
returns:
- type: double
summary: ''
tags:
- Deprecated
deprecation_message: |
This method is a deprecated variant of
`Class.Lighting:GetMinutesAfterMidnight()` which should be used instead.
security: None
thread_safety: Unsafe
capabilities:
- Environment
- name: Lighting:GetMoonDirection
summary: |
Returns a `Datatype.Vector3` representing the direction of the moon.
description: |
Returns a `Datatype.Vector3` representing the direction of the moon from
the position `(0, 0, 0)`. Note that when
the moon has "set" and is no longer visible, the `Datatype.Vector3`
returned by this method will continue to point towards the moon below the
horizon.
`Class.Lighting:GetSunDirection()|GetSunDirection()` is a variant of this
method for obtaining the direction of the sun.
code_samples: []
parameters: []
returns:
- type: Vector3
summary: |
`Datatype.Vector3` representing the direction of the moon.
tags: []
deprecation_message: ''
security: None
thread_safety: Safe
capabilities:
- Environment
- name: Lighting:GetMoonPhase
summary: |
Returns the moon's current phase.
description: |
Returns the moon's current phase. There is no way to change the moon's
phase so this will always return `0.75`.
code_samples: []
parameters: []
returns:
- type: float
summary: ''
tags: []
deprecation_message: |
There is currently no way to change the moon's phase, and thus this method
should not be used.
security: None
thread_safety: Unsafe
capabilities:
- Environment
- name: Lighting:GetSunDirection
summary: |
Returns a `Datatype.Vector3` representing the direction of the sun.
description: |
Returns a `Datatype.Vector3` representing the direction of the sun from
the position `(0, 0, 0)`. Note that when
the sun has "set" and is no longer visible, the `Datatype.Vector3`
returned by this method will continue to point towards the sun below the
horizon.
`Class.Lighting:GetMoonDirection()|GetMoonDirection()` is a variant of
this method for obtaining the direction of the moon.
code_samples: []
parameters: []
returns:
- type: Vector3
summary: |
`Datatype.Vector3` representing the direction of the sun.
tags: []
deprecation_message: ''
security: None
thread_safety: Safe
capabilities:
- Environment
- name: Lighting:SetMinutesAfterMidnight
summary: |
Sets `Class.Lighting.TimeOfDay|TimeOfDay` and
`Class.Lighting.ClockTime|ClockTime` to the given number of minutes after
midnight.
description: |
Sets `Class.Lighting.TimeOfDay|TimeOfDay` and
`Class.Lighting.ClockTime|ClockTime` to the given number of minutes after
midnight.
This method allows a numerical value to be used, for example in a
day/night cycle `Class.Script`, without the need to convert to a string in
the format required by `Class.Lighting.TimeOfDay|TimeOfDay`. It also
allows values greater than 24 hours to be given that correspond to times
in the next day.
The following code sample includes a simple day/night cycle script. The
speed of time and the initial time can be changed using the `TIME_SPEED`
and `START_TIME` parameters.
```lua
local Lighting = game:GetService("Lighting")
local TIME_SPEED = 60 -- 1 min = 1 hour
local START_TIME = 9 -- 9 AM
local minutesAfterMidnight = START_TIME * 60
local waitTime = 60 / TIME_SPEED
while true do
minutesAfterMidnight = minutesAfterMidnight + 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait(waitTime)
end
```
code_samples: []
parameters:
- name: minutes
type: double
default:
summary: |
The number of minutes after midnight.
returns:
- type: ()
summary: ''
tags: []
deprecation_message: ''
security: None
thread_safety: Unsafe
capabilities:
- Environment
- name: Lighting:setMinutesAfterMidnight
summary: ''
description: ''
code_samples: []
parameters:
- name: minutes
type: double
default:
summary: ''
returns:
- type: ()
summary: ''
tags:
- Deprecated
deprecation_message: |
This method is a deprecated variant of
`Class.Lighting:SetMinutesAfterMidnight()` which should be used instead.
security: None
thread_safety: Unsafe
capabilities:
- Environment
events:
- name: Lighting.LightingChanged
summary: |
This event fires when a `Lighting` property is changed or a `Class.Sky` is
added or removed from `Lighting`.
description: |
This event fires when a `Lighting` property is changed or a `Class.Sky` is
added or removed from `Lighting`, with some exceptions:
- Changing `Class.Lighting.GlobalShadows|GlobalShadows` will not fire this
event.
- Changing fog properties `Class.Lighting.FogColor|FogColor`,
`Class.Lighting.FogStart|FogStart`, or `Class.Lighting.FogEnd|FogEnd`
will not fire this event.
In cases where this behavior is not desired, the `Class.Object.Changed`
event or `Class.Object:GetPropertyChangedSignal()` method can be used.
code_samples: []
parameters:
- name: skyChanged
type: boolean
default:
summary: ''
tags: []
deprecation_message: ''
security: None
capabilities:
- Environment
callbacks: []