
Virtual Shadow Maps для S.T.A.L.K.E.R. на Vulkan Как я научил солнце в двигаться плавно forward-рендере
babaiiika 3 минуты назад Virtual Shadow Maps для S.T.A.L.K.E.R. на Vulkan Как я научил солнце в двигаться плавно forward-рендере Сложный 13 мин 0 C++ * DIY или Сделай сам Кейс Шел уже ХХ месяц как я без работы все еще...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: babaiiika 3 минуты назад Virtual Shadow Maps для S. на Vulkan Как я научил солнце в двигаться плавно forward-рендере Сложный 13 мин 0 C++ * DIY или Сделай сам Кейс Шел уже ХХ месяц как я без работы все еще ковыряю свой свой Vulkan-рендер для движка X-Ray OGSR когда я начинал делать мод я чуть меньше рабирался в втом как проще) и начитавшись про плюсы forward и так как мне хотелось живого цикла дня и ночи чтоб солнце медленно ползло по небу , а тени так же медленно ползли по стенам начал делать его . Сразу честно, потому что это важно для всей истории.
Классический рендер STALKER — это R4, deferred. У него тени уже неплохие и плавные задача нужно сделать не хуже как минимум Но я делал свой рендер с нуля и не сознательно пошёл в forward. Не потому что это «правильнее» — а потому что хотелось наворачивать технологии, экспериментировать, и forward казался более гибким полем для этого.
Технические детали
О том, что именно forward усложнит работу с тенями (и не только с ними), я тогда не до конца думал. В deferred тень от солнца считается один раз — в проходе освещения, по G-буферу. В forward её приходится сэмплить в каждом шейдере геометрии.
А у меня их шесть: terrain, lmap, vlit, скелетка (NPC), деревья, трава так что как только я доделал тени я понял что я проигрываю по производительности ощутимо , что делать попробовал отсекать лишнии тени , делать лоды для теней и все равно до произодительности класческого рендера не дотягивал процентов 20% что дальше? можно было бы конечно сказать включайте апскейлеры которые я доделаю и будет вам счастье но это не путь воина ) попробовал сделать кешировние, и да фпс сразу улетел в х2,5 от класического р4 но неприятный момент всё сломалось: кеш дал тик (тени замирают и скачком перерисовываются при движении солнца). Если что речь в осноном про такие тениВ оригинальном STALKER цикл времени суток есть, Звучит как мелочь.
На деле — это одна из самых дорогих вещей в реалтайм-графике, и вот почему. Тень от солнца — это направленный источник света на всю сцену. Не лампочка в комнате, а буквально всё, что видит игрок, на километры вперёд.
Отраслевые последствия
Чтобы построить такую тень, надо отрендерить всю геометрию ещё раз — глазами солнца — в карту глубины (shadow map). Но тут я понял что вот это то куда нужно копать чтоб сделать круто но как сделать и кеширование и динамику одноврменно на одном экране ? Небольшое отсупление раз уж зашла речь про forward то , разберёмся честно: что это вообще за выбор и почему я о нём не пожалел (хотя поплатился).
Коротко про оба подходаDeferred (как R4). Сцена сначала рисуется в «толстый» G-буфер: для каждого пикселя экрана сохраняются нормаль, альбедо, глубина, спекуляр и т. Потом отдельный проход освещения проходит по этому буферу и считает свет один раз на пиксель.
А я сделал именно наивный. В первой версии мой рендер тестировал 16 динамических источников света против КАЖДОГО фрагмента вообще без отбраковки.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





