我正在尝试创建一个插件,该插件使用选定的着色器并从所选类型(从所有着色器列表中)创建另一个着色器。
创建一个新着色器并将其命名并将其替换为对象并不是一个问题,但我也试图重新连接其所有属性,并且我有一个真正的问题。
如果源着色器是Phong
且目标类型是Blinn
,则重新连接所有公共属性没有问题(我在循环中用循环列出了目标着色器的所有属性,我对它们进行了比较,如果有类似的话,我们会尝试连接。
对于Blinn
和Phong
,bump属性的名称为:.normalCamera
。
但我的问题是:
PxrDisney
,命名为bump属性:
.bumpNormal
。
PxLMPlastic
,,凹凸被命名为:.diffuseNn
。
有关如何绕过此问题的一些想法?
答案 0 :(得分:0)
你不是 - 它是玛雅。
不幸的是,没有可靠的方法可以做到这一点。不能保证两个着色器将使用相同的名称用于相同的功能,或者具有相似命名属性的两个着色器将以相同的方式使用它们。
您可以尝试维护属性的映射并使用它来查找最接近的匹配,但它始终是近似值。