Postmortem: “Orient: A Hero’s Heritage”

Discuss about anything related to the Irrlicht Engine, or read announcements about any significant features or usage changes.
Vsk
Posts: 343
Joined: Thu Sep 27, 2007 4:43 pm

Post by Vsk »

Rogerborg, when you mean high order operation you mean operation with the Big O operations in high order right? (at least that is what I have undertstood), ofcourse I am not talking about that, that have nothing to do with irrlicht and is only the developer responsability. I have no performance problem due to O(N^2) or even more I don't even have O(n*logn)!. Most of my logics operation OVER IRRLICHT CODE, it about O(1)->O(n), and the O(n) are not very use it.
I have almost every significant operation optimizaded, so I have to then do the GRAPHIC PART OPTIMZATION (what I and the guy are talking about).

Irrlicht don't have several of optimization that other 3d engines have and must have for a good performance. (Should I call Saturn or agi-shi to put them out? :P).
So we have to do it for oursefl. That is time costing.
Terrain continue to be a problem, even with arras terrain, which resolve much problems, but still don't allow other thing.
Lod is easy to add, ok.
But occlusion culling!!! not is not easy.
And anothers optimization over huge terrains, and others, like spatial structures that are part of a 3d engine, like bsps, octrres and so on.

I have no name any optimization that has not to be with graphic.
First of all, whole computer programing and game programing specially was, still is and always be full of optimization and shortcuts. You can't dream of producing good software without it.
Yes...I totally agree, is the matter of this disccuion right?
And as I explain before, I have optimizade MOST of my program but that the much the graphic part... which is made by... irlicht: 3d engine ;).
If I use a 3d engine is to short development time, is one of the abstraccion benefits. That why I didn't use opengl native and take a thrid party abstraction from it.
Second, Irrlicht is just graphic engine and as such it does optimization graphic engine can do: culling, mipmapping and such. Sure you can always think of ways of improving it but you can't expect much more. More optimization can be done only based on specifics of your application and as such can be made only by you.
Yes, it is a 3d graphic engine. And as I name before there is a lot of general optimizations that has nothing to do with a speciif application.

By the way, I am not smahing irrlicht, AS I SAID, irrlicht is very good for fast development. I don't regrest from choosed in it, and with the news add that gettin standarized, irrlicht will become not only good for fast development, but very complete and easy. But optimzation is still lacking (I think is the only thing against).

Since december I am trying to collaborate trying to create some occlusion culling alghoritm. Painfully work and study spend my time while awake, and sleep :x. The hard will be adding this without recompiling irrlicht, (I still not sure if possible, at least for some of them). Even so, I have not decisted and will try to add something of this. And remember that if the monsters that create extension like blindside, bitplane, arras, acki, etc have not done it yet, is because is not so easy ;-).

My 2 cents :P :o.
arras
Posts: 1622
Joined: Mon Apr 05, 2004 8:35 am
Location: Slovakia
Contact:

Post by arras »

Well I was not reacting to you specifically, rather to discussion as whole and to dead project we speak here about :)

To that occlusion culling: I have some doubts if it is worth your energy. I would say it will not result in such a great rise of efectivity in most cases.

What may improve your speed is some kind of static objects node. Engine will render few complex meshes fast, problem comes if you render many simple objects (they are rendered one by one). Usually particles, plants, grass, buildings and similar. These objects are mostly static and not interactive so you can improve render time by putting several of them in to one mesh buffer and rendering them in one group. Of course you should organize them in such fashion that they can be frustum culled effectively. I am speaking about the similar thing I did with my terrain tiles. This can rise render speed several times ...in fact few hundred times!

I am thinking about such "static" node for long time. Of course all objects in one mesh buffer have to share one texture. But that is not as big problem if you repeat few meshes.
Terrain continue to be a problem, even with arras terrain, which resolve much problems, but still don't allow other thing.
Well in fact I have started working on next version which would allow texture blending and LODs but stopped since right now I work on slightly different things (Pathfinding and GUI). I may resume it later.
And remember that if the monsters that create extension like blindside, bitplane, arras, acki, etc have not done it yet, is because is not so easy
Ufff ...I am really honored you name me among those "monsters" but I really do not feel to be quit equal of them :) ...I am better artist than programmer as you can see from my questions in beginners forum :wink:
Saturn
Posts: 418
Joined: Mon Sep 25, 2006 5:58 pm

Post by Saturn »

What measure does improve performance and what doesn't really depends on where the bottleneck is. Graphics programming is a pipeline business and the slowest pipeline stage determines the overall performance. Improvements made in the second slowest stage doesn't affect performance at all. So first thing to do when you believe your program to be too slow is to do experiments in order to identify the slowest stage. Batch count is irrelevant when you're not CPU bound. (but most often you are. ;))

What a graphics engine has to provide here is the means to allow to fix this slowest stage. Regarding occlusion culling I'm with arras, it is not as important as it seems on first sight. You are almost never vertex bound (with hardware vertex/index buffers that is) so it is only a fillrate question (pixel shading or raster ops). With modern cards' ability to discard pixels early based on depth check, it is often cheaper to just draw geom in a rough front to back order. When you use complex shaders it might help to render it with a depth only pass. But only do this when you're fillrate bound.

So before you optimize in the wrong area check where your app's problems lie. NVidia and ATI both have tools for this. Both have performance guides. Use their tools, read their docs. Most important is to understand that the weakest stage determines overall performance. Optimizing any other stage won't affect performance at all. Only problem is, that this stage differs with the hardware you use.
BlindSide
Admin
Posts: 2821
Joined: Thu Dec 08, 2005 9:09 am
Location: NZ!

Post by BlindSide »

Vsk wrote: monsters that create extension like blindside, bitplane, arras, acki, etc
Wow I have never been called a monster before :P

I recently implemented instancing in Irrlicht, along with VBOs you can get a massive speedup.

There is actually a really old occlusion culling extension for Irrlicht if someone can be stuffed implementing it in the latest release:
http://irrlicht.sourceforge.net/phpBB2/ ... php?t=5707

Theres also alot of other useful stuff on the forums, eg QuadTrees:
http://irrlicht.sourceforge.net/phpBB2/ ... t=quadtree

And CLOD:
http://irrlicht.sourceforge.net/phpBB2/ ... t=quadtree

Incase the links from the last two project pages don't work, they are both available for download here:
http://br.share.geocities.com/paulo_cmv/

Cheers
ShadowMapping for Irrlicht!: Get it here
Need help? Come on the IRC!: #irrlicht on irc://irc.freenode.net
Post Reply