Billboard and Impostor Techniques for Optimizing 3D Graphics

Lecture



In modern computer games, graphics optimization is very important, because rendering a large number of complex three-dimensional objects can significantly increase the load on the graphics processor. This is especially relevant for scenes with a lot of vegetation, small objects and environment elements. One way to reduce computational costs is to use the billboard technique, in which, instead of a full three-dimensional model, a flat surface with a texture is displayed, oriented relative to the camera position.

Billboards are widely used in game engines to display vegetation, particles, decorations and objects located far from the player. The object's texture can be prepared in advance, while its position and orientation relative to the camera are calculated while the application is running. More advanced variants of this technique, such as impostor objects, use several images or special representations of the model to preserve visual quality at a lower performance cost.

This article examines how billboard technology works, the specifics of implementing it with shaders, and the use of this approach in modern game engines, in particular in Unity with the Universal Render Pipeline (URP). Special attention is paid to using billboards to display vegetation and their role in object level-of-detail systems.

Billboard and Impostor Techniques for Optimizing 3D Graphics

billboard is a fairly standard term in game engines and computer graphics.

For example:

  • Unity — Billboard / Billboard Renderer, SpeedTree billboards.
  • Unreal Engine — the term billboard is also used, especially in the context of foliage, particles, sprites and LOD/impostors.
  • Godot — there is a billboard concept in materials/shaders, for example the billboard modes of Spatial Material.
  • CryEngine — a billboard/impostor approach is used for vegetation and distant objects.
  • Source / Source 2 — billboard/sprite approaches are also used for particles, vegetation and distant objects.

But there is a nuance: the name of a specific mechanism may differ.

The following terms are often encountered:

  • Billboard — a plane oriented toward the camera.
  • Sprite — a 2D image/plane with a texture; often used as a billboard.
  • Impostor — a more general concept: a pre-prepared 2D/simplified representation of a 3D object.
  • Foliage billboard — a billboard specifically for vegetation.
  • Camera-facing quad — a technical description of the same principle.
  • Cross-plane / cross billboard — two or more intersecting billboards, often used for trees.

That is, if you see impostor in the documentation of another engine, it is not necessarily literally called Billboard, but conceptually it is a related technology.

Another important distinction: a billboard is not an image format, but a way of displaying an image. So the same tree PNG can be used as a billboard in Unity, Unreal, Godot, etc., as long as the corresponding shader/renderer can orient it correctly.

In Unity, a billboard is not a separate mandatory component. It is rather a rendering technique/method in which a flat object (usually a quad) is rotated toward the camera.

For example, for a tree:

  • there is a regular Quad with a tree texture;
  • a transparent texture with alpha is applied to it;
  • a shader positions/rotates this quad so that it faces the camera;
  • visually it looks like a 3D tree, although the geometry is just one flat polygon.

Where exactly a billboard is implemented

There are several options:

1. In a shader — the most typical option for a large amount of vegetation.

In the vertex shader, you can modify the vertices so that the quad always faces the camera:

 object position
↓
camera position
↓
compute the direction
↓
rotate the quad

In this case the billboard can be:

  • spherical — fully faces the camera;
  • cylindrical — rotates only around Y, staying vertical.

2. With a script — for example, doing this every frame:

 transform.LookAt(camera.transform);

This is also a billboard, just not implemented in a shader.

3. With a ready-made Unity system — some vegetation/terrain systems use billboards on distant LODs themselves. That is, you may not see a separate Billboard component at all: the mechanism is hidden inside the render/LOD system.

An important point

Billboard ≠ "flat tree".

A flat tree is geometry: for example, a Quad with a picture of a tree.

Billboarding is the behavior of this geometry relative to the camera.

That is, you can have:

 Quad + tree texture
+
Billboard logic in the shader
↓
the tree always faces the camera

it is important to separate the image from the billboard geometry.

If we are talking about a tree on a billboard

Usually the tree image itself really is prepared in advance — for example:

  • a PNG with a tree and an alpha channel;
  • a pre-rendered 3D tree;
  • sometimes a set of images from different angles.

But the position and rotation of the billboard in the frame are calculated in real time.

For example:

 In advance:
PNG texture
↓
[ QUAD ]
During the game:
camera
↓
[ QUAD  ]
rotates
toward the camera

That is, the shader does not draw the tree itself from scratch. It takes an already existing texture and geometry and decides how to place the flat polygon relative to the camera.

But there is a more advanced option

You can prepare several images of the tree in advance:

 Tree
↑
8–16 views
around the tree

And during the game, choose the image depending on the camera direction. This is called something like an impostor / octahedral impostor and produces a much more convincing look.

There is also an option where the billboard image is generated entirely at runtime — for example, the tree is first rendered into a RenderTexture from the desired angle, and then this image is used as a billboard. But this is a more expensive approach.

So, in short:

Classic billboard: image in advance → quad + shader → rotation toward the camera in real time.

Impostor: several/specially encoded representations of the image in advance → the right view is selected.

Runtime-generated billboard: the image can be created during the game.

In Unity 6 / 6000 + URP, built-in support for trees with billboards exists, but it is tied primarily to SpeedTree, not to the regular URP/Lit.

Unity 6 introduced separate SpeedTree9 shaders for URP, built as Shader Graphs.

And Shader Graph has a built-in SpeedTree8Billboard Sub Graph, which implements the billboard part for URP/HDRP.

So, roughly, the architecture is this:

 SpeedTree tree
│
├── LOD 0 → full geometry
├── LOD 1 → simplified geometry
└── LOD N → billboard
│
↓
SpeedTree Billboard
│
↓
URP

Moreover, the billboard itself does not have to be a separate BillboardRenderer. For SpeedTree, the billboard logic can be part of the SpeedTree shader/Shader Graph. Unity even has SpeedTreeImporter.defaultBillboardShader, which selects the standard billboard shader for the active render pipeline.

And if you have a regular Quad with a tree picture?

That is a different matter.

A regular:

URP/Lit + Quad + tree PNG

does not automatically turn into a billboard.

You need either:

  • your own billboard shader/Shader Graph;
  • SpeedTree;
  • or another ready-made impostor/billboard solution.

In other words, URP by itself does not mean "any Quad will be a billboard". A billboard is additional logic in the shader/renderer.

Conclusion

Billboard technology is one of the common ways to optimize the display of objects in computer graphics. Its main principle is to replace complex three-dimensional geometry with a flat representation oriented relative to the camera. This significantly reduces the number of processed vertices and polygons, which is especially important when displaying a large number of objects in a scene.

In game engines, a billboard is usually implemented at the rendering or shader level, so it is not necessarily represented by a separate component. In Unity, this approach can be used in vegetation systems and SpeedTree, and can also be implemented independently with Shader Graph or custom shaders. A billboard can also be part of an LOD system, switching to a flat representation of the object as the camera moves away.

Thus, a billboard is not an independent image format but a method of displaying one. Combined with LOD, impostor technologies and modern rendering tools, it can substantially reduce the load on the graphics system while maintaining acceptable visual quality. This is why the approach remains a relevant scene optimization tool in modern game engines.

Comments

To leave a comment

If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Lectures and tutorial on "Computer games developming, game-design"

Terms: Computer games developming, game-design