Я использую XNA для своих проектов, и на этих форумах я иногда вижу ссылки на тот факт, что замена эффекта на сетку имеет относительно высокую стоимость, что удивляет меня, так как я думал, что обмен эффектами был просто случаем копирования программы замены шейдера в графический процессор вместе с соответствующими параметрами.
Я задавался вопросом, может ли кто-нибудь объяснить точно, что стоит об этом процессе? И поставить, если возможно, «относительно» в контекст?
Например, сказать, что я хотел бы использовать короткий шейдер, чтобы помочь с выбором, я бы:
- Измените эффект для каждого объекта, рассчитав уникальный цвет для его идентификации и предоставив шейдеру.
- Нарисуйте все объекты для цели рендеринга в памяти.
- Получить цвет от цели и использовать его для поиска выбранного объекта.
Какая часть общего времени, необходимого для завершения этого процесса, будет потрачена на замену шейдеров? Мои инстинкты говорили бы, что рендеринг сцены снова, независимо от того, насколько прост шейдер, будет на порядок медленнее, чем любая другая часть процесса, так почему же все заботятся о эффектах?