Обновление местности 2018.3: Начало работы

CHRIS TCHOU / UNITY TECHNOLOGIESContributor
Oct 10, 2018|5 Мин
Обновление местности 2018.3: Начало работы
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Теперь у нас есть команда, занимающаяся рельефом, и наши первые усилия скоро будут доступны для общественности! Unity 2018.3 будет поставляться с обновлением системы рельефа. В этом обновлении улучшены инструменты и производительность за счет более эффективного использования возможностей графического процессора. Также добавлена поддержка конвейеров рендеринга HD и LW, при этом сохраняется обратная совместимость со встроенным конвейером рендеринга и существующей системой Unity Terrain.

Получите бета-версию Unity 2018.3 прямо сейчас, чтобы получить ранний доступ к обновлениям! Пожалуйста, имейте в виду, что пользовательский интерфейс и API могут быть изменены, так как бета-версия все еще находится в стадии активной разработки.

Производительность

Что касается производительности, то мы добавили путь рендеринга рельефа с поддержкой GPU. В большинстве случаев инстансирование позволяет значительно сократить число вызовов на розыгрыш. Во многих наших тестах затраты на процессор сократились более чем на 50 % (хотя, конечно, реальные цифры зависят от вашей платформы и условий использования). Вы можете выбрать этот новый путь рендеринга, включив опцию "Draw Instanced" в настройках Terrain:

Изображение

Если эта функция включена, Unity преобразует все тяжелые данные о рельефе, такие как карты высот и карты брызг, в текстуры на GPU. Вместо того чтобы создавать индивидуальную сетку для каждого участка местности на CPU, мы можем использовать инстансинг GPU для репликации одной сетки и выборки текстуры карты высот для получения правильной геометрии. Это на порядки снижает нагрузку на центральный процессор местности, поскольку несколько вызовов отрисовки заменяют потенциально тысячи отрисовки пользовательской сетки.

Как приятный побочный эффект, это также улучшает время загрузки! Мы не только можем отказаться от создания всех этих пользовательских сеток, но и использовать GPU для создания basemap (предварительно наложенной текстуры LOD); GPU гораздо быстрее справляется с такими задачами. Это также означает, что если у вас есть собственный шейдер местности, вы можете переопределить шейдер 'build basemap' и сгенерировать соответствующие LOD-текстуры basemap.

Визуальные эффекты местности

Инстансинг также улучшает внешний вид нормалей местности; мы отделяем нормали сетки местности от геометрии, сохраняя их в текстуре карты нормалей, которая генерируется из карты высот и сэмплируется в пиксельном шейдере. Это означает, что нормали не зависят от уровня LOD сетки. Следовательно, вы можете увеличить "коэффициент ошибок пикселей", чтобы уменьшить стоимость вершин, при этом артефактов будет меньше.

Изображение

Мы также разработали шейдеры местности для конвейеров рендеринга HD и LW, доступные в пакетах версий 4.0.0 и выше, с поддержкой инстансного рендеринга и попиксельных нормалей. HD-шейдер был усовершенствован для поддержки новых функций, таких как режимы наложения по высоте и плотности, масштабирование нормалей, металлизация и гладкость поверхности с контролем текстуры. Шейдер рельефа HD ограничен одним проходом, но поддерживает смешивание до 8 слоев рельефа за один проход.

Инструменты GPU с поддержкой сценариев

На стороне редактора мы открыли API сценариев для создания ваших собственных инструментов для работы с рельефом, а также набор функций, которые можно использовать для легкой реализации бесшовных операций скульптинга и рисования на GPU. Новый TerrainAPI включает TerrainPaintTool<T0>, базовый класс для инструментов рельефа, и TerrainPaintUtility, содержащий служебные функции для модификации данных рельефа.

Применив эти изменения, мы перевели все существующие инструменты для работы с рельефом на GPU. Помимо того, что эти инструменты стали работать гораздо быстрее, это также позволило увеличить размер кисти, улучшить предварительный просмотр кисти и возможность рисовать через границы тайлов местности с автоматическим сшиванием швов.

Изображение

Мы также начали экспериментировать с такими функциями кисти, как вращение и рандомизация кисти, и более продвинутыми инструментами рисования, такими как штамповка высот и сетки, кисти-клоны и многое другое. В настоящее время эти функции инструментов рисования отсутствуют в версии 2018.3, но мы делаем их доступными через наш проект Terrain Tools на GitHub.

Поддержка различных видов местности
Изображение

Мы упростили работу с несколькими плитками местности. Помимо бесшовного рисования между ландшафтами, теперь можно автоматически управлять связями между соседними ландшафтами. Раньше для этого требовалось написать сценарий, чтобы подключить соседей вручную.

Включите "Автоподключение" в настройках местности, и местность будет автоматически подключаться к своим соседям с тем же идентификатором группировки.

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

Изображение

Мы также работаем над тем, чтобы сделать изменение размера и разрешения менее разрушительным. В версии 2018.3 карты высот и карты брызг будут повторно дискретизироваться при изменении разрешения, а не так, как раньше, когда данные очищались и терялась вся работа. Мы работаем над тем, чтобы улучшить все операции по изменению размеров в ближайшем будущем.

Новые типы активов

Чтобы упростить рабочий процесс, мы также создали два новых типа активов, связанных с рельефом: актив TerrainLayer и актив Brush.

Изображение

TerrainLayer позволяет нам определять материалы местности независимо от объекта местности, чтобы мы могли легко отслеживать один и тот же материал на нескольких местностях. Это помогает бесшовно рисовать и изменять материалы. Мы также расширяем актив TerrainLayer для поддержки текстур типа "карта маски", которые можно использовать для произвольного затенения, и интерфейса сценария для создания шейдерно-зависимого пользовательского графического интерфейса для актива TerrainLayer.

Изображение

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

Мы также добавили в Unity поддержку формата текстур R16 (одноканальный 16-битный формат). Это позволяет нам избежать 8-битного квантования форм кисти, которое может вызвать нежелательные эффекты "террасирования" при использовании в качестве штампа высот.

Изображение

Наша команда по работе с местностью только начинает свою работу, и ее развитие продолжается. Пожалуйста, присылайте нам отзывы на форуме " Строительство мира"!