PVRTC (сжатие текстур PowerVR) и PVRTC2 - это семейство форматов сжатия текстур с потерями и фиксированной скоростью , используемых в технологиях PowerVR MBX (только PVRTC), SGX и Rogue. Алгоритм PVRTC задокументирован в статье Саймона Фенни « Сжатие текстур с использованием низкочастотной модуляции сигнала », представленной на Graphics Hardware 2003 .
Они отличаются от форматов текстур на основе блоков, таких как S3TC и Ericsson Texture Compression (ETC), тем, что сжатое изображение представлено двумя изображениями с более низким разрешением, которые билинейно масштабируются и затем смешиваются в соответствии с низкой точностью, попиксельными весами. Они также отличаются тем, что поддерживают данные ARGB как в режимах с 4 битами, так и с 2 битами на пиксель.
PVRTC - это сжатый формат текстур, используемый в Nokia N9 и всех поколениях iPhone , iPod Touch и iPad . Он также поддерживается [1] в некоторых устройствах Android, использующих графические процессоры PowerVR.
Структура данных
И в PVRTC, и в PVRTC2 данные текстуры хранятся в блоках (но обратите внимание, что для декодирования любого набора текселей 2x2 требуется доступ к 4 из этих блоков). Блок данных всегда занимает 64 бита (8 байтов) пространства хранения / памяти и таким образом, в 4-битном режиме (4bpp) будет один блок на каждые 4 × 4 пикселя. В 2-битном режиме (2-bpp) будет один блок на каждые 8 × 4 пикселя.
Например, текстура PVRTC 1024 × 1024 4 бит на пиксель будет иметь 65 536 блоков и занимать 524 288 байт пространства хранения / памяти. В некоторых аппаратных реализациях блоки расположены в одном из вариантов порядка Мортона .
При PVRTC в каждом блоке хранятся шесть различных переменных [2] : данные модуляции (32 бита), сквозной альфа-флаг (1 бит), цвет A (15 бит), флаг непрозрачности цвета A (1 бит), цвет B (14 бит) и флаг непрозрачности цвета B (1 бит).
В PVRTC2 в одном блоке хранятся шесть различных переменных [3] : данные модуляции (32 бита), флаг модуляции (1 бит), цвет B (14 бит), флаг жесткого перехода (1 бит), цвет A (15 бит). и флаг непрозрачности (1 бит).
Хотя в PVRTC флаги непрозрачности могут быть установлены независимо для цветов A и B, в PVRTC2 оба цвета A и B должны быть в одном и том же формате (т.е. либо оба RGB, либо оба RGBA).
Смотрите также
Рекомендации
- Страницы 3D-графики Саймона Фенни
- Новое измерение сжатия текстур с PVRTC2
- PVRTC: самый эффективный стандарт сжатия текстур для мира мобильной графики