Jestem ciekawy, jak radzić sobie z wieloma światłami w scenie. Biorąc pod uwagę bardzo dużą mapę w grze fabularnej, z lochami (ze światłami) itp. Wiem o odroczonym oświetleniu, ale to tylko wyjaśnia, jak renderować wiele świateł. Ale moje pytanie brzmi: jak nie renderować wielu świateł. Jest oczywiście pożądane, aby renderować tylko światła wpływające na scenę, ale nie znam techniki / algorytmu do archiwizacji tego. Nikt nie chce lub nawet nie jest w stanie renderować 500 punktowych świateł, tylko dlatego, że gdzieś na mapie. Ale nie można po prostu poprowadzić linii prostej od światła do gracza i sprawdzić, czy coś jest pomiędzy. Odległość również nie wydaje się dobrym wskaźnikiem. (Światło słoneczne?)
tl; dr: Jak mogę dowiedzieć się, które światła wpływają na scenę, aby je tylko renderować?
Odpowiedzi:
Jeszcze prostsze niż granice woluminów;
Przypisz promień do każdego światła. Jeśli chodzi o renderowanie sceny, po prostu sprawdź, czy odległość między obiektami sceny a każdym światłem jest mniejsza niż promień światła. Jeśli tak, użyj światła, w przeciwnym razie pomiń go.
Tylko ułamek bardziej skomplikowany, w zależności od tego, jak ważna jest wydajność:
Z tym też możesz zrobić rodzaj szerokiej kontroli fazy. Po prostu zdefiniuj siatkę przestrzenną, która przechowuje uchwyty do twoich świateł na podstawie komórki siatki, a następnie wykonaj tylko sprawdzanie odległości na światłach znajdujących się w komórkach w obrębie maksymalnego promienia obiektów sceny.
źródło
Najprostszym sposobem, jaki mogę wymyślić (szczerze mówiąc, to jedyny sposób, o którym myślałem), to nadanie każdemu światłu ograniczającej objętości . Jeśli objętość graniczna przecina się z fragmentem widoku (lub objętością ograniczającą fragment widoku), zastosuj światło.
Nadal mogą być zastosowane światła, mimo że nie wpływają na żadne widoczne obiekty, ale jest to proste i szybkie. Inteligentne ułożenie wykresu sceny może oznaczać, że tylko kilka skrzyżowań sprawdza, czy większość świateł nie gaśnie (podobnie jak w przypadku maskowania obiektów).
Coś takiego jak słońce nie może mieć ograniczającej objętości (co oznacza, że zawsze należy je stosować).
źródło