2013-11-19 1 views
0

Есть ли способ комбинировать шейдеры?Комбинированные шейдеры с directx 11

Скажем, я хочу иметь 4 модели:

  • Один только с текстурой оказанной.
  • Один с текстурой и основным световым эффектом.
  • Один визуализации с скелетной анимацией.
  • Одно изображение с скелетной анимацией и основным световым эффектом.

Единственный способ, которым я знаю это сделать, - создать 4 пиксельных и вершинных шейдерных файла. Но есть ли у меня еще 5 эффектов, которые я хочу добавить, я должен создать больше файлов, и если я хочу добавить все больше и больше эффектов? Я сомневаюсь, что для каждого эффекта я должен создать еще один файл для каждой возможности. Я знаю, что для света я могу установить его непосредственно в других файлах, а когда я не хочу использовать свет, я устанавливаю его в 1.0f, чтобы цвет не менялся. Но если я хочу иметь больше эффектов, у меня будет 20 переменных в моем шейдере, и разве это бесполезно, если я их не использую? Есть ли другой способ сделать это?

Заранее спасибо, я старался быть таким понятным, как мог, извините за мой английский.

ответ

1

Вот некоторые мысли:

  • Переместить общие функциональные возможности в отдельный файл и использовать #include, чтобы распространить его между шейдерами.
  • Используйте #ifdef для условного компиляции. Pass определяет через /D флаг fxc.exe от D3D_SHADER_MACRO от D3DCompile. Вы можете комбинировать все в одном шейдере и затем скомпилировать его во множество разных двоичных файлов.
  • Используйте некоторую рамку эффекта (по умолчанию DirectX one, googled или создайте свой собственный): вам не понадобятся отдельные файлы для шейдеров, все идет в одном файле, так что состояния.
  • Оставьте все как есть: HLSL сложный, и любые осложнения просто могут привести к недостижимому беспорядку.

Надеюсь, это поможет!

+0

Да, это так. К счастью, мне действительно не нужны какие-то шейдеры, я просто задавался вопросом, каков был общий способ сделать это, но после прочтения вашего сообщения и ссылки ниже, я думаю, что нет общего пути (http://blogs.msdn.com/ b/shawnhar/archive/2009/08/17/combining-shaders.aspx). Спасибо за помощь кстати. – Aulaulz

 Смежные вопросы

  • Нет связанных вопросов^_^