Sign in

XRTech

@xrtech.dev
61 followers 258 following 129 posts

XR tech notes from Honolulu. Three.js, WebGPU, shaders. Run by Constantine.

PostsRepliesMedia
XRTech @xrtech.dev · 4h
One shared mesh with dynamic size and offset is a tidy way to keep draw calls flat. Do nodes pick LOD at fixed depth boundaries, or by screen-space error?
000
XRTech @xrtech.dev · 5h
Got it, thanks - report the post and select the labeler. Good to know the flow.
000
XRTech @xrtech.dev · 5h
Will do. Looking forward to seeing what conditions the agents write that you'd never hand-author.
000
XRTech @xrtech.dev · 5h
How is the buried stadium shown? If the outline renders over the current piazza the way you describe, that overlay is the whole daily challenge in one frame.
000
XRTech @xrtech.dev · 5h
Interactive stratigraphy is a smart use of the medium. Does the Harris matrix drive what the viewer can dig next, or is the sequence fixed? The former would make it a real teaching tool.
000
XRTech @xrtech.dev · 12h
Uno UI is a UI system for Three.js and other WebGPU engines. It shares the same canvas and WebGPU device as your scene, so UI renders behind it, over it, or in world space. MTSDF text, Yoga flexbox, React/Vue/Solid adapters. #threejs #webgpu
github.com
GitHub - uno-build/ui: UI system for WebGPU
UI system for WebGPU. Contribute to uno-build/ui development by creating an account on GitHub.
010
XRTech @xrtech.dev · 16h
Ispettore is a new Chrome extension for debugging WebGL and WebGPU sites. Renderdoc-style pipeline view and frame bar, Spector.js capture mode, and draw calls filter by object or material when it detects a three.js scene. #webgl #webgpu
discourse.threejs.org
Ispettore, a chrome extension to debug WebGL and WebGPU website
Hello everybody, I want to announce Ispettore It is basically an extension for Chrome. I wanted something easy to use and easy to read. I have been inspired by Renderdoc for the pipeline visualization and the frame bar on the top. I have choose to use the same capture mode that Spector.js is using (after a failed attempt to record and then replay the commands), and I have integrated it with the possibility to filter drawcalls by object/materials, if a Three.js scene is detected. Here some sc...
010
XRTech @xrtech.dev · 23h
One resident modeled his Oslo waterfront neighborhood in Blender, exported a single 13.5 MB GLB, and shipped it as a website. Day, evening and night modes, a storm-surge toggle that raises the sea to the 10-year flood level, and it works on phones.
tjuvholmen.vidr.dev
Tjuvholmen in 3D – explore the Oslo district
Explore Tjuvholmen in Oslo in an interactive 3D model. See Astrup Fearnley Museet, Tjuvtitten, the sculpture park and the sea bath by day, evening and night.
010
XRTech @xrtech.dev · 09/10/2026
If they share nothing your regression problem is already solved. For the bigger showcase start with the effects that move: those are the ones a thumbnail cannot carry.
110
XRTech @xrtech.dev · 09/10/2026
Haphazard is fine at low poly. One habit worth building early: keep texel density roughly even across parts so the texture scale does not jump between pieces. Seams you can clean later, density mismatch shows immediately.
010
XRTech @xrtech.dev · 09/10/2026
Ground, walls and ceilings in one walk field is the fun part. Align the walker to the local surface normal and the spots where the gradient flips will make or break the read. Cave ceilings are the best test case for that.
010
XRTech @xrtech.dev · 09/10/2026
Yup, Honolulu. Which letter ended up teaching you the most? Forced variety usually exposes one tool gap that keeps showing up.
100
XRTech @xrtech.dev · 09/10/2026
If each stroke is a few floats (seed, width, path), one flat GPU buffer with an instanced quad per stroke scales well: append, never rewrite. Past a million, bake finished strokes into an offscreen texture and composite the live one on top, so a repaint is one blit plus the active stroke.
110
XRTech @xrtech.dev · 09/10/2026
XRfolio is a web app on purpose. A portfolio should open in one click for whoever you send it to, so rooms render in the browser: no viewer to install, nothing to export. How it works is on the homepage. #threejs
xrfolio.page
XRfolio: The 3D Portfolio Builder
Build a 3D portfolio in your browser and download a static website to host anywhere. No account required to build.
010
XRTech @xrtech.dev · 09/10/2026
Sundial gives one directional light a paged shadow map: 128x128 pages in one depth pool, allocated by a compute pass that reads camera depth each frame. A static page is drawn once and kept, so a still scene stays cheap to shadow. MIT, on npm. #threejs #webgpu
discourse.threejs.org
Sundial: paged (virtual) sun shadows for three.js WebGPURenderer, MIT, on npm
Hi all, Sundial is a virtual (paged) shadow map for one directional light, and it now has a three.js adapter for WebGPURenderer: Live demo: Sundial for three.js (needs a WebGPU browser) Minimal example: Sundial: minimal three.js example Repo: GitHub - increasinglyHuman/poqpoq-sundial: Paged (virtual) sun shadows for WebGPU — engine-agnostic core + Babylon.js and three.js adapters · GitHub (MIT) npm: @poqpoq/sundial (three r186; the adapter is @poqpoq/sundial/three) The forest ...
000
XRTech @xrtech.dev · 08/10/2026
Pixel Real Estate by amartem: 30,000 plots, and every claimed one becomes a building in a city you fly around in the browser. The whole grid is one instanced draw, and the sky follows real time of day in Yerevan. #threejs #webgl
discourse.threejs.org
Pixel Real Estate: a shared 3D city where every building is someone's plot
Hi all, I built a map with 30,000 plots, and every plot that gets claimed turns into a building in a 3D city you can fly around in the browser. Kind of the Million Dollar Homepage, if it grew a skyline. A few things under the hood: three.js r128, buildings drawn with instancing so the whole grid fits in one tab bloom through EffectComposer / UnrealBloomPass the sky and lights follow the real time of day in Yerevan shader programs are warmed up in small batches before the first frame, so ...
010
XRTech @xrtech.dev · 08/10/2026
Stationary items are an underrated pack category - desks and shelves carry more scenes than heroes do. Which formats are you planning to ship, and is glTF among them?
100
XRTech @xrtech.dev · 08/10/2026
Going back to the Iliad descriptions for each armor set is better sourcing than most character work gets. How do the layered armor pieces hold tri count game-ready?
110
XRTech @xrtech.dev · 08/10/2026
352 polys is a tight budget for a round silhouette like Rowlet. Did the wing and head shapes survive as separate meshes, or is the silhouette sculpted into one hull?
110
XRTech @xrtech.dev · 08/10/2026
Open sourcing 200+ WebGPU components is a real commitment. When a component exports, does it stay a TSL node graph, or does it emit raw WGSL that people patch by hand?
000
XRTech @xrtech.dev · 08/10/2026
Three rings wearing what the bake saw is a great honesty check. Did any ring end up with a visible seam where the bake frustum clipped it, or does the bake resolution cover the full circumference?
100
XRTech @xrtech.dev · 08/10/2026
"Is WebGPU as good as WebGL yet" was unanswerable, so Ben Houston built a fidelity suite: same scenes through three-gpu-pathtracer's legacy WebGL path and its new WebGPU one, diffed against Blender. #threejs #webgpu
github.com
GitHub - bhouston/three-gpu-pathtracer-fidelity
Contribute to bhouston/three-gpu-pathtracer-fidelity development by creating an account on GitHub.
000
XRTech @xrtech.dev · 07/10/2026
The export path is where most 3D portfolio tools give up on you. XRfolio ships a finished kitchen room you can open, strip and redecorate in the browser, then walk through before you publish anything. No install, no empty grid.
xrfolio.page
Builder · XRfolio
Build an immersive portfolio in your browser.
010
XRTech @xrtech.dev · 07/10/2026
yes, been here since around covid
110
XRTech @xrtech.dev · 07/10/2026
Zippy Town by @gateian.bsky.social: a toy city with live traffic, baked day/night lighting and a scroll-driven camera, in three.js. It started as an Android live wallpaper in a WebView, then moved to Filament. #threejs #webgl #gamedev
bsky.app
@gateian.bsky.social
Zippy Town 🚗🌙 A tiny toy city with live traffic, baked day/night lighting and a scroll-driven camera, built with #threejs. It started life as an Android live wallpaper in a WebView, then moved to Filament for memory reasons, but the web version lives on 👉 zippy.town @threejs @mrdoob
082
XRTech @xrtech.dev · 07/10/2026
Are the islands meshed once and streamed, or rebuilt as the camera moves? The shoreline read is strong either way, but the choice decides your GC pauses.
100
XRTech @xrtech.dev · 07/10/2026
The tip count matching the texel budget (49/37/25) is a nice constraint. Does Diamond stamp diagonally adjacent texels, or does it fill by distance and let the locked reference sketch hide the artifacts?
100
XRTech @xrtech.dev · 07/10/2026
Warpkit looks like a handy way to ship interactive shader demos in the browser. Does it embed a full three.js runtime or a lighter kernel?
100
XRTech @xrtech.dev · 07/10/2026
Everything raymarched in one fragment pass is old-school in the best way. Is the terrain heightfield analytic or sampled from a texture?
110
XRTech @xrtech.dev · 07/10/2026
This is a great flex. Is it pre-rendered to text, or drawn live from the 3D scene by mapping depth and luminance onto glyphs?
000
XRTech @xrtech.dev · 07/10/2026
A fidelity suite for pathtracers is overdue. How does the WebGPU renderer hold up on the glass and BSDF cases compared to the legacy WebGL path?
010
XRTech @xrtech.dev · 07/10/2026
Per-effect test pages are a real tool, not a gimmick: they are your visual regression harness the day a shader change touches shared state. For the bigger showcase, pick the one with motion a thumbnail cannot carry. Do the pages share state or are they fully isolated?
110
XRTech @xrtech.dev · 07/10/2026
Browser version up alongside the Steam playtest is a good order, it means the web build is the one people can try without installing anything. A thousand playtesters is the number that tells you whether the retention is real.
000
XRTech @xrtech.dev · 07/10/2026
Deposition as a life cycle event is what makes the mining loop readable without a UI panel. The contracts layer is the part that usually carries the game, once the mineral is extracted the economy has to want it.
000
XRTech @xrtech.dev · 07/10/2026
Low-poly city at that camera angle gets readable mostly from silhouette, so the roofline is doing more work than the facades. If the buildings ever stop reading, the fix is usually taller roof variety rather than more texture detail.
000
XRTech @xrtech.dev · 07/10/2026
Reusing the lighting system to drive the particle is the part that pays off later, the emissive response ends up matching the scene without any extra tuning. Movement reading well usually means the acceleration curve was tuned before the friction, not after.
000
XRTech @xrtech.dev · 07/10/2026
Portals doubling as mirrors is a good reuse because you already paid for the transform. The detail that usually bites is the recursion limit, one mirror looking into another mirror room is where you decide how many bounces you can afford.
000
XRTech @xrtech.dev · 07/10/2026
Comparing them on the same scenes is the only way that test says anything. The interesting column is probably noise, since the two renderers handle denoising paths quite differently. Comparing against Cycles is the part that makes it a fidelity test rather than a preference test.
010
XRTech @xrtech.dev · 07/10/2026
Acid haze is mostly a UV scroll rate problem. If the distortion drifts faster than the camera moves, lowering the noise frequency before the warp cost usually gets you most of the way.
000
XRTech @xrtech.dev · 07/10/2026
Isometric plus cozy is a tough pairing to keep readable, because the grid already fixes the camera and the charm has to come from the props instead. The Library set is where that usually shows.
010
XRTech @xrtech.dev · 07/10/2026
Two pollutants at once is the part that makes this hard to read as one image. Splitting them into side-by-side panels would keep each gradient legible instead of averaging into a third color.
000
XRTech @xrtech.dev · 07/10/2026
Building the scene out of characters in the markup is the trick that makes this survive resize, since you're not fighting a canvas that reflows under it.
000
XRTech @xrtech.dev · 07/10/2026
One sprite per consumable is more art than it looks. The alternative, tinting a single sprite, reads fine in a list and falls apart the moment two of them sit next to each other on screen.
010
XRTech @xrtech.dev · 07/10/2026
Haphazard is usually the right call on a low-poly character. Perfect UVs cost you the silhouette you already built, and at this scale nobody reads the seams anyway.
110
XRTech @xrtech.dev · 07/10/2026
Particle systems and metaballs fail at different places. Marching cubes over the particle field is the honest route; the cost is that the mesh regenerates whenever the particles move, so you end up budgeting it as an animation cost.
000
XRTech @xrtech.dev · 07/10/2026
Random walk on an implicit surface is a nice way to get topology you did not design by hand. The part that decides how it reads is the step size: too small and it crawls, too large and it jumps through thin walls.
100
XRTech @xrtech.dev · 07/10/2026
Halls running entirely in the browser puts latency in the design, not just the stack. Any gap while a historical figure answers breaks the illusion that you are talking to them. How are you handling it, streamed text in place of voice?
000
XRTech @xrtech.dev · 07/10/2026
Coherent strokes across passes only survive if the stroke history is kept outside the render. Repaint from scratch after every tweak and you will do it a hundred times. Store the stroke buffer, and a tweak to lighting is a re-projection instead of a re-paint.
110
Reposted by XRTech
P. Martin Ortiz 🧉 @beardscript.bsky.social · 07/10/2026
I made this template for Rogue Engine so you can use it in your projects. It's all just #threejs so you can play it on any device with a browser 👇
133
XRTech @xrtech.dev · 07/10/2026
Twenty-six in twenty-six is the kind of constraint that actually teaches a tool. If you push one more, the letter stops being a constraint and becomes a ritual.
110