Outerra forum

Outerra Engine => Development screen shots and videos => Topic started by: angrypig on May 08, 2012, 09:00:07 am

Title: New object rendering pipeline
Post by: angrypig on May 08, 2012, 09:00:07 am
Hi guys!

As you know we are working on a new import tool that will be available for custom model imports. However new import tool alone is not enough, because our existing object rendering pipeline was less efficient for objects and even a few objects could cause performance issues. This was caused by multiple bugs (in the old import and renderer) and a couple of bad decision in renderer design made by my younger me. :) So I decided to redesign and rewrite some parts of the object renderer to cleanup the old inefficient stuff and to make a few improvements. That is why it is taking longer than expected.

New stuff:

LOD meshes for OT Guy (by Lukasz Grabny alias Mahnoor) model were automatically generated in Blender, so the LOD switching is not perfect at the moment (I gave it only 5 minutes)

Stuff that has to be done before the release:

There are several byproducts of this new obj redererer that can be reused in tree renderer like new atmosphere scattering and mesh optimizations. I will start to work on it after we release the import tool. That new grass stuff causes that forests needs 3D tree more than ever. I also have a lot of ideas in my head that should improve the quality of trees and the rendering performance, simplifying the rendering pipeline. I am quite eager to start on it as soon as possible.

here are two videos with classical music showing the current state (frustum culling issue in first video has been already fixed)

Outerra: obj renderer stress test 1 (http://www.youtube.com/watch?v=9HOlNCuWmiw#ws)
Outerra: obj renderer stress test 2 (http://www.youtube.com/watch?v=Ueqt-k7Ey0M#ws)
Title: Re: New object rendering pipeline
Post by: Juggernautz on May 08, 2012, 09:32:46 am
This is super awesome for static objects, and if the LODs are done correctly mesh popping (such as can be seen in the faces) shouldn't be too much of an issue.

I'm curious what your plans are for animated or deforming meshes, too. Do you have a pipeline for bones and skinning, or anim trees or something like that? I'm sorry if this has been answered before, I'm quite new to the board and extremely excited about the potential of this engine.
Title: Re: New object rendering pipeline
Post by: angrypig on May 08, 2012, 09:44:14 am
Yes the pipeline for bone skinning/animation is there but is not completed yet, i have to reactivate old functionality first.
Title: Re: New object rendering pipeline
Post by: Bartolomeus on May 08, 2012, 09:47:35 am
Really great news! I think 4 LOD's are enough, even for larger and detailed objects (especially like ships, planes etc).

Is there a limit for the texture size? And nice to hear about the automatic bone generation for the basic animated parts. But if it is possible to import custom animations?

Marko
Title: Re: New object rendering pipeline
Post by: Juggernautz on May 08, 2012, 09:49:56 am
Awesome. :D Will be interesting to see how many ms per skeletal anim are required. Depending on how many cycles are devoted to anims, if AI is applied to large groups rather than individual agents (ala Total War series) it might be possible to field huge groups of animated characters. Pretty excited about the prospect!
Title: Re: New object rendering pipeline
Post by: lookastdu on May 08, 2012, 10:02:43 am
Very nice, but emissive textures will be supported? They are useful for car/plane gauges in my opinion.
Also dynamic textures will be too? To use for example in digital speedometer/digital gauge.

And about LODs: theoretically 4 should be enough, but I will rather ask if changing max number of LODs in the future will be quite easy or not?
Title: Re: New object rendering pipeline
Post by: angrypig on May 08, 2012, 11:12:12 am
i don't see any reason why not to support them. But what it needs is to make some interface into a scripting language to allow modders draw into such textures...

It is not big deal to support more LODs in future, i am just too lazy do it now :), to have max 4 LODs for every package just simplifies some pointer arithmetic...
Title: Re: New object rendering pipeline
Post by: andyeder on May 08, 2012, 12:24:16 pm
Great work. It looks like things are progressing well.

Is the LOD set to 4 levels for optimisation reasons? I'm just thinking it might be worth a few more additional levels. Will you also be looking at generating impostors for some of the objects? Depending on the geometry these could potentially be blended in/out with lower LOD geometry.

EDIT: Just read about the 4-LOD's for ptr arithmetic simplification.
Title: Re: New object rendering pipeline
Post by: ZeosPantera on May 08, 2012, 12:45:52 pm
How many people are in that marching band? is it 30x200?

It is insane btw.
Title: Re: New object rendering pipeline
Post by: angrypig on May 08, 2012, 01:23:30 pm
20 x 150 = 3000 :)
Title: Re: New object rendering pipeline
Post by: aewyn on May 08, 2012, 03:26:29 pm
Your rendering seems pretty efficient already if it can handle rendering that many objects without even a minor hiccup. Kudos to you guys. Can't wait to see the further improvements.
Title: Re: New object rendering pipeline
Post by: ChookWantan on May 08, 2012, 06:10:58 pm
Aw, no more shiny Guy?  :'(
Title: Re: New object rendering pipeline
Post by: mctash on May 08, 2012, 10:27:15 pm
I know 0 about graphics programming or what you have done here, but can I be the first to say J*s*s T*tty F*ck*n* C*r*s*! As a layman (which isn't worth much I know) I'm impressed!
Title: Re: New object rendering pipeline
Post by: foxfiles on May 10, 2012, 12:44:17 pm
about LODs, is one OT's world/planet already the "child" of a bigger structure/model ?
Let's push the limits and consider we would like to build the Solar system (or another one), located in our Galaxy, and so on...
Can you already manage to do that with your LOD Hierarchy ? or you would do different ?
or it is crazy to imagine that larger space models can be managed by the engine ?

But maybe I am off-topic as you are talking about LODs per imported Object...  :(
Title: Re: New object rendering pipeline
Post by: necro on May 11, 2012, 01:57:19 am
Are there some guidelines for the tris-limits at the several LoD-levels?
On the project i was working for before, they existed.
On the low detailed level it was around 10 - 100, on max detail it was 10000. So you have 4 levels (5 are also ok, because you have one normal level and two lower/higher detail levels)

My proposal would be
LoD 1) - 10..100
LoD 2) - 100..1000
LoD 3) - 1000 .. 3000
LoD 4) - 3000 .. 10000

Of course that doesnt make sense for all of the objects. But its useful as guideline i think.
Title: Re: New object rendering pipeline
Post by: Chaoss on May 11, 2012, 05:17:52 am
Are there some guidelines for the tris-limits at the several LoD-levels?
On the project i was working for before, they existed.
On the low detailed level it was around 10 - 100, on max detail it was 10000. So you have 4 levels (5 are also ok, because you have one normal level and two lower/higher detail levels)

My proposal would be
LoD 1) - 10..100
LoD 2) - 100..1000
LoD 3) - 1000 .. 3000
LoD 4) - 3000 .. 10000

Of course that doesnt make sense for all of the objects. But its useful as guideline i think.

I'd make LoD 4 a billboard/flat or VERY VERY basic shape of an object (for example cars would be a simple 18 triangle block (20 if you include the bottom), and keep LoD's 1 through 3 as standard LOD's. Don't forget that objects will be seen from much greater distances than in most games/real time 3d apps
Title: Re: New object rendering pipeline
Post by: necro on May 11, 2012, 11:36:56 am
It doesnt matter if LoD 1 or 4 is the lowest one. I suggested 10 tris, what would be a billboard model of course. Why do you tell me the distance depending visibilities of game models? Did i wrote something differing? I'm confused o.O But i'm sure i understand the idea of level of details (some years ago) ;) correct me, if i'm wrong.
Title: Re: New object rendering pipeline
Post by: ZeosPantera on May 11, 2012, 12:37:59 pm
I don't think billboards should come into it with only 4 levels of detail.. Six or eight.. I am all for it. But even 10-12 pixel high items should probably pop out of cardboard mode.