Vulkan ãããããã¼ ãã¼ã«ãç¨ããéçºç°å¢ã®ãç´¹ä»
2016å¹´4æ20æ¥æ°´ææ¥
Vulkan API ã§å¯è½ã«ãªãæé©å
OpenGL ES 㨠Vulkan ã«ã¯å ±éããé¨åãå¤ãããã¾ãã、Vulkan ã«ã¯、1 ããªç§ãç¡é§ã«ããªããããããã¼ã®çããã®å½¹ã«ç«ã¤æ°æ©è½ãããã¾ã。- ã¡ã¢ãªå²ãå½ã¦ã®ã¢ããªã±ã¼ã·ã§ã³ã«ããå¶å¾¡: Vulkan ã«ã¯、ã¡ã¢ãªã GPU ã«å²ãå½ã¦ãæ¹æ³ãã¿ã¤ãã³ã°ãé常ã«ç´°ããå¶å¾¡ããã¡ã«ããºã ãç¨æããã¦ãã¾ã。ãã®ã¡ã«ããºã ã«ãã£ã¦、èªåã®ã¢ããªã±ã¼ã·ã§ã³ã«é©ããç¬èªã®å²ãå½ã¦ããªã·ã¼ãåå©ç¨ããªã·ã¼ã使ç¨ã§ãã¾ã。æçµçã«ã¯、å®è¡åæ°ãã¡ã¢ãªã®ãªã¼ãã¼ããããæ¸ã、ã³ã¹ãã®ãããã¡ã¢ãªå²ãå½ã¦ã®ã¿ã¤ãã³ã°ãã¢ããªã±ã¼ã·ã§ã³ã§å¶å¾¡ã§ããããã«ãªãã¾ã。
- éåæçãªã³ãã³ãçæ: OpenGL ES ã§ã¯、ã¢ããªã±ã¼ã·ã§ã³ãããã¼ã³ã¼ã«ãå¼ã³åºãã¨、ããã« GPU ã«å¯¾ãã¦ããã¼ã³ã¼ã«ãçºè¡ããã¾ã。ä¸æ¹ Vulkan ã§ã¯、代ããã«ã¢ããªã±ã¼ã·ã§ã³ãããã¼ã³ã¼ã«ãã³ãã³ã ãããã¡ã«å¯¾ãã¦çºè¡ããã®ã§、ããã¼ã³ã¼ã«ãçæãã¦è¨é²ããä½æ¥ã¨、ããã¼ã³ã¼ã«ã GPU ã«å¯¾ãã¦çºè¡ããä½æ¥ãåããããããã«ãªã£ã¦ãã¾ã。ã³ãã³ãçæãããã¤ãã®ã¹ã¬ããã«åæ£ããããã¨ã§、ã¢ããªã±ã¼ã·ã§ã³ã¯è¤æ°ã® CPU ã³ã¢ãããå¹ççã«æ´»ç¨ã§ãã¾ã。ã¾ã、ããããã³ãã³ã ãããã¡ã¯åå©ç¨ã§ããã®ã§、ã³ãã³ãã®çæã¨çºè¡ã«ä¼´ããªã¼ãã¼ããããåæ¸ããã¾ã。
- åããã«ããä½æ¥ã®è§£æ¶: OpenGL ES ã§å°ããã¨ã® 1 ã¤ã、ã³ãã³ãã«ãã£ã¦ä½æ¥ãéå§ãããã¿ã¤ãã³ã°ã«ã¤ã㦠API ä»æ§ã«æ示çã«ç¤ºããã¦ããªã、ã¾ãã¯ãããããã¼ã«å¯¾ãã¦æããã«ããã¦ããªãå ´åãããç¹ã§ã。Vulkan ã§ã¯、ä½æ¥ãæ示çã«éå§ãããã³ãã³ãã¨、ããã§ã¯ãªãã³ãã³ããä»æ§ã§æ示ãã¦ããã®ã§、åä½ãäºæ¸¬ãããããªã、ä¸è²«æ§ãåä¸ãã¦ãã¾ã。
- å®å ¨ãªãã«ã ã¹ã¬ããè¨è¨: OpenGL ES ã¢ããªã±ã¼ã·ã§ã³ã§ã¯、ã¬ã³ããªã³ã°ãäºæ¸¬å¯è½ãªå½¢ã§æ£ç¢ºã«è¡ãããã«、å¿ ã 1 ã¤ã®ã³ã³ããã¹ãã«å¯¾å¿ããã³ãã³ã㯠1 ã¤ã®ã¹ã¬ããããçºè¡ãããã¨ã«ãªã£ã¦ãã¾ã。Vulkan ã§ã¯å¯¾ç §çã«、ããããæ¡ä»¶ããªãã®ã§、ã¢ããªã±ã¼ã·ã§ã³ã¯ã³ãã³ã ãããã¡ã®çæã¨ãã£ãä½æ¥ãããã¤ã並è¡ãã¦è¡ãã¾ã。ããããã®ä¸æ¹ã§、ãã¼ã¿ã®ä¿®æ£ãèªã¿åããè¤æ°ã®ã¹ã¬ããããåæã«å®è¡ããå ´å、ãã®å®å ¨æ§ãæé»çã«ä¿è¨¼ãããããã§ã¯ããã¾ãã。ã¹ã¬ããã®åæã管çãã権éã責任ã¯、ã¢ããªã±ã¼ã·ã§ã³å´ãæã¤ãã¨ã«ãªãã¾ã。
- ã¢ãã¤ã« ãã¬ã³ããªã¼ãªæ©è½: Vulkan ã®æ©è½ã«ã¯、å¤ãã®ã¢ãã¤ã«ç«¯æ«ã§ä½¿ããã¦ãã、ã¿ã¤ãªã³ã°æ¹å¼ã® GPU ã§é«ãããã©ã¼ãã³ã¹ãå®ç¾ããã®ã«ç¹ã«å½¹ç«ã¤ãã®ãããã¾ã。åã ã®ã¬ã³ããªã³ã° ãã¹éã®ç¸äºä½ç¨ã«é¢ããæ å ±ãã¢ããªã±ã¼ã·ã§ã³ã§ç¨æã§ããã®ã§、ã¿ã¤ãªã³ã°æ¹å¼ã® GPU ã¯éãããã¡ã¢ãªå¸¯åå¹ ãå¹æçã«ä½¿ããã¨ãã§ã、ãªããããã§ã®ãã¼ã¿èªã¿åãã®å®è¡ãé¿ãããã¾ã。
- ã·ã§ã¼ãã¼ã®ãªãã©ã¤ã³ ã³ã³ãã¤ã«: Vulkan ã§ã¯、ã·ã§ã¼ãã¼ç¨ã®ä¸éè¨èªã§ãã SPIR-V ããµãã¼ããã¦ãã¾ã。ããã«ãã、ã·ã§ã¼ãã¼ãåãã£ã¦ã³ã³ãã¤ã«ãã¦ããã¦、SPIR-V ãã¤ããªãã¢ããªã±ã¼ã·ã§ã³ã¨ä¸ç·ã«åºè·ãããã¨ãå¯è½ã§ã。ãããããã¤ããªã§ã¯、GLSL ã®ãããªé«æ°´æºè¨èªããã解æãç°¡åã§ã。ãã®ãã、ãã©ã¤ãããã®è§£æãè¡ãå ´åã®ã°ãã¤ããå°ãããªãã¾ã。ã¾ã、SPIR-V ããµãã¼ããããã¨ã§、ç¹å¥ãªã·ã§ã¼ãã£ã³ã°è¨èªãã¯ãã¹ ãã©ãããã©ã¼ã 対å¿ã®ã·ã§ã¼ãã£ã³ã°è¨èªã®ããã®ã³ã³ãã¤ã©ããµã¼ããã¼ãã£ãæä¾ãããã¨ãå¯è½ã«ãªãã¾ã。
- ä»»æã®ãã¼ã«ã«ããæ¤è¨¼ä½æ¥: OpenGL ES ã§ã¯、å¼ã³åºããã³ãã³ãããã¹ã¦æ¤è¨¼ã、è¨å®ãæã¾ããç¯å²å ã«ãããã¨ã、ãªãã¸ã§ã¯ããåä½ã«é©åãªç¶æ ã«ãªã£ã¦ãããã¨ã確èªãã¦ãã¾ã。Vulkan ã¯、ããèªä½ã§ã¯ããããæ¤è¨¼ãè¡ãã¾ãã。代ããã«ä»»æã®ãããã° ãã¼ã«ã使ç¨ãããã¨ã§、Vulkan ã®ã³ãã³ãå¼ã³åºããæ£ç¢ºã§ãã、æçµè£½åã§å®è¡æãªã¼ãã¼ããããçããªããã¨ã確èªããããã«ãªã£ã¦ãã¾ã。
æ¤è¨¼ã¬ã¤ã¤ãç¨ãããããã°
ä¸è¨ã®ã¨ãã、Vulkan å é¨ã«ã¯æ¤è¨¼ã·ã¹ãã ããªãã®ã§、ã³ã¼ããæ¤è¨¼ããããã«ã¯ API å¤é¨ã®ãã¼ã«ã使ç¨ããå¿ è¦ãããã¾ã。Vulkan ã®ã¬ã¤ã¤ ã¡ã«ããºã ã§ã¯、æ¤è¨¼ã³ã¼ãããã®ä»ã®ãããããã¼ ãã¼ã«ã使ã£ã¦、éçºä¸ã«ãã¹ã¦ã® API ã®å¼ã³åºããç¹æ¤ã§ããããã«ãªã£ã¦ãã、åºè·ãã¼ã¸ã§ã³ã«ãªã¼ãã¼ããããå«ããå¿ è¦ãããã¾ãã。Google ãã¾ã¨ããã¬ã¤ãã§ã¯、Android NDK ã§ä½¿ç¨ããæ¤è¨¼ã¬ã¤ã¤ã®æ§ç¯æ¹æ³ã説æã、æåããæå¾ã¾ã§ãã°ã®ãªã Vulkan ã³ã¼ããæ¸ãã®ã«ä¸å¯æ¬ ãªãã¼ã«ãç´¹ä»ãã¦ãã¾ã。ã·ã§ã¼ãã¼ ãã¼ã«ãã§ã¼ã³ã«ããéçº
Shaderc ã¨ãããã¼ã« ã³ã¬ã¯ã·ã§ã³ã«ã¯、GLSL ã SPIR-V ã«ã³ã³ãã¤ã«ããããã®ãã«ã ãã¼ã«ãå®è¡æãã¼ã«ãç¨æããã¦ãã¾ã。ã·ã§ã¼ãã¼ã¯ãã«ãæã«ã³ãã³ãã©ã¤ã³ ã³ã³ãã¤ã©ã® glslc ã使ã£ã¦ã³ã³ãã¤ã«ãããã¨ãå¯è½ã§、æ¢åã®ãã«ã ã·ã¹ãã ã¸ç°¡åã«çµ±åã§ãã¾ã。ã¾ã、å®è¡ä¸ã«ä½æãç·¨éãè¡ãããã·ã§ã¼ãã¼ã¯、Shaderc ã©ã¤ãã©ãªã使ã£ã¦、GLSL ã·ã§ã¼ãã¼ã C ã¤ã³ã¿ã¼ãã§ã¼ã¹çµç±ã§ SPIR-V ã«ã³ã³ãã¤ã«ã§ãã¾ã。ã©ã¡ãã®ãã¼ã«ã、Khronos ã®ãªãã¡ã¬ã³ã¹ ã³ã³ãã¤ã©ã®ä¸ã«æ§ç¯ããã¦ãã¾ã。ãã®ä»ã®ãªã½ã¼ã¹
Vulkan ã®ã¨ã³ã·ã¹ãã ã¯åºå¤§ã§ã。å°å ¥ã¨æ´»ç¨ã®ããã®ãªã½ã¼ã¹ã、åèè³æãè±å¯ã«ç¨æããã¦ãã¾ã。- Khronos ã«ãã Vulkan é¢é£ãªã½ã¼ã¹ã«ã¯、æ¦è¦ã、åèã«ãªãã¦ã§ããã¼ã¸、ä»æ§、ã¦ã¼ã¶ã¼ ã³ãã¥ããã£ã«ãã Vulkan ã®ãã¢ãããã¾ã。
- Android ã®ãµã³ãã«
- Android ã®ãã¥ã¼ããªã¢ã«
- LunarG ã® LunarXchange ã«ã¯、Windows 㨠Linux 㧠Vulkan éçºãè¡ãããã®ãªã½ã¼ã¹ãããã¾ã。
ãã²ãã® Android ç Vulkan ã®ãã¬ãã¥ã¼ãéçºä½æ¥ã®åèã«ãã¦ãã ãã。
Posted by Ryosuke Matsuuchi - Developer Relations Team