DTS: max texture res? how many textures? performance?
by Joshua Dallman · in Artist Corner · 02/19/2005 (10:49 pm) · 19 replies
I've gotten some conflicting answers on this question in the past, and some comments in a recent .plan didn't help any, so I wanted to make a posting here. I tried a forum search but "No threads were found that matched your query" with "DTS" as the query :(
Matthew Langley:
"I do beleive 512 x 512 is the max size for .dts too (though again I might be mistaken)"
Timothy Aste:
"There is no hard-coded max size on textures being used by DTS & DIF textures as I know, there may be a limit, but it's higher then 1024."
Jeff Gran:
"I have put characters with almost the exact same specs [1024] as this in the engine before, so I know it works."
Ed Maurina:
"Q: Whats is the maximum size for textures?
A: Although you can use 512x512 maps, you should do so only in extreme circumstances."
I even found a posting on google that said that the 512x512 maximum limit was a limitation within OpenGL itself!
So, a few questions for the community:
1) What IS the maximum DTS texture resolution allowed?
(does it matter which DTS exporter you use?)
2) How many textures can you map to a single model?
(different sizes OK?)
3) Are the above questions "moot" because of performance issues? What is the "best practice" for balancing performance with detail in certain areas (like faces)? Is a 512x512 texture for the body with a second 256x256 texture for face details better than just a 1024x1024 texture for the whole thing? Is performance less of an issue if you're religiously low-poly, low-number of on-screen models, non-"twitch" game?
Thanks in advance!
Matthew Langley:
"I do beleive 512 x 512 is the max size for .dts too (though again I might be mistaken)"
Timothy Aste:
"There is no hard-coded max size on textures being used by DTS & DIF textures as I know, there may be a limit, but it's higher then 1024."
Jeff Gran:
"I have put characters with almost the exact same specs [1024] as this in the engine before, so I know it works."
Ed Maurina:
"Q: Whats is the maximum size for textures?
A: Although you can use 512x512 maps, you should do so only in extreme circumstances."
I even found a posting on google that said that the 512x512 maximum limit was a limitation within OpenGL itself!
So, a few questions for the community:
1) What IS the maximum DTS texture resolution allowed?
(does it matter which DTS exporter you use?)
2) How many textures can you map to a single model?
(different sizes OK?)
3) Are the above questions "moot" because of performance issues? What is the "best practice" for balancing performance with detail in certain areas (like faces)? Is a 512x512 texture for the body with a second 256x256 texture for face details better than just a 1024x1024 texture for the whole thing? Is performance less of an issue if you're religiously low-poly, low-number of on-screen models, non-"twitch" game?
Thanks in advance!
About the author
#2
For PS2 we would take the same textures and reduce them to 128x128 or 64x64 and sometimes reduce the bitrate down to as little as 4bit. It didn't look as pretty but wit hthe texture compression you could get all the diffuse maps that the xbox version had, and it looked pretty decent.
Xbox ran about as fast as the PS2 except that all its surfaces had 2-4 UV channels, and 2-4 texture layers for shaders and multitexturing. Reflection maps, specular maps, normal maps, lightmaps etc.
Can't help you with the torque side of things as I havent used it lately. I think it used to be 512x512 a couple of years ago though.
02/20/2005 (12:29 am)
Xbox can handle as large a texture as you like, as can PS2. So long as you don't run out of ram. Last Xbox game I worked on we had several 1024x512 32bit textures with specular maps and masks. most of our textures were 256x256 though with the occasional 512x512 skins. It handles 2048x2048 ok too.For PS2 we would take the same textures and reduce them to 128x128 or 64x64 and sometimes reduce the bitrate down to as little as 4bit. It didn't look as pretty but wit hthe texture compression you could get all the diffuse maps that the xbox version had, and it looked pretty decent.
Xbox ran about as fast as the PS2 except that all its surfaces had 2-4 UV channels, and 2-4 texture layers for shaders and multitexturing. Reflection maps, specular maps, normal maps, lightmaps etc.
Can't help you with the torque side of things as I havent used it lately. I think it used to be 512x512 a couple of years ago though.
#3
2) but what about this: Multiple skins on a single model
02/20/2005 (1:38 am)
1) yeah, I'm not trying to go OVER 1024, but I've got some models AT 1024 that I'm confused if I need to reduce down, or apply multiple skins on...2) but what about this: Multiple skins on a single model
#4
02/20/2005 (2:27 am)
The answer I got, somewhere, sometime, is that Torque will reduce any large texture to 512x maximum, so anything larger than that is simply a waste. You can use any size you like, its simply wasting space going larger. I would guess this is why one of the debug render modes redflags textures at 1024x and above.
#5
shape...so I don't get the single texture per mesh...this object playerClass, has a pants texture, shirt texture, and a face texture. This same shape was exported through both 3DSMax5, and GameSpace1.5SP1.1.
02/20/2005 (8:34 am)
I've mapped 3 textures to one single character
shape...so I don't get the single texture per mesh...this object playerClass, has a pants texture, shirt texture, and a face texture. This same shape was exported through both 3DSMax5, and GameSpace1.5SP1.1.Quote:Materials and Textures...Site Reference
The following describes procedures and usage for texture mapping of objects in the Torque engine.
General Texturing Information
Material Colors and procedural textures are not supported.
Only bitmap textures are supported.
Multi sub-object maps are supported, as long as all the subobjects are bitmap textures.
Textures maps must be powers of two (32, 64, 128, 256, 512). The maximum size supported is 512X512. Textures do not have to be square.
Bitmaps formats supported are .PNG .JPG
All surfaces must have UV coordinates for their textures to display correctly.
Translucent textures are supported. To make an object translucent, the texture on the object must have an alpha channel. The amount of translucency is controlled by the alpha channel. Put the texture in the diffuse mapping slot and check the 'Opacity' checkbox in the material editor. You don't need to put a texture in the Opacity slot, it will get the opacity information from the alpha channel.
Double Sided Materials are supported are supported. You can make a material 2-sided by going into the material editor and turning "2-sided" on. This feature is disabled by default and is turned on in the DTS exporter utility parameter rollout panel.
#6
02/20/2005 (8:48 am)
I have used 1024x1024 for the PC torque on multiple occasions...on a console I have no idea though. I am not sure you could see any delails that high on a non-HDTV anyhow.
#7
So does this mean in Rex's model with 3 different textures he is taking up 3 times as much memory?
02/21/2005 (11:30 am)
I was just reading this out of the troubleshooting guide:Quote:Are there any issues that I should be aware of if I use a multi/Sub-object material on my model?
In fact, there is. Using Multi/Sub-Object materials on your models can affect the performance of the engine. When you have multiple textures on your model the engine must draw (and keep in memory) and instance of node on the model for each texture that is applied to it. So if you have 2 textures applied to a node and that node is 500 polygons, the engine will actually have to draw 1000 polygons and also keep that data in memory. As such although you can do it, you should be aware of the consequences involved in texturing this way and know that it is highly recommended to use only 1 texture per model.
So does this mean in Rex's model with 3 different textures he is taking up 3 times as much memory?
#8
Larger textures are most usefull for lightmaps and stuff where you may have a 2048x2048 texture multitexured with the terrain, or interior surfaces in a roo. As Torque doesn't allow that luxury your proabably not going to have much use for such big textures though.
02/21/2005 (11:52 am)
With consoles it depends, you may have static cubic map reflections, or horizontaly tiling cliff textures like the 1024x512 ones I used. Using multiple textures will of course slow things down somewhat, but with some engines, even old DX7 ones you can do nice things like have 3 textures for a mesh, largish face that can be swapped, regular diffuse texture for cloth and skin, and a texture with shinyness for hard shiny objects like helmets, jetpacks, boots, etc. Just adds that little extra zing, but at the cost of a slightly bigger performance hit.Larger textures are most usefull for lightmaps and stuff where you may have a 2048x2048 texture multitexured with the terrain, or interior surfaces in a roo. As Torque doesn't allow that luxury your proabably not going to have much use for such big textures though.
#9
I still wonder what's happening to the 1024 textures, since the docs do in fact say that 512 is the max but I have definitely put a 1024 in there without errors.....
02/21/2005 (12:01 pm)
Hehe. Yay Rex for checking the docs! I stand corrected.I still wonder what's happening to the 1024 textures, since the docs do in fact say that 512 is the max but I have definitely put a 1024 in there without errors.....
#10
02/21/2005 (12:22 pm)
It's possible that it's scalinng down to 512x512 hard to say. Or maybe the docs just didn't keep up with changes to the engine.
#11
02/21/2005 (1:03 pm)
Well, I 'think' perhaps, that when that document was written, Max4?? would only allow texture use of max resolution of 512. Don't quote me yet on that, I only started experimenting with Max at version 5....a user of preMax5 might have better information. Meaning, the DTS format may well take textures in excess of that maximum, but the limitations at the time[for toolset and exporter], may have been 512 and it's not been updated?
#12
As for the DTS exporter. It quite honestly doesnt care what resolution your bitmap data is at because this is handed by the game engine. The DTS exporter simply exports the material data and the name of the bitmap file that uses.
02/21/2005 (2:16 pm)
An application such as 3DS Max will use any image size that you give it. In fact many feature film productions that use high end 3D applications use massive bitmap textures for finest detail that they can get.As for the DTS exporter. It quite honestly doesnt care what resolution your bitmap data is at because this is handed by the game engine. The DTS exporter simply exports the material data and the name of the bitmap file that uses.
#13
02/21/2005 (10:26 pm)
So it seems nobody knows! I'll ask around when I get back to the GG offices on wednesday.
#14
02/21/2005 (10:59 pm)
I'm glad I didn't have too much pride to ask such a basic question! Looking forward to some form of an official answer :)
#15
The biggest limit is that a lot of older hardware doesn't go above 1024, and even some newer hardware can get pissy above 2k/4k. Nevermind that a a single 1k texture map takes 4 megs of memory, plus mips, on most hardware. 2k/4k textures will take 16 and 64 megs each! Add 33% overhead for mips, and you quickly see why the issue is not regularly brought up. You can easily swamp low-end cards by rendering just a few characters with such high res textures.
Hope this helps. I'm currently at home, in bed, fighting off some sort of stomach thingummy. :(
02/22/2005 (1:48 am)
You can go up as big as your hardware (and the file format) supports. There are a few minor constants that you might end up needing to tweak in Torque, but there are no hard limits. We recently upped some of them (I think the max is something like 4k for PNGs)The biggest limit is that a lot of older hardware doesn't go above 1024, and even some newer hardware can get pissy above 2k/4k. Nevermind that a a single 1k texture map takes 4 megs of memory, plus mips, on most hardware. 2k/4k textures will take 16 and 64 megs each! Add 33% overhead for mips, and you quickly see why the issue is not regularly brought up. You can easily swamp low-end cards by rendering just a few characters with such high res textures.
Hope this helps. I'm currently at home, in bed, fighting off some sort of stomach thingummy. :(
#16
02/22/2005 (1:49 am)
As a side note, the XBox can handle arbitrary sized textures (although it only has so much texture memory). I assume the PS2 is also flexible. For performance reasons, though, you might imagine that several 128x128 texmaps would be easier on the system than a single large texture. And, of course, even on HDTV, it's gonna be hard to spot that high res data in your game.
#17
But then the other question -- how much of a performance hit would it be to add at least a seperate 256x256 texture for something like a face detail?
02/22/2005 (1:15 pm)
So -- stick with 512x512 -- got it.But then the other question -- how much of a performance hit would it be to add at least a seperate 256x256 texture for something like a face detail?
#18
02/24/2005 (8:25 am)
I'm confused about Multiple Textures on a DTS because in the Documentation (Under exporting from Max) it says that Multi-Sub Object materials are exportable and will work with Torque.
#19
That's not a question that's easily answered - it depends on if you are geometry or fillrate limited, and exactly how strapped for video card memory your game is.
Just try it out both ways with a couple of test textures.
02/24/2005 (9:01 am)
Quote:how much of a performance hit would it be to add at least a seperate 256x256 texture for something like a face detail?
That's not a question that's easily answered - it depends on if you are geometry or fillrate limited, and exactly how strapped for video card memory your game is.
Just try it out both ways with a couple of test textures.
Torque Owner Jeff Gran
PC games can handle textures that are much larger than consoles. Also, PC monitors have much higher resolution than TVs, so you can actually see the benefit I think a typical PC character (depending on the game of course) would use either a 512 or 1024 map. The reasons for breaking up the textures into 'body' and 'head' are usually to allow for interchangeability, in this case.
PS2 and Xbox, as far as I know, can only handle very small textures. So, for a main character, you might have 12 128x128 maps. (I don't have any experience with this, but I've read posts on forums by people who have).
It also depends on the type of game. If it's a MMOG or RTS, you will have to limit the texture resolution to fairly small to allow for all the rendering going on. If it's a fighting game, there's only ever 2 people on the screen at once, so they can each have very high resolution textures.
Direct answers:
1 - don't know, but if you hit it you're probably using a too huge texture anyway. There will almost never be a need for more than 1024*1024. A good way to think about it is to think of the final pixels that the human sitting there will see. Most games will be run at 800x600 or 1024x768 or something. So you would never need the texel (texture pixel) resolution to be bigger than a single final-render pixel. I hope that makes sense.
2 - TGE out-of-the-box doesn't support mutiple textures (ie texture channels) on a single DTS, so most Torque player models will have a single texture, unless the engine (and possibly the DTS exporter(s)?) has been modded. I think TSE has much more flexibility in this though... Different sizes are fine. the only thing that matters is that each dimension of the texture is a power of two. So 1024x1024, 512x1024, 64x128, 32x2048 are all valid AFAIK.
3 - Most people say to keep the texel ratio even across the board. A few people say to concentrate more texel resolution in the areas that you need more detail. So, you could make your face UVs proporionally bigger than the body UVs in your texture page to allow for more detail in the face texture. I personally pretty much stick to the former.
(disclaimer - I'm *pretty* sure all this info is correct. I'm always happy to be corrected by someone who knows more than me, though. That's how I learn)