TerrainView

Description

sealed class Tinman.Engine.Components.TerrainView

A view onto a 3D terrain mesh.

At runtime, the application loop callbacks of all terrain views of a terrain mesh must be called, as described by IApplication and ApplicationLoop.MainLoop. The time deltas that are passed to IUpdateableFrameTime.UpdateFrameTime will be processed so that all terrain views receive the same time delta for each update cycle.

Updating the terrain views of a terrain mesh with IUpdateableFrameTime.UpdateFrameTime will trigger calls to MeshBuffer.MeshUpdate, to make sure that exactly one mesh buffer update is performed at the beginning of each update cycle. If there are no terrain views, the MeshBuffer.MeshUpdate method will not be called automatically.

Public / Constants

ProfileBandwidth


public static readonly attribute ProfileBandwidth → (ProfilerValue)

Amount of data transfer from CPU to GPU, in megabytes per second.

ProfileCacheResource


public static readonly attribute ProfileCacheResource → (ProfilerValue)

Resource cache utilization (percent).

ProfileCacheTexture


public static readonly attribute ProfileCacheTexture → (ProfilerValue)

Texture tile utilization of the texture atlas (percent).

ProfileCacheVertices


public static readonly attribute ProfileCacheVertices → (ProfilerValue)

Visible vertices in the terrain mesh buffer (percent).

ProfileDataRender


public static readonly attribute ProfileDataRender → (ProfilerValue)

CPU time spent in MeshBuffer.MeshUpdateData and TriangulationBuffer.Update (milli-seconds).

ProfileDataUpdate


public static readonly attribute ProfileDataUpdate → (ProfilerValue)

CPU time spent in MeshBuffer.MeshUpdate and TextureAtlas.TextureUpdate (milli-seconds).

ProfileLocality


public static readonly attribute ProfileLocality → (ProfilerValue)

Estimated cache locality of current terrain.

ProfileModelsPrepare


public static readonly attribute ProfileModelsPrepare → (ProfilerValue)

CPU time spent preparing 3D models and planting (milli-seconds).

ProfileModelsRender


public static readonly attribute ProfileModelsRender → (ProfilerValue)

CPU time spent on rendering 3D models and planting (milli-seconds).

ProfilePrepare


public static readonly attribute ProfilePrepare → (ProfilerValue)

CPU time spent on preparing the terrain, for example culling or texturing (milli-seconds).

ProfileRender


public static readonly attribute ProfileRender → (ProfilerValue)

CPU time spent on rendering the terrain (milli-seconds).

ProfileShadowPrepare


public static readonly attribute ProfileShadowPrepare → (ProfilerValue)

CPU time spent on preparing shadow mapping (milli-seconds).

ProfileShadowRender


public static readonly attribute ProfileShadowRender → (ProfilerValue)

CPU time spent on rendering the shadow maps (milli-seconds).

ProfileTriangulateCpu


public static readonly attribute ProfileTriangulateCpu → (ProfilerValue)

CPU time spent on terrain mesh triangulation (milli-seconds).

ProfileTriangulateGpu


public static readonly attribute ProfileTriangulateGpu → (ProfilerValue)

GPU time spent on terrain mesh triangulation (milli-seconds).

Public / Constructors

TerrainView


public constructor TerrainView → (1)

terrain in : TerrainMesh

[not-null]
The terrain mesh to use.

Creates a new instance of TerrainView.

Public / Methods

ClearCache


public method ClearCache → ()

Clears the terrain view caches.

Flag

2 overloads


[Pure]
public method Flag1 → (1)

flags in : TerrainViewFlags

The flags to query.

returns → bool

true if at least one flag in flags in is set,
false if none of the given flags in is set.

Queries terrain view flags.


public method Flag2 → (2)

flags in : TerrainViewFlags

The flags to update.

state in : bool

true to set the given flags in,
false to clear the given flags in.

Updates terrain view flags.

ResetCamera


public method ResetCamera → ()

Resets the terrain view camera to the standard position for the terrain mesh.

Public / Attributes

Bounds


public attribute Bounds → (get,set)

value : Box2I

The screen bounds.

The screen bounds of this terrain view.

ChunkSize


public attribute ChunkSize → (get,set)

value : int32

[>=0]
The chunk size, see IMeshBoundMinSize.

The overall mesh traversal chunk size.

Defaults to 256

CullingCone


public attribute CullingCone → (get,set)

value : float64

The cone culling angle.

The cone angle to use for culling, see ConeCulling.ConeAngle.

CullingDistance


public attribute CullingDistance → (get,set)

value : float64

The culling distance value.

The distance to use for culling, see DistanceCulling.Distance.

When this property is set to 0, the culling distance will be computed automatically.

DisplacementScale


public attribute DisplacementScale → (get,set)

value : float32

[>=0]
The uniform scale factor.

Uniform scale factor for GPU terrain displacement.

DisplacementThreshold


public attribute DisplacementThreshold → (get,set)

value : float32

[>0]
The tessellation threshold, in screen-space.

The tessellation threshold for GPU terrain displacement, given as the average edge length of the triangles in the terrain mesh.

Flags


public attribute Flags → (get,set)

value : TerrainViewFlags

The behaviour flags.

The behaviour flags of this terrain view.

Defaults to FlagsDefault.

FogDistance


public attribute FogDistance → (get,set)

value : float64

[>=0]
The fog distance, in terrain-space.

The fog distance.

Set to 0 to compute a nice fog distance automatically.

Defaults to 0.

Geometry


public attribute Geometry → (get)

value : Renderer

The Renderer object or null iff not attached.

The aggregated Renderer object that may be used to draw custom 3D geometry.

IsTexturingBusy


public attribute IsTexturingBusy → (get)

value : bool

true if texture tiles are being computed, false if texturing is idle.

Returns the overall status of unique terrain texturing.

Lighting


public attribute Lighting → (get,set)

value : IEnvironmentMap

[not-null]
The lightmap texture.

The environment lightmap cube texture.

Defaults to an EnvironmentMapSky object.

LightingNorth


public attribute LightingNorth → (get,set)

value : Vec4D

The north-direction vector (see remarks).

Defines the north-direction in terrain-space to use for setting up the local coordinate system for lighting and material coordinates.

If this vector is equal to Vec4D.Zero, the north-direction will be computed using IGeometry.ComputeNorth, passing in the heightmap coordinates that correspond to the current camera position.

If the Vec4D.W component of this vector is zero, this vector is normalized and used as the north-direction.

If the Vec4D.W component of this vector is not zero, this vector will be scaled by 1/W (resulting in the north position) and the north-direction is computed so that it points from the current camera position towards the north position.

The local coordinate system for lighting and material coordinates is defined as follows:

  • Y+ (up-vector)
    The Y-axis is mapped to the up-vector of the terrain.
    For planar terrains, the up-vector is computed via IGeometry.ComputeUp.
    For geocentric terrains, the up-vector is computed by normalizing the terrain-space position.

  • X+ (side-vector)
    The X-axis is mapped to the cross product of the north-direction and the up-vector.

  • Z+
    The Z-axis is mapped to the cross product of the side-vector and the up-vector.

  • The coordinate origin is coincident with the camera position in terrain-space.

A terrain is considered to be geocentric iff IGeometry.ToGeocentric returns a non-null value; otherwise it is considered to be planar.

Defaults to Vec4D.Zero

LightingSize


public attribute LightingSize → (get,set)

value : int32

[pow2]
The lightmap size.

Size of the environment lightmap cube texture.

Defaults to 256.

LightingSpace


public attribute LightingSpace → (get)

value : TerrainSpace

[not-null]
The terrain-space transformation helper object.

Returns the helper object that provides coordinate transformation methods between terrain-space, light-space and material-space.

Models


public attribute Models → (get)

value : ModelRenderer

The ModelRenderer object or null iff not attached.

The aggregated ModelRenderer object that may be used to draw 3D models.

Shadows


public attribute Shadows → (get)

value : ShadowMapping

[not-null]
The ShadowMapping object.

The aggregated ShadowMapping object.

The ShadowMapping.CascadeRange property is updated automatically by this TerrainView object. To tweak the range, use ShadowTweak.

ShadowTweak


public attribute ShadowTweak → (get,set)

value : float64

The lower shadow cascade range value.

Tweaks the shadow cascade range by setting the lower bound (see ShadowMapping.Cascade).

Sky


public attribute Sky → (get)

value : TerrainSky

[not-null]
The TerrainSky object.

Returns the TerrainSky object that represents the sky background for the terrain.

Terrain


public attribute Terrain → (get)

value : TerrainMesh

[not-null]
The terrain mesh.

Returns the terrain mesh this terrain view belongs to.

TextureDetail


public attribute TextureDetail → (get)

value : float64

The overall texturing detail, in pixel/texel.

Returns the overall detail of unique terrain texturing.

TextureProgress


public attribute TextureProgress → (get)

value : int32

[0..100]
The overall texturing progress, in percent.

Returns the overall progress of unique terrain texturing.

Tone


public attribute Tone → (get)

value : ToneMapping

[not-null]
The tone mapping settings.

Returns the settings for HDR tone mapping.

TriangulationBuffer


public attribute TriangulationBuffer → (get)

value : TriangulationBuffer

[not-null]
The triangulation buffer.

Returns the triangulation buffer that this view is using to render the terrain.

TriangulationFlags


public attribute TriangulationFlags → (get)

value : int32

Bitwise combination of the following info flags:
0x1 : the CPU is decoding the triangulation result before rendering
0x2 : the GPU is decoding the triangulation result before rendering
0x4 : the GPU is consuming the triangulation result directly

Returns information about the current triangulation mode.

Viewport


[Constant]
public attribute Viewport → (get)

value : CameraViewport

[not-null]
The terrain viewport.

Returns the viewport of this terrain view.

VisibleCheck


public attribute VisibleCheck → (get)

value : ScreenVisibleCheck

[not-null]
The visible check.

Returns the vertex visibility check that is used for terrain mesh refinement.

Logging

Logger


public static readonly attribute Logger → (ILogger)

The logger object of this class.