What are good texture sizes and poly counts to use nowadays?

I’ve been looking at some of the built in content and it varies between 1024x1024 and 2048x2048. Doom 3 was basically “Ultra” back in the day with 512x512 but I’m sure we’re way past that.

If I’m making a detailed environment, is it going to work well to have a large variety of 2048x2048 textures? I seem to have the best results with that size since even 1024x1024 starts to lose some of my normal mapping detail on some hexagonal screws I added to my texture. This would include diffuse, normal, metallic, specular, etc…

I’m mostly talking about the main wall textures that you get up close to. Of course, it makes sense to have smaller textures on smaller things.

Also, for characters, is 2048x2048 to about 4096x4096 reasonable? I’d think characters would typically be more detailed.

One of my characters is about 30k polys at the moment. My environment will probably have much fewer polys, and will rely heavily on nicely detailed normal map textures in the tech base areas of my game. I plan on having some hellish areas as well and I haven’t even started making art for that section yet, so we’ll see.

UE4 handles up to 8192x8192 texture sizes. (this can be changed in the .ini but lets not go there).
Average taken you should consider one 1024x1024 texture for one 1m by 1m wall.
Though, if you want more detail in there you can always go for 2048 or higher.

Its up to you imho, find a balance between performance and quality and see where that takes you.
For polycount, you can import 20.000.000 polygon cubes (as long as the .fbx filesize is under 1gb it imports) but again, if you can get away with a few polygons then why should you add more? :slight_smile:
use as much polygons as your model need, but dont go crazy and use millions of polygons per mesh.

I cant give any accurate average polycounts because there are a lot of variables. (mobile, platforms, small scenes, huge scenes, type of mesh etc)

It is interesting because as the systems have gotten faster in general allowing more, at the same time, mobile devices have entered into the market. So for mobile markets I have had requests for insanely low polygon counts. So basically it is just going to depend on your target device(s). In general though I think if you are going for a wide range of devices then start high because it is always easier for both meshes and textures to lower the resolution than to go the other way.

Regarding large and small objects, ,my rule of thumb is not texture space and surface area. I go by detail needed. So for example if I have a large wall that has very little detail, I’ll make that small. And a set of screws lets say on a larger less detailed object I’ll make larger on the map, proportionately. Because these little details turn to mush much easier than a large spread out surface.

Fist rule: less triangles, small textures, less render states changes = good.

Imo, 30k poly on a char as you said is to much. Also depends a lot of what type of game/app you do. If you plan to render ONLY one character with 30k… let’s say… I can accept it, else not. All depends on context.

I’m mostly targetting PC’s and possibly consoles if I ever get to that point as I’m making a First Person Shooter. According to the asset browser, it says my character is actually 15930 triangles not 30k so that’s cool I guess. I must’ve been looking at the wrong number when doing work in zbrush. I’ve had quite a few of those characters on screen at once without problems, and that was back on a GTX 480.

I may make some mobile games later too but not for this project. I’ll probably go with what I know about previous generations for that. My main question here is about what I should expect is the quality bar of the current gen.

For PC there is not much difference how many polys you have. Modern video cards may easily render 1,000,000 polys scenes without choking. Same applies for complexity of your shaders - they may be arbitrarily complex.

But textures (and sampling) are actually what drops FPS. Normals, reflection, diffuse, light maps… all different for every mesh used. That’s the main bottleneck, based on experiments I performed a while ago.

Depends on the game, there’s no right or wrong answer. Our game for example requires >200 4K textures for one object, which itself is around 40K polygons with a 500 instruction pixel shader. We also run that on mobile (Shield Tegra K1), but scale the textures down to 1K. We could probably get away with 2K textures on the shield too.

It really depends on what you’re doing. Reduce Draw-Calls where possible, combine mesh sub-objects together, use less materials etc. You can get away with more polygons than people like to admit nowadays, but obviously, the lowest you can get away with without sacrificing visual quality is where to aim.

There’s always the issue of optimizing before you need to. Do everything to the highest level of detail you can, then optimize it later. You can always scale down, it’s much harder to scale up.

Optimization is an art unto itself to be honest.

Wait I’m sorry… isn’t one 4k texture at 32bpp about 32mb? And you have 200 of them loaded at once? That’s 6.5 gb of vram on just one object! Unless my math in all of this is wrong…

Well the idea of polycount budgets is out the window and as a problem been solved a long time ago with the introduction of the GPU.

Got up to 70 Million tris before I gave up with the point being made. :smiley:

“Materials” is a different matter but more or less the engine handles the performance tuning for you by streaming the textures when needed to maintain playable frame rates “but” the best practice is less is better and one can use masking and PBR types of procedural materials and make use of much lower resolutions and RGB channel techniques that would be equal or even better than high resolution texture maps version.

The magic though is UE4 is modular in design so you can build first and see impact using on screen stats of whats happening in real time and then make design decisions based on what you see as to impact and leave all of that best practice stuff for the polish stage. It’s a bit of a strange workflow as you will be working more or less backwards from what your use to. :wink:

With texture compression it’s probably less.

I really can’t image why you would have 200 textures on a single object though, especially 4K. I’m kind of curious what it is? An environment? I’d think an environment would be composed of many tiny sub objects?

Probably this: Uber Hi-Res Earth Shader - Work In Progress - Work in Progress - Unreal Engine Forums

Aroundabout that yep haha, luckily we have a very narrow range of target hardware, and a smart-*** like myself taking heavy advantage of streaming.

OK, in that case that seems doable heh. I mean it does stream stuff right? And with LOD and all that, it just might work.