我正在开发一个项目,需要渲染成千上万个独特的建筑模型网格。我的对象需要是可选择的,并且它们将附加数据(除了几何)。
由于对象/网格的数量对渲染性能有很大的影响,我将我的对象合并到一些巨大的网格中并创建“伪网格”,它只保存有关网格三角形的索引和附加的其他数据的信息。我能够使用自己的颜色渲染每个网格,用户可以单独选择它们。
然而,透明度和渲染顺序对我来说很难。我设法通过将它们合并到单独的网格中来渲染具有透明和不透明对象的场景。
我的问题是无法有效突出显示拾取的对象。我希望突出显示为不透明的颜色。如果拾取透明对象,我会更改关联三角形的颜色属性以匹配我的高亮颜色,不透明度为1.0。但这并不像我想要的那样,因为合并网格的材质是透明的,虽然我将它的'三角形的不透明度设置为1.0,但它的渲染顺序不会改变。结果是屏幕上排序不良的对象。
我知道我可以使用MultiMaterial,但是如果用户选择了大量的对象,则可以使用多个drawcalls - 可能不会 - 或者可能不会增加。所以我正在寻找一种更好的解决方案,无论发生什么都能保持相同的性能。
您对如何解决此问题有任何建议吗?