- From: Dzmitry Malyshau <dmalyshau@mozilla.com>
- Date: Fri, 22 Feb 2019 23:03:56 -0500
- To: public-gpu@w3.org
- Message-ID: <a958f368-4935-5ac4-1682-428a036f34a4@mozilla.com>
Hi WebGPU!
I've been working ([1]) on an example to test and polish our native
WebGPU implementation, called "shadow". See the attached screenshot to
get the idea. Just wanted to share a bit of feedback, now that I got a
slight idea about what it is to *use* the API as opposed to designing it:
1. Overall, the experience was very pleasant ([2]). I believe we are
aiming for the right level of abstraction for the web: low enough to
be efficient, high enough to actually be able to write the demo and
not drown in details.
2. Some of the structures are unbalanced. For example,
GPURasterizationStateDescriptor has most of the fields related to
depth biasing. It would be cleaner to have all the depth biasing in
a dedicated structure instead.
3. I find GLSL with Vulkan syntax to be pretty nice to use. It
addresses the biggest problem GLSL has - separating textures and
samplers ([3]), along with specifying all the bind group/binding
registers explicitly. I see value in it being well supported by
WebGPU (not a as digested format), given that the current users of
WebGL would have easier time moving to that syntax than to HLSL.
Note: the example is written in Rust, but it's just a light wrapper over
C API library (wgpu-native). The idea is for it to be compatible with
Dawn, and also to gain the ability to target WASM in the future.
Links:
[1] https://github.com/gfx-rs/wgpu/pull/71
[2]
https://github.com/kvark/wgpu/blob/616a3dd849c87db72db37d534bb21ddc700a2165/gfx-examples/src/shadow.rs
[3]
https://github.com/kvark/wgpu/blob/616a3dd849c87db72db37d534bb21ddc700a2165/gfx-examples/data/shadow-forward.frag#L45
Regards,
Dzmitry
Attachments
- image/png attachment: wgpu-shadow.png
Received on Saturday, 23 February 2019 04:04:21 UTC