Releases: repsac/luxel
Release list
v0.1.0·#32
Luxel v0.1.0 · #32
A teaching-focused release. The headline is the Scratchpad, a GLSL expression REPL for "print-debugging" shader math, plus pixel-pinning tools that tie the Inspector, an on-canvas crosshair, and the Scratchpad to one chosen pixel. Adds a four-pane grid layout and SHA256 checksums after packaging. Existing .luxel.json files load as-is; scenes that use the Scratchpad pane or the 2x2 grid require this build or newer.
Scratchpad
- New Scratchpad view (add it from any slot's view dropdown): type a GLSL expression and see its value at the pinned pixel, evaluated through the real
naga/wgpupath so results match the live shader. - All scene uniforms (
iResolution,iTime, the camera uniforms,iObjectPosition) andgl_FragCoordare in scope, prefilled from the current scene; the pixel andiTimeare overridable in the header. - Store and reuse values with
name = <expr>; they snapshot and replay on later lines. Tabautocompletes built-ins, uniforms, variables, and swizzles (type.after a vector);↑/↓move the suggestion list or walk expression history.- Commands:
:builtinslists what's available,:help <name>shows a signature,:vars/:resetmanage variables,:clearclears the scrollback. - Color-like results show a swatch, and calling a built-in with the wrong arguments reports its real signature instead of a generic "unknown function" error.
Pixel Inspector
- Pin a specific pixel from the Inspector's Pin (x, y) field, or hover the render and press Cmd+Shift+I (macOS) / Alt+Shift+I (Windows/Linux) to pin the pixel under the cursor. The readout stays on that pixel even with interactive Inspect off and when the cursor leaves the canvas.
- The Inspector shows both the integer Pixel index and the FragCoord (the fragment center, so pixel (0,0) is
gl_FragCoord(0.5, 0.5)), alongside UV and color. The Scratchpad'sgl_FragCoorduses the same pixel-center value, sogl_FragCoord.xy / iResolution.xymatches the inspector UV. - The Crosshair toggle in the Render header marks the pinned pixel on the canvas with clearly visible guide lines (a dark halo under a bright line, readable over light or dark content) and a center box. The pinned pixel is shared with the Scratchpad. It is resize-aware: if the pixel falls outside the current render, the Inspector says so and the crosshair hides until it is back in range.
- Inspect and the crosshair default to off and are per-session, so the viewport starts clean every launch.
Layout
- New 2 x 2 Grid layout preset: Render and Editor on top, Scratchpad and Inspector below. The two columns share one vertical splitter so they stay aligned, with a single horizontal splitter between the rows. Each pane keeps its own view dropdown.
UI and Accessibility
- One font-zoom hotkey,
Cmd/Ctrl++/-/0, scales whichever panel the cursor is over (Editor, Inspector, Console, Scratchpad), replacing the separate per-view bindings. Cmd+I(macOS) /Alt+I(Windows/Linux) toggles the pixel inspector.- Button tooltips reworded to explain each control's use-case; tooltips that were missing one now have it.
Packaging
build.py --releaseandpackage.pynow print the SHA256 of each installer deliverable (.dmg / .msi / .exe / ...) after a successful build, so release checksums are available without a separate step.
Platform
- macOS (Apple Silicon, Metal) and Windows (DX12/Vulkan).
- Bundle ID
com.edcaspersen.Luxel. MIT licensed.
Builds
- macOS (Apple Silicon)
Luxel_0.1.0_aarch64.dmg- Checksum:
de2e45248b0fabece9baa6712d36c207049bfc82d63c6174e52211ed726b0c2c
- Windows (x64)
Luxel_0.1.0_x64-setup.exe- Checksum:
dbbe5df4c7b0a7304a30cdbee2b3e8e3d08d5e22d259a8c130c3b28bc00e49d2
v0.1.0·#29
Luxel v0.1.0 · #29
A stability-and-workflow pass over the shader workbench: more faithful Shadertoy color, a real save/open story for scene files, persistent layouts, and a long list of UI and accessibility fixes. No scene-file schema changes, so existing .luxel.json files load as-is.
Rendering
- Fixed an sRGB double-gamma bug. The offscreen target is now
Rgba8Unorm, so Shadertoy shaders that gamma-correct themselves no longer render washed out. Renders are intentionally a touch darker than before; that's the corrected, Shadertoy-matching output. iMouseis now live. Left-drag in the render view drives it using Shadertoy conventions (xyis the drag position,zwis the click position, sign flips on release). The Inspector shows the current value.- Oversized renders are rejected with a clear error instead of crashing the app, and the renderer's internal caches survive a failed frame instead of wedging.
Camera
- Interrupted drags (OS gestures, window drags) no longer leave the camera or splitters stuck following the cursor.
Editor
- Compatibility switching with unsaved edits now uses a native confirm dialog instead of the unreliable in-webview
window.confirm.
Pixel Inspector
- The Pixel section keeps the last sampled values when the cursor leaves the canvas instead of going blank. The hover and off states show as a small note next to the section title.
- New shortcut: Cmd+I (macOS) or Alt+I (Windows/Linux) toggles the inspector.
Layout
- Set any layout as the default (presets or your own arrangement). It's restored on startup and for new scenes.
- A scene's panel layout is saved inside the scene file and restored on open, so a specific scene can carry its own arrangement without it becoming a global preset.
- Saving a custom layout uses an inline name field instead of a browser prompt.
Scene files
- Opening a scene now actually tracks the file. The toolbar shows its name and Save writes back to it instead of prompting for a name every time.
- Save As: hold Shift while clicking Save, or press Cmd/Ctrl+Shift+S, to choose a new destination.
- Closing the window with unsaved changes now prompts to Save / Don't save / Cancel instead of discarding your work.
UI and Accessibility
- Keyboard focus rings (
:focus-visible) on all controls. Modals are proper dialogs with focus management and labeled close buttons. Toggle buttons exposearia-pressed. - Raised several low-contrast text colors to meet WCAG AA.
- Fixed the render-panel header controls scattering across the bar.
- Errors in the console now show real messages instead of
[object Object], and a status-line polling leak was fixed.
Platform and Security
- Enabled a strict Content-Security-Policy and removed unused filesystem and shell capabilities and plugins, trimming the app's attack surface.
Platform
- macOS (Apple Silicon, Metal) and Windows (DX12/Vulkan)
- Bundle ID:
com.edcaspersen.Luxel - MIT licensed
Builds
- Windows
-
- Luxel_0.1.0_x64_en-US.msi
-
- Checksum:
0DE9CD2328F9DE9A197B392FBAA41B2B4CAE3FA37C13C974D3047AF1D810F695
- Checksum:
- macOS
-
- Luxel_0.1.0_aarch64.dmg
-
- Checksum:
32309da8e184e9455126ce279b1e2ddfad17a690bfcff80396ceea49e4af4fe3
- Checksum:
v0.1.0·#26
Luxel v0.1.0
First public release. Luxel is a local GLSL shader workbench built on Tauri 2, wgpu, and naga. Write Shadertoy-style or raw GLSL fragment shaders, see them render in real time, and inspect the output with camera tools and a debug console.
What's in this release
Rendering
- wgpu-based offscreen renderer with naga GLSL-to-WGSL cross-compilation
- Shadertoy (
mainImage) and raw GLSL (main) compatibility modes - Auto and manual render modes - auto re-renders on every change, manual lets you control when the GPU fires
- Render quality multiplier (1/4x to 2x) for tuning speed vs. fidelity during navigation
- PNG export of the current render
Camera
- Orbit, pan, dolly controls in the render canvas
- Camera bookmarks (save/restore/delete positions)
- Frustum overlay toggle
- Full camera state exposed to shaders via uniforms (iCameraPosition, iCameraFov, iCameraForward, iCameraRight, iCameraUp)
Timeline
- Frame scrubbing with iTime and iFrame uniforms
- Playback controls with forward/reverse and configurable FPS
- Loop toggle for continuous playback
Editor
- GLSL syntax highlighting via CodeMirror
- Scalable font size (Cmd/Ctrl + +/-)
- Built-in example shaders for both Shadertoy and raw GLSL modes
- Shader compilation errors mapped back to user source line numbers
Pixel Inspector
- Toggle a footer bar in the render view showing pixel coordinates, resolution, UV, and RGB under the cursor
- Dedicated Inspector panel view with uniforms, camera state, pixel data, and render stats
- Scalable inspector font (Shift+Cmd/Ctrl + +/-) for screencasting
Layout
- Flexible slot-based panel system with 7 layout presets
- Drag-to-resize splitters between panels
- Per-slot view picker (render, editor, console, inspector, empty)
- Window state persistence across sessions
Platform
- macOS (Apple Silicon, Metal) and Windows (DX12/Vulkan)
- Bundle ID:
com.edcaspersen.Luxel - MIT licensed
Builds
- Windows
-
- Luxel_0.1.0_x64_en-US.msi
-
- Checksum:
c7d095751e51ae4762665c888fb441bce5f31d2bf9b4605c0dfc3094e6815fa1
- Checksum:
- macOS
-
- Luxel_0.1.0_aarch64.dmg
-
- Checksum:
f542959121d86d2b312025f42a7953af605ab3d782b66a520ccf89f608b7d657
- Checksum: