М.Двач / Gamedev

решил экспортнуть текстуры из игры titan quest. игра хранит текстуры в хуй пойми каком формате, это 18 авг, 10:54 1048292 В конец треда | Веб

112 Кб, 256x256107 Кб, 256x256126 Кб, 425x430122 Кб, 588x532

решил экспортнуть текстуры из игры titan quest. игра хранит текстуры в хуй пойми каком формате, это вроде DDS, но и не DDS (никакой dds viewer их не распознает), короче какой-то кастомный DDS похоже (хотя и отличий почти нихуя нет, кроме "битых" сигнатур), данные в изображения в данном случае хранятся без сжатия, просто в сыром виде, в формате BGRA. столкнулся с такой хуйней, если это карта нормалей, то при считывании текстуры "как есть", получаю пик 1. т.е. где-то альфа канал = 0. если альфа канал принудительно везде сделать 255, то получаю пик 2 (и это вроде как похоже на осмысленную текстуру/рисунок). первый же пик вроде и тоже похож.

есть кстати специальный tex viewer ("dds" запакованы внутрь tex) для этой игры, он импортирует и отображает текстуру словно без альфа канала (пик 3), но если ее экспортировать в tga формат, то превью у нее словно без альфа канала, но при открытие изображения nomacs'ом там альфа канал присутствует...

в общем, что это за хуйня может быть? и какой способ верный?

Ответы300342914

2 18 авг, 10:55 2 1048293

бамп

3 18 авг, 11:02 3 1048295

непонятно, что ты хочешь сделать

саму игру не видел, но альфа-канал они могут использовать для чего угодно, например, хранить в нём ещё и roughness map или какие-то другие данные, это не просто прозрачность

Ответы297

4 18 авг, 11:10 4 1048297

>>1048295
>непонятно, что ты хочешь сделать
пишу свой конвертер из .tex в .png, чтобы экспортировать все файлы текстур из игры для удобного анализа и поиска конкретных текстур, чтобы потом их использовать для кое-чего.

данный инцидент - просто индикатор текущей верности в обработке данных. т.е. если я буду уверен, что правильно обрабатываю данные в этом случае, то можно будет идти дальше и начинать писать декодер для DXT1, DXT3 и тд сжатий.

>они могут использовать для чего угодно
ну я примерно так и думал, что вероятно игра сама обрабатывает этот альфа канал как ей надо. т.е. его лучше просто декодировать как есть, не смотря на визуальный эффект

Ответы300

5 18 авг, 11:25 5 1048300

>>1048292 (OP)
не знаю что ты имеешь в виду под считыванием, вероятно всё пашет, просто то, чем ты смотришь текстуру, предумножает RGB на альфу. удали альфа-канал из текстуры или настрой софт так, чтобы он не применял альфу

>>1048297
>пишу свой конвертер из .tex в .png
прозрачность в png это не то же самое, что альфа-канал: png удаляет пиксели под прозрачностью. правильно будет конвертировать в tga, там сохраняются и пиксели RGB, и A

без потерь информации конвертацию в png можно применять только для текстур без альфа-канала
либо сохранять текстуру в 2 пнг файла: отдельно PNG RGB 24-bit и отдельно альфу в PNG G 8-bit

Ответы303305307

54 Кб, 1276x55
6 18 авг, 11:40 6 1048303

>>1048300
>png удаляет пиксели под прозрачностью
что значит "удаляет"? если я обратно декодирую IDAT чанк с данными о пикселях в png, то я получу абсолютно тот же буфер, который был до сжатия (deflate). и записываю я инфу о пикселе в 4 байта, т.е. все 4 канала записываю. или я тебя не понял

Ответы305308

7 18 авг, 11:46 7 1048305

>>1048300
>>1048303
>png удаляет пиксели под прозрачностью
или ты имеешь ввиду как он интерпретирует данные для отображения?

>правильно будет конвертировать в tga
но тга тоже отображается с прозрачностью. или это зависит от декодеров этих форматов?

вообще странно все как-то, данные то по сути и в первом и втором случае есть, просто они не видны...

Ответы309

8 18 авг, 11:54 8 1048307

>>1048300
>не знаю что ты имеешь в виду под считыванием
это значит если инфа о пикселе идет в формате BGRA, например [120, 23, 56, 98] (4 байта), то я их беру все и записываю в PNG как они есть, без изменения, меняю только местами порядок B и R, т.е. получаю RGBA (этого требует PNG для корректного отображения).

а когда я менял принудительно А канал на 255, для примера выше я бы заменил 98 на 255.

9 18 авг, 11:54 9 1048308

121 Кб, 421x40415 Кб, 421x404129 Кб, 421x404

>>1048303
я возможно хуйню сморозил и это не обязательно так

обычно если сохранить в пнг в графическом редакторе, то альфа премултиплаится и удаленные пиксели под ней уничтожаются для экономии размера. под 100% прозрачностью остаётся что-то вроде flood fill пикселей, видимо чтобы не было артефактов при отображении

пикрил пример, попробуй сам его разобрать на ргб и альфу

а tga точно хранит альфа-канал отдельно

Ответы310312

10 18 авг, 12:00 10 1048309

>>1048305
>но тга тоже отображается с прозрачностью. или это зависит от декодеров этих форматов?
от софта зависит. например я пользуюсь XNview MP, тут можно произвольно смотреть отдельно альфу, отдельно ргб, всё вместе

11 18 авг, 12:01 11 1048310

>>1048308
я кстати из-за пнг так накалывался несколько раз. думаю, откуда, сука, зеленая кайма лезет по краям спрайтов, ни пикселя зеленого нет на пнгхе. а это вот эти фладфиллы которые зачем-то были кислотно-зелеными проблидились в мип-мапы

12 18 авг, 12:20 12 1048312

138 Кб, 640x34349 Кб, 593x354

>>1048308
я короче поставил гимп (у меня ни фотошопа не было, ни гимпа... надо было сразу так сделать), так вот, если я правильно понимаю, в самой первой текстуре из шапки треда, которую я декодировал "как есть", данные остались (что по идее не удивительно, хотя отображается она во всех приложениях с учетом альфы, но остальные каналы под этой афльвой НЕ ПРОЕБАНЫ)

13 18 авг, 12:23 13 1048313

короче все норм работает, просто специфика отображения png такая. но как и для чего движок использует это вообще не ясно. такое чувство даже что сделали одну текстуру, потом тупо маской скрыли "не нужное" и оставили, и запаковали в игру. может я и ошибаюсь...

Ответы369371

14 18 авг, 12:38 14 1048315

156 Кб, 911x496152 Кб, 892x466

с твоей картинкой такая же ситуация

23 Кб, 550x230
15 18 авг, 17:19 15 1048342

>>1048292 (OP)
https://en.wikipedia.org/wiki/XY_problem
https://ru.wikipedia.org/wiki/Проблема_XY

16 18 авг, 22:05 16 1048369

>>1048313
да это нормально, когда в одну текстуру пакуют несколько одноканальных карт. это экономит семплеры в шейдере. один раз семплишь текстуру, получаешь 4 карты

в блек опс 2, например, спекуляр был запакован в альфу диффузной текстуры

17 18 авг, 22:09 17 1048371

>>1048313
>как и для чего движок использует это вообще не ясно
похоже на карту металлик или просто любую маску для смешения двух алгоритмов. глянь на саму модельку, которая использует эту текстуру, там скоре всего будет визуальная разница

Ответы372468

18 18 авг, 22:10 18 1048372

>>1048371
>глянь на саму модельку
в игре, в смысле. под шейдером

404 Кб, 311x844
19 19 авг, 18:49 19 1048468

>>1048371
модельку я в игре найти не могу (игра про дрочь и фарм), может она вообще из длц которого у меня нет. но нашел это. похоже на модельку лука. то что под альфу попадало на той текстуре - видимо его ручка

Ответы473

20 19 авг, 19:12 20 1048473

>>1048468
да, явно маска-переключалка между блестящим металлизированным шейдингом и шершавым диффузным

Ответы501

21 19 авг, 19:22 21 1048477

сейчас в нормалмапы, кстати, редко что-то лишнее пакуют, их в основном посредством BC5 сжимают, который хранит только каналы R и G (X и Y компоненты вектора), а Z воссоздается через векторное произведение этих двух осей. синий и альфа каналы удаляются

22 19 авг, 21:12 22 1048501

>>1048473
не совсем понял... типа когда в шейдер освещения все 4 канала попадают, там где альфа = 0, по другому освещение рассчитывается?

Ответы502

23 19 авг, 21:16 23 1048502

>>1048501
в шейдере ты что угодно можешь делать. как напишешь - так и будет

хочешь переключать металлический блеск с сухим диффузом по маске? можешь эту маску как отдельную текстуру подавать. а можешь эту текстуру запаковать в один из каналов другой текстуры, например занять пустующий альфа канал карты нормалей. так поступили разрабы этой игры

24 21 авг, 12:40 24 1048914

>>1048292 (OP)
В альфе скорее всего хранится дополнительная информация, маска для чего-то.

Обновить тред

« /gd/В начало тредаВеб-версияНастройки

/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.gq, m2ch.cf, m2ch.fapp.in, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion