Стиснення текстури не стискає пікселів. Він стискає блоки пікселів. Коли на нього посилається окремий піксель, GPU обчислює, який блок представляє піксель. Потім він обробляє весь блок, щоб отримати колір цього пікселя.
Приклад
Припускаємо, що розмір блоку становить 4х4 пікселя на текстурі RGB. Без стиснення кожен блок споживає 4x4x3 = 48
байти в пам'яті текстури.
Тепер алгоритм стиснення обчислить середнє значення для кожного каналу (RGB) і збереже його з блоком (3 байти). Тепер давайте кожному пікселю давати по 2 біти для регулювання середнього рівня, щоб піксель був ближче до його початкового кольору. Це ще один 4x4x2x3/8 = 12
байт.
Загальна кількість байтів, що використовуються цим недавно винайденим компресором, становить 15 байт на блок, коефіцієнт стиснення 31,25%.
Міфічний компресор використовує 7,5 bpp. Це не так добре, як може досягти pvrtc з 2 bpp, але тепер у вас є приблизне уявлення про те, як можна досягти 2 bpp.
оновлення:
Я щойно переглянув сторінку wikipedia для pvrtc . Схоже, pvrtc не використовує традиційне блокування стиснення. Ось документ, який описує спосіб компресії на основі блоку та те, як відрізняється pvrtc. Зокрема, зверніть увагу: Блокові фільтри можуть створювати пристойні зображення, використовуючи 4bpp (без альфа), тоді як nvrtc може це робити з 2bpp.