Доброго времени суток. Использую текстуры в двух форматах. Dds (dxt1) и png. Получается что база с изображениями dds весит в 11 раз больше чем png. При этом dds текстуры отлично сжимаются архиватором zip. Конвертацию png в dds осуществляю программой LSDxt v4.
Действительно ли dds формат настолько уступает png по степени сжатия, или я в чем то накосячил ?
Dds это не про сжатие на диске. Это про сжатие в видеопамяти. Сжатые текстуры гораздо быстрее грузятся. Им не нужна дорогостоящая распаковка, как в случае с пнг. Но места, даже в сжатом виде, они займут чуть дольше.
.PNG упаковывается построчно, в идеале он пригоден для хранения именно на винчестере- упакован, весит примерно наравне с жпег, а содержит больше информации чем сырок или бмп, включая наличие альфы, не более того. Покадровую анмацию не запихать при этом. Для использования в играх не самое хорошее решение , если важна скорость, уже об этом упомянули
База sqlite в ней растровые изображения поверхности Земли для разных масштабов:
PNG занимает 4Гб
DDS(dxt1) занимает 45 Гб.
На мой взгляд слишком большая разница... Или что-то не так со сжатыми изображениями в DDS? Кто сталкивался?
urii
> Или что-то не так со сжатием в DDS? Кто сталкивался?
загрузи png /dds на GPU и сравни как будет там - какой формат dds кстати ?
Формат первый (dxt1) без альфа канала.
С точки зрения быстродействия png ощутимо медленнее. Удивляет просто соотношение размера.
PNG считай уже "зазипован" (данные пожаты deflate помимо прочих ухищрений). DDS имеет фиксированный коэффициент сжатия (картинка представлена компактными 4х4 блоками), чтобы GPU могла быстрым алгоритмом с простой логикой его читать, без всякой сложной декомпрессии картинки целиком.
urii
> Удивляет просто соотношение размера.
да, это подозрительно
innuendo
Ну это удивляло, пока он не описал свой кейс. Там 70% почти одноцветных тайлов земной поверхности (воды) , которые отлично пожмутся png.
картинка 512на512 png может весить 1 мб. а dds 512 кб
для миллиона файлов в базе соотношение такое как я описал. Для единичных может быть меньше. вот пример: сравнение
Преобразовать из PNG в DDS может быть долгим, особенно если таргетишься в DXT компресионные форматы, которые при быстрее читаются на ГПУ и занимают там меньше места, чем распаковыный PNG(считай BMP)
Также DDS уже может хранить мипмапы, массивы текстур, кубомапы, 3д текстуры.
Используй DDS с дополнительной архивацией LZMA для быстрой распаковки.
Che@ter
и тут в комнату вошел .ktx
urii
> Конвертацию png в dds осуществляю программой LSDxt v4.
Не проще ли раскодировать png прямо в текстуру?
А что сразу dds, есть же еще ktx.
ktx live matter!
Тема в архиве.