This page has been translated automatically.
编程
Fundamentals
Setting Up Development Environment
UnigineScript
High-Level Systems
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
应用程序接口
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
Rendering-Related Classes
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

Unigine::WorldOccluderTerrain Class

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

Terrain occluder introduces a cheaper and more efficient way of handling intersections with terrains. The objects behind the terrain occluder are not sent to the GPU, which saves performance.

Notice
If terrain relief is changed in the runtime, it is not recommended to use the occluder.

Usage

To provide increased performance, terrain occluders should be used wisely.

  • A terrain occluder can be a great benefit in case of mountains or complex urban environments.
    • If a terrain is flat, occluder can reduce FPS since there are no surfaces that can be culled.
    • On the contrary, an occluder is highly effective if there are many objects that are costly to render (they have a lot of polygons and/or heavy shaders). However, these objects should not be too large since if any part of their surface is seen, it cannot be culled.
  • When the camera is high above the ground (for example, for flight simulators), an occluder should be disabled. At the same time, when it is near or on the ground (during a takeoff or landing), occluders can be enabled to provide performance gain.
  • If terrain relief is changed in the runtime, it is not recommended to use the occluder.

Generation

The terrain occluder is generated basing on its downsized height map using cone-step mapping. Generation of an occluder texture is a time-consuming operation that should be done only once rather than each time on world load.

To set a texture for WorldOccluderTerrain in real-time, use the following steps:

  1. Set a height map texture (in R8, R16 or RG8 format) via setHeightsImageName() . Cone-step mapping will be calculated and a new image (inRGB8 format) will be generated. It contains all data necessary to perform occlusion.
  2. Get newly generated occluder image (RGB8) via getHeightsImage() .
  3. Save this occluder image (RGB8) to disk with same name.
This way there will be no need to perform time-consuming cone-step recalculation the next time a world is loaded.

WorldOccluderTerrain Class

Members


static WorldOccluderTerrainPtr create(const Math::vec3 & size)

Constructor. Creates a new terrain occluder of the specified size.

Arguments

  • const Math::vec3 & size - Size of the terrain occluder in units.

Ptr<WorldOccluderTerrain> cast(const Ptr<Node> & node)

Casts a WorldOccluderTerrain out of the Node instance.

Arguments

  • const Ptr<Node> & node - Pointer to Node.

Return value

Pointer to WorldOccluderTerrain.

void setDistance(float distance)

Sets the distance for disabling terrain occluder.

Arguments

  • float distance - Distance in units. If a negative value is provided, 0 will be used instead.

float getDistance()

Returns the current distance for disabling terrain occluder.

Return value

Distance in units.

Ptr<Image> getHeightsImage()

Returns the height map image that repeats terrain heights.

Return value

Height map image.

int setHeightsImageName(const char * name)

Sets the name of the height map that repeats terrain heights. The height map can be smaller in size compared to terrain's one. It will be automatically converted into the RGB8 format.

Arguments

  • const char * name - Height map name.

Return value

1 if the height map was successfully loaded; otherwise, 0.

const char * getHeightsImageName()

Returns the name of the height map that repeats terrain heights.

Return value

The name of the height map.

void setRadius(float radius)

Radius of ray tracing to perform occlusion. The radius is counted off starting from the camera.

Arguments

  • float radius - Radius of occlusion in units.

float getRadius()

Returns the current ray tracing radius to perform occlusion.

Return value

Radius of occlusion in units.

void setSize(const Math::vec3 & size)

Sets the dimensions of the terrain occluder.

Arguments

  • const Math::vec3 & size - Size of the terrain occluder in units. If a negative value is provided, vec3(0.0f) will be used instead.

Math::vec3 getSize()

Returns the current dimensions of the terrain occluder.

Return value

Size of the terrain occluder in units.

int type()

Last update: 2017-07-03
Build: ()