Синхронизация upstream и оптимизация постобработки MoonWell #12

Merged
sindoring merged 8 commits from moonwell-gfx-gpu-opt into main 2026-11-04 12:55:13 +03:00

8 Commits

Author SHA1 Message Date
sindoring 7cf2bd8838 Fix install test setup and missing cinematic reporting 2026-11-04 13:13:52 +04:00
sindoring 40db582125 Explain existing Russian-pack and HD-atlas deviations
State why MoonWell mounts the community locale and preserves high-resolution character textures. Documentation only; deviation-why and formatting checks pass.
2026-11-03 23:52:38 +04:00
sindoring 3877d0f0cc Sync upstream through e2aeaecf and regenerate the code map
The three new upstream commits retain their authors in this branch. Regenerated MAP and DEVIATIONS from the combined tree. Previous upstream base: d9c64230, synchronized in 779460d8.
2026-11-03 23:49:18 +04:00
Thorsten42 a39907ed99 A glue scene seats its body and pet on the bone's animated matrix (#2984)
Fixes #2980

A glue scene's seat read only a rotation and scale parked on global-sequence keys, once, when the scene was built. That lost a seat keyed in the scene's sequence: a custom `UI_CharacterSelect` turns its seat bone 180° and scales it 0.673 there, so the body stood backwards at about 1.5×. No stock scene keys its seat that way.

The reference seats a child at the bone's whole animated matrix times the attachment position, every frame (`0x7140d8`-`0x714149`), after it animates the scene (`0x714000`). The body and the pet now take that matrix from the scene rig's pose each frame. This runs in `PostUpdate` after the rig's model pass, now the named set `RigModelPass`, and before propagation, so the seat and the scene share a frame.

Test: `a_seat_takes_the_bones_whole_matrix_at_the_attachment`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Sam <samuv.eth@gmail.com>
2026-11-03 23:48:04 +04:00
Thorsten42 a1d7e5f4e2 A Linux trackpad's scroll steps at 10 logical pixels per notch (#2979)
Fixes #2978

A Wayland trackpad sends pixel travel. benilla asked 100 physical pixels for one wheel step and gave at most one step per event, so at scale 1.33 a list needed about 7.5 times GNOME's notch of finger travel.

10 axis units are one step on Wayland (SDL's `WAYLAND_WHEEL_AXIS_UNIT`, GLFW, Xwayland, mutter's `DISCRETE_SCROLL_STEP`). On Linux a notch is now 10 logical pixels at the window's base scale, and an event steps once per whole notch. macOS keeps Bevy's factor and its one step per event. Line events stay at one step each, like the reference's `WM_MOUSEWHEEL` (`0x76c1a9`), and winit reports only lines on Windows and X11. The `WheelNotches` deviation says so.

Tests: `pixel_travel_steps_by_the_platforms_notch` runs both platforms' arms on any host, and `a_pixel_notch_reads_the_base_scale` pins the scale.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Sam <samuv.eth@gmail.com>
2026-11-03 23:48:04 +04:00
Sam Sung dfb9cfc9f5 Windows drops the accessibility adapter the reference never had (#2975)
Under Proton-based Wine, `tabtip.exe` is a UI Automation client, and `bevy_winit` gives every window an AccessKit provider. That traffic faults in `rpcrt4` on blocks the game has reused, which damages the heap and later crashes the client at varying addresses. Blocking `tabtip.exe` stops the faults and the crash, and other programs in the same bottle show no such faults.

The reference's window has no provider: `WoW.exe` imports no accessibility library and names none of its calls. benilla builds no AccessKit tree either.

`VideoPlugin` now drops the adapter when Windows reports a new window, which restores winit's window procedure. Other platforms keep theirs.

No test: the adapter needs a real window and the fault a UI Automation client. Built for macOS and Windows.

Refs #2932

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 23:48:04 +04:00
sindoring f55f42a28e Add frame-weighted graphics diagnostics analysis
Separate GPU sessions and settings epochs; summarize GPU and CPU journals. Checked weighting, toggle boundaries and empty readbacks with a synthetic fixture.
2026-11-03 23:47:11 +04:00
sindoring e84984b32d moonwell-gfx: resolve lighting and occlusion at half resolution
Share depth-aware reconstruction across scattering, indirect light and AO, keeping full-size fallback for thin geometry. Windows release build, 46 gfx tests and scoped clippy pass. Fixed-scene GPU post cost: 6.41 to 3.47 ms at 5120x2880; disabled output remains pixel-identical.
2026-11-03 23:47:11 +04:00