extremly large textures

Started by
4 comments, last by mdog1234 20 years, 6 months ago
I have a very large texture(about 7500 X 6000) and I realize that it is to big to use as a texture like it is because no graphics card will support it. What I need is a tutorial or some help with texture tiling. I need to break my texture into lots of other small ones so that I can use it as a texture. There is a simple example on sgis opengl examples website but that tutorial takes about 700mb of memory and I get about 1 frame per minuite. Altering the texture in photoshop or another editing program is not possible for this project. If anyone has suggestions on how to do this with out tiling please give me your input Thanks.
Advertisement
The big problem I see is that your texture is over 130 - 180 MB (depending on bitdepth). It won't fit in video memory even if you do break it up. The sgi demo ran slow probably because some of the texture tiles have to go into system memory and so the card is chuggin' when it has to pull that data over the agp bus. I think the only solution is you will have to make it smaller .

Edit: I can't figure out why the demo you ran would be taking up 700MB.

[edited by - CodeMunkie on October 8, 2003 3:43:17 PM]
"When you die, if you get a choice between going to regular heaven or pie heaven, choose pie heaven. It might be a trick, but if it's not, mmmmmmm, boy."
How to Ask Questions the Smart Way.
Here is another thought. Is this like a map or a background? Not all of the texture will be visible at one time. Only load in the part that will be on the screen and then a buffer area just off screen. Then as the player moves around, stream in new parts of the texture to fill in the buffer area:

-------------|   |   |   ||   |   |   |-------------|   |   |   ||   | p |   |-------------|   |   |   ||   |   |   |------------- 


The player is in area "p". The surrounding eight areas are off screen but are loaded in texture memory. When the player moves to another area, you will have to unload some parts of the map and stream in new parts to keep the buffer area full. It''s the same technique as when you have a 2D map that is too large to fit in memory (back in the day). Hope that makes sense.
"When you die, if you get a choice between going to regular heaven or pie heaven, choose pie heaven. It might be a trick, but if it's not, mmmmmmm, boy."
How to Ask Questions the Smart Way.
No, you can''t hold a 7k x 6k texture in video RAM. But you can hold it in system memory. And you will never see it entirely in it''s full resolution on screen - the screen resolution is too low for that. Ergo: use dynamic swapping. Load only the parts or mipmaps of the texture into VRAM, that are currently visible on screen. Requires some clever cache and usage management, but not impossible. SGI has developped a simlar technique some time ago, they called it clip-mapping.

BTW, be careful about very large texture demos/tutorials from SGI. They are often targeted at SGI 3D hardware. For example the Cobalt chipset - a 3D card with up to 2GB of video memory onboard... Ona standard consumer level 3D card, you need alternative approaches to deal with that problem.
yes the images are high res satellite photos. they are about 40 mb and one of the problems is that the texture is pasted on a rectangular area and if someone is zoomed out alot they should be able to see the whole image. At that point it doesnt really matter how high res the image. It can be a significantly less amount of detail
I am doing something very similar to you. You need to load and unload your textures dynamically. Only load what is in the vicinity, then if you move, unload some of the textures, and load in new ones.

This topic is closed to new replies.

Advertisement