The world’s first — and, frankly, most unnecessary — real-time video soft-proofing engine.
Because somewhere, someone needs to know whether their car video is CMYK-safe for GRACoL 2006 Coated. That person is probably not you. But the proof is right there that jsColorEngine is fast enough to do real time video.
Left: original sRGB video. Right: every frame decoded, run through a full ICC soft-proof pipeline (sRGB → CMYK → sRGB) via a pre-built 3D CLUT, and blitted to canvas — in real time in Javascript wasm. no WebGL, no workers. Just Single thread JavaScript and a lookup table.
Why?
The headline is zero hot-path cost. The tetrahedral interpolator doesn’t know or care whether a LUT cell carries a soft-proof RGB image or video frame — it just blends 8 corners. All the profile maths amortises into a one-time ~50–100 ms LUT bake.
Budget: 720×1280 @ 30 fps =
27.6 MPx/s. The 3D int8 path already sits at
60–200 MPx/s — on a mid range x64 processor,
plenty of slack even after
drawImage round-trip overhead.
Demo value: “here’s what you video would look like printed frame by frame on a press, right now.” The Profile-swap dropdown makes the difference between GRACoL and ISO Coated visible in real-time — which is a thing colour-managed workflows normally can only show on stills, and only after a render-wait.
This is what happens when you realize you can and don't stop to think if you should. This quietly demonstrates that the engine is fast enough to do a genuinely silly thing at 40+ fps just because it can.
Why not WebGL? Real-time video LUT work in the browser usually reaches for a fragment shader — fast and proven. But a lot of jsColorEngine’s actual users don’t have a GPU at all: headless Node.js on a print-queue server, a containerised RIP, a CI step rendering proof previews, an AWS Lambda batch job. Shaders need a GPU, driver, and often a window context; WASM SIMD doesn’t. This demo runs the same kernel that would run on the server — the browser tab is just a convenient place to see it move.
Pick a sample clip in the controls; attribution is shown there.
System
Requires a modern browser with WebAssembly SIMD support (Chrome 91+, Firefox 89+, Safari 16.4+, Edge 91+) for full performance. Without SIMD the engine falls back to scalar WASM or pure JS — still works, but frame rate will drop.