Czy udostępnianie programów cieniujących między programami wiąże się z jakąś wydajnością?


14

OpenGL umożliwia współdzielenie tego samego modułu cieniującego między wieloma programami. Czy oprócz oszczędzania niewielkiej ilości pamięci i uchwytu modułu cieniującego są jakieś korzyści związane z wydajnością po stronie GPU?

Odpowiedzi:


3

Wątpię, czy istnieje korzyść z wydajności po stronie GPU.

Gdy na przykład powiążesz ogólny moduł cieniujący z programem, wydajna implementacja powinna być w stanie usunąć nieużywane atrybuty między tym modułem cieniującym a innymi modułami cieniującymi w tym programie, a być może nawet uprościć logikę modułu cieniującego. Oczywiście nie stanowi to żadnej realnej korzyści w porównaniu z ręcznie dostrojoną kombinacją modułów cieniujących, ale pomaga w zarządzaniu złożonością / kombinatoryką i może zmniejszyć liczbę kompilacji, które musi wykonać sterownik.

Może to jednak mieć wady związane z trafieniem w nieefektywne implementacje sterowników i kompilatorów. A jest ich kilka, sprawdź: http://aras-p.info/blog/2010/09/29/glsl-optimizer/ tylko kilka prostych rzeczy, które niektóre implementacje mogą popsuć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.