Brendan Duncan
brendanduncan.bsky.social
Brendan Duncan
@brendanduncan.bsky.social
Staff Graphics Engineer at Unity, WebGPU and WebGL.
https://github.com/brendan-duncan
But it ended so nicely, revealing the Borderland mystery! I thought it was done. I'm excited about this, but I hope they don't stretch it too far.
September 4, 2025 at 3:11 PM
What's more fun is having a web engine that can run on desktop or mobile, and info about the hardware is limited/non-existent.

In general, we recommend Forward(+) for targeting the web. But of course people can do whatever they want, if it works it works.
August 25, 2025 at 9:02 PM
In the HypeHype case it seems Sebastian made some renderer decisions based on the typical type of content made for their engine. Relatively fixed post processing effects and geometry heavy levels, where depth pre-pass would have been needed anyways. I can see deferred being the better choice there.
August 25, 2025 at 12:00 AM
It could be that a lot of engines are aiming for "good enough" performance, and not necessarily "good" performance.
August 23, 2025 at 7:27 PM
Lucky!
April 25, 2025 at 8:35 PM
To add to what Brandon said, another potential win for WebGPU is the ability to create render pipeline objects at load time. With WebGL shaders often don't get compiled until the first draw call. Creating render pipeline objects up front can reduce runtime stalls, which is really important for XR.
March 4, 2025 at 6:56 PM
I believe @toji.dev has been working on WebXR + WebGPU, github.com/immersive-we..., and I believe you can try it out with an experimental flag in chrome://flags, webxr-webgpu-binding. Not a solution for a published project, but at least it's being worked on.
github.com
February 21, 2025 at 4:17 PM
It’s a cpu interpreter.
February 7, 2025 at 2:33 AM
I do know the code isn't correct WGSL, int should be i32, and the value of bar should have been converted to an int. Like I said, unpolished and incomplete.
February 7, 2025 at 12:26 AM
There are no mistakes, just happy accidents 🙂
February 5, 2025 at 5:26 PM
let shd = `
@group(0) @binding(0) var<storage, read_write> b: array<f32>;
@compute @workgroup_size(1)
fn foo(@builtin(global_invocation_id) id: vec3<u32>) {
b[id.x] = b[id.x] * 2.0;
}`;
let b = [1, 2, 6];
let bg = {0: {0: b}};
WgslExec(shd).dispatch("foo", 3, bg);
expect(b, [2, 4, 12]);
January 29, 2025 at 5:25 AM
My watch tells me "yay! you stood up! congratulations, you did it!"

Apparently it has low expectations of me.
January 24, 2025 at 7:31 PM
That sounds like my fun day today! Only in my fun day it crashes for both Vulkan and GLES and the device is a low end android with a European centric GPU that I can only access via a remote device farm, so I don’t even get the pleasure of holding it wrong!
January 24, 2025 at 12:33 AM
This is a wonderful writeup on a very nice demo!
January 9, 2025 at 6:52 PM
I like MIT: do whatever you want with it, but an attribution is a nice history tracker.
Or Creative Commons: do whatever you want, I don't care.
I don't like the *GPL, but to each their own :-)
December 27, 2024 at 5:17 PM