Native Renderer

Workshop utilizes a proprietary, bare-metal rendering pipeline. It reads the RenderGraph to ensure pixel-perfect typographic precision, deterministic physics calculation, and broadcast-quality MP4 encoding without the latency of browser-based DOM rendering.

What the Renderer Does

The native renderer consumes a RenderGraph JSON and produces an H.264 MP4 file. Every value in the RenderGraph is pre-resolved by the compiler — the renderer performs no layout solving, no mood interpretation, and no spring physics computation. It draws exactly what the RenderGraph specifies.

The output is deterministic: the same RenderGraph always produces a pixel-identical video.

Performance

Metric Value
Render speed ~1–2 seconds per second of 1080p video
Memory per render ~300 MB
Boot time Milliseconds
Portability Linux, macOS (x86/arm64)

The lightweight resource footprint enables high concurrency on standard cloud infrastructure without specialized hardware.

Drawing Capabilities

Text — the most demanding subsystem. Full typographic pipeline with premium font support, word wrapping with pixel-accurate line breaking, auto-shrink-to-fit for bounding box overflow, case transforms, vertical centering, and optional stroke rendering.

Shapes — circle, square, line, ring, triangle, pentagon, hexagon, octagon. Configurable fill, stroke, opacity, and corner radius.

Charts — animated bar charts with dynamic scaling, axis labels, and reference lines.

Images — preloaded at initialization. Aspect-ratio-preserving scaling in contain mode.

Animation Engine

Each element carries pre-computed animation parameters from the compiler. The renderer calculates per-frame animation state (position, scale, opacity) based on whether the current time falls in the entrance phase, hold phase, or exit phase.

Entrance animations include cut, fade, rise, drop, push, scale, pop, bounce, cascade, and split — each modifying position, scale, and opacity differently. When the compiler provides pre-baked spring physics keyframes (motion curves), the renderer interpolates through them for physically accurate motion without a runtime spring solver.

Camera and Transitions

Five camera modes — still, breathe, drift, push-in, pull-out — are applied before element drawing. Scene transitions (cut, fade, dissolve) control inter-scene opacity.

Post-Processing

Optional post-processing effects are applied after element drawing: vignette (radial darkening at frame corners) and film grain (sparse noise texture). Intensity levels come from the mood's post-processing configuration in the RenderGraph.

Generative Geometry Backgrounds

In addition to solid colors and gradients, the renderer supports background: generative — mathematically drawn, brand-aware animated backgrounds that replace the need for B-roll video assets.

The compiler maps each mood to a procedural algorithm:

Mood Visual Character
calm Smooth overlapping waves, glacial motion
confident Structured geometric planes with parallax depth
elegant Concentric shapes rotating with golden-ratio spacing
dramatic Deep wireframe tunnel with neon glow
playful Floating geometric primitives with bouncy animation
urgent Bold grid of shapes pulsing in synchronized waves

All algorithms draw from the active ThemePack or mood palette, so generative backgrounds are always on-brand. They are resolution-independent, eliminate CDN costs for background assets, and work seamlessly with AI agents — background: generative requires no asset sourcing.

The user writes background: generative in their .ws script. The compiler resolves this to the correct visual algorithm based on the active mood. No configuration is required.

Audio Pipeline

Audio mixing is handled as a post-processing step after frame rendering. The compiler pre-computes ducking keyframes (volume reductions during speech windows), and the renderer applies them during encoding.

Error Handling

The renderer degrades gracefully. Missing fonts fall through a fallback chain by typographic category. Missing image assets are skipped silently. If the native renderer fails entirely, the server can fall back to an alternative rendering engine.

Next Steps