Unofficial, alpha 12 weekly build

A secret forum for people who preorder Overgrowth!
Brad
Posts: 9
Joined: Sun Feb 01, 2009 5:39 pm

Re: Unofficial, alpha 12 weekly build

Post by Brad » Tue Feb 03, 2009 4:20 pm

4. Framerate is down a good bit, though not surprising with 400+ objects. I can't help but think that it needs to optimized a hell of a lot more if you will ever create a scene like you have in the background of your website with a whole town, which would require thousands and thousands of objects. But I'm certain that's on the list so I'm not worried =)
Agreed. I went from about 40FPS average while roaming about to around 16FPS average. Previously, in alpha 11, when the camera (or rabbot) was near the house, I usually dropped to the 8FPS range -- which is up to around 12FPS now.

This shouldn't be due to the object amount considering that not having the boundary boxes of the objects on screen should cull and effectively prevent them from being rendered. That is, unless, no form of blunt view-dependent Octree-type culling exists in the scene manager at the moment whatsoever.

Alternatively, this could be a batching issue as well. Is there any method to get a report of what the scenes current batch count is right now?

EDIT: Seems the problem IS object amount related (at least to some degree). No culling at all yet, eh?
Last edited by Brad on Tue Feb 03, 2009 5:29 pm, edited 2 times in total.

mafr
Posts: 2
Joined: Thu Jan 15, 2009 6:48 pm

Re: Unofficial, alpha 12 weekly build

Post by mafr » Tue Feb 03, 2009 4:49 pm

What is the Alpha Code?

Never got one. Last build worked without it.

User avatar
Ltp0wer
Posts: 96
Joined: Sat Nov 11, 2006 12:46 am
Location: Chandler, Arizona, USA
Contact:

Re: Unofficial, alpha 12 weekly build

Post by Ltp0wer » Tue Feb 03, 2009 4:58 pm

mafr wrote:What is the Alpha Code?

Never got one. Last build worked without it.
Check your email.

GDer
Posts: 51
Joined: Sat Jan 31, 2009 6:13 pm

Re: Unofficial, alpha 12 weekly build

Post by GDer » Wed Feb 04, 2009 10:21 am

Every game that uses so many objects in a level doesn't make them as small as you do and there's no terrain in those games. Also there's a technique I'd suggest: preprocessing the level. While it doesn't sound like the coolest optimization in the world, it actually is one of them.
What you can do in the preprocessing stage:
- clip the models
- generate low quality models that can be used in distance
- weld few low quality models into one that use the same shaders
- generate lightmaps for models
- weld some clipped models that use the same shaders and textures and have only few vertices in each (useful for big rocks)
and more..
As I haven't seen games using these optimizations, you'll have to push these into light. :D

CrazyWolfie
Posts: 128
Joined: Tue Dec 16, 2008 6:08 pm

Re: Unofficial, alpha 12 weekly build

Post by CrazyWolfie » Wed Feb 04, 2009 6:02 pm

In 5 days (or less, more) my bitching will either continue, or stop. I may be getting a new comp.

Brad
Posts: 9
Joined: Sun Feb 01, 2009 5:39 pm

Re: Unofficial, alpha 12 weekly build

Post by Brad » Thu Feb 05, 2009 5:55 am

Every game that uses so many objects in a level doesn't make them as small as you do and there's no terrain in those games. Also there's a technique I'd suggest: preprocessing the level. While it doesn't sound like the coolest optimization in the world, it actually is one of them.
In modern development environments, on this particular project, and on today's GPUs you're not going to get many benefits from your suggestion as a whole.
- clip the models
Visibility
Pre-calculated visibility (such as that found in BSP) was fine back in the day before high-octane video hardware, but in modern usage (and especially for non-indoor environments) it leads to memory/disk overhead with very little gain. Simple view-dependent culling of objects is a MUCH faster and MUCH more dynamic approach.

No, it won't offer the level of occlusion that a pre-calculated scene would, but you have to recall that such scenes are dependent on completely static objects with no capability to be moved or altered without re-building visibility chains. A more elegant occlusion system would be using simple AABB hardware occlusion queries or, if needed, queries built upon rough area primitives.

Additionally, a basic fog hulling technique will go a long way for older systems wanting even more gain on distant object rendering performance.
- generate low quality models that can be used in distance
Level of Detail [LOD]
Agreed. For the sake of actual geometry, several levels of detail would help reduce overall triangle counts on distant objects. While storing multiple forms of implicit LOD does have memory costs, it's far better than attempting a continuous mesh collapse algorithm (which has quite a bit of CPU overhead). A billboard impostor is highly recommended for the farthest LOD -- particularly true for grass, trees, rocks, and any other type of object that may be instanced in thousands.

Although impractical for most geometry, a basic continuous LOD approach could be logical for the heightmap'd terrain (especially if it's intended to be even more tessellated or vastly on-stretching).

Overall with proper batching and visibility culling methods in place, geometry LOD becomes more negligible unless dealing with incredibly dense meshes since modern video cards are literary built to handle millions of triangles. Geometry aside, material LOD is still VERY much-so helpful since expensive shaders/materials can be swapped off for less-costly ones at extreme distances. An example of this would be disabling specular/normal/SSS/AO mapping beyond a certain threshold.
- weld few low quality models into one that use the same shaders
- weld some clipped models that use the same shaders and textures and have only few vertices in each (useful for big rocks)
Not sure entirely but I'll assume you're talking about ...

Batching
This is the process of rendering related objects together in one group rather than handling them separately. The idea behind batching is to reduce the overall amount of rendering groups that the CPU needs to process. It's far faster to have 10 batches of 10,000 triangles each than it is to have 10,000 batches of 10 triangles each simply because the latter would result in your CPU completely bottlenecking the entire render step from processing the number of batches -- that is, the GPU would be idle majority of your rendering stage.

It's often not always possible to batch objects together given that they would need to use the same materials/shader and furthermore, would have to either all be rendered or not be rendered at all (which can kink up culling options). There are solutions such as texture atlas'/grids to optimize on number of batches, but even they have particular caveats if not treated carefully.
- generate lightmaps for models
Shadows
Too vast of a topic area to cover, but Overgrowth actually is already generating calculated light data for the terrain heightmap. Again, the big disadvantage of pre-calculated materials is that it's going to have to remain static (with static conditions). Calculating lightmaps for all objects would be fruitless since when lighting conditions changed everything would have to be recalculated. There are solutions like precomputed radiance transfer (PRT) or interpolating data from several lightmaps captured from various sources that can account for some changing light conditions, but their solutions for non-static objects are still limited at best compared to a full blown image-space calculation or modern textured soft shadows.

Overgrowth's current lighting solution is on the right track.
As I haven't seen games using these optimizations, you'll have to push these into light.
No disrespect, but many have -- 10 years back, that is. Check out Quake 3.
Last edited by Brad on Sat Feb 07, 2009 3:16 pm, edited 1 time in total.

GDer
Posts: 51
Joined: Sat Jan 31, 2009 6:13 pm

Re: Unofficial, alpha 12 weekly build

Post by GDer » Thu Feb 05, 2009 11:16 am

Pre-calculated visibility
I don't talk about that. Clipping is another thing.
such as that found in BSP
Quadtrees/Octtrees wouldn't take much memory, but that would save the CPU power - which is needed right now.
MUCH more dynamic approach
.. is almost always useless as you preprocess the data every frame.
hardware occlusion queries
That's slow.
As slow as without it on the target hardware this game is made for.
Overgrowth actually is already generating calculated light data for the terrain heightmap
I'm talking about other models. Editor could have a "lightmap regenerate" button which is in UnrealEd too. The generation is very fast. When you'd be done, you could press the button. No need for huge shadowmaps and redrawing the scene.
but their solutions for non-static objects are still limited at best compared to a full blown image-space calculation or modern textured soft shadows
These would be only the animated models. Houses shouldn't use that as that would double the draw call / state change call count which already is too big.

And one more thing: developers, please don't be afraid of graphics that looks a bit incorrect, like shadows going through objects (Hitman 2, Freedom Fighters) because most people won't notice that anyway. And those who do.. they don't like gameplay anyway.
No disrespect, but many have -- 10 years back, that is. Check out Quake 3.
Wow. I didn't know that. So if Quake 3 and Carmack was using these, it can't be worse than what the newest engines use. :)

Brad
Posts: 9
Joined: Sun Feb 01, 2009 5:39 pm

Re: Unofficial, alpha 12 weekly build

Post by Brad » Thu Feb 05, 2009 6:51 pm

Pre-calculated visibility
I don't talk about that. Clipping is another thing.
such as that found in BSP
Quadtrees/Octtrees wouldn't take much memory, but that would save the CPU power - which is needed right now.
I'm fairly certain we're talking the same concept. The reason I mentioned pre-calculated visibility trees rather than real-time ones was because your initial post implied pre-processed map formats. I apologize if I misunderstood.
hardware occlusion queries
That's slow.
As slow as without it on the target hardware this game is made for.
It actually can yield better results if properly designed. Granted that efficient implementation is no cake-walk, perhaps simple software-based occlusion of the active boundary boxes would be more practical to use for now.
Overgrowth actually is already generating calculated light data for the terrain heightmap
I'm talking about other models. Editor could have a "lightmap regenerate" button which is in UnrealEd too. The generation is very fast. When you'd be done, you could press the button. No need for huge shadowmaps and redrawing the scene.
Unreal Tournament is primarily used for indoor environments. What happens when you move the sun in Overgrowth? The lightmaps become completely useless/inaccurate.
but their solutions for non-static objects are still limited at best compared to a full blown image-space calculation or modern textured soft shadows
These would be only the animated models. Houses shouldn't use that as that would double the draw call / state change call count which already is too big.
Quite frankly the only real problem in the alphas is lacking ANY form of culling and perhaps inefficient batching (not sure about the latter, but a batch/triangle counter would be much appreciated!). The draw calls would not double if the object's were identified as static and had the textures for shadows packed accordingly.

You have to also consider that the houses/objects inside and so forth might NOT be static. The engine uses ODE as it's physics library from what I can tell. Giving each object it's own physic's body isn't entirely out of the question. Even breaking down the houses themselves wouldn't be entirely unreasonable given how they are currently constructed from other object primitives.
No disrespect, but many have -- 10 years back, that is. Check out Quake 3.
Wow. I didn't know that. So if Quake 3 and Carmack was using these, it can't be worse than what the newest engines use. :)
Well see, that's the problem. There are reasons they aren't being actively used anymore in today's development environments and furthermore why you don't see BSP in use in newer ID tech. This is due to the development pipeline being far more GPU-oriented than it was back in the days of these approaches.

Elpolodiablo
Posts: 1
Joined: Fri Feb 06, 2009 12:58 am

Re: Unofficial, alpha 12 weekly build

Post by Elpolodiablo » Fri Feb 06, 2009 2:27 am

Posting as ordered

XP Home Edition SP3 32-bit
ATI Mobility Readon x600
1gig ram

When i first run the game i get this screen i get this error:
Open GL error
On line 300 of engine.cpp:
invalid value

If i press OK i get this:
Open GL error
On line 311 of engine.cpp:
invalid value

And if i press it again i get this:
Open GL error
On line 64 of shaders.cpp:
invalid value

and pressing OK after that makes it crash

GDer
Posts: 51
Joined: Sat Jan 31, 2009 6:13 pm

Re: Unofficial, alpha 12 weekly build

Post by GDer » Fri Feb 06, 2009 2:45 pm

Brad wrote:I'm fairly certain we're talking the same concept. The reason I mentioned pre-calculated visibility trees rather than real-time ones was because your initial post implied pre-processed map formats. I apologize if I misunderstood.
I'm thinking about something like triangle clipping - cutting the part that's under the terrain.
Brad wrote: It actually can yield better results if properly designed. Granted that efficient implementation is no cake-walk, perhaps simple software-based occlusion of the active boundary boxes would be more practical to use for now.
I have seen a game that uses this - El Matador. The engine was similar to this one. I did some tests and with Radeon 9550 if I wasn't looking at the other half of the map, the game ran with more FPS with the occlusion culling turned off.
Also, here's an occlusion query demo.. http://downloads.gamedev.net/features/p ... lusion.zip I get about 70 fps with ATI Radeon HD 4850(!) which is very bad even for an unoptimized culling method.
Brad wrote: Unreal Tournament is primarily used for indoor environments. What happens when you move the sun in Overgrowth? The lightmaps become completely useless/inaccurate.
So what? Regenerate the lightmap then. Terrain lightmap will be regenerated always.
Brad wrote: Well see, that's the problem. There are reasons they aren't being actively used anymore in today's development environments and furthermore why you don't see BSP in use in newer ID tech. This is due to the development pipeline being far more GPU-oriented than it was back in the days of these approaches.
GPU-oriented or not, those games are still overusing the CPU and don't cull so good. The lack of BSP in that ID tech is their problem, BSP is very good and the tree is generated in few seconds with the modern CPUs. Most of the today's games still use static lighting, static houses, static everything, except some tiny characters and culling. Isn't that weird?

swiftcoder
Posts: 12
Joined: Mon Nov 17, 2008 5:00 pm

Re: Unofficial, alpha 12 weekly build

Post by swiftcoder » Fri Feb 06, 2009 11:11 pm

GDer wrote:I have seen a game that uses this - El Matador. The engine was similar to this one. I did some tests and with Radeon 9550 if I wasn't looking at the other half of the map, the game ran with more FPS with the occlusion culling turned off.
Hardware occlusion culling is very efficient if used correctly - unfortunately this is fairly tricky to get right, and doesn't work well for all types of scene.
GDer wrote:GPU-oriented or not, those games are still overusing the CPU and don't cull so good. The lack of BSP in that ID tech is their problem, BSP is very good and the tree is generated in few seconds with the modern CPUs.
Try running a full-sized Quake 4 level through a BSP compiler (you can find several on the web) - a few seconds is a serious underestimation of the time required. Anyway, that is largely besides the point - modern GPUs like to render triangles in batches, and your typical BSP is used to deal with individual triangles. You can construct artificial BSP-partitions of individual objcts, but it doesn't really offer anything over an octree or other sparse spatial structure.
GDer wrote:Most of the today's games still use static lighting, static houses, static everything, except some tiny characters and culling. Isn't that weird?
What games have you been playing lately? I encourage you to try Crysis or Far Cry 2 (dynamic lighting, shadows and destructible foliage).

Sargon
Posts: 93
Joined: Fri Oct 06, 2006 1:58 am

Re: Unofficial, alpha 12 weekly build

Post by Sargon » Sat Feb 07, 2009 3:43 am

I tried to run alpha 12, but I get the message:
"This application has failed to start because the application configuration is incorret"
I have Windos XP, Pentium 4 2.8GHz, 1.00 GB of ram

GDer
Posts: 51
Joined: Sat Jan 31, 2009 6:13 pm

Re: Unofficial, alpha 12 weekly build

Post by GDer » Sat Feb 07, 2009 7:41 am

swiftcoder wrote:Hardware occlusion culling is very efficient if used correctly - unfortunately this is fairly tricky to get right, and doesn't work well for all types of scene.
This game really can have many types of scene.
swiftcoder wrote:Try running a full-sized Quake 4 level through a BSP compiler (you can find several on the web) - a few seconds is a serious underestimation of the time required. Anyway, that is largely besides the point - modern GPUs like to render triangles in batches, and your typical BSP is used to deal with individual triangles. You can construct artificial BSP-partitions of individual objcts, but it doesn't really offer anything over an octree or other sparse spatial structure.
With a Half-Life map compiler, the BSP part is very fast. The CSG part too. Visibility calculation part is just a bit slower. Lighting calculations are a lot slower. Quake 4 could have merged those 4 compile jobs. Anyway, as I said, we don't need BSP here. Octtree would be enough.
swiftcoder wrote:What games have you been playing lately? I encourage you to try Crysis or Far Cry 2 (dynamic lighting, shadows and destructible foliage).
I have played Crysis, It's quite a crap. Frustrating gameplay. Also it's too slow for a game that is using compiled maps. Far Cry 2 is more like a crap with bad graphics and also a frustrating gameplay.
dynamic lighting, shadows and destructible foliage never are the reasons for playing a game. I've played Freedom Fighters recently and I have nothing bad to say about it. The game did it's job.

As we see a terrain lightmap here, we can be sure that almost everything here except entities will be static so you need to preprocess as much as you can. Using some data tables is always faster than sending commands to the graphics card.

swiftcoder
Posts: 12
Joined: Mon Nov 17, 2008 5:00 pm

Re: Unofficial, alpha 12 weekly build

Post by swiftcoder » Sat Feb 07, 2009 11:21 am

GDer wrote:
swiftcoder wrote:What games have you been playing lately? I encourage you to try Crysis or Far Cry 2 (dynamic lighting, shadows and destructible foliage).
I have played Crysis, It's quite a crap. Frustrating gameplay. Also it's too slow for a game that is using compiled maps. Far Cry 2 is more like a crap with bad graphics and also a frustrating gameplay.
dynamic lighting, shadows and destructible foliage never are the reasons for playing a game. I've played Freedom Fighters recently and I have nothing bad to say about it. The game did it's job.
I never said that Far Cry 2 or Crysis were any good - I merely used as examples against your claim that: "Most of the today's games still use static lighting, static houses, static everything, except some tiny characters and culling". Few (if any) of the large commercial games these days use static lighting or shadows (how would Left 4 Dead work without the flashlight?), and most offer at least some dynamic/destructible environment elements (broken glass and wind-blown trash in Mirror's edge, foliage in Crysis, etc.).
GDer wrote:As we see a terrain lightmap here, we can be sure that almost everything here except entities will be static so you need to preprocess as much as you can.
That doesn't always follow - it is a couple of years now since pre-processed terrain rendering was fashionable, as brute force tends to work better on modern GPUs.
Using some data tables is always faster than sending commands to the graphics card.
In general yes, but you need to keep your batches as large as possible. If you render 50k triangles in 5 draw calls, or 40k in 7 calls, which one is faster? Most of the time the former - splitting up batches to allow better culling doesn't pay past a certain point.

GDer
Posts: 51
Joined: Sat Jan 31, 2009 6:13 pm

Re: Unofficial, alpha 12 weekly build

Post by GDer » Sat Feb 07, 2009 4:13 pm

swiftcoder wrote:I never said that Far Cry 2 or Crysis were any good - I merely used as examples against your claim that: "Most of the today's games still use static lighting, static houses, static everything, except some tiny characters and culling". Few (if any) of the large commercial games these days use static lighting or shadows (how would Left 4 Dead work without the flashlight?), and most offer at least some dynamic/destructible environment elements (broken glass and wind-blown trash in Mirror's edge, foliage in Crysis, etc.).
Flashlight isn't a huge dynamic directional light, it's small. Those dynamic environment elements are too small. They could even use vertex lighting only. Sticking a normal map on a tiny piece of paper isn't smart.
And about that usage of static lighting.. How would it look and with what speed would it go if there would be no lightmaps?
swiftcoder wrote:That doesn't always follow - it is a couple of years now since pre-processed terrain rendering was fashionable, as brute force tends to work better on modern GPUs.
Nothing looks better than a very nice lightmap and runs at a good speed. That brute force really is increasing batch count too.
swiftcoder wrote:In general yes, but you need to keep your batches as large as possible. If you render 50k triangles in 5 draw calls, or 40k in 7 calls, which one is faster? Most of the time the former - splitting up batches to allow better culling doesn't pay past a certain point.
I know. It has always been like that. But we can choose what to split and how.

Post Reply