1
\$\begingroup\$

From a performance view, which is preferable:

  • A higher detailed meshes with small textures (like 32x32 pixels) or
  • A less detailed mesh with a bigger texture (like 1024x1024 pixels)?

Additional info. I'm making a low poly project. Since I'm only using big textures for "alpha FX" (simulating complex geometry just by erasing the alpha on faces), I wonder if this is a bad approach. I could add like 50~150 triangles per model to avoid using a higher texture per asset and made those "FX" directly on geometry (since erasing on a texture very small would look very bad)

Which is the "trend"? Which has more impact on performance?

Thanks.

\$\endgroup\$
  • 1
    \$\begingroup\$ Did you encounter framerate issues? \$\endgroup\$ – Bálint Dec 27 '17 at 17:27
  • 1
    \$\begingroup\$ Why is following a "trend" important? What specific performance problems have you identified in your profiling so far? It's entirely possible that you're far enough below your hardware's capacity that neither choice will measurably impact performance, so you might be prematurely optimizing here. Please consider editing your question to include concrete examples where you're not getting the outcome you want (aesthetically or performance-wise), and we can help solve that specific issue. \$\endgroup\$ – DMGregory Dec 27 '17 at 17:46
  • \$\begingroup\$ Sorry, maybe "trend" it's not the correct word (sorry for my english). Yes, I'm prematurely omtimizing. I wanted to be sure (or have a clue) what is better instead of redoing all my models to achieve the aesthetics I want. \$\endgroup\$ – Ommadawn Dec 27 '17 at 18:11
2
\$\begingroup\$

It depends on a lot of things:

  • The GPU used,
  • The memory bandwidth available,
  • The bus bandwidth available,
  • If your textures can be compressed,
  • Where your bottleneck currently lies,
  • What is acceptable for the target art style.

Generally, the cheaper the GPU the less memory bandwidth it has. They are also more limited in texturing units. More expensive and powerful GPUs will likely not be affected either way.

The extra cost of a vertex alpha (8 bits) or vertex colour (16 or 32 bits) is compensated by allowing you to remove the texture completely along with it's UV coordinates and just use vertex colour.

As the texture would be modified dynamically it's unlikely to be compressed. It's doable but a lot more work is involved. So most likely the cost of texels + UVs would be the same as or more than vertex colours.

So there's no added memory bandwidth to your vertex data and you get rid of an entire texture lookup.

You can also delete triangles completely instead of making them transparent.

All that's left to account for is the added geometry to bring back details as needed.

There is a cost to transforming and binning triangles but this also depends on the GPU.

You will have to test and see where your bottleneck is.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ I know it was a general question, but that is the answer I was looking for. Thanks. \$\endgroup\$ – Ommadawn Dec 27 '17 at 18:12
0
\$\begingroup\$

It depends

There are other variable factors, such as coverage of the mesh on-screen, overdraw, whether you're bottlenecked elsewhere on vertex vs fragment performance, and whether your target hardware prefers vertex or fragment performance, that it's impossible to give a one-size-fits-all answer.

Benchmark both on your target hardware and make your decision based on that.

| improve this answer | |
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.