Yang terbaik adalah menjaga hal-hal sesederhana mungkin. Duplikasi shader yang sama untuk setiap objek tidak perlu dan akan cepat membengkak. Anda juga tidak ingin satu shader raksasa yang menutupi setiap use-case yang mungkin, karena hal ini menyebabkan overhead yang tidak perlu.
Ada beberapa pendapat tentang manajemen shader dan tidak ada cara "optimal" untuk melakukan pendekatan ini. Saya bahkan telah melihat beberapa implementasi shader di mana setiap shader dihasilkan berdasarkan parameter off-the-fly (misalnya di mesin Unreal ).
Untuk seseorang yang baru memulai di area ini, mungkin lebih baik untuk menuliskan shader dasar terlebih dahulu. Sebagai contoh, saya memiliki shader untuk objek tanpa tekstur, shader dengan tekstur dasar dan dukungan per-pixel-pencahayaan, dll ... Lalu setiap kali saya menginginkan efek berbeda yang tidak dapat dilakukan menggunakan shader sebelumnya, maka saya akan akan membuat yang baru untuk efek baru.
Tujuan dari sistem seperti itu adalah untuk menjaga hal-hal sederhana. Hanya. Menjaga. Itu. Sederhana.