EffectSpec
A declaration of an effect: pure data describing intent rather than realization.
Contains no platform types and no rendering logic. An EffectResolver turns one spec into a platform object, once per pipeline.
Implementations must carry a stable id, which is what names the effect in a plan and in the canonical pipeline order.
Implementations must also compare by value, which a data class or @Poko gives for free. filmstrip decides whether a composition changed, and whether a cached thumbnail is still good, by comparing specs. An implementation left on identity equality reports every rebuilt edit as different, so setting an equal composition rebuilds the graph and every thumbnail cache key changes.
Properties
Whether this effect runs ahead of the overlays in EffectStage.Composite.
Whether this effect needs SDR frames to run on.
Which scopes this effect may be declared in.
Where in the pipeline this effect runs.