# Beginner: not performing CPU-wise calculations on objects outside of camera space

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

## Recommended Posts

I'm learning graphics programming by iterating on a cubes demo I've been working on. The demo currently has 10000 cubes being rendered, but only a fraction of those are on screen at any given time in most cases. I know the GPU hardware typically takes care of only rendering what it needs to, and clipping out the rest, but before rendering, I still have to calculate animation positions and so forth. This only actually needs to be done if a given cube is going to be on-screen though, which leaves me wondering if there's an easy way to only perform CPU-wise calculations on cubes that are going to be visible in camera space. Is this effectively a collision detection problem, i.e. working out if each cube overlaps the camera area? What's the usual approach?

##### Share on other sites

Gpu does run vertex shader for each objects visible or not. What you are missing is frustum culling.

##### Share on other sites

This is called frustum culling, and is usually performed in batches as the GPU already does it at some point in the pipeline for individual triangles (so doing it on each cube on the CPU is mostly a waste of time). So usually you group your cubes according to some spatial data structure, the simplest being fixed grid buckets, where you test each bucket for intersection and ignore all cubes in the bucket if it doesn't intersect the camera's frustum, that way you can save a lot of work for the GPU down the line with comparatively little work done by the CPU. Then for whatever cubes are (potentially) visible, you can run other stuff that doesn't need to be done if the cube isn't on screen.

##### Share on other sites

You can also represent your individual objects with a bounding object to simplify the calculations.  Bounding spheres are really simple to test against a frustum, but since they don't fit exactly to the enclosed object then it gives you a conservative list of what is inside the frustum (and hence should be drawn).  You can then build your spatial data structure using the bounding volumes as well.

• ### What is your GameDev Story?

In 2019 we are celebrating 20 years of GameDev.net! Share your GameDev Story with us.

• 28
• 16
• 10
• 10
• 11
• ### Forum Statistics

• Total Topics
634107
• Total Posts
3015549
×