> Graphic cards are optimized to texture objects. The greatest penalty is 
> when you do state changes. A state is all attributes that affect the
> rendering of a primitive ( point, line or triangle ). A color change is
> heavy as well as a texture change. The new Paris Scenery can display
> lots of identical building just because they use the same texture.
> That way, you can draw hundreds of building with a single state change.
> If these buildings where designed  using 2 textures, there will be 2
> state changes for each building, so hundreds of state
> changes, and that wouldn't be playable.

I think I will use just one texture for every object.

My first thought was to build a low res object (without texture) for high 
distance view and a high res texturized object for small distance view.
Id est I will have a single .ac file with two objects inside, and a .xml 
'range' animation which switches between them regarding the distance of the 
viewer. That way I will achieve acceptable quality and speed when the viewer is 
far away and very accurate visual quality (at the cost of some lower 
performance) when the observer is very close to the obejct.
But I really don't want visual quality at heavy expense of rendering speed.


> Texture size has a litle impact on filtering time and a huge one when
> card memory is completely filled. In that situation, swapping begins
> and very low fps  are encountered.

I have to conclude that adding details to an object using textures is much 
better (from a performance point of view) then adding details to the geometry. 
Correct?


> The complete model stay in memory, as well as textures. There is a gain 
> because less primitives and less state changes are processed by the GPU.
> LOD has also an effect on the visual because displaying sub pixel
> features usually creates flickers.
>
> Using Shared models helps saving memory. That way, only one model is 
> loaded, and it is displayed multiple times. With static objects, every
> instance is loaded in memory, with duplicates on geometry and textures.
> Changing OBJECT_STATIC to OBJECT_SHARED helped having a decent fps over
> Paris, as well as reducing texture size to avoid GPU memory saturation.


I am not shure I did understand what you mean.

Anyway, I try explaining my point of view and share my opinion. Maybe I am 
wrong, maybe I miss something. Please comment it.

Let's say I fly above an airport. Let's say the airport ground is filled with a 
100 3d objects (I am not exagerating) each one consisting of a .ac file which 
includes two versions (high res and low res) of the same object.

Flying high above the ground I have a wide visual, it means I see a lot of the 
underlaying terrain, complete with all of the 100 objects above mentioned. From 
that point of view I find useless to let the GPU display all the details of the 
buldings because of the distance, hence I let the GPU render the lowres 
versions only and its memory does not need to be filled with all the higres 
versions (complete with textures). 

As soon as I fly down, I come closer to those buildings, untill a point where I 
wish I see more details of some of them (the closer ones), so I let the .xml 
'range' animation display the highres texturized version of those closer 
buildings. That will use more memory then the lowres non texturized ones, and 
that will need more GPU calculation because of the increased geometry details. 
But still I don't see _all_ the 100 buildings at the same distance, the most 
will stay out of sight, or at least distant enough not  to be rendered at high 
quality. So I will accept the low res versions to be shown.

Loading and unloading a 3d object from the GPU memory will let the GPU optimize 
its memory usage and the processor workload. Loading all the objects into GPU 
memory at once will fill it quick, and could be a waste in case I will not fly 
down untill the point I really need to see all those details.

E.g. I fly near EDDF airport (which is huge) but don't want to land on it, in 
this case I really don't need all of EDDF highres buildings to be loaded into 
GPU memory, as long I stay at high altitude. It's enough to me to see a bunch 
of lowres buildings which let me perceive their shape from a distance. That 
memory could be used for Wiesbaden airport buildings' objects instead, where I 
will land after short time.
Of course, those airport buildings could not be OBJECT_SHARED since they are 
not shared at all, every airport has its own hangars, terminals, fire stationa 
and so on.

What's your opinion about that?

   Roberto

-- 


"Feel free" – 10 GB Mailbox, 100 FreeSMS/Monat ...
Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail


_______________________________________________
Flightgear-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to