我的渲染代码的结构使得有模型和模型实例。 每个模型可以有 N 个实例,并且同一模型的所有可见实例都使用实例化渲染同时渲染。
就性能而言,这工作得很好——我的代码需要渲染成百上千个实例,每个实例都可能由多个渲染调用组成,以及渲染/均匀/纹理/等的数量。电话是个问题。
当我想考虑使用半透明的实例时,问题就来了,在这种情况下是很多 - 在这种情况下,渲染它们的顺序很重要,因为模型使用各种混合函数。 我可以对每个模型的实例进行排序,但是一旦有多个模型的实例被渲染,顺序是任意的(实际上它是基于模型加载的顺序)。
我这辈子想不出任何方法来使用实例化渲染进行这种全局排序。
这有可能吗?实例化渲染是否应该纯粹用于不透明对象?
我的代码使用 WebGL1,它缺少很多现代功能,但我很想知道这是否可行,即使只是在更现代的 API 中也是如此。
最佳答案
实例化归根结底是一种性能优化;没有它就无法通过实例化来渲染。这只是您调用了多少绘图调用的问题。
如果渲染不同网格的顺序很重要(对于混合来说是这样),那么您不能使用实例化。如果您必须将所有内容从后向前绘制才能使渲染工作正常,那么这就是您必须做的。无论需要多少绘图调用。
关于sorting - 使用实例渲染进行全局半透明排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58386635/