• Advertisement
Sign in to follow this  

What makes using high-res textures slower?

This topic is 1560 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi there,

I'm trying to figure why high-resolution textures seem to cook GPUs more than low-res ones. Is it the fact that you need to do more memory reads per texture and therefore use more bandwidth? If that is the case, surely, when the triangle being rasterized is taking fewer pixels of the screen, performance should increase?

Thanks,
Daniel Kruyt

Share this post


Link to post
Share on other sites
Advertisement

I'm not an expert, but "more memory reads" in form of a higher number of textels that needs to be read, is definately not the case. Yes, a triangle that is further away and smaller does indeed increase performance, since less pixels need to be rasterized. You'll notice once you start to apply more complicated effects like Parallax mapping and so on.

 

From my own experience, larger textures (from models) aren't a huge performance bottleneck, though I might have been simply limited otherwise. One of the reasons why larger textures can be slower AFAIK is because smaller ones fit better in the texture cache, and thus avoid cache trashing (though this is mostly quessing, take it with a grain of salt). More memory bandwidth is likely to be a reason too, since if the texture is larger, it takes up more memory and thus more data has to be transfered somehow...

Edited by Juliean

Share this post


Link to post
Share on other sites

One of the reasons why larger textures can be slower AFAIK is because smaller ones fit better in the texture cache, and thus avoid cache trashing


This is good advice. Understanding texture cache can probably gain you some performance.

Share this post


Link to post
Share on other sites

I'm not an expert, but "more memory reads" in form of a higher number of textels that needs to be read, is definately not the case. Yes, a triangle that is further away and smaller does indeed increase performance, since less pixels need to be rasterized. You'll notice once you start to apply more complicated effects like Parallax mapping and so on.

 

From my own experience, larger textures (from models) aren't a huge performance bottleneck, though I might have been simply limited otherwise. One of the reasons why larger textures can be slower AFAIK is because smaller ones fit better in the texture cache, and thus avoid cache trashing (though this is mostly quessing, take it with a grain of salt). More memory bandwidth is likely to be a reason too, since if the texture is larger, it takes up more memory and thus more data has to be transfered somehow...

 

+1 but that would be cache thrashing, unless you are actually trashing your cache tongue.png

Share this post


Link to post
Share on other sites

Increasing texture resolution usually doesn't cause a significant increase in bandwidth. If you assume that all triangles sample from a fixed number of textures per pixel, then the total bandwidth required for sampling is actually bounded by your screen resolution as long as you don't have any overdraw. In most cases the pixel shader will be magnifying texels because the texture resolution is already higher than the screen resolution for that pixel, which means that increasing the resolution of the texture will have 0 effect on the bandwidth used for that particular pixel. The only places where it will cause an increase in bandwidth will be where the pixel shader is magnifying a texture, in which case more bandwidth will be used when fetching a higher resolution mip level.On the other hand, increasing the number of textures sampled per pixel will always result in more bandwidth being used for all pixels. However static textures are almost always compressed, which generally makes standard texture mapping pretty forgiving.

Share this post


Link to post
Share on other sites

Hi, thanks for all the answers!

Is there anywhere that I can go to learn more about modern GPU architectures? I'm very into optimizing any and all code that I write, so I like to know as much detail about the systems I develop for as possible. Thanks for your time. smile.png

Share this post


Link to post
Share on other sites

Hi, thanks for all the answers!
Is there anywhere that I can go to learn more about modern GPU architectures? I'm very into optimizing any and all code that I write, so I like to know as much detail about the systems I develop for as possible. Thanks for your time. :)


Beyond3D (http://www.beyond3d.com/) tends to be a great starter.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement