Paging as a core feature - design notes

Discussion area about developing or extending OGRE, adding plugins for it or building applications on it. No newbie questions please, use the Help forum for that.
User avatar
syedhs
Silver Sponsor
Silver Sponsor
Posts: 2703
Joined: Mon Aug 29, 2005 3:24 pm
Location: Kuala Lumpur, Malaysia
x 51

Re: Paging as a core feature - design notes

Post by syedhs »

sinbad wrote:Er, when it's done? ;) I'm hoping later this month for beta.
That sounds like a date estimation to me :)
A willow deeply scarred, somebody's broken heart
And a washed-out dream
They follow the pattern of the wind, ya' see
Cause they got no place to be
That's why I'm starting with me
Rhynedahll
Halfling
Posts: 77
Joined: Thu Jan 08, 2009 2:03 am
x 1

Re: Paging as a core feature - design notes

Post by Rhynedahll »

I have read the other posts but one thing is not exactly clear to me. (Sorry in advance if I failed to understand a previous answer.)

Will the new paging feature replace the functionality of PLSM2 and ETM/ETL completely or will it be necessary to write code that references the new feature to replace the mechanisms of these two?

Thanks
The Key to Magic -- Book One: ORPHAN
An epic fantasy by H. Jonas Rhynedahll available on Kindle.
The Key to Magic
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179

Re: Paging as a core feature - design notes

Post by jacmoe »

Those are addons. :wink:
PLSM2 stands for Paging Landscape, so that will probably be obsoleted by this component.
ETL is probably going to be rewritten. It's not going to be replaced because it's a terrain editing library. :)
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 67

Re: Paging as a core feature - design notes

Post by sinbad »

What you use is entirely up to you - as is common in open source, nothing is 'obsoleted' as such; the new paging and terrain components are merely my take on the features. You're free to use or not use them (they're optional), and to use other alternative implementations from the community if that serves your needs better.

The new terrain system is inherently editable though, that was one of the core design points that TSM didn't cover before. Other enhancements over TSM will include:

- hierarchical geometry batching; batch counts reduce at lower LODs as well as vertex count. At the lowest level of detail, the entire terrain page is a single batch.
- LOD now adapts in real-time to camera settings (viewport sizes & LOD bias) so you can use the same terrain with multiple views efficiently
- related to this, more detailed geometry can be loaded / unloaded to save GPU memory when the terrain is in the distance
- skirts are used rather than stitching to avoid cracks in geometry; this means fewer indexing arrangements & lower overall index buffer usage
- saving & loading of terrain built in, including loading / processing in a background thread
- in-built support for splatting layers, configurable sampler inputs and pluggable material generators (WIP)
- support for generating global normal maps, shadow maps and horizon maps (TODO)

I'm hoping it'll be a useful option for people once it's finished. I'm still working on it, the hierarchical batching caused me a few headaches, but it's coming along quite nicely. I'll post more when I have something nice to show instead of just debug output ;)
User avatar
Wolfmanfx
OGRE Team Member
OGRE Team Member
Posts: 1525
Joined: Fri Feb 03, 2006 10:37 pm
Location: Austria - Leoben
x 100

Re: Paging as a core feature - design notes

Post by Wolfmanfx »

Nice feature list :)
But you do not plan any terrain morph features like flatten, smoothing and so on?
CABAListic
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 2903
Joined: Thu Jan 18, 2007 2:48 pm
x 58

Re: Paging as a core feature - design notes

Post by CABAListic »

As of now the terrain's heightmap can be modified via array access. This is all you need to edit terrain, but at the same time it's a very low-level way to do it. For editors and similar applications you'll probably want some kind of brushes for terrain editing (including the techniques you mentioned) built on top of the low level edits. I'm not sure what sinbad's current plan involves in that regard, but whatever of these features is not covered by the core terrain component, I'll cover in the new "ETL" version ;)
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 67

Re: Paging as a core feature - design notes

Post by sinbad »

I may add some 'helpers' for that kind of thing later, but really that's an editor feature rather than a core terrain library feature IMO. As CABAListic says, you have everything you need to efficiently edit the terrain at a heightmap-array level anyway, everything else is just icing and syntactic sugar on top of that.
User avatar
KungFooMasta
OGRE Contributor
OGRE Contributor
Posts: 2087
Joined: Thu Mar 03, 2005 7:11 am
Location: WA, USA
x 16

Re: Paging as a core feature - design notes

Post by KungFooMasta »

- in-built support for splatting layers, configurable sampler inputs and pluggable material generators (WIP)
Sweet! What is the workflow/interface going to be like? Can users add/remove splatting textures and the underlying material is managed automagically?
Creator of QuickGUI!
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 67

Re: Paging as a core feature - design notes

Post by sinbad »

Yes. The user can define a 'LayerDeclaration' which describes what sampler inputs go into a 'layer' - you can choose between elements of albedo, normal, height, and specular, then add a chosen number of layers with specific texture bindings to those inputs. That information is passed to the material generator which is then in charge of creating material based on those inputs, and also on terrain-global inputs like the overall normal map, ligthing map, or horizon map (which ones are needed is up to the generator to indicate and the terrain will generate them). Each generator can define a set of 'profiles' which can be used to provide hardware fallbacks and selectable detail levels (e.g. to trade performance for quality, or for an editor to test how the terrain will look on lower-end hardware).

I'll be providing a default generator which can deal with albedo, normal & specular mapping per layer initially, and will add support for lightmapping and horizon mapping later on. But, anyone else can plug in their own generators to do things differently, defining their own materials or opting for deferred shading / light pre-pass shading etc. I don't want to write all those options in initially, but the extension points are there to do it.
Tony Richards
Halfling
Posts: 86
Joined: Mon Nov 10, 2008 9:32 pm
Location: New York, NY, USA
x 1

Re: Paging as a core feature - design notes

Post by Tony Richards »

Thanks, sinbad. This is awesome. I can't wait to use it.

Do you have this located in a branch in SVN, or are you working on it offline? I'd like to watch the progress in hopes that I may learn a little more about the guts of Ogre. (I speak C++ a whole lot better than English :mrgreen: )
Image IndieZen.org - Open source game development tools, game engine, and MMO frameworks
User avatar
stealth977
Gnoll
Posts: 638
Joined: Mon Dec 15, 2008 6:14 pm
Location: Istanbul, Turkey
x 42

Re: Paging as a core feature - design notes

Post by stealth977 »

it is in the SVN /components subdirectory :)
Ismail TARIM
Ogitor - Ogre Scene Editor
WWW:http://www.ogitor.org
Repository: https://bitbucket.org/ogitor
User avatar
tdev
Silver Sponsor
Silver Sponsor
Posts: 244
Joined: Thu Apr 12, 2007 9:21 pm
Location: Germany
x 14

Re: Paging as a core feature - design notes

Post by tdev »

awesome work!

i tried to couple your new Terrain with this paging, and noticed that quite some parts are still missing. (or did i miss something)
Is there anywhere a more improved Demo_Paged that actually loads something, so i can see the whole architecture working (not just debug display, skipping everything)
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 67

Re: Paging as a core feature - design notes

Post by sinbad »

Not yet. TerrainPageContent will the be glue between the two but as noted in my terrain thread, this is not fully implemented / tested yet. The debug test was just to prove that the core paging system worked as expected, hooking it up to the terrain requires that the terrain is finished first.
lulolean
Gnoblar
Posts: 5
Joined: Sat Jul 07, 2007 7:00 am

Re: Paging as a core feature - design notes

Post by lulolean »

I stumbled across this thread while looking for a way to implement an earth-size paging system with multiple types of content. I'm excited you are finally addressing paging in a such broad and generic manner! Your last ETA said end of May. What's your latest estimate for completing the paging system with terrain?
lulolean
Gnoblar
Posts: 5
Joined: Sat Jul 07, 2007 7:00 am

Re: Paging as a core feature - design notes

Post by lulolean »

I finally found the "New Terrain Early Shots" thread where you said you're swamped and would rather not provide estimates, so I'm looking forward to the terrain component whenever you get it done.
User avatar
akilar
Greenskin
Posts: 138
Joined: Wed Jun 20, 2007 11:42 am
Location: Taiwan
x 17

Re: Paging as a core feature - design notes

Post by akilar »

HI! all:
sorry, my english is very bad. :oops:
i want to project object's shadow on the new ogre terrain, how to do?
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 67

Re: Paging as a core feature - design notes

Post by sinbad »

You edit the shaders generated in TerrainMaterialGeneratorA or wait for me to do it. It's on my list.
User avatar
Beauty
OGRE Community Helper
OGRE Community Helper
Posts: 767
Joined: Wed Oct 10, 2007 2:36 pm
Location: Germany
x 39

Re: Paging as a core feature - design notes

Post by Beauty »

I didn't read all the thread now.
One question: Is the new scene manger ready?

Nice would be to fill out the open description points on the wiki page SceneManagersFAQ.
There I added a section for the new scene manager 6 months ago.


Here I has an idea:
On an increasing terrain the Terrain Scene Manager creates many little ramps.
Maybe it would be more nice to have a continuous (smoth) ramp instead.
Or an option to enable this possibility.

Here I created an example how it could be (see black line)
Image
Image
Help to add information to the wiki. Also tiny edits will let it grow ... :idea:
Add your country to your profile ... it's interesting to know from where of the world you are.
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 67

Re: Paging as a core feature - design notes

Post by sinbad »

It's not a SceneManager, just a component that can be used with any other SM. The basic Grid paging strategy is implemented, I'll be working on integrating that with the new terrain component.

Stepping is entirely down to your input data, not the renderer. Usually it's because you've used a low-precision input format like 8-bit greyscale. The new terrain component allows you to use images of any precision or direct float input format for maximum precision. Personally I've seen no stepping in the new terrain component with properly crafted input data.
shanefarris
Greenskin
Posts: 107
Joined: Sun Mar 01, 2009 8:36 pm
x 7

Re: Paging as a core feature - design notes

Post by shanefarris »

The design image links are broken, anyone know where I can find them? Also, I want to learn more about creating my own page strategy, is the best way to learn this system to just go through the code still? I don't see any other documentation on this.
unsane
Gnoblar
Posts: 2
Joined: Sat Sep 10, 2011 8:04 am

Re: Paging as a core feature - design notes

Post by unsane »

(Sorry for my english)
I've a question about OgrePaging Component(pagecontent loading and read).

Code: Select all

bool Page::prepareImpl(StreamSerialiser& stream, PageData* dataToPopulate)
{
....//some code
     PageContentCollection* collInst = collFact->createInstance();
     if (collInst->prepare(stream)) // read type-specific data
     {
	dataToPopulate->collectionsToAdd.push_back(collInst);
     }
....//some code
}
//this function will call next function
bool SimplePageContentCollection::prepare(StreamSerialiser& stream)
{
    if (!stream.readChunkBegin(SUBCLASS_CHUNK_ID, SUBCLASS_CHUNK_VERSION, "SimplePageContentCollection"))
	return false;

     bool ret = true;
    for (ContentList::iterator i = mContentList.begin(); i != mContentList.end(); ++i)
	ret = (*i)->prepare(stream) && ret;

     stream.readChunkEnd(SUBCLASS_CHUNK_ID);

     return ret;
}
so, the collinst is new, in this funciton :SimplePageContentCollection::prepare(StreamSerialiser& stream)
the SimplePageContentCollection::mContentList will always is empty , isn't it?Hence all world1_section10000000x will not be read....