sorting - 使用实例渲染进行全局半透明排序

标签 sorting opengl-es webgl rendering translucency

我的渲染代码的结构使得有模型和模型实例。 每个模型可以有 N 个实例,并且同一模型的所有可见实例都使用实例化渲染同时渲染。

就性能而言,这工作得很好——我的代码需要渲染成百上千个实例,每个实例都可能由多个渲染调用组成,以及渲染/均匀/纹理/等的数量。电话是个问题。

当我想考虑使用半透明的实例时,问题就来了,在这种情况下是很多 - 在这种情况下,渲染它们的顺序很重要,因为模型使用各种混合函数。 我可以对每个模型的实例进行排序,但是一旦有多个模型的实例被渲染,顺序是任意的(实际上它是基于模型加载的顺序)。

我这辈子想不出任何方法来使用实例化渲染进行这种全局排序。

这有可能吗?实例化渲染是否应该纯粹用于不透明对象?

我的代码使用 WebGL1,它缺少很多现代功能,但我很想知道这是否可行,即使只是在更现代的 API 中也是如此。

最佳答案

实例化归根结底是一种性能优化;没有它就无法通过实例化来渲染。这只是您调用了多少绘图调用的问题。

如果渲染不同网格的顺序很重要(对于混合来说是这样),那么您不能使用实例化。如果您必须将所有内容从后向前绘制才能使渲染工作正常,那么这就是您必须做的。无论需要多少绘图调用。

关于sorting - 使用实例渲染进行全局半透明排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58386635/

相关文章:

javascript - 从片段着色器调用 javascript 函数 (HTML)

shader - Three.js 中非常简单的自定义着色器 - 如何使其工作?

javascript - 如何在 THREE.js 中生成粒子系统

sorting - Python3 : sort of a list of tuples by first element in reverse -> if that is the same, 按字母顺序的第二个元素

wpf - DataGrid 排序不起作用

r - 如何获取数据框中一对双列的第一个实例?

java - 如何按照数组中的顺序对卡片进行排序到颜色类型

ios - 使用 UINavigationController 推送 EAGL-View 时 iPhone 内存使用量增加

java - 矩阵 vector 乘法

ios - GLKView 快照方法 : null return val, 出错