Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 10:17
· 10 commits to main since this release

The first release: the engine as a library with a Rust API, a C ABI and a browser module, the reference hosts, and the
Framegen 2.0 extension built on it.

Added

  • The engine as the whole product in layers: the Core (Engine, Model, Session: two frames in, the frame at any
    phase out), the Stream (timestamped frames in, intervals out, with scene cut and held frame classification and the
    anime cadence), the Pacer (what to present on a display tick and what to generate, replayable from trace v1
    recordings). Reference hosts: a web page (examples/web) and a native player (examples/player).
  • Surfaces: the Rust API, the C ABI (flyhigh.h, libflyhigh) and the JavaScript classes (FhEngine, FhModel,
    FhSession, FhStream, FhPacer); Python (ctypes) and C++ (header only) bindings over the C ABI; a C example.
  • Options declared once with the Options derive; docs/options.md generated by flyhigh-dev options-doc and checked
    in CI.
  • Static protection for HUDs and subtitles, and the host's protection mask (protection_mask, write_mask).
  • D3D11 shared textures into the Vulkan device without a copy (interop::d3d11_shared_texture).
  • DX12 through the DXC compiler: the DLLs beside the library or EngineOptions::dxc_path, DeviceInfo::shader_compiler
    in the report; the Windows release archive carries them.
  • The bench suite: per-GPU baselines and tools/baseline.py --check with a 3% rule on times.
  • GPU costs from the frames themselves: Stream::push_timed / generate_timed (pushTimed / generateTimed in
    the browser) run the real work under timestamp queries; the reference web host feeds them to the Pacer.
  • The Pacer records its own trace v1 (record, trace, stop_recording; fh_pacer_record / fh_pacer_trace_json
    in C, record / trace / stopRecording in the browser), with live option changes as events a replay applies.
  • adapters.js next to the browser module: VideoSource, CanvasPresenter, TickSource, CostSampler,
    ReadbackNudge, warmUp, pacerDefaults; the reference web host is built from them.
  • Stream and Pacer options and inputs in the browser accept camelCase keys beside snake_case.
  • A release workflow on v* tags: the C library, header, bindings and model per platform, the browser module.

Changed

  • The browser module is built with a size-first profile: 1.02 MB, with a 1.3 MB budget in CI.
  • generate_timed measures the mid in video mode too (a cadence composite stays unmeasured), so a host in video mode
    gets its mid cost samples instead of the seed.
  • VideoSource (adapters.js) draws a frame whose size differs from the slot's through importExternalTexture, so a
    host can run the stream at the presentation size without a copy of its own; the 1:1 copy stays for matching sizes.
  • Pipelines compile on first use; warm_up compiles a session's kernels before the first frame.
  • Firefox hosts present at least 7 ms apart (the Pacer's min_present_interval_ms), the adapter's default.

Removed

  • The fh_* function families of the browser module (fh_create, fh_vid_*, fh_ext_*, fh_prepare*,
    fh_autotune, fh_tune_*, fh_set_*): the classes replace them; engine.autotune and the session's
    pairTimed / midTimed carry over what only they had.

Full Changelog: https://github.com/getflyhigh/flyhigh-engine/commits/v0.1.0

Full Changelog: https://github.com/getflyhigh/flyhigh-engine/commits/v0.1.0