ä»é±ãChromeã¯WebGL 2.0ãåºè·ããæåãçºè¡šããã®ã§ããµããŒãã®è¿œå ãéå§ããæãæ¥ããšæããŸãã
äžéšã®æ°æ©èœã®ãµããŒããWebGLRenderer
ã«è¿œå ããPRã¯ãã§ã«ããã€ããããŸãããã©ããããããã WebGLRenderer
äž¡æ¹ã®webgl
$ããµããŒããããã®ã¯è¯ãèãã§ã¯ãªããšæããŸãããããã³webgl2
ã
WebGL2Renderer
ã«ããã«ã¡ã¯ïŒ https://github.com/mrdoob/three.js/commit/2ff9d410753b72a5e43b211dc3be26f0f0ab8a0eð
æ°ããã¬ã³ãã©ãŒã¯ã倧éã®æ¡ä»¶æããç§ãã¡ãæãã ãã§ãªããç©äºãã¯ãªãŒã³ã¢ããããæ©äŒãäžããŠãããŸãã BufferGeometry
ã®ã¿ããµããŒãããããšããå§ããŸãâïž
ç§ã®æ±ºæãåå ã§PRãçµ±åãããªãã£ããã¹ãŠã®äººã ã«ç³ãèš³ãããŸããïŒ ð
éåžžã«çŽ æŽãããã :)ç§ã¯å®éãWebGL2ãš1ã®è€éããã©ã®ããã«åŠçãããã«ã€ããŠå°ãå¿é ããŠããŸããã
UBOã䜿çšããããšã奜ãã®ã¯çŽ æŽãããããšã§ãã :)ãããŠç§ã¯BufferGeometryã®ã¿ããµããŒããããšããã¢ã€ãã¢ã倧奜ãã§ã-ããã¯ç©äºãéåžžã«åçŽåããã¯ãã§ãã
ãã©ã¯ãŒãã¬ã³ããªã³ã°ïŒUE4ãVRã®é床ã®ããã«è¡ã£ãŠããããšã®ããã§ãïŒã«åºå·ããã°ãã»ãšãã©åãã·ã§ãŒããŒããµããŒãããã®ã¯ã¯ãŒã«ã§ããããããã¹ã€ã³ã°ã§ããå¯èœæ§ãé«ããšæããŸããïŒ ã©ãæããŸããïŒ
WebGL2ãå©çšã§ããªãå Žåã«ã䌌ããããªãã®ã«ãã©ãŒã«ããã¯ã§ããããã«ãã·ã§ãŒããŒã®äºææ§ãç¶æããããšæããŸãã
@mrdoobããããããããŒã¬ã€ïŒ ãããŠã BufferGeometry
ãç¬å çã«äœ¿çšããããšèããŠããããã§ãã ð
ç§ã¯ãUBOã奜ããšãã@bhoustonã®ææ¡ã2çªç®ã«ããŠããŸãã
ã©ã€ãã£ã³ã°ãšã·ã£ããŠåŠçãã¬ã³ãã©ãŒããããå®å
šã«åé¢ããããšãå¯èœã§ããããïŒ ããã©ã«ãã¯æ¬åœã«äŸ¿å©ã§ãããã©ã€ãã£ã³ã°ãšã·ã£ããŠããžãã¯ãå®å
šã«å¶åŸ¡ãããå Žåã¯ã WebGLRenderer
ãšcoã 圌ããå§å©ããããããªæ°ãããŸãã
ãããŠããŠã£ãã·ã¥ãªã¹ã-yã¿ã€ãã®ã¢ã€ãã ããªã¹ãããŠããéããœãŒãã¢ã«ãŽãªãºã ãããã©ã°å¯èœãã«ããããšã¯ã§ããŸããïŒ 3ã€ã®ç¯å²å€ã®äžŠã¹æ¿ãã®ããŒãºããããçŸåšã®WebGLRenderer
ã®äžŠã¹æ¿ãé¢æ°ããªãŒããŒã©ã€ãããã®ã¯äžå¿
èŠã«é£ããããã§ãã ãããããããã¯ã¬ã³ãã©ãŒãªããžã§ã¯ããäœæãããšãã®ãªãã·ã§ã³èšå®ã§ããå¯èœæ§ããããŸããïŒ
WebGLRenderer 1ãå€æŽããŠãBufferGeometryãªããžã§ã¯ã以å€ã®ãµããŒããåé€ããå¿ èŠãããã®ã§ã¯ãªãããšæããŸãã ããã¯åé²ããããã®ããç°¡åãªæ¹æ³ãããããŸããã GeometryãBufferGeometryã«å€æããããã®åçŽãªé¢æ°ãããã人ã ã«åŒ·å¶çã«åŒã³åºãããå Žå...
WebGLRendererãšWebGLRenderer2ã®éã§æ©èœã®åçæ§ãç¶æããããšããŠããã®ã§ã¯ãªãããšå¿é ããŠããã®ã§ããããèšã£ãŠãããšæããŸãã 2ã€ã䞊åã«ç¶æãããããã1ã€ã®ã³ãŒãããŒã¹ãé²åãããæ¹ãç°¡åã§ãã
WebGLRenderer 1ãå€æŽããŠãBufferGeometryãªããžã§ã¯ã以å€ã®ãµããŒããåé€ããå¿ èŠãããã®ã§ã¯ãªãããšæããŸãã ããã¯åé²ããããã®ããç°¡åãªæ¹æ³ãããããŸããã GeometryãBufferGeometryã«å€æããããã®åçŽãªé¢æ°ãããã人ã ã«åŒ·å¶çã«åŒã³åºãããå Žå...
ãã§ã«ãã®ãããªæ©èœããããŸãã ããããããã»ã©åçŽã§ã¯ãããŸãã...
APIãšãµããŒããããŠããæ©èœãåæ€èšã§ããããã«ã WebGLRenderer2
ãæåããäœæããæ¹ããããšæããŸãã
Firefox51ã§WebGL2ããµããŒããããããã«ãªããŸããïŒ https ïŒ//www.mozilla.org/en-US/firefox/51.0/releasenotes/
ãããåŸ ã¡ãããŸããïŒ
WebGL2.0ããµããŒãããChrome56ããªãªãŒã¹ãããŸããïŒ
https://developers.google.com/web/updates/2017/01/nic56
WebGLRenderer2
ãåã«é²ããè¯ãæ©äŒã§ããïŒ XD
WebGLDeferredRenderer2ãäœæããå¿ èŠããããŸããïŒ
æ¥é±ãããã¹ãŠã®èª¿æ»ãéå§ããäºå®ã§ãã âïž
ãã£ã³ã¹ãããã°ãããå°ã調ã¹ãŠã¿ãŠãã ããã ãã£ãã楜ãã¿ã«ããŠããŸãïŒ ïŒ3Dãã¯ã¹ãã£ïŒ
@mrdoob
æŽæ°ã¯ãããŸããïŒ
ãäžæãªç¹ãããããŸãããããæ°è»œã«ãåãåãããã ããã
ç§ãã¡ã¯è©±ãåããå©ããããšãã§ããŸã; D
ãŸã æéããããŸããã ããã«ããã«ïŒ ð
æŽæ°ã¯ãããŸããïŒ ç§ã¯ç¹ã«ãããã€ãã®å»çšç»åãããªã¥ãŒã ã¬ã³ããªã³ã°ããããã®3Dãã¯ã¹ãã£ã«èå³ããããŸãã ãŸãããã®ãã«ãªã¯ãšã¹ããæåãããããã®ãæäŒãããããŠããã ããŸãã
çŸåšã®three.jswebgl2ãµã³ãããã¯ã¹ã¯æ©èœããŸããïŒïŒ https://threejs.org/examples/webgl2_sandbox.html
three.jsããŒãžã§ã³ã®ãã«ãã®åé¡ã§ããå¯èœæ§ããããŸããïŒ
ãªã³ã©ã€ã³<script type="module">
ããã§ã«å®è£
ãããŠããå Žå...
https://groups.google.com/a/chromium.org/d/msg/blink-dev/uba6pMr-jec/tXdg6YYPBAAJ
å°ãªããšãMozillaã¯ããã«åãçµãã§ããŸãhttps://bugzilla.mozilla.org/show_bug.cgi?id=1240072
@mrdoob ãããã¯ãWebGL 2.0ã«æŽæ°ããããšãã«Three.js APIã<script type="module">
ãå©çšããããšãæåŸ
ã§ããããšãæå³ããŸããïŒ ;ïŒ
ãšããã§ãåœé¢ã¯WebGLRendererã«WebGL2.0ãµããŒããè¿œå ããã®ãæãç°¡åã ãšæããŸãã ããã«ããã段éçãªæ¡çšãå¯èœã«ãªããæ©èœæ€åºãå®è¡ããŠWebGL2æ©èœã䜿çšã§ãããã©ããã確èªã§ãããšæããŸãã ãããäžçªé£ããããšã§ã¯ãªããšæããŸãã çŽç²ãªWebGL2ã¬ã³ãã©ãŒãšã¯å¯Ÿç §çã«ãå°ãè€éã«ãªãããšã¯ããã£ãŠããŸãããçæçããã³äžæçã«ã¯æãç°¡åãªæ¹æ³ã§ãã ãããŠãWebGL 2ã®æ¡çšçã90ïŒ ãè¶ ãããšãæçµçã«WebGL1ãæ®ããšãããŸã§ãã£ãããšé²åããŸãã
Khronosã¯webgl2ã§ãŠã§ãããŒãéå¬ããŸããã
https://docs.google.com/presentation/d/11-mTDNmSJzJnRVGu9Vu6AUzOt34yV3PO7oqw4E5wc2o/edit#slide = id.gd15060520_0_38
ã¡ãã£ã¢ã¯ãŸããªãå
¬éãããŸããããã¬ãŒã³ããŒã·ã§ã³ã¯äž»ã«ã¹ã©ã€ãã®ãã¬ãŒã·ã§ã³ãšã¹ã©ã€ãå
ã®é¢é£ãããã¢ã§ããã
ããã«ã¯ãæ¢åã®WebGLRendererããã®ãæŽæ°ãã§ã¯ãªããæ°ããéå§ãå¿ èŠã§ããããšã¯æããã§ãã
es6ã¢ãžã¥ãŒã«ã«é¢ããŠã¯ããœãŒã¹ã®çŸåšã®ã¢ãããŒãã¯es6ã¢ãžã¥ãŒã«ã§ããããã³ãã«ã«ããŒã«ã¢ããã䜿çšããããšã¯ãããã¥ã¢ã«ãã«ããããµããŒãããæ¹æ³ã§ãããšæããŸãã
ç§ã¯ããã1é±éã»ã©è¡ããSafari TechPreviewã§ã¢ãžã¥ãŒã«ããã¹ããããã¹ãŠã®ãã©ãŠã¶ãŒã§ãã³ãã«ããã¹ãããŸããã å®éã«ã¯ãçŸåšã®ãã³ãã«ã ãã§ãªãããœãŒã¹ããªãŒããã«ã/æã€ããšã«ãªããŸãã çŸåšã®ã¯ã³ã©ã€ããŒããŒã«ã¢ãããããã³ã¢ãžã¥ãŒã«ã§äœ¿çšããããã®ãœãŒã¹ããªãŒã®ã³ããŒã
@bhoustonèªæ...
ææ°ã®ã¹ããŒã¿ã¹ïŒ
ç§ã¯ããã«ã€ããŠã©ããããããè€éãªæããæã£ãŠããŸãã åœåãç§ã¯@bhoustonãææ¡ããã®ãšåããã¹ãèããŠããŸããããçŸåšã®WebGLRenderer
ã«webgl2æ©èœã段éçã«è¿œå ããŠãããŸããã ããããããã¯ã¬ã³ãã©ãŒãããè€éã«ãã2ã€ã®ããŒãžã§ã³éã§æãç°ãªãæ©èœãåŠçããã®ãé£ãããããã©ã³ããšæ¡ä»¶ãã§ãã¯ã§ãã£ã±ãã®åä»ãªã³ãŒãã«ãªã£ãŠããŸããŸãã
1ã€ã®ãªãã·ã§ã³ã¯ã WebGLRenderer
ãWebGL2Renderer
ã®éå§ç¹ãšããŠè€è£œããå
ã®ã¬ã³ãã©ãŒããããããšãªãæ©èœãåé€/è¿œå ãç¶ããããšã§ãã
ããããæãåæã®webgl2ãµããŒããåããPlaycanvasã®ãããªãšã³ãžã³ãèŠããšãUBOãVAOã®ãããªæ°ããwebgl2æ©èœãå©çšããŠããªãããšãããããŸããããã¯ãå€æŽããããã®ã ããã§ãããšã³ãžã³ã®å€ãã®éšåã
åãã¬ã³ãã©ãŒã§äž¡æ¹ã®ããŒãžã§ã³ãæ··åšãããããšãããšãã³ãŒãã®ä¿å®ãé£ãããªããwebgl2ãå®å šã«ãµããŒããããããã«ãªããšããã«ããšã«ããããããªãã¡ã¯ã¿ãªã³ã°ããå¿ èŠããããšåŒ·ãä¿¡ããŠããŸãã webgl2ã念é ã«çœ®ããŠãŒãããèšèšããã®ã§ã¯ãªããäºææ§ãç¶æããããã«èšèšã«åŸãããšãäœåãªããããŸããã
ã§ããããç§ã®æ祚ã¯ãé
ããŠãWebGL2Renderer
ãæåããå§ããããšã§ãïŒwebgl2ã100ïŒ
ã®ãµããŒãã«è¿ã¥ããŸã§ããŸã æ¹åã®äœå°ããããŸãïŒã
ãã¯ã¹ãã£ãããã°ã©ã ãªã©ãã¬ã³ãã©ãŒèªäœä»¥å€ã®äžéšã®ãã¡ã€ã«ãå€æŽããå¿
èŠããããŸãã ãµããã©ã«ããŒrenderer\webgl2
ãäœæãããã®ã¬ã³ãã©ãŒçšã«ç¹å¥ã«äœæããããã¡ã€ã«ãè¿œå ãç¶ããå¿
èŠããããŸããïŒ
webgl2ãšå®å šã«äºææ§ã®ããã¬ã³ãã©ãŒãäœæãããšãã«ãããã念é ã«çœ®ãããã«è¡ãå¿ èŠã®ããå€æŽã®ãªã¹ãã§åé¡ãäœæããããšãã§ããŸãããŸããMVPãè°è«ã«éäžããããã«å¿ èŠãªæ©èœã®ãªã¹ããäœæããããšãã§ããŸãããããã¯ãã®åæç¶æ ã§ãå®è£ ã«é¢ããããæ·±ãäŒè©±ãéå§ããŸãã
ãã®éçºã«é¢ããææ°æ å ±ã¯ãããŸããïŒ
ãŸã ã ä»æã¯WebVRãåªå ããŠããŸããã
äžèšã®@fernandojsgã§ææ¡ãããŠããããã«ãWebGL2ããã³ES3ã·ã§ãŒããŒèšèªãžã®çŽ æ©ããnãããŒãã£ã€ã³ãã¬ãŒã¹å€æãè©ŠããŸããã æŒãã€ã¶ãããå·®åã¯æ¬¡ã®ãšããã§ããhttps ïŒ//github.com/tstanev/three.js/compare/master ... tstanevïŒtraian / webgl2å®éãæåã«äºæ³ããã»ã©æªãã¯ãããŸããã æŠç¥çã«é
眮ãããifdefãä»ããŠäž¡æ¹ããµããŒãããããšã¯ãããã»ã©éãããšã§ã¯ãªãããã«èŠããŸãã
[ç·šéïŒæŽæ°ããããªã³ã¯ã]
@tstanevå®çšçãªäŸã¯ãããŸããïŒ
ãªã³ã¯ããããã©ã³ãã«ãã³ãã«ãããŠããthree.jsã®äŸã¯æ©èœããŠããŸãïŒdiffã§ãããããã«ã以åã«æ¡åŒµæ©èœãå¿ èŠãªãã®ãå€æããŸããïŒã ãªããžããª/ãã©ã³ãã®ã¯ããŒã³ãäœæããŠãããŒã«ã«ã§å®è¡ã§ããŸãã
@tstanevãªã³ã©ã€ã³ã§webgl2ã®å€æŽã®ããã©ãŒãã³ã¹æ¯èŒãè¡ãã®ã¯ã©ãã§ããïŒïŒãããèŠããšããã§ãããã ïŒwebgl2ã®three.jsãšthree.jsïŒ
ããã«ã¡ã¯
ãã®æé«ã®ã¢ã€ãã¢ãããããšãã
ããã°ã©ã ã§webgl2rendererã䜿çšãããã®ã§ãããããªã³ã³ãã€ã«ããŒãžã§ã³ïŒr86ïŒã§äœ¿çšã§ããªãã£ãããããœãŒã¹ãååŸããthree.jsã€ã³ããŒãã§webgl2rendrerã®ã³ã¡ã³ãã解é€ããŠãããã«ãããŸãã
ããã§ãç§ã®ã³ãŒããšäŸïŒwebgl2-sandboxïŒã¯ãšã©ãŒãªãã§å®è¡ãããŸãããäœã衚瀺ãããŸãã
ç·šéïŒç§ã¯Firefox54ãšChrome60ã§ãããããã¹ãããŸãã
bufferGeometryãšShaderMaterialã䜿çšããç§ã®äŸã¯ãwebglrendererã§æ£ããæ©èœããŸã
誰ãç§ã«çããŸãããïŒ webgl2rendererã®çŸåšã®åé¡ã¯äœã§ããïŒ
@ MHA15ã¯ããŸã æ¬çªç°å¢ã®æºåãã§ããŠããªãããããããããã«ãã«ã¯å«ãŸããŠããŸããã
ããã¿ããªãWebGL2Rendererã®éçºã¯ã©ãã§ããïŒ
ãŒãããäœãçŽãããšã«ããããšã¯ç¥ã£ãŠããŸãã ãããããããåçŸããã®ã¯å€§å€ãªäœæ¥ã§ããããããã°ããçµã¡ããã®ãããã¯ã®éçºã¯å°ãé
ããšæããŸãã
ãã®æç¹ã§ã @ mattdeslãhttps://github.com/mrdoob/three.js/issues/8125ã§è¡ã£ãããã«ãWebGLRendererã®ã¯ããŒã³ãäœæããŠWebGL2ã«å€æŽããããšãåæ€èšã§ããŸããïŒ æ¬¡ã«ã @ fernandojsgãèšã£ãããã«ãUBOã®ãããªããã€ãã®æ°æ©èœã«åºã¥ããŠã¬ã³ãã©ãŒãå€æŽã§ããŸãã æçµçã«ã¯ããããã®webgl1ã¬ã¬ã·ãŒã³ãŒãããã¹ãŠåé€ããŸãã
ç§ã®æèŠã§ã¯ãã¬ã³ãã©ãŒãæåããäœæããã«ã¯èšå€§ãªéã®äœæ¥ãå¿ èŠã§ãããçæ³çã«ã¯å°æ°ã®è²¢ç®è ããããéå§ã§ããŸããã ãã®äŒè©±ã¯1幎åã«å§ãŸããŸããã ãããŠãç§ãã¡ãæ°ã¶æããã«ã¿ã€ã ã§ãŒãããæ§ç¯ããæäžäž»ããããšããç¹ã«å°éããªãéããç§ãã¡ã¯ããããæ¥å¹ŽåãããŒãžã«ãããšä¿¡ããŠããŸãã
ç§ã®æèŠã§ã¯ãã¬ã³ãã©ãŒãæåããäœæããã«ã¯èšå€§ãªéã®äœæ¥ãå¿ èŠã§ãããçæ³çã«ã¯å°æ°ã®è²¢ç®è ããããéå§ã§ããŸããã
ããã¯æ¬åœã§ãã ããããããã§ããã©ãã«ã§ãæ¡ä»¶æãè¿œå ããŠWebGLRenderer
ã®ä¿å®ãé£ãããããããç°¡åã ãšæããŸãã ç§ã¯éå»5幎éã®ã»ãšãã©ãã WebGLRenderer
ãèªã¿ãããç¶æããããããããã«è²»ãããŠããŸããã
ãŸãã @ fernandojsgã¯ä»åŸæ°é±éã§ãããè©ŠããŠã¿ãäºå®ã ã£ããšæããŸãã
ããã¯çŽ æŽãããã§ãã @fernandojsgããã®çŽ æŽãããä»äºã楜ãã¿ã«ããŠããŸãïŒ
PSç§ã¯èšããªããã°ãªããªã..ã³ã³ãã¥ãŒã¿ã°ã©ãã£ãã¯ã¹ã®ç§ã®èŠéãåºããŠããããã®ãããžã§ã¯ãã®ãã¹ãŠã®è²¢ç®è ã«æè¬ããŸãã å°æ¥ãããã€ãã®äŸãæäŸã§ããããšãé¡ã£ãŠããŸãã
@mrdoobã«åæããŸããçŸåšã®ã¬ã³ãã©ãŒãå€æŽããããããæ°ããã¬ã³ãã©ãŒãæåããäœæããæ¹ãç°¡åã§ãã
圌ãèšã£ãããã«ãç§ã¯æ¬¡ã®é±ã«ãããè©ŠããŠã¿ããã£ãã ç§ã®ã¢ãããŒãã¯ãç»é¢äžã®åçŽãªããã¯ã¹ã«å¿
èŠãªãã®ã ããäœæãå§ããæ¢åã®ãã®ãååŸããŠãªãã¡ã¯ã¿ãªã³ã°ããã®ã§ã¯ãªãã段éçã«æ©èœãè¿œå ãç¶ããããšã§ãã
äŸãšããŠã WebGLRenderer
ã®çŸåšã®ç¶æ
ãèŠãŠã¿ãŸããããã¢ãžã¥ãŒã«åãšã«ã¹ã¿ãã€ãºæ§ãé«ããããšã«ã€ããŠå€ãã®è°è«ããããŸããããå
éšã³ãŒããæéã®çµéãšãšãã«æ¹åããç¶ãããšããŠããå€éšã§ã¯ãã ã®ãã©ãã¯ããã¯ã¹ã
äœããããŸãããããã«ãªã£ããããã«PRãéããããã§æ¬¡ã®ã¹ãããã«ã€ããŠè©±ãåãç¶ããããšãã§ããŸãã
ç§ãã¡ãããã«ããé... 5f889ce296aaf447ec5992a6df726691098a9110 8aab6e0382cd6ba8fd3fb943e7f65141bf3a50bc
webgl2_sandbox
ã¯åã³æ©èœããŸãïŒãã ãães6ã¢ãžã¥ãŒã«ãå¿
èŠã§ãïŒã
@mrdoobãã¹ã¿ãŒ/ãªãªãŒã¹ã§ãã€å©çšå¯èœã«ãªããã倧ãŸããªèŠç©ããã¯ãããŸããïŒ :)ç§ã¯ãããèµ·ãã£ãŠããããšãå¬ããæããŸãïŒ :)
@wdaniloããã§ã¯ãããŸãã... WebGL2ã®ã©ã®æ©èœãå¿ èŠã§ããïŒ
@mrdoobã®æ倧ã®æ¹åç¹ã¯ãUniform BufferObjectsãšSampler2DArrayã«ãããã®ã§ãã ã¢ã«ãã¡ãããã§ãã¹ã¯ãããè€æ°ã®ãããªã¢ã«ãã¬ã€ã€ãŒåããè€éãªã·ã§ãŒããŒã䜿çšããŠããããããã¯ã¹ãã£ãŠãããã®å¶éã«çŽé¢ããŠããããããã¯ã¹ãã£é åã¯çŸåšã®ãããžã§ã¯ãã«ãšã£ãŠéåžžã«æçã§ãã
@mrdoob glslã®flat
ã®ãããªæ°ããããŒã¯ãŒããéåžžã«åœ¹ç«ã¡ãŸãã
ç§ã®ãããžã§ã¯ãã«ã¯3Dãã¯ã¹ãã£ãå¿ èŠã§ãã
é¢çœã...
人ã
ãWebGL2.0ãå¿
èŠãšããç¹å®ã®ã±ãŒã¹ãèªèããã®ã«éåžžã«åœ¹ç«ã¡ãŸãã
ããããç¶ããŠãã ããïŒ
3Dãã¯ã¹ãã£ãç§ãã¡ã®å€§ããªç¹åŸŽã§ãã ããã€ãã®ã·ã§ãŒããŒæ©èœã䜿çšããŠãããšæããŸãã
æã MRTã欲ãã
è€æ°ã®ã¬ã³ããªã³ã°ã¿ãŒã²ããã«å¯ŸããŠã+1
WebGL1ã§ã¯æ¡åŒµæ©èœãä»ããŠè€æ°ã®ã¬ã³ããªã³ã°ã¿ãŒã²ããããã§ã«ãµããŒããããŠãããThreeJSã«ã¯PRããããŸãïŒ https ïŒ//github.com/mrdoob/three.js/pull/9358ïŒãã¢ïŒã
ãã«ããµã³ãã«ã¬ã³ããªã³ã°ã¿ãŒã²ãããç§ã®ãæ°ã«å ¥ãã®æ©èœã ãšæããŸãã ã»ãšãã©ã®ã¯ã©ã€ã¢ã³ãã¯åŸåŠçïŒãã«ãŒã ãLUTãªã©ïŒãèŠæ±ããŸããããã¹ãFXãå®è£ ããããšãé©åãªã¢ã³ããšã€ãªã¢ã·ã³ã°ããªãããšã«å€±æããŸãã MSAAã¬ã³ããªã³ã°ã¿ãŒã²ããã䜿çšãããšãæçµçã«ã¢ã³ããšã€ãªã¢ã¹åŠçãããåŸåŠçãããã·ãŒã³ãäœæã§ããŸãã
åæããŸãã ãšãã§ã¯ãã³ã³ããŒã¶ãŒã䜿çšããåŸåŠçã·ãŒã³ã§ã®ã¢ã³ããšã€ãªã¢ã·ã³ã°ã®åé¿çã·ã§ãŒããŒã¯ãçã®ã¢ã³ããšã€ãªã¢ã·ã³ã°ã«ã¯äžååã§ãã
ãããŒãã£ãŒãããã¯ã®+1ã ãŸãã¯ããã§ã«webgl1æ¡åŒµæ©èœãšããŠãµããŒããããŠããŸããïŒ
äžã€ïŒ
2017幎12æ14æ¥æšææ¥ååŸ9æ45åã«ã€ã«[email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
åæããŸãã åŸåŠçãããã·ãŒã³ã§ã®ã¢ã³ããšã€ãªã¢ã·ã³ã°ã®åé¿çã·ã§ãŒããŒ
ãšãã§ã¯ãä»ãã®ã³ã³ããŒã¶ãŒã¯ãçã®ã¢ã³ããšã€ãªã¢ã·ã³ã°ã«ã¯äžååã§ããâ
ã³ã¡ã³ãããã®ã§ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/mrdoob/three.js/issues/9965#issuecomment-351815640 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AHTX1RhYdGuTVSpmOy1ka-6gy1eslHQAks5tAXrFgaJpZM4Kj_9l
ã
ããã«ããã€ãã®ãŠãŒã¹ã±ãŒã¹ããããŸãïŒ
ã¢ã³ããšã€ãªã¢ã·ã³ã°ãšåŸåŠçãäžç·ã«äœ¿çšããããšã¯ãç§ã«ãšã£ãŠæãéèŠãªããšã§ãã
@mrdoobç§ã®ããã3ã®WebGL2æ©èœ/ãŠãŒã¹ã±ãŒã¹ïŒéèŠåºŠã®é«ãé ã«ïŒïŒ
ã¡ãªã¿ã«@mrdoob ããªãïŒ9358 PRãããŒãžãããªãã£ãã®ãç¥ã£ãŠããŸããïŒ @mattalatãæžããããã«ãããã¯ãã«ãã¿ãŒã²ããã¬ã³ããªã³ã°ãthreejsã«ãããããŸãã 2幎åã«ã³ããããããä»ã®å€æŽãææ°ã«ä¿ã€ããã«æ°åä¿®æ£ãããŸããããä»ãŸã§ã¯ãããŸãã:(
SDFã®åœ¢ç¶èšè¿°ãå€çšããã·ãŒã³ãããã®ã§ã質åããŠããŸãã åã·ã§ã€ãã¯6ã€ã®ç°ãªãåºåãåºåããã®ã§ã0ãã5ãŸã§ã®ã·ã§ãŒããŒçªå·ã«æž¡ããŠ6åèšç®ããŸããè€æ°ã®åºåã䜿çšãããšãããã©ãŒãã³ã¹ã5ååäžããŸãã
@wdaniloããããé©åãªã¿ã€ãã³ã°ã§ã¯ãããŸããã§ããïŒåœæãã¬ã³ãã©ãŒã§å€ãã®ç©ãåãããŠããŸããïŒã ãŸãã競åãèµ·ããããããã«ããå«ãŸããŠããããã§ãã æ°ããPRãããããã«èª°ããããŸããïŒ
/ cc @edankwan
3Dãã¯ã¹ãã£ãšãã«ããµã³ãã«ã¬ã³ããªã³ã°ã¿ãŒã²ãããå¿ èŠã§ãã
çŸåšãã®ãããªããšãè¡ãå¥ã®æ¹æ³ããªãéããdepthTexture.type = THREE.FloatType ..ãèšå®ã§ããããã«äœ¿çšããããšèããŠããŸãã
1以å€ã®LineThicknessãWindowsããã³WebGL2.0ã§æ©èœãããšããåžæã¯ãããŸããïŒ ã¯ãã®å Žåãããã¯ç§ãã¡ã®åºåã®ããã€ããæ¹åããã§ãããã
ãããŠãããã§ç§ã¯èªåèªèº«ã«è¿ä¿¡ããŸãã SOã§3æ¬ã®ç·ã®åºæ¬çãªææã䜿çšããŠç·ã®å€ªããèªããšã«ããã倪ãç·ã«ã¯å°æ¥çã«ãžãªã¡ããªãå¿ èŠã«ãªãããšãç解ããŸããã
@ Richard004ããã¯WebGL2ãšã¯äœã®é¢ä¿ããããŸããããã®æ©èœãªã¯ãšã¹ãã®PRã¯ãã§ã«ãããŸããïŒ11349ãåç §ããŠãã ããð
ããã«ã¡ã¯@mrdoobãš@ Mugen87
ãã©ã°ã¡ã³ãã·ã§ãŒããŒå
ã®ãããæäœãšåçé
åã®ã€ã³ããã¯ã¹ä»ããå¿
èŠã§ãã æåã®ãã®ã¯ããããããŸãäžè¬çã§ã¯ãããŸããããCUDAã«ãŒãã«ãWebGLïŒGLSLïŒã«ç§»æ€ããããšããŠããã®ã§ããããå¿
èŠã§ããä»ã®ã·ã§ãŒããŒèšèªã§ã¯ãããæäœãå¯èœã§ãããWebGL 1.0ïŒGLSLïŒã§ã¯ã§ããŸããã
2ã€ç®ã¯ãå€ãã®éçºè ãæ©æµãåããå¯èœæ§ããããšæããŸããã€ãŸããå€æ°ã䜿çšããŠé åèŠçŽ ã«ã¢ã¯ã»ã¹ããããšã§ãã çŸåšãWebGL 1.0ïŒGLSLïŒã§ã¯ã次ã®ãããªããã°ã©ã ã¯å€±æããŸãã
int myData[200];
int x = 3; // 'x' might change later based on my lookup needs
int requestedData = myData[x];
ãã ããWebGL 2.0ã§ã¯ããããè¡ãããšãã§ããŸãã å€ãã®å Žåãé åããããŸããŸãªå€ãååŸããå¿ èŠãããã«ãŒãå ã§å¿ èŠã«ãªããŸãããå埩ã«ãŒãïŒããšãã°ãäžèšã®äŸã§ã¯0ãã199ïŒãå®è¡ããããšã¯ã§ããŸãããããã¯ããã¹ãŠã®åäžããã§ãã¯ããå¿ èŠãããããã§ããèŠçŽ ãšããã¯æ¬åœã«é ãã§ãã
åŸåŠçã§ã®ã¢ã³ããšã€ãªã¢ã¹ã¯ééããªãæçã§ãã
ãã®ãã¹ãŠã®äžã§ã®è³ªåã§ãïŒThreeã®æ°ããã¢ãŒããã¯ãã£ã®æéã§ããïŒ
æè¿ãD3ããŒãžã§ã³4ã䜿ãå§ããŸãããããã¯å®å
šã«åèšèšããããã®ã§ãã Es6
ã¢ãžã¥ãŒã«ã ãããŠã¯ããã«éèŠãªã®ã¯ã 30åã®ã¢ãžã¥ãŒã«ã§ããããããç¬èªã®ãã®ã§ããã
ã¬ãã D3ã¢ãŒããã¯ãã£ã確èªããããšã匷ããå§ãããŸãã
ã¹ãªãŒã«ãããå¿
èŠã ãšèšã£ãŠããã®ã§ã¯ãããŸãããã
ã¡ãžã£ãŒããŒãžã§ã³ãã³ãã éšåçã«webgl2ãåå ã§ãã ããããŸãå¿
èŠæ§ã®ãã
ãµãã¢ãžã¥ãŒã«ã
äŸïŒD3ãéžæããªããžããª/ãµãã¢ãžã¥ãŒã«ããããŸãã ããã¯ããªãã®åºæ¬ã§ã
jQuery DOMã¢ãžã¥ãŒã«ã§ãããDOMã®ãã¹ãŠã®åé·æ§ãé ãããŠããŸã
æ©èœçãªãã§ãŒã³ãã¶ã€ã³ã æ®ãã®éšåã䜿çšããã«ãã®ãŸãŸäœ¿çšã§ããŸã
D3ã
ãã¹ãŠã®WebGLãäœæãã3ã€ã®ç¬ç«ããã¢ãžã¥ãŒã«ã奜ãã§ã¯ãããŸããã
åé·æ§ãæ¶ããŸããïŒ ãã¶ããwebgl ctx / shaderçšã®è€æ°ã®ãµãã¢ãžã¥ãŒã«ã§ãã
管çããããã¡ç®¡çãªã©ã 確ãã«ããããã¡ãžãªã¡ããªã¯
ãã®ããã«ããããã ããŒãããã·ã§ãŒããŒãäœæããããã®åäžã
ã¡ãã£ãšããèãã
@ fetox74ãã§ã«AAãå®è¡ã§ããããšã¯ééããããŸããhttps://threejs.org/examples/?q=fxaa#webgl_postprocessing_fxaa
@elunty FXAAShaderã¯ãå ã®ã¢ã³ããšã€ãªã¢ã¹ãšæ¯èŒããŠååãªçµæãçæããŸãããç§ã¯ãããå®éã«äœ¿çšããŸããã
ç§ã¯äž»ã«VAOãšãããããããžã®æžã蟌ã¿ã«èå³ãããããã®ä»æ§ã§å¯èœã«ãªãããšãé¡ã£ãŠããŸãã
@pailheadé¢é£ïŒ8705ïŒãŠã£ã³ã¯ïŒ
EXT_shader_texture_lod
ã®ãã€ãã£ããµããŒãã楜ãã¿ã«ããŠããŸãã
ã»ãšãã©ã®Androidããã€ã¹ãšMSEdgeããã³InternetExplorerã§MeshStandardMaterial
ããã³MeshPhysicalMaterial
ã䜿çšããŠãããšãã«çæãããã¢ãŒãã£ãã¡ã¯ãã解決ã§ããå ŽåããããŸã
@mrdoobThreejsãWebgl2.0ã«æŽæ°ããèšç»ã¯ãããŸããïŒ ãã®ã¹ã¬ããã¯æåéãäœå¹Žãããããä»ã®ãã¹ãŠã®ãã¬ãŒã ã¯ãŒã¯ããã§ã«åé²ããŠããéãå®éã«ã¯äœãå€ãããŸããã ç§ã¯ããã«é£ãã決æãããã§ããããç§ãã¡ã¯ãããããããã³ãäœãã®äžã«ç§»äœããªããã°ãªããªãã§ãããããããŠç§ã¯æ¬åœã«ã¹ãªãŒãšäžç·ã«ããããšæããŸãã ããããã°ããã®è¿ä»£åã®èšç»ã¯ãããŸããã
@wdanilo WebGL 2.0ããããžã§ã¯ãã®åªå äºé ã§ããå Žåã¯ããããã³ã«ç§»è¡ããããšããå§ãããŸãã three.jsã®å¯çš¿è ãããã«åãçµãããšãèšç»ããŠããããšã¯ç¥ã£ãŠããŸãããç§ã¯å人çã«WebVRãšã¢ãŒãã£ã¹ãã®ã¯ãŒã¯ãããŒïŒsvgãµããŒããªã©ïŒã«çŠç¹ãåãããŠããŸãã
@mrdoobããã§ã®è¿ éãªåçã«å¿ããæè¬ããŸãã ç§ã¯æ¬åœã«three.jsãæŸæ£ããããªãã§ãã libãå éšã§ã©ã®ããã«æ§ç¯ããããã²ãŒã ã«çŠç¹ãåãããããªã©ã§ã¯ãªããäžè¬çãªããã¬ãŒã ã¯ãŒã¯ã§ãããšããåæãæ°ã«å ¥ã£ãŠããŸãããšã«ãããæ å ±ãšãããæ確ã«ããŠããã ãããããšãããããŸãã
ïŒ @takahiroxã«æè¬ããŸããç§ã¯ãã®ã¹ã¬ãããç¥ã£ãŠããŸããïŒã ãã«ãªã¯ãšã¹ãïŒ13692ãäœæããŸããã ç§ã¯ããã«çŠç¹ãåœãŠãããŠããªãããšãç解ããŠããŸãããç§ãã¡ã®ç®çã®ããã«ãããã¯ããŸãæ©èœããŠããŸãã
é¢é£ïŒ13702
ïŒ9965ãšïŒ12250ã«ç¶ããŠWebGL2ããŒã¹ãã©ã³ããäœæããŸãã
ãªããžããªïŒ https ïŒ//github.com/takahirox/three.js/tree/WebGL2Base
äŸïŒ https ïŒ//rawgit.com/takahirox/three.js/WebGL2Base/examples/index.html
ããã䜿ã£ãŠWebGL2.0 + Three.jsãèµ·åã§ããŸãã
ïŒ @yoshikiohshimaã®ä»äºãšççŸããŠãã¿ãŸããïŒ
@mrdoob three.js / dev-2.0ã®ãããªWebGL2Rendererã®ãã©ã³ããäœæã§ããŸããïŒ ãŸãã¯ããããdevã«ããŒãžããŠãwebgl1ãšwebgl2ã®éã«ãŸã å€ãã®éè€ããã³ãŒããããã®ã§ããããïŒ
ç§ã¯ãã®åé¡ã«é¢ããéå»ã®éçºã«äžæ £ãã§ãã @takahirox ãããªããåã£ãŠããæŠç¥ãšhttps://github.com/takahirox/three.js/tree/WebGL2Baseã«ãã£ãŠãµããŒããããŠãããã®ãèŠçŽã§ããŸããïŒ ïŒãããŠãŸãç§ã®ç¡ç¥ããè©«ã³ããŸãïŒããããç§ã¯WebGL2ããµããŒãããããã«å€ãã®éè€ããã³ãŒãã®å¿ èŠæ§ãèŠãŸããã§ããã åé¡ã¯äœã§ããïŒ
@mrdoob three.js / dev-2.0ã®ãããªWebGL2Rendererã®ãã©ã³ããäœæã§ããŸããïŒ ãŸãã¯ããããdevã«ããŒãžããŠãwebgl1ãšwebgl2ã®éã«ãŸã å€ãã®éè€ããã³ãŒããããã®ã§ããããïŒ
ãªãããã«æ°ãããã©ã³ããå¿ èŠã«ãªãã®ãããããŸããã ãªãéè€ããã³ãŒããããã®ã§ããããïŒ
競åã¯ãªãããã§ãã çŸåšãWebGL2.0ã«ã¯2ã€ã®èŠæ±ããããŸãã
WebGL2Renderer
ãäœæããŠãWebGL2.0ã®å
šæ©èœããµããŒãããé©åã«æé©åããWebGLRenderer
ã«webgl2
ãµããŒããè¿œå ããŸãã ãã ããWebGL2.0ã®æ©èœã¯å®å
šã«ã¯ãµããŒããããŠããããã¬ã³ãã©ãŒãæ··ä¹±ãããããªããããWebGL2.0çšã«æé©åãããŠããŸããã ã€ãŸããåºæ¬çã«ããã¯ãThree.js + WebGL2.0 + GLSL3.0ã®æ©æã¢ã¯ã»ã¹ã®ããã ãã®ãã®ã§ããç§ã®ä»äºã¯1ã§ãã圌ã®ä»äºã¯2ã§ããéè€ããã³ãŒãã¯ãªãã2ã®æ°ãããã©ã³ããäœæããå¿ èŠããããŸããã
@takahiroxãšãããããåãæ¯åºã§åãã»ãããããšæããŸãã
æ¹åããã°...
https://github.com/mrdoob/three.js/blob/dev/src/renderers/WebGL2Renderer.js
webgl2
ã®äŸã§ã¯ãã¯ã©ã¹ãçŽæ¥ã€ã³ããŒãããŸãïŒãã«ãã¯å¿
èŠãããŸããïŒ...
https://github.com/mrdoob/three.js/blob/dev/examples/webgl2_sandbox.html#L39 -L47
è¡çªããã£ãŠã¯ãªããŸããã
1ã€ã®WebGLRenderer
ã§WebGL2.0ã®ãµããŒããéå§ããŠããããã«èŠããã®ã§ããããŸã§ã®ãšããç§ã®WebGL2Baseãå¿ããããšãã§ããŸãã
WebGL2Rendererã®å®è£
ããŸã èããŠããŸããïŒ
ç§ã¯æè¿WebGL2ãµããŒããè¿œå ããããšãããããæ¢ããŠããŸããããããŠç§ã¯ç§ã®ãªããŒã¹ã®ããã«takahiroxã®å€æŽãåŸ
ã£ãŠããŸãã ããããããã€ãã®å€æŽãè¡ã£ãåŸãWebGLTexturesãªããžã§ã¯ããšåæ§ã«ãã¬ã³ãã©ãŒãæžãçŽãããšã¯æ¬åœã«è¯ãèãã ãšæãå§ããŸããã ããã§ã話é¡ã«ãªã£ããåå ããŠããã£ãã§ãã
ããã ãšæããŸãã çŸåšã®WebGLRenderer
ã«åºæ¬çãªwebgl 2.0ãµããŒããè¿œå ããããšã¯ã WebGL2Renderer
ã§äœæ¥ããŠããéã«äœããæã£ãŠããã ãã ãšæããŸãã
ã¬ã³ãã©ãŒã®æžãçŽããéå§ããPRãéä¿¡ããŠãã ããïŒçæ³çã«ã¯ã¹ããããã€ã¹ãããïŒã
æãããªè³ªåãããå Žåã¯ãè©«ã³ããŸããããã®åé¡å šäœãèªãã åŸãæåŸã®æçš¿ã¯å幎åã§ããããã¹ã¿ãŒãœãŒã¹ã³ãŒããšäŸã®äž¡æ¹ã§webgl2ãžã®åç §ãããã€ãèŠã€ããåŸãç§ã¯ãŸã ãããå®å šã«ç解ã§ããªãããã§ãã
webgl2ãThree.jsã®çŸåšã®ç¶æ ã§äœ¿çšã§ãããã©ããçåã«æããŸããïŒ ïŒåçŽãªãããã¡ãžãªã¡ããªã¡ãã·ã¥ãã¬ã³ããªã³ã°ããå Žåã§ãïŒEffectComposerã¯webgl2-context察å¿ã®ã¬ã³ãã©ãŒã§åäœããŸããïŒ ã¬ã³ããªã³ã°ã¿ãŒã²ãããäœããã®æ¹æ³ã§èª¿æŽããå¿ èŠããããŸããïŒ
ãã¡ãããæ倧ã®åé¡ã¯ãã«ã¹ã¿ã ãã¹ã§composerã䜿çšãããšãã«ãçŸåšé©åãªã¢ã³ããšã€ãªã¢ã¹ãååŸã§ãããã©ããã§ãã
æçµçã«ã¯ãWebGL 2.0æ©èœãWebGLRenderer
ã«è¿œå ããããšã«ãªã£ãããã§ãã
ãã ããWebGPUã«ã¯å¿
ãWebGPURenderer
ãå¿
èŠã§ãã
æãåèã«ãªãã³ã¡ã³ã
æ¥é±ãããã¹ãŠã®èª¿æ»ãéå§ããäºå®ã§ãã âïž