Should I avoid 2048² textures (or greater) for VR game?

Should I stay with 1024² textures instead of 2048² or it’s irrelevant with current hardware?
(all of this taking into account that in VR users tend to observe (and get interested) in a lot more detail than in usual 2d screen games)

btw Im not planning to make a Gear VR version, only for Desktop.

Thanks

Depends on the asset and tiling. The larger the asset, the higher the texture size (again. depends on tiling too)

Why?, I dont get it very well, I thought that if a material is used by a surface that at least one pixel is needed to render then the whole texture maps should be loaded in memory dont minding if it by tiling appears one or one hundred times… to be honest I dont have a clear picture…

There are three separate matters to texture size:

  1. How much RAM is consumed on the GPU?
  2. How much texture fill/fetch rate is consumed by using the texture?
  3. How blurry can you accept your environment to be?

The #1 most important part is to make sure that all your textures have MIP maps and use some kind of MIP mapped (or anisotropic) filtering. This is true for all textures, except perhaps GUI widgets that are intended to render 1:1 with screen pixels.
With MIP maps available, the graphics card will not have to consume lots of texture fill/fetch rate to render objects that are displayed at lower-than-full resolution (which will be almost all objects, almost all the time.)
The #2 most important part is to make sure the sum total of all textures used within, say, a second of gameplay, all fit into the the GPU RAM at the same time. This avoids having to push the textures to the GPU from the CPU each frame.
Once those are both solved, if you still have room in VRAM, and there is still objects that render at the top level MIP map even when not right next to the camera, then you can start adding more MIP map levels to your textures to get increased resolution.

Exactly what the right size is depends entirely on the content, how it’s textured, and how close the player will get to it. After all, the display is only about 2000x1000 pixels, so only objects with significant magnification will need the highest-level texture resolutions.

thanks, “make sure that all your textures have MIP maps”

I was rather ‘sure’ that the MIPs were automatically generated in the latests version of the engine (?) so that should be explicitly used (image):
Been unticked by default I thougth it was ok that way.

Captura.PNG

If the MIP maps are automatically generated, you’re fine – I’ve sometimes seen people explicitly turn off MIP maps to “save memory” which is seldom actually a good idea.

This is somewhat true, especially for typical static geometry. And the “memory” we talk about is the graphics card VRAM. (GDDR5 or whatever it happens to be on your particular card.)
So, it’s a really good idea to make sure you don’t use more texture RAM than you have graphics card RAM. If you have an old card with 256 MB of VRAM, you’ll have to make hard choices.

For modern geometry streaming systems (and I think Unreal Terrain might be one of those?) then you’ll see the engine load only the MIP map levels that are needed into RAM. It will explicitly not load the biggest MIP map levels until you get close enough to the object. The draw-back of this is that it may slow down frame rate a little bit while it loads in the larger textures, and/or there will be a bit of delay when moving where textures will seem blurry and then resolve.
I don’t know how aggressively Unreal does this for static geometry, but another benefit of LOD geometry is that you can use a smaller sized texture for distant objects, so you can get that benefit in that way.

I’d argue that if you can get away with it performance wise, VR actually demands higher texture resolution than a standard game given that a player would generally have the freedom and ability to look at things close up that they normally wouldn’t in a non-VR game.

I want to clarify this a little more as this could be miss understood. What Jwatte is talking about is correct but what you do not want to do is import new lower resolution texture for your LOD’s as you will end up making your game consume more memory. LOD’s when viewed will make use of Mipmaps so you do not need to worry about importing new smaller Textures for your LOD’s and can use the Textures that it is already using.

1 Like

Thanks for the answers.