Feature request: Forest area tweaking


24-01-2008 07:37:23


I have been think about this for quite some times and I think this is a good way to reduce batching. However, this may come as an option whenever for PagedGeometry I guess.

Here it is, look at the below images:-

The left image is as what it is now, the forest area being the green area which surround the camera. The red area is the FOV of the camera.

My suggestion is to have the forest area which depends on the camera orientation as well. That way, the forest area is more or less halved - you dont need the forest behind your eyes (or camera in this case). This is illustrated as the right image above.

So the changes needed probably are
1) the calculation of the forest area
2) you need to update the forest area if there is a change in camera orientation (previously it depends on the camera position & speed).

I think those are the only changes needed although you definitely know this better than me :lol:


25-01-2008 03:34:27

I thought of implementing this before, but originally determined that it actually reduces paging efficiency in most cases. It may seem that loading only trees in front of the camera will reduce the amount of pages that need to be loaded, but this is actually true only when moving sideways or backwards. When moving forward, the same amount of trees will be loaded with both methods (think about it - it makes sense).

When moving sideways it can reduce the number of trees loaded, but as soon as you rotate the camera, the system will have to load the rest of the trees. Since game cameras often rotate much more than they move, this also means you're bound to have a lot more stuttering and page-load lag. Imagine an FPS where you've been looking in one direction for a while, and you suddenly need to look behind you. Since only the forward pages have been loaded, all the pages behind you now need to be loaded over a period of a few frames. Needless to say, this will almost always cause extreme stuttering and lag.

But please let me know if you can think of something where this would actually improve performance :)