mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-12 07:10:06 +01:00
26 lines
2.4 KiB
Markdown
26 lines
2.4 KiB
Markdown
# Review PR #240 — fix(gl46): editor cursor depth read in the biased depth pass (port of 7078edf)
|
||
|
||
Autor: @miloszunio · base: `feat/gl46-migration` · 2 pliki, +86/−27 · Fixes #238
|
||
https://github.com/MaSzyna-EU07/maszyna/pull/240
|
||
|
||
**Werdykt: Approve po teście w symulatorze i poprawkach pod Sonar**
|
||
|
||
## Podsumowanie
|
||
Port poprawki z Vulkana do GL4.6: odczyt głębokości pod kursorem edytora w przebiegu głębi sceny (z `glPolygonOffset(-1,-1)`) dawał punkt ~1 piksel dalej — przy kącie ślizgowym nawet metry. Teraz:
|
||
- czytany jest blok 3×3 (PBO, a przy MSAA renderbuffer 3×3),
|
||
- bias jest kompensowany (mniejsza różnica sąsiadów na oś, większa z osi + `2^(ilogb(d)-23)`),
|
||
- unprojekcja używa widoku/projekcji/kamery z klatki, w której zlecono odczyt; punkt trzymany w world space (`dvec3`).
|
||
|
||
## Co jest dobrze
|
||
- Poprawna analiza: przy reversed-Z ujemny offset oddala powierzchnię, więc dodanie `m + r` ją przywraca.
|
||
- Zapamiętanie widoku z klatki żądania usuwa drugi, niezależny błąd (ruch kamery między żądaniem a odczytem).
|
||
- Sprawdzenie wyniku `read_data()` zamiast sentinela `max()`.
|
||
|
||
## Uwagi
|
||
1. **Brak testu w symulatorze** („Not run in the simulator yet”). Proszę przed merge sprawdzić scenariusz z opisu (SSR/AO on, perspektywa, kąt ślizgowy) oraz MSAA on/off i `gfx_skippipeline` — blit 3×3 z bufora MSAA to nowa ścieżka.
|
||
2. **Sonar S3608 / S1188.** Lambdy `depth_at` i `slope` łapią `[&]` i nie są przekazywane do algorytmu standardowego — Sonar to zgłosi. Proponuję jawne capture (`[&depths, this]`, `[&depth_at, pointdepth]`) albo funkcje wolne w anonimowym namespace (`depth_bias_slope(depths, size, centre)`). Zmniejszy to też złożoność `Update_Mouse_Position()`.
|
||
3. **Nagłówki (GCC).** `std::ldexp`, `std::ilogb` → `<cmath>`, `std::array` → `<array>`. Upewnić się, że są dołączone wprost (lista z `CLAUDE.md`).
|
||
4. **`m_mouseknown`** nigdy nie wraca do `false` (np. po zmianie scenerii / resecie renderera) — `Mouse_Position()` zwróci wtedy stary punkt z poprzedniego świata. Drobne, ale łatwo zresetować przy `Init()`/zmianie scenerii.
|
||
5. **Komentarz o biasie** jest bardzo długi (7 linii jednym ciągiem) — dobrze, że jest, ale czytelniej byłoby rozbić na punkty lub dać odnośnik do commita Vulkana 7078edf.
|
||
6. Opis PR wspomina „Built with `-fsyntax-only`” — warto poczekać na pełny build CI na gałęzi `feat/gl46-migration`.
|