Войти
ПрограммированиеФорумГрафика

dds vs png

#0
19:54, 8 сен. 2020

Доброго времени суток. Использую текстуры в двух форматах. Dds (dxt1) и png. Получается что база с изображениями dds весит в 11 раз больше чем png. При этом dds текстуры отлично сжимаются архиватором zip. Конвертацию png в dds осуществляю программой LSDxt v4.

Действительно ли dds формат настолько уступает png по степени сжатия, или я в чем то накосячил ?


#1
19:58, 8 сен. 2020

Dds это не про сжатие на диске. Это про сжатие в видеопамяти. Сжатые текстуры гораздо быстрее грузятся. Им не нужна дорогостоящая распаковка, как в случае с пнг. Но места, даже в сжатом виде, они займут чуть дольше.

#2
(Правка: 20:19) 20:11, 8 сен. 2020

.PNG упаковывается построчно, в идеале он пригоден для хранения именно на винчестере- упакован, весит примерно наравне с жпег, а содержит больше информации чем сырок или бмп, включая наличие альфы, не более того. Покадровую анмацию не запихать при этом. Для использования в играх не самое хорошее решение , если важна скорость, уже об этом упомянули

#3
(Правка: 20:25) 20:22, 8 сен. 2020

База sqlite в ней растровые изображения поверхности Земли для разных масштабов:

PNG занимает 4Гб
DDS(dxt1) занимает 45 Гб.

На мой взгляд слишком большая разница... Или что-то не так со сжатыми изображениями в DDS? Кто сталкивался?

#4
20:25, 8 сен. 2020

urii
> Или что-то не так со сжатием в DDS? Кто сталкивался?
загрузи  png /dds на GPU и сравни как будет там - какой формат dds кстати ?

#5
(Правка: 20:35) 20:27, 8 сен. 2020

Формат первый (dxt1) без альфа канала.

С точки зрения быстродействия png ощутимо медленнее. Удивляет просто соотношение размера.

#6
20:40, 8 сен. 2020

PNG считай уже "зазипован" (данные пожаты deflate помимо прочих ухищрений). DDS имеет фиксированный коэффициент сжатия (картинка представлена компактными 4х4 блоками), чтобы GPU могла быстрым алгоритмом с простой логикой его читать, без всякой сложной декомпрессии картинки целиком.

#7
21:28, 8 сен. 2020

urii
> Удивляет просто соотношение размера.

да, это подозрительно

#8
(Правка: 22:44) 21:48, 8 сен. 2020

innuendo
Ну это удивляло, пока он не описал свой кейс. Там 70% почти одноцветных тайлов земной поверхности (воды) , которые отлично пожмутся png.

#9
(Правка: 22:40) 22:40, 8 сен. 2020

картинка 512на512 png может весить 1 мб. а dds 512 кб

#10
23:21, 8 сен. 2020

для миллиона файлов в базе соотношение такое как я описал. Для единичных может быть меньше. вот пример: сравнение

#11
0:05, 9 сен. 2020

Преобразовать из PNG в DDS может быть долгим, особенно если таргетишься в DXT компресионные форматы, которые при быстрее читаются на ГПУ и занимают там меньше места, чем распаковыный PNG(считай BMP)
Также DDS уже может хранить мипмапы, массивы текстур, кубомапы, 3д текстуры.

Используй DDS с дополнительной архивацией LZMA для быстрой распаковки.

#12
0:44, 9 сен. 2020

Che@ter
и тут в комнату вошел .ktx

#13
1:29, 9 сен. 2020

urii
> Конвертацию png в dds осуществляю программой LSDxt v4.

Не проще ли раскодировать png прямо в текстуру?

#14
4:48, 9 сен. 2020

А что сразу dds, есть же еще ktx.
ktx live matter!

ПрограммированиеФорумГрафика