Есть ли способ сравнить два атрибута "bump" из разных шейдеров?

Я пытаюсь сделать плагин, который берет выбранный шейдер и создает еще один из выбранного типа (из списка всех шейдеров).

Это не проблема создать новый шейдер и дать ему имя, а также заменить его на объекте, но я также пытаюсь восстановить все его атрибуты, и там у меня есть реальная проблема.

Если исходный шейдер Phong и тип цели Blinn нет проблем восстановить все их общие атрибуты (я перечислил все атрибуты моего целевого шейдера с помощью цикла в цикле, я сравнил их все и попытался соединиться, если есть похожие).

За Blinn а также Phong атрибут bump называется: .normalCamera,

Но моя проблема заключается в следующем:

  • для PxrDisneyНапример, атрибут bump называется: .bumpNormal,

  • для PxLMPlastic, шишка называется: .diffuseNn,

Некоторые идеи о том, как обойти эту проблему?

1 ответ

Это не ты - это майя.

К сожалению, нет надежного способа сделать это. Нет гарантии, что два шейдера будут использовать одно и то же имя для одной и той же функциональности или что два шейдера с одинаковыми именами будут использовать их одинаково.

Вы можете попытаться сохранить сопоставление атрибутов и использовать его для нахождения наиболее близкого соответствия, но оно всегда будет приблизительным.

Другие вопросы по тегам