是否可以在WebGL中设置条件?

时间:2020-07-31 21:47:37

标签: javascript webgl webgl2

我正在寻找一种在着色器中渲染时跳过实例的方法。 我有一百万个实例,为了达到性能,基于当前的视图框,我将根据实例的边界跳过实例。

我可以在任何地方编写条件代码吗?

JS比GPU慢,所以我正在寻找如何在GLSL中实现这种条件

1 个答案:

答案 0 :(得分:0)

您无法“跳过”实例。您可以将其所有顶点移出屏幕

attribute float visible;
...

  gl_Position = mix(vec4(0, 0, -2, 1), gl_Position, visible);

或类似的东西。如果visible是1.0,那么您将获得与以前一样的结果。如果visible为0.0,则其所有顶点都在剪辑空间之外。

您还可以采用某种形式(中心+半径,aabb)传递边界,并有效地执行相同的操作。计算该中心+半径是否在视锥体中,如果未将gl_Position设置为片段空间之外的内容,则进行计算。当然,如果它们已经不在剪辑空间之内,那么这将无济于事。

不过,对于大多数GPU而言,一百万个实例可能太多了