How One Tree Becomes a Forest on the GPU

A draw call is a command from the game’s CPU telling the graphics card what to render. Without instancing, the CPU may have to issue that command repeatedly, once for each copy of a model. With instancing, it submits the shared tree mesh once and supplies a list of per-tree data—such as position, rotation, and scale.

The graphics card processes that list alongside the model’s geometry. A built-in instance number lets the rendering program pick the right transform for each copy, moving the same vertices into different places in the world. The mesh itself does not need to be duplicated in memory for every tree.

Fewer Commands, Not Free Rendering

This is especially useful when a scene contains many copies of the same object, such as grass, rocks, or a crowd of similar props. Fewer draw calls can reduce work on the CPU, which might otherwise spend time preparing and sending thousands of small rendering commands.

But instancing does not make the copies cost nothing. The GPU still has to transform and draw their geometry, and each visible tree still takes up screen space. Games also tend to group instances that share a mesh and rendering setup; a different model or material may need another batch. If one batch covers objects scattered across a huge area, the game may also need careful visibility checks so it does not draw copies the camera cannot see.

The practical payoff is that a forest can contain many distinct placements without asking the CPU to micromanage every tree as a separate submission. Each tree can stand in a different spot, even though the graphics card is reusing the same underlying model.