Non-Euclidean physics (for real this time)

posted in Vaguely In Focus
Published November 18, 2014
Advertisement
I know, I know. I've got the whole boy-who-cried-wolf thing going on here, but it actually works this time!

It's crazy computationally expensive, the whole thing.

The rendering is awful. Since there's no way to predict both accurately and cheaply the max bounds of a polygon, there's no good way, from what I can think of, to cull off-screen objects other than over-estimation. It's currently being calculated by finding the maximum amount that any point in space can move, given the distortions, and sweep the bounding box to come up with something I can do a window test against. I currently don't see a better way to do it, though. Gaussian transforms don't play well with efficiency, but they look soooo pretty sad.png

The physics is the same way. The only way to quickly cache possible collisions, without actually doing a full computation, is to do the same sort of sweeped-box thing that the renderer does. This is actually a big problem, because over-estimation scales very rapidly. The physics solver is iterative, so false-positives scale.

So when I explain this to people, their first reaction is along the line of "Well, why can't you determine the max bounds of a polygon at runtime? You draw the polygon at runtime, why can't you cull them at runtime?" It's tricky. Because warping doesn't just happen at vertices, but also inside polygons and at the edges. This means that an analytic solution would be a bit obtuse as an efficient method to cull objects, because if I was smart enough to figure it out then it'd still be at least as complicated as the actual distortion function.

So what's the framerate like? It usually stays around 60fps, but it's pretty easy to make a distortion that brings the simulation down to around 30fps or so. That's BAD. There's really nothing going on in the prototype right now besides rendering and physics, and it can barely keep a 60fps budget.

At this point, I'm kind of at a loss. Either I can settle for a constant 30fps or I can figure out a different way to do things. Maybe I could find a simple over-approximation of the distortions. Maybe I could get a better computer and act like nothing happened.

Oh well. I'll see where this goes.

As always, here's a look at how awesome everything is right now. The physics is pretty much impenetrable, and the rendering looks sufficiently smooth. Now to actual content! :D
[media]
[/media]
2 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement