Чат Новости Форум Каталог файлов Каталог статей Вики P3DM.ru Активность пользователей Платные модели
Последние обновленные темы
Самые популярные темы
Самые активные пользователи
Новые участники
Ghosteron [2794]
XemorDio [1691]
TonaTor [1127]
UZSTALKER [495]
rakovedos [15.11.2019]
lostgamer5585 [15.11.2019]
holsa29 [15.11.2019]
Kazusabakan [14.11.2019]
Vanilka [13.11.2019]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум » Общее » Различные программы » DDS Viewer (Просмоторщик текстур)
DDS Viewer
23.01.2019 в 12:36
#1
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Тема посвящена разработке просмоторщика плохо-открываемых DDS-текстур.



Итак! Презентую работу более чем за год.

DDS Viewer (Alpha 0.1).



+ Поддерживает около сотни подформатов dds файлов.
+ Есть слабая, но всё же оптимизация под слабые ПК.
+ Может отображать разные слои изображения (Blended, Diffuse, Alpha).

- Не может открывать TGA, BMP, JPG, JPEG, PNG, GIF, TIFF.
- Не может сохранять или конвертировать файлы.
- Нельзя масштабировать изображение колесом мыши.
- Собственное масштабирование немного кривое.
- При масштабировании может мерцать изображение.
- При длинных путях файла не видно части информации о файле.
- Ну... В целом сырая.

Ссылка на скачивание.

(Очень сырая и устаревшая версия)

Чисто на ваш страх и риск

https://yadi.sk/d/HhF0EIgXxBvA6A

23.01.2019 в 13:04
#2
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Готова первая альфо-версия.

На данный момент поддерживает только DDS.

23.01.2019 в 16:57
#3
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Забагались скайкубы. Пытаюсь починить...

25.01.2019 в 13:47
#4
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
С горем пополам починил скайкубы.
Но вылезла другая ошибка - не корректно работает realloc выделенной памяти на втором выходном буфере(((
Из-за этого регулярно появляются "белые листы" после SetBitmapBits`а.
Пипа этого:



в место этого:



Буду чинить дальше...

26.01.2019 в 13:28
#5
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Короче говоря, realloc - это треш.
переписал всё по старому.

Код

if(Ready_Images)
{
    for(int i = 0; i < 3; i++)
    {
        if(Ready_Images[i])
            {free(Ready_Images[i]); Ready_Images[i] = NULL;}
    }
    free(Ready_Images); Ready_Images = NULL;
}
Ready_Images = (DWORD**) malloc(3 * sizeof(DWORD*));
memset(Ready_Images, 0, 3 * sizeof(DWORD*));

for(int i = 0; i < 3; i++)
{
    Ready_Images[i] = NULL;
    Ready_Images[i] = (DWORD*) malloc(Size_RI);
    memset(Ready_Images[i], 0, Size_RI);
}

26.01.2019 в 14:41
#6
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Итак! Презентую работу более чем за год.

DDS Viewer (Alpha 0.1).



+ Поддерживает около сотни подформатов dds файлов.
+ Есть слабая, но всё же оптимизация под слабые ПК.
+ Может отображать разные слои изображения (Blended, Diffuse, Alpha).

- Не может открывать TGA, BMP, JPG, JPEG, PNG, GIF, TIFF.
- Не может сохранять или конвертировать файлы.
- Нельзя масштабировать изображение колесом мыши.
- Собственное масштабирование немного кривое.
- При масштабировании может мерцать изображение.
- При длинных путях файла не видно части информации о файле.
- Ну... В целом сырая.

Ссылка на скачивание. (удалена из-за багов проги)

16.02.2019 в 10:53
#7
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Ввёл поддержку TGA файлов - Type: 2,3,10,11; GRAY_SCALE, RGB, RGBA; Есть поддержка RLE-сжатия.
Подкрутил многопоток;

Скрины:

https://imgur.com/CRTb6uX


https://imgur.com/Mt0xfFT


https://imgur.com/q0tGNpq


https://imgur.com/pVgYx2Y


https://imgur.com/u10FxSy


https://imgur.com/nJkQG1m


https://imgur.com/BRO7dJc


Но костыли всё же остались. В частности - в конвертере первичного буфера.
https://imgur.com/EvuwUAD

16.02.2019 в 12:55
#8
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Пофиксил тупую ошибку File Stream I/O. Она тянется еще из библиотек OpenGL и заключается в том, что потоковые системы не понимают языки кроме английского.
Вот и выходил File Failure...

Теперь TGA module использует WINAPI на Unicode )))

https://imgur.com/oYOPreG

16.02.2019 в 13:06
#9
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Ввёл поддержку BMP, JPG, JPEG изображений.

https://imgur.com/KIAbl3l


https://imgur.com/Ij6xfTR

17.02.2019 в 18:18
#10
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
И тут у меня наметились проблемы с PNG файлами.
Та моя библиотека, что отвечает за PNG файлы - уже давно устарела.
Версия этой библиотеки 1.5.64 - она древняя. На данный момент уже вышла 1.6.36.
Поэтому не все PNG файлы будут открываться.

Не возможно просто так взять и интегрировать новую версию этой библиотеки.
Она интегрирована в среду разработки.

Буду думать, что делать...

(((((((((((((((((((( fuck_that fuck_that fuck_that

17.02.2019 в 19:54
#11
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Введу целый комплекс костылей для мой смотрелки.
PNG всё же будут открываться.
Победа над багами будет за нами!!! communist

18.02.2019 в 09:31
#12
Ghosteron
Основатель
Статус: Offline
Регистрация: 25.07.2015
Сообщений: 2794
Репутация: 5391
Цитата TonaTor ()
Введу целый комплекс костылей для мой смотрелки.
PNG всё же будут открываться.
Победа над багами будет за нами!!!

Ну ты жесткий))

18.02.2019 в 18:46
#13
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Цитата Ghosteron ()
Ну ты жесткий))


)))

Немного поэкспериментирую с авто-определением сигнатур файликоф.
Этим ограничусь, прокатит)))

18.02.2019 в 18:46
#14
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Решил глянуть исходные коды движка CryEngine.
Может узнаю чего нового...

https://imgur.com/6D2AAYv

18.02.2019 в 19:43
#15
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
В прочем, как и следовало ожидать - декомпрессор для DDS в CryEngine закатан в их собственную DLL`ку, и кодов от неё нет...

https://imgur.com/VkdjkAF


Пячалъ..

20.02.2019 в 13:43
#16
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Избавился от "дребезжания" изображения при изменении размера окна.
Просто переписал блок коррекции позиции вывода. (но если окно сильно сжать, то на 1 пиксель "дребезжать" всё равно будет))) )

https://imgur.com/CLGqZnW

20.02.2019 в 15:02
#17
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Обнаружил, что распаковка из RLE в TGA работает уж сильно медленно - 2 секунды для 1024x1024 изображения.
Не знаю, стоит ли вообще пытаться оптимизировать этот блок.
Там более, что автоматический безмьютексный многопоток де факто невозможен, т.к. размер "чанков" слишком варьируется.

https://imgur.com/p8INymI


Проблема даже не в обработке "чанков" по отдельности. Наоборот! Это легко.

Вся проблема в диспетчеризации очереди записи во внутренний TGA`шенский буфер.
Если первый "чанк" больше, а второй меньше - то второму придётся ждать, когда запишется первый, а это - простой в работе.

Можно всё сделать и через целый кластер временных буферов, и уже между ними диспетчеризаваться главным потоком через центральный мьютекс. Но стоит ли оно того?
- вопрос скорее риторический...

Вот кстати "чанковая" статистика для тестового RLE изображения:

https://imgur.com/t7vVZaP


В общем оптимизация под многопоток попросту нецелесообразна fuck_that

21.02.2019 в 07:50
#18
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Сделал простенькое авто-определение файловых сигнатур.
Теперь какие попало файлы не откроются...
Резко возраста стабильность всей программы.

https://imgur.com/638d2Ch


https://imgur.com/97qMDZf

21.02.2019 в 10:18
#19
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Не понимаю...
Кто эти люди ? Кто вообще сюда заходит ? Откуда за 200 просмотров ?

https://imgur.com/ItRfyyu

22.02.2019 в 12:27
#20
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Иногда бывает так, что я могу чего-то не предусмотреть (т.е. часто), в частности ошибки в DDS модуле.
Дело в том, что "ядром" ддс-модуля является давно устаревшая библиотека от nVidia. Новых её версий не выпускают, а исходникии от старых не выкладывают.

https://imgur.com/GeDhT1s


Поэтому ошибки в работе ддс-модуля более чем возможны.

И на этот случай я создал довольно сложную систему "иммунитета".

https://imgur.com/Z8Cjeq3


Её суть сводится к тому, что если в "ядре" ддс-модуля произойдет критическая ошибка - то система "иммунитета" не допустит повторного открытия похожих по Hedaer`ной сигнатуре ддс файлов. А сбойная сигнатура запишется в файл "dds_immunity.dat", чтобы и после перезапуска программы она не сбоила )))
К слову - таких сигнатур можно записать хоть несколько тысяч.

Вот пример критического сбоя:

https://imgur.com/GmKvaJA


А вот пример срабатывания системы "иммунитета":

https://imgur.com/F3URlq3


Это очередной костыль. Его использование весьма неоднозначно, т.к. он в теории может заблокировать отображение нормальных файлов.

Буду исследовать эффективность его работы...

23.02.2019 в 22:30
#21
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Это адище какое-то...

Из более чем сотни форматов DDS файлов - тупая nVidia`вская библиотека не умеет работать примерно с половиной...
Я в а*уе... Не знаю, что делать.

https://imgur.com/skiAumS


https://imgur.com/kHsmCiT


Первый-же майкросовтовский BCn тест показал, что не работают все BC 5,6,7 декомпрессоры.
Не работает "DXGI 54 - R16 FLOAT" и ещё многие другие.

В поисках ответов придется копать DirectX3D11 с его вечными Device Failure и глючащими Compute Shader Accelerated`ами...

Дичь 413 413 413 413

23.02.2019 в 23:10
#22
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
В прочем этот косяк допустил не я один.

Вот что выдаёт XnView

https://imgur.com/gZTLprr


https://imgur.com/5Cpjmpb


https://imgur.com/Y20QJ33


Глючит - как от лучших смесей weedwatering weedwatering 03_warning

Paint.NET и вовсе не попытался открыть.

А популярные конвертеры просто послали куда подальше...

И только лишь сам Microsoft DirectXTex-master смог отобразить картинку правильно:

https://imgur.com/mm2EcFB

24.02.2019 в 10:44
#23
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Не буду расписывать, что я узнал о DDS`ах за последние пару дней. Просто выпуск бета версии проги откладывается на неопределённое время...

Буду курить мануалы по DirectX 11.

Тема возобновлена

comptype

24.02.2019 в 11:03
#24
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688

08.03.2019 в 11:18
#25
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Неужто это моё избавление ? (нет)

https://imgur.com/phXhANF

08.03.2019 в 14:46
#26
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688


https://imgur.com/IkV3q1u


Примерно такие чувства я испытал, когда спустя полтора года смог добиться от DirectXTex-master`а первых результатов.

09.03.2019 в 07:05
#27
Ghosteron
Основатель
Статус: Offline
Регистрация: 25.07.2015
Сообщений: 2794
Репутация: 5391
morningcoffee как тебе не лень работать с таким кол-вом непонятной информации))

09.03.2019 в 08:11
#28
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Ghosteron, в основном от безделья lol

09.03.2019 в 19:09
#29
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
В общем, для работы моей смотрелки понадобится DirectX не ниже 11 версии.
Увы. Я не могу обойти эту зависимость ((((

У простых смертных нет доступа к коду этой "Либки".

https://imgur.com/sk8Cm9m

13.03.2019 в 17:30
#30
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Тут такая фигня...

На донных ПК будут проблемы с DirectX функциями, в частности с вертексными шейдерами (VertexShader).

https://imgur.com/Q2QCYIh


https://imgur.com/F8XfPcb


Не могу точно сказать зачем оно здесь.

https://imgur.com/PeNAxgz


Но в том числе через неё рендерется текстура.

Любая попытка её отключения/изоляции приводит либо к зависанию проги, либо к "Синьке"

https://imgur.com/SO7rXty


(Сорян за хлам на столе. Перепаиваю и перепрограммирую клавиатуру - ещё один мой проект)

Так что не обессудьте - но для юзания этой проги понадобится:
1 - видюха поддерживающая DirectX 11,
2 - установленный DirectX 11 на компе.

16.03.2019 в 09:25
#31
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Исправил баг с отображением формата DXGI_FORMAT_B4G4R4A4_UNORM номер 115

https://imgur.com/grwFIcy

16.03.2019 в 13:48
#32
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Коротко о подсчёте аппроксимаций 002-Balrog

https://imgur.com/0h8hmoS

26.03.2019 в 18:37
#33
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Обновил старый блок обработки метаданных. Теперь прога будет знать с чем имеет дело. :)

https://imgur.com/zC02CV3

31.03.2019 в 12:42
#34
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Переделал уйму внутренних структур данных. Теперь есть поддержка DX10`ых блоков. Научился вычленять комментарии из DDS файла.

https://imgur.com/F4TA0p6

31.03.2019 в 13:08
#35
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
А вот собственно и код самого окна)))

https://imgur.com/gCaIc8B

https://imgur.com/XCdi42l

01.04.2019 в 18:09
#36
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688

05.04.2019 в 15:48
#37
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Продолжение мучения с форматами:

Есть неизвестный FourCC для неизвестного DDS файла. Флаг 0x04. Пытаюсь открыть...

https://i.imgur.com/MXyrFdw.png


https://i.imgur.com/VNrJwh3.png

- Ничего.



Заменяю на DXT 5, 4 - работает.

https://i.imgur.com/oev7c1x.png




https://i.imgur.com/SAEhzMg.png


Вот и думаю над вопросом,
- как составить базу данных из официально не существующих значений.

А главное - где их взять...

05.04.2019 в 17:37
#38
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Да спасёт меня святой костыль и велосипед. ;..{

https://imgur.com/6JFldRD


https://imgur.com/NI3OVOq

07.04.2019 в 09:58
#39
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
С переменным успехом бьюсь с BC4`ым декомпрессором.

https://imgur.com/P0IdmXr

07.04.2019 в 11:02
#40
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Вот кстати секрет великолепного сжатия уже сжатых dds текстур типа DXT1 DXT2 DXT3 DXT4 DXT5 RXGB и ATI1.

https://imgur.com/fKW63gY


Алгоритмы сжатия типа BC1,2,4,5,6,7 и ATI1 формируют свои собственные цветовые таблицы, которые в следствии упрощения цветов очень часто повторяются. В результате создаётся раздолье для алгоритмам LZ семейства, в т.ч. и deflate. Даже для унылого RLE - сжатия, - здесь есть чем заняться.

Вот пример упаковки 7-zip`ом по методу LZMA:1536k 847 КБ`айтной BC2 DXT3 текстуры.

https://imgur.com/XYjNnmP


Как видно, в результате упаковки текстура ужалась до 156 КБ.
Не плохой результат для сжатия уже сжатых данных. Хех )))

07.04.2019 в 17:10
#41
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Мои костыли - всем костылям костыли!!!

https://imgur.com/L4PbwIn


https://imgur.com/Qgh1J87


https://imgur.com/33ENu4O

12.04.2019 в 04:02
#42
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Чисто с утречка ввёл поддержку ещё одного формата. morningcoffee
Да спасут меня открытые исходные коды...

https://imgur.com/PqJ3oaz


https://imgur.com/rZg0Ef2

12.04.2019 в 13:48
#43
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
В неравном бою я одержал верх над ещё двумя форматами DDS файла. 001a_undecided

https://imgur.com/PACaGIS


https://imgur.com/wz3krxR

12.04.2019 в 16:15
#44
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Так. Этот тип на сегодня - всё...

https://imgur.com/HhH9vX3

13.04.2019 в 17:44
#45
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Ещё плюс пара монохромных типов

https://imgur.com/2gwiICx


https://imgur.com/Oaake9b

13.04.2019 в 17:48
#46
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Сюда же плюс пара таблично-цветовых типов.

https://imgur.com/gaE0tgI


https://imgur.com/xbSFKVP


https://imgur.com/3fB1xvR


Ну и заставил же меня подгореть тип P4. 413
Зато P8 оказался сверх-простым.)))

13.04.2019 в 18:07
#47
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Введена поддержка RGBG, т.е. родного брата GRGB. comptype

https://imgur.com/pKKJhRu

18.04.2019 в 16:40
#48
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Немного доделал окошко с данными.
Теперь - ИЗВЕСТНЫЕ флаги отображаются в виде текста.

https://imgur.com/2Zt0uOy


https://imgur.com/1ZEScXX

18.04.2019 в 18:50
#49
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
Никогда не думал, что эта текстура моет быть цветной

https://imgur.com/GyyqwzM


https://imgur.com/hsaVhUL


https://imgur.com/zpwdpEq

21.04.2019 в 21:07
#50
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1127
Репутация: 688
За выходные удалось победить RXGB, вынеся его в отдельный DXGI тип... Потом поправлю. Может быть)

https://imgur.com/bBvmk8O

Форум » Общее » Различные программы » DDS Viewer (Просмоторщик текстур)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: