About the Low-poly style
Low-poly vegetation is the cheapest style to render and to ship.
- Flat shading: one normal per face gives the crisp faceted look; no normal maps.
- Colour lives in vertex colours (glTF COLOR_0), so there are no textures, no UV work and almost no video memory.
- Leaves are solid geometry, not alpha cards: no alpha testing and no transparent overdraw, which matters on mobile GPUs.
- One material can be shared by every model in the scene, so trees batch and instance easily.
- Typical budgets range from a few hundred to a couple of thousand triangles at LOD0.
A good fit for mobile, WebGL/WebGPU, VR, strategy, city builders and stylised indie games. In the engine, use a material that multiplies by vertex colour.
Using it in Bevy
Bevy loads glTF/GLB through the AssetServer: asset_server.load(GltfAssetLabel::Scene(0).from_asset("tree.glb")), spawned with SceneRoot; individual meshes and materials are addressable by label. FBX and OBJ need third-party crates, so GLB is the format to use.
- LOD: give the LOD0–LOD3 entities a
VisibilityRange(start and end margins) for distance switching with dithered crossfade — Bevy's HLOD mechanism. - Leaves: glTF alphaMode MASK becomes
AlphaMode::Mask(cutoff)onStandardMaterial, and double-sided materials disable back-face culling. - Entities that share a mesh and material are batched and instanced automatically, so many tree copies stay cheap.
- Collision: Bevy has no built-in physics; build a collider from the collision mesh with Avian or bevy_rapier.













