-
Notifications
You must be signed in to change notification settings - Fork 6
/
compintro.txt
63 lines (58 loc) · 3.2 KB
/
compintro.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
== Compressed Texture Image Formats
For computer graphics, a number of texture compression schemes exist
which reduce both the overall texture memory footprint and the
bandwidth requirements of using the textures.
In this context, ``texture compression'' is distinct from ``image
compression'' in that texture compression schemes are designed to
allow efficient random access as part of texture sampling:
``image compression'' can further reduce image redundancy by
considering the image as a whole, but doing so is impractical
for efficient texture access operations.
The common texture compression schemes are ``block-based'',
relying on similarities between nearby texel regions to describe
``blocks'' of nearby texels in a unit:
* ``<<S3TC,S3TC>>'' describes a block of 4{times}4 _RGB_ texels
in terms of a low-precision pair of color ``endpoints'', and
allow each texel to specify an interpolation point between
these endpoints.
Alpha channels, if present, may be described similarly or
with an explict per-texel alpha value.
* ``<<RGTC,RGTC>>'' provides one- and two-channel schemes for
interpolating between two ``endpoints'' per 4{times}4 texel
block, and are intended to provide efficient schemes for
normal encoding, complementing the three-channel approach
of S3TC.
* ``<<BPTC,BPTC>>'' offers a number of ways of encoding and
interpolating endpoints, and allows the 4{times}4 texel block
to be divided into multiple ``subsets'' which can be encoded
independently, which can be useful for managing different
regions with sharp transitions.
* ``<<ETC1,ETC1>>'' provides ways of encoding 4{times}4 texel blocks
as two regions of 2{times}4 or 4{times}2 texels, each of which
are specified as a base color; texels are then encoded as
offsets relative to these bases, varying by a grayscale offset.
* ``<<ETC2,ETC2>>'' is a superset of ETC1, adding schemes for color
patterns that would fit poorly into ETC1 options.
* ``<<ASTC,ASTC>>'' allows a wide range of ways of encoding each
color block, and supports choosing different block sizes to encode
the texture, providing a range of compression ratios; it also
supports 3D and HDR textures.
* ``<<PVRTC,PVRTC>>'' describes several encoding schemes with two colors
per block of 4{times}4 or 8{times}4 texels, interpolated between
adjacent texel blocks, and means of modulating between them.
NOTE: Example data format descriptors for compressed formats can
be found under the *_colorModel_* field in <<CompressedFormatModels>>.
=== Terminology
As can be seen above, the compression schemes have a number of
features in common -- particularly in having a number of
endpoints described encoded in some of the bits of the texel
block.
For consistency and to make the terms more concise, the following
descriptions use some slightly unusual terminology:
The value _X_~n~^m^ refers to bit _m_ (starting at 0) of the _n_^th^
_X_ value. For example, _R_~1~^3^ would refer to bit 3 of red
value 1 -- _R_, _G_, _B_ and _A_ (capitalized and italicized) are
generally used to refer to color channels.
Similarly, _R_~1~^2..3^ refers to bits 2..3 of red value 1.
Although unusual, this terminology should be unambiguous
(e.g. none of the formats require exponentiation of arguments).