Как стать автором
Обновить

Реализация физически корректных объемных облаков как в игре Horizon Zero Dawn

Время на прочтение 16 мин
Количество просмотров 16K
Всего голосов 42: ↑40 и ↓2 +38
Комментарии 18

Комментарии 18

Каждая грань кубической карты делится на тайлы размером 8х8. Каждый кадр на каждой грани обновляется только один из 64 пикселей в каждом тайле.
Тоже была подобная мысль, но доделать руки не дошли. Не совсем понятно, в этом случае учитывается перекрытие облаков статикой или рисуется всё небо целиком?
Все небо рисуется целиком.

Отличная работа!

Когда я делал подобные облака, то искал наиболее реалистично выглядящий метод расчета цвета неба. Нашел вот такой: github.com/wwwtyro/glsl-atmosphere, и с некоторыми твиками (синий канал умножен на 3.0, зеленый на 1.75) он наиболее точно соответствует небу, которое я вижу за окном.
А облака вот такие получились

Что-то такое ребята из xEnviro делают для X-Plane 11

А теперь посмотрите как облака эволюционируют (просто выгляните из окна пока чай заваривается и увидите, что внутри облака какие-то движения идут, облако растёт, рассыпается), а потом откройте ютуб и посмотрите как облака обтекают горы… Короче — для приличной симуляции неба ресурсов видеокарты ещё долго не хватит и имхо — лучше не придумывать свои велосипеды, а научиться записывать как ведут себя реальные облака, а потом проигрывать их эволюции на движке игры. Всем ведь больше нравится картинка в дороге ярости, а не в хоттабыче.
Перед тем как писать эту статью, мог бы сначала разобраться в сабже или спросить у тех, кто разбирается в нём, потому что такой бред еще выдумать стоит.
P.S. Нашёл минимум 10 расхождений в статье с тем, что называется «физически корректный» рендер неба и облаков.
Угу, че не 100? Продолжай поиски, докладывай о новых количествах.

Вот тут вы зря огрызаетесь:)
Товарищ Fatigue прав, ваши облака не являются визически корректными хотябы потому что они не учитывают multiple scattering.


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

Товарищ Fatigue в первую очередь ведет себя как закомплексованный клоун, который хочет чтобы его похвалили, поэтому ответы получает соответствующие. Да, multiple scattering я не цеплял, потому что результат мне показался достаточно хорошим без этого. Но я не вижу большой проблемы: Frostbite ссылается на аппроксимацию, где для решения складывается несколько октав magnuswrenninge.com/wp-content/uploads/2010/03/Wrenninge-OzTheGreatAndVolumetric.pdf

Оригинальной статьи как-бы нет.

Товарищ Fatigue безусловно неправ в своем тоне.


Оригинальной статьи как-бы нет.

Простите, я подумал, что вы преимущественно опираетесь на эту презентацию.

Презентации Guerilla Games — это самое популярное и доступное что есть по теме, но если вы откроете свою ссылку, то увидите, что там практически нет формул и мало что подробно разжевывается. С этих презентаций я начинал, но далее брал информацию из других источников, в том числе из документации Frosbite и книги Physical Based Rendering (автор Matt Pharr).
Я Вам открою маленький секрет — нету нигде «физически корректного» рендера. Все что называют «физически корректным» — на самом деле все равно апроксимация, просто лучшая, чем другие. Так что полная идентичность с учебником никого не интересует — главное картинка.
Я тоже вам открою секрет — «физически корректный» и «физически точный» рендер это совсем разные понятия. И в первом случае допускается использование аппроксимаций, типа фазовой функции Henyey-Greenstein. И открою ещё один секрет — чем ближе к учебнику, тем лучше картинка.

P.S. И если уж вам очень интересно, то есть целые книги, посвящённые «физически корректному» рендеру.
Во-первых, «лучше» — это не такое уж простое понятие, особенно в геймдеве. Во-вторых: как Вы верно заметили, корректный — это не точный. Так а если не точный — разве может быть единственное корректное решение? Сколько в мире физически корректных рендер-движков — по-Вашему, математика везде абсолютно идентична?
Так что если уж хотите по-критиковать — укажите на явные огрехи в изображении. А формулы по книжкам никто сверять не станет.
Сколько в мире физически корректных рендер-движков — по-Вашему, математика везде абсолютно идентична?

Представьте себе, но как правило, математика везде одинаковая. Хотите увидеть явные огрехи в изображении — поищите в гугле фотографии неба с облаками и сравните. Я думаю, этого будет достаточно, чтобы признать, что выглядит оно вовсе не «физически корректно». А такие как я, которые занимаются этим, легко обнаружат проблему и место, где неправильно происходят вычисления, без «сверки с учебником».
Мне представлять ни к чему, я имел дело с двумя физически корректными движками с разной математикой. И это вполне нормально, учитывая, что требования к ним очень разные.
На счет загуглить фотографию — можно загуглить фотографию чего угодно, и обнаружить, что «физически корректный» рендер выглядит не совсем «физически корректно».
И на счет «таких как Вы, которые занимаются этим» — исходя из моего опыта общения с людьми, за которых Вы себя выдаете — обычно они не хвастаюся буквоедством и не посылают читать матчасть, а показывают пальчиком на конкретную ошибку (да-да, именно на ту, о которой я постоянно у Вас спрашиваю). Так что может знаний у Вас и хватает, но над навыками общения нужно основательно поработать.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории