From 76c514cdf5e26ce58d661151aa3e0db00bf0dad1 Mon Sep 17 00:00:00 2001 From: bommerts <44821497+bommerts@users.noreply.github.com> Date: Wed, 21 Oct 2026 16:15:23 -0400 Subject: [PATCH] Keep the CPU canvas sharp at 100% zoom (#8321) --- ATTRIBUTION.md | 1 + crates/ui-egui/src/canvas.rs | 62 ++++-- .../src/canvas/pixel_alignment_tests.rs | 126 +++++++++++++ .../images/cpu-pixel-alignment/LICENSE-APACHE | 177 ++++++++++++++++++ docs/images/cpu-pixel-alignment/LICENSE-MIT | 21 +++ docs/images/cpu-pixel-alignment/README.md | 7 + docs/images/cpu-pixel-alignment/after.png | Bin 0 -> 35275 bytes docs/images/cpu-pixel-alignment/before.png | Bin 0 -> 42454 bytes 8 files changed, 381 insertions(+), 13 deletions(-) create mode 100644 crates/ui-egui/src/canvas/pixel_alignment_tests.rs create mode 100644 docs/images/cpu-pixel-alignment/LICENSE-APACHE create mode 100644 docs/images/cpu-pixel-alignment/LICENSE-MIT create mode 100644 docs/images/cpu-pixel-alignment/README.md create mode 100644 docs/images/cpu-pixel-alignment/after.png create mode 100644 docs/images/cpu-pixel-alignment/before.png diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index cbbbe069a5..a5fe5ba9e3 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -84,6 +84,7 @@ The other built-in ICC profiles and the generated LUT looks are produced by code | `docs/brand/` (all files) | ArtCraft name, wordmark and mark | ArtCraft Team | getartcraft.com | Not open source; trademarks of the ArtCraft Team, [`docs/brand/LICENSE-brand.txt`](docs/brand/LICENSE-brand.txt) | | `docs/images/photocraft-*.jpg` | PhotoCraft screenshots | PhotoCraft contributors (UI) | Rendered offscreen with the `snapshot` example | MIT OR Apache-2.0 (UI); the artwork in each is public domain, listed below | | `docs/images/preferences-apply-*.png` | Preferences before and after adding Apply (no artwork) | PhotoCraft contributors | PhotoCraft control-channel capture and offscreen `snapshot` example | MIT OR Apache-2.0 | +| `docs/images/cpu-pixel-alignment/*.png` | CPU canvas pixel alignment, before and after #8321 | PhotoCraft contributors | Original synthetic noise rendered with the offscreen `snapshot` example; see the adjacent README | MIT OR Apache-2.0, adjacent `LICENSE-MIT` and `LICENSE-APACHE` | Artwork shown in the screenshots (all public domain, via Wikimedia Commons; details in [`docs/images/SOURCES.md`](docs/images/SOURCES.md)): diff --git a/crates/ui-egui/src/canvas.rs b/crates/ui-egui/src/canvas.rs index 7b05bffce8..135db88dce 100644 --- a/crates/ui-egui/src/canvas.rs +++ b/crates/ui-egui/src/canvas.rs @@ -938,14 +938,46 @@ impl ViewXform { /// The main canvas's mapping for the active document as last laid out (inside the rulers). pub fn active(app: &PhotocraftApp) -> Option { let v = app.ui.views.get(app.session.active_index()?)?; - Some(Self { - rect: crate::rulers::content_rect(app, app.last_canvas_rect), - zoom: v.zoom / app.canvas_ppp(), - center: v.center, - flip: app.ui.view.flip_horizontal, - rotation: v.rotation, - aspect: app.ui.view.display_aspect(), - }) + Some( + Self { + rect: crate::rulers::content_rect(app, app.last_canvas_rect), + zoom: v.zoom / app.canvas_ppp(), + center: v.center, + flip: app.ui.view.flip_horizontal, + rotation: v.rotation, + aspect: app.ui.view.display_aspect(), + } + .pixel_aligned(app.canvas_ppp()), + ) + } + + /// At integer physical magnifications, texel edges must land on display pixel edges. + /// Keep this derived camera shared by images, overlays and input without changing the saved pan. + fn pixel_aligned(mut self, ppp: f32) -> Self { + if !ppp.is_finite() || ppp <= 0.0 || !self.zoom.is_finite() || self.zoom <= 0.0 || !self.rotation.is_finite() || self.rotation.abs() >= 1e-8 { + return self; + } + let scale = vec2(self.zoom_x(), self.zoom) * ppp; + if !scale.is_finite() + || scale.x.round() < 1.0 + || scale.y.round() < 1.0 + || (scale.x - scale.x.round()).abs() > 1e-5 + || (scale.y - scale.y.round()).abs() > 1e-5 + { + return self; + } + let origin = self.to_screen(0.0, 0.0); + let physical = origin * ppp; + if !physical.is_finite() { + return self; + } + let aligned = pos2(physical.x.round(), physical.y.round()) / ppp; + let offset = self.unmap_vec((aligned - origin) / self.zoom); + let center = [self.center[0] - offset.x, self.center[1] - offset.y]; + if center.iter().all(|v| v.is_finite()) { + self.center = center; + } + self } fn sincos(self) -> (f32, f32) { @@ -3144,7 +3176,7 @@ pub fn canvas_view(app: &mut PhotocraftApp, ui: &mut egui::Ui, idx: usize, rect: let flip = app.ui.view.flip_horizontal; // Canvas geometry (ViewXform, ViewParams, painter rects) is in egui points. let point_zoom = view.zoom / ppp; - let xf = ViewXform { rect, zoom: point_zoom, center: view.center, flip, rotation: view.rotation, aspect }; + let xf = ViewXform { rect, zoom: point_zoom, center: view.center, flip, rotation: view.rotation, aspect }.pixel_aligned(ppp); let pixel_grid = app.ui.view.shows(app.ui.view.show.pixel_grid); let response = ui.allocate_rect(rect, Sense::click_and_drag()); let stroke_dismissal = primary && crate::shape_stroke_ui::dismiss_from_canvas(app, &response); @@ -3197,8 +3229,8 @@ pub fn canvas_view(app: &mut PhotocraftApp, ui: &mut egui::Ui, idx: usize, rect: zoom: view.zoom * k as f32 / ppp, // A size-changing preview grows around the old image center; keep the view's pan. center: [ - view.center[0] / k as f32 + (preview_size[0] as f32 - original_size[0] as f32) / 2.0, - view.center[1] / k as f32 + (preview_size[1] as f32 - original_size[1] as f32) / 2.0, + xf.center[0] / k as f32 + (preview_size[0] as f32 - original_size[0] as f32) / 2.0, + xf.center[1] / k as f32 + (preview_size[1] as f32 - original_size[1] as f32) / 2.0, ], rotation: if view.rotation.is_finite() { view.rotation.to_radians() } else { 0.0 }, shadow: { @@ -3221,7 +3253,7 @@ pub fn canvas_view(app: &mut PhotocraftApp, ui: &mut egui::Ui, idx: usize, rect: doc: doc.id.0, doc_size: [doc.size.width, doc.size.height], zoom: point_zoom, - center: view.center, + center: xf.center, rotation: if view.rotation.is_finite() { view.rotation.to_radians() } else { 0.0 }, shadow: { let t = crate::theme::Tokens::get(&ctx); @@ -4007,7 +4039,7 @@ pub fn canvas_view(app: &mut PhotocraftApp, ui: &mut egui::Ui, idx: usize, rect: ctx.request_repaint(); } } - let xf = if crop_camera { ViewXform { center: view.center, rotation: view.rotation, ..xf } } else { xf }; + let xf = if crop_camera { ViewXform { center: view.center, rotation: view.rotation, ..xf }.pixel_aligned(ppp) } else { xf }; let (img_rect, beyond, layer_edges) = painted.unwrap_or_else(|| paint_canvas(app, ui, &view, xf)); if primary && !(hand_pan && response.dragged()) { // The transform preview is image content: it goes under the grid and guides, which @@ -9045,3 +9077,7 @@ mod display_memo_tests; #[cfg(test)] #[path = "canvas/blend_viewport_tests.rs"] mod blend_viewport_regression; + +#[cfg(test)] +#[path = "canvas/pixel_alignment_tests.rs"] +mod pixel_alignment_tests; diff --git a/crates/ui-egui/src/canvas/pixel_alignment_tests.rs b/crates/ui-egui/src/canvas/pixel_alignment_tests.rs new file mode 100644 index 0000000000..1f6859f8b1 --- /dev/null +++ b/crates/ui-egui/src/canvas/pixel_alignment_tests.rs @@ -0,0 +1,126 @@ +use super::*; + +fn xform(ppp: f32, physical_size: [f32; 2]) -> ViewXform { + ViewXform { + rect: Rect::from_min_size(pos2(40.0 / ppp, 100.0 / ppp), vec2(physical_size[0] / ppp, physical_size[1] / ppp)), + zoom: 1.0 / ppp, + center: [1500.0, 1000.0], + flip: false, + rotation: 0.0, + aspect: 1.0, + } +} + +fn assert_pixel_edges(xf: ViewXform, ppp: f32) { + for [x, y] in [[0.0, 0.0], [1.0, 1.0], [17.0, 29.0], [1500.0, 1000.0]] { + let p = xf.to_screen(x, y) * ppp; + assert!((p.x - p.x.round()).abs() < 0.001, "x edge: {p:?}, ppp {ppp}"); + assert!((p.y - p.y.round()).abs() < 0.001, "y edge: {p:?}, ppp {ppp}"); + } +} + +#[test] +fn actual_pixels_align_texel_edges_in_odd_viewports_at_every_display_scale() { + for ppp in [1.0, 1.25, 1.5, 2.0] { + for size in [[523.0, 470.0], [524.0, 471.0], [523.0, 471.0]] { + let before = xform(ppp, size); + let aligned = before.pixel_aligned(ppp); + assert_pixel_edges(aligned, ppp); + let delta = (aligned.to_screen(0.0, 0.0) - before.to_screen(0.0, 0.0)) * ppp; + assert!(delta.x.abs() <= 0.501 && delta.y.abs() <= 0.501); + let again = aligned.pixel_aligned(ppp); + assert!((again.to_screen(0.0, 0.0) - aligned.to_screen(0.0, 0.0)).length() < 0.001); + let back = aligned.to_doc(aligned.to_screen(123.25, 45.75)); + assert!((back[0] - 123.25).abs() < 0.001 && (back[1] - 45.75).abs() < 0.001); + } + } +} + +#[test] +fn integer_magnification_aligns_flipped_and_aspect_corrected_views() { + for flip in [false, true] { + let before = ViewXform { + rect: Rect::from_min_size(pos2(-20.25, 30.25), vec2(523.0, 471.0)), + zoom: 2.0, + center: [1500.125, 999.75], + flip, + aspect: 1.5, + ..xform(1.0, [523.0, 471.0]) + }; + assert_pixel_edges(before.pixel_aligned(1.0), 1.0); + } + let even = xform(1.0, [524.0, 470.0]); + assert_eq!(even.pixel_aligned(1.0).center, even.center); +} + +#[test] +fn fractional_zoom_rotation_and_invalid_scales_preserve_the_camera() { + let original = xform(1.0, [523.0, 471.0]); + for zoom in [0.25, 0.5, 0.75, 1.25, 1.5, 2.5, 0.0, -1.0, f32::NAN, f32::INFINITY] { + let xf = ViewXform { zoom, ..original }; + assert_eq!(xf.pixel_aligned(1.0).center, xf.center); + } + for rotation in [0.2, 30.0, 90.0, f32::NAN] { + let xf = ViewXform { rotation, ..original }; + assert_eq!(xf.pixel_aligned(1.0).center, xf.center); + } + for ppp in [0.0, -1.0, f32::NAN, f32::INFINITY] { + assert_eq!(original.pixel_aligned(ppp).center, original.center); + } + let aspect = ViewXform { aspect: 1.2, ..original }; + assert_eq!(aspect.pixel_aligned(1.0).center, aspect.center); +} + +#[test] +fn active_transform_uses_the_same_alignment_without_changing_saved_pan() { + let mut app = PhotocraftApp::new(photocraft_engine::Session::new(), crate::Services::default()); + app.run("file.new", serde_json::json!({"width": 3000, "height": 2000})).unwrap(); + app.sync_views(); + for ppp in [1.0, 1.25, 1.5, 2.0] { + app.ppp = ppp; + app.last_canvas_rect = xform(ppp, [523.0, 471.0]).rect; + app.ui.views[0].center = [1500.0, 1000.0]; + app.ui.views[0].zoom = 1.0; + let before = app.ui.views[0].center; + let active = ViewXform::active(&app).unwrap(); + assert_pixel_edges(active, ppp); + assert_eq!(app.ui.views[0].center, before); + } +} + +#[test] +fn cpu_canvas_paints_its_image_on_physical_pixel_edges() { + for ppp in [1.0, 1.25, 2.0] { + let mut app = PhotocraftApp::new(photocraft_engine::Session::new(), crate::Services::default()); + app.run("file.new", serde_json::json!({"width": 64, "height": 64, "background": "white"})).unwrap(); + app.sync_views(); + app.ppp = ppp; + app.ui.views[0].zoom = 1.0; + app.ui.views[0].center = [32.0, 32.0]; + app.ui.views[0].fit_pending = false; + app.ui.views[0].doc_size = [64, 64]; + let ctx = egui::Context::default(); + ctx.set_pixels_per_point(ppp); + let tex = ensure_texture(&mut app, &ctx, 0, None).unwrap().0; + let view = app.ui.views[0].clone(); + let saved_center = view.center; + let mut out = ctx.run_ui(egui::RawInput { screen_rect: Some(Rect::from_min_size(Pos2::ZERO, vec2(900.0, 600.0))), ..Default::default() }, |ui| { + canvas_view(&mut app, ui, 0, xform(ppp, [523.0, 471.0]).rect, view.clone(), false); + }); + out.textures_delta.clear(); + let mesh = out + .shapes + .iter() + .find_map(|s| match &s.shape { + egui::Shape::Mesh(mesh) if mesh.texture_id == tex => Some(mesh), + _ => None, + }) + .expect("CPU document image quad"); + assert_eq!(mesh.vertices.len(), 4); + for vertex in &mesh.vertices { + let p = vertex.pos * ppp; + assert!((p.x - p.x.round()).abs() < 0.001 && (p.y - p.y.round()).abs() < 0.001, "ppp {ppp}: {p:?}"); + } + assert_eq!(app.ui.views[0].center, saved_center); + } +} diff --git a/docs/images/cpu-pixel-alignment/LICENSE-APACHE b/docs/images/cpu-pixel-alignment/LICENSE-APACHE new file mode 100644 index 0000000000..f433b1a53f --- /dev/null +++ b/docs/images/cpu-pixel-alignment/LICENSE-APACHE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/docs/images/cpu-pixel-alignment/LICENSE-MIT b/docs/images/cpu-pixel-alignment/LICENSE-MIT new file mode 100644 index 0000000000..68facca4cf --- /dev/null +++ b/docs/images/cpu-pixel-alignment/LICENSE-MIT @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 ArtCraft Team and the PhotoCraft contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/docs/images/cpu-pixel-alignment/README.md b/docs/images/cpu-pixel-alignment/README.md new file mode 100644 index 0000000000..30c3edd40e --- /dev/null +++ b/docs/images/cpu-pixel-alignment/README.md @@ -0,0 +1,7 @@ +# CPU canvas pixel alignment (#8321) + +Original 200 × 200 pixel crops at screen coordinates (200, 250)–(400, 450) from 900 × 600 offscreen renders at display scale 1. The scene is a white 1024 × 768 RGB document with 60% monochromatic Add Noise, viewed at Actual Pixels through the CPU canvas (`--safe-gpu`). No external artwork is used. + +`before.png` shows the half-pixel horizontal offset. `after.png` shows the aligned canvas and is byte-for-byte equal to the GPU canvas crop. Their grayscale standard deviations are 17.4105 and 24.6821 respectively. The 901-pixel-wide control stays sharp. + +The source document fits the offscreen WARP adapter texture limit, so reduced-texture sampling does not mask the pixel-alignment comparison. These captures are original PhotoCraft assets, licensed MIT OR Apache-2.0 (the license files are alongside them). diff --git a/docs/images/cpu-pixel-alignment/after.png b/docs/images/cpu-pixel-alignment/after.png new file mode 100644 index 0000000000000000000000000000000000000000..43b407fce316597c83a0b52658838481364accb4 GIT binary patch literal 35275 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

o0_o13b@IH9w?sp)Rh~ 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%0AT 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