Używam XNA do swoich projektów i na tych forach czasami widzę odniesienia do faktu, że zamiana efektu na siatkę ma stosunkowo wysoki koszt, co mnie zaskakuje, ponieważ myślałem, że zamiana efektu jest po prostu przypadkiem skopiowania zastępczego programu do cieniowania do GPU wraz z odpowiednimi parametrami.
Zastanawiałem się, czy ktoś może dokładnie wyjaśnić, co jest kosztowne w tym procesie? I umieścić, jeśli to możliwe, „względnie” w kontekście?
Na przykład powiedz, że chciałem użyć krótkiego modułu cieniującego, aby pomóc w wyborze,
- Zmień efekt na każdym obiekcie, obliczając niepowtarzalny kolor, aby go zidentyfikować i dostarczyć do modułu cieniującego.
- Narysuj wszystkie obiekty w celu renderowania w pamięci.
- Pobierz kolor z celu i użyj go, aby wyszukać wybrany obiekt.
Jaka część całkowitego czasu potrzebnego na ukończenie tego procesu spędziłaby zamieniając shadery? Mój instynkt powiedziałby, że ponowne renderowanie sceny, bez względu na to, jak prosty jest moduł cieniujący, byłoby wolniejsze o rząd wielkości niż jakakolwiek inna część procesu, więc po co martwić się efektami?