# Three.js

Published articles for Three.js.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Building Depth: Designing and Developing a 3D Renderer Inside Figma

DevFeed: [Building Depth: Designing and Developing a 3D Renderer Inside Figma](<https://devfeed.tech/articles/building-depth-designing-and-developing-a-3d-renderer-inside-figma-8995.md>)

Original publisher: [Read original article](<https://tympanus.net/codrops/2026/09/13/building-depth-designing-and-developing-a-3d-renderer-inside-figma/>)

Author: Aleksei Kipin

Published: 2026-09-13T11:34:39Z

Content type: article

Language: en

Sources: [Codrops](<https://devfeed.tech/sources/codrops.md>)

Topics: [Figma 3D renderer](<https://devfeed.tech/topics/figma-3d-renderer.md>), [Figma](<https://devfeed.tech/topics/figma.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [3d-design](<https://devfeed.tech/tags/3d-design.md>), [3d-modeling](<https://devfeed.tech/tags/3d-modeling.md>), [3d-renderer-for-figma](<https://devfeed.tech/tags/3d-renderer-for-figma.md>), [3d-rendering](<https://devfeed.tech/tags/3d-rendering.md>), [3d-visualization](<https://devfeed.tech/tags/3d-visualization.md>), [3d-workflow](<https://devfeed.tech/tags/3d-workflow.md>), [articles](<https://devfeed.tech/tags/articles.md>), [case-study](<https://devfeed.tech/tags/case-study.md>), [creative-development](<https://devfeed.tech/tags/creative-development.md>), [depth-3d-renderer](<https://devfeed.tech/tags/depth-3d-renderer.md>), [depth-figma](<https://devfeed.tech/tags/depth-figma.md>), [depth-figma-plugin](<https://devfeed.tech/tags/depth-figma-plugin.md>), [design-engineering](<https://devfeed.tech/tags/design-engineering.md>), [design-tools](<https://devfeed.tech/tags/design-tools.md>), [figma](<https://devfeed.tech/tags/figma.md>), [figma-3d](<https://devfeed.tech/tags/figma-3d.md>), [figma-3d-renderer](<https://devfeed.tech/tags/figma-3d-renderer.md>), [figma-plugin](<https://devfeed.tech/tags/figma-plugin.md>), [figma-plugin-design](<https://devfeed.tech/tags/figma-plugin-design.md>), [interactive-3d](<https://devfeed.tech/tags/interactive-3d.md>), [plugin-development](<https://devfeed.tech/tags/plugin-development.md>), [product-design](<https://devfeed.tech/tags/product-design.md>), [product-design-case-study](<https://devfeed.tech/tags/product-design-case-study.md>), [real-time-rendering](<https://devfeed.tech/tags/real-time-rendering.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [ui-design](<https://devfeed.tech/tags/ui-design.md>), [ux-design](<https://devfeed.tech/tags/ux-design.md>), [visualization](<https://devfeed.tech/tags/visualization.md>), [webgl](<https://devfeed.tech/tags/webgl.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

An article about building Depth, a Figma plugin for quickly rendering 3D models during design work. It describes the workflow, plugin architecture, rendering behavior, and export approach.

### Source excerpt

A look at how Depth came together, from building a 3D renderer inside Figma to designing a website that explores what it can do.

## Inside the First Three.js Conference in Paris

DevFeed: [Inside the First Three.js Conference in Paris](<https://devfeed.tech/articles/inside-the-first-three-js-conference-in-paris-4348.md>)

Original publisher: [Read original article](<https://tympanus.net/codrops/2026/09/10/inside-the-first-three-js-conference-in-paris/>)

Author: Manoela Ilic

Published: 2026-09-10T08:30:11Z

Content type: news

Language: en

Sources: [Codrops](<https://devfeed.tech/sources/codrops.md>)

Topics: [Three.js community](<https://devfeed.tech/topics/three-js-community.md>), [webgpu](<https://devfeed.tech/topics/webgpu.md>)

Tags: [3d-web-development](<https://devfeed.tech/tags/3d-web-development.md>), [ai](<https://devfeed.tech/tags/ai.md>), [articles](<https://devfeed.tech/tags/articles.md>), [browser](<https://devfeed.tech/tags/browser.md>), [coding](<https://devfeed.tech/tags/coding.md>), [codrops](<https://devfeed.tech/tags/codrops.md>), [community](<https://devfeed.tech/tags/community.md>), [conference](<https://devfeed.tech/tags/conference.md>), [creative-coding](<https://devfeed.tech/tags/creative-coding.md>), [creative-development](<https://devfeed.tech/tags/creative-development.md>), [creative-technology](<https://devfeed.tech/tags/creative-technology.md>), [creativity](<https://devfeed.tech/tags/creativity.md>), [creators](<https://devfeed.tech/tags/creators.md>), [developers](<https://devfeed.tech/tags/developers.md>), [digital-experiences](<https://devfeed.tech/tags/digital-experiences.md>), [event](<https://devfeed.tech/tags/event.md>), [experiments](<https://devfeed.tech/tags/experiments.md>), [frontend-development](<https://devfeed.tech/tags/frontend-development.md>), [generative-art](<https://devfeed.tech/tags/generative-art.md>), [immersive-web](<https://devfeed.tech/tags/immersive-web.md>), [interactive-web-experiences](<https://devfeed.tech/tags/interactive-web-experiences.md>), [javascript-3d](<https://devfeed.tech/tags/javascript-3d.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [three-js-community](<https://devfeed.tech/tags/three-js-community.md>), [three-js-conference](<https://devfeed.tech/tags/three-js-conference.md>), [three-js-conference-paris](<https://devfeed.tech/tags/three-js-conference-paris.md>), [three-js-demos](<https://devfeed.tech/tags/three-js-demos.md>), [three-js-developers](<https://devfeed.tech/tags/three-js-developers.md>), [three-js-projects](<https://devfeed.tech/tags/three-js-projects.md>), [three-js-talks](<https://devfeed.tech/tags/three-js-talks.md>), [three-js-web-development](<https://devfeed.tech/tags/three-js-web-development.md>), [three-js-workshops](<https://devfeed.tech/tags/three-js-workshops.md>), [web-3d](<https://devfeed.tech/tags/web-3d.md>), [web-design](<https://devfeed.tech/tags/web-design.md>), [webgl](<https://devfeed.tech/tags/webgl.md>), [webgpu](<https://devfeed.tech/tags/webgpu.md>)

### AI overview

A live look at the first Three.js Conference in Paris, covering community moments, opening talks, a Zelda rebuild moving from WebGL to WebGPU, and a discussion about AI and coding.

### Source excerpt

A look inside the first-ever Three.js Conference, straight from Paris.

## Turning Names Into Digital Architecture with Three.js

DevFeed: [Turning Names Into Digital Architecture with Three.js](<https://devfeed.tech/articles/turning-names-into-digital-architecture-with-three-js-4347.md>)

Original publisher: [Read original article](<https://tympanus.net/codrops/2026/09/09/turning-names-into-digital-architecture-with-three-js/>)

Author: Serhii Polyvanyi

Published: 2026-09-09T17:55:00Z

Content type: article

Language: en

Sources: [Codrops](<https://devfeed.tech/sources/codrops.md>)

Topics: [Three.js community](<https://devfeed.tech/topics/three-js-community.md>), [Three.js custom shaders](<https://devfeed.tech/topics/three-js-custom-shaders.md>), [Three.js shaders](<https://devfeed.tech/topics/three-js-shaders.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [articles](<https://devfeed.tech/tags/articles.md>), [best-free-frontend-development-resources](<https://devfeed.tech/tags/best-free-frontend-development-resources.md>), [best-javascript-libraries-for-animations](<https://devfeed.tech/tags/best-javascript-libraries-for-animations.md>), [best-web-development-blogs](<https://devfeed.tech/tags/best-web-development-blogs.md>), [conference](<https://devfeed.tech/tags/conference.md>), [creative-coding](<https://devfeed.tech/tags/creative-coding.md>), [creative-ui-ideas-for-web-design](<https://devfeed.tech/tags/creative-ui-ideas-for-web-design.md>), [css-animations](<https://devfeed.tech/tags/css-animations.md>), [css-grid-vs-flexbox](<https://devfeed.tech/tags/css-grid-vs-flexbox.md>), [css-hover-effects](<https://devfeed.tech/tags/css-hover-effects.md>), [css-only-effects](<https://devfeed.tech/tags/css-only-effects.md>), [experiment](<https://devfeed.tech/tags/experiment.md>), [frontend-development](<https://devfeed.tech/tags/frontend-development.md>), [gsap-animation-examples](<https://devfeed.tech/tags/gsap-animation-examples.md>), [how-to-build-a-responsive-website-from-scratch](<https://devfeed.tech/tags/how-to-build-a-responsive-website-from-scratch.md>), [how-to-create-parallax-scrolling-effects](<https://devfeed.tech/tags/how-to-create-parallax-scrolling-effects.md>), [how-to-create-smooth-css-transitions](<https://devfeed.tech/tags/how-to-create-smooth-css-transitions.md>), [how-to-make-a-portfolio-website-interactive](<https://devfeed.tech/tags/how-to-make-a-portfolio-website-interactive.md>), [how-to-optimize-animations-for-performance](<https://devfeed.tech/tags/how-to-optimize-animations-for-performance.md>), [html5-and-css3-tricks](<https://devfeed.tech/tags/html5-and-css3-tricks.md>), [javascript-effects](<https://devfeed.tech/tags/javascript-effects.md>), [javascript-ui-interactions](<https://devfeed.tech/tags/javascript-ui-interactions.md>), [micro-interactions-for-websites](<https://devfeed.tech/tags/micro-interactions-for-websites.md>), [modern-web-development](<https://devfeed.tech/tags/modern-web-development.md>), [react-ui-animations](<https://devfeed.tech/tags/react-ui-animations.md>), [step-by-step-guide-to-webgl-animations](<https://devfeed.tech/tags/step-by-step-guide-to-webgl-animations.md>), [svg-animations-in-css](<https://devfeed.tech/tags/svg-animations-in-css.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [three-js-3d-animations](<https://devfeed.tech/tags/three-js-3d-animations.md>), [three-js-conference](<https://devfeed.tech/tags/three-js-conference.md>), [ui-ux-design-tips](<https://devfeed.tech/tags/ui-ux-design-tips.md>), [web-design-tutorials](<https://devfeed.tech/tags/web-design-tutorials.md>), [webgl-tutorials-for-beginners](<https://devfeed.tech/tags/webgl-tutorials-for-beginners.md>), [wordpress-themes-and-plugins](<https://devfeed.tech/tags/wordpress-themes-and-plugins.md>)

### AI overview

An interactive Three.js experiment turns typed names into lightweight, metallic-looking 3D letter structures. It explains contour generation, interpolation and deformation, structural line geometry, and a custom shader with a baked reflection map.

### Source excerpt

For the Three.js Conference in Paris, BL/S® created an interactive experiment that transforms your name into a dynamic 3D structure.

## Still: From Akira to Ink Wash, Building a Generative Garden in WebGPU

DevFeed: [Still: From Akira to Ink Wash, Building a Generative Garden in WebGPU](<https://devfeed.tech/articles/still-from-akira-to-ink-wash-building-a-generative-garden-in-webgpu-4346.md>)

Original publisher: [Read original article](<https://tympanus.net/codrops/2026/09/09/still-from-akira-to-ink-wash-building-a-generative-garden-in-webgpu/>)

Author: Ming Jyun Hung

Published: 2026-09-09T14:11:57Z

Content type: article

Language: en

Sources: [Codrops](<https://devfeed.tech/sources/codrops.md>)

Topics: [webgpu](<https://devfeed.tech/topics/webgpu.md>), [procedural flowers](<https://devfeed.tech/topics/procedural-flowers.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [articles](<https://devfeed.tech/tags/articles.md>), [case-study](<https://devfeed.tech/tags/case-study.md>), [creative-coding](<https://devfeed.tech/tags/creative-coding.md>), [deep-dive](<https://devfeed.tech/tags/deep-dive.md>), [flower-animation](<https://devfeed.tech/tags/flower-animation.md>), [generative](<https://devfeed.tech/tags/generative.md>), [generative-art](<https://devfeed.tech/tags/generative-art.md>), [generative-garden](<https://devfeed.tech/tags/generative-garden.md>), [generative-tendrils](<https://devfeed.tech/tags/generative-tendrils.md>), [gpu-instancing](<https://devfeed.tech/tags/gpu-instancing.md>), [ink-wash-effect](<https://devfeed.tech/tags/ink-wash-effect.md>), [interactive-3d](<https://devfeed.tech/tags/interactive-3d.md>), [japanese-art](<https://devfeed.tech/tags/japanese-art.md>), [japanese-print-style](<https://devfeed.tech/tags/japanese-print-style.md>), [procedural](<https://devfeed.tech/tags/procedural.md>), [procedural-animation](<https://devfeed.tech/tags/procedural-animation.md>), [procedural-art](<https://devfeed.tech/tags/procedural-art.md>), [procedural-flowers](<https://devfeed.tech/tags/procedural-flowers.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [real-time-3d](<https://devfeed.tech/tags/real-time-3d.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [three-js-case-study](<https://devfeed.tech/tags/three-js-case-study.md>), [three-js-shading-language](<https://devfeed.tech/tags/three-js-shading-language.md>), [toon-shading](<https://devfeed.tech/tags/toon-shading.md>), [tsl](<https://devfeed.tech/tags/tsl.md>), [tsl-shaders](<https://devfeed.tech/tags/tsl-shaders.md>), [vat](<https://devfeed.tech/tags/vat.md>), [vertex-animation-textures](<https://devfeed.tech/tags/vertex-animation-textures.md>), [webgpu](<https://devfeed.tech/tags/webgpu.md>), [webgpu-shaders](<https://devfeed.tech/tags/webgpu-shaders.md>)

### AI overview

A technical deep dive into a WebGPU-based, real-time 3D generative garden. It describes combining toon shading, ink-wash shadows, silk-like grain, and procedural flowers and tendrils to translate Japanese print-inspired visual principles into an interactive web scene.

### Source excerpt

A technical deep dive into Still, exploring how WebGPU, procedural systems, and Japanese art influences come together to create a living generative garden.

## Building an Infinite Liquid Glass Grid with Three.js, WebGPU, and TSL

DevFeed: [Building an Infinite Liquid Glass Grid with Three.js, WebGPU, and TSL](<https://devfeed.tech/articles/building-an-infinite-liquid-glass-grid-with-three-js-webgpu-and-tsl-4345.md>)

Original publisher: [Read original article](<https://tympanus.net/codrops/2026/09/08/building-an-infinite-liquid-glass-grid-with-three-js-webgpu-and-tsl/>)

Author: Filip Kantedal

Published: 2026-09-08T13:09:48Z

Content type: tutorial

Language: en

Sources: [Codrops](<https://devfeed.tech/sources/codrops.md>)

Topics: [webgpu](<https://devfeed.tech/topics/webgpu.md>), [Three.js custom shaders](<https://devfeed.tech/topics/three-js-custom-shaders.md>), [refraction shader](<https://devfeed.tech/topics/refraction-shader.md>), [signed distance functions](<https://devfeed.tech/topics/signed-distance-functions.md>)

Tags: [3d-web-experiences](<https://devfeed.tech/tags/3d-web-experiences.md>), [chromatic-dispersion](<https://devfeed.tech/tags/chromatic-dispersion.md>), [creative-coding](<https://devfeed.tech/tags/creative-coding.md>), [custom-shaders](<https://devfeed.tech/tags/custom-shaders.md>), [glass](<https://devfeed.tech/tags/glass.md>), [glass-shader](<https://devfeed.tech/tags/glass-shader.md>), [glassmorphism](<https://devfeed.tech/tags/glassmorphism.md>), [gpu-rendering](<https://devfeed.tech/tags/gpu-rendering.md>), [infinite](<https://devfeed.tech/tags/infinite.md>), [infinite-carousel](<https://devfeed.tech/tags/infinite-carousel.md>), [infinite-grid](<https://devfeed.tech/tags/infinite-grid.md>), [interactive-3d](<https://devfeed.tech/tags/interactive-3d.md>), [liquid-glass](<https://devfeed.tech/tags/liquid-glass.md>), [next-js](<https://devfeed.tech/tags/next-js.md>), [r3f](<https://devfeed.tech/tags/r3f.md>), [react-three-fiber](<https://devfeed.tech/tags/react-three-fiber.md>), [refraction-shader](<https://devfeed.tech/tags/refraction-shader.md>), [sdf](<https://devfeed.tech/tags/sdf.md>), [shader-effects](<https://devfeed.tech/tags/shader-effects.md>), [signed-distance-functions](<https://devfeed.tech/tags/signed-distance-functions.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [three-js-shading-language](<https://devfeed.tech/tags/three-js-shading-language.md>), [three-js-webgpu](<https://devfeed.tech/tags/three-js-webgpu.md>), [tsl](<https://devfeed.tech/tags/tsl.md>), [tsl-shaders](<https://devfeed.tech/tags/tsl-shaders.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [video](<https://devfeed.tech/tags/video.md>), [webgl](<https://devfeed.tech/tags/webgl.md>), [webgpu](<https://devfeed.tech/tags/webgpu.md>), [webgpu-shaders](<https://devfeed.tech/tags/webgpu-shaders.md>)

### AI overview

A tutorial on building an infinite liquid-glass grid in the browser with Three.js, WebGPU, TSL, custom shaders, and video textures.

### Source excerpt

An exploration of infinite grids, liquid glass, and video refraction using Three.js, WebGPU, TSL, and custom shaders.

## Drawing With Light: An Exploration of Lit GPU Tubes with TSL and WebGPU

DevFeed: [Drawing With Light: An Exploration of Lit GPU Tubes with TSL and WebGPU](<https://devfeed.tech/articles/drawing-with-light-an-exploration-of-lit-gpu-tubes-with-tsl-and-webgpu-4344.md>)

Original publisher: [Read original article](<https://tympanus.net/codrops/2026/09/07/drawing-with-light-an-exploration-of-lit-gpu-tubes-with-tsl-and-webgpu/>)

Author: Mathis Biabiany

Published: 2026-09-07T14:01:56Z

Content type: tutorial

Language: en

Sources: [Codrops](<https://devfeed.tech/sources/codrops.md>)

Topics: [Three.js shaders](<https://devfeed.tech/topics/three-js-shaders.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [creative-coding-webgpu](<https://devfeed.tech/tags/creative-coding-webgpu.md>), [curve-geometry](<https://devfeed.tech/tags/curve-geometry.md>), [generative-art-three-js](<https://devfeed.tech/tags/generative-art-three-js.md>), [gpu-animation](<https://devfeed.tech/tags/gpu-animation.md>), [gpu-generated-geometry](<https://devfeed.tech/tags/gpu-generated-geometry.md>), [gpu-rendering](<https://devfeed.tech/tags/gpu-rendering.md>), [gpu-tubes](<https://devfeed.tech/tags/gpu-tubes.md>), [lit-tubes-three-js](<https://devfeed.tech/tags/lit-tubes-three-js.md>), [meshline-three-js](<https://devfeed.tech/tags/meshline-three-js.md>), [meshline-webgpu](<https://devfeed.tech/tags/meshline-webgpu.md>), [meshstandardnodematerial](<https://devfeed.tech/tags/meshstandardnodematerial.md>), [nodematerial-three-js](<https://devfeed.tech/tags/nodematerial-three-js.md>), [parallel-transport-frames](<https://devfeed.tech/tags/parallel-transport-frames.md>), [pbr-materials-three-js](<https://devfeed.tech/tags/pbr-materials-three-js.md>), [playground](<https://devfeed.tech/tags/playground.md>), [procedural-curves](<https://devfeed.tech/tags/procedural-curves.md>), [procedural-geometry](<https://devfeed.tech/tags/procedural-geometry.md>), [procedural-tubes](<https://devfeed.tech/tags/procedural-tubes.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [three-js-shaders](<https://devfeed.tech/tags/three-js-shaders.md>), [three-js-tsl](<https://devfeed.tech/tags/three-js-tsl.md>), [three-js-webgpu](<https://devfeed.tech/tags/three-js-webgpu.md>), [tsl](<https://devfeed.tech/tags/tsl.md>), [tsl-shaders](<https://devfeed.tech/tags/tsl-shaders.md>), [tube-geometry](<https://devfeed.tech/tags/tube-geometry.md>), [tube-renderer](<https://devfeed.tech/tags/tube-renderer.md>), [webgpu](<https://devfeed.tech/tags/webgpu.md>), [webgpu-rendering](<https://devfeed.tech/tags/webgpu-rendering.md>), [webgpu-shaders](<https://devfeed.tech/tags/webgpu-shaders.md>)

### AI overview

A technical exploration of rendering lit GPU tubes with TSL and WebGPU. It contrasts screen-facing meshlines with tube geometry that can receive lighting, shading, and occlusion.

### Source excerpt

How a meshline habit turned into a tube renderer, and the three ways I got the maths wrong along the way.

## Building a Real-Time 3D Face Mask with MediaPipe, Threlte and Three.js

DevFeed: [Building a Real-Time 3D Face Mask with MediaPipe, Threlte and Three.js](<https://devfeed.tech/articles/building-a-real-time-3d-face-mask-with-mediapipe-threlte-and-three-js-4342.md>)

Original publisher: [Read original article](<https://tympanus.net/codrops/2026/09/06/building-a-real-time-3d-face-mask-with-mediapipe-threlte-and-three-js/>)

Author: Marek Jóźwiak

Published: 2026-09-06T13:09:52Z

Content type: tutorial

Language: en

Sources: [Codrops](<https://devfeed.tech/sources/codrops.md>)

Topics: [Three.js webcam](<https://devfeed.tech/topics/three-js-webcam.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [3d-face-mask](<https://devfeed.tech/tags/3d-face-mask.md>), [canonical-face-model](<https://devfeed.tech/tags/canonical-face-model.md>), [creative-coding](<https://devfeed.tech/tags/creative-coding.md>), [face-landmarks](<https://devfeed.tech/tags/face-landmarks.md>), [face-mesh](<https://devfeed.tech/tags/face-mesh.md>), [face-tracking](<https://devfeed.tech/tags/face-tracking.md>), [facial-landmarks](<https://devfeed.tech/tags/facial-landmarks.md>), [generative-graphics](<https://devfeed.tech/tags/generative-graphics.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [inference](<https://devfeed.tech/tags/inference.md>), [interactive-3d](<https://devfeed.tech/tags/interactive-3d.md>), [javascript-3d](<https://devfeed.tech/tags/javascript-3d.md>), [mediapipe](<https://devfeed.tech/tags/mediapipe.md>), [mediapipe-face-landmarker](<https://devfeed.tech/tags/mediapipe-face-landmarker.md>), [mesh](<https://devfeed.tech/tags/mesh.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [real-time-3d](<https://devfeed.tech/tags/real-time-3d.md>), [real-time-face-tracking](<https://devfeed.tech/tags/real-time-face-tracking.md>), [svelte](<https://devfeed.tech/tags/svelte.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [three-js-face-mask](<https://devfeed.tech/tags/three-js-face-mask.md>), [three-js-webcam](<https://devfeed.tech/tags/three-js-webcam.md>), [threlte](<https://devfeed.tech/tags/threlte.md>), [threlte-three-js](<https://devfeed.tech/tags/threlte-three-js.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [video](<https://devfeed.tech/tags/video.md>), [vision](<https://devfeed.tech/tags/vision.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [webcam](<https://devfeed.tech/tags/webcam.md>), [webcam-effects](<https://devfeed.tech/tags/webcam-effects.md>), [webcam-face-tracking](<https://devfeed.tech/tags/webcam-face-tracking.md>), [webgl](<https://devfeed.tech/tags/webgl.md>), [webgl-face-tracking](<https://devfeed.tech/tags/webgl-face-tracking.md>)

### AI overview

Tutorial on building a real-time textured 3D face mask by mapping MediaPipe face landmarks onto a Three.js mesh with Threlte.

### Source excerpt

Learn how MediaPipe's face landmarks, Google's canonical face model, and Three.js come together to create a real-time textured 3D face mask.

## Building an Infinite Loom: Unravelling Images into Threads with Three.js

DevFeed: [Building an Infinite Loom: Unravelling Images into Threads with Three.js](<https://devfeed.tech/articles/building-an-infinite-loom-unravelling-images-into-threads-with-three-js-4339.md>)

Original publisher: [Read original article](<https://tympanus.net/codrops/2026/09/05/building-an-infinite-loom-unravelling-images-into-threads-with-three-js/>)

Author: Clément Grellier

Published: 2026-09-05T12:50:25Z

Content type: tutorial

Language: en

Sources: [Codrops](<https://devfeed.tech/sources/codrops.md>)

Topics: [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [creative-coding](<https://devfeed.tech/tags/creative-coding.md>), [creative-web-experiments](<https://devfeed.tech/tags/creative-web-experiments.md>), [digital-art](<https://devfeed.tech/tags/digital-art.md>), [frontend-animation](<https://devfeed.tech/tags/frontend-animation.md>), [generative-art](<https://devfeed.tech/tags/generative-art.md>), [glsl-shaders](<https://devfeed.tech/tags/glsl-shaders.md>), [gsap](<https://devfeed.tech/tags/gsap.md>), [html](<https://devfeed.tech/tags/html.md>), [image-animation](<https://devfeed.tech/tags/image-animation.md>), [image-distortion](<https://devfeed.tech/tags/image-distortion.md>), [image-effects](<https://devfeed.tech/tags/image-effects.md>), [image-slider](<https://devfeed.tech/tags/image-slider.md>), [images](<https://devfeed.tech/tags/images.md>), [infinite-slider](<https://devfeed.tech/tags/infinite-slider.md>), [interactive-images](<https://devfeed.tech/tags/interactive-images.md>), [interactive-web-design](<https://devfeed.tech/tags/interactive-web-design.md>), [javascript-animation](<https://devfeed.tech/tags/javascript-animation.md>), [marquee](<https://devfeed.tech/tags/marquee.md>), [playground](<https://devfeed.tech/tags/playground.md>), [ribbon-animation](<https://devfeed.tech/tags/ribbon-animation.md>), [shader-effects](<https://devfeed.tech/tags/shader-effects.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [thread-animation](<https://devfeed.tech/tags/thread-animation.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [three-js-demo](<https://devfeed.tech/tags/three-js-demo.md>), [three-js-shaders](<https://devfeed.tech/tags/three-js-shaders.md>), [unraveling-effect](<https://devfeed.tech/tags/unraveling-effect.md>), [webgl](<https://devfeed.tech/tags/webgl.md>), [webgl-animation](<https://devfeed.tech/tags/webgl-animation.md>), [webgl-demo](<https://devfeed.tech/tags/webgl-demo.md>)

### AI overview

A Three.js tutorial for an infinite image strip whose cards are split into independently animated horizontal ribbons. It explains how separate geometry and shaders create weaving, unraveling, gaps, fading, and varied thread motion.

### Source excerpt

An experimental Three.js demo that transforms images into flowing ribbons, weaving them together and unraveling them as they move across the screen.

## Beyond the Luminance Ramp: A Shape-Aware ASCII Renderer in Three.js

DevFeed: [Beyond the Luminance Ramp: A Shape-Aware ASCII Renderer in Three.js](<https://devfeed.tech/articles/beyond-the-luminance-ramp-a-shape-aware-ascii-renderer-in-three-js-4337.md>)

Original publisher: [Read original article](<https://tympanus.net/codrops/2026/09/04/beyond-the-luminance-ramp-a-shape-aware-ascii-renderer-in-three-js/>)

Author: Edoardo Lunardi

Published: 2026-09-04T15:01:38Z

Content type: tutorial

Language: en

Sources: [Codrops](<https://devfeed.tech/sources/codrops.md>)

Topics: [shape-aware rendering](<https://devfeed.tech/topics/shape-aware-rendering.md>), [ASCII art shader](<https://devfeed.tech/topics/ascii-art-shader.md>), [Three.js shaders](<https://devfeed.tech/topics/three-js-shaders.md>), [Three.js custom shaders](<https://devfeed.tech/topics/three-js-custom-shaders.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [ascii-art-shader](<https://devfeed.tech/tags/ascii-art-shader.md>), [ascii-dithering](<https://devfeed.tech/tags/ascii-dithering.md>), [ascii-shader](<https://devfeed.tech/tags/ascii-shader.md>), [atlas](<https://devfeed.tech/tags/atlas.md>), [browser-based-ascii-renderer](<https://devfeed.tech/tags/browser-based-ascii-renderer.md>), [creative-coding-three-js](<https://devfeed.tech/tags/creative-coding-three-js.md>), [custom-element-webgl](<https://devfeed.tech/tags/custom-element-webgl.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [draggable-3d-logo](<https://devfeed.tech/tags/draggable-3d-logo.md>), [glsl-ascii-shader](<https://devfeed.tech/tags/glsl-ascii-shader.md>), [glyph-atlas-rendering](<https://devfeed.tech/tags/glyph-atlas-rendering.md>), [glyph-matching-algorithm](<https://devfeed.tech/tags/glyph-matching-algorithm.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [gpu-ascii-rendering](<https://devfeed.tech/tags/gpu-ascii-rendering.md>), [gpu-glyph-search](<https://devfeed.tech/tags/gpu-glyph-search.md>), [interactive-ascii-art](<https://devfeed.tech/tags/interactive-ascii-art.md>), [luminance-ramp-alternative](<https://devfeed.tech/tags/luminance-ramp-alternative.md>), [procedural-ascii-art](<https://devfeed.tech/tags/procedural-ascii-art.md>), [real-time-ascii-rendering](<https://devfeed.tech/tags/real-time-ascii-rendering.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [shape-aware-ascii-renderer](<https://devfeed.tech/tags/shape-aware-ascii-renderer.md>), [shape-aware-rendering](<https://devfeed.tech/tags/shape-aware-rendering.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [three-js-ascii-renderer](<https://devfeed.tech/tags/three-js-ascii-renderer.md>), [three-js-custom-shaders](<https://devfeed.tech/tags/three-js-custom-shaders.md>), [three-js-shader-tutorial](<https://devfeed.tech/tags/three-js-shader-tutorial.md>), [three-js-webgl](<https://devfeed.tech/tags/three-js-webgl.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [webgl](<https://devfeed.tech/tags/webgl.md>), [webgl-ascii-art](<https://devfeed.tech/tags/webgl-ascii-art.md>), [webgl-post-processing](<https://devfeed.tech/tags/webgl-post-processing.md>), [webgl-shader-tutorial](<https://devfeed.tech/tags/webgl-shader-tutorial.md>)

### AI overview

A Three.js ASCII renderer improves on luminance-only glyph selection by sampling each character cell's shape and matching it against printable glyphs on the GPU.

### Source excerpt

The Codrops mark, rebuilt as a draggable solid and printed in ASCII on the GPU, where every character cell searches 95 glyphs for its own.

## One-Shot Any Web App with Gradio's gr.HTML

DevFeed: [One-Shot Any Web App with Gradio's gr.HTML](<https://devfeed.tech/articles/one-shot-any-web-app-with-gradio-s-gr-html-7227.md>)

Original publisher: [Read original article](<https://huggingface.co/blog/gradio-html-one-shot-apps>)

Author: yuvraj sharma; hysts; Freddy Boulton

Published: 2026-02-18T00:00:00Z

Content type: article

Language: en

Sources: [Hugging Face - Blog](<https://devfeed.tech/sources/hugging-face-blog.md>)

Topics: [web applications](<https://devfeed.tech/topics/web-applications.md>), [modern web development](<https://devfeed.tech/topics/modern-web-development.md>), [HTML5 and CSS3 tricks](<https://devfeed.tech/topics/html5-and-css3-tricks.md>), [React UI animations](<https://devfeed.tech/topics/react-ui-animations.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [app](<https://devfeed.tech/tags/app.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [claude](<https://devfeed.tech/tags/claude.md>), [community](<https://devfeed.tech/tags/community.md>), [css](<https://devfeed.tech/tags/css.md>), [gradio](<https://devfeed.tech/tags/gradio.md>), [html](<https://devfeed.tech/tags/html.md>), [html5](<https://devfeed.tech/tags/html5.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [object-detection](<https://devfeed.tech/tags/object-detection.md>), [python](<https://devfeed.tech/tags/python.md>), [react](<https://devfeed.tech/tags/react.md>), [spaces](<https://devfeed.tech/tags/spaces.md>), [speech](<https://devfeed.tech/tags/speech.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [transcription](<https://devfeed.tech/tags/transcription.md>), [vibe-coding](<https://devfeed.tech/tags/vibe-coding.md>)

### AI overview

The article shows how Gradio's gr.HTML can create interactive, single-file Python web apps without a separate frontend build step. Examples include timers, a kanban board, visual ML result viewers, 3D controls, and live speech transcription.

### Source excerpt

We're on a journey to advance and democratize artificial intelligence through open source and open science.

## Behind the build: 2025's BFCM globe in a pinball machine 🌎🕹

DevFeed: [Behind the build: 2025's BFCM globe in a pinball machine 🌎🕹](<https://devfeed.tech/articles/behind-the-build-2025-s-bfcm-globe-in-a-pinball-machine-1276.md>)

Original publisher: [Read original article](<https://shopify.engineering/2025-bfcm-live-globe>)

Author: Shopify Engineering

Published: 2025-12-03T14:28:24Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [Shopify](<https://devfeed.tech/topics/shopify.md>), [Three.js](<https://devfeed.tech/topics/threejs.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [React](<https://devfeed.tech/topics/react.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Three.js shaders](<https://devfeed.tech/topics/three-js-shaders.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [3d](<https://devfeed.tech/tags/3d.md>), [browser](<https://devfeed.tech/tags/browser.md>), [js](<https://devfeed.tech/tags/js.md>), [performance](<https://devfeed.tech/tags/performance.md>), [physics](<https://devfeed.tech/tags/physics.md>), [pixel](<https://devfeed.tech/tags/pixel.md>), [react](<https://devfeed.tech/tags/react.md>), [react-three-fiber](<https://devfeed.tech/tags/react-three-fiber.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [server-sent-events](<https://devfeed.tech/tags/server-sent-events.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [stream](<https://devfeed.tech/tags/stream.md>), [three-js](<https://devfeed.tech/tags/three-js.md>)

### AI overview

Shopify describes its 2025 BFCM live globe, implemented as a browser-based pinball machine that visualizes merchant sales in real time. The three.js app uses react-three-fiber, server-sent events, a physics engine, VR support, and shaders for its display animations.

### Source excerpt

Real-time merchant sales rendered on our globe, Easter eggs galore, and a pinball machine because... why not?

## The Future of React Native Graphics: WebGPU, Skia, and Beyond

DevFeed: [The Future of React Native Graphics: WebGPU, Skia, and Beyond](<https://devfeed.tech/articles/the-future-of-react-native-graphics-webgpu-skia-and-beyond-1671.md>)

Original publisher: [Read original article](<https://shopify.engineering/webgpu-skia-web-graphics>)

Author: William Candillon

Published: 2025-06-20T15:37:49Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [React Native](<https://devfeed.tech/topics/react-native.md>), [webgpu](<https://devfeed.tech/topics/webgpu.md>), [Three.js](<https://devfeed.tech/topics/threejs.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [react](<https://devfeed.tech/tags/react.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [react-three-fiber](<https://devfeed.tech/tags/react-three-fiber.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [web](<https://devfeed.tech/tags/web.md>), [webgpu](<https://devfeed.tech/tags/webgpu.md>)

### AI overview

The article explains how WebGPU and Skia Graphite are expanding React Native graphics. It describes a unified backend architecture, closer alignment with the web ecosystem, general-purpose GPU computing, and support for Three.js and React Three Fiber, with examples running across iOS and Android.

### Source excerpt

WebGPU is revolutionizing React Native graphics by enabling a unified backend architecture, leveraging web ecosystem giants like Three.js for 3D experiences, and facilitating general-purpose GPU computing for tasks like machine learning. This has directly led to significant performance enhancements and expanded platform support for React Native Skia, with the upcoming Skia Graphite promising features like automatic threading and seamless 2D/3D composition.

## What's new in Astro - March 2025

DevFeed: [What's new in Astro - March 2025](<https://devfeed.tech/articles/what-s-new-in-astro-march-2025-3374.md>)

Original publisher: [Read original article](<https://astro.build/blog/whats-new-march-2025/>)

Author: Sarah Rainsberger

Published: 2025-03-31T00:00:00Z

Content type: news

Language: en

Sources: [The Astro Blog](<https://devfeed.tech/sources/the-astro-blog.md>)

Topics: [Astro](<https://devfeed.tech/topics/astro.md>), [releases](<https://devfeed.tech/topics/releases.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [GSAP](<https://devfeed.tech/topics/gsap.md>), [Three.js](<https://devfeed.tech/topics/threejs.md>), [GraphQL](<https://devfeed.tech/topics/graphql.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [astro](<https://devfeed.tech/tags/astro.md>), [github](<https://devfeed.tech/tags/github.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [gsap](<https://devfeed.tech/tags/gsap.md>), [releases](<https://devfeed.tech/tags/releases.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A March 2025 update from the Astro ecosystem highlights Astro 5.5, Astro reaching 50,000 GitHub stars, upcoming ViteConf participation, community learning resources, adopters, and recent projects built with Astro. It also features case studies covering accessibility testing, remote web development, and creative sites using technologies such as Three.js, GSAP, WebGPU, GraphQL, and Socket.IO.

### Source excerpt

March 2025 - Celebrating 50K GitHub stars, ViteConf, and more!

## How did we build 3D animations in mobile apps?

DevFeed: [How did we build 3D animations in mobile apps?](<https://devfeed.tech/articles/how-did-we-build-3d-animations-in-mobile-apps-15453.md>)

Original publisher: [Read original article](<https://medium.com/wise-engineering/how-did-we-build-3d-animations-in-mobile-apps-515c3de87b74?source=rss----f2565bbe9c46---4>)

Author: Yağız Gürgül

Published: 2025-01-29T16:59:35Z

Content type: tutorial

Language: en

Sources: [Wise Engineering - Medium](<https://devfeed.tech/sources/wise-engineering-medium.md>)

Topics: [Three.js](<https://devfeed.tech/topics/threejs.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [WebGL](<https://devfeed.tech/topics/webgl.md>), [HTML](<https://devfeed.tech/topics/html.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [animation](<https://devfeed.tech/tags/animation.md>), [gltf](<https://devfeed.tech/tags/gltf.md>), [html](<https://devfeed.tech/tags/html.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [optimisation](<https://devfeed.tech/tags/optimisation.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [webgl](<https://devfeed.tech/tags/webgl.md>)

### AI overview

Wise describes how it brought its 3D illustrations to life as interactive real-time animations in mobile apps. The team chose three.js scenes rendered in local HTML files inside mobile app web views, using WebGL for both iOS and Android, and then optimized large glTF assets for mobile delivery.

### Source excerpt

In March 2023, Wise launched its new brand -- as part of it, we introduced a collection of bold new 3D illustrations. While visually stunning, our brand team had bigger ambitions to bring them to life and elevate Wise further. This took us on a journey to understand the technical landscape and challenges around creating a seamless multi-platform solution for interactive 3D animations. interactive 3D intro on Wise iOS appThe new illustration set in Wise Our new illustration set took inspiration from icons, allowing us to communicate with a global audience. They're unique, bold and dynamic, even when still. They give us opportunities to share moments of delight with our customers and help our brand stand out from billboard to button. check out https://wise.design/ for more! What sets illustrations at Wise apart is that they're not static. Each one is paired with a crafted 3D model, featuring detailed UV maps, precise shading, and carefully designed lighting. This raises an exciting question: What if we rendered these illustrations dynamically in real time, making them interactive on mobile apps? Native or web view? To render illustrations in real time, we explored several technical solutions: Native Filament three.js We opted to create 3D scenes using three.js, one of the most popular open-source web projects. Some of the reasons behind this include: Managing native solutions for iOS and Android platforms would demand extra engineering effort. The support and documentation available for three.js surpass others. The web view solution delivers native-like performance by using WebGL on both platforms. As a result, we consistently achieve 60/120 FPS across all scenes on both devices. The plan was simple. Build simple HTML files that render 3D scenes and load these files locally in mobile apps 🚀 But we had a "huge" problem... The 3D models were specifically designed for static illustrations, resulting in a high polygon count that contributes to larger file sizes. For instance

## How We Built the BFCM 2023 Globe

DevFeed: [How We Built the BFCM 2023 Globe](<https://devfeed.tech/articles/how-we-built-the-bfcm-2023-globe-1430.md>)

Original publisher: [Read original article](<https://shopify.engineering/how-we-built-shopifys-bfcm-2023-globe>)

Author: Diego Macario Bello

Published: 2024-10-30T19:03:30Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [Three.js](<https://devfeed.tech/topics/threejs.md>), [Three.js custom shaders](<https://devfeed.tech/topics/three-js-custom-shaders.md>), [Three.js shaders](<https://devfeed.tech/topics/three-js-shaders.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [3D](<https://devfeed.tech/topics/3d.md>), [Shopify](<https://devfeed.tech/topics/shopify.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [performance](<https://devfeed.tech/tags/performance.md>), [react-three-fiber](<https://devfeed.tech/tags/react-three-fiber.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [render](<https://devfeed.tech/tags/render.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [vertex](<https://devfeed.tech/tags/vertex.md>), [visualization](<https://devfeed.tech/tags/visualization.md>)

### AI overview

This article explains how Shopify built and optimized an interactive real-time 3D globe for BFCM purchases. It covers arcs representing orders, Bézier curves, mesh construction, camera-facing vertex-shader techniques, UV-based texturing, and independently animated dissolve effects using Three.js and React-three-fiber.

### Source excerpt

Every year for Black Friday Cyber Monday (BFCM), we put together a real-time visualization of purchases made through Shopify-powered merchants worldwide. This year we're cooking up something big, and in anticipation we wanted to show you how we built the globe last year. Video of BFCM 2023 Globe Besides going for better visuals, a big focus was performance.

## Coding the stars - an interactive constellation with Three.js and React Three Fiber

DevFeed: [Coding the stars - an interactive constellation with Three.js and React Three Fiber](<https://devfeed.tech/articles/coding-the-stars-an-interactive-constellation-with-three-js-and-react-three-fiber-404.md>)

Original publisher: [Read original article](<https://supabase.com/blog/interactive-constellation-threejs-react-three-fiber>)

Author: Francesco Sansalvadore

Published: 2023-08-04T07:00:00Z

Content type: tutorial

Language: en

Sources: [Supabase Blog](<https://devfeed.tech/sources/supabase-blog.md>)

Topics: [R3F](<https://devfeed.tech/topics/r3f.md>), [Three.js](<https://devfeed.tech/topics/threejs.md>), [coding](<https://devfeed.tech/topics/coding.md>)

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [article](<https://devfeed.tech/tags/article.md>), [coding](<https://devfeed.tech/tags/coding.md>), [js](<https://devfeed.tech/tags/js.md>), [react-three-fiber](<https://devfeed.tech/tags/react-three-fiber.md>), [three-js](<https://devfeed.tech/tags/three-js.md>)

### AI overview

Supabase explains how it built an interactive constellation animation for Launch Week 8 using Three.js and React Three Fiber. The article introduces the approach, scene setup, core R3F concepts, dependencies, particle geometry, materials, blending, and lighting.

### Source excerpt

How we built a constellation of stars with Three.js and React Three Fiber.

## A World Rendered Beautifully: The Making of the BFCM 3D Data Visualization

DevFeed: [A World Rendered Beautifully: The Making of the BFCM 3D Data Visualization](<https://devfeed.tech/articles/a-world-rendered-beautifully-the-making-of-the-bfcm-3d-data-visualization-1305.md>)

Original publisher: [Read original article](<https://shopify.engineering/bfcm-3d-data-visualization>)

Author: Mikko Haapoja

Published: 2020-12-04T15:20:30Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [Data visualization](<https://devfeed.tech/topics/data-visualization.md>), [Three.js](<https://devfeed.tech/topics/threejs.md>), [3D](<https://devfeed.tech/topics/3d.md>), [PBR materials three.js](<https://devfeed.tech/topics/pbr-materials-three-js.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [data-visualization](<https://devfeed.tech/tags/data-visualization.md>), [js](<https://devfeed.tech/tags/js.md>), [lighting](<https://devfeed.tech/tags/lighting.md>), [models](<https://devfeed.tech/tags/models.md>), [performance](<https://devfeed.tech/tags/performance.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [visualization](<https://devfeed.tech/tags/visualization.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

Shopify engineers describe the making of the BFCM 3D data visualization and its Live View Globe. The article covers rapid prototyping with three.js, a layered architecture designed for encapsulation and code reuse, and the use of artist-created 3D models, physically based rendering, 32-bit EXR environment maps, and image-based lighting to achieve realistic performance and visuals.

### Source excerpt

By Mikko Haapoja and Stephan Leroux 2020 Black Friday Cyber Monday (BFCM) is over, and another BFCM Globe has shipped. We're extremely proud of the globe, it focused on realism, performance, and the impact our merchants have on the world. The Black Friday Cyber Monday Live Map We knew we had a tall task in front of us this year, building something that could represent orders from our one million merchants in just two months.

## How We Built Size.link

DevFeed: [How We Built Size.link](<https://devfeed.tech/articles/how-we-built-size-link-1431.md>)

Original publisher: [Read original article](<https://shopify.engineering/how-we-built-size-link>)

Author: Daniel Beauchamp

Published: 2020-07-13T17:00:00Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [Shopify](<https://devfeed.tech/topics/shopify.md>), [immersive web](<https://devfeed.tech/topics/immersive-web.md>), [3D](<https://devfeed.tech/topics/3d.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Quick Look](<https://devfeed.tech/topics/quicklook.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Three.js](<https://devfeed.tech/topics/threejs.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [android](<https://devfeed.tech/tags/android.md>), [browser](<https://devfeed.tech/tags/browser.md>), [covid](<https://devfeed.tech/tags/covid.md>), [free](<https://devfeed.tech/tags/free.md>), [hack](<https://devfeed.tech/tags/hack.md>), [ios](<https://devfeed.tech/tags/ios.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [smartphone](<https://devfeed.tech/tags/smartphone.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [web](<https://devfeed.tech/tags/web.md>), [webgl](<https://devfeed.tech/tags/webgl.md>)

### AI overview

Shopify explains how it built Size.link, a free web-based augmented reality tool that helps shoppers visualize a product's physical size using a smartphone camera. The solution uses platform-native AR viewers on iOS and Android to avoid requiring a dedicated app.

### Source excerpt

On July 20, 2020 we held ShipIt! Presents: AR/VR at Shopify. Daniel talked about what we're doing with AR/VR at Shopify. The video of the event is available. Size.link is a free tool built by Shopify's Augmented Reality (AR) team that lets anyone view the size of a product in the space around them using their smartphone camera. The tool came out of our April Hack Days focused on helping retailers impacted by Covid-19.

## Three.js extrude SVG path

DevFeed: [Three.js extrude SVG path](<https://devfeed.tech/articles/three-js-extrude-svg-path-37363.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/three-js-extrude-svg-path/>)

Author: Stanko

Published: 2019-12-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [Three.js](<https://devfeed.tech/topics/threejs.md>), [SVG](<https://devfeed.tech/topics/svg.md>), [3D](<https://devfeed.tech/topics/3d.md>), [Graphics](<https://devfeed.tech/topics/graphics.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [demo](<https://devfeed.tech/tags/demo.md>), [export](<https://devfeed.tech/tags/export.md>), [getting-started](<https://devfeed.tech/tags/getting-started.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [svg](<https://devfeed.tech/tags/svg.md>), [three-js](<https://devfeed.tech/tags/three-js.md>)

### AI overview

A tutorial on importing SVG data into Three.js with SVGLoader and extruding SVG paths into 3D geometry with ExtrudeGeometry. It explains setup details and common issues, including the inverted Y axis when mapping SVG coordinates into Three.js.

### Source excerpt

Update, September 2025 # Replaced path.toShapes(true) with SVGLoader.createShapes(path) because toShapes misses some of the SVG-specific logic implemented in the loader. Thanks to forresto who pointed it out. Also updated the demo to use a fresh version of ThreeJS. These days I'm playing with three.js again. I'm not an expert but I enjoy playing with graphics. Conveniently, a friend of mine sent me this Dribble, and I thought it would be a perfect exercise to try making it. I still haven't done it, but I did some exploration on how to built it. My plan was to draw the parallaxing layers as vectors, import it in three.js and use ExtrudeGeometry to give them a third dimension. To three.js ninjas this might be funny, but it took me some time. I haven't found well documented way, plus there are a couple of gotchas. And that is the reason I want to share this process with you. Before we start # I'll assume you have a basic understanding of three.js, and how to setup a scene. If you are just starting with it, I recommend going through their excellent Getting Started guide first. If you just want to see the end result, feel free to jump to the code or the live demo. SVGLoader # Three.js provides us with SVGLoader, but it is not the part of the main export. It is an addon, and can import it like this: import { SVGLoader } from "three/addons/loaders/SVGLoader.js"; Like it's name suggest this class loads SVG from an URL and parses it into three.js entries. If you already have SVG markup as a string, it is easy to parse it, but it is also easy to miss how to do it in the documentation. SVGLoader extends base Loader class, which contains .parse() method. That means we can do this: // Get SVG's markup const svgMarkup = document.querySelector('svg').outerHTML; const loader = new SVGLoader(); const svgData = loader.parse(svgMarkup); Now when we know how to get SVG data to three.js, let's try to extrude it. Extrude # You'll need a SVG, I used my logo: To get to the shapes we can ex

## JavaScript animation loop

DevFeed: [JavaScript animation loop](<https://devfeed.tech/articles/javascript-animation-loop-37297.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/javascript-animation-loop/>)

Author: Stanko

Published: 2018-03-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Three.js](<https://devfeed.tech/topics/threejs.md>), [Game Development](<https://devfeed.tech/topics/game-development.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [game-development](<https://devfeed.tech/tags/game-development.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [javascript-animation](<https://devfeed.tech/tags/javascript-animation.md>), [three-js](<https://devfeed.tech/tags/three-js.md>), [timing](<https://devfeed.tech/tags/timing.md>)

### AI overview

This tutorial explains why frame-count-based JavaScript animations can run at the wrong speed when requestAnimationFrame is delayed or throttled. It shows how to use elapsed, or delta, time to maintain movement at the intended rate, using a three.js game-animation context.

### Source excerpt

I've been really busy lately, doing both work and pet projects. At the moment I'm playing with three.js trying to clone old DOS game to JavaScript. Games (and animations in general) need animation loop in which we are going to update the scene and re-render it. Example animations are simplified and they just move a box 60px per second. But the concepts applied are universal and can be used for more complicated real life cases. Timing problem # We all know that animating should be done using requestAnimationFrame. My first attempt ended up being naive and it looked something like this: const box = document.querySelector('.Box'); // Initial position let position = 0; function animate() { // Updating scene logic // moving box for one pixel per frame // "requestAnimationFrame" is optimized for 60fps // so we should get smooth movement of 60px per second position += 1; // Render updated scene box.style.transform = `translateX(${ position }px)`; // Start next frame requestAnimationFrame(animate); } // Start animation animate(); At the first glance this looks fine. But it has one major problem. requestAnimationFrame is usually triggered 60 times per second, but often this is not the case. For example, the most browsers will pause it if tab goes to background. Busy (or low-end) CPU will also slow it down. Imagine for some reason that is does get triggered only 10 times per second.In the example bellow I faked it by using 100ms setTimeout. In that case our box will be moved by 1px every 100ms, ending up on 10px per second. This means our animation speed is relative to how many times requestAnimationFrame is called per second. That is the big timing problem we are trying to solve. Our animation should calculate the right position based on time passed, rather then just incrementing it by 1px each update. Delta time to the rescue # Now we know what to do - adjust the position based on time passed between two updates. Every time we are doing the update, we are going to calculate