UltraRealistic Lighting V2
Key RequiredUniversal

UltraRealistic Lighting V2

Universal ScriptAccount83581Account83581 457 views 1.8K executesUpdated Sep 22, 2026
Unrated
00
Lua Script•117 lines (4430 chars)
-- open source, feel free to adjust it however you want
local Lighting = game:GetService("Lighting")
local Workspace = game:GetService("Workspace")
local Terrain = Workspace:FindFirstChildOfClass("Terrain")

for _, obj in ipairs(Lighting:GetChildren()) do
	if obj:GetAttribute("UltraRealismEffect") then
		obj:Destroy()
	end
end

Lighting.Technology = Enum.Technology.Future
Lighting.GlobalShadows = true
Lighting.ShadowSoftness = 0.2
Lighting.ExposureCompensation = 0
Lighting.EnvironmentDiffuseScale = 1
Lighting.EnvironmentSpecularScale = 1
Lighting.GeographicLatitude = 35
Lighting.Ambient = Color3.fromRGB(60, 62, 70)
Lighting.OutdoorAmbient = Color3.fromRGB(110, 120, 135)

local Atmosphere = Instance.new("Atmosphere")
Atmosphere:SetAttribute("UltraRealismEffect", true)
Atmosphere.Offset = 0.15
Atmosphere.Color = Color3.fromRGB(199, 214, 255)
Atmosphere.Decay = Color3.fromRGB(92, 108, 140)
Atmosphere.Parent = Lighting

local ColorCorrection = Instance.new("ColorCorrectionEffect")
ColorCorrection:SetAttribute("UltraRealismEffect", true)
ColorCorrection.Parent = Lighting

local Bloom = Instance.new("BloomEffect")
Bloom:SetAttribute("UltraRealismEffect", true)
Bloom.Size = 24
Bloom.Threshold = 1.4
Bloom.Parent = Lighting

local SunRays = Instance.new("SunRaysEffect")
SunRays:SetAttribute("UltraRealismEffect", true)
SunRays.Spread = 0.65
SunRays.Parent = Lighting

local DOF = Instance.new("DepthOfFieldEffect")
DOF:SetAttribute("UltraRealismEffect", true)
DOF.FarIntensity = 0.02
DOF.NearIntensity = 0.015
DOF.FocusDistance = 120
DOF.InFocusRadius = 90
DOF.Parent = Lighting

if Terrain then
	Terrain.WaterTransparency = 0.12
	Terrain.WaterReflectance = 0.85
	Terrain.WaterWaveSize = 0.18
	Terrain.WaterWaveSpeed = 7
	Terrain.Decoration = true
end

for _, obj in ipairs(Workspace:GetDescendants()) do
	if obj:IsA("BasePart") then
		obj.CastShadow = true
		obj.Reflectance = math.clamp(obj.Reflectance, 0, 0.15)
	end
end

Workspace.DescendantAdded:Connect(function(obj)
	if obj:IsA("BasePart") then
		obj.CastShadow = true
	end
end)

local keyframes = {
	{ hour = 0, density = 0.5, haze = 1.6, glare = 0, brightness = 1.4, contrast = 0.1, saturation = -0.12, tint = Color3.fromRGB(205, 220, 255), bloom = 0.05, sunray = 0 },
	{ hour = 6, density = 0.32, haze = 1.1, glare = 0.1, brightness = 1.8, contrast = 0.1, saturation = 0, tint = Color3.fromRGB(255, 236, 210), bloom = 0.14, sunray = 0.08 },
	{ hour = 8, density = 0.2, haze = 0.7, glare = 0.08, brightness = 2.4, contrast = 0.08, saturation = -0.03, tint = Color3.fromRGB(255, 252, 245), bloom = 0.08, sunray = 0.045 },
	{ hour = 17, density = 0.22, haze = 0.8, glare = 0.08, brightness = 2.2, contrast = 0.08, saturation = -0.03, tint = Color3.fromRGB(255, 252, 245), bloom = 0.08, sunray = 0.045 },
	{ hour = 19, density = 0.3, haze = 1.2, glare = 0.12, brightness = 1.7, contrast = 0.1, saturation = 0.02, tint = Color3.fromRGB(255, 224, 190), bloom = 0.15, sunray = 0.09 },
	{ hour = 21, density = 0.4, haze = 1.4, glare = 0, brightness = 1.5, contrast = 0.1, saturation = -0.1, tint = Color3.fromRGB(210, 222, 255), bloom = 0.05, sunray = 0 },
	{ hour = 24, density = 0.5, haze = 1.6, glare = 0, brightness = 1.4, contrast = 0.1, saturation = -0.12, tint = Color3.fromRGB(205, 220, 255), bloom = 0.05, sunray = 0 },
}

local function updateLighting()
	local clock = Lighting.ClockTime
	local a, b = keyframes[1], keyframes[#keyframes]

	for i = 1, #keyframes - 1 do
		if clock >= keyframes[i].hour and clock <= keyframes[i + 1].hour then
			a, b = keyframes[i], keyframes[i + 1]
			break
		end
	end

	local t = math.clamp((clock - a.hour) / (b.hour - a.hour), 0, 1)

	Atmosphere.Density = a.density + (b.density - a.density) * t
	Atmosphere.Haze = a.haze + (b.haze - a.haze) * t
	Atmosphere.Glare = a.glare + (b.glare - a.glare) * t

	Lighting.Brightness = a.brightness + (b.brightness - a.brightness) * t

	ColorCorrection.Contrast = a.contrast + (b.contrast - a.contrast) * t
	ColorCorrection.Saturation = a.saturation + (b.saturation - a.saturation) * t
	ColorCorrection.TintColor = a.tint:Lerp(b.tint, t)

	Bloom.Intensity = a.bloom + (b.bloom - a.bloom) * t
	SunRays.Intensity = a.sunray + (b.sunray - a.sunray) * t
end

updateLighting()
Lighting:GetPropertyChangedSignal("ClockTime"):Connect(updateLighting)

local Camera = Workspace.CurrentCamera
if Camera then
	Camera.FieldOfView = 70
	Camera.FieldOfViewMode = Enum.FieldOfViewMode.Vertical
end

Features & Information

this isn't the first version i made but it's better and the first version is unreleased anyways
#Realistic#Lighting#Realism#Keyless#Universal

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts