OpenGL memungkinkan Anda untuk berbagi shader yang sama antara beberapa program. Selain menghemat sejumlah kecil memori dan pegangan shader, apakah ada manfaat kinerja sisi GPU untuk melakukan ini?
OpenGL memungkinkan Anda untuk berbagi shader yang sama antara beberapa program. Selain menghemat sejumlah kecil memori dan pegangan shader, apakah ada manfaat kinerja sisi GPU untuk melakukan ini?
Jawaban:
Saya ragu ada manfaat kinerja sisi GPU.
Ketika Anda mengikat shader generik ke program misalnya, implementasi yang efisien harus dapat menghapus atribut yang tidak digunakan antara shader itu dan shader lain dalam program itu dan mungkin bahkan menyederhanakan logika shader sebagai hasilnya. Tentu saja, ini bukan manfaat nyata dari kombinasi shader yang disetel dengan tangan, tetapi hal ini membantu mengelola kompleksitas / kombinatorik, dan mungkin mengurangi jumlah kompilasi yang harus dilakukan pengemudi.
Namun, mungkin ada kelemahan untuk melakukan ini dalam hal memukul implementasi driver-compiler yang tidak efisien. Dan ada beberapa di luar sana, periksa: http://aras-p.info/blog/2010/09/29/glsl-optimizer/ untuk beberapa hal sederhana yang beberapa implementasi bisa salah.