w23 / xash3d-fwgs

Vulkan Ray Tracing fork of Xash3D FWGS engine. Intended to be merged into master at some point in the future.
160 stars 16 forks source link

document how textures should be remastered #225

Open w23 opened 2 years ago

w23 commented 2 years ago

Надо, наверное, сделать вики-страницу здесь про то, как "правильно" ремастерить текстуры.

Ну там всякое:

Я не знаю, насколько может быть полезно это для того, кто уже с этим сталкивался, и насколько полезным для нас может быть результат трудов того, кто ни разу с этим не сталкивался. Во всяком случае я хотел бы чуть лучше понимать, что происходит на стороне ассетов :D.

0x4E69676874466F78 commented 2 years ago

Да, в процессе. Потихоньку наполняется материал для лучших практик и как делать не надо. Где-то на следующей неделе вероятно засяду за компиляцию этого. Сейчас хочу доработать materialize, так как он открыт и самый удобный из существующих инструментов, хотя часть вещей бы портировать из awesomebump, но я уже забыл что там к чему. Materialize не хватает light cancelation нормального (в случае чего поможешь простым шейдером для этого? повторить принцип как у substance b2m, там есть направляющая света и сила света и надо погасить световые пятна по этому направлению). Потом ещё мне надо написать тузлу-костыль для нейросетей чтобы тайлинг не ломался. Нужно ещё настроить сборку для нейросетей с пошаговой инструкцией что к чему. Максимально упростить весь процесс.

w23 commented 2 years ago

Я думаю, что можно промежуточное выкладывать. То есть просто накидать ссылок на пбр (на вот это например https://academy-api-adobe.substance3d.com/courses/05171e19aa8dc19421385fd9bb9e016e/attachments/6dfaa037-e8f5-4523-ac88-216693b5cf05), и так же тупо списком всё то, что ты попробовал. (я, может, смогу и сам это завтра-послезавтра супер-кратко накидать, там тезисов на пять пунктов и три картинки.)

Мяса туда было бы тоже неплохо (что попробовал, как, почему да, почему нет), но это совсем как будет время.

0x4E69676874466F78 commented 2 years ago

@w23 если я начну этим заниматься то я засяду с головой. Прям щас не хочу разрываться (уже немного начинаю разрываться). Далеко не все сырые мысли пригодны для передачи понимания людям. Часть вещей возможно вовсе будут не нужны, потому что:

  1. Я затеял переделать интерфейс materialize и сейчас прикидываю насколько я способен его в короткое время переделать. Это может заметно ускорить процесс настройки материалов и можно сделать его основным инструментом. Сейчас он не совсем пригоден. Следовательно я не хочу писать статью по старой версии. Там вообще можно построить конвейер так что ещё и нейросети будут интегрированы (но не факт что желания хватит настолько дорабатывать сейчас).
  2. Если результат нейросети которая выдирает материалы будет хорошим то materialize можно отодвинуть на второй план.

Если щас хаотично начать форсить это процесс результат будет хуже. Короче это так не итерируется. Если начать на минимальной базе форсить то люди будут делать ошибки и лишнюю работу.

w23 commented 2 years ago

Тогда я попытаюсь найти время в вовка-режиме накидать про материалы.

Тут ещё такой момент, что я совсем-совсем не понимаю, что именно ты делаешь, как, что перепробовал, что вообще есть, етц. У тебя есть знание, накопленное десятками часов, и отсутствующее у окружающих. Его в ультра-кратком виде (тупо список тулов и да-нет) можно, думаю, накидать за полчаса.

Просто перфекционизмом досконально всё документировать мы будем до 2077

0x4E69676874466F78 commented 2 years ago

Тогда я попытаюсь найти время в вовка-режиме накидать про материалы.

Собирался бегло по самым верхам сделать сегодня на тему materials.mat конспект потому что это не требует погружения. Остальное позже.

Его в ультра-кратком виде (тупо список тулов и да-нет) можно, думаю, накидать за полчаса.

Не получится всё в таком формате. Иначе бы я это сделал уже. Ещё ряд вопросов не проверено. Желающих с большим энтузиазмом и кое-как шарящих я пока не вижу кроме 1-2 человек, а их я и так могу в реальном времени проконсультировать в формате утверждение-вопрос-ответ. Для массы же которую планируется привлекать по сарафанному радио нужно совершенно другое. Чтобы процесс ремастеринга материалов пошёл быстрым и слаженным требуется готовая сборка с налаженным конвейером и нормальным ЧАВО, тогда можно привлечь неопытных людей но с большой энергией. Иначе просто утонем в плохих материалах и спрашивается зачем всё это затевалось тогда?

Просто перфекционизмом досконально всё документировать мы будем до 2077

Нет. Речь о базе чтоб делать ≈хороший ремастер, а не вовка-режим дерьмастера гта3. Хочешь вовка-режим? берёшь и прикручиваешь Half-Life ReSrced HD Graphics Mod ну там правда ещё из этого надо другие карты как-то достать... ну типа берёшь там по урокам materialize, substance b2m делаешь как-нибудь, это не сложно, можно вообще batch организовать автоматику. Только за результат я не отвечаю и собирать такое самому не хочется.

Короче тут вопрос кто будет тянуть ремастер материалов как типа арт-директор. Без арт-директора это будет разнобой, как чудовище доктора Франкенштейна, кто-то должен вести проект, следовательно он и будет диктовать свои взгляды на процесс. Если я, то могу сказать однозначно что итеративно тут как ты хочешь не получится, я просто так не могу в данном контексте работать. Это не код, тут совсем другой порядок и объём. Тут желательно подумать ряд вещей заранее прежде чем пускать конвейер, цена переделки высока. Возможно у меня неправильные представления на этот счёт, готов передать эту ношу другому 😅

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

0x4E69676874466F78 commented 2 years ago

@w23 ну держи https://github.com/w23/xash3d-fwgs/wiki/Формат-PBR-материалов Остальное пока не определено.

0x4E69676874466F78 commented 2 years ago

Вот тебе сырые (хотя и местами доработанные) мысли (надеюсь тебе станет от этого легче):

0x4E69676874466F78 commented 2 years ago

Для materialize у меня вовсе 18 пунктов доработок, хотя многие не столь важные, но это в любом случае может повлиять на процесс выдирания, например я хочу объединить этап с heightmap с normalmap.

0x4E69676874466F78 commented 2 years ago

Список приложений есть тут https://github.com/w23/xash3d-fwgs/issues/39 Я намерен улучшить materialize чтобы оно удобным было. Но он в ряде вещей проигрывает substance b2m чисто алгоримически, главным образом не хватает light canceling, но substance b2m платный и тоже есть свои недостатки которые не исправить в отличие от недостатков materialize.

w23 commented 2 years ago

Ох. Я не говорю навованить текстуры, я говорю навованить описание того, что с ними происходит, потому что я понятия не имею, что там и как. Никто на это не набежит вованить, я просто хочу больше понимания того, как ты ремастеришь.

Благодарю за вот это объёмное описание, теперь я запутался ещё больше :D. Думаю не буду лезть больше, просто доверюсь твоему руководству.

0x4E69676874466F78 commented 2 years ago

@w23 как делаю я это не совсем оптимальный и довольно мудрёный процесс поэтому его нет смысла описывать, мы на этом далеко не уедем, так как входной порог высоковат и производительность низковата. Хочешь могу как-нибудь включить стрим для тебя и ты увидишь своими глазами что это не массовый вариант. Я использую связку: materialize для простых случаев, заброшенного ндо2 (его уже легально не достать) чтобы нарисовать вручную нормаль или получить больший контроль над нормалями в ряде случаев, substance b2m чтобы погасить освещение и получить другой результат с нормалями и картой шероховатости (частенько он это делает лучше), местами делаю нарезку из двух текстур нормалей так поступил с решёткой например (потому что сами лепестки нужно было выделить сильнее нежели обод). Экран телика было сложно сделать хотя и получилось качественно (блик я только не убрал на basecolor, а на нормали его нет потому что нормаль самого экрана я нарисовал вручную). Я хочу довести materialize до примерно уровня substance b2m а в чём-то сделать гораздо удобнее, это сильно повысит производительность труда. А ndo заменить как-то иначе, например сделать синхронизацию с открытым файлом в гимпе где рисуем в сером и получаем на выходе нужную нормаль (естественно я опишу этот процесс максимально доступным языком с примерами). Описывать работу в текущем materialize не вижу смысла, просто посмотри например https://www.youtube.com/watch?v=vtnJToPxBNo чтобы иметь общее представление, а можешь сам скачать и потыкать. Описание параметров materialize ничего толкового не даст так как многое там относительно исходной текстуры будет и надо просто на глаз делать чтобы получить желаемый результат. При этом обычная версия materialize не совместима с нашим roughness потому что он там инвертированный (это я тоже хочу исправить, в одном форке есть переключение да не так как хотелось бы).

Забыл добавить этап с увеличением текстуры, я пока использую realesrgan вулкан-сборки там задействую две модели, его основную и -n realesrnet-x4plus которая даёт в ряде случаев более правильный результат.

w23 commented 2 years ago

Благодарю.

roughness же можно тривиально автоматически инвертировать, хоть конвертом в командной строке, хоть при загрузке. (точно так же, как 1x1 -> 3x3 повтор). И апскейл можно тоже прогнать скриптом на всё, чтобы быстро понять масштаб катастрофы.

0x4E69676874466F78 commented 2 years ago

roughness же можно тривиально автоматически инвертировать, хоть конвертом в командной строке, хоть при загрузке.

  1. Зачем это делать если можно materialize сразу научить выдавать нужный результат и рисовать как у нас?
  2. Не так всё просто, потому что при инвентировании оказывается не ожидаемая яркость/контраст и это нужно подгонять. Короче это нахер не нужный этап который впустую тратит время и надо сразу результат видеть в materialize.

(точно так же, как 1x1 -> 3x3 повтор).

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

И апскейл можно тоже прогнать скриптом на всё, чтобы быстро понять масштаб катастрофы.

Масштаб катастрофы виден и так (всё плохо, ну где-то даже хорошо, но это не так часто как хотелось бы), нужно подбирать модели под конкретные случаи, а возможно и вовсе куски кадров. В идеале редактор где можно выделить нужную область и на ней применить нужную модель, это на это у меня щас сил не хватит и лучше просто подобрать модели которые достаточно хорошо себя показывают на тех или иных объектах. Если тебе делать нехер можешь сам запустить в цикле realesrgan и подождав пол дня (или больше) увидеть более истинный масштаб проблемы, я не вижу этого смысла, я вижу смысл чтобы на типовых текстурах обкатать 5-6 моделей (если для каждой из них все 4к+ текстур увеличить то это хз сколько времени займёт именно поэтому я предлагал на сервере это сделать и там отбирать хорошие варианты и отбраковывать плохие, но это как понимаю не заинтересовало).

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

0x4E69676874466F78 commented 2 years ago

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