Главная Юзердоски Каталог Трекер NSFW Настройки

Gamedev

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 34 18 10
решил экспортнуть текстуры из игры titan quest. игра хранит текстуры в хуй пойми каком формате, это Аноним 18/08/25 Пнд 10:54:09 1048292 1
tex.png 112Кб, 256x256
256x256
tex.png 107Кб, 256x256
256x256
image.png 126Кб, 425x430
425x430
image.png 122Кб, 588x532
588x532
решил экспортнуть текстуры из игры titan quest. игра хранит текстуры в хуй пойми каком формате, это вроде DDS, но и не DDS (никакой dds viewer их не распознает), короче какой-то кастомный DDS похоже (хотя и отличий почти нихуя нет, кроме "битых" сигнатур), данные в изображения в данном случае хранятся без сжатия, просто в сыром виде, в формате BGRA. столкнулся с такой хуйней, если это карта нормалей, то при считывании текстуры "как есть", получаю пик 1. т.е. где-то альфа канал = 0. если альфа канал принудительно везде сделать 255, то получаю пик 2 (и это вроде как похоже на осмысленную текстуру/рисунок). первый же пик вроде и тоже похож.

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

в общем, что это за хуйня может быть? и какой способ верный?
Аноним 18/08/25 Пнд 10:55:43 1048293 2
бамп
Аноним 18/08/25 Пнд 11:02:49 1048295 3
непонятно, что ты хочешь сделать

саму игру не видел, но альфа-канал они могут использовать для чего угодно, например, хранить в нём ещё и roughness map или какие-то другие данные, это не просто прозрачность
Аноним 18/08/25 Пнд 11:10:36 1048297 4
>>1048295
>непонятно, что ты хочешь сделать
пишу свой конвертер из .tex в .png, чтобы экспортировать все файлы текстур из игры для удобного анализа и поиска конкретных текстур, чтобы потом их использовать для кое-чего.

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

>они могут использовать для чего угодно
ну я примерно так и думал, что вероятно игра сама обрабатывает этот альфа канал как ей надо. т.е. его лучше просто декодировать как есть, не смотря на визуальный эффект
Аноним 18/08/25 Пнд 11:25:00 1048300 5
>>1048292 (OP)
не знаю что ты имеешь в виду под считыванием, вероятно всё пашет, просто то, чем ты смотришь текстуру, предумножает RGB на альфу. удали альфа-канал из текстуры или настрой софт так, чтобы он не применял альфу

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

без потерь информации конвертацию в png можно применять только для текстур без альфа-канала
либо сохранять текстуру в 2 пнг файла: отдельно PNG RGB 24-bit и отдельно альфу в PNG G 8-bit
Аноним 18/08/25 Пнд 11:40:41 1048303 6
image.png 54Кб, 1276x55
1276x55
>>1048300
>png удаляет пиксели под прозрачностью
что значит "удаляет"? если я обратно декодирую IDAT чанк с данными о пикселях в png, то я получу абсолютно тот же буфер, который был до сжатия (deflate). и записываю я инфу о пикселе в 4 байта, т.е. все 4 канала записываю. или я тебя не понял
Аноним 18/08/25 Пнд 11:46:38 1048305 7
>>1048300
>>1048303
>png удаляет пиксели под прозрачностью
или ты имеешь ввиду как он интерпретирует данные для отображения?

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

вообще странно все как-то, данные то по сути и в первом и втором случае есть, просто они не видны...
Аноним 18/08/25 Пнд 11:54:18 1048307 8
>>1048300
>не знаю что ты имеешь в виду под считыванием
это значит если инфа о пикселе идет в формате BGRA, например [120, 23, 56, 98] (4 байта), то я их беру все и записываю в PNG как они есть, без изменения, меняю только местами порядок B и R, т.е. получаю RGBA (этого требует PNG для корректного отображения).

а когда я менял принудительно А канал на 255, для примера выше я бы заменил 98 на 255.
Аноним 18/08/25 Пнд 11:54:21 1048308 9
533908901.png 121Кб, 421x404
421x404
image.png 15Кб, 421x404
421x404
image.png 129Кб, 421x404
421x404
>>1048303
я возможно хуйню сморозил и это не обязательно так

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

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

а tga точно хранит альфа-канал отдельно
Аноним 18/08/25 Пнд 12:00:02 1048309 10
>>1048305
>но тга тоже отображается с прозрачностью. или это зависит от декодеров этих форматов?
от софта зависит. например я пользуюсь XNview MP, тут можно произвольно смотреть отдельно альфу, отдельно ргб, всё вместе
Аноним 18/08/25 Пнд 12:01:44 1048310 11
>>1048308
я кстати из-за пнг так накалывался несколько раз. думаю, откуда, сука, зеленая кайма лезет по краям спрайтов, ни пикселя зеленого нет на пнгхе. а это вот эти фладфиллы которые зачем-то были кислотно-зелеными проблидились в мип-мапы
Аноним 18/08/25 Пнд 12:20:18 1048312 12
image.png 138Кб, 640x343
640x343
image.png 49Кб, 593x354
593x354
>>1048308
я короче поставил гимп (у меня ни фотошопа не было, ни гимпа... надо было сразу так сделать), так вот, если я правильно понимаю, в самой первой текстуре из шапки треда, которую я декодировал "как есть", данные остались (что по идее не удивительно, хотя отображается она во всех приложениях с учетом альфы, но остальные каналы под этой афльвой НЕ ПРОЕБАНЫ)
Аноним 18/08/25 Пнд 12:23:09 1048313 13
короче все норм работает, просто специфика отображения png такая. но как и для чего движок использует это вообще не ясно. такое чувство даже что сделали одну текстуру, потом тупо маской скрыли "не нужное" и оставили, и запаковали в игру. может я и ошибаюсь...
Аноним 18/08/25 Пнд 12:38:59 1048315 14
image.png 156Кб, 911x496
911x496
image.png 152Кб, 892x466
892x466
с твоей картинкой такая же ситуация
Аноним 18/08/25 Пнд 17:19:11 1048342 15
thegeneralprobl[...].png 23Кб, 550x230
550x230
Аноним 18/08/25 Пнд 22:05:21 1048369 16
>>1048313
да это нормально, когда в одну текстуру пакуют несколько одноканальных карт. это экономит семплеры в шейдере. один раз семплишь текстуру, получаешь 4 карты

в блек опс 2, например, спекуляр был запакован в альфу диффузной текстуры
Аноним 18/08/25 Пнд 22:09:41 1048371 17
>>1048313
>как и для чего движок использует это вообще не ясно
похоже на карту металлик или просто любую маску для смешения двух алгоритмов. глянь на саму модельку, которая использует эту текстуру, там скоре всего будет визуальная разница
Аноним 18/08/25 Пнд 22:10:00 1048372 18
>>1048371
>глянь на саму модельку
в игре, в смысле. под шейдером
Аноним 19/08/25 Втр 18:49:09 1048468 19
image.png 404Кб, 311x844
311x844
>>1048371
модельку я в игре найти не могу (игра про дрочь и фарм), может она вообще из длц которого у меня нет. но нашел это. похоже на модельку лука. то что под альфу попадало на той текстуре - видимо его ручка
Аноним 19/08/25 Втр 19:12:35 1048473 20
>>1048468
да, явно маска-переключалка между блестящим металлизированным шейдингом и шершавым диффузным
Аноним 19/08/25 Втр 19:22:15 1048477 21
сейчас в нормалмапы, кстати, редко что-то лишнее пакуют, их в основном посредством BC5 сжимают, который хранит только каналы R и G (X и Y компоненты вектора), а Z воссоздается через векторное произведение этих двух осей. синий и альфа каналы удаляются
Аноним 19/08/25 Втр 21:12:54 1048501 22
>>1048473
не совсем понял... типа когда в шейдер освещения все 4 канала попадают, там где альфа = 0, по другому освещение рассчитывается?
Аноним 19/08/25 Втр 21:16:31 1048502 23
>>1048501
в шейдере ты что угодно можешь делать. как напишешь - так и будет

хочешь переключать металлический блеск с сухим диффузом по маске? можешь эту маску как отдельную текстуру подавать. а можешь эту текстуру запаковать в один из каналов другой текстуры, например занять пустующий альфа канал карты нормалей. так поступили разрабы этой игры
Аноним 21/08/25 Чтв 12:40:55 1048914 24
>>1048292 (OP)
В альфе скорее всего хранится дополнительная информация, маска для чего-то.
Аноним 25/08/25 Пнд 06:46:48 1049427 25
Иксперд по моддингу в этом итт-треде.

Для начала разберемся с композингом альфа-канала, почему везде оно выглядит по разному: https://en.wikipedia.org/wiki/Alpha_compositing
https://learn.microsoft.com/en-us/windows/apps/develop/win2d/premultiplied-alpha

Если кратко: альфа-канал может быть как "предварительно перемножен", так и нет. Когда такую картинку, особенно в TGA, запихиваешь в профессиональный софт, то тебя спросят: а альфа у тебя премультиплаена, или нет? Могут спросить в отдельном диалоге, а могут просто галочку сделать. И от этой галочки будет зависеть, как картинка будет отображаться, причем зависеть сильно.

При этом, с точки зрения самого файла, в нем просто лежат какие-то данные. Может быть несжатые байтики, а может быть пожатые дефлейтом (PNG). Проблемы начинаются, когда ты эти байтики пытаешься интерпретировать. И еще больше проблем, когда какая-то либа, программа или двигло пытается "сделать заебись", исходя из своих представлений о прекрасном. Например, зачем сохранять пиксели, если они на 100% прозрачны? В результате появляются >>1048300 >>1048308, откуда мы узнаем чудеса:
>png удаляет пиксели под прозрачностью
>под 100% прозрачностью остаётся что-то вроде flood fill пикселей
Нет, никакого удаления сам по себе формат не вносит. Зато говнософт, вроде фотошопа, вполне способен это сделать. На протяжении долгих лет фотошоп некорректно справлялся с альфа-каналом в PNG, не удивлюсь, что они или другие, "самые умные" могли приделать и вырезание пикселей.

>>1048300
>отдельно PNG RGB 24-bit и отдельно альфу в PNG G 8-bit
А вот это правильно, но я бы все же попытался разобраться: что именно делает альфаканал? Оно просто "замазывает неиспользуемые области", или там какой-нибудь спекуляр закодирован? Если первое - логично просто распаковывать в png24 c вытеранием пикселей под маской, если второе - распаковывай в 2 отдельные карты, ибо у них разное назначение. Еще лучше сделай настройки, чтобы можно было оригинальные битмапы сдампать тоже.
Аноним 25/08/25 Пнд 22:03:40 1049543 26
up
Аноним 29/08/25 Птн 14:18:53 1049987 27
2025-08-29-1459[...].mp4 6394Кб, 640x360, 00:01:32
640x360
Bump!
Аноним 29/08/25 Птн 14:59:17 1049999 28
>>1049987
на твой вопрос не ответили или что?
Аноним 29/08/25 Птн 17:15:00 1050027 29
2025-08-29-1438[...].mp4 5296Кб, 640x360, 00:05:33
640x360
>>1049999
Это не мой тред, просто я тут расписал детальки, хотел обкашлять нюансики, показать свою писечку в деле моддинга... А тут уже похоже ОП сыбал и забыл про тредик. Мне печально, что помогать некому
Аноним 30/08/25 Суб 17:37:37 1050183 30
>>1049987 >>1050027
>показать свою писечку в деле моддинга...
Это ты сам заставил Сидоджи летать? Молодец.

Помню, любил летать на машине как на самолёте...
Аноним 30/08/25 Суб 23:33:57 1050313 31
2025-08-29-1931[...].mp4 9048Кб, 640x360, 00:02:30
640x360
>>1050183
>Это ты сам заставил Сидоджи летать? Молодец.
Нет, это сделали за меня, а вот звуки - моя работа, я как раз пытаюсь понять где какой звук используется и сделал такую замену для отладки.
Аноним 01/09/25 Пнд 00:48:00 1050423 32
>>1048292 (OP)
это карта нормалей для динамического освещения
Аноним 04/09/25 Чтв 03:56:50 1050838 33
>>1050313
>вот звуки - моя работа
А, сейчас послушал со звуком - теперь стало понятно.

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

Что за древний TTS ты откопал? Есть же новее, бесплатно и без регистрации.
Аноним 04/09/25 Чтв 11:08:12 1050856 34
image.png 60Кб, 351x245
351x245
>>1050838
>Игра 20 лет назад вышла, и, вроде бы, к ней уже были любительские озвучки...
Любительских озвучек - великое множество. Утилит для ковыряния звуков - еще больше. А вот какой звук за что отвечает - это надо долго пылесосить форумы, да и информация разрозненная. Как делают озвучки, какой софт и пайплайн при этом используется - непонятно, такое если и публикуют, то хуй найдешь ту страничку форума, где это опубликовано. Вот в результате я сам пишу свои утильки и сам ебусь со звуками. С нуля. Почти с нуля - есть некоторая информация на вики, где описываются принципы кодирования звуковых файлов, а дальше самому. Иногда информация не полная, иногда с ошибками. Иногда ты все сделал по инструкции, все работает, а вот ритм-игры почему-то вылетают. И надо разобраться почему.

>Что за древний TTS ты откопал? Есть же новее, бесплатно и без регистрации.
Это Екатерина и не менее древний Николай.
Эти движки можно скачать к себе на компьютер и засунуть в скрипт, сгенерив тысячи файлов.
А как быть с вашим модным нейродерьмом, которое работает в браузере? Мне ручками 5000 файлов сохранять?
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов