-- FULL Shader System with Quality Slider -- Day / Sunset / Midnight | Toggleable | FPS Optimized | Draggable UI local Players = game:GetService("Players") local Lighting = game:GetService("Lighting") local UserInputService = game:GetService("UserInputService") local lp = Players.LocalPlayer -- ===== CLEAR OLD EFFECTS ===== for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("PostEffect") or v:IsA("Atmosphere") then v:Destroy() end end -- ===== EFFECTS ===== local Atmosphere = Instance.new("Atmosphere", Lighting) local Bloom = Instance.new("BloomEffect", Lighting) local ColorCorrection = Instance.new("ColorCorrectionEffect", Lighting) local SunRays = Instance.new("SunRaysEffect", Lighting) local DoF = Instance.new("DepthOfFieldEffect", Lighting) Atmosphere.Enabled = false Bloom.Enabled = false ColorCorrection.Enabled = false SunRays.Enabled = false DoF.Enabled = false -- ===== QUALITY SETTINGS ===== local function SetQuality(mode) if mode == "Low" then Bloom.Enabled = false SunRays.Enabled = false DoF.Enabled = false Atmosphere.Density = 0.15 elseif mode == "Medium" then Bloom.Intensity = 0.8 Bloom.Size = 32 SunRays.Intensity = 0.03 Atmosphere.Density = 0.25 DoF.Enabled = false elseif mode == "High" then Bloom.Intensity = 1.3 Bloom.Size = 48 SunRays.Intensity = 0.06 Atmosphere.Density = 0.35 DoF.Enabled = true DoF.FocusDistance = 60 DoF.InFocusRadius = 30 end end -- ===== TIME MODES ===== local function Day() Lighting.ClockTime = 14 Lighting.Brightness = 3 Lighting.OutdoorAmbient = Color3.fromRGB(140,140,140) ColorCorrection.TintColor = Color3.fromRGB(255,255,255) end local function Sunset() Lighting.ClockTime = 18.5 Lighting.Brightness = 2.5 Lighting.OutdoorAmbient = Color3.fromRGB(180,120,80) ColorCorrection.TintColor = Color3.fromRGB(255,200,160) end local function Midnight() Lighting.ClockTime = 0 Lighting.Brightness = 1.5 Lighting.OutdoorAmbient = Color3.fromRGB(25,25,45) ColorCorrection.TintColor = Color3.fromRGB(180,200,255) end -- ===== UI ===== local gui = Instance.new("ScreenGui", lp.PlayerGui) gui.ResetOnSpawn = false -- Open / Hide Button local openBtn = Instance.new("TextButton", gui) openBtn.Size = UDim2.new(0,110,0,40) openBtn.Position = UDim2.new(0,10,0,10) openBtn.Text = "SHADERS" openBtn.BackgroundColor3 = Color3.fromRGB(20,20,20) openBtn.TextColor3 = Color3.fromRGB(0,200,255) openBtn.BorderSizePixel = 0 -- Main Frame local main = Instance.new("Frame", gui) main.Size = UDim2.new(0,300,0,300) main.Position = UDim2.new(0,50,0,80) main.BackgroundColor3 = Color3.fromRGB(12,12,12) main.BorderColor3 = Color3.fromRGB(0,200,255) main.BorderSizePixel = 1 main.Visible = true -- Drag local dragging, dragStart, startPos main.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = i.Position startPos = main.Position end end) UserInputService.InputChanged:Connect(function(i) if dragging and i.UserInputType == Enum.UserInputType.MouseMovement then local delta = i.Position - dragStart main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) openBtn.MouseButton1Click:Connect(function() main.Visible = not main.Visible end) -- ===== BUTTON MAKER ===== local function ToggleButton(text, y, callback) local b = Instance.new("TextButton", main) b.Size = UDim2.new(0,260,0,32) b.Position = UDim2.new(0,20,0,y) b.BackgroundColor3 = Color3.fromRGB(25,25,25) b.TextColor3 = Color3.fromRGB(0,200,255) b.BorderSizePixel = 0 b.Text = text .. " : OFF" local state = false b.MouseButton1Click:Connect(function() state = not state b.Text = text .. " : " .. (state and "ON" or "OFF") callback(state) end) end -- ===== QUALITY SLIDER ===== local quality = {"Low","Medium","High"} local qIndex = 2 local qBtn = Instance.new("TextButton", main) qBtn.Size = UDim2.new(0,260,0,32) qBtn.Position = UDim2.new(0,20,0,20) qBtn.BackgroundColor3 = Color3.fromRGB(30,30,30) qBtn.TextColor3 = Color3.fromRGB(255,220,120) qBtn.BorderSizePixel = 0 qBtn.Text = "Quality : Medium" qBtn.MouseButton1Click:Connect(function() qIndex = qIndex + 1 if qIndex > #quality then qIndex = 1 end qBtn.Text = "Quality : " .. quality[qIndex] SetQuality(quality[qIndex]) end) -- ===== SHADER BUTTONS ===== ToggleButton("Day Sun", 65, function(v) if v then Day() end end) ToggleButton("Sunset", 105, function(v) if v then Sunset() end end) ToggleButton("Midnight", 145, function(v) if v then Midnight() end end) ToggleButton("Bloom", 185, function(v) Bloom.Enabled = v end) ToggleButton("Atmosphere", 225, function(v) Atmosphere.Enabled = v Atmosphere.Color = Color3.fromRGB(90,100,130) Atmosphere.Decay = Color3.fromRGB(30,35,60) end) ToggleButton("Sun Rays", 265, function(v) SunRays.Enabled = v end) print("🌞🌙 Shader UI + Quality Slider Loaded")