1

我正在尝试制作一个插件,该插件采用选定的着色器并从选定的类型(从所有着色器的列表中)创建另一个。

创建一个新的着色器并命名它并在对象上替换它不是问题,但我也在尝试重新连接它的所有属性,我遇到了一个真正的问题。

如果源着色器是 aPhong并且目标类型是Blinn重新连接它们的所有公共属性没有问题(我在循环中列出了我的目标着色器的所有属性,我将它们全部比较并尝试连接如果有类似那些)。

Blinn并且Phong凹凸属性被命名为: .normalCamera

但我的问题是:

  • 对于 a PxrDisney,例如,bump 属性被命名为: .bumpNormal

  • 对于 a PxLMPlastic,凹凸被命名为:.diffuseNn

关于如何绕过这个问题的一些想法?

4

1 回答 1

0

不是你——是玛雅。

不幸的是,没有可靠的方法来做到这一点。不能保证两个着色器会为相同的功能使用相同的名称,或者两个具有相似名称属性的着色器会以相同的方式使用它们。

您可以尝试维护属性映射并使用它来找到最接近的匹配,但它始终是一个近似值。

于 2017-05-06T00:11:59.270 回答