Войти
ПроектыФорумОцените

[Конкурс шутеров] TerraForMatch. Добавил объемный туман (volumetric fog) (3 стр)

Страницы: 1 2 3 4 5 Следующая »
#30
11:47, 20 фев. 2021

Misanthrope
потому что я еще не добавил шутерную механику


#31
22:44, 27 фев. 2021

Версия 0.737

Реализовал отражения окружающей среды. Для видео выкрутил отражательную способность так, будто стены маслом намазаны

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры
#32
19:25, 28 фев. 2021

А технологически это что, если не секрет?
То есть основная интрига с вокселями - как уровень хранить, просто загнать в 3D-текстуру никакой памяти не хватит.
В демках Shadertoy генерируют всё "на лету", но непонятно, как тогда изменения уровня хранить, как историю операций что ли?
Можно что-то гибридное придумать - 3D-текстура умеренного разрешения задаёт общие контуры, а мелкие детали "на лету", или смешивать из нескольких затайленных шумовых текстур.
SVO вроде ни у кого толком не работает, да и при изменениях уровня нужно перестраивать дерево.

#33
20:32, 28 фев. 2021

invis
Да, просто загнал это в 3D текстуру 128^3.
Ты в принципе правильно написал: текстура задает общие контуры, а мелкие детали добавляются на лету с помощью трех разных шумов, которые хранятся в каналах другой текстуры.

#34
23:55, 28 фев. 2021

Fatality
> трех разных шумов, которые хранятся в каналах другой текстуры
Запакованные в 1 канал нормали, шероховатость и металличность? И таких 3-4 шума?

#35
0:52, 1 мар. 2021

Fatality
> Ты в принципе правильно написал: текстура задает общие контуры, а мелкие детали
> добавляются на лету с помощью трех разных шумов, которые хранятся в каналах
> другой текстуры.
Ага, угадал. Понятно, что пока размеры уровня ограничены, но в перспективе можно брать много кубиков и стримить их.

Остаётся ещё вопрос с максимальной дистанцией отрисовки, если нет ускоряющих структур аналогичных SDF - а я не представляю, как их тут прикрутить. Получается много шагов на луч при рейкасте. А если увеличивать шаг экспоненциально с расстоянием, то можно проскочить мелкие детали.
Мне попадался вариант решения - рендерить сначала в низком разрешении, чтобы получить приблизительную дистанцию до вокселей, потом делать качественный проход. Но попробовать руки не дошли.
https://gamedev.ru/code/forum/?id=243708&page=2&m=4964241#m23
(с поправкой на то, что у тебя из 3D-текстуры извлекается не диапазон znear-zfar, а только поверхность, поэтому рендер сзади не нужен)

#36
(Правка: 4:20) 4:19, 1 мар. 2021

что за global illumination? radiance probes?

#37
11:47, 1 мар. 2021

lookid
> Запакованные в 1 канал нормали, шероховатость и металличность? И таких 3-4
> шума?
Нормали действительно три разных текстуры, но они применяются лишь один раз на пиксель и в трассировке не участвуют. Я пробовал вычислять нормаль без текстур, а только по левелмапе за четыре выборки в окрестности фрагмента, но выглядело хуже. Часть свойств материала задается текстурой, часть вычисляется в шейдере

invis
> Мне попадался вариант решения - рендерить сначала в низком разрешении
Ну да, я в точности так и делаю. Трейсю сначала в разрешении в 8х8 раз меньше экрана — это быстро. Но, если эти расчеты просто так взять и в полном экране дотрейсть, то будут артефакты на границах. Для борьбы с ними я в отдельном проходе для каждого пикселя вместо его оригинального депса записываю минимальный среди соседей.

Помимо этого в разрешении в 8х8 раз меньше экрана вычисляются тени и подповерхностное рассеивание. Которые потом апскейлются (метод апскейла сам придумал)

Suslik
> что за global illumination? radiance probes?
Я не силен в терминах и делал не по пейперам, а просто сам придумал свой способ (возможно велосипед).
Вот тут я написал, как примерно вычисляю диффузную составляющую GI
https://gamedev.ru/projects/forum/?id=258554&m=5336284#m7
Для рефлекшенов использую textureCubemapArray. Каждый кубмапик покрывает 8х8х8 оригинальных вокселей. Размещаю их там, где они пересекаются с левелом, в среднем их получается примерно 100-200 на кадр. Разрешение фейса всего 16х16.  Потом еще делаю свертку для нужд IBL

#38
13:33, 1 мар. 2021

Fatality
Кароч у тебя Screen Space GI.

#39
13:47, 1 мар. 2021

Fatality
> Вот тут я написал, как примерно вычисляю диффузную составляющую GI
ну это типа random walk raymarching, только для вторичного освещения. он же называется scatter-as-gather. энивей, это работает только для воксельной сетки низкого разрешения. ты таким образом не можешь посчитать освещение для мелких деталей, которые ты добавляешь случайным шумом (если я правильно понял, что ты описал). так как ты считаешь освещение повоксельно и оно не зависит от камеры, тебе ничто не должно мешать сохранять его в текстуру размером с воксельный мир, тогда шум будет спадать со временем, если сцена не слишком меняется. ещё так как ты вторичное освещение считаешь повоксельно, можно отделить расчёт вторичного освещения и, собственно, рендеринга, для этого можно хранить в вокселях первичное освещение, а дальше на каждом кадре выпускать из каждого вокселя луч в compute shader'е в произвольном направлении, искать первое пересечение и учитывать его вклад во вторичное.

Fatality
> Для рефлекшенов использую textureCubemapArray. Каждый кубмапик покрывает 8х8х8
> оригинальных вокселей. Размещаю их там, где они пересекаются с левелом, в
> среднем их получается примерно 100-200 на кадр. Разрешение фейса всего 16х16. 
это и есть radiance probes (вариация)

lookid
> Кароч у тебя Screen Space GI.
лол, ничего общего (вообще)

#40
14:03, 1 мар. 2021

lookid
> Кароч у тебя Screen Space GI.
он же ясно написал про 3D текстуру и вохсели
Изображение

#41
(Правка: 14:11) 14:05, 1 мар. 2021

Suslik
Спасибо за пояснение терминов.
GI расчитывается без мелких деталей, только грубая геометрия (этого вполне достаточно для данной игры).
У меня первичное освещение сохраняется между кадрами (слегка довычисляясь) и к нему прибавляется вторичка с предыдущего кадра (так имитирую третичку). И шума действительно почти нет.
> ещё так как ты вторичное освещение считаешь повоксельно, можно отделить расчёт
> вторичного освещения и, собственно, рендеринга, для этого можно хранить в
> вокселях первичное освещение, а дальше на каждом кадре выпускать из каждого
> вокселя луч в compute shader'е в произвольном направлении, искать первое
> пересечение и учитывать его вклад во вторичное.
Вот это не совсем понял. Вторичка у меня хранится тоже повоксельно, вычисляется в отдельном проходе.
lookid
> Кароч у тебя Screen Space GI.
У меня для скринспейс вокселей происходит только сбор вторички и рефлекшенов (не думаю, что имеет смысл собирать их для всех вокселей). Причем собирают они не только из скринспейсных вокселей, а из всех, до которых только могут дотянуться

#42
11:25, 2 мар. 2021

Suslik
Еще хочу поделиться, как я сделал диффузную чать GI: У меня не одна 3D текстура, собирающая вторичку, а целых 6. Каждая собирает со своего фейса куба. А в основном проходе я вручную интерполирую по нормали. Получается, так имитируется кубемапа 1х1, но в каждом вокселе.
Изображение

#43
12:41, 2 мар. 2021

Fatality
И что сказал фпс?

#44
12:46, 2 мар. 2021

Incvisitor
> И что сказал фпс?
FPS по-прежнему 50.
На скрине FPS 17, потому что я делал захват фрейма с помощью Intel GPA (чтобы внутри тула отключить текстурки для красивого сравнения и увеличить яркость). При захвате фрейма FPS само собой падает

Страницы: 1 2 3 4 5 Следующая »
ПроектыФорумОцените