正如标题所说,我想为不同的网格重用给定的 ShaderMaterial,但每个网格都有一组不同的制服(事实上,一些制服可能在网格之间有所不同,但不一定全部):这可能吗?
在这种情况下,必须为每个网格创建一个完整的 ShaderMaterial 对我来说似乎是一种资源浪费,其想法是拥有一个顶点/片段着色器程序,但通过不同的制服对其进行配置,其值会根据网格而改变. 如果我为每个网格创建一个新的 ShaderMaterial,我最终会得到很多重复(顶点 + 片段程序 + Material / ShaderMaterial 类的所有其他数据成员)。
如果引擎能够在绘制网格之前调用回调,我可以更改制服并实现我想要做的事情。另一种可能性是拥有一个“LiteShaderMaterial”,它将保存一个指向共享 ShaderMaterial 的指针 + 仅用于我的网格的特定制服。
请注意,我的问题与此有关许多具有相同几何形状和材料的网格,我可以更改它们的颜色吗?但仍然不同,因为我最关心资源的浪费 - 性能方面,我认为拥有多个 ShaderMaterial 或单个 ShaderMaterial 并没有太大不同,因为引擎应该足够聪明,可以注意到所有材料具有相同的程序,不要将它们重新发送到 gfx 卡。
谢谢