1- // Copyright 2014-2024 The Khronos Group Inc.
1+ // Copyright 2014-2026 The Khronos Group Inc.
22// SPDX-License-Identifier: CC-BY-4.0
33
44[[ASTC]]
@@ -20,7 +20,7 @@ ASTC textures may be encoded using either high or low dynamic range.
2020Low dynamic range images may optionally be specified using the sRGB
2121transfer function for the _RGB_ channels.
2222
23- Two sub-profiles (`` LDR Profile'' and `` HDR Profile'' ) may be implemented,
23+ Two sub-profiles ("` LDR Profile`" and "` HDR Profile`" ) may be implemented,
2424which support only 2D images at low or high dynamic range respectively.
2525
2626ASTC textures may be encoded as 1, 2, 3 or 4 components, but they are
@@ -42,7 +42,7 @@ The design goals for the format are as follows:
4242 rates, leaving content developers with only coarse control over
4343 the size/quality tradeoff.
4444* Scalable and long-lived. The format should support existing _R_, _RG_,
45- _RGB_ and _RGBA_ image types, and also have high `` headroom'' , allowing
45+ _RGB_ and _RGBA_ image types, and also have high "` headroom`" , allowing
4646 continuing use for several years and the ability to innovate in
4747 encoders. Part of this is the choice to include HDR and 3D.
4848* Feature orthogonality. The choices for the various features of the
@@ -67,10 +67,10 @@ is divided into a number of blocks of uniform size, which makes it
6767possible to quickly determine which block a given texel resides in.
6868
6969Each block has a fixed memory footprint of 128 bits, but these bits
70- can represent varying numbers of texels (the block `` footprint'' ).
70+ can represent varying numbers of texels (the block "` footprint`" ).
7171
72- NOTE: The term `` block footprint'' in ASTC refers to the same concept
73- as `` compressed texel block dimensions'' elsewhere in the Data Format
72+ NOTE: The term "` block footprint`" in ASTC refers to the same concept
73+ as "` compressed texel block dimensions`" elsewhere in the Data Format
7474Specification.
7575
7676Block footprint sizes are not confined to powers-of-two, and are
@@ -87,7 +87,7 @@ simplifies cache design, reduces bandwidth and improves encoder throughput.
8787To understand how the blocks are stored and decoded, it is useful to start
8888with a simple example, and then introduce additional features.
8989
90- The simplest block encoding starts by defining two color `` endpoints'' . The
90+ The simplest block encoding starts by defining two color "` endpoints`" . The
9191endpoints define two colors, and a number of additional colors are generated
9292by interpolating between them. We can define these colors using 1, 2, 3,
9393or 4 components (usually corresponding to _R_, _RG_, _RGB_ and _RGBA_ textures),
@@ -116,7 +116,7 @@ For blocks which have a mixture of disparate colors, a single line in the
116116color space is not a good fit to the colors of the pixels in the original
117117image. It is therefore possible to partition the texels into multiple sets,
118118the pixels within each set having similar colors. For each of these
119- `` partitions'' , we specify separate endpoint pairs, and choose which pair of
119+ "` partitions`" , we specify separate endpoint pairs, and choose which pair of
120120endpoints to use for a particular texel by looking up the partition index
121121from a partitioning pattern table. In ASTC, this partition table is actually
122122implemented as a function.
@@ -126,7 +126,7 @@ The endpoint encoding for each partition is independent.
126126For blocks which have uncorrelated channels -- for example an image with a
127127transparency mask, or an image used as a normal map -- it may be necessary
128128to specify two weights for each texel. Interpolation between the components
129- of the endpoint colors can then proceed independently for each `` plane'' of
129+ of the endpoint colors can then proceed independently for each "` plane`" of
130130the image. The assignment of channels to planes is selectable.
131131
132132Since each of the above options is independent, it is possible to specify any
@@ -140,12 +140,12 @@ which are nevertheless highly amenable to hardware decode.
140140
141141All of the values used as weights and color endpoint values can be specified
142142with a variable number of bits. The encoding scheme used allows a fine-grained
143- tradeoff between weight bits and color endpoint bits using ` `integer
144- sequence encoding'' . This can pack adjacent values together, allowing us to
143+ tradeoff between weight bits and color endpoint bits using " `integer
144+ sequence encoding`" . This can pack adjacent values together, allowing us to
145145use fractional numbers of bits per value.
146146
147- Finally, a block may be just a single color. This is a so-called ` `void
148- extent block'' and has a special coding which also allows it to identify
147+ Finally, a block may be just a single color. This is a so-called " `void
148+ extent block`" and has a special coding which also allows it to identify
149149nearby regions of single color. This may be used to short-circuit fetching of
150150what would be identical blocks, and further reduce memory bandwidth.
151151
@@ -297,7 +297,7 @@ For square and nearly-square blocks, this gives the bit rates in
297297^| 12 ^| 12 ^| 0.89 ^|
298298|====
299299
300- The `` Increment'' column indicates the ratio of bit rate against the next
300+ The "` Increment`" column indicates the ratio of bit rate against the next
301301lower available rate. A consistent value in this column indicates an even
302302spread of bit rates.
303303
@@ -396,13 +396,13 @@ Each block has the same basic layout, shown in <<astc-block-layout>>.
3963963+| {nbsp} Extra 2+| {nbsp} Part 11+| {nbsp} Block mode
397397|====
398398
399- Since the size of the `` texel weight data'' field is variable, the
400- positions shown for the `` more config data'' field and ` `color endpoint
401- data'' field are only representative and not fixed.
399+ Since the size of the "` texel weight data`" field is variable, the
400+ positions shown for the "` more config data`" field and " `color endpoint
401+ data`" field are only representative and not fixed.
402402
403- The `` Block mode'' field specifies how the Texel Weight Data is encoded.
403+ The "` Block mode`" field specifies how the Texel Weight Data is encoded.
404404
405- The `` Part'' field specifies the number of partitions, minus one. If dual
405+ The "` Part`" field specifies the number of partitions, minus one. If dual
406406plane mode is enabled, the number of partitions must be 3 or fewer.
407407If 4 partitions are specified, the error value is returned for all
408408texels in the block.
@@ -446,7 +446,7 @@ weight data.
446446If dual-plane mode is active, the color component selector bits then appear
447447directly below the additional CEM bits.
448448
449- The final special case is that if bits [8..0] of the block are `` 111111100'' ,
449+ The final special case is that if bits [8..0] of the block are "` 111111100`" ,
450450then the block is a void-extent block, which has a separate encoding
451451described in <<astc-void-extent-blocks>>.
452452
@@ -650,7 +650,7 @@ value in a sequence (e.g. a color weight) is constrained.
650650
651651Since it is often the case that the most efficient range for these
652652values is not a power of two, each value sequence is encoded using a
653- technique known as `` integer sequence encoding'' . This allows efficient,
653+ technique known as "` integer sequence encoding`" . This allows efficient,
654654hardware-friendly packing and unpacking of values with non-power-of-two
655655ranges.
656656
@@ -664,8 +664,8 @@ in one of the forms shown in <<astc-range-forms>> and
664664|====
665665| {nbsp} Value range | {nbsp} MSB encoding | {nbsp} LSB encoding
666666| {nbsp} latexmath:[0 \dots 2^n-1] | {nbsp} - | {nbsp} _n_-bit value _m_ (_n_ {leq} 8)
667- | {nbsp} latexmath:[0 \dots (3 \times 2^n)-1] | {nbsp} Base-3 `` trit'' value _t_ | {nbsp} _n_-bit value _m_ (_n_ {leq} 6)
668- | {nbsp} latexmath:[0 \dots (5 \times 2^n)-1] | {nbsp} Base-5 `` quint'' value _q_ | {nbsp} _n_-bit value _m_ (_n_ {leq} 5)
667+ | {nbsp} latexmath:[0 \dots (3 \times 2^n)-1] | {nbsp} Base-3 "` trit`" value _t_ | {nbsp} _n_-bit value _m_ (_n_ {leq} 6)
668+ | {nbsp} latexmath:[0 \dots (5 \times 2^n)-1] | {nbsp} Base-5 "` quint`" value _q_ | {nbsp} _n_-bit value _m_ (_n_ {leq} 5)
669669|====
670670
671671[[astc-range-encodings]]
0 commit comments