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
- How Workshop Works — where the renderer fits in the architecture
- The RenderGraph — what the renderer consumes
- Render API — submitting render jobs