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