Berapa banyak shader yang biasanya aktif, pada saat yang sama dalam satu adegan, dalam game modern? Saya tahu bahwa banyak shader digunakan, dengan gim beralih di antara mereka di setiap frame, dan biasanya menggambar objek melalui shader:
- Gambar semua objek dengan satu shader
- Ubah dari shader satu ke shader dua
- Gambar semua benda dengan shader dua
Meski begitu, saya tahu itu tidak sesederhana itu, terutama dengan efek seperti efek cahaya untuk seluruh adegan, membuat tekstur, dll., Tapi saya kira kita bisa menganggap itu berfungsi seperti itu sebagian besar waktu, kan? Pendekatan "group by shader" baik, karena mengganti shader adalah operasi yang mahal.
Dari satu sisi, Anda tidak dapat memiliki terlalu banyak shader, karena Anda ingin membuat adegan dengan cepat. Di sisi lain, Anda memerlukan banyak shader yang berbeda (atau uber-shader dengan cabang-cabang - sangat mirip) untuk kulit, logam, air dll.
Berapa banyak (dan mana) shader yang berbeda yang akan digunakan oleh game detektif 3D teoretis, modern, orang ketiga, untuk PC (DirectX 11, jika perlu)? Ini akan menjadi 5, 20 atau lebih seperti 100 shader aktif, hanya menghitung aktif, di beberapa "bingkai X"? Saya tahu ini bukan satu angka, tetapi saya ingin tahu skala dan faktor apa yang penting, dalam pertimbangan untuk permainan PC.
Dalam game sampel saya, saya akan menggunakan sekitar 9-11 per frame (hitung sebagai berbeda, shader kecil atau satu uber-shader - tidak masalah sekarang):
- Skin shader
- Eye shader (tidak terlalu banyak? Tetapi mereka berbeda)
- Shader logam
- Shader tanah
- Snow / rain shader (jika perlu)
- Water shader (jika air ada di lokasi)
- Cahaya shader (hanya ketika beberapa efek khusus yang terlibat)
- Shader pemancar cahaya (lampu jalan dll.)
- Shader standar (untuk semua yang lain, hanya shading standar)
- Shader standar dengan peta normal
- 2D shader (untuk GUI dll.)
Apakah "banyak" atau "tidak banyak"? Apakah saya lupa tentang beberapa shader penting yang saya perlukan?