ПрограммированиеФорумГрафика

Оптимизация Volumetric Clouds (2 стр)

Страницы: 1 2 3 4 5 Следующая »
#15
17:03, 18 фев 2022

Target
вроде норм

#16
17:50, 18 фев 2022

Target
> Что за структуры? Первый раз слышу.
Фиксированный шаг это очень медленно, почти что поиск тупым перебором.
Ускоряющие структуры делают умный поиск пересечения.
То же построение SDF это ускоряющая структура, но проблема в том, что их надо перестраивать.

Вообще маршинг очень плохо работает с текструным кэшем, ты прогаешь по 3д текстуре и постоянно получаешь промахи. В том же RDR2 используют только R8 текстуру меньшего размера, что намного лучше для кэша.

ТАА дает артефакты, если будешь быстро двигаться или низкий фпс.

#17
18:26, 18 фев 2022

/A\
> Target
> > Что за структуры? Первый раз слышу.
> Фиксированный шаг это очень медленно, почти что поиск тупым перебором.
> Ускоряющие структуры делают умный поиск пересечения.
> То же построение SDF это ускоряющая структура, но проблема в том, что их надо
> перестраивать.
А можно материал или наводку по тому, как генерить sdf для объектов подобным облакам? Я либо не правильно что-то понял, либо найти не могу. В том же блоге парень для своего симулятора делал облака, описывал, что юзал предрасчитанный SDF на компьют шейдерах за 300мс. Это что такое вообще? В гугле нахожу всякие функции SDF для кубика, сферы и т.п. и как то непонятно что с этим делать и как это заюзать для оптимизации маршинга. В общих словах можешь описать? Маршинг сам по себе тема интересная, но я не так давно его начал практиковать.
Кстати видел где-то, если не ошибаюсь, для Microsoft Flight Simulator облака с вокселями тесно работают. Про TAA уже в курсе, пробовал, смазывается и такое себе в динамике, если честно. А вот если налету генерить плавно SDF'ы под разные coverage и, я пока не знаю, возможно ли такое, интерполировано между ними плавно переключаться, ну, чтобы погода плавно менялась в full resolution без топорного брутфорса.

#18
18:51, 18 фев 2022

Target
Давно читал, но вроде как SDF генерируется по низкодетальному шуму.
Вместо маршинга от камеры ты делаешь маршинг внутри сферы/куба и записываешь результат в текстуру. Потом по SDF ищешь пересечение и начинаешь маршинг с фиксированным шагом с большей детализацией. Либо если SDF меньшего разрешения, то запускаешь тот же шейдер - сначала низкая детализация, потом высокая.
Я делал только маршингом с увеличением шага от расстояния, еще делал ЛОДы для текстур шума и на большем расстоянии менял мипуровень, иначе большие кэшмисы.

#19
18:57, 18 фев 2022

Хмм... т.е. получается что-то вроде стартового маршинга в разряженную 3д текстуру, а потом из неё брать инфу, есть ли в этой области плотность, и, если есть, маршим как обычно данную область? Я правильно понял принцип? Плюс, к тому же, апскейл хоть и нормальную картинку выдаёт, но вот алиасинг что-то проявляется через чур сильно, красиво не сблендить, либо я криво FSR завёл и такие вещи должны сглаживаться по краям без таких лесенок. Без него резкий алиасинг, с ним - уже скруглённый. Получается такое вот чудо:

+ Показать

Потому всё же хочется fullRes.

#20
19:19, 18 фев 2022

Target
> Я правильно понял принцип?
Да. Но неизвестно улучшит ли это производительность в твоем случае. Тут надо долго экспериментировать.

#21
22:58, 18 фев 2022

Target
> Получается такое вот чудо:
Моя идея была - рендерить облака в "отдельном буфере"(отдельном драв-кале) целиком. (весь кадр где камера смотрит на облака без ничего, берешь этот кадр и лепишь сзади своего основного дравкала и рендеришь остальное сверху)

То что у тебя - выглядит так как будто ты применил depth из основного рендера, бахнул даунскейл(на depth), срендерил облака и бахнул апскейл - и вышло что у тебя depth стала квадратиками на облкаках... чел...

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

#22
1:01, 19 фев 2022

melvy
Да, именно так и сейчас и работает. Верно, так сделано для того, чтобы отсекать те области куда не надо посылать лучи - там тупо пропуск идёт прямо в текстуру с результатами марша. Потом уже отдельно смешиваю со сценой, чтобы было пересечение объектов сцены с облаками. Отсюда и артефакты такие)

#23
10:59, 19 фев 2022

Target
При рендере облаков юзай глубину, уменьшенную min функцией (или max если reverse z), короче той, с которой объекты станут тоньше. Все жирные окклюдеры останутся, а мелкий шум от веточек съестся и после апскейла не будет глаза мозолить.

#24
1:52, 20 фев 2022

1)Сделал прекращение тяжелых моментов тех мест, где нет плотности
2)Придумал, как сохранить оклюдеры, чтобы в их областях ничего не маршилось
3)Качество, что 1/4 что 1/6 - почти одинаковое, по крайней мере, я не вижу разницы
4)FSR, само-собой, прикручен
5)Пофиксил артефакты даунскейла
6)Как и хотел, чтобы объекты имели возможность пересекаться с объектами сцены, фикс пунктом выше.

#25
18:16, 20 фев 2022

Ivashka
Его описание выглядит, как солянка всего. Скорее всего нет таких книг. Если только ты не прочитаешь вообще всё.

#26
19:47, 20 фев 2022

Ivashka
В UE есть исходники шейдера, но он огромный

Вот вариант сделаный по докам хорайзона
https://github.com/mccannd/Project-Marshmallow

#27
20:16, 20 фев 2022

Ivashka
> А можно ссылочки из которых черпал необходимую инфу для создания.
в этойже теме все объяснили и автор сам все подитожил
Target
> 1)Сделал прекращение тяжелых моментов тех мест, где нет плотности
> 2)Придумал, как сохранить оклюдеры, чтобы в их областях ничего не маршилось
> 3)Качество, что 1/4 что 1/6 - почти одинаковое, по крайней мере, я не вижу
> разницы
> 4)FSR, само-собой, прикручен
> 5)Пофиксил артефакты даунскейла

как делать каждый из пунктов "ты должен понимать сам", это азы
не понимаешь - значит знаний по теме нет, и объяснение/код каждого из пунктов не даст ничего
начинай с азов 3д графики если не понимаешь как это сделать исходя из этого текстового описания

/A\
а потом и выходит что берут Юнити и вешают волуметрик шейдеры на сферу вокруг игрока... и 3090 RTX дает 20фпс в 720п
исходники "волуметрик облоков" ничего не объясняют и ничему не учат

#28
20:40, 20 фев 2022

Ivashka
> Target
> А можно ссылочки из которых черпал необходимую инфу для создания.
Все подряд, всю информацию, что нашел, попробовал заюзать

Есть кстати ещё такой подход для оптимизации: два буфера, но рендерим через несколько пикселей (bayerFilter), а потом смешиваем предыдущий с текущим кадром учитывая смещение, оно так быстрее конечно же, но если слишком динамично или быстро - то заметно будет. Хз, мб есть ещё какие то варианты ускорения. Кстати насчёт SDF'а, можно предрасчитывать в 3d текстуру все данные, не только где находится и на каком расстоянии плотность, но и освещение) В прочем об этом fewes в своем блоге и написал, только я не сразу прочёл все что он написал там)

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

#29
21:03, 20 фев 2022

Target
Я хотел вместо SDF использовать геометрию и для нее хранить кусок 3д текстуры с предрасчитанным освещением, а более детальное уже при маршинге досчитывать. К тому же для длинных теней, когда солнце на закате можно только геометрию рисовать и блурить. Это должно хорошо работать для небольших облаков.
Еще у облаков сверху плотность ниже и они более рассеяные, ни разу не видел чтоб кто-то это учитывал.

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

Тема в архиве.