czołem,
jakiś czas temu engine znów zaczal mnie nawiedzać nie dając spokoju.
Przyszły mi do glowy pewne optymalizacje ktore chciałem sprawdzic z ciekawości,
ale w miedzyczasie natknałem się na taki artykuł. Chodzi o to że Carmack zanim zrobił Dooma
za pomocą BSP stowrzył wolf3d na SNESa właśnie za pomocą BSP - bo standardowy Raycasting okazał się za wolny na tą platformę - a z BSP dał radę: https://retro-system.com/super.htm
polecam przeczytac
No i tez trochę zaczałem czytać bardziej o BSP, miałem na studiach, ale wtedy nie czaiłem tego za bardzo,
i dopiero teraz wiem z grubsza o co chodzi. No i pomyślałem, że skoro chcilem przestestować pewne optymalizacje to czemu by nie pojsc jeszcze dalej i sprawdzić renderowanie scianek za pomocą BSP niż raycastingu.. Musialem dopiero jakiś wykład jeszcz po angielsku obczić zeby
z grubsza pojąc jak to dzielić ico to daje :P
Póki co zaczlem przerabiać edytor i zanimilem mapę z klocków na ścianki. funkcja sprawdza"wypukłość" pomieszczeń a natępnie w razie konieczności dzieli je na dwa mniejsze aż uzyska pomieszczenia bez wypukłości. Mam już też utworzone drzewka binarne.
Jestem bardzo ciekawy jak zmieni się wydajność porównując rendering identycznych map za pomocą raycastingu i BSP.
Tu jest troceh wiecej roboty - na razie mam połowe zrobione czyli podział mapy i stworzenie drzewa
teraz trzeba się zająć samym renderingiem. Dzięki BSP bede dostawał kolejność scian do renerowania od najbliższej do najdlaszej - w porownanu dop raycastera w sten sposób uniknie się konieczności przechodzania przez siatkę dla każdego pixela w poziomie - rozdzielczosc pozioma bedzie wiec miala nieco mniejszy wplyw na wydajność.
o ile dobrze wszsytko ogarne i zaprogramuje - to piersszy raz gdy bawie sie BSP, wiec mam nadzieje ze nic nie sknocę..
Pytanie czy dam rade osiagnac faktycznie jakis sensowny przyrost wydajnosci czy nie, jak nie to pewnie wroce do raycastingu.
Jak cos bede miał to postaram sie wkleić wyniki :)
ps. na razie scianki i podzialy są proste poziome i pionowe - bo jak wspomnialem robie to dla testu
zeby po prostu zobaczyc co i jak..
ps. Może macie jakieś fajne źródła albo informaje, albo inne pomysly na optymalizacja np. podejscia do BSP?
wiec ze w Doom jeszcze są bounding boxy wokół pomieszczeń zeby szybciej je odrzucić.. dopiero bede zasiadał do drugiej czesci czy samego renderingu
no i tu duzo zalezy jak sie to wykona - jak szybko odrzucić scianki ktore nie są w polu widzenia itp..
Wykrywanie wklesłych / wypukłuch pomieszczeń:
Pogrupowane ścianki po podziale:
Podglad drzewek, zeby sprawdzic czy wszsytko gra i czy są "grubsza" zbalansowane
Ostatnia aktualizacja: 14.01.2024 16:25:40 przez mateusz_s