Long load times for 32k Earth textures

Post requests, images, descriptions and reports about work in progress here.
Topic author
CaptainValor
Posts: 4
Joined: 12.10.2004
With us: 20 years 1 month
Location: Austin, Texas, United States, Earth, Solar System, Milky Way Galaxy, The Universe

Long load times for 32k Earth textures

Post #1by CaptainValor » 12.10.2004, 13:48

Just curious, is it normal for there to be a significant delay when switching between levels of detail with the high-quality add-on textures in Celestia (such as those obtained from here?

I'm running a Radeon 9500 Pro and 512mb RAM. Celestia reports the texture limit as 2048.

Avatar
selden
Developer
Posts: 10192
Joined: 04.09.2002
With us: 22 years 2 months
Location: NY, USA

Post #2by selden » 12.10.2004, 15:30

CaptainValor,

Can you watch your disk activity light?
Is it blinking like crazy when you change resolutions?

The time delay usually is caused by Celestia loading the texture image files. Naturally, larger files take longer to load. When you're using virtual textures, Celestia often has to load quite a few of the tiles, depending on your viewpoint. Locating all those files in their directories also takes a while.
In addition, if you don't have enough main memory to hold all of the surface texture images, then your system will page them out to its on-disk virtual memory, which can be very slow.

Celestia stresses all components of your system.
This is one reason for upgrading to as fast a disk as you can afford and as much main memory as you can afford.
Selden

Avatar
Cham M
Posts: 4324
Joined: 14.01.2004
Age: 60
With us: 20 years 10 months
Location: Montreal

Post #3by Cham » 12.10.2004, 16:35

Yes, Celestia really stresses ALL the computer. On my system, I very often ends with a huge slowdown because of the disk accesses, memory swapping and the *&?%$# video card which is crappy ! :cry:

I know no other piece of software which put so much pressure on my computer as Celestia.
"Well! I've often seen a cat without a grin", thought Alice; "but a grin without a cat! It's the most curious thing I ever saw in all my life!"

Topic author
CaptainValor
Posts: 4
Joined: 12.10.2004
With us: 20 years 1 month
Location: Austin, Texas, United States, Earth, Solar System, Milky Way Galaxy, The Universe

Post #4by CaptainValor » 12.10.2004, 18:10

Is there any way to get Celestia to preload all the textures, such as most PC games do?

Avatar
selden
Developer
Posts: 10192
Joined: 04.09.2002
With us: 22 years 2 months
Location: NY, USA

Post #5by selden » 12.10.2004, 18:30

If you know which textures you'll want to look at, you can add lines to the startup script (start.cel) which look like

preloadtex { object "objectname" }

Where "objectname" is the full path name of the SSC object that should have its textures preloaded.
e.g.
preloadtex { object "Sol/Mars" }

However, I don't think this will cause VirtualTextures to be preloaded. VTs usually are hundreds of MegaBytes, much larger than the main memory of most personal computers. (The full set of BlueMarble VT textures totals about 1GB.)

Many people run Celestia with many Addons, so that if all textures were automatically preloaded, Celestia's total size would be much larger than their system's main memory. This would cause the system to be very slow because it would be paging madly to disk.

Added slightly later:
Of course, another way to preload the textures you need is to run a script which visits the viewpoints that you know you'll be visiting later.
Selden

Topic author
CaptainValor
Posts: 4
Joined: 12.10.2004
With us: 20 years 1 month
Location: Austin, Texas, United States, Earth, Solar System, Milky Way Galaxy, The Universe

Post #6by CaptainValor » 12.10.2004, 20:48

Well, I'll try this but I'd prefer if it would also load the VTs as well. Wouldn't that still be better than having to load them as-needed?

Harry
Posts: 559
Joined: 05.09.2003
With us: 21 years 2 months
Location: Germany

Post #7by Harry » 12.10.2004, 22:31

CaptainValor wrote:Well, I'll try this but I'd prefer if it would also load the VTs as well. Wouldn't that still be better than having to load them as-needed?

It's simply not feasible on current systems. Take my earth-texture as an example:
Each texture (surface, spec, nightlights) takes at least 340 MB as DDS DXT1 for a 32k VT. The normalmap is much worse (because it's JPG and must be decompressed before use): it would take 2 GB memory uncompressed.

So you need about 3 GB memory for the whole set. The loading time alone is prohibive, and any system with less than 3GB would have to swap out the texture anyway, making it really slow.

VTs make something possible which would otherwise be impossible: displaying very high resolution textures. Their whole point is that you don't load the whole texture into memory. However it would be nice if Celestia could load the textures in the background, and continue working using the lower resolution level until the higher resolution is available.

BTW, you may prefer a preshaded surface texture, like Jestr's Earth Mark II, which doesn't need a normalmap (I believe this specific texture already includes the specmap too, so one more texture you can get rid of). The normalmap not only uses a lot of memory, but it also must be decompressed from JPG to a format that's usable by your graphics card, which is very CPU intensive and may be slow, depending on your system. Unfortunately the much more efficient DDS format produces ugly results when used for the normalmap (no big surprise), I think some very new graphics cards (ATI only?) introduce a similar compression for normalmaps without the ugly artifacts, but this will take some years to be available to the average user.

Harald

Topic author
CaptainValor
Posts: 4
Joined: 12.10.2004
With us: 20 years 1 month
Location: Austin, Texas, United States, Earth, Solar System, Milky Way Galaxy, The Universe

Post #8by CaptainValor » 13.10.2004, 21:20

Thanks for the advice, I think I'll try that one out as well. :)

Seb
Posts: 44
Joined: 12.09.2004
With us: 20 years 2 months
Location: Wiltshire, UK

Texture loading

Post #9by Seb » 14.10.2004, 21:40

I have quite a fast system, and it still delays when jumping to other planets. Would be nice if Celestia texture loading can be swtich to run on an idle thread, as to start loading textures that it knows it will soon be needing.

eg. When jumping from Earth to Mars, an idle routine starts to load Mars in the background while the foreground thread starts moving the view away from Earth, when the Mars texture is required, it should change the priority of loading as to continue loading as it does currently. This would help to smoothen things while moving around.

Abit like Grant Theft Auto 3, where some very clever predictive disk loading keeps the game running very smoothly while being able to run around a very very large map.

Kendrix
Posts: 159
Joined: 02.06.2002
With us: 22 years 5 months
Location: near Paris, France
Contact:

Post #10by Kendrix » 15.10.2004, 15:08

The best solution would be asynchronous VT loading.

I'm a video game programmer and we use a lot of asynchronous loading streams because the PS2 has only 32 mo of ram.

So Celestia should launch a separate thread to load VT tiles and as long as a tile isn't loaded, the old one (lower res) stay visible, then Celestia draw the new one when it has finished loading.

With a system like this : no more lags !

You could even do a alpha-blending transition between tiles when there are loaded to avoid the "pop" effect.

Guest

Post #11by Guest » 20.10.2004, 22:05

*puts in GeForce 6800 Ultra*
Video lag? Loading times? Where? :wink:

guest jo
Posts: 126
Joined: 01.04.2004
With us: 20 years 7 months

Post #12by guest jo » 21.10.2004, 10:19

deleted
Last edited by guest jo on 19.08.2005, 16:46, edited 1 time in total.

maxim
Posts: 1036
Joined: 13.11.2003
With us: 21 years
Location: N?rnberg, Germany

Post #13by maxim » 21.10.2004, 15:10

A double or trible RAID stripe set may help greatly. And it's cheaper than a new graphic card.

maxim


Return to “Add-on development”