Pull to refresh

Comments 11

Очень не хватает видео. Вот честно, не первый раз уже рассказывают на хабре о крутых эффектах, но не показывают видео, а в статике оценить их сложно.

P.S. Одна и та же картинка два раза — гениально. И еще: зачем такие детализованные снежинки? Будто бы есть время их рассматривать. И смотрятся они неествественно на картинке с текстурами такого низкого качества.
Очень не хватает видео. Вот честно, не первый раз уже рассказывают на хабре о крутых эффектах, но не показывают видео, а в статике оценить их сложно.

Ну это же не реклама эффекта, а рассказ о самом принципе реализации.
Есть старое видео, оно слишком низкого качества и в статью я его пихать по этой причине не буду:

Новое видео я сделать не могу, потому что проект в рамках которого все это делалось сейчас продолжается без меня и пользоваться их инструментами я не имею возможности.

Одна и та же картинка два раза — гениально.

Исправлено.

зачем такие детализованные снежинки?

Собственно, почему нет?

И смотрятся они неествественно на картинке с текстурами такого низкого качества.

В проекте сделан один вид снежинок для всех локаций, независимо от качества самих локаций. Естественно, никто не стал делать два вида снежинок: для детализированных локаций и для не детализированных. :)
Спасибо, очень занимательно.
Наивысшая оценка, 10 фпс из 10!
Ой. Спустя много лет наткнулся на ваш коммент и таки решил ответить.
FPS отсутствует в этом видео. Потому что зщахват из редактора, который не рендерит ничего в реальном времени, а перерисовывает кадры по событиям. Например, при движении мышки. Отсюда и фризы. Мышка не движется — кадры не рендерятся. Сама техника дешевая. Дешевле не бывает.
К сожалению, эффективное решение данной проблемы мне не известно.


На самом деле — пересечение с геометрией дело тривиальное, рисуем (hardware z-buffer) или запекаем всю сцену с ортографической проекцией (можно даже low-res) и с помощью Compute-шейдеров независимо обрабатываем каждую частицу, если пересеклась — просто сбрасывать позицию (UAV'ы позволяют одновременно писать в буфер и читать, думаю в OGL есть подобное). Вершины рисовать вообще без Vertex/Index-буферов, основываясь только на структурных буферах (аналоги и в OGL есть) и кол-ве частиц.

Даже 25000 частиц в каждом кадре – это ощутимая нагрузка.


Да бросьте :) В 2012-ом/2015-ом году?
На самом деле — пересечение с геометрией дело тривиальное, рисуем (hardware z-buffer) или запекаем всю сцену с ортографической проекцией (можно даже low-res) и с помощью Compute-шейдеров независимо обрабатываем каждую частицу, если пересеклась — просто сбрасывать позицию (UAV'ы позволяют одновременно писать в буфер и читать, думаю в OGL есть подобное). Вершины рисовать вообще без Vertex/Index-буферов, основываясь только на структурных буферах (аналоги и в OGL есть) и кол-ве частиц.

Значительное усложнение расчетов. Даже если и не с точки зрения вычислительной мощности, то с точки зрения реализации.

Да бросьте :) В 2012-ом/2015-ом году?

Вы из контекста выдрали. :)
Речь не о 25 000 пустых квадов. Речь о 100% физической симуляции. И 100% физическая симуляция 25 000 снежинок с учетом завихрений и пересечений — это и сейчас неподъемная задача.
Не говоря уж о том, что не только о ПК речь.
100% физическая симуляция одной снежинки невозможна (пока компьютеры не будут способны обсчитывать квантовую физику с бесконечной скоростью), а вот с некоторыми допущениями — пфф, если речь не о айпадах и прочем, то 25 000 с уравнениями вида am = gm + Fa (в векторной форме, где Fa — аэродинамическая сила) считать как нечего делать. vimeo.com/94622661 и соседние видео — там мало того, что физическая модель сложнее, так еще ищется столкновение большого числа частиц. В вашем случае этим можно пренебречь.

С другой стороны, я согласен — еще снежок будет отъедаться половина мощностей — не очень хорошо. Но когда снег пролетает сквозь крыши, дождь не меняет интенсивность вне зависимости от того, под деревом с листвой стоишь или на чистом поле в 2015 году смотрися крайне низкокачественно. А если погодные эффекты не для галочки, а действительно создают атмосферу игры, можно и постараться учеть потоки воздуха, ветер, завихрения, особенно от движущихся объектов. Оно того будет стоить.
В вашем случае этим можно пренебречь.

А я о чем?
Вся суть обсуждаемого абзаца в двух словах: «считать честно — это дорого и не нужно».

Но когда снег пролетает сквозь крыши

А он не пролетает. Он появляется из стены.
Кстати, сейчас малость подумал — решение добавил в статью.

дождь не меняет интенсивность

Во-первых этого никто не заметит. Тут можно привести пример с воротами из Silent Storm.
Во-вторых уменьшение количества частиц в зависимости от зоны — не проблема.
Значительное усложнение расчетов. Даже если и не с точки зрения вычислительной мощности, то с точки зрения реализации.


Тут нет никаких проблем в вычислительной мощности, подобные расчеты без проблем реализуются даже на low-end игровых карточках. А сложность реализации на уровне создания обычного point-shadow источника света.

снежинок с учетом завихрений и пересечений

Пересечений снежинок друг-друга да, неподъемная, ибо очень плохо ложиться на параллелизм GPU, да они и не нужны. С пересечением геометрией все просто. Решение задачи завихрений в векторном виде — проблем никаких не создает.
Sign up to leave a comment.

Articles