demoscene ã®ä¸çã§ã¯è¿å¹´ raymarching ã¨ããã¬ã³ããªã³ã°ææ³ãããç¨ãããã¦ãã¾ããããªã´ã³ã¢ãã«ã¯ä½¿ãããã¢ãã«ãã¼ã¿ã¯æ°å¼ã®å³å½¢ã¨ãã¦ã·ã§ã¼ãã³ã¼ãã®ä¸ã§è¡¨ç¾ããpixel shader ã§å³å½¢ã¨ã®è·é¢ãæ±ãã¦å¯è¦åãã¦ãããã¨ãããã®ã§ãã demoscene (4k/64k intro) ã®å³ãã容éå¶éã®ä¸ç¶ºéºãªçµµãåºãããã«çã¿åºãããææ³ã§ããã徿¥ã®ããªã´ã³ãã¼ã¹ã®ææ³ã§ã¯é£ããç¬ç¹ã®çµµãåºããã¨ãã§ããã¨ãã坿¬¡ç广ãããã¾ãã raymarching ã®ä»£è¡¨çãªä½å群 ãã®ææ³ã¯ PS4 ä¸ä»£ä»¥éãå°è¦æ¨¡ã²ã¼ã éçºãã¼ã åãã®æç¨ãªãã¼ã«ã«ãªãããããªããã¨èãã¦ãã¦ãatomic ã§ã¯è©¦ãã«èæ¯ã«ãã®ææ³ãç¨ãã¦ãã¾ãã以ä¸ã¯ãã®éç¨ãèå¯ã§ãã ã¾ããraymarching ã®åºæ¬ã«ã¤ãã¦ã¯ demoscene.jp ã®äººãã¡ãç´ æ´ããã解説
ãããã§ã«ãªãã¥ã¼ã¢ã«ããã¦ãã¾ã£ã¦ãã¾ãããæ°´ææ¥ã®ã«ã³ããã©ã®ãªãã£ã·ã£ã«ãµã¤ãã®èæ¯ã«ãã®è¡¨ç¾ã使ç¨ãã¦ãã¾ããã 彿ããã¶ã¤ãã¼ããã«ãããããã®ãããããã¨åèãµã¤ããè¦ãããã¦ããã§ãã¾ãããã¨è¨ã£ã¦ã¿ãã¯ãããã®ã®ãWebGLã«ãã¾ãæ £ãã¦ãªãã£ãèªåã«ã¯å®è£ é£æåº¦ãé«ããå¿ãæããããã表ç¾ã§ãã ãããã調ã¹ã¦ããã¨ããã®è¡¨ç¾ã¯ãstable fluidsãã§ãããã¨ãããã¨ãç¥ãã¾ããã ã¡ãã£ã¨åã«ãã ã³ã¯ã«ã¹ã®èäºããããããããªã³ã³ãã³ããå®è£ ãã¦ããã(Chrome Experimentsã«æ²è¼ï¼ï¼)
ããã«ã¡ã¯ãæè¡é¨å¹³å±±ã§ãã ãã®è¨äºã§ã¯ãéã«ãã³ããã¼ã¯ããã°ã©ã ãä½ã£ã¦ã¿ããã¨ã¨ãããã«ä»éãã¦ã ãã³ããã¼ã¯ããã°ã©ã ãä½ããããªããããªäºæ ãã¹ãã®è¨è¨ã¨ããã®èå¾ã«ãããã¼ãã¦ã§ã¢ ã¨ãã£ãç¹ã«ã¤ãã¦æ¸ãã¾ãã ãªããå®è¡ã¯ãã¡ãããWebä¸ã§å¯è½ã§ã(ä¸ã®ã¹ã¯ã·ã§ãæ¼ãã¦ãé£ã¹ã¾ã)ã Unityã®WebGLã«ãããã¨ã§ãä½è¨ãªæéãªãå¤ãã®æ©æ¢°ã§æ¸¬ããããã«ãã¦ãã¾ãã ãã ããWebAssemblyã使ã£ã¦ããé¢ä¿ä¸ãiOS9以åã§ã¯åãã¾ãããã容赦ãã ããã æ¸¬ã£ã¦ãã ãã£ãæ¹ã¯ã twitterã§çµæ(ã¹ã¯ã·ã§)ãé ããã¨å¤§å¤ããããã§ãã ã²ã¼ã æ©ããã¤ã¨ã³ãPCãå¤ãã¹ããããªã©ã¯ç¹ã«æè¿ã§ã! ãªããã½ã¼ã¹ã³ã¼ããgithubã«ããã¾ãã æ¸¬å®æ¹æ³ ãALLããæ¼ããå ã®ç»é¢ã«æ»ã£ã¦ããã¾ã§(ãã£ã©ã¯ã¿ã¼ã®çµµãåºã¦ããã¾ã§)æ¾ã£ã¦ããã¾ãã éä¸ã§ã¹ãªã¼
2011å¹´ã«ä»æ§ãæ£å¼ãªãªã¼ã¹ããã¦ä»¥æ¥ãWebGLã¯å¤ãã®ãã©ã¦ã¶ãã³ãã¼ãã³ã³ãã³ãéçºã³ãã¥ããã£ã®æã«ãã£ã¦æ®åãã¦ãã¾ãããæ¬è¨äºã§ã¯ã2019å¹´1æç¾å¨ã®WebGLã®ç¾ç¶ã¨å¨è¾ºæè¡ãããã¦æªæ¥ã«ã¤ãã¦ç´¹ä»ãã¾ãã ç°å¢ãå®å ¨ã«æ®åããWebGL 1.0 WebGLã®æåã®ãã¼ã¸ã§ã³ã§ããWebGL 1.0ã¯ãç¾å¨ã§ã¯ãã¹ã¯ããããã¢ãã¤ã«ã¨ãã«ãã¹ã¦ã®ä¸»è¦ãªãã©ã¦ã¶ã§å¯¾å¿ãã¦ãã¾ãã対å¿ç°å¢ã¨ãã観ç¹ã§ã¯ãã¯ãæ¡ä»¶ã§ã®æ¡ç¨ãåé¡ãªãç¶æ³ã¨ãããã§ããããå®éã®ã¦ã¼ã¶ã¼ã®WebGLãµãã¼ãç°å¢ãéè¨ãããWebGL Statsãã«ããã¨ããã¹ã¯ããããã¹ãã¼ããã©ã³ã¨ãã«98%ãã®ç°å¢ã§åä½ãã¦ãããã¨ããããã¾ãã â²WebGL 1.0ãå©ç¨å¯è½ãªãã©ã¦ã¶ã«ã¤ãã¦ããCan I useâ¦ããã â²WebGL 1.0ã®ãµãã¼ãç°å¢ã«ã¤ãã¦ããWebGL Statsããã å½å ã§ã
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? ã¯ããã« æè¿ããºã£ã¦ããwebgl-waterã®ã³ã¼ã¹ãã£ã¯ã¹ãshadertoyã§å®è£ ãã¾ããããã£ãããªã®ã§ç°¡åã«è§£èª¬ãããã¨æãã¾ãã https://www.shadertoy.com/view/MttBRS https://www.shadertoy.com/view/MldfDn ã¬ã¤ãã¼ãã³ã°ã§çµµãåºãããããã®äºåç¥èãããã¨ãã½ã¼ã¹ãçè§£ãã¤ã¤èªã¿é²ãããã¨ãåºæ¥ãã¨æãã¾ãã ã¬ã¤ãã¼ãã³ã°ã«ã¤ãã¦ã¯@gam0022ããã®ã¹ã©ã¤ãã詳細ã§åããããã解説ããã¦ããã®ã§ãã¹ã¹ã¡ã§ãã ã·ã§ã¼ãã ãã§ä¸çãåµãï¼thr
次ä¸ä»£ä»æ§ã®WebGPUã¨ã¯ï¼ 次æmacOSã§ã®OpenGL鿍奍å㯠WebGLã«å½±é¿ãããããã®ã ã¦ã§ãã®3Dã°ã©ãã£ãã¯ã¹ãæ±ãæ°ãã仿§ã¨ãã¦ãWebGPUãææ¡ããã¦ãã¾ããåºãæ®åããWebGLãããä¸ã§ãWebGPUã¨ã¯ã©ããã£ãç®çã§çã¾ãããã¨ãã¦ããã®ã§ããããï¼ãæ¬è¨äºã§ã¯WebGLã¨WebGPUã®éãã¨ãè¿æ³ãç´¹ä»ãã¾ãã æ¥çãéæ¼ãããAppleã®OpenGL鿍奍å 仿6æä¸æ¬ã«éå¬ãããWWDC 18ã§çºè¡¨ãããmacOS 10.14 Mojaveã¨iOS 12ã®ã¦ã§ããã¼ã¸ã§ã¯ãOpenGL/OpenCLããã³OpenGL ESã鿍奍åããæ¨ãè¨è¼ããã¦ãã¾ããmacOS 10.14ã¨iOS 12ã§OpenGLçã¯å¼ãç¶ãåä½ãããã®ã®ãMetalã¸ã®ç½®ãæããå¼ã³ããã¦ãã¾ãã â²Whatâs New in macOSã«ã¯OpenGLã¨OpenC
WebGLãåºæ¬ããå¦ã¶ææ¥. ãã®è¨äºã¯WebGLãåºæ¬ããæããè¨äºã§ããã ä»ã®ãµã¤ãã«è¼ãã¦ãããããªæã®OpenGLãæ´æ°ãããè¨äºã§ã¯ãªãã æä»£é ãã®ã¢ã¤ãã¢ãæ¨ã¦ã¦ã WebGLã¨ã¯ä½ããWebGLãã©ããã£ã¦åããã«ã¤ãã¦ãçè§£ã¸ã¨å°ããå®å ¨ã«æ°ããªè¨äºã§ããã WebGL2ã«èå³ãããã°ãããåç §ãã¦ä¸ããwebgl2fundamentals.org åºæ¬ åºæ¬ WebGLã®ä»çµã¿ WebGLã®ã·ã§ã¼ãã¼ã¨GLSL WebGL State Diagram ç»åå¦ç WebGLã«ãããç»åå¦ç WebGLã«ãããç»åå¦çãç¶ã 2Dã§ã®ç§»åãåè»¢ãæ¡å¤§ç¸®å°ãè¡åè¨ç® äºæ¬¡å ã§ã®ç§»å äºæ¬¡å ã§ã®å転 äºæ¬¡å ã§ã®æ¡å¤§ç¸®å° äºæ¬¡å ã§ã®è¡åæ°å¦ 3D 䏿¬¡å ã®æ£æå½± 䏿¬¡å éè¦æå½± 䏿¬¡å ã®ã«ã¡ã© Lighting 䏿¬¡å æåæ§å æº ä¸æ¬¡å ç¹å æº Spot Lighting St
[WebGL] Instanced Stereo Renderingãå®è£ ãã¦ã¿ã WebGLã§ãVRã«é¢é£ããé«éåæè¡ãå®è£ ãã¦ã¿ãã¨ãã話ã§ãã ã¯ããã« VRãè¡ãå ´åã両ç®ã®æ åãã¬ã³ããªã³ã°ããå¿ è¦ãããã¾ãããã®ãããåç´ãªå®è£ ã§ãã¨å·¦å³ããããã«å¯¾ãããã¼ã³ã¼ã«ãçºè¡ããå¿ è¦ãããçºãéVRã®å ´åã®å°ãªãã¨ã2åã®ããã¼ã³ã¼ã«ãå¿ è¦ã¨ãªãã¾ããWebGLã®å ´åã¯ãªã¼ããããããã£ã¨å¤§ãããªãçºãäºæ ã¯ä¸å±¤æ·±å»ã«ãªãã¾ãã 1åã®ããã¼ã³ã¼ã«ã§ä¸¡ç®ã®æ åãä¸åº¦ã«æç»ããææ³ã¨ãã¦ã以ä¸ã®ãã®ãææ¡ããã¦ãã¾ã1: ã¸ãªã¡ããªã·ã§ã¼ããå©ç¨ããã ãã®æ¹æ³ã¯ãã¯ã»ã«ã·ã§ã¼ãã®æ¸ãæããä¸è¦ãCPUå´ã³ã¼ãã®ä¿®æ£éãå°ãªãçã®ç¹ã§åªãã¦ãã¾ããããããé ç¹ã·ã§ã¼ãã®å¾®å°ãªä¿®æ£ãå¿ è¦ãGPUã«ãã£ã¦ã¯èãããªã¼ãããããçãã (660 GTXã§3x以ä¸ã®ã¸ãªã¡ããªã¹ã«ã¼ãããä½ä¸
ãã®è¨äºã¯ï¼WebGL Advent Calendar 2016 16æ¥ç®ã®è¨äºã§ãã ä»å¹´ãä½ããã¦ãªããªãã¨æããªããçãã¦ããã®ã§ãããWebGLã§è²ã ææãæãã¦ããåäººã«æåããã¦é£ã³å ¥ãåå ãã¾ããããããããé¡ããã¾ãã ä»åã¯ç°å¢ãããã§ããå©ç¨ããã¦ãããã¥ã¼ããããã使ã£ã¦ãWebGLä¸ã§æ¬ä¼¼çãªIBLããæ¡å¼µæ©è½ãå©ç¨ããæ¹æ³ã¨ããªãæ¹æ³ã®2ã¤å®è£ ãã¾ããã ãã®è¨äºã§ã¯å®è£ ã®ä¸ã§å¾ãç¥è¦ãå ±æã§ããã°ã¨æãã¾ãã ä»åä½ã£ããã® https://github.com/kaneta1992/cubemapIBL IBL(Image Based Lighting)ã¨ã¯ IBLã¨ç¥ããã¨ããããå®å¨ãã風æ¯ã®åçãé«ç²¾ç´°ãªç»åãã©ã¤ãã£ã³ã°ã®è²æ å ±ã«ä½¿ç¨ãã¦ãã·ã¼ã³ãã¬ã³ããªã³ã°ããæ¹æ³ãåºãã¬ã³ã¸ã®æããæ å ±ãè¨é²ã§ããHDRIãç¨ãããã¨ã§ãèªç¶ãªå ã¨é°å½±ã表ç¾ã§ãã
ã·ã§ã¼ãæ¸ãããã¦ãããããªããã³ï¼ GLSL ã§æãåãããã¿ãªãã¾ããã°ãã¯ãð¥ð¥ð¥ ä¸ã®ä¸ã«ã¯ããããã® ã·ã§ã¼ãæ¸ãããã¦ãããããªããã³ ãå± ãã¯ããªãã§ããã身åãæãããã¨ã«ããæªã®çµç¹ããçå½ãçãããå¯è½æ§ãããå½¼ãã¯ãããã㨠Advent Calendar ã«æç¨¿ãããã¨ãã¾ã¾ãªãã¾ãããæ²ããã§ããã ããã§ãä¸è¬å¸æ°ã¨ãã¦å¹³ã å¡ã ã«çæ´»ãã¦ããç§ã代ããã«ãGLSL ã§ä¸ã®ä¸ã® GPU ã®æ¸©åº¦ãä¸åº¦ã§ã温ããããããã«ããã°ããªãã¦ã¯ã¨ä¸å¿µçºèµ·ãããã¾ããã GLSL ã¯ã¼ã¯ã·ã§ãã å æ¥ãGLSL ã®ã¯ã¼ã¯ã·ã§ãããéå¬ãã¾ãããããã§ã¯ããããã®ã·ã§ã¼ãä½åãæç¨¿ãããã¾ãã« é ãã·ã§ã¼ãæ¸ãããã¦ãããããªããã³ ããææãª æ°äººã·ã§ã¼ãæ¸ãããã¦ãããããªããã³ ãçºæãããã¨ãã§ãã¾ããããããã¨ããããã¾ããã ãããªã¯ã¼ã¯ã·ã§ããã§ç§ãæç¨¿ãã
å¿ è¦ãªæ¡å¼µæ©è½ããã§åã£ã¦ã¾ãã? æè¿ãWebGLã§é å»¶ã·ã§ã¼ãã£ã³ã°ãããããã¨ãã¢ãã¤ã«ã§G-Bufferãæãããªããªãã¦ãã¨ããã£ãã ãããã§ãOES_texture_floatã¯ç¢ºãã«æ£å¸¸ã«getExtensionã§ããã CPUã§æ¸ãè¾¼ã¿ãGPUã§èªã¿åºãã¨ããã±ã¼ã¹ ããã¾ã§ãGPUå´ã§ã¯RenderTargetã¨ãã¦ä½¿ãããtetxture2Dã§èªã¿åºãã¨è¨ãå ´åã«ã¯ç¢ºãã«OES_texture_floatã®ã¿ã§åé¡ãªãã ãã ãããã£ã«ã¿ã«LINEARããããã®ã§ããã°ãOES_texture_float_linearãå¿ è¦ã ã half floatãã¯ã¹ãã£ãç¨ãããå ´åã¯ãOES_texture_half_float,OES_texture_half_float_linearãããããç¨ããã°è¯ãã ããã¾ã§ã¯å¸¸èçãªç¯å²ã ããã GPUå´ã§æ¸ãè¾¼ã¿ãå¿ è¦ãªã±ã¼ã¹
three.js ãããã«ã©ãããããã¬ã¼ã ã¯ã¼ã¯ ä»åãç´¹ä»ããã®ã¯ãWebGL 使ããªã誰ããç¥ã£ã¦ããã¨è¨ã£ã¦ãéè¨ã§ã¯ãªã three.js ããããã«ãã䏿®µã©ãããããã¨ã§ãã使ãããããããã¬ã¼ã ã¯ã¼ã¯ãWhitestormJS ã§ãã Github ãå ¬å¼ãµã¤ãã«ã¯ Examples ãæ²è¼ããã¦ãã¾ãããWebGL ãã«ãã¼ã©ã¤ãã©ãªã§ãã three.js ãªã©ãã³ã¢é¨åã«å¤é¨ã®ã©ã¤ãã©ãªãçµã¿è¾¼ããã¨ã«ãã£ã¦ãé©ãã»ã©å°ãªãã³ã¼ãã®è¨è¿°ã§ 3D ã®ã·ã¼ã³ãæ§ç¯ã§ããããã«å·¥å¤«ããã¦ãã¾ãã ç©çæ¼ç®ãªã©ã®ã²ã¼ã éçºã«å¿ è¦ã¨ãªãæ©è½ã追å ãããã¨ã§ãããªãå©ä¾¿æ§ã®é«ããã¬ã¼ã ã¯ã¼ã¯ã«ãªã£ã¦ããããã§ãã 使ãããããéè¦ããè¨è¨ãããã¥ã¡ã³ããå®å ãã® WhitestormJS ã§ãããå®ã¯çµæ§æãããã®åå¨ã¯ç¥ã£ã¦ãã¾ããã ã¡ãã£ã¨åã«è¦ãæã¯ãä¸è¦ããã¨éçºãæ¢
ã ã¼ãã¼ã¨ã®å¢çãæããããªãè¦äºãªæ¼åº ä»åãç´¹ä»ããã®ã¯ããã©ã³ãã¼ã®éæã¨ãã¦ããé ã«ãã¾ã詳ãããªãæ¹ã§ãè³ã«ãããã¨ãããã¨æããããããã·ã¼ï¼Hennessyï¼ã®ã¦ã§ããµã¤ãã§ãã ããã·ã¼ã¯ããã©ã³ã¹ã®ã³ãã£ãã¯ã¨å¼ã°ããå°æ¹ã§çç£ããã¦ããé«ç´ãã©ã³ãã¼ã®ãã©ã³ãåã§ãããâ¦â¦ã¨åããã«æ¸ãã¦è¦ããã®ã®ãç§ã¯ãé ã¯å ¨ç¶è©³ãããªãã®ã§ããã®ç¹ã®è§£èª¬ã¯ããã¦ããã¾ãã ä»åã®ãµã¤ãã¯ãç¾æç¹ã§ã® WebGL ã«ããããã¼ãã£ã¯ã«è¡¨ç¾ã¨ãã¦ã¯ãééããªãä¸çéä¸ã®åºæ¥æ ãã¨æè¨ã§ãã¾ãã ã ã¼ãã¼ã¨ WebGL ã¬ã³ããªã³ã°ã¨ã®å¢ãç®ãããããªãã»ã©è¦äºãªã·ã¼ã³é·ç§»ãå«ããããããç¹ã§ä»ã®è¿½éã許ããªãå®ç§ãªå®æåº¦ã¨ãªã£ã¦ãã¾ãã å ¬å¼ã ã¼ãã¼ãããã« WebGL ã§å½©ã£ãä½å Youtube ãªã©ã§ããã·ã¼ã®æè¿å ¬éãããåç»ãæ¢ãã¦ã¿ãã¨ãä»åã®ãµã¤ãã®èæ¯ã«æææµããããªãª
three.js ã§ WebGL ã®ã¯ãªããï¼ã¨ããã requestAnimationFrame ã ãªãï¼ stats.js ã§ 60fps åºã¦ãããã ãããã¼ã¶ã¼ã¨æã£ã¦ãã¦ããå®éã®ã¬ã³ããªã³ã°æéã 1/60 ç§ã§çµãã£ã¦ãã 1/200 ç§ã§ããã£ã¦ããã¯ãããããã®ã§ãããããã¯ãã©ã¦ã¶Â (Chrome) ããªãã¬ãã·ã¥ã¬ã¼ãã«åæã㦠(VSync) requestAnimationFrame ãåããã¦ããããã§ãéå¸¸ã®æ¶²æ¶ã¢ãã¿ã¼ã ã¨ãªãã¬ãã·ã¥ã¬ã¼ã㯠60Hz ãªã®ã§ã60fps ã«å¶éããããã¨ãããããç»é¢ãæ¸ãæããé度以ä¸ã«ãã¼ã¿ãæ¸ãæãã¦ãç¡é§ã ããã Chrome ã§ã¯ãã®Â VSync ãããªãããã«è¨å®ã§ãããããªãããã«ããã¨ãç»é¢æ¸ãçµãã£ããã¨ã«ã¤ãã®å¨æãã¾ããªããªãã®ã§ãå¯è½ãªéãæå¤§éã®é度㧠requestAnimationFrame
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ãç¥ãã
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}