Game Development Community

Texture Detail Level

by Scott Doerrfeld · in Torque Game Engine · 10/06/2006 (7:40 am) · 7 replies

I am trying to implement that very common feature which allows a player to adjust his/her own texture detail level. So far I've been playing around with the script command 'setOpenGLMipReduction' (and similar). I managed to adjust the texture detail level by setting the variable '$pref::OpenGL::mipReduction' in the preference file. I was surprised that even with the lowest detail setting (EXTREMELY blurry textures) the framerate in my mission did not improve one bit.

I was hoping to get some guidance from someone with more experience. Am I going in the right direction with this? Shouldn't the lower detail setting produce some bit of frame rate improvement?

Thank you.

#1
10/06/2006 (9:17 am)
With todays modern video cards I doubt you will see an improvement. TGE is mostly capped by the CPU not the GPU so the saved video memory isn't going to help much.

I've found the best way to improve FPS is to reduce the view distance.
#2
10/06/2006 (10:19 am)
Ah. Sorry I shoulda have mentioned my machine specs. (They are kinda outdated. Kinda...)

Macintosh, Powerbook G4, 1.33GHz, 1GB RAM
ATI Mobility Radeon 9600, 64MB

My framerates are subpar with any decent amount of geometry on-screen, which is why i'm aiming to improve. Also, I am suspect that there is a correlation between video memory and texture resolution. At the time I was doing this test my framerate was around 9-11 fps. This wasn't improved with low-res textures using the aforementioned method.

Also, the reason I want the feature is I am developing my game to accommodate fairly low-spec systems.
#3
10/06/2006 (11:09 am)
This may be helpfull for you then,

Advanced Options

Also,
preferences variables
#4
10/06/2006 (11:40 am)
If you are fill limited, which it sounds like you are, adjusting texture detail will do nothing to improve performance. Texture detail is only a factor if you are running low on video memory, i.e. you A) have many unique textures in a scene, B) have very large textures (x512+), C) are trying to run at high screen resolutions (frame buffers and textures share memory), or D) all of the above.

With that system, IMO you should be getting better framerates than 9-11 fps. (I can get nearly that with a Pentium II 450 and a geForce 2! ). This is more likely a driver issue (e.g. is OpenGL using the hardware?) or fill-rate limitation (How much stuff are you trying to render at once?). I seriously doubt it has anything to do with your texture detail level... and I think you've proved that already:
Quote:I was surprised that even with the lowest detail setting (EXTREMELY blurry textures) the framerate in my mission did not improve one bit.
#5
10/06/2006 (3:06 pm)
Quote:If you are fill limited, which it sounds like you are, adjusting texture detail will do nothing to improve performance.

That's not true. Texture fetch is limited by memory throughput and latency, which in turn competes with framebuffer fill, blend and draw. Very blurry (magnified) textures will reduce the fill rate impact by a little bit. However, if you don't blur to the point where you magnify, you get no gain, because the MIP mapping hardware will only read MIP levels to attempt to match 1:1 texel:screen resolution.

However, it sounds to me as if you are transform/geometry bound, rather than fill rate bound. One way of testing would be to compare the performance in 640x480 vs 800x600. If there's not much difference, you are T&L, or possibly CPU, bound.
#6
10/06/2006 (11:37 pm)
Thanks to everyone. This is really useful stuff. Could you please help me define the following terms so I can fully understand:

fill limited
fill rate
texture fetch
memory throughput
latency
framebuffer fill
blend
draw
1:1 texel:screen resolution

Also, can anyone shed any light about what OpenGL functions are associated with culling? I am very interested in learning how to control everything that gets rendered to the screen.

Thanks again.
#7
10/07/2006 (11:16 am)
My OpenGL performance primer from 2001, still is reasonably accurate (although there are newer things to worry about on newer cards, too).

When it comes to texel/screen resolution mapping, check out the function for calculating MIP maps as documented in the OpenGL specification.