THREE.Points stop rendering when their center point leaves view frustum, regardless of frustumCulled setting

When rendering a pointcloud with THREE.Points, points that get near the edge of the rendering context blink in and out of existence abruptly when passing through their center point. Setting frustumCulled = false on the Points object appears to have no effect, nor does forcing a new boundingSphere calculation etc.

Here is a demo illustrating the problem: http://jsfiddle.net/akmcv7Lh/123/

If you rotate the camera, keep an eye on points near the edges of the view. It appears that once their center point leaves the camera’s view, they are no longer rendered. Is this a limitation of this rendering method, or possibly a bug?

Three.js version
  • r84
  • r85
Browser
  • All of them
OS
  • All of them

Author: Fantashit

1 thought on “THREE.Points stop rendering when their center point leaves view frustum, regardless of frustumCulled setting

  1. Unfortunately I’m quite sure this is longstanding behavior of AMD’s OpenGL driver on multiple platforms.

    The Chrome team reported this as a bug against Apple’s OpenGL driver, but it was closed as being within the OpenGL spec’s behavior.

    I was supposed to file a new Radar but dropped that on the floor. I’m sorry about that.

    Still, to get the correct behavior on the plethora of cards that are out there, there are basically two choices. One is to emulate GL_POINTS by drawing a pair of quads. The second is (I think) to inflate the GL_VIEWPORT outward by half of the maximum point size that you’ll draw. See pitfall #10 in https://www.opengl.org/archives/resources/features/KilgardTechniques/oglpitfall/ .

    We looked into doing the latter automatically in Chrome as a driver bug workaround, but it changes the rendering results slightly, so is not easy to do in the general case.

    Please give one of these workarounds a try, and sorry for the poor behavior that we weren’t able to hide yet in WebGL.

Comments are closed.