Не вижу смысла что-то изобретать. Брать тоже ддс , в конечном продукте упаковвывать текстуры в 1 файл при необходимости пробежав каким нибудь быстрым потоковым сжатием и/или потоковой шифрацией.
Потом распаковвываеш и читаешь из памяти
PROFIT
gammaker
> А то товарищ andreyu говорит что он не нужен.
Ну если вам он нужен, то используйте его. Только не называете контейнер форматом текстуры.
Нативный формат dxt1 etc1 pvrtc вытаскиваешь данные и пакуешь lz4hc бешеная скорость и хороший битрейт. Это стоит того. Альфа канал отдельной текстурой и тоже lz4hz. Если интересно могу дать свои декодеры и енкодеры
IROV..
> и пакуешь lz4hc бешеная скорость и хороший битрейт
Очень даже неплохо, в 7 раз шустрее zlib при той же степени сжатия.
А почему dxt1 etc1 pvrtc с помощью hc а не hz? Объединение с Хаффманом даёт ещё неплохой прирост степени сжатия.
Bishop
Тут одеяло о скорости и памяти. И мне кажется что тут скорость идет в передо в абсолюте
Bishop
Хаффман долго декодирует. Это же по сути zlib или png
IROV..
> Тут одеяло о скорости и памяти. И мне кажется что тут скорость идет в передо в
> абсолюте
Ну памяти на хаффман нужно дополнительно ~4КБ (это в смысле разжатие LZ+Huff), про производительность говорить уже уместнее.
> Хаффман долго декодирует. Это же по сути zlib или png
Ну а на какие скорости вы рассчитываете? Выше я уже писал что LZ+Huff это 250-400 МБ/с. Конечно я не спорю что LZ это 900-1000, но успевает ли диск забить этот поток? Я конечно понимаю есть хорошие SSD 1-2ГБ/с, но с их ценой за МБ уже возникает вопрос о том "а не приоритетнее ли степень сжатия в таком разе?".
> zlib
Это вообще паршивый пример, медленный он. Дело в реализации, а не алгоритме.
IROV..
СПС за инфу о паковщике) добавил в прожект.
Bishop
помимо SSD и HD есть префетчер которые умеет по сути только читать с HD|SSD|HTTP(?) ведь на самом деле скорость тут непредсказуема, ХД заснул, разбудить и тд. Так что это нужно обязательно в любом проекте хотя бы в виде "ЛОАДИНГ СКРИНА". А так префетчер подал все в жатом виде в кеш(память) и по запросу мы декодим из мемори. Отсюда и выбор в сторону ~1000. Надеюсь мемори даст такую шину ;) И кстати данные ведь это не только текстуры, но и скрипты(отлично жмутся) анимационные ключи, и тд.
IROV..
> помимо SSD и HD есть префетчер которые умеет по сути только читать с
> HD|SSD|HTTP(?) ведь на самом деле скорость тут непредсказуема, ХД заснул,
> разбудить и тд. Так что это нужно обязательно в любом проекте хотя бы в виде
> "ЛОАДИНГ СКРИНА". А так префетчер подал все в жатом виде в кеш(память) и по
> запросу мы декодим из мемори. Отсюда и выбор в сторону ~1000.
Ага, то есть у тебя не стриминг а префетчинг? Ну тогда вопрос снимается конечно.
> Надеюсь мемори даст такую шину ;)
Ну скорость копирования как-бы 16ГБ/с :)
> И кстати данные ведь это не только текстуры, но и скрипты(отлично жмутся) анимационные ключи, и тд.
Это само собой. Кстати если для текстур не нужна скорость выше чем 128МБ/с то вполне реально жать вейвлетом (там ещё и мипы бесплатные практически, а уж если допустимы небольшие потери и как следствие можно юзать Добеши 9/3 то вообще сказка).
>пакуешь lz4hc
Ностальжи
Хотя идея была немного шире,
>До сих впадло реализовать - нет такого битрейта
[24.07.2014 13:26:23] WindreamIce: у меня есть ещё 1 идея про упаковку картинок - но она оч геморная так как надо корячить сорсы lz4 + там асм, без Асма профита не будет, а Асм не мультиплатформный)
[24.07.2014 13:27:11] Юра Левченко: ты что там куришь?)
[24.07.2014 13:28:44] WindreamIce: лан, я те раскажу свой бред - если ты такое напишеш я даже буду рад)
короче можно разделить пиксели на разные файлы типо RGBA 4 файла в теории они будут лучше паковатся, но чтоб их быстро потом опять собрать в INT значение нужен асм, хотя с++ тоже подойдет но не факт в профите
собирать после распаковки не варинат - 100% фейл
нужно иммено во время распаковки
4 файлов одновремено)
**
(не для DDS, а для RGBA)
На вскидку не зная алгоритма упаковки lz4
Идея была разбить текстуры по каналам так плотность упаковки должна быть больше чем рав битмап дата.
+слать на Гпу lz4 дату и там пиксель шейдером декодить в текстуру.
>ты что там куришь?)
уже и не помню ^^
WindreamIce
Смотри декоредяцию каналов в lossless режиме jpeg2000 :) Простое разделение даёт мало эффекта.
Bishop
>Простое разделение даёт мало эффекта.
По факту да - как то уже пробовал.
Но вот с точки разделения на уникальные пиксели:
Разделение RGB каналов дают больше совпадений, чем цельные int.
Хоть и профит на первый взгляд сомнительный, но все же что-то в этом есть =)
а вот декодинг Гпу lz4 намного лучше)
WindreamIce
Я тогда так и не понял что ты курил в коморке, и почему не поделился )))
Bishop
Стриминг очень опасная чтука для геймплея, если это видео или звук в __отдельном потоке__ то и ладно,
есть куча ситуация, когда отклик от HDD превосходит все мысленные рамки :) По этому все важные данные обычно загружают до их применения.
Префетчер это только попытка размазать "Лоадинг-скрин" по игре.
Но если мы попадаем в сцену и префетчер облажался, нужно вывешивать "Лоадинг-скрин"
Игрок простит минутное ожидание, но не простит Лаг-деад ("Поссоны поссоны у меня лагало!").
Тема в архиве.