Repository navigation
meetup.20260921
A 3h58m TiXL developer meet-up: a long walkthrough of the new output system — central outputs bound to displays, slices, physical surfaces measured in metres, straightening a venue photo and calibrating a projector from reference points, a full floor plan with pixel map for an immersive show — plus the new machine-learning beat detection, then a community half on planning a field-driven quadtree effect, dissecting a compute-shader point operator as a template, 3D text curves and fixing their broken tangents.
🆕 new feature · 🛠️ improvement · 📘 operator · 📝 walkthrough · 🧠 deep dive · 🍿 showcase · 🎯 planned · 💬 discussion ·
Chapters
- 0:00 📝 Warm-up: a scrolling text wipe (TileableNoise, DirectionalBlur, AnimVec2)
- 9:30 📝 A small test scene to route to an output (LoadObj, AdvancedFeedback, DetectEdges)
- 11:07 🆕 Retiring pinning, fixed resolutions and the screen manager
- 13:25 🆕 Central outputs: content bound to a display keeps rendering
- 16:05 🆕 Exporting without a wrapper op, and one render pipeline for player and editor
- 18:42 📝 The setup view: board, flow outliner, several setups per composition
- 20:15 🧠 Content, surfaces, outputs, machine-local bindings — and free mirroring
- 24:04 🆕 Resolution flows: display changes, smart 0×0 canvas, RenderTarget overrides
-
29:31
⚠️ Stretched content on a display, and rescaling it in output mode - 31:37 📝 Two side-by-side displays from one double-wide output and slices
- 35:27 🆕 The board in metres: floor line, prop figure, physical surfaces
- 37:32 📝 Mapping content onto surfaces, and simple corner-pin keystoning
- 41:44 🍿 Watching the projection live through a webcam (VideoDeviceInput, RemapColor)
- 44:53 🆕 Reference photos: trace a surface, straighten it, give its lines real lengths
- 50:53 📝 A band chase on one curtain (LinearGradient, Steps) via a slice region
- 56:05 🍿 Calibrating a projector by dragging reference points onto the real thing
- 1:06:00 🍿 Second try on a small table — and this time the mapping fits
- 1:16:30 🎯 An immersive venue: scaling the LPM Rome floor plan and tracing its walls
- 1:25:10 📝 An NDI output at the venue's full pixel map; naming the wall patches
-
1:30:15
⚠️ Previewing the mapping, and a projector-cam draw stage that isn't ready - 1:35:30 💬 Feedback round; setups stored in the project's Meta/Setups folder
- 1:41:00 🍿 Immersive test content: tori on radial points as an equirectangular room
- 1:44:05 💬 Knowing the physical space beats rebuilding it with nodes
- 1:47:18 🎯 Roadmap: projector blending, masks, warp points, brightness correction
- 1:52:30 💬 The board as a thinking canvas; calibrating lasers and LED strips
-
1:56:30
⚠️ Please test it; old demos need a central output, and the two export modes - 2:00:20 📝 Switching scenes on a bound output (PickTexture) and NDI inside the setup
- 2:06:46 🆕 Machine-learning beat detection: a 12 MB CPU model, live test and pitfalls
- 2:16:00 💬 Q&A: moving an effect between the feedback and post stages
- 2:19:20 💬 A field-driven quadtree subdivision effect
- 2:23:24 🧠 Cells as points: a grid, a field picking the level, separator points
- 2:32:36 📘 CollapseVertices and SubdivisionStretch as existing analogues
- 2:36:27 🧠 Why sparse point buffers are cheap, and why compacting needs a readback
- 2:38:11 📝 Duplicating SelectPointsWithSDF as a template, not CustomPointShader
- 2:42:36 🛠️ Dragging a symbol into another namespace or project
- 2:44:13 🧠 Anatomy of a compute-shader point operator
- 2:48:46 📝 Editing the .hlsl in VS Code with HLSL Tools
- 2:56:01 🧠 register(bN) slots, connection order and the field's injected code
-
3:01:35
⚠️ Image fields need their samplers; sampler states and point sampling - 3:07:00 📝 Snapping point positions to a raster from a shader parameter
- 3:14:46 🧠 Sampling the field per point, and log2 subdivision levels
- 3:18:20 📝 NaN scale as the separator flag
- 3:20:42 🧠 Spatial hashing, top-down vs. bottom-up, and when the CPU wins
- 3:29:30 🍿 3D text curves: even resampling, inner points and side loops
- 3:34:16 📝 Rebuilding broken tangents in a CustomVertexShader
-
3:40:43
⚠️ Why the tangents break: no tangent geometry attribute - 3:42:32 🍿 A blendable RepeatAtPoints, and stars from TransformSomePoints
- 3:45:00 💬 Deformable 3D text, flat bevels and the straight-skeleton algorithm
- 3:49:00 🎯 Linux port: the first Vulkan-rendered frame
- 3:50:40 💬 Geometry attributes and domains, Houdini-style; wrap-up
The user-facing documentation has moved to help.tixl.app. Edits made to pages on this wiki will be lost — please edit the sources under .help/docs/ in the main repo instead.
- Welcome
- Installation
- Introduction
- Basic concepts
- How TiXL works
- Video tutorials
- Keyboard shortcuts
- Exporting videos
- Exporting executables
- Live performances
- Presets and snapshots
- FAQ
- Operator reference
These pages stay here — they're for people building TiXL from source.
- Installing the dev build
- Coding conventions
- Operator conventions
- Developing operators
- Writing code ops
- Working with git
- Integration tests
- Manual testing plan
- Using RenderDoc
- Debugging the Player
- Visual Studio Code setup
- Standalone builds
- Release issues
- Audio roadmap
- Ideas for operators
- Transform gizmos
- Context variables
- Changing file-path format
- Updating the Home template
- Proposed breaking changes for main
- TiXL vs Tooll3
- Contributing
