1 / 81

PACKMAN – Texture Compression for Mobile Phones

PACKMAN – Texture Compression for Mobile Phones. Jacob Ström, Tomas Akenine-Möller Ericsson Research. Outline. Motivation and Previous work Design Goals Basic Idea Decompression of a Block Compression Results. Why 3D Graphics on a Mobile Phone?. Man-Machine Interfaces. Screen Savers.

lark
Download Presentation

PACKMAN – Texture Compression for Mobile Phones

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PACKMAN – Texture Compression for Mobile Phones Jacob Ström, Tomas Akenine-Möller Ericsson Research

  2. Outline • Motivation and Previous work • Design Goals • Basic Idea • Decompression of a Block • Compression • Results

  3. Why 3D Graphics on a Mobile Phone? • Man-Machine Interfaces • Screen Savers • Games • Maps, Messaging, Browsing and more...

  4. Why is 3D Graphics Hard on a Mobile Phone? Limited resources: • Small amount of memory • Little memory bandwidth • Little chip area for special purpose • Powered by batteries

  5. Texture Compression Helps • Small amount of memory • More texture data can fit in the limited amount of memory • Little memory bandwidth • More texturing possible for same amount of bandwidth • Little chip area for special purpose • A texture cache using compressed data can be made smaller • Powered by batteries • Reduced bandwidth means lower energy consumption

  6. Previous Work

  7. Previous Work

  8. Previous Work

  9. Previous Work

  10. Design Goals Major Design Goals • Minimal decompression complexity • Acceptable quality Minor Design Goals • Low compression complexity • Small block size • Reasonable compression (around 4 bpp)

  11. Early Design Decisions Block size of 32 bits was chosen • Few bits -> small bit widths after texture cache • Fits 32-bit wide buses on systems without texture cache No indirect addressing of colors • LUT of colors increases latency and complicates hardware Implications: • 2x4 was the only reasonable block size, 4 bpp

  12. Basic Idea • The Human Visual System (HSV) is more sensitive to luminance than to chrominance • In video and still image coding, chrominance information is most often subsampled in the x- and y- direction (MPEG, JPEG, H263, H264 etc). • Our scheme has basically only one color per 2x4 block. The rest is luminance information

  13. Basic Idea • Use only 12 bits to specify a “general color” for a 2x4 block 12-bit “general color”

  14. Basic Idea • Use only 12 bits to specify a “general color” for a 2x4 block • Modify the luminance for each pixel in the block + 12-bit “general color” per-pixel luminance

  15. Basic Idea • Use only 12 bits to specify a “general color” for a 2x4 block • Modify the luminance for each pixel in the block + = 12-bit “general color” per-pixel luminance resulting image

  16. Luminance modification Luminance is modified additively: Example: “general block color” is R=17, G=34, B = 51 Luminance modifier for the pixel is 220, The new pixel value is R = 17+220 = 237G = 34+220 = 254B = 51+220 = 255 (after clamping)

  17. How to specify luminance • Two bits per pixel are used to specify the luminance – modifier is one out of four values. • Problem: Small values [-8, -2, 2, 8] 

  18. How to specify luminance • Two bits per pixel are used to specify the luminance – modifier is one out of four values. • Problem: Small values [-8, -2, 2, 8]  • smooth transitions OK

  19. How to specify luminance • Two bits per pixel are used to specify the luminance – modifier is one out of four values. • Problem: Small values [-8, -2, 2, 8]  • smooth transitions OK • sharp edges bad

  20. How to specify luminance • Two bits per pixel are used to specify the luminance – modifier is one out of four values. • Problem: Small values [-8, -2, 2, 8]  • smooth transitions OK • sharp edges bad • Big values [-255, -127, 127, 255] 

  21. How to specify luminance • Two bits per pixel are used to specify the luminance – modifier is one out of four values. • Problem: Small values [-8, -2, 2, 8]  • smooth transitions OK • sharp edges bad • Big values [-255, -127, 127, 255]  • smooth transitions bad

  22. How to specify luminance • Two bits per pixel are used to specify the luminance – modifier is one out of four values. • Problem: Small values [-8, -2, 2, 8]  • smooth transitions OK • sharp edges bad • Big values [-255, -127, 127, 255]  • smooth transitions bad • sharp edges OK

  23. How to specify luminance • Two bits per pixel are used to specify the luminance – modifier is one out of four values. • Problem: Small values [-8, -2, 2, 8]  • smooth transitions OK • sharp edges bad • Big values [-255, -127, 127, 255]  • smooth transitions bad • sharp edges OK • Solution: Codebook of tables, one/block.

  24. Modifier Codebook • We started with random values and optimized by minimizing the error for a set of images

  25. Modifier Codebook • We started with random values and optimized by minimizing the error for a set of images

  26. Modifier Codebook • We started with random values and optimized by minimizing the error for a set of images • simulated annealing • modified version of the Generalized Lloyd algorithm (Linde Buzo Gray ’80) • Symmetry was added to reduce on-chip codebook size

  27. Modifier Codebook • We started with random values and optimized by minimizing the error for a set of images • simulated annealing • modified version of the Generalized Lloyd algorithm (Linde Buzo Gray ’80) • Symmetry was added to reduce on-chip codebook size

  28. Modifier Codebook • We started with random values and optimized by minimizing the error for a set of images • simulated annealing • modified version of the Generalized Lloyd algorithm (Linde Buzo Gray ’80) • Symmetry was added to reduce on-chip codebook size

  29. Modifier Codebook • We started with random values and optimized by minimizing the error for a set of images • simulated annealing • modified version of the Generalized Lloyd algorithm (Linde Buzo Gray ’80) • Symmetry was added to reduce on-chip codebook size

  30. Decompressing a Block • First 12 bits is RGB444 which gives the general color for the entire block. It is extended to 24 bits. 153 153 85 extend to 24 bits 12 bit RGB444

  31. Decompressing a Block • Next 4 bits select a table from the code book 5 12 bit RGB444

  32. Decompressing a Block • Next 4 bits select a table from the code book 5 12 bit RGB444

  33. Decompressing a Block • The next 2 bits modify the first pixel according to the table… 5 10 12 bit RGB444

  34. general color 153 153 85 + -19 -19 -19 = 134 134 66 Decompressing a Block • The next 2 bits modify the first pixel according to the table… 5 10 12 bit RGB444

  35. Decompressing a Block • The next 2 bits modify the first pixel according to the table… and so on… 5 10 11 12 bit RGB444

  36. Decompressing a Block • The next 2 bits modify the first pixel according to the table… and so on… 5 10 11 01 12 bit RGB444

  37. Decompressing a Block • The next 2 bits modify the first pixel according to the table… and so on… 5 10 11 01 01 12 bit RGB444

  38. Decompressing a Block • The next 2 bits modify the first pixel according to the table… and so on… 5 10 11 01 01 10 12 bit RGB444

  39. Decompressing a Block • The next 2 bits modify the first pixel according to the table… and so on… 5 10 11 01 01 10 01 12 bit RGB444

  40. Decompressing a Block • The next 2 bits modify the first pixel according to the table… and so on… 5 10 11 01 01 10 01 11 12 bit RGB444

  41. Decompressing a Block • The next 2 bits modify the first pixel according to the table… and so on… 5 10 11 01 01 10 01 11 11 12 bit RGB444

  42. Simple Decompression • Only three adders and some mux:es. • Only twelve adders for four parallel units needed for bilinear interpolation • S3TC: ~ 60 adders • PVRTC: ~ 60 adders

  43. Simple Decompression • The correct texel is selected

  44. Simple Decompression • The correct texel is selected • The modifier value is looked up

  45. Simple Decompression • The correct texel is selected • The modifier value is looked up • The general color is extended to 24 bits

  46. Simple Decompression • The correct texel is selected • The modifier value is looked up • The general color is extended to 24 bits • The modifier value is added

  47. Simple Decompression • The correct texel is selected • The modifier value is looked up • The general color is extended to 24 bits • The modifier value is added • The result is clamped

  48. Compression • To compress a block, we need to find • “general color” general color

  49. Compression • To compress a block, we need to find • “general color” • table general color table

  50. Compression • To compress a block, we need to find • “general color” • table • pixel indices. pixel indices general color table

More Related