UnigineScript
The Language
Core Library
Engine Library
Node-Related Classes
GUI-Related Classes
Plugins Library
High-Level Systems
Samples
Usage Examples
C++ API
API Reference
Integration Samples
Usage Examples
C++ Plugins
Migration
Migrating to UNIGINE 2.0
C++ API Migration
Migrating from UNIGINE 2.0 to UNIGINE 2.1

Unigine::WorldOccluderMesh Class

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

Unigine::WorldOccluderMesh Class

Members


static int type ()

WorldOccluderMesh type.

Return value

WorldOccluderMesh type identifier.

static Ptr< WorldOccluderMesh > create (const NodePtr & node)

WorldOccluderMesh constructor.

Arguments

  • const NodePtr & node - Node smart pointer.

static Ptr< WorldOccluderMesh > create ()

WorldOccluderMesh constructor.

static Ptr< WorldOccluderMesh > create (const char * name)

WorldOccluderMesh constructor.

virtual Ptr< Node > getNode () const =0

Returns a node pointer.

Return value

Node pointer.

virtual int loadMesh (const char * name) =0

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

Arguments

  • const char * name - The mesh file name.

Return value

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

virtual int saveMesh (const char * name) const =0

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

Arguments

  • const char * name - The mesh file name.

Return value

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

virtual int setMesh (MeshPtr & mesh) =0

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

Arguments

  • MeshPtr & mesh - A mesh to be copied.

Return value

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

virtual int getMesh (MeshPtr & mesh) const =0

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

Arguments

  • MeshPtr & mesh - The mesh.

Return value

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

virtual void setMeshName (const char * name) =0

Sets a new name for the mesh, on which the occluder mesh is based.

Arguments

  • const char * name - A name to be set for the mesh.

virtual const char * getMeshName () const =0

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

Return value

The mesh name.

virtual void setDistance (float distance) =0

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.

virtual float getDistance () const =0

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.
Last update: 2017-07-03