openpencil/tests
Danila Poyarkov a9a1f9ac1f
Shadow rendering performance: per-node SkPicture cache (#25)
* Replace saveLayer with MaskFilter for drop shadows

Drop shadows now draw directly with MaskFilter.MakeBlur instead of
saveLayer + ImageFilter. Eliminates per-shadow offscreen buffer
allocation, significantly improving render throughput for scenes
with many shadowed nodes.

Text shadows still use saveLayer (MaskFilter can't be applied to
text glyphs individually).

Benchmark: 50 shadow nodes render at 1.55ms/frame (scene change).

* Cache per-node SkPictures for effect rendering

Nodes with visible effects (shadows, blurs) are recorded into
individual SkPictures and replayed on subsequent scene redraws.
Only the modified node re-records; unchanged shadow nodes replay
from cache.

- MaskFilter.MakeBlur for drop shadows instead of saveLayer
- Reusable effectLayerPaint and cached ImageFilters/MaskFilters
- invalidateNodePicture() called on node update
- invalidateAllPictures() on font load; invalidateScenePicture()
  preserves node cache for scene-only invalidation
- Shadow benchmark: 50 nodes at 1.47ms/frame (scene change)

* Update changelog with shadow rendering performance improvements
2026-03-03 11:37:01 +03:00
..
e2e Shadow rendering performance: per-node SkPicture cache (#25) 2026-03-03 11:37:01 +03:00
engine Cache effect ImageFilters and reuse layer paint 2026-03-03 10:12:02 +03:00
figma Playwright visual regression testing with Figma CDP reference 2026-02-28 07:32:15 +03:00
fixtures Add .fig test fixtures (LFS) and fix O(n²) import bottleneck 2026-03-01 09:55:07 +03:00
helpers Fix silent rendering crash, no-chrome test mode, error detection 2026-02-28 08:39:19 +03:00