Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lightpainting

Create long-exposure light paintings from selected video ranges. The repository contains two supported applications:

  • apps/web: an installable, offline-capable PWA using WebCodecs and WebGPU.
  • apps/native: the original C++23 and OpenCV prototype.

The PWA processes local files entirely on the device. Video frames are decoded sequentially and accumulated into an rgba8unorm WebGPU render target using per-channel max blending.

Web App

Requirements:

  • Bun 1.3 or newer.
  • Current desktop Chrome or Edge.
  • WebGPU and hardware acceleration enabled.
bun install
bun run dev

Production checks:

bun run lint
bun run test
bun run build
bun run e2e

The production build is written to apps/web/dist. Pushes to master deploy that directory to GitHub Pages.

Supported Media

Input support depends on the browser's WebCodecs decoders and includes common MP4, MOV, WebM, and MKV files. The application checks the exact codec and profile before processing.

Still exports support PNG and JPEG. Progressive animation exports are capability-driven:

  • H.264 in MP4 for compatibility.
  • AV1 in WebM when the browser exposes an encoder.
  • VP9 in WebM as an open fallback.

AV2 is not exposed by WebCodecs and is not currently supported.

The first release processes SDR 8-bit video. HDR sources are decoded through the browser's SDR conversion path and display a warning.

Native App

Requirements:

  • CMake 3.28 or newer.
  • C++23 compiler.
  • OpenCV.
cmake -S . -B build -DOpenCV_DIR=/path/to/opencv
cmake --build build --config Release

Run lightpainting with an optional video path as its first argument.

Privacy

Videos are never uploaded. The service worker caches only the application shell, and IndexedDB stores export preferences rather than source media.

About

Dynamic Long-Time Exposure for Creative Art

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages