Skip to main content

General guidelines

Here are the standard technical specifications we employ for asset creation internally at Avaturn. These guidelines have been optimized to ensure satisfactory loading times on slower internet connections, compatibility with older devices, and seamless performance in third-party apps.

Polygon count

We recommend no more than 7k triangles for the look (top + bottom) if you want it to work well in most environments (e.g. old Android smartphones).


  • We use GLTF 2.0 as our main format and PBR as the main material pipeline. We can use the following maps:
    • diffuse (albedo)
    • normals (tangent space)
    • occlusion map (AO)
    • roughness
    • metalness
  • We recommend not using transparency, but both alpha clip and alpha blend transparency are supported. The garment should have a single material opaque (or alpha-clipped) material, please merge your materials. You can additionally add a separate alpha blend material (but also only one).
  • You can test whether the materials look correct in our test environment. Just export your garment in .glb format and open the file there.

Texture resolution

  • We recommend using 1k resolution for the textures (diffuse, normals, ORM). Though, the lower the better, so if you can use 512 for some of the maps — do it.
  • You can go higher than 1k, but that would make the experience worse for users with slow internet connection and older devices. Too high-res textures with lots of small details will also cause aliasing issues.

Can I deviate from these recommendations?

Definitely you can use higher poly count, higher texture resolution. But keep in mind, that even if your own environment supports millions of polygons rendered at realtime, Avaturn is web-based and have limitations typical for a web browser. The bottlenecks are

  • Network bandwidth on client-side
  • CPU -> GPU data transfer. This is especially critical for textures: from our experience 1k textures are fast to transfer, 2k and 4k can posses a noticeable delay when loading.
  • Shader compilation at realtime. Browsers cannot either precompile or cache shaders and compile them every time the page is refreshed, which results in freezes. Thus it's best to minimize the number of different materials used.