Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / 3d Clouds

3d Clouds

WerqПостоялецwww7 дек. 201717:14#0
Всем привет!
Делаю облака, возникли некоторые проблемы, прошу помощи.
Форму генерирую шумом Перлина. Получаю набор вершин, затем скармливаю их движку, генерирую из них билборды, после чего применяю к ним текстурку части облака.
блендмод = { One, OneMinusSrcAlpha }
Вот какая получается форма
+ Показать

вот так они выглядят с одной стороны(вполне себе правильно)
+ Показать

а вот так выглядят с другой стороны
+ Показать
, просвечивают себя , собственно первый вопрос как от такого избавиться?
а вот так они выглядят когда включен запись в глубину
+ Показать

пытался делать сортировку, но тогда фпс падает до 0,6.

Правка: 7 дек. 2017 17:18

WerqПостоялецwww7 дек. 201717:49#1
glasm
билборды на gpu геометрическим шейдором
вообще делал каждую секунду сортировку
сортировал С++ функцией sort
возможности сохранить массивов думаю нету, слишком много памяти будет занимать
Battle Angel AlitaПостоялецwww7 дек. 201718:28#2
Делай OIT, сортируй на гпу, делай тайловые частицы.
агрессорПостоялецwww7 дек. 201720:34#3
Werq
где планируешь использовать (летать через них на ЛА, или просто с земли созерцать их)?
как планируешь бороться с недостатками выбранного подхода?
barnesПостоялецwww7 дек. 201721:45#4
По поводу облаков. Есть старый скайбокс (вторая квака), который неплохо разнообразить таким. Скорее всего эдакие перистые облака и их созерцания сугубо снизу)) По освещению там вопросов даже нет, будет вертекс колор, хотя можно сделать псевдо ссс. А вот по генерации что-то подскажете?
SuslikМодераторwww8 дек. 20173:57#5
Werq
> пытался делать сортировку, но тогда фпс падает до 0,6.
ну а ты как думал? в сортировке же вся суть, иначе бы все так делали. делать кучу билбордов в таком случае — жуткий overdraw, да ещё и сортировать надо. такое обычно рендерят volume rendering'ом через raymarching трассировку 3д шума в шейдере — это гораздо быстрее, но всё равно имеет ограниченную область применимости из-за производительности.

Правка: 8 дек. 2017 3:57

WerqПостоялецwww8 дек. 201715:01#6
агрессор
летать через них)
GrobozavrПостоялецwww11 дек. 201711:48#7
Suslik
Игрался с ray marching облаками. Вроде при грамотном подходе можно получить вполне приличный фпс и качество (собственно вдохновлялся описанием системы облаков из horizon zero down)
Правда заставить это работать быстро не удалось. Либо быстро, либо красиво (условно. красиво там тоже сложно получить). Хотя и тестил на встроенной древней интеловской видяхе, так что мож и норм :) Ну и если тупо ронять разрешение облаков и блюрить - то по скорости можно даже без заморочек что-то получить. Репроекцию как в оригинале я не осилил. В шейдерах пока нуб. :(
Была мысль рендерить на скайбокс с глубиной. При малой скорости перемещения могло и проктаить, но до опытов не дошел.
Ну и совмещать с остальным рендером немного муторно.
SuslikМодераторwww11 дек. 201711:52#8
Grobozavr
да, всё правда. могу только ещё посоветовать использовать integral precomputation — это полуаналитический метод, который записывает в 3д текстуру результаты предрасчёта для каждого шага численного интегрирования, что очень сильно улучшает качество и позволяет интегрировать с большим шагом. правда, есть ограничния — например, нельзя без боли облака делать цветные.

Правка: 11 дек. 2017 11:52

GrobozavrПостоялецwww11 дек. 201713:49#10
Suslik
Не силён в матане. Я в итоге сделал аналог SDF (т.е. шаг переменный от плотности). Результат неоднозначный. В зависимости от обстоятельств производительность либо падает, либо сильно растёт. Впрочем примерно где и как - понятно. Если луч идёт по границе облака - то всё печально. Если делать облака тун-шейдером и непрозрачные - то вполне бодро работает :)
агрессорПостоялецwww11 дек. 201714:47#11
забавно. тоже когда-то делал по sdf. по пустотам луч летает, а на границах "прилипает". оптимизаций для "отлипания" так и не придумал.

Suslik
> правда, есть ограничения — например, нельзя без боли облака делать цветные.
подробней, что ты имеешь ввиду?

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

2001—2018 © GameDev.ru — Разработка игр