#WebGPU
Halloween #shader 🎃 #sdf #webgpu
November 1, 2026 at 6:26 AM
I think all of their examples live under the same umbrella project. You can clone that and build following the instructions. github.com/webgpu/webgp...
GitHub - webgpu/webgpu-samples: WebGPU Samples
WebGPU Samples. Contribute to webgpu/webgpu-samples development by creating an account on GitHub.
github.com
October 30, 2026 at 5:04 PM
hey is it bad if i can audibly hear my computer making noises that seem to only happen if i'm rendering a webgpu frame
November 1, 2026 at 9:44 AM
i can't get this whining to reproduce anywhere else other than webgpu lmfao
November 1, 2026 at 9:54 AM
can someone explain like i'm not an idiot how to run this locally? it seems like all their examples are just a js file with no index and it's set up to use an iframe using something up two directories? i just want to be able to follow along and learn on my machine.

webgpu.github.io/webgpu-sampl...
WebGPU Samples
The WebGPU Samples are a set of samples demonstrating the use of the WebGPU API.
webgpu.github.io
October 30, 2026 at 5:00 PM
i periodically check on this and it looks like firefox linux now has compute shader support??? i wonder if webGL compute works too, or only webGPU
October 30, 2026 at 4:25 PM
compute works in non-nightly builds of firefox now!
can anyone help me figure out how to get these examples running locally? it looks like it's very simple but they don't seem to have an explainer for how they set it up. why are programmers like this.

webgpu.github.io/webgpu-sampl...
WebGPU Samples
The WebGPU Samples are a set of samples demonstrating the use of the WebGPU API.
webgpu.github.io
October 30, 2026 at 5:02 PM
Reminder: implemeted via WebGPU, allowing direct prediction on your computer; 💻 without need to install anything but a web browser.

WARNING: will drain battery🪫, overheat 🔥💻 & eat your data plan 📱
November 2, 2026 at 4:17 AM
playing around with radiance cascades + ps1-like rendering with webgpu
October 25, 2026 at 10:21 PM
ok it looks like at least for firefox, it's limited to webGPU for the time being? i get this error on running a webGL compute shader demo in firefox.
October 30, 2026 at 4:25 PM
i'd seriously consider moving some of my procedural generation or world sim code to compute! maybe i will try to do some webGPU tutorials and get over the somewhat heavier spin-up for the API.
October 30, 2026 at 4:27 PM
November 1, 2026 at 4:41 AM
Following its origin trial, "HTML-in-Canvas" ships in Chrome 157, letting you render interactive, accessible DOM elements directly inside 2D, WebGL, and WebGPU canvas contexts.
October 30, 2026 at 8:57 AM
I turned my phone into real-time fire magic. No AI. #vfx #handtracking #creativecoding #webgpu #magic
November 2, 2026 at 6:05 PM
Is a custom model playing Doom* ported to WebGPU in a browser tab sufficiently ambitious for this week?

(*not well mind you, but playing)
austegard.com/fun-and-game...

If you'd rather play it yourself: austegard.com/fun-and-game...
gPu(doom)
The Doom engine rewritten as WebGPU compute shaders, playing Freedoom's first episode.
austegard.com
October 30, 2026 at 4:36 PM
I’m thrilled to share that my portfolio just won @fwa Site of the Day! 🏆

⤷ sztanki.com

#fwa #threejs #webgl #webgpu #creativecoding
November 2, 2026 at 10:39 PM
wasm support when. you could put it on your website — Probably never, wasm and webgpu are abominations and it's not really feasible alterspring.org/@ikeywike/a/...
Ike answered: wasm support when. you could put it on your website
Probably never, wasm and webgpu are abominations and it's not really feasible
alterspring.org
November 2, 2026 at 5:19 PM
The WebGPU Paris Meetup is NEXT WEEK! 🇫🇷

The lineup is wild: Unity's new renderer, Hugging Face web kernels, WebLLM, William Candillon, and Hexagon's geospatial tech! 100% technical, pure engineering love.

Seats are limited, so secure yours now! 👇
🎟️ rsvp.withgoogle.com/events/webgp...
WebGPU meetup
Standardization can often feel opaque from the outside, so we are organizing this informal, community-driven gathering right after the official GPU for the Web Working Group event.
rsvp.withgoogle.com
October 29, 2026 at 2:48 PM
I tested this with Opus 5.5 Medium and the fine-tuned 7M Samsung TRM model that is used as the bot AI for austegard.com/games/doom/?... and -- yeah - it's capable of rewriting the weights "by hand" as it calls it!
November 2, 2026 at 10:45 PM
Ok it’s ready: presenting my gPu(Doom)

austegard.com/fun-and-game...

Freedoom implemented with GPU shaders. All work done by @muninn.austegard.com
gPu(doom)
The Doom engine rewritten as WebGPU compute shaders, playing Freedoom's first episode.
austegard.com
October 28, 2026 at 12:24 PM
until recently the web platform afforded poor primitives for apps, and there were many reactionaries who fought to keep it that way. but the tide has turned with wasm, webgpu, etc; now is the time to fight
November 1, 2026 at 2:21 PM
Not only do I actually enjoy playing austegard.com/games/tilt-r...
I am also amazed at how efficient the code is, in terms of Lines of Code ++
Tilt Rally
Hold your phone like a steering wheel: turn to steer, tilt for gas and brake. A WebGPU valley circuit against three cars.
austegard.com
November 1, 2026 at 9:47 PM
Zero-Backend Client-Side RAG in the Browser with WebGPU, Transformers.js, MediaPipe, and OPFS
Original: https://codingcat.dev/post/client-side-webgpu-rag-transformers-js-mediapipe-opfs Most teams building semantic search or Retrieval-Augmented Generation (RAG) for documentation portals reach straight for a cloud vector database and an external embedding API. That works fine until you need instant sub-10ms keystroke search, offline availability, or strict zero-egress privacy for user documents. With WebGPU compute shaders, **Transformers.js v3** , **Google MediaPipe** , and the `Origin Private File System (OPFS)`, you can run the entire embedding, vector indexing, and synthesis pipeline directly inside the user's browser tab. ## The Mental Model: Local WebGPU Shaders + OPFS Binary Vector Cache Why did client-side embeddings feel sluggish three years ago? Because running matrix multiplication on a single JavaScript main thread blocks UI rendering, and WebGL was designed for rasterizing triangles rather than general-purpose tensor math. **WebGPU** gives browser Web Workers direct access to GPU compute pipelines (`GPUBuffer` and WGSL compute shaders), while `OPFS` provides high-throughput binary file storage so quantized ONNX models and pre-computed `Float32Array` vector indexes load from disk in milliseconds on repeat visits. ## Browser Compute Runtimes Comparison: WebAssembly vs. WebGL vs. WebGPU vs. WebNN { "_key": "wai_tbl_29271a6d2d", "_type": "table", "rows": [ { "_key": "wai_row0_a596e93a89", "_type": "row", "cells": [ "Browser Compute Backend", "Hardware Target", "384-d Embedding Latency (Batch=1)", "Quantization Support & Best Use Case" ] }, { "_key": "wai_row1_2cfb35df7c", "_type": "row", "cells": [ "WASM SIMD (Threads)", "Multi-core CPU", "18ms to 45ms", "q8 / int8 universal fallback for devices without discrete or integrated WebGPU." ] }, { "_key": "wai_row2_2aa93fccc9", "_type": "row", "cells": [ "WebGL 2.0", "Legacy GPU Fragment Shaders", "12ms to 30ms", "fp16 / fp32 texture hacks; lacks native storage buffers and compute workgroups." ] }, { "_key": "wai_row3_223837fae9", "_type": "row", "cells": [ "WebGPU (navigator.gpu)", "Modern GPU Compute Units", "1.8ms to 5.5ms", "q4f16 / fp16 / int8 via WGSL compute shaders; ideal for Transformers.js v3 and MediaPipe." ] }, { "_key": "wai_row4_7a8da24412", "_type": "row", "cells": [ "WebNN (navigator.ml)", "Dedicated NPU / OS ML Accelerator", "1.2ms to 4.0ms", "Direct OS-level graph compilation (DirectML, CoreML, NNAPI) for ultra-low battery drain." ] } ] } ## Step 1: Generating 384-Dimensional Embeddings on WebGPU in a Web Worker To keep Main Thread Interaction to Next Paint (INP) under 16ms, always initialize your embedding pipeline inside a dedicated Web Worker and probe `navigator.gpu.requestAdapter()` to select `device: 'webgpu'` with graceful fallback to `'wasm'`: // src/workers/embedding-worker.ts import { pipeline, env, type FeatureExtractionPipeline } from "@huggingface/transformers"; // Cache quantized ONNX weights in the browser Cache API / OPFS env.allowLocalModels = false; env.useBrowserCache = true; let extractorPromise: Promise<FeatureExtractionPipeline> | null = null; async function detectOptimalDevice(): Promise<"webgpu" | "wasm"> { if (typeof navigator !== "undefined" && "gpu" in navigator) { try { const adapter = await (navigator as unknown as { gpu: GPU }).gpu.requestAdapter(); if (adapter) return "webgpu"; } catch (_) { // Fallback to WASM SIMD } } return "wasm"; } export async function getEmbeddingExtractor(): Promise<FeatureExtractionPipeline> { if (!extractorPromise) { const device = await detectOptimalDevice(); extractorPromise = pipeline( "feature-extraction", "Snowflake/snowflake-arctic-embed-xs", { device, dtype: device === "webgpu" ? "fp16" : "q8", } ); } return extractorPromise; } export async function embedTextToFloat32(text: string): Promise<Float32Array> { const extractor = await getEmbeddingExtractor(); const output = await extractor(text, { pooling: "cls", normalize: true, }); return new Float32Array(output.data as Float32Array); } ## Step 2: Persisting Binary Vector Indexes in Origin Private File System (OPFS) Storing thousands of JSON-serialized float arrays in `localStorage` or naive IndexedDB object stores creates massive serialization overhead. Instead, pack your normalized `Float32Array` embeddings contiguously into a binary file inside `navigator.storage.getDirectory()` (OPFS) and run a single-pass dot-product scan: // src/lib/vector/opfs-vector-index.ts export interface VectorMetadata { id: string; title: string; slug: string; excerpt: string; } export class OpfsFlatVectorIndex { private readonly dim: number; private vectors: Float32Array = new Float32Array(0); private docs: VectorMetadata[] = []; constructor(dimensions = 384) { this.dim = dimensions; } async saveToOpfs(filename = "codingcat-vectors-384d.bin"): Promise<void> { const root = await navigator.storage.getDirectory(); const fileHandle = await root.getFileHandle(filename, { create: true }); const writable = await fileHandle.createWritable(); await writable.write(this.vectors.buffer); await writable.close(); const metaHandle = await root.getFileHandle(`${filename}.meta.json`, { create: true }); const metaWritable = await metaHandle.createWritable(); await metaWritable.write(JSON.stringify(this.docs)); await metaWritable.close(); } async loadFromOpfs(filename = "codingcat-vectors-384d.bin"): Promise<boolean> { try { const root = await navigator.storage.getDirectory(); const fileHandle = await root.getFileHandle(filename); const file = await fileHandle.getFile(); const arrayBuffer = await file.arrayBuffer(); this.vectors = new Float32Array(arrayBuffer); const metaHandle = await root.getFileHandle(`${filename}.meta.json`); const metaFile = await metaHandle.getFile(); this.docs = JSON.parse(await metaFile.text()) as VectorMetadata[]; return true; } catch { return false; } } /** * Since embeddings are L2-normalized at extraction time, * Cosine Similarity equals the raw dot product. */ searchTopK(queryVec: Float32Array, k = 5): Array<VectorMetadata & { score: number }> { const count = this.docs.length; const dim = this.dim; const scores: Array<{ idx: number; score: number }> = []; for (let i = 0; i < count; i++) { const offset = i * dim; let dot = 0; for (let d = 0; d < dim; d++) { dot += queryVec[d] * this.vectors[offset + d]; } scores.push({ idx: i, score: dot }); } scores.sort((a, b) => b.score - a.score); return scores.slice(0, k).map(({ idx, score }) => ({ ...this.docs[idx], score, })); } } ## AJ Pro-Tip: Ship Pre-Computed Binary Embeddings from Your Astro Build > **AJ Pro-Tip: Pre-Compute Corpus Embeddings at Build Time, Embed Only the Query in the Browser. **Do not force every visitor's GPU to embed your entire 500-article blog archive on first page load. Generate your `codingcat-vectors-384d.bin` binary artifact once during your Astro static/SSR build (less than 750KB for 500 articles at `Float32` or 375KB at `Float16`), cache it in OPFS, and only run the WebGPU embedding pipeline on the user's 10-word search query. ## **Try the Live Browser AI & WebMCP Playground** You can test every pattern from this article live right now in our interactive Web AI & WebMCP Playground on CodingCat.dev, or inspect our production discovery manifests on the Developers & Agent APIs page. If you are organizing a developer conference or engineering summit, check out my Web AI talk abstracts on alexpatterson.dev and explore more hands-on Courses, Podcasts, and Blog Posts right here on CodingCat.dev.
dev.to
October 31, 2026 at 2:26 PM
whining about webgpu is always valid
November 1, 2026 at 9:57 AM
WebGPU is changing what web applications can do by bringing native GPU computing straight to the browser. Here is why this matters for developers. Deep dive at klytron.com #WebGPU #WebDev #JavaScript #Klytron

#klytron #webgpu #webdev #javascript #coding #klytron
October 31, 2026 at 8:30 PM