meta data for this page

Glossary

General terms

Modeler

The application where SpeedTree models are created and edited.

Games SDK

The SpeedTree Software Development Kit, which houses the libraries and source code for loading trees, animating them for wind, performing LOD, batching for fast rendering, and actual render calls for specific platforms.

Tree Library

The sum total of all the tree models, textures, meshes, etc. IDV can provide for use with the SpeedTree applications/tools.

Modeling terms

Alpha scalar

Sometimes the alpha channel of an image is not entirely suitable for use on a SpeedTree, especially when alpha to coverage is used. An alpha scalar allows the alpha channel to be modified in the shader.

Ambient occlusion

Ambient occlusion refers to precomputed ambient lighting information. Inner parts of the tree are “occluded” by other parts of the tree, which leaves the inner parts darkened. Ambient occlusion can greatly increase the realism of a tree.

Asset

An asset is an object that is used in the construction of a SpeedTree, such as a material, a mesh, a mask, etc.

Atlas

An atlas (previously known as a composite map) is a texture that combines all of the textures needed for a SpeedTree that do not need to be wrapped. Multiple textures from different materials are merged into one large texture that is used to minimize texture context switches during rendering. Branch textures cannot be included in the composite map because they wrap around the tree in multiple directions.

Batching

Batching geometry together into fewer draw calls can dramatically improve rendering times. This is especially useful for SpeedTrees when scenes have many billboards. Hundreds or even thousands of billboards can be batched together for large, sweeping vistas of trees running at real-time.

Billboard

The lowest LOD of a SpeedTree is a billboard, just a picture of the tree. There can either just be one, or many billboards rendered from multiple directions around the tree.

Billboarding

Billboarding is the concept of something always facing the camera or screen. Leaf cards and simple tree billboards in SpeedTree are examples of objects that billboard.

Billboard map

The billboard map is similar to the composite map, but only contains billboards. Separate billboard maps are an option in case the composite map gets too large or if other optimizations work better with separate billboard maps.

Collision object

Per-triangle collision can be expensive, so SpeedTree's support the inclusion of collision volumes (spheres and capsules). These can be queried through the SDK for rough collision instead of, or previous to, per-triangle collision detection.

Curve

Many properties are guided by curves that further influence the random values used to compute a tree based on position on the parent (parent curves), down the length of a node (profile curves), through LOD levels (lod curves), etc.

Cluster

A cluster is a texture map that includes multiple leaves and their surrounding branch structure.

Degradation

A very complex tree can take a long time to compute and/or draw. Degradation allows an artist to work on a simpler version of the SpeedTree for the sake of speed and then switch easily to the full quality.

Displacement

Displacement is a per-vertex translation based on noise or an image loaded into a displacement asset. It can be used to create a bumpy branch, for instance.

Feature vertices

Extra vertices added to the model in areas where you need more polygonal detail.

Force

A force is an object that can deform, restrict, or otherwise influence the creation of part or all of a SpeedTree.

Frond

In addition to referring to large leaves (such as a palm frond), a frond is a piece of procedural geometry that rests along a branch spine and often holds a texture for a larger leaf or a games cluster material.

Generator

A generator is an object that creates nodes in a SpeedTree. Generators can be seen in the Generation bar in the SpeedTree® Modeler.

Leaf card

Leaf cards are leaves that always billboard (face) the camera. This allows a SpeedTree to look very lush and full while having few leaf polygons. Historically, these were the only kinds of leaves used on SpeedTrees, but now there are leaf meshes as well.

Leaf mesh

A leaf mesh is a small piece of geometry that is used in place of a leaf card. This is useful for fruit, vines, long stringy leaves, and anything else that cannot be modeled accurately with leaf cards.

Level of detail (LOD)

Level of detail (LOD) refers to drawing lower quality objects the smaller they are or further they are away from the camera. SpeedTrees can drop down multiple levels of detail, all the way down to a single billboard.

Mask

A mask is a restriction to the area where something can be created. It can restrict based on position, texcoords, or an image.

Node

A node is an actual object created in the tree, such as a single branch or a single leaf.

Node edit

A node edit is a modification of some value on a single node that does not affect other nodes created from the same generator.

Normal map

A normal map is a texture containing tangent-space normal information. Using normal maps and an appropriate shader, lighting can be performed per-pixel rather than just per-vertex, resulting in much higher quality lighting without an increase of geometry.

Property

Every object (generator, node, force, etc) has a number of properties that can be adjusted on it. Properties can be numbers, choiceboxes, curves, etc., or some combination of these.

Randomize

A SpeedTree is built around guided random values. Thus, a part or all of a tree can be “randomized” to create a new version of the same tree.

Static mesh

In contrast to a SpeedTree, a static mesh does not have wind effects, smooth LOD, or camera-facing leaves. When exporting a SpeedTree to another modeling package, it becomes a static mesh.

Transmission

Transmission is the light that shines through leaves on a tree, illuminating the dark side. The SpeedTree shaders can simulate light transmission.

World building

World building is the construction of a scene, environment, or area. The SpeedTree® Modeler can facilitate world building through the use of zones, masks, and proxies. The worlds built can then be exported to other applications or used in the SpeedTree® SDK.

Zone

A zone is a mesh placed in a SpeedTree from which other things can be created, such as a wall with ivy growing over it. Zones are also used as a terrain mesh for world building.

Allocator

Memory allocating inside the SDK can be routed through a custom allocator so the user of the SDK can keep track of memory usage.

Alpha fizzle

Alpha fizzle is the term applied to the “fizzling” from one LOD to another based upon changing alpha testing values in unison with returning alpha noise from the pixel shader.

Alpha testing

Alpha testing, also called alpha masking, is a way to mask out certain pixels from rendering based on alpha values of the object's pixels and the alpha test reference value. By putting uniform noise in the alpha channels of the diffuse texture, manipulation of the alpha test reference value can produce a fizzling effect from one LOD to the next.

Alpha to coverage

Alpha to coverage, or A2C, is a technique use the alpha as a coverage mask in the multisample buffer. When multisampling is used, it allows for smoother edges on alpha tested geometry.

Base tree

A base tree is an actual tree (SRT) loaded into the SDK. Instances then reference the original base tree.

Cell

The forest library splits the environment into evenly sized cells, or regions, to allow for fast culling.

Culling

Culling is the act of throwing out objects during rendering which aren't visible. Culling to the view frustum is the most often used form of culling.

Fizzling

Fizzling is to drop out or bring in pixels randomly while switching LODs on a SpeedTree. It is caused by using alpha testing in concert with uniform noise returned from the pixel shader.

Grass

Grass in the SDK is a specialization of the same culling/batching/rendering system as used on trees that achieves better performance for small objects near the camera by doing away with things such as LOD and billboards.

Instancing

Instancing is the concept of having one unique object that gets drawn in many places. SpeedTree uses instancing to avoid calculating wind effects and billboarding for every tree in a scene. Alternatively, instancing also refers to the rendering concept of “mesh instancing” where one mesh can be drawn multiple times with different properties in a single draw call.

Integration

The process of merging some or all of the reference application code into your own application or game.

Reference application

The reference applications show how to get SpeedTree working in an application. The reference applications are highly optimized for performance with lots of trees in a scene rendered in high quality.

Render state

A render state describes the setup of a particular rendering call, comprising textures bound, shaders used, rendering states set, etc.

Shader

A program that runs on the GPU. The SpeedTree SDK utilizes vertex and fragment/pixel shaders.

Shader constant

A value uploaded to graphics card memory that can be accessed by a shader, used for things that don't change per vertex.

Vertex attribute

Each row, taken as a whole, defining a part of the vertex defines an attribute. vSlot0 and vSlot1 are each vertex attributes.

Vertex component

Any single x/y/z/w float value within vSlot0 or vSlot1 is a vertex component.

Vertex declaration

The structure SVertexDecl taken as a whole.

Vertex format

Format refers to how the data was stored in the vertex buffer (e.g. byte, half float, full float). Each attribute may have its own format. The format is not visible in the SVertexDecl declaration above.

Vertex property

Properties are defined by how the vertex shader interprets the vertex attributes. vSlot0 contains the float3 position property and vSlot1 contains the float2 diffuse texture coordinates, the float ambient occlusion value, and the z component of the vertex surface normal. Not to be confused with a vertex attribute, as there may be multiple properties in a single attribute, or a single property may be split across multiple attributes.

File extensions

Mesh file formats

.fbx, .obj, .dae, .3ds

Other file formats that can be imported/exported in various places in the SpeedTree tools

.spm

SpeedTree Procedural Model, the files used by the SpeedTree® Modeler

.stsdk

SpeedTree SDK File, the binary files exported by the Modeler for use with the runtime SDK

.xml

All mesh exporting, including SRT creation, saves out an intermediate raw file format in .xml.

Image file formats

.dds

Direct Draw Surface, an image wrapper format that supports alpha channels and compressed textures in native graphics card formats.

.tga

Targa image files, which support alpha channels and are very easy to write/parse. These are normally used for uncompressed images.

.tiff, .png

Other suitable image file formats (that is, they support alpha channels) that can be imported/exported in various places in the SpeedTree tools.