Game Development Community

Object Instancing & Occlusion Culling Support Plans

by Dark Tengu · in Torque 3D Professional · 04/18/2011 (8:56 pm) · 9 replies

So I'm really at a crossroads with which engine to use. I still believe that Torque's networking is bar none the best in the industry. I am currently in the pre-production phase of my project and have the design document done. I am currently working on the technical documents and I'm really worried about Torque's performance. It currently doesn't support occlusion culling (big negative). I also can't find anything to indicate that it supports hardware instancing of objects (another potential big negative). Can anyone tell me if it supports these or will in the near future?

I feel like Torque is really getting left in the dust in some major areas. Because of the slow development, even the rendering engine is quite dated.

#1
04/19/2011 (10:29 am)
There is hardware instancing since 1.1 Beta 2.

Looks like it is planed for the final release of version 1.1

My guess, if it's not in the final, it will follow shortly that.

Quote:I feel like Torque is really getting left in the dust in some major areas. Because of the slow development, even the rendering engine is quite dated.

Actually quiet the opposite, now is the time where Torque3D rising again!
#2
04/19/2011 (10:45 am)
Occlusion culling (using placed occluders) is being finished up for 1.1 currently (along with portals / zones, etc.).

And I BELIEVE 1.1 (even in the early betas) brought with it hardware instancing on D3D9 hardware.

--

doh, beat
#3
04/19/2011 (12:09 pm)
Good news. That relieves a lot of my concern.
#4
04/19/2011 (1:12 pm)
Note that hardware instancing is very sensitive to how much data has to be instanced. You need to use it only on smaller meshes... less than 200 or 300 verts... as it can be slower than doing the extra draw calls on larger meshes.

This is why it is now controlled by the preference: $pref::TS::maxInstancingVerts (the old $pref::Video::disableHardwareInstancing has been removed).
#5
04/19/2011 (1:33 pm)
200 to 300 verts? Ouch.
#6
04/19/2011 (6:47 pm)
Quote:less than 200 or 300 verts
Is that normal? That's not enough for characters then.
meh, eventually it's possible with Nvidias Skinned Instancing or something

But it's cool that it's automatically checking the vertex number, for now.
#7
04/20/2011 (7:49 am)
@Alexander

Our implementation doesn't support skinned characters at all. This is mostly a limitation of Torque which does all skinning on the CPU... it cannot take advantage of hardware instancing in that manner. Still getting instancing and skinning working in a generic manner is a much tougher issue.

Still if you look at the details of that NVidia example you'll see that 1) it uses DX10 style instancing which is different from DX9 and 2) it depends heavily on lower poly LODs to get performance. Not to mention a demo can optimize for its particular case where as we need a solution that works for any scene.
#8
04/20/2011 (9:33 am)
Hardware instancing really is mostly for the "filler" to make the world feel otherwise less empty. That being said I don't see 200-300 verts being a huge issue (especially since you can change that value to support instancing a 500+ vert object in your game if you need and if it performs well enough).

I'm guessing the push for skinned instancing would be for crowds etc?
#9
04/20/2011 (2:07 pm)
@Tom - I already thought that it might be more complicated. But know I got the definite answer. Thanx :)

@Bryan - I was speculating on having lots of characters in the game, like for a single player action RPG, many NPCs or even a crowd. May it be a crowded city with neutrals or hordes of enemies. And there is also the city itself.

The actual push for Skinned Instancing was a speculation about the vertex/poly count, since skinned characters might have more than 200-300 vertices. So the technique could have been different and allow a better performance.
But I also got this thought about the LOD mentioned in the Nvidia demo, which Tom confirmed.