SET PERFORMANCE BUDGETS

Before optimizing, define targets: - Initial load size (e.g., < 3–5 MB on first view) - Time to first render (e.g., < 2s on mid devices) - FPS target (30/60 depending on scene) - Max draw calls and triangle counts (per scene) Budgets turn “optimize later” into a concrete checklist.

GEOMETRY: POLYGONS, LODS, INSTANCING

Quick wins: - Remove hidden geometry (inside meshes) - Merge static meshes where possible - Use LODs for distance objects - Instance repeated objects (trees, bolts, UI props) Don’t blindly decimate hero assets—optimize background assets first.

TEXTURES: FORMAT, SIZE, AND MIPMAPS

Textures are often the biggest weight. - Keep sizes as low as visually acceptable - Use compressed formats (KTX2/Basis) if available - Prefer atlases for many small textures - Use correct color space (sRGB vs linear) Also: check normal map intensity and roughness maps—bad maps can look “muddy,” causing designers to push resolution unnecessarily.

RUNTIME: RENDER COST AND PROFILING

Profile in real devices. Look for: - Too many materials/shaders - Expensive post-processing - Shadows (high cost) - Overdraw from transparency Fix order: 1) Remove expensive effects 2) Reduce materials and lights 3) Reduce geometry and texture pressure Ship with graceful degradation: quality tiers based on device capability.