Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Texture Compression Android

Iniciado por Challenger, Febrero 26, 2017, 06:43:29 AM

Tema anterior - Siguiente tema
Febrero 26, 2017, 06:43:29 AM Ultima modificación: Febrero 26, 2017, 07:28:54 AM por pioj
Hola a todos!, estoy mirando el tema de compresión de texturas para Android, y me ha surgido algunos interrogantes, ya que después de leer en diferentes fuentes de información no está muy claro cual usar.
 
Parece ser que la más estable o más aceptada por cualquier hardware de móvil es la ETC, por contra no aplica texturas Alpha y no está muy optimizada.
 
La DXT es la mejor de todas y la mayoría recomienda, pero no admitida por todos los hardware de los móviles. En la página de Android de desarrolladores recomiendan ASTC por su "performance" y que resumo aquí. 
 

  •    ETC1: Supported on all Android devices with OpenGL ES 2.0 and above. Does not support alpha channel.


  •    ETC2: Requires OpenGL ES 3.0 and above.


  •    ASTC: Highter quality than ETC1 & ETC2. Supported with the Android Extension Pack.


As you can see, with higher OpenGL support you gain access to better formats. There are proprietary formats to replace ETC1, delivering higher quality and alpha channel support. These are shown in the following table:
 

  •    ATC: Availabble with Adreno GPU.


  •    PVRTC: Available with PowerVR GPU.


  •    DXT1: DXT1 texture compression. Supported on devices running Nvidia Tegra platform.


  •    S3: DXT1 texture compression. Supported on devices running Nvidia Tegra platform.


Esta información es del 2015, mi duda viene porque yo estoy haciendo pruebas con DXT y tal vez no sea la mejor opción, sobre todo si vas a vender el juego y solo una parte de la gente puede jugar a el.
 
Por otro lado, he leído que los móviles aunque no sea compatible con DXT, descomprimen el formato y lo puede leer en su formato, el problema de esto último es que recargas el GPU y la memoria, con lo que conlleva el decremento del juego.
 
¿Que texture compression aconsejáis?
 
 
 

Febrero 26, 2017, 07:54:04 AM #1 Ultima modificación: Febrero 26, 2017, 07:56:55 AM por pioj
Si es para Android, depende y conviene consultar la Wikipedia o dónde sea, para ver la ficha técnica de Hardware del dispositivo móvil al que lo vayas a portar. Generalmente puedes dejarlo todo en Don't Override y probar suerte, ya que tampoco supone una "súper mejora" y las compresiones son siempre con pérdida.
 
El tema de la compresión de texturas sólo te ayudará si estás 100% convencido de que todas tus texturas son cuadradas y en potencia de 2. De lo contrario, no ayuda en nada. En algunos dispositivos, la compresión se fuerza al compilar, aunque tú no la marques, ya que es lo único que el cacharro soporta. Por suerte la mayoría de GPUs móviles soportan formatos "normales" como el PNG, etc...
 
Conviene leer también este artículo reciente: http://frozenfractal.com/blog/2017/2/20/texture-compression-on-mobile-demystified/
 
El principal problema es que cada fabricante de móvil hace cosas raras, y vuelve incompatible un chip con algún formato concreto, por lo que no puedes aplicar la norma de "elegir siempre éste".
 

  •    Por lo general, la mejor opción en móvil Android siempre es ASTC, ya que es la más nueva y la más eficiente.


  •    Adreno es la más compatible para todas las CPU Qualcomm.


  •    ETC está deprecada en favor de ASTC.


  •    PowerVR es lo mejor para iOS y iPhone/iPad.


  •    No uses DXT, ni aunque sea para Tegra. Tegra usa muchos formatos para plataforma Windows y DirectX, y está más orientado a PC. Sale más a cuenta usar otro sistema de compresión.


 
 
Mi consejo es que no fuerces la compresión de texturas para todo, sinó que vayas eligiendo las texturas en el proyecto por separado, y comprimas aquellas que concretamente te molesten más. Así te ahorras tener que hacerlas todas cuadradas y potencia de 2.
 
Y, siempre que puedas, hazlo todo de forma manual, guarda tú mismo el fichero en ese formato por tu cuenta, no dejes que lo haga Unity con unos valores por defecto.


Etiquetas: