#1771
13 марта 2025 в 19:26
Мне вот щас желательно бы понять как работает загрузчик. Т.е почему если я все распаковываю, и в порядке так сказать очередности как нужно раскидываю (структурно) убираю паки, чтобы не мешали-один результат, где улетают некоторые текстуры. Если я делаю ВСЕ в паках, в том числе и ваши файлы пакую-другой результат- других файлов нет, но появляются новые текстуры. Если я делаю комбинацию ваши файлы, плюс пак0-третий результат, где есть например текстура консоли, меню, но не вычитывает новые текстуры.
Может ли быть проблема , баг или еще что то конкретно с загрузчиком? Есть ли какие то команды упралвения загрузчиком? Какая очередность загрузки? Как загрузчик выстраивает приоритеты при схожих названиях файлов?
Может ли быть проблема , баг или еще что то конкретно с загрузчиком? Есть ли какие то команды упралвения загрузчиком? Какая очередность загрузки? Как загрузчик выстраивает приоритеты при схожих названиях файлов?
#1772
13 марта 2025 в 19:28
Ну и вопрос номер два, в нотепад++ есть батч-процессинг (обработка пачек), можно натравить его на папку, и задать переменные для замены строк, для удаления строк или еще что то. ЧТо например в папке скрипт мне можно будет массово заменить, что на что? Какие функции в стейджах?
#1773
13 марта 2025 в 20:50
мне нужно пока временно в качестве заглушек переименовать ВСЕ текстуры подставив префикс @d
и скорректировать в шейдерах название текстур с префиксом @d
так?
тогда все эти заковырки решаться?
и скорректировать в шейдерах название текстур с префиксом @d
так?
тогда все эти заковырки решаться?
#1774
13 марта 2025 в 20:51
если бы было так просто))))
надо понимать как из слоёв шейдера получается видимый материал,
и переписать их так, чтобы в попикселке получить что-то визуально подобное.
надо понимать как из слоёв шейдера получается видимый материал,
и переписать их так, чтобы в попикселке получить что-то визуально подобное.
#1775
13 марта 2025 в 21:30
вот пример преобразования шейдера в материал:
было:
стало:
результат:
было:
textures/gothic_floor/largerblock3b_ow
{
{
map textures/sfx/firegorre.tga
tcmod scroll 0 1
tcMod turb 0 .25 0 1.6
tcmod scale 4 4
blendFunc GL_ONE GL_ZERO
rgbGen identity
}
{
map textures/gothic_floor/largerblock3b_ow.tga
blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
rgbGen identity
}
{
map $lightmap
blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
rgbGen identity
}
}
стало:
textures/gothic_floor/largerblock3b_ow
{
{
map textures/sfx/firegorre.tga
tcmod scroll 0 1
tcMod turb 0 .25 0 1.6
tcmod scale 4 4
rgbGen identity
}
{
map textures/gothic_floor/largerblock3b_ow.tga
blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
rgbGen identity
lightStage
}
{
map $lightmap
blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
rgbGen identity
}
}
результат:

#1776
13 марта 2025 в 21:33
как видно, надо просто пометить слои (стейджи) материала, на которые падают свет и тени, то есть которые участвую в попикселке, токеном lightStage, а так сам движок доделает что надо.
#1777
13 марта 2025 в 21:51
СПасибо за пример!
Я до того как вы написали, скормил некоторые вводные данные в ии, и попробовал сформировать промпт на конверсию шейдеров, получилось так
Шейдер 1: textures/base/comp_panel
Исходный
textures/base/comp_panel
{
surfaceparm trans
light 1
q3map_surfacelight 500
{
map textures/base/comp_panel.tga
blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
}
{
map textures/base/comp_panel.blend.tga
blendFunc GL_ONE GL_ONE
}
}
Описание:
surfaceparm trans — полупрозрачная поверхность.
light 1 и q3map_surfacelight 500 — излучает свет (500 единиц).
Слой 1: Базовая текстура с альфа-каналом (GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA) — полупрозрачность.
Слой 2: Светящийся слой (GL_ONE GL_ONE) — аддитивное свечение.
Визуал: Панель с прозрачностью и подсветкой (например, стеклянный экран).
Проблемы в r_ppl 2:
Нет lightStage или лайтмапа — в PPL материал без освещения может быть некорректным.
Отсутствие @d, @n, @p — для PBR нужно указать физические свойства.
Свечение через blendFunc GL_ONE GL_ONE нужно адаптировать (emission убрано из @p).
что сделал ии
textures/base/comp_panel
{
surfaceparm trans
q3map_surfacelight 500
diffusemap textures/base/comp_panel@d.tga
normalmap textures/base/comp_panel@n.tga // Заглушка
pbrMap textures/base/comp_panel@p.tga // Заглушка (R=0, G=AO, B=1)
lightStage
{
map $lightmap
blendFunc filter
}
{
map textures/base/comp_panel.blend@d.tga
blendFunc GL_ONE GL_ONE
}
}
Изменения:
Добавлены @d, @n, @p:
@d.tga: Переименуй comp_panel.tga → comp_panel@d.tga.
@n.tga: Заглушка (синяя, 128,128,255).
@p.tga: Заглушка (R=0 для неметалла, G=AO, B=1 для roughness).
lightStage с blendFunc filter (эквивалент GL_DST_COLOR GL_ZERO) — стандарт для лайтмапов.
Свечение оставлено как отдельный слой с blendFunc GL_ONE GL_ONE (переименуй comp_panel.blend.tga → comp_panel.blend@d.tga).
light 1 удалён — устаревший параметр, заменён на q3map_surfacelight.
НАсколько далеко от истины?
Я проверил чет не то))
Я до того как вы написали, скормил некоторые вводные данные в ии, и попробовал сформировать промпт на конверсию шейдеров, получилось так
Шейдер 1: textures/base/comp_panel
Исходный
textures/base/comp_panel
{
surfaceparm trans
light 1
q3map_surfacelight 500
{
map textures/base/comp_panel.tga
blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
}
{
map textures/base/comp_panel.blend.tga
blendFunc GL_ONE GL_ONE
}
}
Описание:
surfaceparm trans — полупрозрачная поверхность.
light 1 и q3map_surfacelight 500 — излучает свет (500 единиц).
Слой 1: Базовая текстура с альфа-каналом (GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA) — полупрозрачность.
Слой 2: Светящийся слой (GL_ONE GL_ONE) — аддитивное свечение.
Визуал: Панель с прозрачностью и подсветкой (например, стеклянный экран).
Проблемы в r_ppl 2:
Нет lightStage или лайтмапа — в PPL материал без освещения может быть некорректным.
Отсутствие @d, @n, @p — для PBR нужно указать физические свойства.
Свечение через blendFunc GL_ONE GL_ONE нужно адаптировать (emission убрано из @p).
что сделал ии
textures/base/comp_panel
{
surfaceparm trans
q3map_surfacelight 500
diffusemap textures/base/comp_panel@d.tga
normalmap textures/base/comp_panel@n.tga // Заглушка
pbrMap textures/base/comp_panel@p.tga // Заглушка (R=0, G=AO, B=1)
lightStage
{
map $lightmap
blendFunc filter
}
{
map textures/base/comp_panel.blend@d.tga
blendFunc GL_ONE GL_ONE
}
}
Изменения:
Добавлены @d, @n, @p:
@d.tga: Переименуй comp_panel.tga → comp_panel@d.tga.
@n.tga: Заглушка (синяя, 128,128,255).
@p.tga: Заглушка (R=0 для неметалла, G=AO, B=1 для roughness).
lightStage с blendFunc filter (эквивалент GL_DST_COLOR GL_ZERO) — стандарт для лайтмапов.
Свечение оставлено как отдельный слой с blendFunc GL_ONE GL_ONE (переименуй comp_panel.blend.tga → comp_panel.blend@d.tga).
light 1 удалён — устаревший параметр, заменён на q3map_surfacelight.
НАсколько далеко от истины?
Я проверил чет не то))
#1778
13 марта 2025 в 21:59
Нужно ли вообще кстати говоря заменять GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
на ге128 везде?
на ге128 везде?
#1779
13 марта 2025 в 22:01
Лучше прописать lightStage, а загрузчик сам поменяет как надо.
Но вообще, зависит от материала, не стоит ИИ привлекать к этой творческой работе!
Еще подскажу: r_printMaterials 1 включит режим отображения названия материалов, это очень облегчит поиск их текстов.
Но вообще, зависит от материала, не стоит ИИ привлекать к этой творческой работе!
Еще подскажу: r_printMaterials 1 включит режим отображения названия материалов, это очень облегчит поиск их текстов.
#1780
17 марта 2025 в 20:50
Фикс к ранее выложенной сборке: забыл положить в папку baseq3/materials файл tables.shader, скачать его можно отсюда:
https://disk.yandex.ru/d/x1nBrPRSexnF-g
Без этого файла не будут работать вычисления по таблицам синус/косинус, например:
описание ентити лайт с дергающимся центром для создания иллюзии пламени
https://disk.yandex.ru/d/x1nBrPRSexnF-g
Без этого файла не будут работать вычисления по таблицам синус/косинус, например:
описание ентити лайт с дергающимся центром для создания иллюзии пламени
{
"classname" "light"
"origin" "435 -433 425"
"shadowLodBias" "4"
"color" "1.00 0.70 0.20"
"light" "150"
"center" "sintable[time*8]*0.16 costable[time*8]*0.16 costable[time*6]*0.25"
}