Skip to main content
WindUI supports two distinct visual effects for the window background: Acrylic (frosted glass blur) and Transparency (semi-transparent solid background). They can be used independently or together.

Acrylic

The acrylic effect gives the window a frosted-glass appearance by rendering a 3D Part behind the ScreenGui and applying a DepthOfFieldEffect to the Lighting service. This mimics the Windows 11 / macOS vibrancy blur found in native OS windows.
Acrylic requires an executor environment that supports 3D Part manipulation behind the screen GUI. It does not work in Roblox Studio and may not work in every executor. Test in your target environment before shipping.

Enable at window creation

Pass Acrylic = true in your CreateWindow config. WindUI calls Acrylic.init() immediately after the window is created.
local Window = WindUI:CreateWindow({
    Title = "My Hub",
    Folder = "myhub",
    Acrylic = true,
})
Acrylic.init() does the following:
  1. Creates a DepthOfFieldEffect (FarIntensity = 0, NearIntensity = 1, InFocusRadius = 0.1) and adds it to Lighting.
  2. Registers any pre-existing DepthOfFieldEffect objects so they can be re-enabled when acrylic is disabled.
  3. Disables those existing effects to avoid conflicts.

Toggle at runtime

Call WindUI:ToggleAcrylic(bool) at any time to enable or disable the effect without recreating the window.
-- Enable
WindUI:ToggleAcrylic(true)

-- Disable
WindUI:ToggleAcrylic(false)
Internally this sets Window.AcrylicPaint.Model.Transparency to 0.98 (visible) or 1 (hidden) and calls Acrylic.Enable() / Acrylic.Disable() accordingly.
-- Example: toggle with a button
MyTab:Button({
    Title = "Toggle Acrylic",
    Icon = "",
    Justify = "Center",
    Callback = function()
        local isOn = WindUI.Window.Acrylic
        WindUI:ToggleAcrylic(not isOn)
    end,
})

AcrylicPaint object

Window.AcrylicPaint is the internal paint object created by Paint.lua. Its key members are:
MemberDescription
AcrylicPaint.FrameThe root Frame layered behind the window content.
AcrylicPaint.ModelThe Part model whose Transparency controls blur visibility.
AcrylicPaint.AddParentFunction to re-parent the blur model to a new container.
AcrylicPaint.SetVisibilityFunction to show or hide the blur model.

Performance considerations

The acrylic effect places a 3D Part into the Workspace behind the camera. This is a known exploit technique and may:
  • Cause minor frame-rate impact on low-end devices.
  • Be flagged or broken by future Roblox engine updates.
  • Not work in executors that restrict 3D part creation.
Provide the WindUI:ToggleAcrylic(false) option in your hub settings so users can turn it off if needed.

Transparency

The transparency option makes the window background semi-transparent without the blur layer. It is lighter-weight than acrylic and works in all environments.

Enable at window creation

local Window = WindUI:CreateWindow({
    Title = "My Hub",
    Folder = "myhub",
    Transparent = true,
})

Control the transparency amount

WindUI.TransparencyValue is a number between 0 (fully opaque) and 1 (fully transparent). The default is 0.15.
WindUI.TransparencyValue = 0.25 -- slightly more transparent
TransparencyValue is clamped to [0, 1] via math.clamp when WindUI initialises. Set it before or immediately after calling CreateWindow.

Toggle at runtime

Window:ToggleTransparency(bool) switches the transparent effect on or off after the window has been created.
-- Enable transparency
Window:ToggleTransparency(true)

-- Disable transparency (opaque background)
Window:ToggleTransparency(false)
-- Example: let users toggle transparency
MyTab:Toggle({
    Title = "Transparent Background",
    Value = WindUI:GetTransparency(),
    Callback = function(state)
        Window:ToggleTransparency(state)
    end,
})
WindUI:GetTransparency() returns the current WindUI.Transparent boolean, which is useful for setting the initial toggle state.

Using Acrylic and Transparency together

You can enable both at once. Acrylic provides the blur layer while Transparent = true makes the solid background panel semi-transparent, letting more of the blur bleed through.
local Window = WindUI:CreateWindow({
    Title = "My Hub",
    Folder = "myhub",
    Acrylic     = true,
    Transparent = true,
})

WindUI.TransparencyValue = 0.2

Build docs developers (and LLMs) love