Autor Wątek: Deffered shading - różne metody oświetlenia / materiały  (Przeczytany 474 razy)

Offline Glasgow

  • Użytkownik

# Sierpień 13, 2017, 19:29:53
Hej,
zastanawiam się w jaki sposób w deffered shading używać różnych materiałów - rodzajów oświetlenia?
Pierwotnie myślałem nad wysyłaniem poprzez G-Buffer ID typu materiału i w postprocessing'u wstawić if'y, ale przy rozdzielczości full hd może to dosyć dużo kosztować.
Druga sprawa jaki format użyć do wysyłania tych ID'ków, unsigned z jednym komponentem np. red?

Czy jakoś inaczej to zrealizować?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Mergul

  • Użytkownik

  • +2
# Sierpień 14, 2017, 01:18:38
Zależy co chcesz osiągnąć. Naprawdę potrzeba Ci wielu typów oświetlenia? Z mojego doświadczenia wystarcza ich naprawde mało.

Offline Armageddon

  • Użytkownik

  • +1
# Sierpień 14, 2017, 10:36:35
W najgorszym przypadku będziesz miał tylko kilka materiałów, więc możesz nawet upchnąć id w małym komponencie, np: R10G10B10A2 w A2, da ci to 4 rodzaje materiałow.
Co do wydajności "if'ów", nie powinno to być problemem na nowszych kartach graficznych, póki w bloku 2x2 pikseli będzie to samo ID. Koszt wtedy jest stosunkowo niewielki.

Offline Dab

  • Moderator
    • blog

  • +1
# Sierpień 14, 2017, 12:14:07
Zawsze można pokusić się o wykorzystanie stencila. Używając standardowego formatu 24+8 masz miejsce na 8 flag, a if będzie wykonywany bez konieczności umieszczania go w kodzie shadera (chociaż bardzo prawdopodobne, że driver przy kompilacji całego stanu do shadera i tak wstawi takiego implicit ifa do assemblera GPU).

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

  • +1
# Sierpień 14, 2017, 21:32:53
Nie wstawi ifa do kodu shadera. Używanie stencila będzie szybsze, niż pisanie testu w pixel shaderze, bo stencil test, tak jak z-test (kiedy to możliwe) jest wykonywany przed pixel shaderem i dla piksela, który testów nie przechodzi, pixel shader w ogóle się nie uruchomi. Karty graficzne mają specjalny sprzęt do obsługi tego. Nie są aż tak elastyczne, żeby wszystko wsadzać do kodu shadera :)

Offline Glasgow

  • Użytkownik

# Sierpień 15, 2017, 11:24:43
Ok, dzięki za rady, dokończę teraz co wcześniej robiłem i biorę się za materiały.