This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Good heuristics for picking atsc compression formats.

At the recent ARM Game Developer Days, I asked about heuristics for picking atsc compression formats. For many larger games, there could be a gig of textures, so it would be great to at least have a starting point on which compression strategy to use.

Do you guys have a white paper or a guide.

Thanks

Dave

  • Hi David,

    There is no document that I am aware of - although it sounds like a great idea to have one - but here are some basic guidelines:

    • ASTC supports different types of data, so make sure you pick an appropriate one. The perceptual error metrics in the encoder vary based on data type to get "better looking compression artefacts". The types of artefacts which are OK for RGB are bad for normal maps. That should be a relatively straight forward mapping, so not really a heuristic, but important to get right.
    • Quality wise for RGB content a 6x6 block footprint (3.56 bits per texel) generally provides slightly better quality than ETC at 4 bits per pixel, despite a 10% bitrate disadvantage.
    • Quality wise for RGB content an 8x8 block footprint (2 bits per texel) generally provides significantly better quality than PVRTC at 2 bits per pixel.
    • The lower bitrates than this don't really have an existing equivalent, so it's hard to provide guidance. If you drop down to 0.89 bits per  texel (12x12 block) then you can get phenominally low bitrates, but you do start to pick up quite significant blocking artefacts. Whether your use case can tolerate this type of error really depends on your application.

    It's worth noting that one of the basic principles of ASTC is that it moves compression from being a technical constraint to being more of an artistic choice. You don't need one size fits all, and can leave the artists to pick an appropriate level of compression for the models in the scene on a case by case basic. Rendering something in the background? Fine - drop the compression rate and save some bandwidth. Rendering a foreground character and the focus of the player's attention? Dial up the quality and increase bitrate just for that model.

    HTH,
    Pete

  • Earlier this year I gave a presentation on how to tweak compression settings in either the ARM Texture Compression Tool or the command line evaluation codec for various types of textures. This starts off with a rough explanation of how ASTC works but then goes into detail on the settings available for improving the outcome on lower bit rates and larger block sizes.

    You may find some of this useful: