mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-14 19:26:56 -04:00
Render: type with transparency, a blend mode or raster effects keeps its layout between frames
Only type at full opacity, in Normal blending and without object effects took its glyph outlines from the geometry the renderer keeps for each type object. Type at less than 100% opacity or in a blend mode, and the art drawn for type with a drop shadow, glow, blur or other raster effect, were laid out again in every frame. draw_text now takes the geometry from text_geom_of when the type it draws is fx_owner, the node draw_arc is drawing, and the frame does not snap type to pixels. While the effect-art cache keeps type art, that art is drawn as fx_owner. The geometry is laid out again when the type is edited or the fonts change, and frames with Type Optimized anti-aliasing lay type out as before. On 8 threads at 2880 x 1800, a page of 1,000 type objects at 80% opacity takes 13 ms a frame instead of 23 ms, with the same pixels. Opaque type kept the layout of earlier frames when a symbol it shows as an inline graphic changed size and the document's inline graphics had not been resolved again. text_geom_of now lays type out without the cache when the text it is given is not the node's own, such as the copy that Document::inline_resolved makes with the new size. Docs: docs/target-app-parity.md.
This commit is contained in:
1 parent
a1a27636e1
commit
7975b07b22
5 files changed
+177
-3
No files matched your search
@@ -546,6 +546,8 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
|
||||
|
||||
- **Pattern tiles:** the renderer keeps a tile of each pattern for each scale it rasterizes the pattern at, until the tiles fill the tile cache's budget, and then drops the least recently used tiles first. Objects that show one pattern at different scales, such as a pattern scaled to 25% with Transform Pattern Tiles next to the same pattern at 100%, draw from tiles kept between frames.
|
||||
|
||||
- **Type with transparency or effects:** type at less than 100% opacity, in a blend mode other than Normal, or with raster effects such as a drop shadow keeps its glyph outlines between frames, as opaque type does, and is laid out again when it is edited or the fonts change. At 2880 × 1800 on 8 threads, a page of 1,000 type objects takes 13 ms a frame instead of 23 ms at 80% opacity, 31 ms instead of 41 ms in Multiply and 16 ms instead of 26 ms with a drop shadow, with the same pixels.
|
||||
|
||||
- **Texture redraws (#1257):** Craquelure, Mosaic Tiles and Stained Glass compare squared distances when finding their nearest cells; rounding/tie boundaries use the original distance ordering. Brute-force candidate tests and three 1800×1500 viewport comparisons preserve the old pixels. A CMYK rectangle move at 190.07%/DPI 1.5 is reproducible with `cargo test -p vectorcraft-render texture_drag_perf -- --ignored --nocapture`; idle-machine Windows interaction is still unverified.
|
||||
|
||||
- **Moving objects with raster effects (#1257):** during a drag or a dialog's preview, an object whose content only moved draws its cached drop shadows, outer glows and filtered content (Gaussian Blur, Feather and the Photoshop-style filters) from the rasters of an earlier frame at the nearest whole pixel, without running the effects again. The renderer first draws the moved content where the old content lies in its raster and compares the pixels. De-Interlace runs again. The frame after the drag runs the effects again and draws what a fresh renderer draws; on the desktop, the canvas renders that frame on the render worker. `texture_drag_perf` times a drag's frames and the frame after it.
|
||||
|
||||
Reference in new issue
Block a user