top of page

Światło w świecie voxeli: prawdziwe światła czy flood fill?

Zdjęcie autora: Marcel Dütscher
Marcel Dütscher
27 cze
1 minut(y) czytania

Gracz stawia lampę świecącą w swojej bazie. Co dzieje się technicznie? To niewinne pytanie wywołało u nas fundamentalną decyzję – a odpowiedź to ładny przykład tego, że „nowocześniejsze” rozwiązanie nie zawsze jest lepsze.


Opcja A: prawdziwe światła Unity. Każdy świecący blok staje się punktowym źródłem światła, silnik wszystko liczy. Wygląda świetnie – ale się nie skaluje. W świecie voxelowym w zasięgu wzroku mogą być setki świecących bloków; światła punktowe w czasie rzeczywistym w takiej ilości zmuszają do pocenia się każdy GPU, tym bardziej w wersji przeglądarkowej.


Opcja B: światło flood fill. Klasyka gatunku: światło to wartość liczbowa na blok, która rozchodzi się od źródła i maleje z każdym krokiem. Mega tanie, dowolna liczba źródeł – ale wynik wygląda płasko, bo światło nie ma kierunku. Ściana obok lampy jest tak samo jasna jak powierzchnia pod nią.


Nasz wybór: flood fill z kierunkiem. Zostaliśmy przy podejściu flood fill, ale nauczyliśmy je informacji o kierunku: światło wie, z której strony nadchodzi, i powierzchnie są odpowiednio inaczej oświetlane. Wynik jest wypiekany w siatce chunka podczas meshowania – w czasie działania praktycznie nic nie kosztuje, a wygląda wyraźnie bardziej przestrzennie niż klasyczne światło blokowe.


Lekcję z tego niesiemy od tamtej pory wszędzie: najpierw zapytaj, jaki naprawdę jest problem gatunku (tu: bardzo wiele źródeł, statyczna geometria), potem wybierz technologię. Prawdziwe światła rozwiązywały problem, którego nie mieliśmy – i stworzyłyby taki, którego nie umiemy rozwiązać.

Ostatnie posty

Zobacz wszystkie

Komentarze


Komentowanie tego posta nie jest już dostępne. Skontaktuj się z właścicielem strony, aby uzyskać więcej informacji.
bottom of page