<div><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><a href="https://web.dev/blog/webgpu-supported-major-browsers" target="_blank">https://web.dev/blog/webgpu-supported-major-browsers</a><div><br></div><div><h2 id="m_-7930040480390343399m_-1759901941051710296m_9119549094950403974m_-4017285650742827499m_4218883560942477349gmail-a_growing_ecosystem" role="presentation" style="box-sizing:inherit;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-weight:400;font-size:24px;line-height:28px;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;letter-spacing:-0.24px;margin:32px 0px;overflow-x:clip;text-overflow:ellipsis;border-bottom-width:1px;border-bottom-style:solid;padding:0px 0px 3px;border-bottom-color:rgb(232,234,237);color:rgb(32,33,36)"><span role="heading" style="box-sizing:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif">"A growing ecosystem</span><button type="button" aria-label="Copy link to this section: A growing ecosystem" style="background-image:none;background-position:0px 50%;background-size:auto;background-repeat:repeat;background-origin:padding-box;background-clip:border-box;border-width:0px;border-style:initial;border-color:initial;border-radius:25px;color:rgb(95,99,104);font:24px/24px "Material Icons";height:24px;margin:0px;max-width:none;min-width:36px;outline:0px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;width:auto;direction:ltr;opacity:1;padding:0px"></button></h2><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)">You don't have to start from scratch to use WebGPU! The libraries you love already support WebGPU:</p><ul style="box-sizing:inherit;margin:0px;padding-left:40px;list-style-position:outside;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)"><li style="box-sizing:inherit;margin:12px 0px;padding:0px;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif"><a href="https://doc.babylonjs.com/setup/support/webGPU" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">Babylon.js</a></li><li style="box-sizing:inherit;margin:12px 0px;padding:0px;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif"><a href="https://blog.playcanvas.com/build-webgpu-apps-today-with-playcanvas/" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">PlayCanvas</a></li><li style="box-sizing:inherit;margin:12px 0px;padding:0px;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif"><a href="https://onnxruntime.ai/docs/tutorials/web/ep-webgpu.html" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">ONNX Runtime</a></li><li style="box-sizing:inherit;margin:12px 0px;padding:0px;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif"><a href="https://github.com/wcandillon/react-native-webgpu" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">React Native</a></li><li style="box-sizing:inherit;margin:12px 0px;padding:0px;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif"><a href="https://threejs.org/examples/?q=webgpu" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">Three.js</a></li><li style="box-sizing:inherit;margin:12px 0px;padding:0px;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif"><a href="https://huggingface.co/blog/transformersjs-v3" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">Transformers.js</a></li><li style="box-sizing:inherit;margin:12px 0px;padding:0px;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif"><a href="https://docs.swmansion.com/TypeGPU/" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">TypeGPU</a></li><li style="box-sizing:inherit;margin:12px 0px;padding:0px;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif"><a href="https://docs.unity3d.com/6000.3/Documentation/Manual/WebGPU.html" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">Unity</a></li></ul><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)">Plus, the underlying engines—<a href="https://dawn.googlesource.com/dawn" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">Dawn</a> (Chromium) and <a href="https://github.com/gfx-rs/wgpu" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">wgpu</a> (Firefox)—are standalone, portable packages. They simplify cross-platform development, making it incredibly straightforward to bring platform-specific GPU apps over to the web by using <a href="https://webassembly.org/" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">Wasm</a> and tools like <a href="https://emscripten.org/" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">emscripten</a> and Rust <a href="https://docs.rs/web-sys/latest/web_sys/" style="box-sizing:inherit;outline:0px;text-decoration-line:initial;text-decoration-color:rgb(26,115,232);word-break:break-word;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;color:rgb(26,115,232)" target="_blank">web-sys</a>."</p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)"><br></p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto">Probably the best thing right now is to try to get x3dom apps working in React Native (and React!)</p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)">I already have a simple cube working in React and X3DOM, see:</p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)"><a href="https://github.com/coderextreme/contactsapp" style="font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" target="_blank">https://github.com/coderextreme/contactsapp</a></p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)">How is X3D support in Unity going?</p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto">What I'm going to try to do is upgrade my PlayCanvas OpenGL shaders to WGSL next. I hope they work!</p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto">Well...playcanvas WebGPU is in beta. I tested my WebGL 1.0 shader, and it worked, then I tried to shift to WebGPU still using WebGL. Bam!<br></p><img src="cid:ii_mk0l5ozn0" alt="image.png" style="width: 929px; max-width: 100%;"><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto">A apparently, the PlayCanvas WGSL JavaScript interface is not well documented yet! It seems like they are collapsing vertex/fragment shader pairs into one structure per pair, and putting WGSL and GLSL together.</p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto">RayGPU, a Vulkan/WebGPU/dawn lightweight 2D/3D engine written in C/C++ based on raylib is advancing well, with a strategy like this <a href="https://manuel5975p.github.io/rgdoc/" style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" target="_blank">https://manuel5975p.github.io/rgdoc/</a> Note that this can be difficult to compile! I found using Visual Studio 2026’s cmake and ninja useful! I may translate some Nim programs to C/C++. Waiting on Pascal and Nim bindings! I haven’t gotten my WGSL shaders working anywhere yet, but I did get them converted from GLSL using glslValidator and tint. Naga and spirv-cross (?) didn’t work to translate SPIR-V to wgsl. I would translate GLSL to WGSL with AI/LLM, or you can modify my program.</p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto">This is all on Windows 11.</p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto"><br></p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto">The following have not been researched:</p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto"></p><div style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" dir="auto"><span style="font-family:"google sans","noto sans","noto sans jp","noto sans kr","noto naskh arabic","noto sans thai","noto sans hebrew","noto sans bengali",sans-serif;font-size:inherit;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline!important;background-color:rgba(0,0,0,0);border-color:rgb(32,33,36);color:rgb(32,33,36)">Possibility for a new Java renderer for Xj3D:</span></div><p></p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto"></p><div style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" dir="auto"><a href="https://github.com/MyWorldLLC/webgpu-java" style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" target="_blank">https://github.com/MyWorldLLC/webgpu-java</a> probably port a higher level package on top of this!</div><p></p><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto">Shaders in TypeScript! </p><div style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" dir="auto"><a href="https://github.com/software-mansion/TypeGPU?tab=readme-ov-file#projects-using-typegpu" style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" target="_blank">https://github.com/software-mansion/TypeGPU</a> Outputs WebGpu! But probably Babylon.js is preferred.</div><div style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" dir="auto"><br></div><div style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" dir="auto">While one may consider Three.Js, it’s not fully typescript, and works well with react.</div><div style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" dir="auto"><br></div><div style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" dir="auto">I can se how tools like X_ITE might be hesitant to adopt WebGPU, likely due to differences in Shader interfaces. AFAIK, GLSL is available in WebGPU.</div><div style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" dir="auto"><br></div><div style="font-size:inherit;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif" dir="auto">All for now.</div></div></div></div></div></div><div><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><p style="box-sizing:inherit;margin:16px 0px;padding:0px;line-height:1.75;font-family:"Google Sans","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Naskh Arabic","Noto Sans Thai","Noto Sans Hebrew","Noto Sans Bengali",sans-serif;font-size:16px;color:rgb(32,33,36)" dir="auto">John</p></div></div>
</div>
</div>
</div>
</div>
</div>