This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Оптимизация ландшафта

Landscape Terrain Optimization
Оптимизация Landscape Terrain#

Performance of the Landscape Terrain depends on the data streaming that lies behind its operation: only graphic data of areas that are visible by the camera at a moment is loaded and destroyed when it is no longer needed. Unoptimized streaming settings cause noticeable loading of areas when the camera moves.Производительность Landscape Terrain зависит от потоковой передачи данных, лежащей в основе его работы: загружаются только графические данные областей, видимых камерой в данный момент, и уничтожаются, когда они больше не нужны. Неоптимизированные настройки потоковой передачи вызывают заметную загрузку областей при движении камеры.

Visible streaming issues.Видимые проблемы с потоковой передачей.

The overall life cycle of graphic data can be thought of as follows:Общий жизненный цикл графических данных можно представить следующим образом:

  1. The system determines the tiles that are currently visible in the viewport, their spatial size and their highest available mip-level depending on the distance, terrain density limits and streaming settings.Система определяет тайлы, видимые в данный момент в окне просмотра, их пространственный размер и максимально доступный мип-уровень в зависимости от расстояния, ограничений плотности местности и настроек потоковой передачи.
  2. The required graphic data of requested tiles of base textures is loaded from .lmap assets in chunks of 128×128 pixels and cached in the RAM (CPU cache) to be used in intersection calculations and physics.Требуемые графические данные запрошенных тайлов базовых текстур загружаются из ресурсов .lmap кусками по 128×128 пикселей и кэшируются в ОЗУ (кэш ЦП) для использования в расчетах пересечений и физике.
  3. The acquired data is uploaded to the GPU and cached in the video memory, if necessary (GPU cache).Полученные данные загружаются в GPU и при необходимости кэшируются в видеопамяти (кэш GPU).
  4. The data of several Landscape Layer Maps (Albedo, Height and Mask textures) is blended according to the Blending Settings.Данные нескольких Landscape Layer Maps (текстуры Albedo, Height и Mask) смешиваются в соответствии с Настройки смешивания .
  5. The base textures are blended with textures of the details (if any).Базовые текстуры смешиваются с detail-текстурами (если таковые есть).
  6. The final textures for each of three Landscape Terrain components (Albedo, Normal and Height) are written into the Virtual Texture replacing the oldest chunks.Окончательные текстуры для каждого из трех компонентов Landscape Terrain (Albedo, Normal и Height) записываются в виртуальную текстуру, заменяя самые старые фрагменты.
  7. The result is rendered in the viewport with due regard for Adaptive Hardware Tessellation and displacement.Результат визуализируется во вьюпорте с учетом адаптивной аппаратной тесселяции и смещения.
  8. The textures are replaced by newer data in the cache when no longer needed.Текстуры заменяются более новыми данными в кеше, когда они больше не нужны.

The life cycle of Landscape Terrain graphic data.Жизненный цикл графических данных ландшафта Terrain.

Profiling
Профилирование#

The camera behavior in a project that utilizes a Landscape Terrain object plays an important role. A static camera implies a single load of data, provided all textures fit in the video memory. When the active camera significantly changes its position and orientation while unveiling unloaded areas, streaming may hit hard on performance. Therefore, performance and memory consumption should be considered and tuned for the final set of cameras and screen resolution of the target platform.Поведение камеры в проекте, использующем объект Landscape Terrain, играет важную роль. Статическая камера подразумевает однократную загрузку данных при условии, что все текстуры помещаются в видеопамять. Когда активная камера значительно меняет свое положение и ориентацию, открывая незагруженные области, потоковая передача может сильно сказаться на производительности. Поэтому производительность и потребление памяти следует учитывать и настраивать для конечного набора камер и разрешения экрана целевой платформы.

For convenient profiling, you can animate the camera movement via Tracker and run animations for tests.Для удобного профилирования можно анимировать движение камеры через Tracker и запускать анимации для тестов.

It is recommended to use the Microprofile tool for detailed in-depth estimation for the performance of a Landscape Terrain object.Рекомендуется использовать инструмент Microprofile для подробной всесторонней оценки производительности объекта Landscape Terrain.

Stages of Landscape Terrain operation in the output of the Microprofile tool.Этапы операции Landscape Terrain в выводе инструмента Microprofile.

By using the Rendering Performance Profiler, you can estimate the memory consumption.Используя Rendering Performance Profiler, вы можете оценить потребление памяти.

Landscape Terrain-related section of the Rendering Performance Profiler output.Раздел вывода Rendering Performance Profiler, относящийся к Landscape Terrain.

Hardware Recommendations
Рекомендации по оборудованию#

Streaming implies continuous data loading from disk storage. If your project requires a highly-detailed landscape of large size (several kilometers across), it is recommended to consider using an SSD as slower HDDs may not be capable of providing enough throughput capacity.Стриминг подразумевает непрерывную загрузку данных с дискового хранилища. Если для вашего проекта требуется высокодетализированный ландшафт большого размера (несколько километров в поперечнике), рекомендуется рассмотреть возможность использования SSD, поскольку более медленные жесткие диски могут не обеспечить достаточную пропускную способность.

At that, multi-core processors have an advantage here enabling you to distribute the load without bottlenecks.При этом многоядерные процессоры имеют здесь преимущество, позволяя распределять нагрузку без узких мест.

Landscape Layers
Ландшафтные слои#

The number and density of different Landscape Layer Maps that define the look of the terrain at the current moment is an important factor — multiple blended layers with high resolution textures might make a significant performance drop. In most cases it is reasonable to combine multiple textures into a single one in a raster graphics editor.Количество и плотность различных Landscape Layer Maps, которые определяют внешний вид ландшафта в текущий момент, являются важным фактором — несколько смешанных слоев с текстурами высокого разрешения могут привести к значительному падению производительности. В большинстве случаев имеет смысл объединить несколько текстур в одну в редакторе растровой графики.

Примечание
In contrast, you can use several Landscape Layer Maps that refer to the same .lmap asset without performance drop. You can create a Node Reference containing a Landscape Layer Map to propagate repetitive areas.Напротив, вы можете использовать несколько Landscape Layer Maps, которые ссылаются на один и тот же ресурс .lmap, без снижения производительности. Вы можете создать Node Reference, содержащий Landscape Layer Map, для распространения повторяющихся областей.

The Current Data Density value for a Landscape Layer Map is calculated based on its spatial size and the resolution of base textures used. It's hard to miss that a decent high-detailed landscape would require a texture tileset of an extremely large resolution.Значение Current Data Density для Landscape Layer Map рассчитывается на основе его пространственного размера и разрешения используемых базовых текстур. Трудно не заметить, что для приличного ландшафта с высокой детализацией потребуется набор текстур чрезвычайно большого разрешения.

Лучшая практика
Use base textures of Landscape Layer Maps to create a coarse look of the Landscape Terrain and refine the surface using details for high-detailed per-pixel quality.Используйте базовые текстуры Landscape Layer Maps, чтобы создать грубый вид Landscape Terrain и уточните поверхность, используя детали для высокой детализации попиксельного качества.

Also, the visibility of layers is taken into account — if a large Landscape Layer Map overlaps other layers (has a higher Order value), only its graphic data will be loaded and rendered.Также учитывается видимость слоев — если большой Landscape Layer Map перекрывает другие слои (имеет большее значение Order), то будут загружаться и рендериться только его графические данные.

A schematic representation of several Landscape Layer Maps overlapping each other.
The one with the higher Order value overlaps the other ones and only its data will be loaded and visualized.
Схематическое изображение нескольких Landscape Layer Maps, перекрывающих друг друга.
Тот, у которого значение Order выше, перекрывает другие, и только его данные будут загружены и визуализированы.

Streaming is based on using previously loaded geometry to define the visible areas of terrain. There is no loaded geometry at the very world startup, so the system looks for a Landscape Layer Map that has the Culling flag enabled and loads preliminary low-level data of this layer. If your world contains several layers, one of which represents the basic shape of the terrain, while others are used as insets placed within the bounds of the base layer and having an insignificant height difference from it, it is recommended for you to disable Culling for insets and enable it for the base layer. This is how you can reduce load on CPU at the world startup.Потоковая передача основана на использовании ранее загруженной геометрии для определения видимых областей местности. Загруженной геометрии при самом запуске мира нет, поэтому система ищет Landscape Layer Map с включенным флагом Culling и загружает предварительные низкоуровневые данные этого слоя. Если ваш мир содержит несколько слоев, один из которых представляет базовую форму местности, а другие используются как инсеты, размещенные в границах базового слоя и имеющие незначительное отличие от него по высоте, вам рекомендуется отключать Culling для инсетов и включать его для базового слоя. Таким образом можно уменьшить нагрузку на процессор при запуске мира.

Tiles Loading
Загрузка тайлов#

Each frame the Landscape Terrain system checks which tiles are to loaded and updated. Increase the Tiles Update Per Frame parameter to ensure that all necessary tiles are updated on time. However, if this value is too big, it may cause a performance drop during data streaming.В каждом кадре система Landscape Terrain проверяет, какие тайлы следует загрузить и обновить. Увеличьте параметр Tiles Update Per Frame, чтобы все необходимые тайлы обновлялись вовремя. Однако, если это значение слишком велико, это может привести к падению производительности при потоковой передаче данных.

The loading speed of chunks of graphic data depends on the Tiles Load Per Frame value. Higher values imply faster multi-threaded loading of tiles but more performance-consuming data streaming. Note that it is pointless to set this value higher than the Tiles Update Per Frame.Скорость загрузки чанков графических данных зависит от значения Tiles Load Per Frame. Более высокие значения означают более быструю многопоточную загрузку листов, но более требовательную к производительности потоковая передача данных. Обратите внимание, что бессмысленно устанавливать это значение выше, чем Tiles Update Per Frame.

Thus, it is necessary to find a trade-off when tweaking these parameters.Таким образом, необходимо найти компромисс при настройке этих параметров.

Use the Landscape Terrain VT Streaming helper (or the render_show_landscape_terrain_vt_streaming 1 console command) to enable visualization of tiles being streamed. In this mode colored areas show the tiles that are currently being rendered in a lower resolution until the highest mip-level is loaded and rendered. The faster the colored tiles disappear, the better.Используйте помощник Landscape Terrain VT Streaming (или консольную команду render_show_landscape_terrain_vt_streaming 1), чтобы включить визуализацию передаваемых тайлов. В этом режиме цветные области показывают тайлы, которые в данный момент рендерятся в более низком разрешении, пока не будет загружен и рендерится самый высокий мип-уровень. Чем быстрее исчезнут цветные тайлы, тем лучше.

The Landscape Terrain VT Streaming helperПомощник Landscape Terrain VT Streaming

Cache
Кэш#

The default values of the Cache settings are suitable for the most cases.Значения по умолчанию параметров Cache подходят для большинства случаев.

If you modify a layer map by using Brush Editor or your project implies run-time terrain modification, increase the GPU Cache Size limit and GPU Cache Life Time for better performance.Если вы модифицируете слой с помощью кистей или ваш проект подразумевает модификацию ландшафта во время выполнения, увеличьте лимит GPU Cache Size и GPU Cache Life Time для лучшей производительности.

When it comes to optimizing intersection and collision detection performed on the CPU side, increase the CPU Cache Size for better performance.Когда дело доходит до оптимизации обнаружения пересечений и столкновений, выполняемых на стороне ЦП, увеличьте CPU Cache Size для повышения производительности.

Run-Time Modification
Модификация в режиме реального времени#

When something changes a loaded area of the Landscape Terrain, the affected tiles are to be restreamed with the changes taken into account.Когда что-то изменяет загруженную область Landscape Terrain, затронутые тайлы должны быть повторно загружены с учетом изменений.

Increase the Tiles Reload Per Frame parameter—the number of reloaded tiles per each frame—to make the changes be committed faster.Увеличьте параметр Tiles Reload Per Frame — количество перезагружаемых тайлов на каждый кадр — чтобы изменения фиксировались быстрее.

However, be careful not to exceed the bandwidth of the system with too many tiles reloaded at the same time; otherwise, the performance may drop a lot. It is therefore very important to monitor the streaming settings and dynamics of layers and avoid per-frame changes of large areas that cause many tiles to reload.Однако будьте осторожны, чтобы не превысить пропускную способность системы при одновременной перезагрузке слишком большого количества тайлов; в противном случае производительность может сильно упасть. Поэтому очень важно следить за настройками потоковой передачи и динамикой слоев и избегать покадровых изменений больших областей, которые вызывают перезагрузку многих тайлов.

For more details, please refer to the Make It Run-Time section.Для получения более подробной информации см. Сделайте это во время выполнения раздел.

Details
Детали (Details)#

The Landscape Terrain enables you to add up to 1024 details to a mask making it possible to create a pretty detailed and diverse look of the landscape. In terms of optimization, minimizing the number of details and textures is a way to faster rendering.Landscape Terrain позволяет добавить до 1024деталей (details) к маске, позволяющей создать достаточно детализированный и разнообразный вид ландшафта. С точки зрения оптимизации, минимизация количества деталей и текстур — это способ ускорить рендеринг.

The textures of details are loaded at the world startup and kept in the video memory to be blended with the base textures of the Landscape Terrain when rendering. You can specify a lower resolution for the corresponding textures of all detail materials by tweaking the following parameters:Текстуры деталей загружаются при запуске мира и сохраняются в видеопамяти для смешивания с базовыми текстурами Landscape Terrain при рендеринге. Вы можете указать более низкое разрешение для соответствующих текстур всех материалов деталей, настроив следующие параметры:

Virtual Texture
Виртуальная текстура#

The final textures for tiles of the Landscape Terrain are written to the Virtual Texture components (Albedo, Normal and Height). Increase the Texture Memory Size value to ensure that the Virtual Texture provides enough capacity to store the loaded high-detail texture chunks.Окончательные текстуры для тайлов Landscape Terrain записываются в компоненты Virtual Texture (Albedo, Normal и Height). Увеличьте значение Texture Memory Size, чтобы гарантировать, что виртуальная текстура обеспечивает достаточную емкость для хранения загруженных фрагментов текстуры с высокой детализацией.

The components of the Landscape Terrain Virtual Texture.Компоненты виртуальной текстуры Landscape Terrain.

With a lower size the Virtual Texture requires less video memory but doesn't provide enough capacity to store all the required data resulting in poor performance, low detail level and fast flickering of the Landscape Terrain surface due to continuous reloading of tiles.Виртуальная текстура меньшего размера требует меньше видеопамяти, но не обеспечивает достаточной емкости для хранения всех необходимых данных, что приводит к низкой производительности, низкому уровню детализации и быстрому мерцанию поверхности Ландшафтного ландшафта из-за постоянной перезагрузки тайлов.

Rendering
Рендеринг#

Polygons of the Landscape Terrain surface are adaptively tessellated on the fly and displaced based on the Heightmap component of the Virtual Texture. The polygon mesh is split up to multiple levels of detail of various density depending on the distance from the camera. The Geometry settings provide much room for rendering optimization.Полигоны поверхности Landscape Terrain адаптивно тесселируются на лету и смещаются на основе компонента карты высот виртуальной текстуры. Полигональная сетка разделена на несколько уровней детализации различной плотности в зависимости от расстояния до камеры. Настройки Geometry предоставляют много возможностей для оптимизации рендеринга.

Levels of Detail of tessellated geometry.Уровни детализации мозаичной геометрии.

Pay attention to the following parameters:Обратите внимание на следующие параметры:

  • With lower values of Geometry Progression less polygons are generated at a distance.При более низких значениях Geometry Progression на расстоянии генерируется меньше полигонов.
  • By configuring the Geometry Polygon Size parameter you can define the minimum spatial size of polygons in case of excessive detail level.Настроив параметр Geometry Polygon Size, вы можете определить минимальный пространственный размер полигонов в случае чрезмерного уровня детализации.
  • Geometry Subpixel Reduction parameter determines the minimum ratio of polygon size (in the screen space) to the area seen in the viewport. This parameter enables you to quickly decrease the number of polygons or simply remove too small polygons that are barely visible, in order to increase performance.Параметр Geometry Subpixel Reduction определяет минимальное отношение размера полигона (в пространстве экрана) к площади, видимой в окне просмотра. Этот параметр позволяет быстро уменьшить количество полигонов или просто удалить слишком маленькие полигоны, которые едва видны, для повышения производительности.
  • Set a lower Visibility Distance to discard rendering of too remote polygons.Установите меньшее значение Visibility Distance, чтобы отказаться от рендеринга слишком удаленных полигонов.

You can decrease the maximum allowed level of detail for the albedo, normal and height textures of the Landscape Terrain by increasing the Texel Size parameter. Вы можете уменьшить максимально допустимый уровень детализации для текстур альбедо, нормалей и высот Landscape Terrain, увеличив параметр Texel Size.

Decrease Target Resolution—the resolution of the screen buffer for the Landscape Terrain renderer—to gain more performance at a cost of visual quality.Уменьшите Target Resolution — разрешение буфера экрана для средства визуализации Ландшафтного ландшафта — чтобы повысить производительность за счет визуального качества.

You can also reduce the detail level of polygons facing the camera at oblique viewing angles (Detail Level By Angle) to optimize streaming load and memory consumption.Вы также можете уменьшить уровень детализации полигонов, обращенных к камере под косыми углами обзора (Detail Level By Angle), чтобы оптимизировать нагрузку потоковой передачи и потребление памяти.

Different mip-levels of landscape textures are used at different distances. Switch to the Low or Medium Texture Filtering quality to improve performance at a cost of a slightly visible edge between adjacent mipmap levels.Используются разные мип-уровни ландшафтных текстур на разном расстоянии. Переключитесь на качество Low или Medium Texture Filtering, чтобы повысить производительность за счет слегка видимого края между соседними уровнями MIP-карты.

Culling Optimization
Оптимизация отсечения#

The polygons of the Landscape Terrain surface are subject to frustum culling optimization. If a polygon falls out of the camera frustum (i.e. its screen position is outside the viewport bounds), it is culled out for rendering. You can enable the Aggressive Frustum Culling mode that implies more strict requirements for polygons to be rendered and, therefore, higher performance.Полигоны поверхности Landscape Terrain подлежат оптимизации отсечения по пирамиде видимости. Если полигон выпадает за пределы пирамиды видимости камеры (т. е. его положение на экране выходит за пределы вьюпорта), он отсекается при рендеринге. Можно включить режим Aggressive Frustum Culling, который подразумевает более жесткие требования к отрисовке полигонов и, соответственно, более высокую производительность.

Tweak the Culling settings for more optimizations:Настройте параметры Culling для большей оптимизации:

  • Уменьшите значение Culling Frustum Padding, чтобы уменьшить размер области видимости.
  • Enable the Culling By Depth option to cull out more polygons occluded by geometry and the Landscape Terrain itself. Увеличьте пороговое значение Culling Back Face, чтобы отсечь больше полигонов, обращенных к косым углам камеры.
  • Increase the Culling Oblique Frustum multiplier to cull out more polygons beyond the oblique frustum plane. Увеличьте множитель Culling Oblique Frustum, чтобы отсеять больше полигонов за наклонной плоскостью усеченного конуса.

Global Terrain Optimization
Оптимизация Terrain Global#

The terrain_global_base material provides several parameters for fine tuning of terrain geometry optimization, shadows and LOD blending:Материал terrain_global_base предоставляет несколько параметров для точной настройки оптимизации геометрии ландшафта, теней и смешивания LOD:

  • Subpixel Polygons Reduction parameter determines the minimum ratio of polygon size (in the screen space) to the area seen in the viewport. This parameter allows you to remove too small polygons that are barely visible, in order to increase performance.Параметр Subpixel Polygons Reduction определяет минимальное отношение размера полигона (в пространстве экрана) к площади, видимой в окне просмотра. Этот параметр позволяет убрать слишком маленькие полигоны, которые едва видны, с целью повышения производительности.
  • Back Face Culling parameter is used for culling of the tessellation patches that have their back faces turned to the camera. The number of polygons can be significantly reduced (e.g. culling back faces of a large mountain) and increase performance.Параметр Back Face Culling используется для отбраковки лоскутов тесселяции, обращенных обратной стороной к камере. Количество полигонов можно значительно уменьшить (например, отбрасывая обратные грани большой горы) и повысить производительность.
  • Frustum Culling Padding parameter is used to control culling of the tessellation patches outside the viewing frustum.Параметр Frustum Culling Padding используется для управления отбраковкой фрагментов тесселяции за пределами усеченной пирамиды видимости.
  • Shadow Offset parameter enables to adjust the look of shadows in cases low-poly LODs cast shadows on high poly LODs in areas, where there should be no shadows should.Параметр Shadow Offset позволяет настроить внешний вид теней в случаях, когда низкополигональные LOD отбрасывают тени на высокополигональные LOD в областях, где теней быть не должно.
  • LOD Padding parameter can be used to adjust smooth transitions between terrain LODs and increase performance.Параметр LOD Padding можно использовать для настройки плавных переходов между уровнями детализации ландшафта и повышения производительности.

In case if your terrain does not require insets, you can disable this option to increase performance. To do so, just uncheck the Use Insets in the States tab.В случае, если ваш ландшафт не требует вставок, вы можете отключить эту опцию для повышения производительности. Для этого просто снимите флажок Use Insets на вкладке States.

Also you can use frustum culling optimization to affect performance: enable the Fast Frustum Culling option in the States tab. This option increases the number of culled polygons.Также вы можете использовать оптимизацию отсечения усеченной пирамиды, чтобы повлиять на производительность: включите параметр Fast Frustum Culling на вкладке States. Эта опция увеличивает количество отбракованных полигонов.

Последнее обновление: 19.04.2024
Build: ()