Texture size?

Texture size?

Share and discuss visual creations and creation practices like texturing, modelling and musing on the meaning of life.

Moderators: MR.D, Moderators

Post Reply
User avatar
Snipawolf
Posts: 4357
Joined: 12 Dec 2005, 01:49

Texture size?

Post by Snipawolf »

I've been using 256x256 for the last 8 units I made..

I'm fucken tired of it, too.. The units are ugly and 256x256 sux.. Period.

Is there any negative (besides mod size..) to using a 512x512 for every unit..

Positives:
Better Mod Appearance
Better Looking Units
Modder's approval/happiness at seeing something that doesn't blow...
User avatar
smoth
Posts: 22309
Joined: 13 Jan 2005, 00:46

Post by smoth »

I do not see a reason you shouldn't as long as you make the most use of it.
User avatar
Peet
Malcontent
Posts: 4383
Joined: 27 Feb 2006, 22:04

Post by Peet »

You just need to be aware of texture sizes in the vram as well, one 512x512 uses ~1MB of space.
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Post by AF »

as long as they're s3o it shouldnt matter as much.
User avatar
Peet
Malcontent
Posts: 4383
Joined: 27 Feb 2006, 22:04

Post by Peet »

AF wrote:as long as they're s3o it shouldnt matter as much.
Uh....k then, Mr. I-Have-A-640MB-Graphics-Card...
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Post by AF »

Peet, not everyone has integrated graphics
User avatar
Snipawolf
Posts: 4357
Joined: 12 Dec 2005, 01:49

Post by Snipawolf »

So, as long as I don't have 128 different 512x512's I should be fine? O.o

Or what.. How does that work, that was the only thing I was thinkin about that might hinder people...
User avatar
jackalope
Posts: 695
Joined: 18 Jun 2006, 22:43

Post by jackalope »

snipa when will you release a beta of your mod, how many units do you have now?
User avatar
Snipawolf
Posts: 4357
Joined: 12 Dec 2005, 01:49

Post by Snipawolf »

13, yet this isn't the productive point of the thread.
User avatar
Peet
Malcontent
Posts: 4383
Joined: 27 Feb 2006, 22:04

Post by Peet »

AF wrote:Peet, not everyone has integrated graphics
I'd say the average texture memory of spring users is probably about 128 MB. If you have a ta-sized mod of 512's, you've removed the majority of the community's ability to play your mod.
User avatar
Snipawolf
Posts: 4357
Joined: 12 Dec 2005, 01:49

Post by Snipawolf »

TA-sized? x.x

It'd take me an eternity and a half to do that...

Wait a damn second...

All of my 512x512's are easily 250 kb or less..

You 'tard, you got your sizes messed up..

I forgive ya, though. :wink:
Warlord Zsinj
Imperial Winter Developer
Posts: 3742
Joined: 24 Aug 2004, 08:59

Post by Warlord Zsinj »

SWS decides on texture size based on the size and prevalence of our units.

If it is a larger unit, we will allow 512*512, but if it is small, we stick to 256*256 (or alternatively, make it 512*512, but try to fit two or three units onto it, so you can make certain elements larger (ie: the faces on infantry) in the map. The commander will definitely have 1024*1024, and potentially the ATAT too.

I'd say currently there is a 50/50 split between 512/256 textures - probably even leaning towards the amount of 512 texxes.
User avatar
Snipawolf
Posts: 4357
Joined: 12 Dec 2005, 01:49

Post by Snipawolf »

Speaking of this...
Smoth's morty tex is 288 kb..

And, its the most filled out looking texture I've ever seen..

Infantry can keep their 256's, but for tanks and stuff, they need larger textures...

This thread is pretty much concluded.. Feel free to chat, I guess.
User avatar
Peet
Malcontent
Posts: 4383
Joined: 27 Feb 2006, 22:04

Post by Peet »

Snipawolf wrote:All of my 512x512's are easily 250 kb or less..
They are smaller on the hdd, yes, but unless they are .dds they remain uncompressed in the vram.
User avatar
smoth
Posts: 22309
Joined: 13 Jan 2005, 00:46

Post by smoth »

dds isn't utlized by all cards.
User avatar
Argh
Posts: 10920
Joined: 21 Feb 2005, 03:38

Post by Argh »

It is by all the cards I care about :roll:

We're going to be able to do fricking LOD soon, and games can even include a performance Widget to allow users total control within their games. How much more scalability do we really need?

I, for one, fully intend to include a LOD widget that swaps S3Os and lowers texture sizes, for the seriously-impaired user- it's very easy to shrink the textures. And that's a fairly major performance issue for people, so I think it's better to support that than pretend it doesn't matter.

But wasting time building support for pre-DirectX 8 cards? Gimme a break. I could care less about a GeForce II user who's trying to play Spring, frankly. They can pick up GeForce 3 and very nice GeForce 4 cards for practically nothing now- the only excuse for not having that level of hardware is unbelievable laziness, frankly. Not money. Because if you can afford to have a computer, be online, and etc., etc.... you've got enough money for a decent, albeit used, graphics card, that was very good in its day, but is crap by today's standards.



Now, getting to the issue.

Snipa, each doubling in size of the skin results in > doubling of GPU usage, and slightly < doubling in texture RAM assigned. One of the most important things you need to make sure to do, when you're making the DDS files, is include all the mipmap levels. Mipmaps greatly improve performance, for cards that support them (i.e., anything that's DirectX-8 compliant, or had its drivers upgraded to make the cut, i.e., the GeForce-3 series).

Worrying about running out of texture memory is not a non-issue. I don't really know how gracefully Spring handles this, because I've always used played using fairly modern hardware, but I suspect that Bad Things will happen.

However, most people are using graphics cards with > 64MB of texture memory these days, which is enough (barely) to handle the load of a fairly large mod. And, so far as I am aware, these textures don't get sent to the GPU until the S3O is actually loaded. This is actually a bad thing for performance (I've ranted about this before, I'm shutting up now), but it also means that if you're not expecting every unit in the mod to show up every single game, then you can even fudge a bit. Just keep in mind that:

1. Less is always better for performance.
2. Quality is relative. If you have a mod with gazillions of tiny things, they can probably get away with small textures, and the inverse.
3. Using the shaders is another big GPU cost that most people don't pay much attention to. The reflective shader, in particular, requires tesselation, which effectively doubles or triples polycount during one of the rendering passes.
Last edited by Argh on 28 Jun 2007, 04:33, edited 1 time in total.
User avatar
Snipawolf
Posts: 4357
Joined: 12 Dec 2005, 01:49

Post by Snipawolf »

Well, I believe it would be easy to have a character have the texture be rendered half-res, instead of us actually doing anything.

*I don't understand what I mean by character, excuse my lack of words for now.. I'm tired...
User avatar
smoth
Posts: 22309
Joined: 13 Jan 2005, 00:46

Post by smoth »

however argh, if you are using a dds then you already have generated mip levels. If spring used them I would understand but I do not think spring does.
User avatar
Argh
Posts: 10920
Joined: 21 Feb 2005, 03:38

Post by Argh »

DDS has configurable levels of mip- in theory, you could just use one mip level, for the greatest possible savings in size.

As for whether it uses it or not... hmm... ya know, I'm pretty sure it does. I saw a huge improvement in performance, when I went from TGA to DDS, back in the early days with NanoBlobs. But whether "loading DDS" and "taking full advantage of mipmaps" is the same thing is a question I'm not qualified to answer, frankly, so we'd better ask the devs.
Tobi
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Post by Tobi »

Spring doesn't handle lack of texture memory because it uses OpenGL, there is no way to query whether a specific texture resides in texture memory or in system memory. (There is only glAreTexturesResident() with which one can check whether all textures are in VRAM, but I don't think that is used by Spring.)

So basically you'll just get big slowdowns if you run out of texture mem because the drivers will need to swap out textures from system to video ram over the PCIE (or AGP on older cards) bus multiple times per frame.

EDIT: AFAICS S3O should work fine with DDS, and I'm sure mipmapping is enabled for non-DDS textures. For DDS textures I noticed that Spring doesn't set GL_TEXTURE_MIN_FILTER so it then depends on the default setting for GL_COMPRESSED_RGBA_S3TC_DXT1_EXT textures. I have no clue whether that has mipmaps enabled or disabled by default.

Code: Select all

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
I'd say, just make a unit with a way too big checkerboard-pattern texture and test for yourself. If mipmapping isn't on (for either type of texture) it is a bug.

EDIT 2: I think it is a bug, I see nothing about a change in default settings for mipmapping in the spec
Post Reply

Return to “Art & Modelling”