Skip to content

wiedymi/subframe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Subframe

GitHub Twitter Email Discord Support me

Subframe is a subtitle renderer that renders Subforge SubtitleDocument directly and targets libass visual parity for ASS/SSA on web and Bun. The core is CPU-rendered and deterministic; GPU backends only composite bitmaps.

Status

  • Early but working. Visual parity is focused on the documented scope in docs/GOALS.md.
  • WebGL and WebGPU backends are available; the CPU path remains the source of truth.

Features

  • Deterministic, fixed-point (1/64 px) core rendering.
  • libass-style raster + post filters (outline/blur/shadow).
  • WebGL/WebGPU compositors with atlas-less uploads per layer (easy to extend later).
  • Trace tooling for debug and parity analysis.

Playground

bun playground/index.html

Default backend selection order: WebGPU → WebGL → CPU.

Build

bun run build

Outputs ESM bundle to dist/.

Parity quickstart (smoke)

  1. Build libass (submodule): tools/ref/build_libass.sh
  2. Build the render helper (see tools/ref/README.md)
  3. Run the smoke parity test:
bun run test:golden:smoke -- --trace-on-fail

Repository layout

src/            # Renderer core + backends
playground/     # Local demo UI
docs/           # Goals, architecture, perf notes
tools/          # Parity and diff tooling
test/           # Fixtures and golden data
refs/           # Reference submodules (libass, subforge, text-shaper)

Submodules

This repo uses reference submodules for implementation parity research:

git submodule update --init --recursive

See refs/README.md for details.

License

MIT. See LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published