é«éåæ§é ãWebGLã«ãããã¬ã€ãã¬ãŒã·ã³ã°ãã©ã®ããã«æé©åããã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³åãã«è€éãª3Dã·ãŒã³ã®å¹ççãªã¬ã³ããªã³ã°ãå¯èœã«ããããæ¢ããŸãã
WebGLã¬ã€ãã¬ãŒã·ã³ã°é«éåæ§é ïŒã°ããŒãã«3Dã¢ããªã±ãŒã·ã§ã³ã®ããã®ç©ºéããŒã¿æ§æ
ã¬ã€ãã¬ãŒã·ã³ã°ã¯ãçŸå®äžçã«ãããå ã®æ¯ãèããã·ãã¥ã¬ãŒããã匷åãªã¬ã³ããªã³ã°æè¡ã§ããã·ãŒã³å ãééããå ç·ã®çµè·¯ã远跡ããããšã§ãåå®çãªç»åãçæããŸããã¬ã€ãã¬ãŒã·ã³ã°ã¯åªããèŠèŠå質ãæäŸããäžæ¹ã§ãèšç®è² è·ãéåžžã«é«ãã§ããç¹ã«ãã©ãŠã¶ããŒã¹ã®WebGLã¢ããªã±ãŒã·ã§ã³ã«ãããŠããªã¢ã«ã¿ã€ã ãŸãã¯ã€ã³ã¿ã©ã¯ãã£ããªãã¬ãŒã ã¬ãŒããéæããããã«ã¯ãé«éåæ§é ãäžå¯æ¬ ã§ãããã®èšäºã§ã¯ãWebGLã¬ã€ãã¬ãŒã·ã³ã°ã§äœ¿çšãããé«éåæ§é ã®åºæ¬æŠå¿µãæ¢ãã空éããŒã¿æ§æãšãããããã©ãŒãã³ã¹ã«äžãã圱é¿ã«çŠç¹ãåœãŠãŸãã
é«éåæ§é ã®å¿ èŠæ§
é«éåæ§é ããªããã°ãã¬ã€ãã¬ãŒã·ã³ã°ã¯åå ç·ãšã·ãŒã³å ã®ãã¹ãŠã®ãªããžã§ã¯ããšã®äº€å·®å€å®ã䌎ããŸãããã®ãã«ãŒããã©ãŒã¹ïŒç·åœããïŒã¢ãããŒãã¯ãåå ç·ã«å¯ŸããŠO(n)ã®èšç®éã«ãªããŸããããã§'n'ã¯ã·ãŒã³å ã®ããªããã£ãïŒäžè§åœ¢ãçãªã©ïŒã®æ°ã§ããæ°çŸäžã®ããªããã£ããæã€è€éãªã·ãŒã³ã§ã¯ãããã¯æ³å€ã«é«ã³ã¹ãã«ãªããŸãã
é«éåæ§é ã¯ãã·ãŒã³ã®ãžãªã¡ããªãç¹å®ã®å ç·ãšäº€å·®ããå¯èœæ§ãäœãã·ãŒã³ã®å€§éšåãè¿ éã«é€å€ã§ãããããªæ¹æ³ã§æ§æããããšã«ããããã®åé¡ã軜æžããŸããããã«ãããå ç·ãšããªããã£ãã®äº€å·®å€å®ãã¹ãã®æ°ãæžããã¬ã³ããªã³ã°æ§èœãåçã«åäžããŸãã峿žé€šã§ç¹å®ã®æžç±ãæ¢ãããšãæ³åããŠã¿ãŠãã ããã玢åŒïŒé«éåæ§é ïŒããªããã°ããã¹ãŠã®æ£ã®ãã¹ãŠã®æ¬ã確èªããªããã°ãªããŸããã玢åŒãããã°ãé¢é£ããã»ã¯ã·ã§ã³ããã°ããèŠã€ããŠå¹ççã«æ¬ãèŠã€ããããšãã§ããŸããé«éåæ§é ã¯ãã¬ã€ãã¬ãŒã·ã³ã°ã«ãããŠåæ§ã®ç®çãæãããŸãã
äžè¬çãªé«éåæ§é
ã¬ã€ãã¬ãŒã·ã³ã°ã§ã¯ãããã€ãã®çš®é¡ã®é«éåæ§é ãäžè¬çã«äœ¿çšãããŠããŸããæãäžè¬çãªã®ã¯ããŠã³ãã£ã³ã°ããªã¥ãŒã éå±€ïŒBVHïŒã§ãããk-dæšãäžæ§ã°ãªãããªã©ãå©çšãããŸãããã®èšäºã§ã¯ã倿§ãªã·ãŒã³ãæ±ãäžã§ã®æè»æ§ãšå¹çæ§ãããBVHã«çŠç¹ãåœãŠãŸãã
ããŠã³ãã£ã³ã°ããªã¥ãŒã éå±€ïŒBVHïŒ
BVHã¯æšæ§é ã®ããŒã¿æ§é ã§ãåããŒãã¯ããªããã£ãã®éåãå²ãããŠã³ãã£ã³ã°ããªã¥ãŒã ã衚ããŸããã«ãŒãããŒãã¯ã·ãŒã³å šäœãå²ã¿ãåå éšããŒãã¯ã·ãŒã³ã®ãžãªã¡ããªã®ãµãã»ãããå²ã¿ãŸãããªãŒãããŒãã«ã¯ãå®éã®ããªããã£ãïŒäŸïŒäžè§åœ¢ïŒãžã®åç §ãå«ãŸããŠããŸãã
BVHã®åºæ¬ååã¯ãå ç·ãšããŒãã®ããŠã³ãã£ã³ã°ããªã¥ãŒã ãšã®äº€å·®å€å®ãè¡ãããšã§ããå ç·ãããŠã³ãã£ã³ã°ããªã¥ãŒã ãšäº€å·®ããªãå Žåããã®ããŒãå ã«å«ãŸããã©ã®ããªããã£ããšã亀差ããªãããããã®ãµãããªãŒã®ãã©ããŒã¹ãã¹ãããã§ããŸããå ç·ãããŠã³ãã£ã³ã°ããªã¥ãŒã ãšäº€å·®ããå ŽåããªãŒãããŒãã«å°éãããŸã§åããŒããååž°çã«ãã©ããŒã¹ããããã§å ç·ãšããªããã£ãã®äº€å·®å€å®ãã¹ããå®è¡ããŸãã
BVHã®æ§ç¯ïŒ
BVHã®æ§ç¯ã¯ããã®ããã©ãŒãã³ã¹ã«å€§ãã圱é¿ããéèŠãªã¹ãããã§ããé©åã«æ§ç¯ãããBVHã¯ãå ç·ãšããŠã³ãã£ã³ã°ããªã¥ãŒã ã®äº€å·®å€å®ãã¹ãã®æ°ãæå°éã«æããŸããBVHæ§ç¯ã«ã¯äž»ã«ãããããŠã³ãšããã ã¢ããã®2ã€ã®ã¢ãããŒãããããŸãã
- ãããããŠã³æ§ç¯ïŒ ãã®ã¢ãããŒãã¯ãã«ãŒãããŒãããå§ãŸããç¹å®ã®çµäºæ¡ä»¶ãæºãããããŸã§ååž°çã«åå²ãç¹°ãè¿ããŸããåå²ããã»ã¹ã§ã¯éåžžãããªããã£ãã2ã€ã®ã°ã«ãŒãã«åããåå²å¹³é¢ãéžæããŸããåå²å¹³é¢ã®éžæã¯éåžžã«éèŠã§ããäžè¬çãªæŠç¥ã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
- 空éäžå€®å€åå²ïŒ 軞ïŒäŸïŒX, Y, ZïŒã«æ²¿ã£ã空éçãªäœçœ®ã«åºã¥ããŠããªããã£ããåå²ããŸããããã¯ã·ã³ãã«ã§é«éãªæ¹æ³ã§ãããå¿ ããããã©ã³ã¹ã®åããæšã«ãªããšã¯éããŸããã
- ãªããžã§ã¯ãäžå€®å€åå²ïŒ ããªããã£ãã®éå¿ã®äžå€®å€ã«åºã¥ããŠåå²ããŸããããã¯ç©ºéäžå€®å€åå²ããããã©ã³ã¹ã®åããæšãçæããããšãå€ãã§ãã
- 衚é¢ç©ãã¥ãŒãªã¹ãã£ãã¯ïŒSAHïŒïŒ ããã¯ãããŠã³ãã£ã³ã°ããªã¥ãŒã ã®è¡šé¢ç©ã«åºã¥ããŠããªãŒã®ãã©ããŒã¹ã³ã¹ããæšå®ãããããæŽç·Žãããã¢ãããŒãã§ããSAHã¯ãå šäœã®ã³ã¹ããæãäœããªãåå²å¹³é¢ãéžæããããšã§ãæåŸ ããããã©ããŒã¹ã³ã¹ããæå°åããããšãç®æããŸããSAHã¯äžè¬çã«æãå¹ççãªBVHãçæããŸãããæ§ç¯ã«ã¯èšç®ã³ã¹ããæãããããŸãã
- ããã ã¢ããæ§ç¯ïŒ ãã®ã¢ãããŒãã¯ãåã ã®ããªããã£ãããªãŒãããŒããšããŠéå§ããåäžã®ã«ãŒãããŒãã圢æããããŸã§ããããå埩çã«å€§ããªããŠã³ãã£ã³ã°ããªã¥ãŒã ã«ããŒãžããŸããããã¯ã¬ã€ãã¬ãŒã·ã³ã°ã®BVHã§ã¯ããŸãäžè¬çã§ã¯ãããŸãããããžãªã¡ããªãé »ç¹ã«å€åããåçãªã·ãŒã³ã§åœ¹ç«ã€ããšããããŸãã
çµäºæ¡ä»¶ïŒ
åå²ããã»ã¹ã¯ãçµäºæ¡ä»¶ãæºãããããŸã§ç¶ããŸããäžè¬çãªçµäºæ¡ä»¶ã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
- æå€§æšæ·±åºŠïŒ éå°ãªã¡ã¢ãªäœ¿çšéããã©ããŒãµã«ãªãŒããŒããããé²ãããã«ãæšã®æ·±ããå¶éããŸãã
- ããŒããããã®æå°ããªããã£ãæ°ïŒ ããŒãã«å«ãŸããããªããã£ãã®æ°ãå°ãªããªã£ãå Žåã«åå²ã忢ããŸããäžè¬çãªå€ã¯1ã4ããªããã£ãã§ãã
- ã³ã¹ãéŸå€ïŒ ãããªãåå²ã®æšå®ã³ã¹ããç¹å®ã®éŸå€ãè¶ ããå Žåã«åå²ã忢ããŸãã
BVHãã©ããŒãµã«ïŒ
BVHãã©ããŒãµã«ã¢ã«ãŽãªãºã ã¯ãç¹å®ã®å ç·ãã·ãŒã³å ã®ã©ã®ããªããã£ããšäº€å·®ããããå¹ççã«æ±ºå®ããååž°çãªããã»ã¹ã§ããã¢ã«ãŽãªãºã ã¯ã«ãŒãããŒãããå§ãŸããæ¬¡ã®ããã«é²è¡ããŸãã
- çŸåšã®ããŒãã®ããŠã³ãã£ã³ã°ããªã¥ãŒã ã«å¯ŸããŠå ç·ã®äº€å·®å€å®ãè¡ããŸãã
- å ç·ãããŠã³ãã£ã³ã°ããªã¥ãŒã ãšäº€å·®ããªãå Žåããã®ããŒããšãã®ãµãããªãŒã®ãã©ããŒãµã«ã¯åæ¢ããŸãã
- å ç·ãããŠã³ãã£ã³ã°ããªã¥ãŒã ãšäº€å·®ããå Žåãã¢ã«ãŽãªãºã ã¯åããŒããååž°çã«ãã©ããŒã¹ããŸãã
- ãªãŒãããŒãã«å°éãããšãã¢ã«ãŽãªãºã ã¯ãã®ãªãŒãããŒãã«å«ãŸããåããªããã£ãã«å¯ŸããŠå ç·ãšããªããã£ãã®äº€å·®å€å®ãã¹ããå®è¡ããŸãã
空éããŒã¿æ§ææè¡
é«éåæ§é å ã§ããŒã¿ãã©ã®ããã«æ§æããããã¯ããã®ããã©ãŒãã³ã¹ã«å€§ãã圱é¿ããŸãã空éããŒã¿æ§æãæé©åããããã«ãããã€ãã®æè¡ãæ¡çšãããŠããŸãã
ããŠã³ãã£ã³ã°ããªã¥ãŒã ã®å¯ç床
ããå¯çããããŠã³ãã£ã³ã°ããªã¥ãŒã ã¯ãå ç·ãšããŠã³ãã£ã³ã°ããªã¥ãŒã ã®äº€å·®å€å®ãã¹ãäžã®åœéœæ§ïŒãã©ãŒã«ã¹ããžãã£ãïŒã®ç¢ºçãæžå°ãããŸããå¯çããããŠã³ãã£ã³ã°ããªã¥ãŒã ã¯ãå²ãŸãããžãªã¡ããªã«ãŽã£ãããšãã£ãããããã®åšãã®ç©ºãã¹ããŒã¹ãæå°éã«æããŸããäžè¬çãªããŠã³ãã£ã³ã°ããªã¥ãŒã ã®çš®é¡ã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
- 軞䞊è¡å¢çããã¯ã¹ïŒAABBïŒïŒ AABBã¯ããã®åçŽããšå¹çæ§ãããæãäžè¬çãªããŠã³ãã£ã³ã°ããªã¥ãŒã ã®çš®é¡ã§ããåè»žã«æ²¿ã£ãæå°åº§æšãšæå€§åº§æšã«ãã£ãŠå®çŸ©ãããŸããAABBã¯æ§ç¯ã容æã§ãå ç·ãšã®äº€å·®å€å®ãç°¡åã§ãã
- æåå¢çããã¯ã¹ïŒOBBïŒïŒ OBBã¯ãç¹ã«åº§æšè»žã«æŽåããŠããªããªããžã§ã¯ãã«å¯ŸããŠãAABBãããå¯ç床ãé«ãã§ããããããOBBã¯æ§ç¯ããã³å ç·ãšã®äº€å·®å€å®ã®ã³ã¹ããé«ããªããŸãã
- çäœïŒ çäœã¯æ§ç¯ãç°¡åã§ãå ç·ãšã®äº€å·®å€å®ã容æã§ããããã¹ãŠã®çš®é¡ã®ãžãªã¡ããªã«é©ããŠãããšã¯éããŸããã
é©åãªããŠã³ãã£ã³ã°ããªã¥ãŒã ã®çš®é¡ãéžæãããã¯ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ãšãå¯ç床ãšããã©ãŒãã³ã¹ã®ãã¬ãŒããªãã«äŸåããŸãã
ããŒãã®é åºãšã¡ã¢ãªã¬ã€ã¢ãŠã
ããŒããã¡ã¢ãªã«æ ŒçŽãããé åºã¯ããã£ãã·ã¥ã³ããŒã¬ã³ã·ãšãã©ããŒãµã«æ§èœã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸããäžç·ã«ã¢ã¯ã»ã¹ãããå¯èœæ§ãé«ãããŒããé£ç¶ããã¡ã¢ãªäœçœ®ã«æ ŒçŽããããšã§ããã£ãã·ã¥ã®å©çšçãåäžããã¡ã¢ãªã¢ã¯ã»ã¹ã®ã¬ã€ãã³ã·ãåæžãããŸãã
äžè¬çãªããŒãé åºä»ãæè¡ã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
- æ·±ãåªå é åºïŒ ããŒãã¯ãæšã®æ·±ãåªå æ¢çŽ¢äžã«èšªããé ã«æ ŒçŽãããŸãããã®ã¢ãããŒãã¯ãæšãæ·±ãé·ããã©ããŒã¹ããå ç·ã®ãã£ãã·ã¥ã³ããŒã¬ã³ã·ãåäžãããããšãã§ããŸãã
- å¹ åªå é åºïŒ ããŒãã¯ãæšã®å¹ åªå æ¢çŽ¢äžã«èšªããé ã«æ ŒçŽãããŸãããã®ã¢ãããŒãã¯ãæšã®åãã¬ãã«ã§å€æ°ã®ããŒããšäº€å·®ããå ç·ã®ãã£ãã·ã¥ã³ããŒã¬ã³ã·ãåäžãããããšãã§ããŸãã
- ç·åœ¢åïŒ BVHã¯ãå€ãã®å Žåã¢ãŒãã³ã³ãŒããåæ§ã®ç©ºéå å¡«æ²ç·ã䜿çšããŠããã©ãããªé åã«ç·åœ¢åãããŸããããã«ãããã£ãã·ã¥ã³ããŒã¬ã³ã·ãåäžããGPUäžã§ã®å¹ççãªãã©ããŒãµã«ãå¯èœã«ãªããŸãã
æé©ãªããŒãé åºä»ãæè¡ã¯ãç¹å®ã®ããŒããŠã§ã¢ã¢ãŒããã¯ãã£ãšã·ãŒã³ã®ç¹æ§ã«äŸåããŸãã
ããªããã£ãã®é åº
ãªãŒãããŒãå ã«ããªããã£ããæ ŒçŽãããé åºãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã空éçã«ãŸãšãŸãã®ããããªããã£ããã°ã«ãŒãåããããšã§ããã£ãã·ã¥ã³ããŒã¬ã³ã·ãåäžããå ç·ãšããªããã£ãã®äº€å·®å€å®ãã¹ãäžã®ãã£ãã·ã¥ãã¹ã®æ°ãæžããããšãã§ããŸãã空éå å¡«æ²ç·ïŒäŸïŒã¢ãŒãã³é åºïŒãªã©ã®æè¡ã䜿çšããŠãããªããã£ãããã®ç©ºéçãªäœçœ®ã«åºã¥ããŠé åºä»ããããšãã§ããŸãã
WebGLã«é¢ããèæ ®äºé
WebGLã§ã¬ã€ãã¬ãŒã·ã³ã°ãšé«éåæ§é ãå®è£ ããã«ã¯ãç¹æã®èª²é¡ãšèæ ®äºé ããããŸãã
ããŒã¿è»¢éãšã¡ã¢ãªç®¡ç
倧éã®ããŒã¿ïŒäŸïŒé ç¹ããŒã¿ãBVHããŒãïŒãJavaScriptããGPUã«è»¢éããããšã¯ãããã«ããã¯ã«ãªãå¯èœæ§ããããŸããè¯å¥œãªããã©ãŒãã³ã¹ãéæããããã«ã¯ãå¹ççãªããŒã¿è»¢éæè¡ãäžå¯æ¬ ã§ããåä»ãé åïŒäŸïŒFloat32ArrayãUint32ArrayïŒã䜿çšããããŒã¿è»¢éã®åæ°ãæå°éã«æããããšãããªãŒããŒãããã®åæžã«åœ¹ç«ã¡ãŸãã
ã¡ã¢ãªç®¡çãéèŠã§ãç¹ã«å€§èŠæš¡ãªã·ãŒã³ã§ã¯ããã§ããWebGLã®ã¡ã¢ãªãªãœãŒã¹ã¯éãããŠãããã¡ã¢ãªäžè¶³ãšã©ãŒãé¿ããããã«ã¯ãå¹ççã«ã¡ã¢ãªãå²ãåœãŠãŠè§£æŸããããšãäžå¯æ¬ ã§ãã
ã·ã§ãŒããŒã®ããã©ãŒãã³ã¹
ã¬ã€ãã¬ãŒã·ã³ã°ãšBVHãã©ããŒãµã«ã®ããžãã¯ã¯ãéåžžã·ã§ãŒããŒïŒäŸïŒGLSLïŒã§å®è£ ãããŸããè¯å¥œãªããã©ãŒãã³ã¹ãéæããããã«ã¯ãã·ã§ãŒããŒã³ãŒãã®æé©åãäžå¯æ¬ ã§ããããã«ã¯ãåœä»€æ°ã®æå°åãå¹ççãªããŒã¿åã®äœ¿çšãåå²ã®åé¿ãªã©ãå«ãŸããŸãã
äŸïŒå ç·ãšAABBã®äº€å·®ããã§ãã¯ããããã«äžè¬çãª`if`æã䜿çšãã代ããã«ãããè¯ãããã©ãŒãã³ã¹ã®ããã«æé©åãããã¹ã©ã亀差ã¢ã«ãŽãªãºã ã䜿çšããŸããã¹ã©ã亀差ã¢ã«ãŽãªãºã ã¯AABBå°çšã«èšèšãããŠãããããå°ãªãåœä»€ã§å®è£ ã§ããŸãã
éåææäœ
é«éåæ§é ã®æ§ç¯ã¯ãç¹ã«å€§èŠæš¡ãªã·ãŒã³ã§ã¯æéããããããã»ã¹ã«ãªãå¯èœæ§ããããŸãããã®æäœãéåæïŒäŸïŒWeb Workersã䜿çšïŒã§å®è¡ããããšã§ããã©ãŠã¶ãå¿çäžèœã«ãªãã®ãé²ãããšãã§ããŸããé«éåæ§é ãããã¯ã°ã©ãŠã³ãã§æ§ç¯ãããŠããéãã¡ã€ã³ã¹ã¬ããã¯ã·ãŒã³ã®ã¬ã³ããªã³ã°ãç¶ããããšãã§ããŸãã
WebGPU
WebGPUã®ç»å Žã«ãããGPUãããçŽæ¥çã«å¶åŸ¡ã§ããããã«ãªããããé«åºŠãªã¬ã€ãã¬ãŒã·ã³ã°å®è£ ã®å¯èœæ§ãåºãããŸããã³ã³ãã¥ãŒãã·ã§ãŒããŒãªã©ã®æ©èœã«ãããéçºè ã¯ã¡ã¢ãªãããå¹ççã«ç®¡çããã«ã¹ã¿ã ã®é«éåæ§é ãå®è£ ã§ããŸããããã«ãããåŸæ¥ã®WebGLãšæ¯èŒããŠããã©ãŒãã³ã¹ãåäžããŸãã
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã®äŸ
å¹ççãªç©ºéããŒã¿æ§æã«ãã£ãŠé«éåãããWebGLã§ã®ã¬ã€ãã¬ãŒã·ã³ã°ã¯ãããŸããŸãªã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã«æ°ããªå¯èœæ§ããããããŸãã
- ã€ã³ã¿ã©ã¯ãã£ããªè£œåã³ã³ãã£ã®ã¥ã¬ãŒã¿ïŒ äžçäžã®ã客æ§ã補åïŒäŸïŒå®¶å ·ãè»ïŒããªã¢ã«ã¿ã€ã ã§åå®çãªã¬ã³ããªã³ã°ã§ã«ã¹ã¿ãã€ãºã§ããããã«ããŸãããšãŒãããã®å®¶å ·äŒç€Ÿããã¢ãžã¢ã®ãŠãŒã¶ãŒã«Webãã©ãŠã¶å ã§ãœãã¡ãç°ãªãçå°ãç §ææ¡ä»¶ã§ã©ã®ããã«èŠããããèŠèŠåãããããšãæ³åããŠã¿ãŠãã ããã
- 建ç¯ããžã¥ã¢ã©ã€ãŒãŒã·ã§ã³ïŒ äžçäžã®å»ºç¯å®¶ããã¶ã€ããŒãããã©ãŠã¶äžã§å»ºç©ãã€ã³ããªã¢ã®ãªã¢ã«ãªã¬ã³ããªã³ã°ãäœæããæ¢çŽ¢ã§ããããã«ããŸãããªãŒã¹ãã©ãªã¢ã®ãã¶ã€ã³äºåæããåç±³ã®ã¯ã©ã€ã¢ã³ããšãã«ãããžã§ã¯ãã§ååããWebGLã¬ã€ãã¬ãŒã·ã³ã°ã䜿çšããŠãã¶ã€ã³ã®å€æŽããªã¢ã«ã¿ã€ã ã§èŠèŠåããããšãã§ããŸãã
- ç§åŠçããžã¥ã¢ã©ã€ãŒãŒã·ã§ã³ïŒ è€éãªç§åŠããŒã¿ã»ããïŒäŸïŒå»çã¹ãã£ã³ãæ°åã¢ãã«ïŒããé«ãèŠèŠçå¿ å®åºŠã§3Dã§èŠèŠåããŸããäžçäžã®ç ç©¶è ãã詳现ãªã¬ã€ãã¬ãŒã¹ããžã¥ã¢ã«ãéããŠããŒã¿ãå ±åã§åæã§ããŸãã
- ã²ãŒã ãšãšã³ã¿ãŒãã€ã¡ã³ãïŒ ãªã¢ã«ãªç §æãšåœ±ãæã€æ²¡å ¥åã®ã²ãŒã äœéšãåµé ããWebãã©ãŠã¶ãéããŠäžçäžã®ãã¬ã€ã€ãŒãã¢ã¯ã»ã¹ã§ããããã«ããŸãã
- Eã³ããŒã¹ïŒ ãªã¢ã«ãªè£œåã®èŠèŠåãæäŸããããšã§ããªã³ã©ã€ã³ã·ã§ããã³ã°äœéšãåäžãããŸããäŸãã°ãéŠæž¯ã®å®ç³å°å£²æ¥è ã¯ãã¬ã€ãã¬ãŒã·ã³ã°ã¬ã³ããªã³ã°ã§ãã€ã€ã¢ã³ãã®èŒããšåå°ãæ«é²ããäžçäžã®æœåšçãªè³Œå ¥è ãå®ç³ã®å質ãè©äŸ¡ã§ããããã«ããŸãã
å®è·µçãªæŽå¯ãšãã¹ããã©ã¯ãã£ã¹
- é©åãªé«éåæ§é ãéžæããïŒã·ãŒã³ã®ç¹æ§ïŒäŸïŒéçãåçããããªããã£ãã®æ°ïŒãèæ ®ããŠé«éåæ§é ãéžæããŸããBVHã¯ã»ãšãã©ã®ã·ãŒã³ã§äžè¬çã«è¯ãéžæã§ãããk-dæšãäžæ§ã°ãªãããªã©ã®ä»ã®æ§é ãç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«ããé©ããŠããå ŽåããããŸãã
- BVHæ§ç¯ãæé©åããïŒé«å質ãªBVHã«ã¯SAHã䜿çšããŸãããç¹ã«åçãªã·ãŒã³ã§ã¯ãããé«éãªæ§ç¯æéã®ããã«ç©ºéäžå€®å€ããªããžã§ã¯ãäžå€®å€ãªã©ã®ããåçŽãªå岿Šç¥ãæ€èšããŸãã
- å¯çããããŠã³ãã£ã³ã°ããªã¥ãŒã ã䜿çšããïŒå ç·ãšããŠã³ãã£ã³ã°ããªã¥ãŒã ã®äº€å·®å€å®ãã¹ãäžã®åœéœæ§ã®æ°ãæžããããã«ããžãªã¡ããªã«å¯çããããŠã³ãã£ã³ã°ããªã¥ãŒã ã®çš®é¡ãéžæããŸãã
- ããŒãã®é åºãæé©åããïŒãã£ãã·ã¥ã³ããŒã¬ã³ã·ãšãã©ããŒãµã«æ§èœãåäžãããããã«ãããŸããŸãªããŒãé åºä»ãæè¡ïŒäŸïŒæ·±ãåªå ãå¹ åªå ãç·åœ¢åïŒã詊ããŸãã
- ããŒã¿è»¢éãæå°éã«æããïŒåä»ãé åã䜿çšããJavaScriptãšGPUéã®ããŒã¿è»¢éã®åæ°ãæå°éã«æããŸãã
- ã·ã§ãŒããŒã³ãŒããæé©åããïŒã·ã§ãŒããŒå ã®åœä»€æ°ãæå°éã«æããå¹ççãªããŒã¿åã䜿çšããåå²ãé¿ããŸãã
- éåææäœã䜿çšããïŒãã©ãŠã¶ãå¿çäžèœã«ãªãã®ãé²ãããã«ãBVHæ§ç¯ããã®ä»ã®æéã®ãããæäœãéåæã§å®è¡ããŸãã
- WebGPUãæŽ»çšããïŒããå¹ççãªã¡ã¢ãªç®¡çãšã«ã¹ã¿ã ã®é«éåæ§é å®è£ ã®ããã«ãWebGPUã®æ©èœã調æ»ããŸãã
- ãããã¡ã€ã«ãšãã³ãããŒã¯ãè¡ãïŒå®æçã«ã³ãŒãããããã¡ã€ãªã³ã°ããã³ãã³ãããŒã¯ããŠãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããããã«å¿ããŠæé©åããŸãããã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠããã¬ãŒã ã¬ãŒããã¡ã¢ãªäœ¿çšéãã·ã§ãŒããŒã®ããã©ãŒãã³ã¹ãåæããŸãã
çµè«
é«éåæ§é ã¯ãWebGLã§ãªã¢ã«ã¿ã€ã ã®ã¬ã€ãã¬ãŒã·ã³ã°æ§èœãéæããããã«äžå¯æ¬ ã§ãã空éããŒã¿ãå¹ççã«æ§æããããšã«ããããããã®æ§é ã¯å ç·ãšããªããã£ãã®äº€å·®å€å®ãã¹ãã®æ°ãæžãããè€éãª3Dã·ãŒã³ã®ã¬ã³ããªã³ã°ãå¯èœã«ããŸããããŸããŸãªçš®é¡ã®é«éåæ§é ã空éããŒã¿æ§ææè¡ãããã³WebGLç¹æã®èæ ®äºé ãçè§£ããããšã¯ã髿§èœã§ã°ããŒãã«ã«ã¢ã¯ã»ã¹å¯èœãªã¬ã€ãã¬ãŒã·ã³ã°ã¢ããªã±ãŒã·ã§ã³ãéçºããããã«éèŠã§ããWebGPUãé²åãç¶ããã«ã€ããŠããã©ãŠã¶ã§ã®ã¬ã€ãã¬ãŒã·ã³ã°ã®å¯èœæ§ã¯ããã«åºãããããŸããŸãªæ¥çã§æ°ãããšããµã€ãã£ã³ã°ãªã¢ããªã±ãŒã·ã§ã³ãçãŸããã§ãããã