This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Landscape Tool
Sandworm
Использование инструментов редактора для конкретных задач
Extending Editor Functionality
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World Nodes
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL
Плагины
File Formats
Rebuilding the Engine Tools
GUI
Двойная точность координат
API
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
Работа с контентом
Оптимизация контента
Материалы
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Unigine::WorldOccluder Class

Header: #include <UnigineWorlds.h>
Inherits from: Node

This class is used to create a box-shaped occluder that culls surfaces, bounds of which are currently hidden behind it. If any part of the bound of the object's surface is visible behind the occluder, the surface will not be culled. The objects' surfaces behind the occluder are not sent to the GPU, thereby saving performance.

The occluder itself is rendered by the CPU and stored in a separate buffer.

Notice
The front or back faces of the occluder are used to cull surfaces. See details here.

Usage#

In order to enhance performance, occluders should be used wisely. The following notes will help you to decide whether to use the occluder or not:

  • Occluders can be highly effective in case of complex environments where there are many objects that occlude each other and are costly to render (they have a lot of polygons and/or heavy shaders).
  • Effective culling is possible if objects are not too large, since if any part of their surface is seen, it cannot be culled. In case objects are big and have a few surfaces, it is likely that an additional performance load of an occluder will not pay off.
  • In case the scene is filled with flat objects or a camera looks down on the scene from above (for example, in flight simulators), it is better not to use occluders at all or disable them.

See Also#

  • An article on Occluders for general information
  • An article on Occluder
  • A set of UnigineScript API samples located in the <UnigineSDK>/data/samples/worlds/ folder:
    • occluder_00
    • occluder_01
    • occluder_02

WorldOccluder Class

Members


static WorldOccluderPtr create ( const Math::vec3 & size ) #

Constructor. Creates a new world occluder with given dimensions.

Arguments

  • const Math::vec3 & size - Size of the new occluder.

void setBackFace ( bool face ) #

Updates the value indicating whether the back faces of the occluder box are used instead of front faces to occlude objects' surfaces. By default, the front faces are used.

Arguments

  • bool face - true to use the back faces of the occluder to cull surfaces; false to use the front ones.

bool isBackFace ( ) const#

Returns the value indicating whether the back faces of the occluder box are used instead of front faces to occlude objects' surfaces. By default, the front faces are used.

Return value

void setDistance ( float distance ) #

Updates the distance between the camera and the bounding box of the occluder, at which the occluder becomes disabled (it isn't processed by the CPU, hence it isn't rendered). By default, the inf value is used.

Arguments

  • float distance - The distance in units.

float getDistance ( ) const#

Returns the current distance between the camera and the bounding box of the occluder, at which the occluder becomes disabled (it isn't processed by the CPU, hence it isn't rendered). By default, the inf value is used.

Return value

The distance in units.

void setSize ( const Math::vec3 & size ) #

Updates the current dimensions of the world occluder box.

Arguments

  • const Math::vec3 & size - The occluder dimensions.

Math::vec3 getSize ( ) const#

Returns the current dimensions of the world occluder box.

Return value

The occluder dimensions.

static int type ( ) #

Returns the type of the node.

Return value

World type identifier.
Last update: 13.12.2021
Build: ()