DirectX 10 efficient view frustum culling

Started by
4 comments, last by rubicondev 14 years ago
I have a point set of about 32 million points and I need to efficiently remove all the points that lay outside of an orthogonal view frustum... Anyone got a good idea on how to do this very efficiently? I'm using DirectX 10. Thanks Marcel
Advertisement
Whats about using octrees?
I forgot to mention, the points are all equally distributed in a rectangular grid, sort of like a height field.
Are the points static, or dynamic?
-- gekko
The points themselves are static but the view frustum changes with every call to the point that they have nothing in common with the previous call.
You absolutely want a quadtree for this, or an octree if the points vary a lot in 3D.

What you store in the tree could either be grid locations (if you tend to have multiple points in any one grid cell) or the points themselves.

Don't drill down to unique points though - stop recursing when you get to some fixed number which will best be found by experiment bit probably can stay at about 100 or so. When traversing the tree, add the points to a dynamic VB and draw them in one hit when you're done.


The internet is full with quad/octree stuff so I'm sure google will turn up something useful.

There won't be any magic hardware fixes for this, so whatever version of DX you're using won't really help.

EDIT: If the points stay static forever, you could actually store premade vb's in the tree structure. If you don't end up with too many, this may get you off the cpu quicker at a cost of more draw calls. Experimentation to find the optimal solution is what's needed here though.
------------------------------Great Little War Game

This topic is closed to new replies.

Advertisement