--[[ Shader Universal Roblox v1 (PARTE 1/3) - by tolopo637883 e Cauabrandao44 - Otimizado para executor (mobile/PC) ]] -- Proteção contra múltiplas execuções if game:GetService("CoreGui"):FindFirstChild("UniversalShaderV1") then game:GetService("CoreGui").UniversalShaderV1:Destroy() end local Lighting = game:GetService("Lighting") local Workspace = game:GetService("Workspace") local Players = game:GetService("Players") local RunService = game:GetService("RunService") local CoreGui = game:GetService("CoreGui") --[[ ==== UI de Controle (minimizar/maximizar, reload, feedback) ==== ]] local function CreateControlUI() local sg = Instance.new("ScreenGui") sg.Name = "UniversalShaderV1" sg.Parent = CoreGui sg.IgnoreGuiInset = true sg.ResetOnSpawn = false local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 60, 0, 60) btn.Position = UDim2.new(1, -70, 1, -70) btn.AnchorPoint = Vector2.new(0,0) btn.BackgroundColor3 = Color3.fromRGB(30, 40, 60) btn.TextColor3 = Color3.fromRGB(255,255,255) btn.Text = "☀️" btn.Font = Enum.Font.GothamBold btn.TextScaled = true btn.Parent = sg local open = true btn.MouseButton1Click:Connect(function() open = not open if open then btn.Text = "☀️" Lighting.Brightness = 3 else btn.Text = "🌙" Lighting.Brightness = 0.7 end end) return sg end CreateControlUI() --[[ ==== Remover Efeitos Antigos (limpeza) ==== ]] local function ClearEffects() for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("PostEffect") or v:IsA("Atmosphere") or v:IsA("Sky") then pcall(function() v:Destroy() end) end end end ClearEffects() --[[ ==== Setup de Céu/Ambiente ==== ]] local function SetupSky() -- Gradiente de céu minimalista mas bonito Lighting.ColorShift_Top = Color3.fromRGB(170,180,210) Lighting.ColorShift_Bottom = Color3.fromRGB(235,240,255) Lighting.Ambient = Color3.fromRGB(180,180,200) Lighting.OutdoorAmbient = Color3.fromRGB(210,210,230) Lighting.Brightness = 3 Lighting.FogColor = Color3.fromRGB(200,205,220) Lighting.FogStart = 90 Lighting.FogEnd = 500 Lighting.ClockTime = 16.5 Lighting.EnvironmentDiffuseScale = 0.7 Lighting.EnvironmentSpecularScale = 0.5 Lighting.GlobalShadows = true Lighting.ShadowSoftness = 0.15 Lighting.Technology = Enum.Technology.ShadowMap -- Atmosphere local at = Instance.new("Atmosphere", Lighting) at.Density = 0.28 at.Offset = 0.4 at.Color = Color3.fromRGB(225,235,255) at.Decay = Color3.fromRGB(175,200,255) at.Glare = 0.5 at.Haze = 1.1 -- (Opcional) Skybox minimalista (sem textura) local sk = Instance.new("Sky", Lighting) sk.SkyboxBk = "" sk.SkyboxDn = "" sk.SkyboxFt = "" sk.SkyboxLf = "" sk.SkyboxRt = "" sk.SkyboxUp = "" end SetupSky() --[[ ==== Pós-processamento ==== ]] local function SetupPostEffects() -- Bloom local bloom = Instance.new("BloomEffect", Lighting) bloom.Intensity = 0.38 bloom.Size = 60 bloom.Threshold = 1.1 -- Sun Rays local sunrays = Instance.new("SunRaysEffect", Lighting) sunrays.Intensity = 0.13 sunrays.Spread = 0.23 -- ColorCorrection local color = Instance.new("ColorCorrectionEffect", Lighting) color.TintColor = Color3.fromRGB(230, 240, 255) color.Brightness = 0.06 color.Contrast = 0.13 color.Saturation = 0.17 -- Blur (suave conforme pedido) local blur = Instance.new("BlurEffect", Lighting) blur.Size = 1 end SetupPostEffects() --[[ ==== Materiais e Iluminação de Peças ==== ]] local function BeautifyParts() local ok, err = pcall(function() for _,obj in ipairs(Workspace:GetDescendants()) do if obj:IsA("BasePart") and not obj:IsA("Terrain") then obj.Material = Enum.Material.SmoothPlastic obj.Reflectance = 0.06 obj.Color = obj.Color:Lerp(Color3.fromRGB(220,225,240), 0.07) end end end) end BeautifyParts() --[[ ==== Pulsação do ambiente (dinamismo sutil) ==== ]] local clockBase = 16.5 local fogBase = 500 RunService.RenderStepped:Connect(function(dt) local t = tick() Lighting.ClockTime = clockBase + math.sin(t/6)*0.7 Lighting.FogEnd = fogBase + math.sin(t/4)*20 end) --[[ ==== Feedback visual (notificação rápida) ==== ]] local function QuickToast(txt) local sg = CoreGui:FindFirstChild("UniversalShaderV1") if not sg then return end if sg:FindFirstChild("Toast") then sg.Toast:Destroy() end local toast = Instance.new("TextLabel") toast.Name = "Toast" toast.Size = UDim2.new(0, 240, 0, 56) toast.Position = UDim2.new(0.5,-120,0.1,0) toast.BackgroundColor3 = Color3.fromRGB(35,60,110) toast.TextColor3 = Color3.fromRGB(255,255,255) toast.Font = Enum.Font.GothamBold toast.TextScaled = true toast.Text = txt toast.BackgroundTransparency = 0.09 toast.ZIndex = 33 toast.Parent = sg game:GetService("Debris"):AddItem(toast,2.5) end QuickToast("Universal Shader v1: Ativado!") --[[ ==== Hot reload ==== ]] local function HotReload() local sg = CoreGui:FindFirstChild("UniversalShaderV1") if not sg then return end sg.MouseButton2Click:Connect(function() ClearEffects() SetupSky() SetupPostEffects() BeautifyParts() QuickToast("Shader recarregado!") end) end --[[ ==== Dicas rápidas para usuários mobile ==== ]] if UserInputService and UserInputService.TouchEnabled then QuickToast("Shader otimizado para Mobile!") end local Lighting = game:GetService("Lighting") local Workspace = game:GetService("Workspace") local Players = game:GetService("Players") local RunService = game:GetService("RunService") local CoreGui = game:GetService("CoreGui") local UserInputService = game:GetService("UserInputService") --[[ ==== DepthOfField dinâmico & Cinematic ==== ]] local function SetupDepthOfField() -- Remove antigos for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("DepthOfFieldEffect") then v:Destroy() end end local dof = Instance.new("DepthOfFieldEffect", Lighting) dof.Enabled = true dof.InFocusRadius = 18 dof.FocusDistance = 35 dof.FarIntensity = 0.18 dof.NearIntensity = 0.09 -- Foco dinâmico em primeira pessoa (mobile/PC) RunService.RenderStepped:Connect(function() local cam = Workspace.CurrentCamera if cam then dof.FocusDistance = math.clamp((cam.Focus.Position - cam.CFrame.Position).Magnitude, 14, 52) end end) end SetupDepthOfField() --[[ ==== Modo Noturno alternável (UI) ==== ]] local function SetupNightModeUI() local sg = CoreGui:FindFirstChild("UniversalShaderV1") if not sg or sg:FindFirstChild("NightBtn") then return end local btn = Instance.new("TextButton") btn.Name = "NightBtn" btn.Size = UDim2.new(0, 62, 0, 50) btn.Position = UDim2.new(1, -72, 1, -140) btn.BackgroundColor3 = Color3.fromRGB(25, 25, 40) btn.TextColor3 = Color3.fromRGB(200,200,255) btn.Text = "🌙" btn.Font = Enum.Font.GothamBold btn.TextScaled = true btn.Parent = sg local night = false btn.MouseButton1Click:Connect(function() night = not night if night then Lighting.ClockTime = 0 Lighting.Brightness = 1.1 Lighting.FogColor = Color3.fromRGB(70,70,110) Lighting.ColorShift_Top = Color3.fromRGB(40,40,70) Lighting.ColorShift_Bottom = Color3.fromRGB(90,105,160) for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("Atmosphere") then v.Color = Color3.fromRGB(55,65,120) v.Decay = Color3.fromRGB(10,10,30) v.Density = 0.35 end if v:IsA("ColorCorrectionEffect") then v.Brightness = -0.02 v.Contrast = 0.08 v.Saturation = 0.19 v.TintColor = Color3.fromRGB(170,190,255) end end btn.Text = "🌞" else Lighting.ClockTime = 16.5 Lighting.Brightness = 3 Lighting.FogColor = Color3.fromRGB(200,205,220) Lighting.ColorShift_Top = Color3.fromRGB(170,180,210) Lighting.ColorShift_Bottom = Color3.fromRGB(235,240,255) for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("Atmosphere") then v.Color = Color3.fromRGB(225,235,255) v.Decay = Color3.fromRGB(175,200,255) v.Density = 0.28 end if v:IsA("ColorCorrectionEffect") then v.Brightness = 0.06 v.Contrast = 0.13 v.Saturation = 0.17 v.TintColor = Color3.fromRGB(230,240,255) end end btn.Text = "🌙" end end) end SetupNightModeUI() --[[ ==== ColorCycle: ambiente muda suavemente entre tons ==== ]] local ColorCycleT = 0 RunService.RenderStepped:Connect(function(dt) ColorCycleT = (ColorCycleT + dt*0.12) % 6.28 local base = math.abs(math.sin(ColorCycleT)) local cc = nil for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("ColorCorrectionEffect") then cc = v end end if cc then cc.TintColor = Color3.new(0.85+0.12*base, 0.9+0.09*base, 1) cc.Contrast = 0.13 + 0.06*base cc.Saturation = 0.17 + 0.08*base end -- Atmosphere também cicla levemente for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("Atmosphere") then v.Density = 0.27+0.03*base end end end) --[[ ==== Adaptação de Fog e Bloom conforme ambiente ==== ]] local function DynamicFogBloom() local bloom = nil for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("BloomEffect") then bloom = v end end RunService.RenderStepped:Connect(function() if Workspace.CurrentCamera then local camY = Workspace.CurrentCamera.CFrame.Position.Y Lighting.FogEnd = 480 + camY/1.5 if bloom then bloom.Intensity = 0.33 + math.clamp((camY-20)/120,0,0.2) end end end) end DynamicFogBloom() --[[ ==== Adaptação Mobile (FPS e efeitos) ==== ]] local function MobileAdapt() if UserInputService.TouchEnabled then -- Reduz efeitos para mobile fraco for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("BloomEffect") then v.Size = 36 end if v:IsA("SunRaysEffect") then v.Intensity = 0.09 end if v:IsA("BlurEffect") then v.Size = 1 end if v:IsA("DepthOfFieldEffect") then v.InFocusRadius = 10 end end Lighting.Brightness = 2.1 end end MobileAdapt() --[[ ==== Toaster de status (notificações do shader) ==== ]] local function Toast(txt) local sg = CoreGui:FindFirstChild("UniversalShaderV1") if not sg then return end if sg:FindFirstChild("Toast") then sg.Toast:Destroy() end local toast = Instance.new("TextLabel") toast.Name = "Toast" toast.Size = UDim2.new(0, 250, 0, 54) toast.Position = UDim2.new(0.5,-125,0.13,0) toast.BackgroundColor3 = Color3.fromRGB(22,22,28) toast.TextColor3 = Color3.fromRGB(255,255,255) toast.Font = Enum.Font.GothamBold toast.TextScaled = true toast.Text = txt toast.BackgroundTransparency = 0.15 toast.ZIndex = 33 toast.Parent = sg game:GetService("Debris"):AddItem(toast,2.3) end Toast("Parte 2: NightMode & efeitos dinâmicos!") --[[ ==== Hotkey para NightMode rápido (F4) ==== ]] UserInputService.InputBegan:Connect(function(inp,gp) if gp then return end if inp.KeyCode == Enum.KeyCode.F4 then local btn = CoreGui:FindFirstChild("UniversalShaderV1") and CoreGui.UniversalShaderV1:FindFirstChild("NightBtn") if btn then btn:Activate() end end end) local Lighting = game:GetService("Lighting") local Workspace = game:GetService("Workspace") local Players = game:GetService("Players") local RunService = game:GetService("RunService") local CoreGui = game:GetService("CoreGui") local UserInputService = game:GetService("UserInputService") --[[ ==== Vignette Effect (borda escura sutil) ==== ]] local function SetupVignette() -- Remove antigos if workspace:FindFirstChild("UniversalShaderVignette") then workspace.UniversalShaderVignette:Destroy() end -- Usando parte transparente para fake vignette local cam = Workspace.CurrentCamera if not cam then return end local part = Instance.new("Part") part.Name = "UniversalShaderVignette" part.Size = Vector3.new(0.1,0.1,0.1) part.Transparency = 1 part.Anchored = true part.CanCollide = false part.Locked = true part.Parent = workspace local sg = Instance.new("SurfaceGui") sg.Adornee = part sg.Face = Enum.NormalId.Front sg.AlwaysOnTop = true sg.LightInfluence = 0 sg.Name = "VignetteSG" sg.Parent = part local frame = Instance.new("Frame") frame.Size = UDim2.new(1.5,0,1.5,0) frame.Position = UDim2.new(-0.25,0,-0.25,0) frame.BackgroundTransparency = 1 frame.BackgroundColor3 = Color3.new(0,0,0) frame.BorderSizePixel = 0 frame.Parent = sg local img = Instance.new("ImageLabel") img.Size = UDim2.new(1,0,1,0) img.BackgroundTransparency = 1 img.Image = "rbxassetid://2715125466" -- Suave img.ImageColor3 = Color3.fromRGB(6,6,22) img.ImageTransparency = 0.89 img.Parent = frame -- Atualiza posição RunService.RenderStepped:Connect(function() local cam = Workspace.CurrentCamera if cam and part then part.CFrame = cam.CFrame * CFrame.new(0,0,-5) end end) end SetupVignette() --[[ ==== Highlight dinâmico (ao clicar/tocar em objetos) ==== ]] local LastHighlight = nil local function SetupHighlight() if not Workspace.CurrentCamera then return end local sg = CoreGui:FindFirstChild("UniversalShaderV1") if not sg then return end local highlight = Instance.new("Highlight") highlight.FillColor = Color3.fromRGB(255,240,120) highlight.OutlineColor = Color3.fromRGB(100,70,30) highlight.FillTransparency = 0.77 highlight.OutlineTransparency = 0.3 highlight.Parent = Workspace LastHighlight = highlight -- Click/touch para destacar local function tryHighlight(target) if target and target:IsA("BasePart") then highlight.Adornee = target highlight.Enabled = true else highlight.Adornee = nil highlight.Enabled = false end end -- Mouse/touch handler UserInputService.InputBegan:Connect(function(input,gp) if gp then return end if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then local cam = Workspace.CurrentCamera if not cam then return end local mouse = Players.LocalPlayer:GetMouse() local ray = cam:ScreenPointToRay(mouse.X, mouse.Y) local hit = Workspace:FindPartOnRay(ray) tryHighlight(hit) end end) end SetupHighlight() --[[ ==== Pulsação e filtros HDR fake ==== ]] local t0 = tick() RunService.RenderStepped:Connect(function(dt) local tt = tick()-t0 -- Pulsação leve de contraste for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("ColorCorrectionEffect") then v.Contrast = 0.13 + 0.02*math.sin(tt*1.05) v.Brightness = 0.06 + 0.04*math.abs(math.cos(tt*0.95)) end end -- Atmosphere brilho for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("Atmosphere") then v.Glare = 0.5 + 0.08*math.abs(math.sin(tt*0.7)) end end end) --[[ ==== Reflexos locais e peças especiais ==== ]] local function EnhanceReflective() pcall(function() for _,obj in ipairs(Workspace:GetDescendants()) do if obj:IsA("BasePart") and obj.Reflectance < 0.2 then if obj.Material == Enum.Material.Metal or obj.Material == Enum.Material.Glass then obj.Reflectance = 0.18 elseif obj.Material == Enum.Material.SmoothPlastic then obj.Reflectance = 0.10 end end end end) end EnhanceReflective() --[[ ==== HDR Fake: overlay com ImageLabel ==== ]] local function SetupHDR() local sg = CoreGui:FindFirstChild("UniversalShaderV1") if not sg then return end if sg:FindFirstChild("HDRFrame") then sg.HDRFrame:Destroy() end local img = Instance.new("ImageLabel") img.Name = "HDRFrame" img.Size = UDim2.new(1,0,1,0) img.Position = UDim2.new(0,0,0,0) img.BackgroundTransparency = 1 img.ZIndex = 50 img.Image = "rbxassetid://10591477410" img.ImageColor3 = Color3.fromRGB(255,255,255) img.ImageTransparency = 0.91 img.Parent = sg end SetupHDR() --[[ ==== Efeito sonoro ambiente (opcional) ==== ]] local function SetupSoundscape() -- Remove antigo for _,v in ipairs(Workspace:GetChildren()) do if v:IsA("Sound") and v.Name == "UniversalShaderAmbience" then v:Destroy() end end local s = Instance.new("Sound") s.Name = "UniversalShaderAmbience" s.SoundId = "rbxassetid://9127034423" -- som ambiente suave s.Volume = 0.09 s.Looped = true s.Parent = Workspace -- Só toca se não existir outra música tocando local function isOtherPlaying() for _,v in ipairs(Workspace:GetChildren()) do if v:IsA("Sound") and v ~= s and v.IsPlaying and v.Playing and v.Volume > 0.1 then return true end end return false end RunService.Heartbeat:Connect(function() if not isOtherPlaying() then s.Playing = true else s.Playing = false end end) end SetupSoundscape() --[[ ==== Botão para resetar/atualizar shader ==== ]] local function AddReloadBtn() local sg = CoreGui:FindFirstChild("UniversalShaderV1") if not sg or sg:FindFirstChild("ReloadBtn") then return end local btn = Instance.new("TextButton") btn.Name = "ReloadBtn" btn.Size = UDim2.new(0, 64, 0, 44) btn.Position = UDim2.new(1, -76, 1, -210) btn.BackgroundColor3 = Color3.fromRGB(25, 65, 40) btn.TextColor3 = Color3.fromRGB(220,255,220) btn.Text = "⟳" btn.Font = Enum.Font.GothamBold btn.TextScaled = true btn.Parent = sg btn.MouseButton1Click:Connect(function() -- Limpa e reexecuta todas as partes do shader for _,v in ipairs(Lighting:GetChildren()) do if v:IsA("PostEffect") or v:IsA("Atmosphere") or v:IsA("Sky") then v:Destroy() end end if workspace:FindFirstChild("UniversalShaderVignette") then workspace.UniversalShaderVignette:Destroy() end if sg:FindFirstChild("HDRFrame") then sg.HDRFrame:Destroy() end SetupVignette() SetupHDR() SetupSoundscape() AddReloadBtn() -- Reaplica efeitos das partes 1 e 2 (requerem estarem carregadas) print("Shader recarregado!") end) end AddReloadBtn() -- aproveita o shader :D