小编Pop*_*pov的帖子

Three.js,在网格之间共享ShaderMaterial但具有不同的统一集

正如标题所说,我想重复使用给定的ShaderMaterial用于不同的网格,但每个网格使用不同的制服集(实际上,一些制服可能在网格之间有所不同,但不一定都是不同的):是否可能?

在这种情况下,我必须为每个网格创建一个完整的ShaderMaterial似乎是浪费资源,这个想法是拥有一个顶点/片段着色器程序,但是通过不同的制服配置它,其值会根据网格而改变.如果我为每个网格创建一个新的ShaderMaterial,我将最终得到大量的重复(顶点+片段程序+ Material/ShaderMaterial类的所有其他数据成员).

如果引擎能够在绘制网格之前调用回调,我可以更改制服并实现我想要做的事情.另一种可能性是拥有一个"LiteShaderMaterial",它可以保存指向共享ShaderMaterial的指针+仅包含我网格的特定制服.

请注意,我的问题与此问题有关.许多具有相同几何和材质的网格,我可以更改它们的颜色吗?但仍然不同,因为我最担心的是资源的浪费 - 性能明智我不认为在拥有多个ShaderMaterial或单个ShaderMaterial之间会有很大不同,因为引擎应该足够聪明,注意所有材料具有相同的程序,不会重新发送到gfx卡.

谢谢

three.js

4
推荐指数
1
解决办法
2584
查看次数

标签 统计

three.js ×1