OpenGL ti consente di condividere lo stesso shader tra più programmi. A parte il risparmio di piccole quantità di memoria e una maniglia dello shader, ci sono vantaggi in termini di prestazioni sul lato GPU?
OpenGL ti consente di condividere lo stesso shader tra più programmi. A parte il risparmio di piccole quantità di memoria e una maniglia dello shader, ci sono vantaggi in termini di prestazioni sul lato GPU?
Risposte:
Dubito che ci sia un vantaggio in termini di prestazioni sul lato GPU.
Ad esempio, quando si associa uno shader generico a un programma, un'implementazione efficiente dovrebbe essere in grado di rimuovere gli attributi inutilizzati tra lo shader e gli altri shader in quel programma e, di conseguenza, eventualmente anche semplificare la logica dello shader. Ovviamente, questo non è un vero vantaggio rispetto a una combinazione shader sintonizzata a mano, ma aiuta a gestire la complessità / combinatoria e forse a ridurre il numero di compilazioni che il driver deve fare.
Tuttavia, potrebbero esserci degli svantaggi nel fare ciò in termini di colpire implementazioni inefficienti del compilatore driver. E ce ne sono alcuni là fuori, controlla: http://aras-p.info/blog/2010/09/29/glsl-optimizer/ per alcune semplici cose che alcune implementazioni possono sbagliare.