Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions core/gfx/LiquidField.zig
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
Binary file modified core/gfx/shaders/compiled/dxil/liquid_glass.fragment.dxil
Binary file not shown.
Binary file modified core/gfx/shaders/compiled/spv/liquid_glass.fragment.spv
Binary file not shown.
8 changes: 4 additions & 4 deletions docs/NATIVE_WINDOWS_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
25 changes: 13 additions & 12 deletions docs/WINDOWS_LINUX_GLASS_PLAN.md
Original file line number Diff line number Diff line change
@@ -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";
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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.
Expand Down
Loading