Чат Новости Форум Каталог файлов Каталог статей Вики P3DM.ru Активность пользователей Платные модели
Последние обновленные темы
Самые популярные темы
Самые активные пользователи
Новые участники
Ghosteron (2783)
XemorDio (1681)
TonaTor (1068)
UZSTALKER (482)
wwwpsp620 (26.08.2019)
baffi052005 (26.08.2019)
SOKOL (25.08.2019)
arma25ship (25.08.2019)
Devolano (25.08.2019)
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » Общее » Различные программы » DDS Viewer (Просмоторщик текстур)
DDS Viewer
23.01.2019 в 12:36
#1
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1068
Репутация: 653
Тема посвящена разработке просмоторщика плохо-открываемых 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
Сообщений: 1068
Репутация: 653
Готова первая альфо-версия.

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

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

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



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



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

26.01.2019 в 13:28
#5
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1068
Репутация: 653
Короче говоря, 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
Сообщений: 1068
Репутация: 653
Итак! Презентую работу более чем за год.

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
Сообщений: 1068
Репутация: 653
Ввёл поддержку 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
Сообщений: 1068
Репутация: 653
Пофиксил тупую ошибку 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
Сообщений: 1068
Репутация: 653
Ввёл поддержку BMP, JPG, JPEG изображений.

https://imgur.com/KIAbl3l


https://imgur.com/Ij6xfTR

17.02.2019 в 18:18
#10
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1068
Репутация: 653
И тут у меня наметились проблемы с 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
Сообщений: 1068
Репутация: 653
Введу целый комплекс костылей для мой смотрелки.
PNG всё же будут открываться.
Победа над багами будет за нами!!! communist

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

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

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


)))

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

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

https://imgur.com/6D2AAYv

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

https://imgur.com/VkdjkAF


Пячалъ..

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

https://imgur.com/CLGqZnW

20.02.2019 в 15:02
#17
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1068
Репутация: 653
Обнаружил, что распаковка из 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
Сообщений: 1068
Репутация: 653
Сделал простенькое авто-определение файловых сигнатур.
Теперь какие попало файлы не откроются...
Резко возраста стабильность всей программы.

https://imgur.com/638d2Ch


https://imgur.com/97qMDZf

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

https://imgur.com/ItRfyyu

22.02.2019 в 12:27
#20
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1068
Репутация: 653
Иногда бывает так, что я могу чего-то не предусмотреть (т.е. часто), в частности ошибки в 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
Сообщений: 1068
Репутация: 653
Это адище какое-то...

Из более чем сотни форматов 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
Сообщений: 1068
Репутация: 653
В прочем этот косяк допустил не я один.

Вот что выдаёт 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
Сообщений: 1068
Репутация: 653
Не буду расписывать, что я узнал о DDS`ах за последние пару дней. Просто выпуск бета версии проги откладывается на неопределённое время...

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

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

comptype

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

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

https://imgur.com/phXhANF

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


https://imgur.com/IkV3q1u


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

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

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

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

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

https://imgur.com/sk8Cm9m

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

На донных ПК будут проблемы с 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
Сообщений: 1068
Репутация: 653
Исправил баг с отображением формата DXGI_FORMAT_B4G4R4A4_UNORM номер 115

https://imgur.com/grwFIcy

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

https://imgur.com/0h8hmoS

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

https://imgur.com/zC02CV3

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

https://imgur.com/F4TA0p6

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

https://imgur.com/gCaIc8B

https://imgur.com/XCdi42l

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

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

Есть неизвестный 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
Сообщений: 1068
Репутация: 653
Да спасёт меня святой костыль и велосипед. ;..{

https://imgur.com/6JFldRD


https://imgur.com/NI3OVOq

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

https://imgur.com/P0IdmXr

07.04.2019 в 11:02
#40
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 1068
Репутация: 653
Вот кстати секрет великолепного сжатия уже сжатых 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
Сообщений: 1068
Репутация: 653
Мои костыли - всем костылям костыли!!!

https://imgur.com/L4PbwIn


https://imgur.com/Qgh1J87


https://imgur.com/33ENu4O

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

https://imgur.com/PqJ3oaz


https://imgur.com/rZg0Ef2

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

https://imgur.com/PACaGIS


https://imgur.com/wz3krxR

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

https://imgur.com/HhH9vX3

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

https://imgur.com/2gwiICx


https://imgur.com/Oaake9b

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

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
Сообщений: 1068
Репутация: 653
Введена поддержка RGBG, т.е. родного брата GRGB. comptype

https://imgur.com/pKKJhRu

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

https://imgur.com/2Zt0uOy


https://imgur.com/1ZEScXX

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

https://imgur.com/GyyqwzM


https://imgur.com/hsaVhUL


https://imgur.com/zpwdpEq

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

https://imgur.com/bBvmk8O

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