Mike-Solar b06c4fbbb6 nodes: real polygon and mask implementations on the GPU
Polygon and mask previously pushed null texture handles ('fake'
implementations). They now generate real ShaderJobPayloads and render
through the existing GPU shader pipeline:

- shaderfx: std140 uniform array support (Vec4Array(N)) — the parser
  accepts 'uniform <type> <name>[N];' declarations, translate()
  re-emits them as vec4[N] block members with per-element std140
  offsets, and pack_uniforms writes array items from the new
  NodeValue::Vec4Array value, padding short arrays to the declared N.

- polygon: value() collects the inherited points array (row element
  keys 'points_in[i]', else the node's own per-element values — an
  unconnected array resolves to the default pentagon via
  GetValueAtTime parity) and pushes a ShaderJobPayload; the 'rgb'
  fragment shader rasterizes the closed point loop with an odd-even
  fill in screen space (center-translated, y-flipped to match the C++
  point convention) and outputs color_in inside / transparent outside.
  The CPU QPainterPath generate_frame stays a documented no-op.

- mask: value() pushes a single ShaderJobPayload whose new 'mask'
  fragment shader folds the whole C++ chain into one GPU pass — base
  texture multiplied by the polygon matte, optional invert, and the
  optional feather gaussian softens the matte during sampling (the
  separable blur.frag h/v iterations as a one-pass product,
  density-normalized, radius capped at 16 px).

- Tests: translate/pack array coverage in shaderfx, GPU end-to-end
  rasterization of the pentagon (center white, corner transparent),
  mask multiply/invert/feather on real frames, and updated oak-node
  payload assertions. oak-render 178, oak-node 440, oak-app 272 lib
  tests pass.
2026-09-02 16:59:49 +08:00
2024-05-13 14:49:53 +02:00

Oak Video Editor CI

中文

Oak Video Editor is a free non-linear video editor for Windows, macOS, and Linux.

This project is a community-maintained fork of Olive Video Editor. screen

NOTE: Oak Video Editor is alpha software and is considered highly unstable. While we highly appreciate users testing and providing usage information, please use at your own risk.

Binaries

The binary can be downloaded here:

v0.4.2

v0.4.1

v0.4.0

Building from Source

See docs/build.md for build instructions on Windows (MSYS2), Linux (Debian/Ubuntu, Fedora, Arch Linux), and macOS.

Documentation

Roadmap

Version Theme Core Deliverables Boundary Notes
0.3 Plugin Architecture Milestone Production-ready OpenFX host support Not about quantity of plugins, but "any OFX plugin loads without crashing"
0.4 Color, Audio & Performance .cube/.3dl support, scopes (waveform/vectorscope/histogram), three-way color wheels, waveform auto-sync, BWF timecode sync, audio meters (LUFS/VU), proxy media workflow, hardware-accelerated export (NVENC/VideoToolbox), batch render queue Combines the previous 0.4-0.6 scope into one usability milestone: color workflow, audio sync, and 4K/8K performance
0.5 Animation, Tracking & Collaboration Bézier keyframe curve editor, basic point tracking, image stabilizer, full multicam angle switching, OpenTimelineIO, EDL/XML import/export Combines the previous 0.7-0.8 scope into one timeline/interchange milestone
0.6 Stability Milestone Project file format freeze (backward compatibility promise), crash recovery, autosave, memory optimization "Feature freeze" testing period before 1.0
1.0 Production Ready Complete documentation, installers, known issues list, community support channels Declared "ready for serious projects"
S
Description
No description provided
Readme GPL-3.0
95 MiB
Languages
Rust 82.2%
HTML 11.9%
C 4.8%
C++ 0.7%
Shell 0.4%