mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-09 05:54:43 +01:00
2.4 KiB
2.4 KiB
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 + rją 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 sentinelamax().
Uwagi
- 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. - Sonar S3608 / S1188. Lambdy
depth_atislopeł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(). - Nagłówki (GCC).
std::ldexp,std::ilogb→<cmath>,std::array→<array>. Upewnić się, że są dołączone wprost (lista zCLAUDE.md). m_mouseknownnigdy nie wraca dofalse(np. po zmianie scenerii / resecie renderera) —Mouse_Position()zwróci wtedy stary punkt z poprzedniego świata. Drobne, ale łatwo zresetować przyInit()/zmianie scenerii.- 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. - Opis PR wspomina „Built with
-fsyntax-only” — warto poczekać na pełny build CI na gałęzifeat/gl46-migration.