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 PlayCanvas
PlayCanvas treats GLB as a container asset. In the Editor, upload GLB (FBX is converted to GLB on import) to get a template with the model hierarchy; in engine-only code use app.assets.loadFromUrl(url, 'container') and asset.resource.instantiateRenderEntity().
- LOD: there is no built-in LOD component, so a small script compares camera distance and toggles the render components of the LOD0–LOD3 entities.
- Static trees can share a batch group to merge draw calls; for large forests use hardware instancing with
meshInstance.setInstancing()and a vertex buffer of transforms. - Leaves: glTF MASK sets
alphaTeston the StandardMaterial; use cull mode none for two-sided leaves. - Collision mesh: a collision component of type mesh plus a static rigidbody, with its render component disabled.


















