This page has been translated automatically.
UnigineEditor
Interface Overview
Assets Workflow
Settings and Preferences
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Landscape Tool
Using Editor Tools for Specific Tasks
FAQ
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
CIGI Client Plugin
Rendering-Related Classes
Warning! This version of documentation is OUTDATED, as it describes an older SDK version! Please switch to the documentation for the latest SDK version.
Warning! This version of documentation describes an old SDK version which is no longer supported! Please upgrade to the latest SDK version.

Unigine.WorldOccluderMesh Class

Inherits:Node

This class is used to create an occluder based on an arbitrary mesh, which 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.

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

WorldOccluderMesh Class

Members


static WorldOccluderMesh()

Constructor. Creates a new world occluder mesh with the default distance value.

static WorldOccluderMesh(string name)

Constructor. Creates a new world occluder mesh from the given *.mesh file.

Arguments

  • string name - A mesh file name.

WorldOccluderMesh cast(Node node)

Casts a WorldOccluderMesh out of the Node instance.

Arguments

  • Node node - Node instance.

Return value

WorldOccluderMesh instance.

void setDistance(float distance)

Updates the distance between the camera and the bounding box of the occluder mesh, at which this occluder mesh 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()

Returns the current distance between the camera and the bounding box of the occluder mesh, at which this occluder mesh 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.

int setMesh(Mesh mesh)

Allows for reinitialization of the occluder mesh: the function copies a given mesh into the current mesh used for the occluder mesh.

Arguments

  • Mesh mesh - A mesh to be copied.

Return value

1 if the mesh is copied successfully; otherwise, 0.

int getMesh(ref Mesh mesh)

Copies the current mesh, on which the occluder mesh is based, into the received mesh.

Arguments

  • ref Mesh mesh - The mesh.

Return value

1 if the mesh is copied successfully; otherwise, 0.

int setMeshName(string name, int force_load = 0)

Sets a new name for the mesh, on which the occluder mesh is based and forces loading of the mesh with the new name for the current occluder mesh.

Arguments

  • string name - A new name to be set for the mesh.
  • int force_load - Force flag.
    • If 1 is specified, the mesh with the new name will be loaded immediately.
    • If 0 is specified, only the mesh name will be updated.

Return value

1 if:
  • The current mesh name coincides the new name.
  • The mesh with the new name has been loaded successfully.
  • The force flag is set to 0.
In other cases, 0.

string getMeshName()

Returns the name of the mesh, on which the occluder mesh is based.

Return value

The mesh name.

int loadMesh(string name)

Loads a mesh for the current occluder mesh from the file. This function doesn't change the mesh name.

Arguments

  • string name - The mesh file name.

Return value

1 if the mesh is loaded successfully; otherwise, 0.

int saveMesh(string name)

Saves the mesh, on which the occluder mesh is based, into a file.

Arguments

  • string name - The mesh file name.

Return value

1 if the mesh is saved successfully; otherwise, 0.

int type()

Returns the type of the node.

Return value

World type identifier.
Last update: 2018-08-10
Build: ()