mirror of
https://github.com/storytold/effectcraft.git
synced 2026-11-11 16:33:01 -06:00
Merge pull request #688 from MatejKozlovsky/gpu-resident-effects
This commit is contained in:
@@ -861,6 +861,19 @@ impl<'a> Renderer<'a> {
|
||||
Region::Full
|
||||
}
|
||||
|
||||
/// Whether `layer`'s processed buffer (source → masks → effects) is cached and the same as
|
||||
/// one frame earlier: drawing it from the layer cache (an accelerator uploads it once) beats
|
||||
/// re-running its effects every frame.
|
||||
pub fn layer_is_static(&self, ctx: &EvalCtx, layer: &Layer) -> bool {
|
||||
if self.cache.is_none() {
|
||||
return false;
|
||||
}
|
||||
let (scale, draft, blur) = (self.raster_scale(ctx, layer), self.opts.draft, self.mb_on(ctx, layer));
|
||||
let prev = ctx.time - ctx.comp.frame_rate.frame_duration();
|
||||
let now = cache::layer_key(ctx, layer, scale, draft, blur);
|
||||
now.is_some() && now == cache::layer_key(&ctx.at(prev), layer, scale, draft, blur)
|
||||
}
|
||||
|
||||
/// Rasterisation scale of a layer's source: the output scale, or — for text and shape layers,
|
||||
/// which are always continuously rasterised (#390, #751), and Continuously Rasterize vector
|
||||
/// footage — the output scale times the layer's on-screen scale (quarter-octave steps, rounded
|
||||
|
||||
Reference in New Issue
Block a user