diff --git a/core/gfx/LiquidField.zig b/core/gfx/LiquidField.zig index 89631dc92..2b9268d38 100644 --- a/core/gfx/LiquidField.zig +++ b/core/gfx/LiquidField.zig @@ -275,10 +275,10 @@ fn opaqueWindow() bool { /// The app's glass at the window opacity this frame (`glass_look.inApp`), published by the app /// before anything draws: every field — dialogs, menus, drops — is drawn as it says, Apple's lens -/// on the one slider. Null (nothing published, a plugin's own window): the earlier glass, as each -/// field's own tint, lift and blur say. The precompiled Vulkan and D3D12 programs draw the earlier -/// glass whatever is published until they are compiled again from the HLSL (the commands are at -/// its top); the GLSL (the web) and the Metal draw the lens. +/// on the one slider. Null (nothing published: the web, a plugin's own window): the earlier glass, +/// as each field's own tint, lift and blur say. Every form of the program draws the lens — the +/// GLSL, the Metal, and the SPIR-V and DXIL compiled from the HLSL — as long as the last two are +/// compiled again whenever the HLSL changes (the commands are at its top). pub fn publishLook(slider_look: ?glass_look.InApp) void { if (dvui.current_window == null) return; if (slider_look) |l| dvui.dataSet(null, enabled_id, "_liquid_look", l) else dvui.dataRemove(null, enabled_id, "_liquid_look"); diff --git a/core/gfx/shaders/compiled/dxil/liquid_glass.fragment.dxil b/core/gfx/shaders/compiled/dxil/liquid_glass.fragment.dxil index ceb25f829..e8a82f9af 100644 Binary files a/core/gfx/shaders/compiled/dxil/liquid_glass.fragment.dxil and b/core/gfx/shaders/compiled/dxil/liquid_glass.fragment.dxil differ diff --git a/core/gfx/shaders/compiled/spv/liquid_glass.fragment.spv b/core/gfx/shaders/compiled/spv/liquid_glass.fragment.spv index ed2941c64..f9d667b32 100644 Binary files a/core/gfx/shaders/compiled/spv/liquid_glass.fragment.spv and b/core/gfx/shaders/compiled/spv/liquid_glass.fragment.spv differ diff --git a/docs/NATIVE_WINDOWS_PLAN.md b/docs/NATIVE_WINDOWS_PLAN.md index b09010216..75137dcac 100644 --- a/docs/NATIVE_WINDOWS_PLAN.md +++ b/docs/NATIVE_WINDOWS_PLAN.md @@ -534,10 +534,10 @@ coming back into a window. So fizzy tiles it itself, the way the OS does: unit-tested first), one Win32 subclass, no file-level state; materials and native layers on it. 5. **The materials library** (above), in this order: - **built (#227):** `core/gfx/glass_look.zig` with the native and in-app mappings, and the - in-app glass tuned to Apple's (the inward lens in GLSL, Metal and HLSL), on the slider. Still - to do: rebuild the SPIR-V and DXIL with shadercross, so Vulkan and D3D12 draw it too; skip the - blur pyramid for a clear lens, and the outward capture margin once the old programs are gone; - the separate dialog glass settings as advanced overrides; + in-app glass tuned to Apple's (the inward lens in GLSL, Metal and HLSL), on the slider; the + SPIR-V and DXIL rebuilt with shadercross (#242), so Vulkan and D3D12 draw it too. Still to do: + skip the blur pyramid for a clear lens, and the outward capture margin once the old programs + are gone; the separate dialog glass settings as advanced overrides; - macOS: **built (#227)** the main window and float windows on Liquid Glass (the colour under the lens and frost, beside SDL's view, on the slider) with a compact toolbar's 20-point corners (measured: none 17, compact 20.5, unified 27 — the user chose compact); still to do, diff --git a/docs/WINDOWS_LINUX_GLASS_PLAN.md b/docs/WINDOWS_LINUX_GLASS_PLAN.md index 9975452ee..01fcd75d5 100644 --- a/docs/WINDOWS_LINUX_GLASS_PLAN.md +++ b/docs/WINDOWS_LINUX_GLASS_PLAN.md @@ -1,8 +1,8 @@ # Native windows and glass on Windows and Linux -Status: in progress. Research under `docs/NATIVE_WINDOWS_PLAN.md`. Steps 3 (Windows menus and -dialogs as Acrylic popups) and 4 (the Linux window material) are built in PRs of their own, each -behind a flag; nothing else here is. +Status: in progress. Research under `docs/NATIVE_WINDOWS_PLAN.md`. Step 0 (the glass programs +compiled again) is done (#242). Steps 3 (Windows menus and dialogs as Acrylic popups) and 4 (the +Linux window material) are built in PRs of their own, each behind a flag; nothing else here is. An investigation, not yet a design anyone has agreed to. macOS has floats as OS windows by default, and on macOS 26 the OS draws a view drag's glass (`docs/POPOUT_WINDOWS_PLAN.md`, "P6"; @@ -80,14 +80,15 @@ Three things are lost against macOS 26: - **The outline is a frame late, or stepped.** On Windows the clip and the picture travel by different routes (below). On Wayland the region is in sync, but made of whole rectangles. -## Step 0 (both platforms): the glass programs are out of date +## Step 0 (both platforms): the glass programs compiled again — done (#242) -`core/gfx/shaders/compiled/{spv,dxil}` were last compiled in #206 (2026-10-03). -`liquid_glass.fragment.hlsl` changed in #227, and `LiquidField.publishLook` notes that the -precompiled Vulkan and D3D12 programs still draw the earlier glass. Until they are recompiled with -`shadercross` (the commands are at the top of the HLSL), Windows and Linux do not draw the lens or -the one-slider look even in-window. Recompiling them is cheap, and every comparison below assumes -it has been done. +`core/gfx/shaders/compiled/{spv,dxil}` were last compiled in #206 (2026-10-03), and +`liquid_glass.fragment.hlsl` changed in #227, so Windows and Linux drew the earlier glass even +in-window: no lens, and not the one-slider look. #242 compiled them again with `shadercross` (the +commands are at the top of the HLSL), with the DXC SDL_shadercross vendors (libsdl-org at +2c84a1c5, built with clang: built with GCC 13 it corrupts its heap compiling DXIL). That DXC +compiles #206's HLSL to #206's SPIR-V and DXIL byte for byte. Every comparison below assumes the +programs are current. ## Windows @@ -358,8 +359,8 @@ paths: Each step is useful by itself, and the spikes come before anything that depends on their answer. -1. **Recompile the glass programs** (SPIR-V and DXIL; step 0). Windows and Linux then draw the - current lens and slider in-window. +1. **Recompile the glass programs** (SPIR-V and DXIL; step 0). **Done (#242):** Windows and Linux + draw the current lens and slider in-window. 2. **Windows: float chrome and lifecycle** (P4): caption buttons in the float header, per-HWND `win32_titlebar` state, minimize and close with the main window, and the look checked on a hardware GPU. This is what lets `float_windows` default to on for Windows, as it does on macOS.