Sign in to follow this  
b3rs3rk

Isometric Tiles Culling

Recommended Posts

I've already posted this in the Iso Forum, but got no responses... Anyway, I've started a small isometric renderer and now I would like to reduce a bit the draw calls... does anyone know a good tutorial on how to check which iso-tiles are on screen? Thank you :)

Share this post


Link to post
Share on other sites
How are you doing World to Screen space transformation?

For a well optimized or lightweight transformation I don't see tranforming point/circle/rect(whatever the bounding shape happens to be) in to the screen space and culling if it's outside the screen boundaries to be a bad solution.

Share this post


Link to post
Share on other sites
Quote:
Original post by rxa
How are you doing World to Screen space transformation?


Still have to work on that :D
It's the first time I look at this, I really don't know where to start :/

Share this post


Link to post
Share on other sites
First things first: don't draw anything that's not currently in your view. Of course, you'd first have to know what exactly IS in view, and what not.
So, as rxa suggested: get those transformations working, then find out a way to check if something's in view or not, and if not, don't draw.

May sound like a simple answer/solution, but it reduces the number of calls a lot.

=]

[Edited by - stenny on June 4, 2009 5:59:48 AM]

Share this post


Link to post
Share on other sites
it's a bit more complex than that. Of course, once I'm able to perform World to Screen space transformation easily, I could cycle on the tiles list and check if they're visible (each frame or every camera update), but I suppose there's a better way.

With regular rectangular grids, one could easily compute the current visible rectangle on the grid and get the visible tiles id... could I do the same with iso-grids? maybe transforming viewport bounds on the isoGrid forth and back...

Suggestions ?

Share this post


Link to post
Share on other sites
Occlusion culling for isometric games is somewhat similar to culling in 3D games - you'll need to take the height into account. It's easier though, because you don't need to take different camera directions into account.

I'd go for a high-level culling first: a quadtree or grid, where each cell contains multiple tiles. Each cell should know it's lowest and highest point. Then, for each cell, you can calculate if it can (partially) be seen. If so, draw all tiles in that cell (or, if you want to, perform checks for individual tiles - although that will likely cost more CPU than it's worth, given that nowadays graphics cards can handle quite a few polygons). If not, you can safely discard all tiles from that cell.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this