
Texture Sources
Three nodes that create textures from nothing — LoadImage for files, SolidColor for flat fills, and NoiseTexture for procedural Perlin, Simplex, and Worley patterns.
Read the storyBuilt in the open
145 posts of what shipped, what broke, and what got deleted on the way to 1.0. Numbered in order; start anywhere.

Three nodes that create textures from nothing — LoadImage for files, SolidColor for flat fills, and NoiseTexture for procedural Perlin, Simplex, and Worley patterns.
Read the story
Lux gets a GPU-resident texture processing engine — handle-based allocation, free-list pooling, shader caching, and a declarative op system that keeps plugins completely decoupled from wgpu.
Read the story
Four performance improvements that boil down to one lesson: stop copying things you don't need to copy. Arc-wrapped layers, zero-alloc output maps, borrowed spread slices, and a wire drag fix.
Read the story
A deep code review found 39 issues, a 274KB font was being copied every frame, circles were made of 360 line segments, and five unwrap() calls were lurking in the render pipeline. We fixed all of it.
Read the story
A big session: 6 new shape primitives, inline documentation for every node and 203 pins, smarter tooltips, z-ordered nodes, search-at-cursor, a Filter node, and an adversarial review that caught 14 issues before users could.
Read the story
A new Filter node lets you keep only the elements you want from a spread using a boolean mask. Wire a comparison node into the mask and you've got conditional data flow.
Read the story
Proper z-ordering, smarter tooltips, a disappearing inspector, search that opens where you're looking, and a theme system that replaces every magic number.
Read the story
110 nodes and 203 pins now carry structured documentation — summaries, descriptions, tags, cross-references, and per-pin help text — all the way from source code to the editor UI and a machine-readable JSON export.
Read the story
Equal, Greater, Less, InRange, And, Or, Not, Xor. The decision-making layer of the node graph.
Read the story
Memory across frames. Feedback loops, named state transitions, and keyframed values.
Read the story
Add, Subtract, Multiply, Divide, Sin, Cos, Lerp, SmoothStep, Map, and 33 more. Polymorphic, type-preserving, NaN-safe.
Read the story
Counter, Select, Switch, Toggle, FlipFlop, Sequencer, SampleAndHold. The logic layer that ties animation together.
Read the story
Timer, Metro, Delay, Debounce, Throttle, OnChange. When things happen matters as much as what happens.
Read the story
Raw data is jagged. These nodes make everything smooth, bouncy, or shaped exactly how you want.
Read the story
The heartbeat of any patch. Three oscillator nodes that make things move.
Read the story
I tore apart the eval loop and rebuilt it. Pre-allocated buffers, cached adjacency maps, borrowed NodeInfo. No allocations in the hot path.
Read the story
I stopped building features and fixed the foundation. Crate boundaries, structured logging, headless GPU testing.
Read the story
Double-tap Shift. Find anything. Create nodes, jump to existing ones, run commands. The fastest way to do anything in Lux.
Read the story
Wire selection with glow, Alt+drag scissors, and undo/redo. The small interactions that make an editor feel real.
Read the story
What if you never wrote a loop again? One wire carries [10, 20, 30, 40, 50]. Every node downstream evaluates per-element automatically.
Read the story
Four ways to see your output. Because live performance doesn't care about your editor layout.
Read the story
egui panels, a node canvas, pin tooltips, wire highlights. Am I now a UX designer????!!!!
Read the storywgpu + Vello + a blit pipeline. Getting the first shape rendered was harder than expected.
Read the story
First week of Lux. Nodes, pins, wires, a graph evaluator, and 462 tests. Here's how the core engine came together.
Read the story
Starting Lux, a cross-platform visual programming system for all of us creative coders, installation makers, and visual people. Have to start somewhere.
Read the story