Posted by Shanee
  Nishry, Developer Advocate
  As you may know, high resolution textures contribute to better graphics and a
  more impressive game experience. Adaptive Scalable Texture Compression (ASTC)
  helps solve many of the challenges involved including reducing memory
  footprint and loading time and even increase performance and battery life.
  If you have a lot of textures, you are probably already compressing them.
  Unfortunately, not all compression algorithms are made equal. PNG, JPG and
  other common formats are not GPU friendly. Some of the highest-quality
  algorithms today are proprietary and limited to certain GPUs. Until recently,
  the only broadly supported GPU accelerated formats were relatively primitive
  and produced poor results.
  With the introduction of ASTC, a new compression technique invented by ARM
  and standardized by the Khronos group, we expect to see dramatic changes for
  the better. ASTC promises to be both high quality and broadly supported by
  future Android devices. But until devices with ASTC support become widely
  available, it’s important to understand the variety of legacy formats that
  exist today.
  We will examine preferable compression formats which are supported on the GPU
  to help you reduce .apk size and loading times of your game.
  Texture Compression
  Popular compressed formats include PNG and JPG, which can’t be decoded
  directly by the GPU. As a consequence, they need to be decompressed before
  copying them to the GPU memory. Decompressing the textures takes time and
  leads to increased loading times.
  A better option is to use hardware accelerated formats. These formats are
  lossy but have the advantage of being designed for the GPU.
  This means they do not need to be decompressed before being copied and result
  in decreased loading times for the player and may even lead to increased
  performance due to hardware optimizations.
  Hardware Accelerated Formats
  Hardware accelerated formats have many benefits. As mentioned before, they
  help improve loading times and the runtime memory footprint.
  Additionally, these formats help improve performance, battery life and reduce
  heating of the device, requiring less bandwidth while also consuming less
  energy.
  There are two categories of hardware accelerated formats, standard and
  proprietary. This table shows the standard formats:
| 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 | Higher quality than ETC1 and 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 | Available with Adreno GPU. | 
| PVRTC | Available with a PowerVR GPU. | 
| DXT1 | S3 DXT1 texture compression. Supported on devices running Nvidia Tegra platform. | 
| S3TC | S3 texture compression, nonspecific to DXT variant. Supported on devices running Nvidia Tegra platform. | 
  That’s a lot of formats, revealing a different problem. How do you choose
  which format to use?
  To best support all devices you need to create multiple apks using different
  texture formats. The Google Play developer console allows you to add multiple
  apks and will deliver the right one to the user based on their device. For
  more information check   "http://developer.android.com/training/multiple-apks/texture.html?utm_campaign=ASTC-115&utm_source=dac&utm_medium=blog">
  this page.
  When a device only supports OpenGL ES 2.0 it is recommended to use a
  proprietary format to get the best results possible, this means making an apk
  for each hardware.
  On devices with access to OpenGL ES 3.0 you can use ETC2. The
  GL_COMPRESSED_RGBA8_ETC2_EAC format is an improved version of ETC1
  with added alpha support.
  The best case is when the device supports the Android Extension Pack. Then
  you should use the ASTC format which has better quality and is more efficient
  than the other formats.
  Adaptive Scalable Texture Compression (ASTC)
  The Android Extension Pack has ASTC as a standard format, removing the need
  to have different formats for different devices.
  In addition to being supported on modern hardware, ASTC also offers improved
  quality over other GPU formats by having full alpha support and better
  quality preservation.
  ASTC is a block based texture compression algorithm developed by   "http://www.arm.com/">ARM. It offers multiple block footprints and
  bitrate options to lower the size of the final texture. The higher the block
  footprint, the smaller the final file but possibly more quality loss.
  Note that some images compress better than others. Images with similar
  neighboring pixels tend to have better quality compared to images with vastly
  different neighboring pixels.
  Let’s examine a texture to better understand ASTC:
"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwg4M9H8Mg1GIXzXRL7QalzW4kRoflP1-pqnDpj3BmLNx1X8PIxIfVXGPGd4EPEqSnbwNpz55nShF682DPH5ou9rbxNTIgh8TKqFsylwkV7FqERHjypbeNyYTJ0nhvCLPNKLj7SKPEOtpu/s1600/jelly-original.png"
imageanchor="1">
  This bitmap is 1.1MB uncompressed and 299KB when compressed as PNG.
  Compressing the Android jellybean jar texture into ASTC through the   "http://malideveloper.arm.com/develop-for-mali/tools/asset-creation/mali-gpu-texture-compression-tool/">
  Mali GPU Texture Compression Tool yields the following results.
  As you can see, the highest quality (4x4) bitrate for ASTC already gains over
  PNG in memory size. Unlike PNG, this gain stays even after copying the image
  to the GPU.
  The tradeoff comes in the detail, so it is important to carefully examine
  textures when compressing them to see how much compression is acceptable.
  Conclusion
  Using hardware accelerated textures in your games will help you reduce the
  size of your .apk, runtime memory use as well as loading times.
  Improve performance on a wider range of devices by uploading multiple apks
  with different GPU texture formats and   "http://developer.android.com/training/multiple-apks/texture.html?utm_campaign=ASTC-115&utm_source=dac&utm_medium=blog">
  declaring the texture type in the AndroidManifest.xml.
  If you are aiming for high end devices, make sure to use ASTC which is
  included in the Android Extension Pack.
style="color: #333333; text-decoration: none;"> "font: 13px/16px arial,sans-serif; margin-right: 4px; margin-top: 0px;">Join
the discussion on
style="color: #333333; text-decoration: none;"> "font: bold 13px/16px arial,sans-serif; margin-right: 4px; margin-top: 7px;">
+Android Developers
style="color: #333333; text-decoration: none;">
width="32">
 
 
 
 
 
 
 
 
 
 Hello, my name is Jack Sparrow. I'm a 50 year old self-employed Pirate from the Caribbean.
Hello, my name is Jack Sparrow. I'm a 50 year old self-employed Pirate from the Caribbean. 
ليست هناك تعليقات:
إرسال تعليق