1
\$\begingroup\$

Upon developing a big project, it just happened that when stitching all the thousands of animations spriteframes of a single character together, the sprite sheet turned around to 2K by 13K texture!!

(╯°□°)╯︵ ┻━┻

Some GPUs cannot display above 4K textures, and there's even some limitation in some engines that they will add blank spaces to fill the areas to make a power of two texture. To avoid these problems, I was currently designing a workflow to segment these textures to 4 or 6 different textures of no more than 4K resolutions, like 4096x4096 at max.

But then, is it worth at the end? ಠ__ಠ My targeted platform is desktop only so I am not so much worried about VRAM, the compression I am doing is for video memory, and it reduces the VRAM quite a bit without too much quality loss. Also all the work is currently being done by a packing algorithm, so it shuffles the sprites based on their bounding box, so not a lot of manual work here, it's all automated.

What you guys think?

\$\endgroup\$
1
  • 3
    \$\begingroup\$ Usually, you'll define the specs of the minimal requirements for the hardware and make sure the game is playable there. This will tell you if textures larger than 4k is acceptable, and if your global texture size fits correctly into the VRAM. \$\endgroup\$
    – Vaillancourt
    Oct 28, 2021 at 17:47

1 Answer 1

2
\$\begingroup\$

You'll probably be fine with textures up to 16384x16384 on modern hardware as that's the limit in DX11. For older hardware (DX9 era), you probably want to set the limit at 2048x2048.

The reason that some engines want power of two sized texture widths and heights is that GPUs can't do mip mapping for non-power-of-two textures. Mip mapping is probably a good thing for your 2D sprites as it will give you better image quality when scaling them. Scaling will happen because PCs have variable screen resolutions, and you may also want to scale them for gameplay reasons.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .