WebGLã¢ããªã±ãŒã·ã§ã³ã§æé«ã®ããã©ãŒãã³ã¹ãåŒãåºãããã«ãGPUã¡ã¢ãªéå±€ããã¹ã¿ãŒããŸããããã°ããŒãã«éçºè åãã®ãã«ãã¬ãã«ã¡ã¢ãªæé©åæŠç¥ã解説ããŸãã
WebGL GPUã¡ã¢ãªé局管çïŒã°ããŒãã«éçºè åãã®ãã«ãã¬ãã«ã¡ã¢ãªæé©å
æ¥éã«é²åãããŠã§ãã°ã©ãã£ãã¯ã¹ã®äžçã«ãããŠãWebGLã¯ããã©ãŠã¶å ã§çŽæ¥ããªããã§ã€ã³ã¿ã©ã¯ãã£ããª3Däœéšãå®çŸããåºç€ãšããŠååšããŸãããããã®ã¢ããªã±ãŒã·ã§ã³ã®è€éããšå¿ å®åºŠãå¢ãã«ã€ããŠãGPUãªãœãŒã¹ãç¹ã«GPUã¡ã¢ãªãžã®èŠæ±ãé«ãŸããŸãããã®è²ŽéãªãªãœãŒã¹ãå¹ççã«ç®¡çããããšã¯ããã¯ãã°ã©ãã£ãã¯ã¹ã®å°éå®¶ã ãã®ããããªé¢å¿äºã§ã¯ãªããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«é«æ§èœã§ã¢ã¯ã»ã¹ããããäœéšãæäŸããäžã§éèŠãªèŠçŽ ãšãªã£ãŠããŸãããã®èšäºã§ã¯ãWebGL GPUã¡ã¢ãªé局管çã®è€éããæãäžãã倿§ãªããã€ã¹ã§æé«ã®ããã©ãŒãã³ã¹ãåŒãåºãããã®ãã«ãã¬ãã«æé©åæŠç¥ãæ¢ããŸãã
GPUã¡ã¢ãªéå±€ã®çè§£
æé©åãè¡ãåã«ãå°åœ¢ãçè§£ããå¿ èŠããããŸããGPUã¡ã¢ãªã¯äžæå²©ã®ãããã¯ã§ã¯ãããŸãããé床ã容éãã³ã¹ãã®ãã©ã³ã¹ãåãããã«èšèšãããè€éãªéå±€ã§ããWebGLéçºè ã«ãšã£ãŠããã®éå±€ãçè§£ããããšã¯ãã€ã³ããªãžã§ã³ããªã¡ã¢ãªç®¡çãžã®ç¬¬äžæ©ã§ãã
1. GPUã¡ã¢ãªïŒVRAMïŒ
GPUã§å©çšã§ããæãäž»èŠã§é«éãªã¿ã€ãã®ã¡ã¢ãªã¯ãå°çšã®ãããªRAMïŒVRAMïŒã§ããããã«ã¯ããã¯ã¹ãã£ãé ç¹ãããã¡ãã€ã³ããã¯ã¹ãããã¡ããã¬ãŒã ãããã¡ãããã³ãã®ä»ã®ã¬ã³ããªã³ã°åºæã®ããŒã¿ãååšããŸããVRAMã¯ãGPUæäœã«æé«ã®åž¯åå¹ ãšæäœã®ã¬ã€ãã³ã·ãæäŸããŸãã
- ç¹æ§ïŒé«åž¯åå¹ ãäœã¬ã€ãã³ã·ãéåžžã¯å®¹éãéãããŠããŸãïŒçµ±åã°ã©ãã£ãã¯ã¹ã§ã¯æ°ã®ã¬ãã€ãããããã€ãšã³ãã®ãã£ã¹ã¯ãªãŒãGPUã§ã¯æ°åã®ã¬ãã€ãïŒã
- WebGLãžã®åœ±é¿ïŒWebGLã³ãã³ãããçŽæ¥ã¢ã¯ã»ã¹å¯èœã§ããVRAM容éãè¶ ãããšãããŒã¿ãããé ãã·ã¹ãã ã¡ã¢ãªãšäº€æãããå¿ èŠããããããã©ãŒãã³ã¹ãå€§å¹ ã«äœäžããŸãã
2. ã·ã¹ãã ã¡ã¢ãªïŒRAMïŒ
VRAMãäžååãªå ŽåãGPUã¯ã·ã¹ãã RAMã«ã¢ã¯ã»ã¹ã§ããŸããã·ã¹ãã RAMã¯ããè±å¯ã§ããã垯åå¹ ã¯å€§å¹ ã«äœããã¬ã€ãã³ã·ã¯VRAMã«æ¯ã¹ãŠé«ããªããŸããã·ã¹ãã RAMãšVRAMéã®ããŒã¿è»¢éã¯ã³ã¹ãã®ãããæäœã§ãã
- ç¹æ§ïŒVRAMãããäœã垯åå¹ ãé«ãã¬ã€ãã³ã·ãå€§å¹ ã«å€§ããªå®¹éã
- WebGLãžã®åœ±é¿ïŒããŒã¿ã¯ãå¿ èŠãªãšãã«ã·ã¹ãã RAMããVRAMã«è»¢éãããããšããããããŸããé »ç¹ãŸãã¯å€§èŠæš¡ãªè»¢éã¯ãäž»èŠãªããã©ãŒãã³ã¹ã®ããã«ããã¯ã§ãã
3. CPUãã£ãã·ã¥ãšGPUãã£ãã·ã¥
CPUãšGPUã®äž¡æ¹ããããããã®åŠçãŠãããã«è¿ãé »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ãæ ŒçŽããç¬èªã®å éšãã£ãã·ã¥ãæã£ãŠããŸãããããã®ãã£ãã·ã¥ã¯ãã¡ã€ã³ã¡ã¢ãªãããã¯ããã«å°ãããé«éã§ãã
- ç¹æ§ïŒéåžžã«äœãã¬ã€ãã³ã·ãéåžžã«å°ãã容éã
- WebGLãžã®åœ±é¿ïŒéçºè ã¯ãããã®ãã£ãã·ã¥ãçŽæ¥ç®¡çããŸããããå¹ççãªããŒã¿ã¢ã¯ã»ã¹ãã¿ãŒã³ïŒäŸãã°ãã·ãŒã±ã³ã·ã£ã«ãªãŒãïŒã¯æé»ã®ãã¡ã«ããããå©çšã§ããŸããäžååãªããŒã¿å±ææ§ã¯ããã£ãã·ã¥ãã¹ã«ã€ãªãããæäœãé ãããå¯èœæ§ããããŸãã
WebGLã§éå±€åã¡ã¢ãªç®¡çãéèŠãªçç±
ãã®éå±€å šäœã§ã®ã¢ã¯ã»ã¹é床ãšå®¹éã®æ Œå·®ã¯ãæ éãªç®¡çã®å¿ èŠæ§ãç©èªã£ãŠããŸããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠãããã¯ç¹ã«éèŠã§ãããªããªãïŒ
- ããã€ã¹ã®å€æ§æ§ïŒãŠãŒã¶ãŒã¯ããã€ãšã³ãGPUãæèŒãã匷åãªãã¹ã¯ããããããéãããVRAMãšçµ±åã°ã©ãã£ãã¯ã¹ãæèŒããäœé»åã¢ãã€ã«ããã€ã¹ãŸã§ãå¹ åºãããã€ã¹ã§WebGLã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ããŸããæãäœãå ±é忝ã«åãããŠæé©åãããšãå€ãã®ãŠãŒã¶ãŒã«ãšã£ãŠããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ãããããã€ãšã³ãã«åãããŠæé©åãããšããªãŒãã£ãšã³ã¹ã®å€§éšåãé€å€ãããå¯èœæ§ããããŸãã
- ãããã¯ãŒã¯ã¬ã€ãã³ã·ïŒãµãŒããŒããã¢ã»ããããã§ãããããšããããã¯ãŒã¯ã¬ã€ãã³ã·ãçºçããŸãããããã®ã¢ã»ãããã¡ã¢ãªã«ããŒããæ ŒçŽãããã³äœ¿çšãããæ¹æ³ãå¹ççã«ç®¡çããããšã¯ãç¥èŠãããããã©ãŒãã³ã¹ãšå¿çæ§ã«åœ±é¿ãäžããŸãã
- ã³ã¹ããšã¢ã¯ã»ã·ããªãã£ïŒãã€ãšã³ãããŒããŠã§ã¢ã¯é«äŸ¡ã§ããé©åã«æé©åãããWebGLã¢ããªã±ãŒã·ã§ã³ã¯ãããæ§ãããªããŒããŠã§ã¢ã§ãé åçãªäœéšãæäŸããããåºãããã倿§ã§ãå°ççã«åæ£ãããŠãŒã¶ãŒããŒã¹ã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã
ãã«ãã¬ãã«ã¡ã¢ãªæé©åæŠç¥
WebGL GPUã¡ã¢ãªããã¹ã¿ãŒããã«ã¯ãéå±€ã®åã¬ãã«ãšãããã®éã®é·ç§»ã«å¯ŸåŠããå€è§çãªã¢ãããŒããå¿ èŠã§ãã
1. VRAM䜿çšéã®æé©å
ããã¯ãWebGLæé©åã«ãããŠæãçŽæ¥çã§åœ±é¿åã®ããé åã§ããç®æšã¯ãå¯èœãªéãå€ãã®éèŠãªããŒã¿ãVRAMã«åããããé ãã¡ã¢ãªå±€ãžã®ã¢ã¯ã»ã¹ãæå°éã«æããããšã§ãã
a. ãã¯ã¹ãã£ã®æé©å
ãã¯ã¹ãã£ã¯ãVRAMã®æå€§ã®æ¶è²»è ã®1ã€ã§ããããšããããããŸããã¹ããŒããªãã¯ã¹ãã£ç®¡çãæãéèŠã§ãã
- è§£å床ïŒèš±å®¹ã§ããç»è³ªãæäŸããæå°ã®ãã¯ã¹ãã£è§£å床ã䜿çšããŸãããããããããæ€èšããŠãã ãããããããããã¯ãããŸããŸãªè·é¢ã§ã®ããã©ãŒãã³ã¹ãšç»è³ªã«äžå¯æ¬ ã§ããã远å ã®VRAMãæ¶è²»ããŸãïŒéåžžã¯ããŒã¹ãã¯ã¹ãã£ãµã€ãºã®1/3ïŒã
- å§çž®ïŒGPUãã€ãã£ãã®ãã¯ã¹ãã£å§çž®åœ¢åŒïŒäŸãã°ãASTCãETC2ãS3TC/DXTïŒã掻çšããŸãããããã®åœ¢åŒã¯ãèŠèŠçãªæå€±ãæå°éã«æããªãããã¡ã¢ãªãããããªã³ããšåž¯åå¹ èŠä»¶ãå€§å¹ ã«åæžããŸãã圢åŒã®éžæã¯ããã©ãããã©ãŒã ã®ãµããŒããšå質èŠä»¶ã«ãã£ãŠç°ãªããŸããå¹ åºãWebGLãµããŒãã®ããã«ããã©ãŒã«ããã¯ãªãã·ã§ã³ãæ€èšãããããã©ã³ã¹ã³ãŒãã§ããWebPã®ãããªåœ¢åŒã䜿çšããŠãã ããã
- 圢åŒã®ç²ŸåºŠïŒé©åãªãã¯ã¹ãã£åœ¢åŒã䜿çšããŸããäŸãã°ãè²ã®ç²ŸåºŠãæéèŠã§ã¯ãªãå Žåã¯ãRGBA8888ã®ä»£ããã«UIèŠçŽ ãŸãã¯éèŠåºŠã®äœããã¯ã¹ãã£ã«RGBA4444ãŸãã¯RGB565ã䜿çšããŸãã
- 2ã®ã¹ãä¹ã®æ¬¡å ïŒææ°ã®GPUã¯ããã»ã©å³å¯ã§ã¯ãããŸããããæ¬¡å ã2ã®ã¹ãä¹ïŒäŸãã°ã128x128ã512x256ïŒã®ãã¯ã¹ãã£ã¯ãäžè¬çã«åªããããã©ãŒãã³ã¹ãæäŸããå€ãããŒããŠã§ã¢ã§ã®ããããããã³ã°ã®ãããªç¹å®ã®ãã¯ã¹ãã£æ©èœã«å¿ èŠã§ãã
- ã¢ãã©ã¹åïŒè€æ°ã®å°ããªãã¯ã¹ãã£ãåäžã®å€§ããªãã¯ã¹ãã£ã¢ãã©ã¹ã«çµåããŸããããã«ããããããŒã³ãŒã«ã®æ°ãæžãïŒåãã¯ã¹ãã£ã¯ãã¯ã¹ãã£ãã€ã³ãã£ã³ã°æäœãæå³ããããšããããããŸãïŒããã£ãã·ã¥å±ææ§ãåäžãããããšãã§ããŸãã
b. ãããã¡ã®æé©å
é ç¹ãããã¡ïŒé ç¹äœçœ®ãæ³ç·ãUVãè²ãªã©ãå«ãïŒãšã€ã³ããã¯ã¹ãããã¡ïŒäžè§åœ¢ã®æ¥ç¶æ§ãå®çŸ©ããïŒã¯ããžãªã¡ããªãå®çŸ©ããããã«éèŠã§ãã
- ããŒã¿ã®å§çž®/éååïŒååãªç²ŸåºŠãç¶æããæå°ã®ããŒã¿åã䜿çšããŠãé ç¹å±æ§ïŒäœçœ®ãUVãªã©ïŒãæ ŒçŽããŸããäŸãã°ãç¹ã«é »ç¹ã«å€æŽãããªãããŒã¿ã®å Žåã¯ãããŒããããŒãïŒ
Float16ArrayïŒãŸãã¯éååãããæŽæ°åœ¢åŒã®äœ¿çšãæ€èšããŠãã ããã - ã€ã³ã¿ãŒãªãŒããããã¡ãšã»ãã¬ãŒããããã¡ïŒé ç¹å±æ§ãã€ã³ã¿ãŒãªãŒãããïŒåäžã®é ç¹ã®ãã¹ãŠã®å±æ§ãé£ç¶ããã¡ã¢ãªã«æ ŒçŽããïŒãšããã£ãã·ã¥å¹çãåäžãããããšãã§ããŸãããã ããç¹å®ã®ãŠãŒã¹ã±ãŒã¹ïŒäŸãã°ãäœçœ®ããŒã¿ã®ã¿ãæŽæ°ããïŒã§ã¯ãã»ãã¬ãŒããããã¡ã®æ¹ãæè»æ§ãé«ããæŽæ°ã«å¿ èŠãªåž¯åå¹ ãåæžã§ããå ŽåããããŸããå®éšãéèŠã§ãã
- åçãããã¡ãšéçãããã¡ïŒå€æŽãããªããžãªã¡ããªã«ã¯`gl.STATIC_DRAW`ããé »ç¹ã«å€æŽããããžãªã¡ããªã«ã¯`gl.DYNAMIC_DRAW`ããäžåºŠæŽæ°ãããŠããäœåºŠãã¬ã³ããªã³ã°ããããžãªã¡ããªã«ã¯`gl.STREAM_DRAW`ã䜿çšããŸãããã®ãã³ãã¯ããããã¡ãã©ã®ããã«äœ¿çšããããããã©ã€ãã«äŒããã¡ã¢ãªé 眮ã«åœ±é¿ãäžããŸãã
c. ãã¬ãŒã ãããã¡ãšã¬ã³ããŒã¿ãŒã²ããã®ç®¡ç
ãã¬ãŒã ãããã¡ãšããã«é¢é£ä»ããããã¬ã³ããŒã¿ãŒã²ããïŒã¬ã³ããªã³ã°ãã¹ã®åºåãšããŠäœ¿çšããããã¯ã¹ãã£ïŒã¯ãVRAMãæ¶è²»ããŸãããããã®äœ¿çšãæå°éã«æããé©åã«ãµã€ãºèª¿æŽããã³ç®¡çãããŠããããšã確èªããŠãã ããã
- è§£å床ïŒãã¬ãŒã ãããã¡ã®è§£å床ããã£ã¹ãã¬ã€åºåãŸãã¯å¿ èŠãªè©³çްã¬ãã«ã«äžèŽãããŸãããŠãŒã¶ãŒãèªèã§ãããããå€§å¹ ã«é«ãè§£å床ã§ã¬ã³ããªã³ã°ããããšã¯é¿ããŠãã ããã
- ãã¯ã¹ãã£åœ¢åŒïŒç²ŸåºŠãã¡ã¢ãªäœ¿çšéãããã³äºææ§ã®ãã©ã³ã¹ããšãã¬ã³ããŒã¿ãŒã²ããã«é©åãªåœ¢åŒãéžæããŸãïŒäŸãã°ã`RGBA8`ã`RGB565`ïŒã
- ãã¬ãŒã ãããã¡ã®åå©çšïŒå¯èœã§ããã°ãæ¢åã®ãã¬ãŒã ãããã¡ãªããžã§ã¯ããšãã®ã¢ã¿ããã¡ã³ããåžžã«äœæããã³åé€ããã®ã§ã¯ãªããåå©çšããŸãã
2. ã·ã¹ãã ã¡ã¢ãªïŒRAMïŒãšè»¢éã¬ã€ãã³ã·ã®æé©å
VRAMãå¶éãããŠããå ŽåããŸãã¯GPUãžã®ç¶ç¶çãªã¢ã¯ã»ã¹ãå¿ èŠãšããªãããŒã¿ã®å Žåãã·ã¹ãã ã¡ã¢ãªã®ç®¡çãšè»¢éã®æå°åãéèŠã«ãªããŸãã
a. ã¢ã»ããã®ã¹ããªãŒãã³ã°ãšããŒã
å€§èŠæš¡ãªã·ãŒã³ãŸãã¯å€æ°ã®ã¢ã»ãããæã€ã¢ããªã±ãŒã·ã§ã³ã®å Žåããã¹ãŠãäžåºŠã«ã¡ã¢ãªã«ããŒãããããšã¯ãã°ãã°äžå¯èœã§ããã¢ã»ããã®ã¹ããªãŒãã³ã°ã¯äžå¯æ¬ ã§ãã
- ã¬ãã«ãªããã£ããŒã«ïŒLODïŒïŒé ãã«ãããªããžã§ã¯ããçŸåšè¡šç€ºãããŠããªããªããžã§ã¯ãã«ã€ããŠã¯ãäœè§£å床ã®ãã¯ã¹ãã£ãšããåçŽãªãžãªã¡ããªãããŒãããŸããã«ã¡ã©ãè¿ã¥ããšãããé«ç²Ÿçްãªã¢ã»ãããã¹ããªãŒãã³ã°ã§ããŸãã
- éåæããŒãïŒJavaScriptã®éåææ©èœïŒPromisesã`async/await`ïŒã䜿çšããŠãã¡ã€ã³ã¹ã¬ããããããã¯ããã«ããã¯ã°ã©ãŠã³ãã§ã¢ã»ãããããŒãããŸãã
- ãªãœãŒã¹ããŒãªã³ã°ïŒããŒããããã¢ã»ããïŒäŸãã°ããã¯ã¹ãã£ãã¢ãã«ïŒãè€æ°åããŒãããã®ã§ã¯ãªããåå©çšããŸãã
- ãªã³ããã³ãããŒãïŒãŠãŒã¶ãŒãä»®æ³äžçã®æ°ãããšãªã¢ã«å ¥ã£ããšããªã©ãå¿ èŠãªãšãã«ã®ã¿ã¢ã»ãããããŒãããŸãã
b. ããŒã¿è»¢éæŠç¥
CPUïŒã·ã¹ãã RAMïŒãšGPUïŒVRAMïŒéã®ããŒã¿è»¢éã¯ãã³ã¹ãã®ãããæäœã§ãããããã®è»¢éãæå°éã«æããŸãã
- ãããåŠçïŒå°ããªããŒã¿æŽæ°ããŸãšããŠå€§ããªè»¢éã«ã°ã«ãŒãåããå°ããªè»¢éã倿°è¡ãã®ã§ã¯ãªãã倧ããªè»¢éã«ã°ã«ãŒãåããŸãã
- `gl.bufferSubData` vs. `gl.bufferData`ïŒãããã¡ã®äžéšã®ã¿ãæŽæ°ããå¿ èŠãããå Žåã¯ã`gl.bufferSubData`ã䜿çšããŸããããã¯ã`gl.bufferData`ã䜿çšããŠãããã¡å šäœãåã¢ããããŒããããããäžè¬çã«å¹ççã§ãã
- æ°žç¶çãªãããã³ã°ïŒäžçŽãŠãŒã¶ãŒåãïŒïŒäžéšã®WebGLå®è£ ã§ã¯ãããçŽæ¥çãªã¡ã¢ãªãããã³ã°ãå¯èœã«ãªãå ŽåããããŸãããããã¯ç§»æ€æ§ãäœããããã©ãŒãã³ã¹ã«é¢ããæ³šæç¹ããããŸããäžè¬çã«ãæšæºã®ãããã¡æäœã䜿çšããæ¹ãå®å šã§ãã
- 倿ã®ããã®GPUã³ã³ãã¥ãŒãïŒå€æ°ã®é ç¹ã«é©çšããå¿ èŠãããè€éãªé ç¹å€æã®å ŽåãWebGPUã³ã³ãã¥ãŒãã·ã§ãŒããŒïŒææ°ã®ãã©ãŠã¶ãã¿ãŒã²ããã«ããŠããå ŽåïŒã䜿çšããããCPUè² è·ã®é«ãèšç®ãå®è¡ããŠããçµæãã¢ããããŒãããã®ã§ã¯ãªããã·ã§ãŒããŒãä»ããŠGPUã«èšç®ããªãããŒãããããšãæ€èšããŠãã ããã
3. ã¡ã¢ãªãããã¡ã€ãªã³ã°ãšãããã°ããŒã«
枬å®ã§ããªããã®ã¯æé©åã§ããŸããã广çãªãããã¡ã€ãªã³ã°ãäžå¯æ¬ ã§ãã
- ãã©ãŠã¶ã®éçºè ããŒã«ïŒææ°ã®ãã©ãŠã¶ïŒChromeãFirefoxãEdgeïŒã¯ãWebGLã«åªããéçºè ããŒã«ãæäŸããŠããŸããã¡ã¢ãªãããã¡ã€ã©ãGPUãã¬ãŒã ãããã¡ã€ã©ãããã³ããã©ãŒãã³ã¹ã¢ãã¿ãæ¢ããŠãã ããããããã®ããŒã«ã¯ãVRAM䜿çšéããã¯ã¹ãã£ã¡ã¢ãªããããã¡ãµã€ãºãããã³ã¬ã³ããªã³ã°ãã€ãã©ã€ã³ã®ããã«ããã¯ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- `gl.getParameter`ïŒ`gl.getParameter`ã䜿çšããŠã`gl.MAX_TEXTURE_SIZE`ã`gl.MAX_VIEWPORT_DIMS`ãããã³`gl.MAX_VERTEX_ATTRIBS`ãªã©ãWebGLã³ã³ããã¹ãã«é¢ããæ å ±ãã¯ãšãªããŸããããã¯ãããŒããŠã§ã¢ã®å¶éãçè§£ããã®ã«åœ¹ç«ã¡ãŸãã
- ã«ã¹ã¿ã ã¡ã¢ãªãã©ãã«ãŒïŒãã詳现ãªå¶åŸ¡ãè¡ãã«ã¯ãã¢ã»ãããšãããã¡çšã®ã«ã¹ã¿ã JavaScriptããŒã¹ã®ã¡ã¢ãªãã©ããã³ã°ãå®è£ ããŠãå²ãåœãŠãšå²ãåœãŠè§£é€ãç£èŠããŸãã
ã¡ã¢ãªç®¡çã«é¢ããã°ããŒãã«ãªèæ ®äºé
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«éçºããå Žåãããã€ãã®èŠå ãã¡ã¢ãªæé©åã®éèŠæ§ãé«ããŸãã
- ããŒãšã³ãããã€ã¹ã®ã¿ãŒã²ããïŒæ°èåžå ŽãŸãã¯äžè¬çãªãŠãŒã¶ãŒã®å Žåãå€ãã®ããã€ã¹ã¯VRAMãå€§å¹ ã«å°ãªãïŒäŸãã°ã1ã2 GBïŒãå ±æã·ã¹ãã ã¡ã¢ãªã«äŸåããŸããã¢ããªã±ãŒã·ã§ã³ã¯ããããã®ããã€ã¹ã§ã®ããã©ãŒãã³ã¹ãæ£åžžã«äœäžãããããæ©èœãå¶éããå¿ èŠããããŸãã
- ãããã¯ãŒã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ïŒå°åã«ãã£ãŠã€ã³ã¿ãŒãããã®é床ãšä¿¡é Œæ§ãç°ãªããŸããäœéãªæ¥ç¶ã䜿çšããŠãããŠãŒã¶ãŒã«ãšã£ãŠãå¹ççãªã¢ã»ããããŒããšãã£ãã·ã¥æŠç¥ã¯éåžžã«éèŠã§ãã
- ããããªãŒå¯¿åœïŒç¹ã«ã¢ãã€ã«ããã€ã¹ã¯ãé»åæ¶è²»ã«ææã§ããéå°ãªã¡ã¢ãªè»¢éãé«ãVRAM䜿çšéãå«ãGPUè² è·ã®é«ãæäœã¯ãããããªãŒãããã«æ¶èãããŸãã
- ã¢ã»ããã®ããŒã«ã©ã€ãºïŒã¢ããªã±ãŒã·ã§ã³ã«ããŒã«ã©ã€ãºãããããã¹ããŸãã¯ã¢ã»ãããå«ãŸããŠããå Žåã¯ãããããå¹ççã«ããŒããããäžå¿ èŠã«ã¡ã¢ãªãè¥å€§åãããªãããã«ããŠãã ããã
äŸïŒã°ããŒãã«eã³ããŒã¹3D補åãã¥ãŒã¢
ã°ããŒãã«ãªå±éãç®æããŠeã³ããŒã¹ãã©ãããã©ãŒã çšã®3D補åãã¥ãŒã¢ãæ§ç¯ããŠããäŒæ¥ã«ã€ããŠèããŠã¿ãŸãããã
- 補åã¢ãã«ïŒãã¹ãŠã®ãŠãŒã¶ãŒã«1ã€ã®ãã€ããªã¢ãã«ãããŒããã代ããã«ãLODãå®è£ ããŸãããã€ã¯ããããã¯ã¹ãã£ãæã€ããŒããªããŒãžã§ã³ã¯ã¢ãã€ã«ã§äœ¿çšãããããé«ç²Ÿçްãªã¢ãã«ãšãã¯ã¹ãã£ã¯ãã¹ã¯ããããŠãŒã¶ãŒã«ã¹ããªãŒãã³ã°ãããŸãã
- 補åãã¯ã¹ãã£ïŒãã¯ã¹ãã£ã¢ãã©ã¹ã䜿çšããŠãããŸããŸãªçŽ æèŠæ¬ãåäžã®ãã¯ã¹ãã£ã«çµåããŸãããµããŒããããŠããå Žåã¯ASTCã®ãããªå§çž®åœ¢åŒãé©çšããå€ãããŒããŠã§ã¢ã®å Žåã¯DXTãŸãã¯éå§çž®åœ¢åŒã«ãã©ãŒã«ããã¯ããŸããçŸåšè¡šç€ºãããŠãã補åã®ãã¯ã¹ãã£ã®ã¿ãããŒããããããã«ãé å»¶ããŒããå®è£ ããŸãã
- åçãªæŽæ°ïŒãŠãŒã¶ãŒãè²ãçŽ æãã«ã¹ã¿ãã€ãºã§ããå Žåã¯ããããã®æŽæ°ãå¹ççã«åŠçãããããã«ããŸãããã¯ã¹ãã£å šäœãåã¢ããããŒããã代ããã«ãå¯èœãªå Žåã¯ã·ã§ãŒããŒãŠããã©ãŒã ãŸãã¯ããå°ããªãã¯ã¹ãã£æŽæ°ã䜿çšããŸãã
- ã°ããŒãã«CDNïŒããŠã³ããŒãæéãççž®ããããã«ããšããžãã±ãŒã·ã§ã³ãäžçäžã«ããã³ã³ãã³ãé ä¿¡ãããã¯ãŒã¯ïŒCDNïŒããã¢ã»ãããé ä¿¡ããŸãã
éçºè åãã®å®è¡å¯èœãªæŽå¯
éèŠãªãã€ã³ããšå®è¡å¯èœãªæé ã以äžã«ç€ºããŸãã
- æ©æãã€é »ç¹ã«ãããã¡ã€ã«ïŒéçºã¯ãŒã¯ãããŒã®éå§æããããã©ãŒãã³ã¹ãããã¡ã€ãªã³ã°ãçµ±åããŸããæåŸãŸã§åŸ ããªãã§ãã ããã
- VRAMãåªå ããïŒåžžã«VRAMã«éèŠã§é »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ãä¿æããããšãç®æããŸãã
- ãã¯ã¹ãã£å§çž®ãæ¡çšããïŒãã¯ã¹ãã£å§çž®ãããã©ã«ãã®ãã©ã¯ãã£ã¹ã«ããŸããã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã«æé©ãªåœ¢åŒã調æ»ããŸãã
- ã¢ã»ããã¹ããªãŒãã³ã°ãå®è£ ããïŒåçŽãªã·ãŒã³ãè¶ ããã¢ããªã±ãŒã·ã§ã³ã®å Žåãã¹ããªãŒãã³ã°ãšLODã¯å¿ é ã§ãã
- ããŒã¿è»¢éãæå°éã«æããïŒCPU-GPUããŒã¿ç§»åã«æ³šæããŠãã ããããããæŽæ°ã䜿çšããæãå¹ççãªãããã¡æŽæ°æ¹æ³ã䜿çšããŸãã
- ããã€ã¹éã§ãã¹ãããïŒäžè²«ãããšã¯ã¹ããªãšã³ã¹ã確ä¿ããããã«ãç¹ã«ããŒãšã³ãããã³ã¢ãã€ã«ããã€ã¹ã§ãããŸããŸãªããŒããŠã§ã¢ã§ã¢ããªã±ãŒã·ã§ã³ã宿çã«ãã¹ãããŸãã
- ãã©ãŠã¶APIãæŽ»çšããïŒã¡ã¢ãªããã现ããå¶åŸ¡ã§ããæ°ããWebGLæ¡åŒµæ©èœãšWebGPUæ©èœã®ææ°æ å ±ãå ¥æããŠãã ããã
æªæ¥ïŒWebGPU以é
WebGLã¯åŒãç¶ã匷åãªããŒã«ã§ãããWebGPUã®ç»å Žã¯ãã¡ã¢ãªãå«ãGPUããŒããŠã§ã¢ã®ããçŽæ¥çãã€å¹ççãªå¶åŸ¡ãçŽæããŸããWebGPUã®ææ°ã®APIèšèšã¯ãå€ãã®å Žåãããäœãã¬ãã«ã®æŠå¿µãå ¬éããããšã«ãããæ¬è³ªçã«ããåªããã¡ã¢ãªç®¡çãã©ã¯ãã£ã¹ã奚å±ããŸããWebGLã®ã¡ã¢ãªéå±€ãä»çè§£ããããšã¯ãå°æ¥WebGPUã«ç§»è¡ããŠãã¹ã¿ãŒããããã®ç¢ºåºããåºç€ãæäŸããŸãã
çµè«
WebGL GPUã¡ã¢ãªé局管çã¯ã3DãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãã¢ã¯ã»ã·ããªãã£ãããã³ã¹ã±ãŒã©ããªãã£ã«çŽæ¥åœ±é¿ãäžããé«åºŠãªåéã§ããããŸããŸãªã¬ãã«ã®ã¡ã¢ãªãçè§£ãããã¯ã¹ãã£ãšãããã¡ã«ã€ã³ããªãžã§ã³ããªæé©åææ³ãæ¡çšããããŒã¿è»¢éãæ éã«ç®¡çãããããã¡ã€ãªã³ã°ããŒã«ã掻çšããããšã§ãéçºè ã¯äžçäžã®ãŠãŒã¶ãŒã«é åçã§ããã©ãŒãã³ã¹ã®é«ãã°ã©ãã£ãã¯ã¹ãšã¯ã¹ããªãšã³ã¹ãäœæã§ããŸããèŠèŠçã«ãªãããªãŠã§ãã³ã³ãã³ããžã®éèŠãé«ãŸãç¶ããã«ã€ããŠããããã®ååããã¹ã¿ãŒããããšã¯ãçã«ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãªãŒãããããšããŠãããã¹ãŠã®çå£ãªWebGLéçºè ã«ãšã£ãŠäžå¯æ¬ ã§ãã