PagedGeometry v1.05 - High speed forest rendering
-
- OGRE Expert User
- Posts: 975
- Joined: Thu Aug 04, 2005 4:14 am
- Location: Santa Clara, California
- x 4
PagedGeometry v1.05 - High speed forest rendering
What is PagedGeometry?
The PagedGeometry engine is an add-on to the OGRE Graphics Engine, which provides highly optimized methods for rendering massive amounts of small meshes covering a possibly infinite area. This is especially well suited for dense forests and outdoor scenes, with millions of trees, bushes, grass, rocks, etc., etc.
Paged geometry gives you many advantages over plain entities, the main one being speed: With proper usage of detail levels, outdoor scenes managed by PagedGeometry can be >100x faster than plain entities. Another advantage is that the geometry is paged; in other words, only entities which are immediately needed (to be displayed) are loaded. This allows you to expand the boundaries of your virtual world almost infinitely (only limited by floating point precision), providing the player with a more realistically scaled game area.
Features
â—
The PagedGeometry engine is an add-on to the OGRE Graphics Engine, which provides highly optimized methods for rendering massive amounts of small meshes covering a possibly infinite area. This is especially well suited for dense forests and outdoor scenes, with millions of trees, bushes, grass, rocks, etc., etc.
Paged geometry gives you many advantages over plain entities, the main one being speed: With proper usage of detail levels, outdoor scenes managed by PagedGeometry can be >100x faster than plain entities. Another advantage is that the geometry is paged; in other words, only entities which are immediately needed (to be displayed) are loaded. This allows you to expand the boundaries of your virtual world almost infinitely (only limited by floating point precision), providing the player with a more realistically scaled game area.
Features
â—
Last edited by JohnJ on Fri May 02, 2008 4:53 am, edited 9 times in total.
-
- OGRE Retired Moderator
- Posts: 2060
- Joined: Thu Feb 26, 2004 12:11 am
- Location: Toronto, Canada
- x 3
-
- OGRE Retired Moderator
- Posts: 4011
- Joined: Fri Sep 19, 2003 6:28 pm
- Location: Burgos, Spain
- x 2
-
- Goblin
- Posts: 297
- Joined: Fri Jun 04, 2004 10:01 pm
- Location: South Africa
- x 1
-
- OGRE Expert User
- Posts: 975
- Joined: Thu Aug 04, 2005 4:14 am
- Location: Santa Clara, California
- x 4
PagedGeometry v1.03 precompiled examples - 3.99 MBFalagard wrote:Nice. I downloaded the source, but is there a compiled demo for the lazy? I'm not currently set up to compile this (Ogre is out of date, etc.).
Includes precompiled examples only
Keep in mind that the art in the examples is not very good, since their main purpose is to demonstrate PagedGeometry's use.
Examples 4 and 7 are probably the only two examples worth looking at, BTW. The rest are mainly demonstrating non-visual features, like PageLoader's, etc.
I may have to save that feature 'till v2.0, but I'm sure it will be included eventuallyMr_Ridd wrote:This is excellent. Although I was a bit disappointed when the leaves didn't rustle and break off when you walked past them

Last edited by JohnJ on Sat Jan 19, 2008 6:30 pm, edited 2 times in total.
-
- Orc Shaman
- Posts: 707
- Joined: Sun Apr 02, 2006 7:51 pm
- Location: Sacramento, CA
- x 1
-
- Gremlin
- Posts: 197
- Joined: Wed Apr 12, 2006 2:48 pm
- Location: Montreal, Canada
-
- Gnoblar
- Posts: 7
- Joined: Mon Oct 01, 2007 5:52 pm
-
- OGRE Retired Moderator
- Posts: 2060
- Joined: Thu Feb 26, 2004 12:11 am
- Location: Toronto, Canada
- x 3
You'd be better off with your artists creating polygon fins with alpha blended textures for fur on a modelWolfSpinach wrote:I assume you could use a system like this for doing fur? I'm thinking sort of like Conker or Viva Pinata.

Either of which are pretty off topic for a tree/grass loading and rendering system

-
- Gnoblar
- Posts: 7
- Joined: Mon Oct 01, 2007 5:52 pm
I was just wondering, since grass is normally generated in 3D programs by using a hair simulator, why not reverse the process.Falagard wrote:You'd be better off with your artists creating polygon fins with alpha blended textures for fur on a modelWolfSpinach wrote:I assume you could use a system like this for doing fur? I'm thinking sort of like Conker or Viva Pinata.Conker used a traditional fur shader, Viva Pinata used geometry for the paper effect.
Either of which are pretty off topic for a tree/grass loading and rendering system
Of course there are significant differences and hair-sims are normally a separate render pass, but I know very little about real time rendering pipelines, hence the question.
Of course, this is very impressive in its current form, especially the real time feedback.
-
- OGRE Moderator
- Posts: 3447
- Joined: Mon Jul 18, 2005 4:15 pm
- Location: Wales, UK
- x 58
-
- Old One
- Posts: 3245
- Joined: Tue Apr 24, 2007 8:23 pm
- Location: NY, NY, USA
- x 11
-
- Gnoblar
- Posts: 13
- Joined: Thu Apr 12, 2007 3:05 am
-
- Halfling
- Posts: 65
- Joined: Thu Mar 02, 2006 1:28 am
- Location: Israel
The screenshots and videos are amazing!
This looks almost as good as the stuff they do in farcry. The only thing missing is some movement to the trees. I wonder, since the trees aren't entities do they support animation? What about event driven animation?
This looks almost as good as the stuff they do in farcry. The only thing missing is some movement to the trees. I wonder, since the trees aren't entities do they support animation? What about event driven animation?
LowPolyCoop - Join the freedom!
-
- Greenskin
- Posts: 149
- Joined: Sat Apr 14, 2007 1:27 pm
Wow it really improved alot since the last time I checked, I amost dont notice the switch to imposters anymore also the grass is looking great.
Maybe its a little too fast
Sometimes when I move everything just dissapears, I think it has something to do with the time between 2 frames being zero.
I found this in Ogre.log, notice Worst FPS:
Maybe its a little too fast

I found this in Ogre.log, notice Worst FPS:
Code: Select all
Render Target 'PagedGeometry Example 7 - Lightmaps' Average FPS: 1050.18 Best FPS: 1309.69 Worst FPS: 2.32831e-007
-
- OGRE Expert User
- Posts: 975
- Joined: Thu Aug 04, 2005 4:14 am
- Location: Santa Clara, California
- x 4
Thanks for the feedback 

I'd enable vsync or turn up the screen resolution / anti-alias settings to avoid the high frame rates for now.

Currently you can only animate batched trees (BatchPage) through a custom vertex shader. In the future I plan to take advantage of Ogre's instancing and implement a InstancePage, which should support animations.This looks almost as good as the stuff they do in farcry. The only thing missing is some movement to the trees. I wonder, since the trees aren't entities do they support animation? What about event driven animation?
The PagedGeometry engine itself can handle 0 length time steps fine, but I forgot to account for that in the demos' delta-time based movement code. I guess it never occurred to me that the demos would be running over 1000 FPSMaybe its a little too fastSometimes when I move everything just dissapears, I think it has something to do with the time between 2 frames being zero.

I'd enable vsync or turn up the screen resolution / anti-alias settings to avoid the high frame rates for now.
-
- Greenskin
- Posts: 149
- Joined: Sat Apr 14, 2007 1:27 pm
I just tested, it happens with vsync turned on too but not that frequently.JohnJ wrote:The PagedGeometry engine itself can handle 0 length time steps fine, but I forgot to account for that in the demos' delta-time based movement code. I guess it never occurred to me that the demos would be running over 1000 FPS
I'd enable vsync or turn up the screen resolution / anti-alias settings to avoid the high frame rates for now.
edit:
Something wrong with Ogre::Timer.reset() I guess, I replaced it like this and its working fine now.
Code: Select all
/*
static Ogre::Timer t;
Real timeScale = t.getMilliseconds() * 0.1f;
t.reset();
*/
static Ogre::Timer t;
static unsigned long oldTime = t.getMilliseconds();
unsigned long tt = t.getMilliseconds();
Real timeScale = (tt-oldTime) * 0.1f;
oldTime = tt;
-
- Silver Sponsor
- Posts: 413
- Joined: Wed Feb 11, 2004 11:44 am
- Location: Austin (that's kept wierd :))
Awesome job!
Runs very well and fast under DirectX.
However, I'm experiencing artifacts(slow rendering speed, red bark, black leaves, white grass) under OpenGL (ATI X800, WinXP, latest OpenGL drivers) and I think it's related to Ogre, not PagingGeometry
Runs very well and fast under DirectX.
However, I'm experiencing artifacts(slow rendering speed, red bark, black leaves, white grass) under OpenGL (ATI X800, WinXP, latest OpenGL drivers) and I think it's related to Ogre, not PagingGeometry
Twitter: Tau Powered
-
- Lich
- Posts: 1742
- Joined: Tue Apr 05, 2005 1:11 pm
- Location: Gosport, South England
- x 1
-
- Halfling
- Posts: 46
- Joined: Mon Apr 23, 2007 8:38 pm
- Location: Austria