Jump to content
  • Advertisement
Sign in to follow this  
GoodFun

DirectX 10 efficient view frustum culling

This topic is 2992 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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

Share this post


Link to post
Share on other sites
Advertisement
I forgot to mention, the points are all equally distributed in a rectangular grid, sort of like a height field.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!