Unigine valley benchmark что это за программа
Перейти к содержимому

Unigine valley benchmark что это за программа

  • автор:

Unigine valley benchmark что это за программа

Внимание!
Регистрация на сайте и вход осуществляются через конференцию.

Для регистрации перейдите по ссылке, указанной ниже. Если у вас уже есть аккаунт в конференции, то для доступа ко всем функциям сайта вам достаточно войти в конференции под своим аккаунтом.

Ограниченный доступ

Данный сервис работает пока только для зарегистрированных пользователей.
Регистрация займет у вас всего 5 минут, но вы получите доступ к некоторым дополнительным функциям и скрытым разделам.

Что вы не знали о бенчмарках от UNIGINE: 8 малоизвестных фактов

Что вы не знали о бенчмарках от UNIGINE: 8 малоизвестных фактовSanctuary (2007<br />» /><img decoding=Что вы не знали о бенчмарках от UNIGINE: 8 малоизвестных фактовЧто вы не знали о бенчмарках от UNIGINE: 8 малоизвестных фактовЧто вы не знали о бенчмарках от UNIGINE: 8 малоизвестных фактов Что вы не знали о бенчмарках от UNIGINE: 8 малоизвестных фактов

Музыкальное сопровождение в сказочном Heaven сильно отличается от научно-фантастического Superposition, а в Valley и вовсе играет мелодия, подчеркивающая красоту природы. Несмотря на большую разницу между саундтреками бенчмарков, все их написал один человек — композитор и диджей Михаил ‘Paralyzah’ Кондратьев.

Михаил работает в нашей компании на должности инженера по контролю качества (QA Engineer), а в свободное время занимается музыкой. У Михаила есть релизы на российских и зарубежных лейблах, в основном в жанре drum’n’bass. Ознакомиться с творчеством Paralyzah можно на Spotify и Apple Music.

Кроме саундтреков для бенчмарков, Михаил написал музыкальное сопровождение для нашей игры Oil Rush, упомянутой ранее.

Сорок миллионов — число немаленькое. Скорее всего, многие из читателей этого портала пользовались нашими бенчмарками. Расскажите в комментариях, как вы познакомились с тестами производительности от UNIGINE и какой из них ваш любимый! Будем рады любым вопросам и пожеланиям.

Какой бенчмарк от UNIGINE выбрать

Какой бенчмарк от UNIGINE выбратьКакой бенчмарк от UNIGINE выбратьКакой бенчмарк от UNIGINE выбратьКакой бенчмарк от UNIGINE выбратьКакой бенчмарк от UNIGINE выбрать Какой бенчмарк от UNIGINE выбрать

Формально лучше всего для тестирования видеокарт подойдет наш самый новый бенчмарк — Superposition. Но он достаточно много «весит» (1276 Мбайт) и избыточен для бюджетных или старых видеокарт, а также для графических ядер, интегрированных в процессор (для них подойдет разве что пресет Low). Зато позволит понять, как ваша видеокарта справится с современными играми. А если вас интересует быстрый стресс-тест на стабильность — используйте Heaven или Valley.

Применение процедурных генераторов в создании контента для real-time 3D приложений: Часть 2. Valley Benchmark

Это вторая и заключительная часть статьи, посвященной процедурным методам производства контента для 3D приложений. Первую часть Вы можете найти здесь.

В этой части, так же как и в предыдущей, приводятся ссылки на скачивание созданных нами исходных материалов, которые можно свободно использовать (с изменениями или без) в своих проектах, но только не продавать/распространять в чистом виде и/или в составе каких-либо библиотек.

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

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

То, что у нас получилось, Вы можете оценить здесь, бесплатно скачав бенчмарк или же просто просмотрев видеоролик:

Итак, при работе над этим проектом перед нами стояла задача создания максимально реалистичной сибирской горной долины размерами 8 на 8 километров с большим разбросом масштабов создаваемых объектов (от горы до цветка на лугу) и высоким уровнем детализации.

  1. меши и текстуры камней, деревьев, травы, цветов и т.д.
  2. ландшафт (и маски распространения по нему различных объектов)
  3. текстуры для специфических эффектов, некоторых природных явлений и объектов
  • текстур облаков
  • текстур мха
  • эффекта пыли от ветра
  • эффекта светящейся пылевой взвеси
  • эффекта грязной линзы (Lens Flares Dirt)

Облака

Billboard clouds в бенчмарке Valley

В движке Unigine есть инструменты для симуляции как физически корректных динамически изменяющихся облаков (physically-based volumetric clouds), так и создания статичных облаков нужной формы в требуемых местах (billboard clouds).

Инструмент для создания billboard clouds позволяет формировать массив billboard’ов (billboard — полигон, который всегда направлен в камеру) случайным образом, заполняя ими исходный габаритный меш (bound mesh) по заданным параметрам (например, таким как количество, базовый размер, разброс размера), и в дальнейшем манипулировать всеми параметрами вплоть до изменения позиции любого отдельного billboard’а.

Настройка параметров объекта Billboards в движке Unigine

Чтобы превратить полученный массив полигонов в облака, на него назначается специальный материал, учитывающий освещение от глобального источника света (солнца), а также рассеивание света (light scattering). В этом материале назначается диффузная текстура, состоящая из нескольких отдельных полупрозрачных фрагментов облака, которые случайным образом назначаются каждому отдельному billboard’у.

Диффузная текстура фрагментов облака была создана процедурными средствами редактора Filter Forge.

Меш, в объёме которого генерируются billboard’ы облака (сверху) и диффузная текстура облаков (снизу)

Мох на камнях

Мох на камнях в бенчмарке Valley

Для создания мха на камнях в Unigine используется специальный материал, который позволяет комбинировать 2 материала, один из которых проецируется на второй по маске в world space.

Параметры материала мха

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

Форму фрагментов мха определяют две текстуры — грубая, но уникальная для всей поверхности ландшафта маска и детальный, но повторяющийся (из-за тайлинга) альфа-канал диффузной текстуры. Эти два исходных значения прозрачности перемножаются, и в итоге получается детализированный уникальный рисунок мха в каждой точке поверхности.

Все текстуры (включая карту нормалей) и маска для этого природного объекта были сгенерированы в Filter Forge.

Diffuse (сверху), normal (посередине), irregularity (снизу) текстуры мха

С помощью этого материала также легко можно симулировать ржавчину, коррозию или плесень на объектах.

Lens Flares Dirt

Эффект Lens Flares Dirt в действии

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

Необходимую текстуру для этого эффекта проще и удобнее было реализовать средствами Filter Forge, что и было сделано.

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

Ландшафт

  • создавать пригодные для рендеринга в реальном времени ландшафты сколь угодно больших размеров (такие возможности помимо инструментария даёт реализованная в движке асинхронная подгрузка данных)
  • процедурно распределять массивы объектов на ландшафте по маскам
  • формировать облака, звёзды, дождь, океан, настраивать атмосферные эффекты (atmospheric light scattering) и т.д.

Ландшафт в движке Unigine представляет собой объект, динамически изменяющий уровень детализации своей сетки и текстур в зависимости от степени удалённости камеры для оптимальной производительности при большой дальности видимости (более 40 километров).

Объект ландшафта с динамически изменяемой детализацией

  • карта высот (height map) — 16-битная grayscale текстура, которая описывает рельеф (высоту каждой точки ландшафта)
  • диффузная карта (diffuse map) — текстура, которая определяет базовый цвет
  • маска материалов — текстура, которая определяет области детализации тем или иным материалом (см. ниже)

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

Для создания перечисленных выше исходных текстур существуют свои специализированные программы-генераторы ландшафтов. Одной из таких программ является World Machine.

World Machine

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

  • создание базовых текстур ландшафта
  • создание масок детализации ландшафта и масок распространения объектов
  • создание диффузной текстуры ландшафта

Создание базовых текстур ландшафта

Граф в World Machine, которым формируются все основные текстуры ландшафта

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

Ближе к впадинам преобладает холмистый характер поверхности, который воссоздаётся расширением областей вокруг гор фильтром (а в терминологии World Machine — устройством) Expander:

Далее к полученным холмам добавляются мелкие детализированные скалы — остатки гор после эрозии:

Устройством Terrace добавляются уступы, затем зашумляются для устранения регулярности эффекта и ограничиваются по высоте и углу поверхности:

Добавляется эрозия. Это самое значимое устройство в World Machine, которое предназначено для симуляции процессов разрушения и смещения грунта под воздействием воды, ветра и температуры. Без него весь ландшафт оставался бы просто далёким от реальности набором смешанных процедурных шумов.

Добавляются волнообразные смещения грунта. Под воздействием гравитации и процессов эрозии грунт стремится сползти с наклонных поверхностей к низинам, но из-за большого числа находящихся в нём корней деревьев и растений это сползание происходит целыми массивами, что визуально проявляется через складки на поверхности земли. Сформировать и отработать этот эффект более детально в World Machine помогает возможность производить вычисления результата только указанного участка ландшафта (через установку нужных Extents):

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

Полученные на данном этапе результаты растеризуются средствами World Machine и сохраняются в файлы. В итоге получается карта высот, карта эрозии и карта толщины снежного покрова.

Карта высот (сверху), карта эрозии (посередине), карта толщины снежного покрова (снизу)

Создание масок детализации ландшафта

  • снег (snow mask)
  • камни (boulders mask)
  • трава (grass mask)
  • скалы (rock mask)
Граф в World Machine, которым формируются все необходимые маски

Маска снега
Маска снежного покрова на поверхности ландшафта

Маска снега формируется таким образом, что интенсивность исходной карты толщины снежного покрова определяет размеры и количество кусков снега (чем темнее пиксель исходной текстуры — тем меньше количество кусков и их размер).

Маска камней
Маска распространения камней на поверхности ландшафта

Карта эрозии показывает, как стекают потоки разрушенного эрозией грунта. Для получения маски камней из неё убираются места с большим наклоном поверхности ландшафта (как правило, камни на таких поверхностях не задерживаются) и убираются области с малым наклоном на низких высотах (в этих местах доминирует мелкая осадочная порода, грунт и почва).

Маска травы
Маска распространения травы на поверхности ландшафта

Для этой маски исключаются высоты с которых уже начинается снежный покров.

В природе трава растёт на почве, которая в свою очередь не задерживается на скалистых и крутых поверхностях — соответственно, из карты высот исключаются места с большим наклоном.

Из карты эрозии получается информация о местах сползания осадочной породы. На определённых высотах, где эта порода более активна (скатывающиеся и сползающие валуны), трава растёт менее активно. Всё это также учитывается при формировании маски распространения травы.

Маска скал
Маска скальной поверхности на ландшафте

Карта скал получается исключением всех остальных масок.

Создание масок распространения объектов

Маски деревьев
Маска распредления елей на поверхности ландшафта

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

Все маски деревьев являются взаимоисключающими, чтобы было чёткое разделение зон леса. Небольшие пересечения встречаются только в смежных областях.

В результате получаем маски, по которым можно расположить 4 типа деревьев: ель (spruce), мёртвая ель (spruce dead), сосна (pine), берёза (birch).

Маски цветов
Маски распределения ромашек (сверху) и кипрея (снизу) по ландшафту

Маски ромашек (camomile) и кипрея (blooming sally) получаются простым добавлением процедурного шума в маску травы.

Маски кустарников
Маска распределения кустарников на ландшафте

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

Камни

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

Создание диффузной текстуры ландшафта

Граф в World Machine, которым формируется диффузная текстура ландшафта

Текстура цвета создаётся комбинированием полученных на предыдущих этапах масок. Смешиваются различные цвета, добавляются шумы.

Так, например, добавляется два вида травы — зелёная и сухая. Зелёная трава преобладает в низинах, сухая — на вершинах холмов. Для того чтобы сделать ландшафт визуально темнее под лесом, на него накладывается маска деревьев.

Если потребуется — производятся необходимые доводки цвета в Photoshop или GIMP.

Полученная диффузная текстура ландшафта

Расстановка объектов по маскам

Настройка параметров объекта MeshClutter

После того, как получены все необходимые текстуры и маски, сгенерирован ландшафт, настроены все необходимые материалы, остаётся только распространить по нему все подготовленные объекты (деревья, камни, траву, цветы и кустарники).

Сложно даже представить, сколько бы времени заняла расстановка такого огромного количества мелких (в сравнении с ландшафтом) объектов вручную. Поэтому, для экономии времени и оптимизации рендеринга в движке Unigine был создан специальный объект MeshClutter, который даёт возможность псевдослучайным образом распространять объекты на ландшафте по исходной маске и, например, таким параметрам как плотность, случайный разброс углов поворота объектов, их масштаба, что в результате позволяет добиться желаемого эффекта неоднородности.

Особенно стоит обратить внимание на то, что распределение объектов в этом случае псевдослучайно — то есть при одних и тех же значениях параметров (и одинаковом значении seed) для двух разных генераторов создаваемые ими объекты всегда будут расположены в одних и тех же местах. Таким образом достигается ещё и детерминированность получаемого результата.

Выводы

World Machine

Достоинства
  • Кэширование результатов вычислений. При изменениях графа не происходит перерасчёт узлов, на которые эти изменения не повлияли. Это очень удобно и сильно экономит время создания нового контента.
  • Наличие output ноды, которая позволяет выводить в файлы любое количество просчитываемых текстур из любого места графа и пересохранять их по нажатию одной кнопки.
  • Возможность тайлового просчёта больших текстур (tiled build). При этом текстуры рендерятся фрагментами, благодаря чему появляется возможность распараллеливать рендеринг (задействуется многоядерность) и оптимально использовать занимаемую память. Однако не стоит забывать о том, что алгоритм эрозии в этом случае просчитывается симуляцией отдельно для каждого тайла, а не для всей поверхности ландшафта, и склеивание получившихся тайлов текстуры эрозии осуществляется перекрытием их смежных областей.
  • Достаточный набор устройств (базовых блоков которыми создаётся алгоритм по которому формируется ландшафт), для реализации практически любых алгоритмов построения ландшафта.
  • Есть возможность группировки частей графа для создания новых устройств с целью их дальнейшего переиспользования, но, к сожалению, отсутствует инстансинг — вставленные таким образом устройства будут являться копиями.
  • Возможность точного расчета только заданного фрагмента ландшафта. Сильно экономит время при работе над детализацией выбранных участков.
Недостатки
  • Огромное количество проблем при работе с большими объёмами исходных данных (как векторных, так и растровых) и ландшафтами больших размеров. Например, при открытии вектора с данными береговой линии (в несколько тысяч точек) — FPS в редакторе стремится к нулю.
  • Поведение алгоритма эрозии (блока Erosion Device) зависит от финального разрешения ландшафта.
  • Отсутствие инструментов для создания горных рек. Вырезание ландшафта по сплайнам под реку без применения эрозии даёт нереалистичный результат. Если же применять эрозию, то в некоторых местах реку может засыпать поперёк.
  • Отсутствие возможности изменить или отключить интерполяцию исходных текстур.
  • Некоторые мелкие, но очень неприятные недоработки редактора. Например, такие как невозможность задания цифровых значений цвета в устройстве Colorizer (это можно сделать только визуально), использование int вместо float для некоторых параметров и непонятные ограничения в диапазонах значений параметров.

Процедурные генераторы

Главной идеей развития всех процедурных генераторов в идеале должно стать стирание грани между 2D и 3D, ведь 2D — это лишь частный случай 3D.

  1. создавать алгоритмы формирования трёхмерных объектов (вокселями)
  2. создавать свои собственные алгоритмы запекания текстур и легко перестраивать их под свои нужды

В таких программах, как 3DS MAX или Substance Designer, есть возможность запекать некоторые карты с моделей, но все они рендерятся зашитыми в программу алгоритмами, которые никак нельзя изменить, и нет возможности создать новые. Надежду подаёт недавно начавшееся внедрение AngelSript в 3D-Coat, но ещё непонятно, к чему хочет привести его автор.

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

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

Полезные ссылки

  • Движок Unigine, использованный для игры Oil Rush и бенчмарка Valley
  • Valley Benchmark
  • Процедурный генератор Filter Forge
  • Процедурный генератор ландшафтов World Machine
  • Quad Software Grome Editor
  • Planetside Software Terragen
  • GPU-driven генератор ландшафтов Litosphere
  • Voxelogic Acropora procedural voxel modeler
  • 3d
  • unigine
  • game development
  • процедурная генерация
  • proceedural textures
  • valley benchmark
  • filter forge
  • substance designer
  • world machine
  • текстуры
  • photoshop
  • 3D-Coat

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *