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.
