[HN Gopher] W3C Community Group Draft Report - WebGPU Explainer ___________________________________________________________________ W3C Community Group Draft Report - WebGPU Explainer Author : Emigre_ Score : 32 points Date : 2023-11-05 17:55 UTC (5 hours ago) (HTM) web link (gpuweb.github.io) (TXT) w3m dump (gpuweb.github.io) | drfuchs wrote: | Great. Now how do I call this API from WASM without any | intervening JavaScript? | pjmlp wrote: | You don't. | | Maybe when reference types eventually become a thing. | davexunit wrote: | WASM GC reference types are rolling out to stable browser | releases now. Chrome 119 just shipped with them enabled by | default. | pjmlp wrote: | Those ones are unrelated to exposing browser APIs directly | to WASM code. | | Setup is still required. | davexunit wrote: | I don't quite understand what you mean. WASM modules | don't have direct access to _anything_. They have to be | granted capabilities from by the host. Are you referring | to optimizations that various engines do where they | recognize well-known imports like Math.sin and compile | things such that they don 't invoke JS at all? | pjmlp wrote: | Exactly, hence it is currently impossible to use WebGPU | without JavaScript's help. | | There are some proposals regarding exposing the browser | IDL to WASM via reference types, but it is far from | happening. | davexunit wrote: | You need the host (whatever it is) to provide the | capabilities to WASM. On the web, the host environment is | JS. Browser engines are free to optimize well-known | imports with or without any new proposals. I guess I just | don't really see the issue... | davexunit wrote: | You'll need _some_ JavaScript to instantiate the WASM module | and pass in a set of imported functions for using WebGPU. After | passing in the capabilities it can be all WASM from there. | jauntywundrkind wrote: | Afaik, there's no means to pass in imported functions right | now. | | Rust has a very extensive bindgen to make it kind of look | like you can, but it's really a huge payload of js running on | the page's main-thread that's converting back and forth. At | significant cost. | | We just shipped garbage collection, which is one precondition | to actually being able to pass things around (so things | passed in can participate properly in gc). Next is component- | model, which allows for passing non-trivial objects around; | currently it's just primitives like numbers that can be | passed. After that goes in, hopefully it won't be long before | we have host-object bridging, where platform objects can be | sent across. https://github.com/WebAssembly/component-model | davexunit wrote: | You can pass around arbitrary JS objects via the (ref | extern) type. The (import "module" "name" ...) form can be | used to declare an imported thing (function, global, | memory, table.) I don't do Rust so I don't know what the | limitations are with Rust on WASM right now but speaking | just about core WASM stuff all the basic pieces are there | now. | jauntywundrkind wrote: | Afaik, no. What you are talking about is the future, not | anything available on any platforms today. | | Right now, different runtimes don't have any way to | communicate what type an object or function is. That's | what component model is trying to figure out. Without | that, there's not really a way for a ref to do anyone any | good, as far as I know. | | If you can link any docs or examples, that'd be great. I | feel like it's been a long long long wait, & I've been | very eager. But if I'm mistaken, and passing stuff across | boundaries is possible, that'd be amazing to see. | Buttons840 wrote: | Soon, even our game engines will be written in JavaScript: | https://www.youtube.com/watch?v=_SCfNhyIo_U | | Snark aside, the best resource I've found for learning WebGPU is: | https://webgpufundamentals.org/ | pjmlp wrote: | WebGPU will always have the issue to lang behind native | capabilities. | | It is good enough if aiming to PS3 like games, though. | Buttons840 wrote: | Any WGPU users among us? How does native and web performance, | with the same graphics code, compare? | pjmlp wrote: | Whatever WGPU might do in addition to WebGPU is naturally | going beyond the standard features a browser is expected to | provide, thus no different from any other graphics | middleware. | yarg wrote: | It's heavily sandboxed, and there are other overheads to | get around. | astlouis44 wrote: | My team is bringing Unreal Engine 5 to WebGPU, to enable next | generation browser games and 3D web applications. | dindresto wrote: | As an official backend, or just for a specific game? ___________________________________________________________________ (page generated 2023-11-05 23:00 UTC)