
äžçã«ã¯OpenGLäžã«èšå€§ãªæ°ã®ã¢ããªã±ãŒã·ã§ã³ããããAppleã¯ããã«ãŸã£ããåæããŠããªãããã§ãã iOS 12ããã³MacOS MojaveãããOpenGLã¯éæšå¥šã«ãªããŸããã Apple MetalãMAPS.MEã«çµ±åããçµéšãšçµæãå ±æããæºåãæŽããŸããã ã°ã©ãã£ãã¯ãšã³ãžã³ããªãã¡ã¯ã¿ãªã³ã°ããæ¹æ³ãçŽé¢ããªããã°ãªããªãå°é£ããããŠæãéèŠãªããšã¯ãçŸåšFPSãããã€ãããã説æããŸãã
ã°ã©ãã£ãã¯ãšã³ãžã³ã«Apple MetalãµããŒããè¿œå ããããšã«èå³ãããããæ€èšããŠãã人ã¯èª°ã§ãcatãæè¿ããŸãã
çºè¡
ç§ãã¡ã®ã°ã©ãã£ãã¯ãšã³ãžã³ã¯ã¯ãã¹ãã©ãããã©ãŒã ãšããŠèšèšãããŠãããå®éãOpenGLã¯ç§ãã¡ãèå³ãæã£ãŠããäžé£ã®ãã©ãããã©ãŒã ïŒiOSãAndroidãMacOSãLinuxïŒã®ããã®å¯äžã®ã¯ãã¹ãã©ãããã©ãŒã ã°ã©ãã£ãã¯APIã§ããããããããããŒã¹ãšããŠéžæããŸããã OpenGLåºæã®æ©èœãé ãè¿œå ã®æœè±¡åã¬ãã«ã¯äœæããŸããã§ãããã幞ããªããšã«ããã®å®è£ ã®å¯èœæ§ã¯æ®ãããŠããŸããã
æ°äžä»£ã®ã°ã©ãã£ãã¯ã¹APIã§ããApple MetalãšVulkanã®åºçŸã«ããããã¡ãããã¢ããªã±ãŒã·ã§ã³ã§ããããåºçŸããå¯èœæ§ãæ€èšããŸãããã次ã®ããšããããŸããã
- Vulkanã¯AndroidãšLinuxã§ã®ã¿åäœããApple Metalã¯iOSãšMacOSã§ã®ã¿åäœããŸããã ã°ã©ãã£ãã¯APIã®ã¬ãã«ã§ã¯ãã¹ãã©ãããã©ãŒã æ§ã倱ããããããŸããã§ãããããã«ãããéçºãšãããã°ã®ããã»ã¹ãè€éã«ãªããäœæ¥éãå¢å ããŸãã
- Apple Metaläžã®ã¢ããªã±ãŒã·ã§ã³ã¯ãiOSã·ãã¥ã¬ãŒã¿äžã§ãã«ãããŠå®è¡ããããšã¯ã§ããŸããïŒãããŸã§ã®ãšããïŒãããã¯éçºãè€éã«ããOpenGLãå®å šã«åé€ããããšãã§ããŸããã
- å éšããŒã«ã®äœæã«äœ¿çšããQtãã¬ãŒã ã¯ãŒã¯ã¯ãOpenGLã®ã¿ããµããŒãããŸããïŒ VulkanããµããŒããããããã«ãªããŸãã ïŒã
- Apple Metalã«ã¯C ++ APIããããŸããã§ãããããã«ãããã©ã³ã¿ã€ã ã ãã§ãªãããšã³ãžã³ã®äžéšãObjective-C ++ã§ã³ã³ãã€ã«ãããŠããå Žåãã¢ããªã±ãŒã·ã§ã³ã®ãã«ã段éã§ãæœè±¡åãå¿ èŠã«ãªããŸãã
- iOSå°çšã®ãšã³ãžã³ãŸãã¯ã³ãŒããã©ã³ããåå¥ã«äœæããæºåãã§ããŠããŸããã§ããã
- 1人ã®ã°ã©ãã£ãã¯éçºè ã®äœæ¥ã§ãå°ãªããšã6ãæéãå®è£ ãè©äŸ¡ãããŸããã
2018幎æ¥ã«AppleãOpenGLã®å»æ¢äºå®ã¹ããŒã¿ã¹ãžã®ç§»è¡ãçºè¡šãããšãã延æããããšã¯ãã¯ãäžå¯èœã§ãããäžèšã®åé¡ã¯äœããã®æ¹æ³ã§è§£æ±ºããå¿ èŠãããããšãæããã«ãªããŸããã ããã«ãç§ãã¡ã¯ã¢ããªã±ãŒã·ã§ã³ã®é床ãšæ¶è²»é»åã®äž¡æ¹ã®æé©åã«é·ãéåãçµãã§ããŸããããApple Metalãå©ãã«ãªã£ãããã§ãã
決å®ã®éžæ
ããã«MoltenVKã«æ°ä»ããŸãã ã ãã®ãã¬ãŒã ã¯ãŒã¯ã¯Apple Metalã䜿çšããŠVulkan APIããšãã¥ã¬ãŒããããã®ãœãŒã¹ã³ãŒãã¯æè¿å ¬éãããŸããã MoltenVKã䜿çšãããšãOpenGLãVulkanã«çœ®ãæããããšãã§ããApple Metalã®åå¥ã®çµ±åã«å¯ŸåŠããå¿ èŠããŸã£ãããªãããã§ãã ããã«ãQtéçºè ã¯MoltenVKãæ¯æããŠApple Metalã§ã®ã¬ã³ããªã³ã°ã®åå¥ãµããŒããæåŠããŸããã ãã ããåæ¢ããŸããã
- Vulkanãå©çšã§ããªãAndroidããã€ã¹ããµããŒãããå¿ èŠæ§ã
- OpenGLã«ãã©ãŒã«ããã¯ãååšããªããšãiOSã·ãã¥ã¬ãŒã¿ãŒã§èµ·åã§ããªãã
- MoltenVKãSPIR-VãŸãã¯GLSLãœãŒã¹ã³ãŒãããApple Metalã®ãªã¢ã«ã¿ã€ã ã·ã§ãŒããŒãçæãããããã·ã§ãŒããŒã®ãããã°ããããã¡ã€ãªã³ã°ãããã³ããªã³ã³ãã€ã«ã«AppleããŒã«ã䜿çšã§ããªãã
- Metalã®æ°ããããŒãžã§ã³ããªãªãŒã¹ããããšããMoltenVKã®æŽæ°ãšãã°ä¿®æ£ãåŸ ã€å¿ èŠã
- Metalã«åºæã®åŸ®åŠãªæé©åã¯äžå¯èœã§ãããVulkanã«ã¯åºæã§ã¯ãªãããååšããŸããã
OpenGLãä¿åããå¿ èŠãããããšãããããŸãããã€ãŸããã°ã©ãã£ã«ã«APIãããšã³ãžã³ãæœè±¡åããªããšãã§ããŸããã Apple MetalãOpenGL ESãããã³å°æ¥çã«ã¯Vulkanã䜿çšããŠãã°ã©ãã£ãã¯ãšã³ãžã³ã®ç¬ç«ããå éšã³ã³ããŒãã³ããäœæããŸãããããã¯å®å šã«äº€æå¯èœã§ãã äœããã®çç±ã§MetalãŸãã¯Vulkanãå©çšã§ããªãå ŽåãOpenGLã¯ãã©ãŒã«ããã¯ãªãã·ã§ã³ã®åœ¹å²ãæãããŸãã
å®è£ èšç»ã¯æ¬¡ã®ãšããã§ããã
- 䜿çšãããã°ã©ãã£ãã¯ã¹APIãæœè±¡åããã°ã©ãã£ãã¯ã¹ãšã³ãžã³ãªãã¡ã¯ã¿ãªã³ã°ã
- iOSããŒãžã§ã³ã®ã¢ããªã®Apple Metalã«ã¬ã³ããªã³ã°ããŸãã
- ã¬ã³ããªã³ã°é床ãšæ¶è²»é»åã®é©åãªãã³ãããŒã¯ãè¡ããææ°ã®äœã¬ãã«ã®ã°ã©ãã£ãã¯ã¹APIã補åã«åœ¹ç«ã€ãã©ããã確èªããŸãã
OpenGLãšMetalã®äž»ãªéã
ã°ã©ãã£ã«ã«APIãæœè±¡åããæ¹æ³ãç解ããããã«ããŸãOpenGLãšMetalã®äž»èŠãªæŠå¿µäžã®éããå€æããŸãããã
- Metalã¯äœã¬ãã«ã®APIã§ãããšèããããŸãããçç±ã¯ãããŸããã ãã ããããã¯ã¢ã»ã³ãã©ãŒã§èšè¿°ããããã©ã¹ã¿ã©ã€ãºãèªåã§å®è£ ããå¿ èŠããããšããæå³ã§ã¯ãããŸããã Metalã¯ãéåžžã«å°æ°ã®æé»çãªã¢ã¯ã·ã§ã³ãå®è¡ãããšããæå³ã§ãäœã¬ãã«APIãšåŒã°ããŸããã€ãŸããã»ãšãã©ãã¹ãŠã®ã¢ã¯ã·ã§ã³ã¯ããã°ã©ããŒèªèº«ã«æžã蟌ãŸããå¿ èŠããããŸãã OpenGLã¯ãOpenGLã³ã³ããã¹ããžã®æé»çãªåç §ããµããŒããããã®ã³ã³ããã¹ããäœæãããã¹ããªãŒã ã«ãªã³ã¯ããããšããå§ããŠãæé»çã«å€ãã®ããšãè¡ããŸãã
- Metalã§ã¯ãããŒã ã®ãªã¢ã«ã¿ã€ã æ€èšŒã¯ããããŸãããã ãããã°ã¢ãŒãã§ã¯ããã¡ããæ€èšŒãååšããXcodeãšã®ç·å¯ãªçµ±åã®ãããã§ãä»ã®å€ãã®APIãããã¯ããã«åªããŠããŸãã ããããããã°ã©ã ããŠãŒã¶ãŒã«éä¿¡ããããšãæ€èšŒã¯è¡ãããªããªããããã°ã©ã ã¯æåã®ãšã©ãŒã§åçŽã«ã¯ã©ãã·ã¥ããŸãã èšããŸã§ããªããOpenGLã¯æã極端ãªå Žåã«ã®ã¿ã¯ã©ãã·ã¥ããŸãã æãäžè¬çãªæ¹æ³ã¯ããšã©ãŒãç¡èŠããŠäœæ¥ãç¶è¡ããããšã§ãã
- Metalã¯ã·ã§ãŒããŒãããªã³ã³ãã€ã«ããããããã©ã€ãã©ãªãæ§ç¯ã§ããŸãã OpenGLã§ã¯ãã·ã§ãŒããŒã¯ããã°ã©ã ã®ããã»ã¹ã§ãœãŒã¹ããã³ã³ãã€ã«ãããŸããããã¯ãç¹å®ã®ããã€ã¹ã§ã®OpenGLã®ç¹å®ã®äœã¬ãã«å®è£ ãæ åœããããã§ãã ã·ã§ãŒããŒã³ã³ãã€ã©ã®å®è£ ã®éãããšã©ãŒã¯ãç¹ã«äžåœãã©ã³ãã®Androidããã€ã¹ã§ãçŽ æŽããããã°ãåŒãèµ·ããããšããããŸãã
- OpenGLã¯ãã»ãšãã©ãã¹ãŠã®æ©èœã«å¯äœçšãè¿œå ããã¹ããŒããã·ã³ãç©æ¥µçã«äœ¿çšããŸãã ãããã£ãŠãOpenGLé¢æ°ã¯çŽç²ãªé¢æ°ã§ã¯ãªããé åºãšåŒã³åºãå±¥æŽãéèŠã«ãªãããšããããããŸãã Metalã¯æé»çã«ã¹ããŒãã䜿çšãããã¬ã³ããªã³ã°ã«å¿ èŠãªç¶æ ãããé·ãä¿æããŸããã ç¶æ ã¯ãäºåã«äœæããã倱æãããªããžã§ã¯ããšããŠååšããŸãã
ã°ã©ãã£ãã¯ãšã³ãžã³ã®ãªãã¡ã¯ã¿ãªã³ã°ãšåã蟌ã¿
ã°ã©ãã£ãã¯ãšã³ãžã³ããªãã¡ã¯ã¿ãªã³ã°ããããã»ã¹ã¯ãåºæ¬çã«ããšã³ãžã³ãç©æ¥µçã«äœ¿çšããŠããOpenGLæ©èœãåãé€ãããã®æé©ãªãœãªã¥ãŒã·ã§ã³ãèŠã€ããããšã§æ§æãããŠããŸããã ããããã®æ®µéããå§ãŸãåã蟌ã¿éå±ã¯ã䞊è¡ããŠå®è¡ãããŸããã
- æ¢ã«è¿°ã¹ãããã«ãOpenGL APIã«ã¯ã³ã³ããã¹ããšåŒã°ããæé»çãªãšã³ãã£ãã£ããããŸãã ã³ã³ããã¹ãã¯ç¹å®ã®ã¹ã¬ããã«é¢é£ä»ããããŠããããã®ã¹ã¬ããã§åŒã³åºãããOpenGLé¢æ°ã¯ãã®ã³ã³ããã¹ããèŠã€ããŠäœ¿çšããŸãã MetalãVulkanïŒã¯ããããã³Direct3Dãªã©ã®ä»ã®APIïŒã¯ãã®æ¹æ³ã§ã¯æ©èœãããããã€ã¹ãŸãã¯ã€ã³ã¹ã¿ã³ã¹ãšåŒã°ããåæ§ã®æ瀺çãªãªããžã§ã¯ããæã£ãŠããŸãã ãŠãŒã¶ãŒèªèº«ããããã®ãªããžã§ã¯ããäœæããç°ãªããµãã·ã¹ãã ãžã®è»¢éãæ
åœããŸãã ãããã®ãªããžã§ã¯ããä»ããŠãã°ã©ãã£ãã¯ã³ãã³ããžã®ãã¹ãŠã®åŒã³åºããè¡ãããŸãã
æœè±¡ãªããžã§ã¯ããã°ã©ãã£ã«ã«ã³ã³ããã¹ããšåŒã³ãOpenGLã®å Žåã¯OpenGLã³ãã³ãã®åŒã³åºããåã«è£ 食ããMetalã®å Žåã¯Metalã³ãã³ããåŒã³åºãMTLDeviceã«ãŒãã€ã³ã¿ãŒãã§ã€ã¹ãå«ã¿ãŸãã
ãã¡ããããã¹ãŠã®ãµãã·ã¹ãã ã«ãã®ãªããžã§ã¯ããåæ£ããªããã°ãªããŸããã§ããïŒãããŠããã«ãã¹ã¬ããã¬ã³ããªã³ã°ã䜿çšããŠããããããã®ãããªãªããžã§ã¯ããããã€ããããŸããïŒã
OpenGLã«ã¯ååšããªããšã³ãã£ãã£ãåºããªãããã«ãã³ãã³ãããšã³ã³ãŒããŒãããã³ãããã®ç®¡çãã°ã©ãã£ã«ã«ã³ã³ããã¹ãå ã«äœæããããšãé ããŸããã - ãŠãŒã¶ãŒããã€ã¹äžã®ã°ã©ãã£ãã¯ã³ãã³ãã®æ€èšŒãæ¶ããèŠèŸŒã¿ã¯ãç§ãã¡ã«ãšã£ãŠå ¬ç¶ãšåã°ããŸããã§ããã QAéšéã§ã¯ãããŸããŸãªããã€ã¹ãšOSããŒãžã§ã³ãå®å šã«ã«ããŒã§ããŸããã§ããã ãã®ããã以åã«ã°ã©ãã£ã«ã«APIããæå³ã®ãããšã©ãŒãåãåã£ãå Žæã«è©³çŽ°ãªãã°ãè¿œå ããå¿ èŠããããŸããã ãã¡ããããã®æ€èšŒã¯ã°ã©ãã£ãã¯ãšã³ãžã³ã®æœåšçã«å±éºã§éèŠãªå Žæã«ã®ã¿è¿œå ãããŸãããããã¯ããšã³ãžã³å šäœã蚺æã³ãŒãã§èŠãããšã¯å®éäžäžå¯èœã§ãããäžè¬ã«ããã©ãŒãã³ã¹ã«æ害ã§ããããã§ãã æ°ããçŸå®ã¯ããŠãŒã¶ãŒã®ãã¹ããšãã°ã®ãããã°ããå°ãªããšãã¬ã³ããªã³ã°ã«é¢ããŠã¯éå»ã®ãã®ã«ãªã£ãããšã§ãã
- 以åã®ã·ã§ãŒããŒã·ã¹ãã ã¯ãªãã¡ã¯ã¿ãªã³ã°ã«é©ããŠããªããããå®å šã«æžãçŽãå¿ èŠããããŸããã ããã§ã®ãã€ã³ãã¯ãã·ã§ãŒããŒã®ããªã³ã³ãã€ã«ãšãããžã§ã¯ãã¢ã»ã³ããªã®æ®µéã§ã®æ€èšŒã ãã§ã¯ãããŸããã OpenGLã¯ãããããåäžå€æ°ã䜿çšããŠããã©ã¡ãŒã¿ãŒãã·ã§ãŒããŒã«æž¡ããŸãã æ§é åããŒã¿è»¢éã¯OpenGL ES 3.0ã§ã®ã¿äœ¿çšã§ããOpenGL ES 2.0ãåŒãç¶ããµããŒãããŠããããããã®æ¹æ³ã¯äœ¿çšããŸããã§ããã Metalã¯ããŒã¿æ§é ã䜿çšããŠãã©ã¡ãŒã¿ãŒãæž¡ãããšãäœåãªããããOpenGLã®å Žåãæ§é ãã£ãŒã«ããçµ±äžå€æ°ã«ãããã³ã°ããå¿ èŠããããŸããã ããã«ãMetal Shading Languageã§åã·ã§ãŒããŒãæžãçŽãå¿ èŠããããŸããã
- ç¶æ ãªããžã§ã¯ãã䜿çšãããšããç§ãã¡ã¯ããªãã¯ã«è¡ããªããã°ãªããŸããã§ããã OpenGLã§ã¯ããã¹ãŠã®ç¶æ ã¯ãååãšããŠãã¬ã³ããªã³ã°ã®çŽåã«èšå®ãããMetalã§ã¯ã以åã«äœæããã³æ€èšŒããããªããžã§ã¯ãã§ããå¿ èŠããããŸãã æããã«ãç§ãã¡ã®ãšã³ãžã³ã¯OpenGLã¢ãããŒãã䜿çšããŠãããç¶æ ãªããžã§ã¯ãã®äºåäœæã«ãããªãã¡ã¯ã¿ãªã³ã°ã¯ããšã³ãžã³ã®å®å šãªæžãçŽãã«å¯Ÿå¿ããŠããŸãã ãã®ããŒããã«ããããããã«ãã°ã©ãã£ã«ã«ã³ã³ããã¹ãå ã«ç¶æ ãã£ãã·ã¥ãäœæããŸããã ç¶æ ãã©ã¡ãŒã¿ãŒã®äžæã®çµã¿åãããåããŠçæããããšãç¶æ ãªããžã§ã¯ããMetalã§äœæããããã£ãã·ã¥ã«é 眮ãããŸãã 2åç®ä»¥éã¯ããªããžã§ã¯ãã¯åã«ãã£ãã·ã¥ããååŸãããŸãã ç¶æ ãã©ã¡ãŒã¿ãŒã®ããŸããŸãªçµã¿åããã®æ°ãå€ãããªãïŒçŽ20ã30ïŒãããããã¯ãããã§æ©èœããŸãã è€éãªã²ãŒã ã°ã©ãã£ãã¯ãšã³ãžã³ã®å Žåããã®æ¹æ³ã¯ããŸãé©ããŠããŸããã
ãã®çµæãçŽ5ãæã®äœæ¥ã®åŸãApple Metalã§å®å šãªã¬ã³ããªã³ã°ãè¡ã£ãŠåããŠMAPS.MEãèµ·åããããšãã§ããŸããã äœãèµ·ãã£ãã®ããç¥ãæãæ¥ãŸããã
ã¬ã³ããªã³ã°é床ã®ãã¹ã
å®éšææ³
å®éšã§ã¯ãç°ãªãäžä»£ã®Appleããã€ã¹ã䜿çšããŸããã ãããã¯ãã¹ãŠiOS 12ã«æŽæ°ãããŸãããåããŠãŒã¶ãŒã¹ã¯ãªããããã¹ãŠã§å®è¡ãããŸãã-ãããããã²ãŒã·ã§ã³ïŒç§»åãšã¹ã±ãŒãªã³ã°ïŒã ã¹ã¯ãªããã¯ãåããã€ã¹ã§èµ·åããããã³ã«ãã¢ããªã±ãŒã·ã§ã³å ã®ããã»ã¹ã®ã»ãŒå®å šãªèå¥ãä¿èšŒããããã«ã¹ã¯ãªããåãããŸããã ãã¹ãå ŽæãšããŠãããµã³ãŒã«ã¹ãšãªã¢ãéžæããŸãããããã¯ãMAPS.MEã§æãè² è·ã®é«ããšãªã¢ã®1ã€ã§ãã
æåã«ãOpenGL ES 3.0ã§ã¬ã³ããªã³ã°ããŠã¹ã¯ãªãããå®è¡ãã次ã«Apple Metalã§ã¬ã³ããªã³ã°ããåãããã€ã¹ã§å®è¡ããŸããã èµ·åã®éã«ãã¢ããªã±ãŒã·ã§ã³ã¯ã¡ã¢ãªããå®å šã«ã¢ã³ããŒããããŸããã
次ã®ææšã枬å®ãããŸããã
- ãã¬ãŒã å šäœã®FPSïŒ1ç§ãããã®ãã¬ãŒã æ°ïŒã
- ããŒã¿ã®æºåããã®ä»ã®ãã¬ãŒã ããšã®æäœãé€ããã¬ã³ããªã³ã°ã®ã¿ãæ±ããã¬ãŒã ã®éšåã®FPSã
- é ããã¬ãŒã ã®å²åïŒæ倧30ããªç§ïŒãã€ãŸã 人éã®ç®ãããã¡ãªãããã«ç¥èŠã§ãããã®ã
FPSã枬å®ããå Žåãããã€ã¹ã®ç»é¢ã«çŽæ¥æç»ããããšã¯é€å€ãããŸãããããã¯ãç»é¢ã®ãªãã¬ãã·ã¥ã¬ãŒããšã®åçŽåæã§ã¯ä¿¡é Œã§ããçµæãåŸãããªãããã§ãã ãããã£ãŠããã¬ãŒã ã¯ã¡ã¢ãªå ã®ãã¯ã¹ãã£ã«æç»ãããŸããã CPUãšGPUãåæããããã«ãOpenGLã¯
glFinish
ãžã®è¿œå ã®åŒã³åºãã䜿çšããApple Metalã¯
waitUntilCompleted
ã«
MTLFrameCommandBuffer
䜿çšã
MTLFrameCommandBuffer
ã
iPhone 6s | iPhone 7以é | iPhone 8 | ||||
---|---|---|---|---|---|---|
Opengl | ã¡ã¿ã« | Opengl | ã¡ã¿ã« | Opengl | ã¡ã¿ã« | |
Fps | 106 | 160 | 159 | 221 | 196 | 298 |
FPSïŒã¬ã³ããªã³ã°ã®ã¿ïŒ | 157 | 596 | 247 | 597 | 271 | 833 |
é ããã¬ãŒã ã®å²åïŒ<30 fpsïŒ | 4.13ïŒ | 1.25ïŒ | 5.45ïŒ | 0.76ïŒ | 1.5ïŒ | 0.29ïŒ |
iPhone X | iPad Pro 12.9 ' | |||
---|---|---|---|---|
Opengl | ã¡ã¿ã« | Opengl | ã¡ã¿ã« | |
Fps | 145 | 210 | 104 | 137 |
FPSïŒã¬ã³ããªã³ã°ã®ã¿ïŒ | 248 | 705 | 147 | 463 |
é ããã¬ãŒã ã®å²åïŒ<30 fpsïŒ | 0.15ïŒ | 0.15ïŒ | 17.52ïŒ | 4.46ïŒ |
iPhone 6s | iPhone 7以é | iPhone 8 | iPhone X | iPad Pro 12.9 ' | |
---|---|---|---|---|---|
Metaläžã®ãã¬ãŒã ã®å éïŒNåïŒ | 1,5 | 1.39 | 1,52 | 1.45 | 1.32 |
ã¡ã¿ã«ã¬ã³ããªã³ã°ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ïŒNåïŒ | 3.78 | 2.41 | 3.07 | 2.84 | 3.15 |
ã¹ããŒãã¬ãŒã ã®æ¹åïŒNåïŒ | 3.3 | 7.17 | 5.17 | 1 | 3.93 |
çµæåæ
Apple Metalã䜿çšãããã¬ãŒã ããã©ãŒãã³ã¹ã®åäžã¯å¹³åã§43ïŒ ã§ããã iPad Pro 12.9ã§æå°å€ã¯åºå®-32ïŒ ãiPhone 8ã§ã¯æ倧-52ïŒ ãç»é¢è§£å床ãäœãã»ã©ãApple MetalãOpenGL ES 3.0ãäžåããŸãã
ã¬ã³ããªã³ã°ã«çŽæ¥é¢äžãããã¬ãŒã ã®éšåãè©äŸ¡ãããšãApple Metalã®ã¬ã³ããªã³ã°é床ã¯å¹³åã§3åã«ãªããŸããã ããã¯ãçµç¹ãå€§å¹ ã«æ¹åãããŠããããšã瀺ãããã®çµæãOpenGL ES 3.0ãšæ¯èŒããŠApple Metal APIã®å¹çãåäžããŠããŸãã
Apple Metalã§ã®äœéãã¬ãŒã ïŒã30 ms以äžïŒã®æ°ã¯ãçŽ4åæžå°ããŸããã ããã¯ãã¢ãã¡ãŒã·ã§ã³ã®èªèãšãããå ã®ç§»åãããã¹ã ãŒãºã«ãªã£ãããšãæå³ããŸãã ææªã®çµæã¯iPad Pro 12.9ã«èšé²ããã解å床ã¯2732 x 2048ãã¯ã»ã«ã§ãããOpenGLES 3.0ã¯çŽ17.5ïŒ ã®äœéãã¬ãŒã ãæäŸããŸãããApple Metalã¯ããã4.5ïŒ ã§ãã
é»åè©Šéš
å®éšææ³
iOS 12äžã®iPhone 8ã§æ¶è²»é»åããã¹ãããŸãããåããŠãŒã¶ãŒã·ããªãªãå®è¡ããŸãã-1æéã®ãããããã²ãŒã·ã§ã³ïŒç§»åãšã¹ã±ãŒãªã³ã°ïŒã ã¹ã¯ãªããã¯ãåèµ·åæã«ã¢ããªã±ãŒã·ã§ã³å ã®ããã»ã¹ã®ã»ãŒå®å šãªèå¥ãä¿èšŒããããã«ã¹ã¯ãªããåãããŸããã ããµã³ãŒã«ã¹å°åããã¹ãå ŽæãšããŠéžã°ããŸããã
ãšãã«ã®ãŒæ¶è²»ã®æž¬å®ã«ã¯ã次ã®ã¢ãããŒãã䜿çšããŸããã ããã€ã¹ãå é»ã«æ¥ç¶ãããŠããŸããã éçºè ã®èšå®ã§ã¯ãé»åãã°ãæå¹ã«ãªã£ãŠããŸãã å®éšãéå§ããåã«ãããã€ã¹ã¯å®å šã«å é»ãããŠããŸãã å®éšã¯ã¹ã¯ãªããã®çµããã§çµäºããŸãã å®éšã®æåŸã«ãããããªãŒã®å é»ç¶æ ãèšé²ãããXcodeã§ããããªãŒã®ãããã¡ã€ã«ãäœæããããã«ãé»åæ¶è²»ãã°ããŠãŒãã£ãªãã£ã«ã€ã³ããŒããããŸããã GPUã«è²»ããããéé¡ãèšé²ããŸããã ããã«ãã¡ããã¹ããŒã ã®è¡šç€ºãšãã«ã¹ã¯ãªãŒã³ã¢ã³ããšã€ãªã¢ã¹ãå«ããããšã§ãã¬ã³ããªã³ã°ãããã«è€éã«ããŸããã
ç»é¢ã®æããã¯ããã¹ãŠã®å Žåã§å€åããŸããã§ããã systemããã³MAPS.ME以å€ã®ããã»ã¹ã¯å®è¡ãããŸããã§ããã æ©å ã¢ãŒãããªã³ã«ãªããWi-FiãšGPSããªãã«ãªããŸããã ããã«ãããã€ãã®å¶åŸ¡æž¬å®ãå®è¡ãããŸããã
ãã®çµæãåææšã«ã€ããŠãMetalãšOpenGLã®æ¯èŒãè¡ããããã®åŸãæ¯çãå¹³ååãããŠ1ã€ã®éèšãããæšå®å€ãåŸãããŸããã
Opengl | ã¡ã¿ã« | ã²ã€ã³ | |
---|---|---|---|
ããããªãŒæ¶è | 32ïŒ | 28ïŒ | 12.5ïŒ |
Xcodeã§ã®ããããªãŒäœ¿çšéã®ãããã¡ã€ãªã³ã° | 1.95ïŒ | 1.83ïŒ | 6.16ïŒ |
çµæåæ
Apple Metalã®ã¬ã³ããªã³ã°ããŒãžã§ã³ã®æ¶è²»é»åã¯ãå¹³åããŠãããã«æ¹åãããŠããŸãã GPUã®äœ¿çšã«é¢ããŠMAPS.MEãé«è² è·ãšåŒã¶ããšã¯ã§ããªããããGPUã¢ããªã±ãŒã·ã§ã³ã®æ¶è²»é»åã¯çŽ2ïŒ ã»ã©ã®åœ±é¿ãåããŸããã CPUã§GPUã®åœä»€ãæºåããéã®èšç®ã³ã¹ããåæžããããšã§ãããããããããªå©çãåŸãããŸãããæ®å¿µãªããããããã¡ã€ãªã³ã°ããŒã«ã§ã¯åºå¥ã§ããŸããã
ãŸãšã
Metalãåã蟌ããšãéçºã«5ãæããããŸããã ãã ããã»ãšãã©ã®å Žåã2人ã®éçºè ãé çªã«ãããè¡ããŸããã æããã«ãã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããšãã«ã®ãŒæ¶è²»ããããã«åäžããŸããã ããã«ãæ°ããã°ã©ãã£ãã¯APIãç¹ã«Vulkanãã¯ããã«å°ãªãåŽåã§åã蟌ãæ©äŒããããŸããã ã°ã©ãã£ãã¯ãšã³ãžã³ãã»ãŒå®å šã«ãæŽçããããã®çµæãããã€ãã®å€ããã°ãšããã©ãŒãã³ã¹ã®åé¡ãèŠã€ããŠä¿®æ£ããŸããã
ç§ãã¡ã®ãããžã§ã¯ããæ¬åœã«Apple Metalã§ã®ã¬ã³ããªã³ã°ãå¿ èŠãšãããã©ãããšãã質åã«ãç§ãã¡ã¯è¯å®çã«çããçšæãã§ããŠããŸãã ç§ãã¡ãã€ãããŒã·ã§ã³ãæããŠããã®ã§ã¯ãªããAppleãã€ãã«OpenGLãæŸæ£ã§ããã®ã§ã¯ãããŸããã ããã¯ã¡ããã©2018幎ã§ãããOpenGLã¯1997幎ã«ç»å ŽããŸããã次ã®ã¹ãããã«é²ããšãã§ãã
PSãã¹ãŠã®iOSããã€ã¹ã§ãã®æ©èœãéå§ãããŸã§ã æåã§ãªã³ã«ããã«ã¯ãæ€çŽ¢ããŒã«
?metal
ããŠãã¢ããªã±ãŒã·ã§ã³ãåèµ·åããŸãã ã¬ã³ããªã³ã°ãOpenGLã«æ»ãã«ã¯ã
?gl
ã³ãã³ããå ¥åããŠãã¢ããªã±ãŒã·ã§ã³ãåèµ·åããŸãã
PPS MAPS.MEã¯ããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãã ãœãŒã¹ã³ãŒãã¯githubã§èªãããšãã§ããŸãã