catbot
c169986835
perf(font): cache per-codepoint advances in font units ( #57 )
...
Font::GetLineWidth called stbtt_GetCodepointHMetrics for every glyph on
every invocation. InputField_HitTestCursor rescans the whole field once
per character, making caret hit-testing O(n²) in HMetrics lookups.
Memoise advances per Font via Font::AdvanceUnits: ASCII in a flat array,
the rest in a map. Advances are cached in unscaled font *units* and
rescaled per call — Glyph::advance in the FontAtlas is baked at kBaseSize
and is wrong at any other size, so it cannot be reused. The per-glyph
(int) truncation in GetLineWidth is preserved exactly.
Adds the FontAdvanceCache CPU-only regression test covering size
independence of the cached unit advance, the per-glyph-truncated rescale
pipeline, cache-hit determinism, width scaling with size, and the
non-ASCII map path.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 17:00:48 +00:00
..
Crafter.Graphics-Clipboard.cpp
clipboard
2026-05-19 00:45:22 +02:00
Crafter.Graphics-ComputeShader.cpp
fix(vulkan-rt): configurable recursion depth + per-shader TLAS push for compute ( #21 )
2026-06-03 18:35:39 +00:00
Crafter.Graphics-Device.cpp
fix(device): add preferred mask + required-only fallback to GetMemoryType ( #59 )
2026-06-16 16:03:50 +00:00
Crafter.Graphics-Dom.cpp
browser DOM support
2026-05-18 02:07:48 +02:00
Crafter.Graphics-Font.cpp
perf(font): cache per-codepoint advances in font units ( #57 )
2026-06-16 17:00:48 +00:00
Crafter.Graphics-FontAtlas.cpp
fix(image): scope sampled-image upload barriers to the real consumer stage ( #54 )
2026-06-16 16:01:23 +00:00
Crafter.Graphics-Gamepad.cpp
browser DOM support
2026-05-18 02:07:48 +02:00
Crafter.Graphics-Input.cpp
feat(input): wire native mouse-wheel scroll on Wayland + Win32, normalize all backends to ±1/detent ( #32 )
2026-06-12 15:02:28 +00:00
Crafter.Graphics-InputField.cpp
new input system
2026-05-12 00:24:48 +02:00
Crafter.Graphics-Mesh-WebGPU.cpp
feat(rt): BuildProcedural/RefitProcedural from a device AABB buffer ( #37 )
2026-06-16 14:12:04 +00:00
Crafter.Graphics-Mesh.cpp
feat(rt): BuildProcedural/RefitProcedural from a device AABB buffer ( #37 )
2026-06-16 14:12:04 +00:00
Crafter.Graphics-PipelineRTWebGPU.cpp
feat(webgpu-rt): atomic pixel accumulator + raysPerPixel for >1 ray/pixel/bounce ( #30 )
2026-06-09 22:45:25 +00:00
Crafter.Graphics-RenderingElement3D-WebGPU.cpp
tlas build options
2026-06-16 15:49:17 +02:00
Crafter.Graphics-RenderingElement3D.cpp
tlas build options
2026-06-16 15:49:17 +02:00
Crafter.Graphics-Router.cpp
browser DOM support
2026-05-18 02:07:48 +02:00
Crafter.Graphics-ShaderBindingTableWebGPU.cpp
webgpu triangle
2026-05-18 18:43:30 +02:00
Crafter.Graphics-UI-Shared.cpp
perf(text): fold Ensure+Lookup into FontAtlas::EnsureAndGet ( #53 )
2026-06-16 15:43:58 +00:00
Crafter.Graphics-UI-WebGPU.cpp
feat(webgpu): HDR post-process primitives — float textures, storage-texture bindings, RESOLVE→HDR target ( #27 )
2026-06-09 12:55:14 +00:00
Crafter.Graphics-UI.cpp
perf(ui): scope inter-dispatch barrier to swapchain image ( #48 )
2026-06-16 16:53:51 +00:00
Crafter.Graphics-UIComponents.cpp
perf(text): cache shaped runs in ShapeText ( #52 )
2026-06-16 15:40:52 +00:00
Crafter.Graphics-WebGPUComputeShader.cpp
webgpu triangle
2026-05-18 18:43:30 +02:00
Crafter.Graphics-Window.cpp
Merge remote-tracking branch 'origin/master' into claude/issue-40
2026-06-16 15:41:59 +00:00