Скільки шейдерів, як правило, активно, одночасно в одній сцені, в сучасних іграх? Я знаю, що використовуються кілька шейдерів, коли ігри перемикаються між ними в кожному кадрі, і звичайно малювати об'єкти за допомогою шейдера:
- Намалюйте всі предмети за допомогою шейдера
- Перехід від шейдера один до шейдера два
- Намалюйте всі предмети за допомогою шейдера два
Все-таки я знаю, що це не так просто, особливо з такими ефектами, як ефект світіння для всієї сцени, надає текстуру тощо, але я думаю, що ми можемо припустити, що вона працює таким чином більшу частину часу, правда? Підхід "групи за шейдером" хороший, тому що перемикання шейдерів - це дорога операція.
З одного боку, у вас не може бути занадто багато шейдерів, тому що ви хочете швидко відтворити сцену. З іншого боку, вам потрібно багато різних шейдерів (або убер-шейдерів із гілками - досить схожими) для шкіри, металу, води тощо.
Скільки (і які) різних шейдерів використовує теоретична, сучасна, третя особа, 3D-детективна гра для ПК (DirectX 11, якщо це важливо)? Це було б 5, 20 або більше, як 100 активних шейдерів, рахуючи лише активні, на якомусь "кадрі X"? Я знаю, що це не одне число, але мені цікаво, який масштаб і фактори важливі, враховуючи ПК.
У моїй вибірковій грі я використовував би приблизно 9-11 на кадр (рахуй це як різні, невеликі шейдери або один uber-шейдер - не має значення зараз):
- Шейдер шкіри
- Шейдер для очей (не дуже багато? Але вони різні)
- Металевий шейдер
- Наземний шейдер
- Шейдер для снігу / дощу (за потреби)
- Водяний шейдер (якщо вода існує на сцені)
- Світловий шейдер (лише якщо задіяні якісь спеціальні ефекти)
- Шейдер для випромінювання світла (вуличні світильники тощо)
- Стандартний шейдер (для всіх інших, лише стандартне затінення)
- Стандартний шейдер із звичайними картами
- 2D шейдер (для GUI тощо)
Це "багато" чи "не багато"? Я забув про якісь важливі шейдери, які мені знадобляться?