mobile optimization techniques

56
MOBILE OPTIMISATION TECHNIQUES TOMISLAV RAKIĆ SRĐA ŠTETIĆ-KOZIĆ Unite Europe 2015

Upload: nordeus

Post on 17-Aug-2015

44 views

Category:

Engineering


2 download

TRANSCRIPT

  1. 1. MOBILE OPTIMISATION TECHNIQUES TOMISLAV RAKI SRA TETI-KOZI Unite Europe 2015
  2. 2. INTRODUCTION Nordeus Belgrade based Developer of Top Eleven MOBILE OPTIMIZATION TECHNIQUES
  3. 3. Scene loading time Draw calls Batching Instancing MOBILE OPTIMIZATION TECHNIQUES OVERVIEW
  4. 4. Our flagship product 110 million registered users Global 5 years old MOBILE OPTIMIZATION TECHNIQUES
  5. 5. MOBILE OPTIMIZATION TECHNIQUES One codebase GUI heavy game Fragmented mobile market Custom GUI framework TIME TO UPDATE: T11 2015
  6. 6. TOP ELEVEN 2015 Unity! MOBILE OPTIMIZATION TECHNIQUES
  7. 7. MOBILE OPTIMIZATION TECHNIQUES
  8. 8. MOBILE OPTIMIZATION TECHNIQUES Unity Profiler System.Stopwatch norde.us/unite2015 PROFILING
  9. 9. MOBILE OPTIMIZATION TECHNIQUES Discoveries private vs public fields null fields Hierarchy overhead Fixed costs All fixed in Unity 5! DESERIALIZATION
  10. 10. MOBILE OPTIMIZATION TECHNIQUES Solutions Custom binary format Code generation Almost there... DESERIALIZATION
  11. 11. MOBILE OPTIMIZATION TECHNIQUES Well known problem Instantiation is slow Use GameObject pools norde.us/unite2015 INSTANTIATION
  12. 12. Bottom-up TRANSFORM HIERARCHY MOBILE OPTIMIZATION TECHNIQUES
  13. 13. Top- down MOBILE OPTIMIZATION TECHNIQUES TRANSFORM HIERARCHY
  14. 14. Transform setup order matters TRANSFORM HIERARCHY MOBILE OPTIMIZATION TECHNIQUES 10000 msBOTTOM - UP TOP - DOWN 200 ms t [ms]
  15. 15. MOBILE OPTIMIZATION TECHNIQUES
  16. 16. ARRAY RESIZING MOBILE OPTIMIZATION TECHNIQUES
  17. 17. SIZE REFERENCE DATA ARRAY RESIZING MOBILE OPTIMIZATION TECHNIQUES
  18. 18. SIZE DATA REFERENCE Pointers? ARRAY RESIZING MOBILE OPTIMIZATION TECHNIQUES
  19. 19. MOBILE OPTIMIZATION TECHNIQUES You can have pointers in C# Create smcs.rsp -unsafe Write unsafe code norde.us/unite2015 ARRAY RESIZING
  20. 20. MOBILE OPTIMIZATION TECHNIQUESMOBILE OPTIMIZATION TECHNIQUES
  21. 21. MOBILE OPTIMIZATION TECHNIQUESMOBILE OPTIMIZATION TECHNIQUES
  22. 22. MOBILE OPTIMIZATION TECHNIQUES Expensive on mobile devices The future Metal OpenGL AEP Vulkan The present DRAW CALLS
  23. 23. MOBILE OPTIMIZATION TECHNIQUES Huge scene Lots of vertices Fast moving camera Lots of objects DRAW CALLS
  24. 24. Atlasing NVIDIA - Improve Batching Using Texture Atlases STATIC BATCHING MOBILE OPTIMIZATION TECHNIQUES
  25. 25. MOBILE OPTIMIZATION TECHNIQUES Tiling Vertex approach STATIC BATCHING
  26. 26. Vertex tiling TILING MOBILE OPTIMIZATION TECHNIQUES
  27. 27. TILING Tiling Vertex approach Fragment approach MOBILE OPTIMIZATION TECHNIQUES
  28. 28. Fragment tiling TILING MOBILE OPTIMIZATION TECHNIQUES
  29. 29. MOBILE OPTIMIZATION TECHNIQUES Script - Batch meshes ??? Shader - Read tiling data TILING
  30. 30. MOBILE OPTIMIZATION TECHNIQUES Color Normals UV0..3 Tangents VERTEX ATTRIBUTES
  31. 31. MOBILE OPTIMIZATION TECHNIQUES Script - Batch meshes Script - Bake tiling data to tangents Shader - Read tiling data TILING
  32. 32. MOBILE OPTIMIZATION TECHNIQUES Mipmaps problem TILING
  33. 33. MOBILE OPTIMIZATION TECHNIQUES
  34. 34. MOBILE OPTIMIZATION TECHNIQUES Mipmaps problem TILING Mip 0 Mip 9
  35. 35. MOBILE OPTIMIZATION TECHNIQUES PREVIOUS CURRENT
  36. 36. MOBILE OPTIMIZATION TECHNIQUES PREVIOUS CURRENT
  37. 37. MOBILE OPTIMIZATION TECHNIQUES Mipmaps problem Obvious solution - ddx, ddy GL_EXT_shader_texture_lod Supported on iOS Supported on Mali TILING
  38. 38. MOBILE OPTIMIZATION TECHNIQUES Try #1 - Expand texture to the edge of atlas TILING
  39. 39. Try #2 - Mirror texture reads TILING MOBILE OPTIMIZATION TECHNIQUES
  40. 40. Try #3 - Sort textures by color TILING MOBILE OPTIMIZATION TECHNIQUES
  41. 41. MOBILE OPTIMIZATION TECHNIQUES Environments look nicer Less draw calls than before Added complexity in fragment shader TILING
  42. 42. MOBILE OPTIMIZATION TECHNIQUES Scenario - Traffic MOVING OBJECTS
  43. 43. INSTANCING MOBILE OPTIMIZATION TECHNIQUES
  44. 44. MOBILE OPTIMIZATION TECHNIQUES Static batching? Unitys dynamic batching? OpenGL ES 3.0 - Instancing OpenGL ES 2.0? MOVING OBJECTS
  45. 45. MOBILE OPTIMIZATION TECHNIQUES OpenGL ES 3.0 Instance ID Draw Elements Instanced Instance ID - tangents Draw elements Instanced - custom mesh Shader for each N INSTANCING
  46. 46. MOBILE OPTIMIZATION TECHNIQUES
  47. 47. MOBILE OPTIMIZATION TECHNIQUES Vertex shader complexity Mesh memory norde.us/unite2015 INSTANCING
  48. 48. TREES MOBILE OPTIMIZATION TECHNIQUESMOBILE OPTIMIZATION TECHNIQUES
  49. 49. BILLBOARDS Pivot Colors? Normals! #pragma glsl_no_auto_normalization Offset Vertex position Transform matrix in shader Rotate vertices MOBILE OPTIMIZATION TECHNIQUES
  50. 50. MOBILE OPTIMIZATION TECHNIQUES Tradeoff Vertex shader complexity Doesnt work with transparency norde.us/unite2015 BILLBOARDS
  51. 51. MOBILE OPTIMIZATION TECHNIQUES Measure Improve No silver bullet CONCLUSION
  52. 52. MOBILE OPTIMIZATION TECHNIQUES [email protected] [email protected] norde.us/unite2015 Q&A
  53. 53. THANK YOU! MOBILE OPTIMIZATION TECHNIQUES