Outerra forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

Outerra Tech Demo download. Help with graphics driver issues

Pages: [1] 2

Author Topic: New object rendering pipeline  (Read 11051 times)

angrypig

  • Outerra Developer
  • Sr. Member
  • *****
  • Posts: 454
    • http://outerra.com
New object rendering pipeline
« 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:
  • frustum culling on all objects (static and dynamic)
  • level of detail, MAX 4 LODs (do we need more?)
  • normal maps (automatically generated tangent frames in importer)
  • skinning, still need some work: like automatic bone generation from node name and hierarchy which means no need to create skinned geometry in Max/Blender/Maya for simple node movements like wheels and plane controls)
  • mesh indices optimization (Forsyth algorithm automatically done in importer)
  • mesh pre-transform vertex data optimization for linear access (automatically done in importer)
  • emulated double float precision for static objects position (eliminates CPU->GPU instance data transfer) which means less CPU processing for static objects (culling and LOD only) because all required stuff is on GPU memory
  • faster atmospheric scattering for objects (using transform feedback, it is more than 10x faster now, 0.5ms -> 0.04ms
  • easier material modding (multiple material library support for one object)
  • optimized vertex format (less memory means faster) and support for two UV channels

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:
  • deferred shadowmap which will also allow shadows on grass and better filtering etc.
  • currently working on static object pipeline so all static objects like hangars or buildings should work tomorrow
  • dynamic objects skinning (wheels, plane controls, animations etc.)
  • configuration files like material definitions and vehicle/planes configurations (this also allow modify existing objects and derive new ones)

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)


« Last Edit: May 08, 2012, 09:29:18 am by angrypig »
Logged

Juggernautz

  • Jr. Member
  • *
  • Posts: 48
  • newbie
Re: New object rendering pipeline
« Reply #1 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.
Logged

angrypig

  • Outerra Developer
  • Sr. Member
  • *****
  • Posts: 454
    • http://outerra.com
Re: New object rendering pipeline
« Reply #2 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.
Logged

Bartolomeus

  • Sr. Member
  • ****
  • Posts: 288
    • VirtualTechArt Design
Re: New object rendering pipeline
« Reply #3 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

Juggernautz

  • Jr. Member
  • *
  • Posts: 48
  • newbie
Re: New object rendering pipeline
« Reply #4 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!
Logged

lookastdu

  • Member
  • **
  • Posts: 74
  • cars <3
Re: New object rendering pipeline
« Reply #5 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?
Logged

angrypig

  • Outerra Developer
  • Sr. Member
  • *****
  • Posts: 454
    • http://outerra.com
Re: New object rendering pipeline
« Reply #6 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...
Logged

andyeder

  • Newbie
  • Posts: 3
Re: New object rendering pipeline
« Reply #7 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.
Logged

ZeosPantera

  • ||>>-Z-<<||
  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2518
  • #1 Outerra Fan Boy
    • My Youtube
Re: New object rendering pipeline
« Reply #8 on: May 08, 2012, 12:45:52 pm »

How many people are in that marching band? is it 30x200?

It is insane btw.
Logged
"Fear accompanies the possibility of death, Calm shepherds its certainty" - General Ka Dargo

angrypig

  • Outerra Developer
  • Sr. Member
  • *****
  • Posts: 454
    • http://outerra.com
Re: New object rendering pipeline
« Reply #9 on: May 08, 2012, 01:23:30 pm »

20 x 150 = 3000 :)
Logged

aewyn

  • Newbie
  • Posts: 1
  • Gamer
Re: New object rendering pipeline
« Reply #10 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.
Logged

ChookWantan

  • Member
  • **
  • Posts: 62
  • They call me Chook.
Re: New object rendering pipeline
« Reply #11 on: May 08, 2012, 06:10:58 pm »

Aw, no more shiny Guy?  :'(
Logged
With all its sham, drudgery, and broken dreams,
it is still a beautiful world.

mctash

  • Full Member
  • ***
  • Posts: 153
Re: New object rendering pipeline
« Reply #12 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!
Logged

foxfiles

  • Full Member
  • ***
  • Posts: 215
  • Reality is merely an illusion
Re: New object rendering pipeline
« Reply #13 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...  :(
« Last Edit: May 10, 2012, 01:30:33 pm by foxfiles »
Logged
Reality is merely an illusion, albeit a very persistent one - A. Einstein

necro

  • Sr. Member
  • ****
  • Posts: 451
    • google+ Blog
Re: New object rendering pipeline
« Reply #14 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.
Logged
Pages: [1] 2