mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-25 18:47:42 -06:00
A zoomed view needs the pixels it shows at the zoom scale, not a whole-frame texture stretched over them. RenderRequest gains an optional PixelWindow of the virtual full output that max_w x max_h describes; only the window is materialized. It is Frame:🪟 the crop rectangle narrows to the window (flips as drawn), so sampling, masks, spots, red eye and the lens warp need no change. The post-crop vignette keeps the whole frame's geometry (Frame::view) and dehaze uses the whole frame's airlight (estimated on a 384 px render), so a window matches the same pixels of the full render. The GPU renderer declines windowed requests (CPU for now). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>