Don McCurdy
donmccurdy.com
Don McCurdy
@donmccurdy.com
Graphics, data visualization, and web technologies at Bentley Systems. Contributor to #glTF, #threejs, and #3DTiles. he/him.

Brooklyn, NY.
Reposted by Don McCurdy
i wrote everything that i've been kind of nervous to write about @val.town: here's how things have been going the last three years, and read to the end for how we're hiring for two people macwright.com/2025/11/11/v...
Val Town 2023-2025 Retrospective
The whole story
macwright.com
November 11, 2025 at 5:07 PM
Reposted by Don McCurdy
Version 0.9.2 of three-mesh-bvh is out now and brings support for raycasting & distance queries using WebGPU compute shaders!

This is the first step towards WebGPU path tracing & other compute-shader features 🚀✨

#threejs #webgpu #javascript
November 6, 2025 at 3:56 AM
Reposted by Don McCurdy
recommitted to @opensourcepledge.com at @val.town for 2025! very pumped to support projects like zod, fastify, codemirror, unified, and esm.sh with real 💸 as well as positive vibes.

blog.val.town/oss-pledge
Year Two of the Open Source Pledge
Updates and articles from the Val Town team
blog.val.town
November 5, 2025 at 9:10 PM
Reposted by Don McCurdy
Three.js r181 released 🎃
threejs.org/changelog/?r...
October 31, 2025 at 4:13 PM
What's the minimum feasible number transitive dependencies for maintaining and publishing a small JavaScript library with types?

Assume: unit tests, bundle .ts sources to .js and .d.ts, and maybe shared lint-and-format settings.
October 27, 2025 at 1:03 AM
Reposted by Don McCurdy
Job update: after nearly 8 years of open source I'm excited to go independent to work on consulting & OSS dev. More details to come, but feel free to reach out about collaborations or how you can support my work!

#threejs #javascript #webgl #gis #cad
October 1, 2025 at 8:52 AM
Reposted by Don McCurdy
i know we're all tired of the DHH stuff, but… if you've written this off as a normal political disagreement or just been too overwhelmed to look into it (understandable!), i really think you should take five minutes to read firsthand exactly what these people are defending with their whole chests:
September 26, 2025 at 1:50 AM
Writeup by @icastano.bsky.social — very worthwhile comparisons for anyone building texture-heavy applications in WebGPU, with a case study and integration in @threejs.org!
New blog post about my experiences using spark.js with three.js:

www.ludicon.com/castano/blog...

Re-posts and feedback appreciated!
three.js + spark.js – Ignacio Castaño
www.ludicon.com
September 10, 2025 at 3:11 AM
a classic double-cross
off to a good start
August 26, 2025 at 1:57 AM
Reposted by Don McCurdy
Anyone want to test #webgpu page where I'm testing performance of rendering many points, using GPU vs compute shader?

aras-p.info/files/temp/w...

I'd like to know GPU times for each of 5 buttons, with&without compute shader checkbox, and the GPU model. My own numbers at the bottom of the page.
WebGPU Point Rasterization
aras-p.info
August 23, 2025 at 11:03 AM
Reposted by Don McCurdy
meshoptimizer v0.25 is out! Featuring new simplification function that optimizes positions and attributes for appearance, experimental permissive mode to simplify faceted regions with selective seam preservation, regularization option for improved tessellation quality and deformation, multiple ...
August 20, 2025 at 3:56 PM
Small update for my collection of tiny 40x40px KTX2 samples: RGB9E5 and R11G11B10.

github.com/donmccurdy/K...
GitHub - donmccurdy/KTX2-Samples: Collection of KTX2 sample textures, for testing and debugging.
Collection of KTX2 sample textures, for testing and debugging. - donmccurdy/KTX2-Samples
github.com
August 10, 2025 at 3:37 AM
Very big announcement from @icastano.bsky.social for WebGPU apps! Spark.js means you can send small file formats over the network (WebP, AVIF, ...) and compress to GPU texture formats like ETC2, BCn, or ASTC near-instantly using WebGPU — at runtime.

#threejs #webgpu #webgl
I’m excited to announce the release of Spark 1.3 and the launch of spark.js, our new JavaScript API for real-time GPU texture compression on the web.

ludicon.com/sparkjs
spark.js
Real-Time GPU Texture Codecs for the Web
ludicon.com
August 7, 2025 at 2:13 PM
Reposted by Don McCurdy
spark.js wraps a subset of these codecs with a simple and lightweight API. Making it easy to use modern image formats for storage and delivery and transcode them at runtime to more efficient GPU formats. This is literally free bandwidth!
August 6, 2025 at 11:04 PM
Reposted by Don McCurdy
our 3D compression tool is out now!

the dream of making entire assets smaller than a single image is real; we've made entire multi-level, dozens-of-models games in under 7 MB

entirely free and client side

gltf-compressor.com
glTF Compressor - Optimize your glTF files online
Easily optimize glTF 3D models online. See your changes in realtime.
gltf-compressor.com
July 31, 2025 at 5:47 PM
Reposted by Don McCurdy
If you're going to be at SIGGRAPH in August, come to our p5.js workshop on Tuesday! Here's a little preview of what we're making: beta.p5js.org/tutorials/ty...
July 31, 2025 at 12:53 PM
Reposted by Don McCurdy
Join us on August 5th for the MaterialX Virtual Townhall at ASWF Open Source Days 2025, featuring presentations from Autodesk, IKEA, Lucasfilm, NVIDIA, OpenPBR, OTOY, and Pixar.

events.linuxfoundation.org/open-source-...
August 2, 2025 at 3:13 AM
Reposted by Don McCurdy
Three.js r179 released 🌟
threejs.org/changelog/?r...
August 1, 2025 at 1:28 PM
Reposted by Don McCurdy
The interaction is finally ready!

It was tricky to calibrate, but it now supports up to 6 people, reacting to full-body movement velocity.

The more energetic your motion, the stronger the response.

During my tests kids loved it. They had a blast jumping around nonstop😄
July 31, 2025 at 1:42 PM
Great comparison of modern floating-point image formats including OpenEXR, JPEG-XL, and custom encodings:
aras-p.info/blog/2025/07...
Lossless Float Image Compression · Aras' website
aras-p.info
July 10, 2025 at 9:03 PM
Rebooting an old proposal for three.js! Adding an AgX tone mapping option with a “look” (contrast, saturation, etc.) more similar to other three.js tone mappers.

It's a compromise. Would love to add a color grading API, but “perfect is the enemy of good” and all that.

github.com/mrdoob/three...
WebGLRenderer: Add 'AgXPunchyToneMapping' by donmccurdy · Pull Request #27618 · mrdoob/three.js
Related issue: Support AgX tone mapping #27362 Description Adds THREE.AgXPunchyToneMapping, as found in Blender and Filament. A more contrasty and saturated look, intended for sRGB displays. Inte...
github.com
July 9, 2025 at 1:07 AM
Reposted by Don McCurdy
Hello #portfolioday. I'm Chris, an 3D artist & illustrator from the PNW. Lately I've been getting more serious about game development as well.

sweaterparrot.com
linktr.ee/sweaterparrot
July 8, 2025 at 4:02 PM
Reposted by Don McCurdy
meshoptimizer 0.24 is out! Featuring new meshlet builder for raytracing workloads, improvements to cluster partitioning, new functions for reindexing, simplification, clustering and coverage computation, many internal improvements and, of course, VS2013 support!
Release v0.24 · zeux/meshoptimizer
This release contains many improvements to the meshoptimizer library and some gltfpack fixes! Some highlights: New meshlet builder (meshopt_buildMeshletsSpatial) designed for raytracing workloads o...
github.com
June 12, 2025 at 4:10 PM
Reposted by Don McCurdy
To make it work, I've written a new JavaScript wrapper for xatlas called "watlas". It's available now on npm!
GitHub - toji/watlas: A web port of XAtlas: Mesh parameterization / UV unwrapping library
A web port of XAtlas: Mesh parameterization / UV unwrapping library - toji/watlas
github.com
June 9, 2025 at 10:07 PM
Very excited about this feature by @toji.dev. New in glTF Transform v4.2: generate texture coordinates (“UV mappings”) for any glTF scene! UVs can be created per-primitive, or grouped for use with texture atlases.

Documentation:
gltf-transform.dev/modules/func...
I added a "unwrap" function to the glTF-transform library/CLI tool written by @donmccurdy@hachyderm.io, which he merged today! It uses the xatlas library to generate new texture coordinates for a mesh that can be used for things like lightmapping, AO, and texture painting.
Add unwrap transform by toji · Pull Request #1660 · donmccurdy/glTF-Transform
Fixes #792 Uses xatlas (https://github.com/jpcy/xatlas) to generate unique texture coordinates suitable for baking lightmaps or texture painting at the given attribute set index. Also adds an assoc...
github.com
June 11, 2025 at 5:46 PM