Новости Форум Каталог файлов Каталог статей Вики P3DM.ru Активность пользователей
Последние обновленные темы
Самые популярные темы
Самые активные пользователи
Новые участники
Ghosteron (2734)
XemorDio (1660)
UZSTALKER (464)
TonaTor (463)
newmax1986 (20.03.2019)
FelixShultz (20.03.2019)
takbir-kunak (20.03.2019)
zloe_puziko (19.03.2019)
aliks755 (18.03.2019)
  • Страница 1 из 1
  • 1
Форум » Общее » Различные программы » DDS Viewer (Просмоторщик текстур)
DDS Viewer
23.01.2019 в 12:36
#1
TonaTor
Продвинутый
Статус: Offline
Регистрация: 10.12.2017
Сообщений: 463
Репутация: 512
Тема посвящена разработке просмоторщика плохо открываемых DDS-текстур.



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

DDS Viewer (Alpha 0.1).



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

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

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

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

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

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

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



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



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

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

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

https://imgur.com/KIAbl3l


https://imgur.com/Ij6xfTR

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

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

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

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


)))

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

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

https://imgur.com/6D2AAYv

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

https://imgur.com/VkdjkAF


Пячалъ..

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

https://imgur.com/CLGqZnW

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

https://imgur.com/638d2Ch


https://imgur.com/97qMDZf

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

https://imgur.com/ItRfyyu

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

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

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

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

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

comptype

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

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

https://imgur.com/phXhANF

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


https://imgur.com/IkV3q1u


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

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

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

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

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

https://imgur.com/sk8Cm9m

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

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

https://imgur.com/grwFIcy

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

https://imgur.com/0h8hmoS

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