Video wird geladen...

Video konnte nicht geladen werden

Zur Startseite

For our key easter egg, we stream the main Three.js canvas to a popup via WebRTC at 60fps, no duplicate scene rendering. BroadcastChannel syncs position/size/scroll between windows, creating a transparent window effect with real-time event messaging for interactions.

12,362 Aufrufe • vor 10 Monaten •via X (Twitter)

19 Kommentare

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

.@rive_app optimization was critical due to 20+ animations on top of a WebGL scene. For Rive on hover, we used the first frame as a poster, then played the Rive on hover. For linear animations, a custom Rive-to-video exporter ran them off the main thread.

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

We tried to keep our shaders optimized: for instance, we compute most of the noises we use as DataTextures on the first frame and we add a bit of animation on top of it with simple cos/sin functions. We also optimized our “sobel effect” by using fwidth, saving 3 texture lookups!

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

.@theatre_js changed our animation workflow completely. Designers get After Effects-like control over the website, able to control absolutely everything. No code changes for timing adjustments, animation iteration went from hours to minutes!

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

We heavily optimized our GLTF files to fit any GPU memory. We built a custom Electron app to reduce polycount & convert textures to GPU-friendly Basis/ETC1S. Compressed textures used ~10-100x less memory & uploaded instantly, preventing decoding lags while scrolling!

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

For more dimensional paintings we leveraged @tripoai to generate a base mesh silhouette. From there we painted textures onto the mesh with Substance painter and did custom modifications to the model in Blender (including rigging and animation). We then exported the models as GLTF

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

Models were created using two different methods. Method one involved generating a depth map from the static painting and using it to displace a densely subdivided plane to create depth and preserve details.

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

Let's talk about WebGL! No surprises here, we’re using @threejs (and R3F) under the hood. Each painting is a unique WebGL scene as a R3F Portal, each with custom shaders, postprocessing, animations…

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

We just launched Shopify Editions Winter 2026 🎨 Here's the technical breakdown of how we built it 🧵

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

The popup has its own lightweight Three.js scene where the video feed is textured onto a cube matching the main window's dimensions, then composited with custom shaders, allowing us to do the graffiti black-light effect.

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

We created a 4-tier quality system: - High: Full 3D, post-processing - Medium, Low: Simplified textures & geometry - Fallback: Static images replace 3D - WebGL Fallback: Pure CSS Auto-detection based on the user's GPU capacity, with real-time downgrade based on current FPS.

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

The Skills Cloud component is neat: we actually get live Sidekick usage, sent via SSE! On the app side, we optimized every React render loop, using Zustand when needed.

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

Our intro sequence needs to load fast. CSS + SVG transitions/animations do the lifting here, making use of the pathLength attribute to draw our DaVinci lines and transform-box to animate our title text.

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

The little details that matter: you may have noticed the roman numerals in various places. A custom CSS counter means that instead of decimal lists, we can use Roman Numerals!

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

Last but not least… The whole Editions Winter 2026 experience is a real, live Shopify store! We leveraged: metaobjects & metafields, products/collections, markets, translate & adapt, shopify CDN, and custom apps with Admin API integrations.

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

Global storefronts? Check. Our merch drop utilized Managed Markets for seamless global shipping and Shopify Fulfillment Network to sync data with the 3PL provider.

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

A look at our final loading size breakdown: - Mobile: 2.4MB (target: 2MB) - Desktop: 4.5MB Route splitting, dynamic imports, aggressive tree shaking... Every PR was scrutinized for size impact!

Profilbild von Arnaud Tanielian
Arnaud Tanielianvor 10 Monaten

We're so proud of this Editions, hope you enjoyed it as much as us 💚 The dev team: @mcneillie84276 @JoshSanger_eth @kylewayneluck @jh3yy @athlndr @celsostories @ArthurCloche @damienmortini @krystalcampioni

Profilbild von LokLok (Wong Lok 黃樂)
LokLok (Wong Lok 黃樂)vor 10 Monaten

i love the XRAY effect !! <3 sessionStorage is useful for cross window data storage as well!

Profilbild von Romain Avalle
Romain Avallevor 9 Monaten

😍

Ähnliche Videos

VideoRF: Rendering Dynamic Radiance Fields as 2D Feature Video Streams paper page: Neural Radiance Fields (NeRFs) excel in photorealistically rendering static scenes. However, rendering dynamic, long-duration radiance fields on ubiquitous devices remains challenging, due to data storage and computational constraints. In this paper, we introduce VideoRF, the first approach to enable real-time streaming and rendering of dynamic radiance fields on mobile platforms. At the core is a serialized 2D feature image stream representing the 4D radiance field all in one. We introduce a tailored training scheme directly applied to this 2D domain to impose the temporal and spatial redundancy of the feature image stream. By leveraging the redundancy, we show that the feature image stream can be efficiently compressed by 2D video codecs, which allows us to exploit video hardware accelerators to achieve real-time decoding. On the other hand, based on the feature image stream, we propose a novel rendering pipeline for VideoRF, which has specialized space mappings to query radiance properties efficiently. Paired with a deferred shading model, VideoRF has the capability of real-time rendering on mobile devices thanks to its efficiency. We have developed a real-time interactive player that enables online streaming and rendering of dynamic scenes, offering a seamless and immersive free-viewpoint experience across a range of devices, from desktops to mobile phones.

AK

38,686 Aufrufe • vor 2 Jahren