Сжатые ресурсы текстуры
Карты текстур — это оцифрованные изображения, рисуемые на трехмерных фигурах для добавления визуальной детали. Они сопоставляются с этими фигурами во время растеризации, и процесс может использовать большие объемы системной шины и памяти. Чтобы уменьшить объем памяти, потребляемой текстурами, Direct3D поддерживает сжатие поверхностей текстур. Некоторые устройства Direct3D поддерживают сжатые поверхности текстур в собственном коде. На таких устройствах при создании сжатой поверхности и загрузке данных в нее поверхность можно использовать в Direct3D, как и любую другую поверхность текстуры. Direct3D обрабатывает декомпрессию при сопоставлении текстуры с трехмерными объектами.
Эффективность хранения и сжатие текстур
Все форматы сжатия текстур являются двумя. Хотя это не означает, что текстура обязательно квадратная, это означает, что оба x и y являются полномочиями двух. Например, если текстура изначально составляет 512 к 128 байтам, следующий mipmapping будет 256 на 64 и т. д., при этом каждый уровень уменьшается на два уровня. На более низких уровнях, где текстура фильтруется до 16 к 2 и 8 к 1, будут тратиться биты, так как блок сжатия всегда составляет 4 к 4 блока текселей. Неиспользуемые части блока заполняются.
Хотя на самых низких уровнях есть пустая бита, общий прирост по-прежнему значительный. Худшим случаем является, в теории, 2K на 1 текстуру (2 энергопотребление). Здесь только одна строка пикселей закодирована на блок, а остальная часть блока не используется.
Сочетание форматов в одной текстуре
Важно отметить, что любая одна текстура должна указывать, что данные хранятся как 64 или 128 бит на группу из 16 текселей. Если для текстуры используются 64-разрядные блоки , то есть формат блочного сжатия BC1, можно смешивать непрозрачные и 1-разрядные альфа-форматы на основе каждого блока в одной текстуре. Другими словами, сравнение целого числа без знака color_0 и color_1 выполняется уникально для каждого блока 16 текселей.
После использования 128-разрядных блоков альфа-канал должен быть указан в явном (формате BC2) или интерполированном режиме (формат BC3) для всей текстуры. Как и в случае с цветом, при выборе интерполированного режима (формат BC3) можно использовать восемь интерполированных альфа-файлов или шесть интерполированных альфа-режимов на основе блоков. Опять же сравнение величины alpha_0 и alpha_1 выполняется уникально на основе блока.
Direct3D предоставляет службы для сжатия поверхностей, используемых для создания трехмерных моделей. В этом разделе содержатся сведения о создании и управлении данными в сжатой поверхности текстуры.
В этом разделе
Раздел | Описание |
---|---|
Формат текстур BC1 предназначен для текстур, которые непрозрачны или имеют один прозрачный цвет. |
|
Существует два способа кодирования карт текстур, которые демонстрируют более сложную прозрачность. В каждом случае блок, описывающий прозрачность, предшествует 64-разрядному блоку, уже описанному. Прозрачность представляется как 4x4-битовое изображение с 4 битами на пиксель (явная кодировка), или с меньшим количеством битов и линейной интерполяции, аналогичной тому, что используется для кодировки цвета. |
|
Сжатие блоков — это метод сжатия текстур с потерей для уменьшения размера текстуры и объема памяти, что повышает производительность. Блочная текстура может быть меньше текстуры с 32 битами на цвет. |
|
В этом разделе содержатся сведения о внутренней организации сжатых форматов текстур. Эти сведения не требуются для использования сжатых текстур, так как вы можете использовать функции Direct3D для преобразования в сжатые форматы и из них. Однако эта информация полезна, если вы хотите работать непосредственно с сжатыми данными поверхности. |
Связанные темы