Three.js Lab

The experiment library

Find your next
experiment.

Free interactive Three.js demos, from your first scene to advanced shaders and WebGPU. Change a control, see the result, then explore the code behind it.

350+Free demos
No signup. Just explore.

This index was opened as a local file. Start the Vite server, then use the redirected project links or open localhost:5173/labs.html.

Your first four experiments.

New to Three.js? Go from your first scene to a moving character. For more guidance, follow the beginner guide with code exercises.

Work with 3D models

Select objects, load glTF assets, and compare model compression.

Go deeper: materials, animation, and shaders

Focused experiments for developers ready to explore rendering internals.

Shader

Procedural TSL surface with a GLSL fallback.

/shader.html
Random UV shader contract

Patch a standard material with virtual texture offsets, noise, and dissolve uniforms.

/random-uv-contract.html
MaterialX loader

Parse a standard_surface document into a WebGPU node material.

/materialx.html
MaterialX noise

Procedural noise nodes drive color, roughness, and relief.

/materialx-noise.html
MaterialX texture graph

Local tiledimage maps feed albedo and roughness inputs.

/materialx-texture.html
MaterialX standard surface

Recipe matrix for physical standard_surface inputs.

/standard-surface.html
MaterialX channel map

Explicitly unpack PBR channels and tangent-space normals.

/channel-map.html
Texture policy

Compare MaterialX graph inputs with native sampler controls.

/texture-policy.html
Explicit texture sampling

Compare TextureNode bias, gradients, and channel gathers.

/texture-sampling.html
KTX2 lifecycle

Decode universal payloads and inspect runtime texture classes.

/ktx2.html
Texture payloads

Compare array layers, volume slices, and cube faces.

/texture-payloads.html
Texture targets

Turn compressed KTX2 data into array/cube textures and layered render targets.

/texture-targets.html
Readback + layered depth

Read MRT color/normal slices back from a layered target with array depth.

/readback-depth.html
Depth texture + MSAA

Sample a real depth attachment and compare multisample resolve settings.

/depth-msaa.html
Attachment budget

Estimate and allocate MRT/depth/MSAA memory under live backend limits.

/attachment-budget.html
Depth readback

Encode sampled depth, copy it asynchronously, and compare GPU versus CPU previews.

/depth-readback.html
Framebuffer texture contract

Copy a live framebuffer into a screen-space texture overlay.

/webgl-framebuffer-texture-contract.html
Float pixel readback

Render known float values, display the target, and read one RGBA pixel back.

/webgl-read-float-buffer-contract.html
Depth conventions

Compare standard, reversed, and logarithmic renderer depth configuration.

/depth-conventions.html
WebGPU logarithmic depth

Compare native WebGPU logarithmic depth with an explicit WebGL2 renderer-option reference.

/webgpu-log-depth-contract.html
Skinning and morphs

Inspect bones, clips, facial weights, and glTF deformation.

/skinning.html
Animation groups

Compare shared animation state with independent mixers.

/animation-groups.html
Animation blending

Compare crossfade, weighted, and additive motion layers.

/animation-blending.html
Animation state system

Build state transitions, masked layers, and a managed clip cache.

/animation-state-machine.html
Animation events + intent

Turn mixer events and action timing into an intent-gated locomotion controller.

/animation-events.html
Root motion

Separate visual pose, authored movement, and an accumulated extracted motion channel.

/root-motion.html
Locomotion phase

Scrub normalized cycle phase, infer foot contact, and phase-lock Walk + Run.

/locomotion-phase.html
Facing + authored events

Bound orientation turns to input and turn a normalized schedule into footstep events.

/facing-events.html
Crowd batching + metadata

Compare shared skinning, independent clocks, and InstancedMesh proxies.

/crowd-batching.html
Material ownership

Compare shared, cloned, and unique material/texture lifecycles.

/material-ownership.html
Node compile budget

Compare TSL graph ownership and compileAsync prebuild versus first-render compilation.

/node-compile-budget.html
Selective lights

Compare material-owned LightsNode lists with scene-wide and DynamicLighting contracts.

/selective-lights.html
Shadow contract

Compare material-owned shadow casting, receiving, and sample-position policies.

/shadow-contract.html
Transmitted shadows

Carry RGB and alpha payloads through NodeMaterial shadow maps.

/transmitted-shadow.html
Shadow node cache

Register a custom point-light node and observe point-shadow ownership.

/shadow-node-cache.html
Shadow filter node

Wrap native Basic, PCF, and VSM filtering with live node uniforms.

/shadow-filter.html
Shadow target node

Own a custom depth target and make shadow resource lifecycle visible.

/shadow-target.html
Shadow map viewer

Inspect the native shadow depth texture through the official HUD helper.

/shadow-viewer.html
Progressive lightmap

Accumulate jittered lighting into packed UV1 ping-pong buffers.

/progressive-lightmap.html
PCSS shadows

Adapt blocker search, penumbra estimation, and Poisson filtering to the current raw-depth shader branch.

/pcss-shadow.html
TSL shadow filter

Move blocker search and receiver filtering into a backend-portable NodeMaterial graph.

/tsl-shadow-filter.html
Shadow budget

Measure native filter, map-resolution, caster-count, and update-policy tradeoffs.

/shadow-budget.html
Shadow topology

Compare directional, point-light, and cascaded shadow-view budgets.

/shadow-topology.html
Shadow timing

Measure timestamped GPU work against CPU submission and cached shadow updates.

/shadow-timing.html
Shadow pass inspector

Inspect nested CSM and point-light shadow renders with per-pass timing.

/shadow-pass-inspector.html
Pipeline inspector

Compare PassNode graphs with EffectComposer's ordered ping-pong chain.

/pipeline-inspector.html
Attachment graph

Name, preview, and asynchronously read back MRT color attachments.

/attachment-graph.html
MSAA attachment resolve

Compare multisampled color resolves with texture-indexed readback.

/msaa-attachment.html
Attachment format matrix

Compare target precision, color space, and typed-array readback.

/attachment-format.html
Cube face target topology

Update six cube views and read individual faces by index.

/cube-face.html
Environment filtering + PMREM

Compare raw cube sampling with roughness-aware prefiltered radiance.

/environment-filter.html
Environment inputs + color space

Trace typed-array payloads from equirectangular pixels into PMREM.

/environment-inputs.html
HDR + EXR environment loaders

Load, prefilter, rotate, and release real environment assets.

/environment-loaders.html
Environment lighting contracts

Compare PMREM, envMap, GroundedSkybox, and diffuse light probes.

/environment-lighting.html
Sky synthesis + environment ownership

Tune Sky/SkyMesh, capture a sun-safe cubemap, and bake PMREM lighting.

/sky-synthesis.html
Node environment ownership

Compare Scene.environment, material.envNode, and classic envMap PMREM paths.

/node-environment.html
Node surface graph

Author a shared TSL surface through explicit material slots.

/node-surface-graph.html
Node pipeline boundaries

Compare context overrides, native output edits, and full fragment replacement.

/node-pipeline-boundaries.html
Node lighting models

Compare physical and toon lighting models with selective light lists.

/node-lighting-models.html
Custom lighting model

Replace the lighting rule with a custom LightingModel and context.

/node-custom-lighting.html
Custom indirect lighting

Compare direct-only and indirect-aware lighting models with AO context.

/node-custom-indirect.html
Custom IBL contexts

Trace environment radiance, probe irradiance, and baked lightmaps through custom lighting.

/node-custom-ibl.html
IBL source fidelity

Compare real files, scene PMREM, and CubeCamera captures through one lighting context.

/ibl-fidelity.html
Spatial probe field

Interpolate eight captured SH probes through one cross-backend LightProbe.

/spatial-probes.html
Light probe atlas

Inspect native LightProbeGrid packing, helper topology, rebakes, and GPU ownership.

/light-probe-atlas.html
Overlapping probe fields

Blend captured SH fields with explicit distance falloff and refresh ownership.

/overlapping-probes.html
XR light estimation

Trace fallback, estimated, environment, and session-end ownership.

/xr-light-estimation.html
Recursive reflection

Compose ReflectorNode, instanced TSL cubes, and a postprocess pipeline.

/recursive-reflection.html
Reflector depth budget

Use reflected depth to attenuate distant floor reflections.

/reflector-depth.html
Reflector quality budget

Choose reflection quality from target, MSAA, bounce, and budget costs.

/reflector-quality.html
Adaptive quality governor

Use sustained renderer timing to move through a reversible quality ladder.

/adaptive-quality.html
Adaptive stress and recovery

Inject controlled actor load and observe quality downshift and recovery.

/adaptive-stress.html
Backend quality matrix

Run fixed load and quality rows, then compare WebGPU with the forced WebGL2 companion.

/quality-matrix.html
DOM and SVG overlays

Combine CSS2D labels, CSS3D cards/sprites, and a vector SVG companion around one scene.

/dom-overlays.html
SVG assets + interactive groups

Load local SVG paths, build fill/stroke meshes, and share pointer/XR selection events.

/svg-interactive.html
SVG feature coverage

Compare SVGLoader meshes, a browser-raster Texture, and SVGRenderer's simple vector DOM boundary.

/svg-feature-coverage.html
TSL linked particles

Study storage-buffer compute, nearest-neighbor links, and a bloom render pipeline.

/tsl-linked-particles.html
Spatial neighbors + BitonicSort

Sort packed cell keys and compare GPU candidate links with a CPU uniform-grid proxy.

/spatial-neighbors.html
Atomic spatial hash

Accumulate particle occupancy into atomic GPU cell counters and compare a CPU histogram.

/atomic-spatial-hash.html
Atomic neighbor list

Atomically append particle IDs into bounded buckets, then scan staged nearest candidates.

/atomic-neighbor-list.html
Compact + indirect dispatch

Compact active particle IDs and feed GPU-generated workgroup counts into the next kernel.

/compact-indirect-dispatch.html
DOM texture + SVG feature boundary

Compare live HTMLTexture, VR-ready HTMLMesh snapshots, and SVGLoader feature coverage.

/htmlmesh-interaction.html
HTMLTexture paint compatibility

Compare direct DOM paint invalidation, HTMLMesh snapshots, and a CanvasTexture fallback.

/htmltexture-compatibility.html
Animation retargeting

Map a source clip onto a renamed target skeleton.

/retargeting.html
Heterogeneous rig retargeting

Drive a 49-bone Soldier with Michelle's 65-bone dance.

/heterogeneous-retargeting.html
WebGPU sculpt contract

Exercise native WebGPU sculpting, cursor feedback, and GLB export with a WebGL2 reference lane.

/webgpu-sculpt-contract.html
WebGL renderer pathtracer contract

Run the actual progressive WebGLPathTracer with BVH generation, HDR environment lighting, capture, and teardown.

/webgl-renderer-pathtracer-contract.html
GLTF GPGPU birds

Bake Flamingo or Parrot morph frames into a texture and steer a 64×64 GPU flock.

/webgl-gpgpu-birds-gltf-contract.html
Ferrari material contract

Load the official car, replace named paint/detail/glass parts, reflect a Venice HDR, and release the scene.

/webgl-materials-car-contract.html
Arbitrary bone-name resolver

Compare names dictionaries with getBoneName callbacks.

/arbitrary-retargeting.html
Retarget diagnostics

Validate missing roles and tune documented motion policies.

/retarget-diagnostics.html
Retarget orientation + IK

Correct rest-pose orientation, then solve a hand target.

/retarget-orientation-ik.html

Scene, geometry, and interaction

Geometry forms

Curves, tubes, holes, extrusion, and point clouds.

/geometry-forms.html
Geometry toolkit

Connected curves, parametric surfaces, and fat lines.

/geometry-toolkit.html
Scene composition

LOD, sprites, fog, layers, and scene helpers.

/scene-composition.html
Instanced sprites

Drive thousands of camera-facing sprites from TSL instance data.

/instance-sprites.html
Instance path

Animate instanced geometry around sampled mathematical paths.

/instance-path.html
CSS3D constellation

Compose WebGL geometry, CSS3D cards, and CSS2D labels with one camera.

/css3d-constellation.html
CSS3D molecules

Compose atom sprites and bond objects from a Three.js DOM scene graph.

/css3d-molecules-contract.html
CSS3D orthographic

Frame DOM planes with orthographic projection, zoom, and view offsets.

/css3d-orthographic-contract.html
CSS3D periodic table

Transition metadata cards between table, sphere, helix, and grid layouts.

/css3d-periodic-table-contract.html
CSS3D sandbox

Mirror DOM transforms in WebGL wireframes with shared camera framing.

/css3d-sandbox-contract.html
WebGL wireframe material

Compare native wireframe edges with a barycentric thickness shader.

/webgl-materials-wireframe-contract.html
WebGL point sprites

Layer textured particles with additive blending and texture policy controls.

/webgl-points-sprites-contract.html
Multiple elements

Route independent card and text-wave views through one shared WebGL canvas.

/webgl-multiple-elements-contract.html
Batching

Meshes, InstancedMesh, BatchedMesh, culling, and picking.

/batching.html
LOD field

Distance-based detail selection with shared geometry.

/lod.html
Instance uniform

Per-object shader state through one shared node material.

/instance-uniform.html
Atlas views

Sprite-sheet tiles and multi-camera compositions.

/atlas-views.html
Array camera index

Three sub-cameras with indexed visibility and picking.

/array-camera-index.html
WebGPU camera contract

Switch perspective and orthographic cameras in one rig with an active/overview split view.

/webgpu-camera-contract.html
External atlas worker

SVG atlas rendering with worker-owned indexing.

/external-atlas-worker.html
Spatial interaction

AR hit-test and controller interaction paths.

/spatial.html
World sensing

Plane detection, depth sensing, and desktop simulation.

/world-sensing.html
XR

VR button, controller models, and desktop fallback.

/xr.html
XR selection ownership

Trace target-ray selection, controller attach/detach, and desktop synthetic event parity.

/xr-selection.html
XR haptics

Map controller impacts to native-or-fallback haptic pulse contracts.

/xr-haptics.html
XR hand profiles

Compare boxes, spheres, and mesh hand-model profiles over tracked joints.

/xr-hand-profiles.html
WebXR VR hand press button

Trace fingertip intersection, button penetration, recovery, actions, and the required hand-tracking seam.

/webxr-vr-handinput-pressbutton-contract.html
WebXR VR hand cubes

Trace pinch spawn, right-hand attachment/release, and same-object two-hand scaling.

/webxr-vr-handinput-cubes-contract.html
WebXR VR hand input

Inspect the pinned two-hand, controller-grip, pointer-ray, and hand-tracking setup.

/webxr-vr-handinput-contract.html
WebXR AR hit test

Trace viewer-space hit-test setup, matrix reticle updates, and select-driven cylinder placement.

/webxr-ar-hittest-contract.html
WebXR AR camera access

Trace camera-bearing viewer views, camera-texture binding, and the explicit desktop adapter.

/webxr-ar-camera-access-contract.html
WebXR AR plane detection

Trace required plane detection, native XRPlanes ownership, and deterministic desktop surface lifecycle.

/webxr-ar-plane-detection-contract.html
XR paint

Paint dynamic TubePainter strokes from synthetic controller paths.

/xr-paint.html
XR controls transform

Forward synthetic XR controller gestures into TransformControls.

/xr-controls-transform.html
XR dragging custom depth

Drag shader objects through a procedural depth-array occlusion path.

/xr-dragging-custom-depth.html
XR marching cubes

Grow an organic implicit surface from controller field points.

/xr-marchingcubes.html
Physics addon matrix

Compare Rapier, Jolt, and Ammo through one indexed-instancing contract.

/physics-compare.html
Rapier feature surface

Trace heightfields, explicit velocity, impulses, and body removal/re-add.

/physics-rapier-features.html
Rapier joints

Inspect typed constraints, motors, limits, contacts, and detach/re-attach lifecycle.

/physics-rapier-joints.html
Rapier character controller

Query collision-aware capsule movement through stairs, slopes, and dynamic crates.

/physics-rapier-character-controller.html
Rapier terrain heightfield

Keep a visible sampled grid and fixed Rapier heightfield aligned through rebuilds.

/physics-rapier-terrain.html
Rapier instancing

Drive 128 indexed rigid bodies through two shared InstancedMesh buffers.

/physics-rapier-instancing.html
Rapier batch scaling

Measure shared instance buffers and indexed body batches from 128 to 800.

/physics-rapier-batch.html
Worker-owned Rapier

Move the Rapier world into a worker and measure transform handoff.

/physics-rapier-worker.html
Rapier contact policy matrix

Separate collision filtering, solver filtering, hooks, events, and contact graphs.

/physics-rapier-contact-policy.html
Clipping + stencil caps

Cut a solid while separating material, renderer, shadow, and stencil policies.

/clipping-stencil.html
Portal render targets

Capture a scene through paired surfaces with an off-axis portal camera.

/portal.html
Portal clipping + oblique frusta

Compare threshold clipping policies and bounded recursive portal capture.

/portal-clipping.html
Stencil portal aperture

Mask rectangular portal textures through an ellipse with the raw stencil contract.

/portal-aperture.html
Postprocessing mask chain

Confine ordered ShaderPass effects to a stencil-defined scene region.

/postprocessing-mask.html
Node-composed aperture

Express regional postprocessing as a WebGPU TSL graph with an honest WebGL2 fallback.

/postprocessing-node-mask.html
Temporal afterimage

Make current and previous PassNode frames visible through an official afterimage graph.

/postprocessing-afterimage.html
Named MRT history

Read current and previous beauty, normal, and velocity attachments from one WebGPU PassNode.

/postprocessing-mrt-history.html
Pixelation pass

Downsize a WebGPU pass and keep depth/normal edges readable.

/postprocessing-pixelation.html
Retro pass

Snap vertices, reduce resolution, and compose a PS1-style TSL pipeline.

/postprocessing-retro.html
Chromatic aberration

Sample red, green, and blue through separate radial UV offsets.

/postprocessing-chromatic-aberration.html
Anamorphic bloom

Replace BloomNode’s high pass with a cinematic horizontal flare.

/postprocessing-anamorphic.html
Selective bloom

Route a named MRT mask into BloomNode for object-level glow.

/postprocessing-bloom-selective.html
Emissive bloom

Feed a material’s emissive property into a bandwidth-aware MRT bloom.

/postprocessing-bloom-emissive.html
Physical transmission

Inspect refraction, volume thickness, attenuation, and node-backed PBR inputs.

/material-transmission.html
Backdrop material filters

Filter already-rendered content through a transparent NodeMaterial surface.

/backdrop-material.html
Viewport mipmaps

Copy the current framebuffer, generate mips, and pin a transparent sample level.

/viewport-mipmaps.html
Viewport depth

Read the previous depth attachment as raw, linear, or color-tinted data.

/viewport-depth.html
Screen-space refraction

Bend the previous viewport through a normal-driven lens with safe UVs.

/refraction-surface.html
WebGL Refractor

Render an offscreen chamber view through the native Refractor addon and DuDv shader.

/webgl-refraction-contract.html
WebGL clip-cull distance

Move a vertex-stage clip plane through the installed WEBGL_clip_cull_distance extension.

/webgl-clipculldistance-contract.html
Raycaster helper

Visualize bounded ray origins, near/far segments, and capsule hit points.

/misc-raycaster-helper-contract.html
Depth-aware backdrop water

Combine linear depth, shifted depth probes, and viewport refraction in one water graph.

/backdrop-water.html
Roughness-filtered reflection

Map material roughness to bicubic mip sampling from one ReflectorNode capture.

/reflection-roughness.html
Blurred reflection

Depth-mask a ReflectorNode and blur its texture through randomized TSL taps.

/reflection-blurred.html
Clearcoat materials

Compare a thin reflective coat, coat roughness, and independent coat normals.

/clearcoat.html
WebGPU clearcoat contract

Trace the native node-material coating lobe and its explicit WebGL2 reference.

/webgpu-clearcoat-contract.html
Physical lights

Translate lumens, lux, distance, and tone mapping into a measurable lighting stage.

/physical-lights.html
IES spotlights

Compare angular fixture profiles against a direct spotlight fallback.

/ies-spotlights.html
Rectangular area lights

Shape soft window-like sources with emitter size, power, and LTC integration.

/rect-area-lights.html
SunLight compatibility

Probe current-only SunLight APIs against a labeled directional-light shadow reference.

/sunlight-compatibility-contract.html
WebGL SunLight contract

Trace official sunlight direction, sky, PMREM, shadow, and instanced-avenue ownership through the installed fallback.

/webgl-sunlight-contract.html
Volumetric rect area lights

Make rectangular sources visible through a layered volume pass and denoised composition.

/volumetric-rect-area.html
Environment node adjustments

Mix filtered panoramas and apply procedural/color controls through one environment graph.

/environment-adjustments.html
WebGPU cubemap mix

Blend two deterministic six-face CubeTextures through a native TSL reflection graph.

/webgpu-cubemap-mix-contract.html
3D LUT postprocessing

Apply typed color-grading volumes through a RenderPipeline output node.

/postprocessing-3dlut.html
WebGL 3D LUT pass

Grade a final WebGL2 image through EffectComposer and native LUTPass.

/webgl-postprocessing-3dlut.html
RGB Halftone pass

Turn native WebGL2 composer output into a resolution-aware color pattern.

/halftone-contract.html
SSAO pass

Inspect native depth/normal targets and screen-space ambient occlusion output.

/ssao-contract.html
Deferred rendering

Capture opaque geometry into a G-buffer, reconstruct lighting, then composite transparency.

/deferred-rendering.html
ShaderToy transpiler

Decode mainImage GLSL into live TSL nodes and blend it on a full-screen surface.

/shadertoy-transpiler.html
GPU audio compute

Transform a waveform in a TSL storage buffer, read it back, visualize it, and play the result.

/compute-audio.html
Angular material slicing

Drive NodeMaterial masks and caster shadows from a local-space angular interval.

/angular-slicing.html
Instanced points

Compute per-instance point widths in storage, then render them through one camera-facing Sprite.

/instanced-points.html
Earth materials

Compose day/night maps, world-space sun response, bump detail, roughness, and a Fresnel atmosphere.

/earth.html
Procedural wood

Turn layered TSL noise, rings, grain colors, and physical clearcoat into a reusable material.

/wood.html
TSL galaxy

Distribute and animate thousands of camera-facing stars through range, trigonometry, time, and color nodes.

/galaxy.html
TSL VFX flames

Shape two animated flame sprites through billboarding, noise textures, UV deformation, gradient lookup, and alpha.

/flames.html
TSL VFX tornado

Twist a procedural cylinder through radial UVs, skewed noise, position deformation, and bloom.

/tornado.html
TSL compute attractors

Let three attractors write storage-backed particle positions and velocities into one instanced sprite field.

/attractors.html
WebGPU soft particles

Fade smoke sprites against opaque geometry through viewport depth and a contrast-shaped intersection curve.

/soft-particles.html
TSL godrays

Raymarch point-light shadows, preserve depth edges through bilateral blur, and composite the result.

/godrays.html
TSL outline pass

Track selected objects through depth-aware visible and hidden edge masks.

/outline.html
Volumetric fog

Ray-march a procedural 3D cloud field and preserve depth edges while upsampling.

/fog.html
TSL lensflare

Extract emissive MRT energy, bloom it, and orbit procedural ghost flares through the image.

/lensflare.html
Displacement material

Turn local height, normal, AO, and environment maps into a measurable PBR surface.

/displacement.html
Instance uniform

Update one shared material with object-scoped color state before every draw.

/instance-uniform.html
Retroreflection

Make a front-facing physical-lighting response visible on a generated reflective band.

/retroreflection.html
Compute birds

Run storage-buffer flocking kernels before an instanced vertex graph.

/compute-birds.html
Skinning points

Turn an animated glTF rig into a speed-colored point field.

/skinning-points.html
Face morph targets

Drive a compressed glTF face with inspectable blend-shape weights.

/morph-face.html
Shape geometry gallery

Turn native paths and holes into filled, extruded, line, and point representations.

/shapes-contract.html
Extruded shape paths

Travel native profiles along open and closed spline paths, then inspect step and bevel boundaries.

/extrude-shapes-contract.html
Spline extrusion

Turn native curve families into tubes and optionally fly a camera along their tangent frames.

/extrude-splines-contract.html
Catmull-Rom spline editor

Edit control points while comparing interpolation modes and in-place curve buffers.

/spline-editor-contract.html
Text shapes

Turn a local typeface fixture into filled and outlined Three.js geometry.

/text-shapes-contract.html
Text stroke

Keep font faces filled while turning their outlines into native stroke meshes.

/text-stroke-contract.html
Text geometry

Construct procedural 3D letters with depth, bevel, materials, and a mirrored companion.

/text-geometry-contract.html
Minecraft geometry

Generate a culling-aware voxel landscape from merged planes and a local atlas.

/minecraft-contract.html
Terrain heightfield

Deform one subdivided plane, bake its shading, and navigate it through fog.

/terrain-geometry-contract.html
Loft geometry gallery

Generate continuous vessels from changing cross-sections and shade them procedurally.

/loft.html
Procedural city

Navigate a seeded skyline through a sunset sky and procedural facade graph.

/city.html
Procedural skyscraper

Generate one seeded Neo-Gothic tower while tracing the WebGPU generator and sunset-lighting boundary.

/webgpu-generator-building-contract.html
Ocean shader contract

Trace Water, Sky, PMREM, bloom, cloud parameters, and timer-driven motion.

/webgl-shaders-ocean-contract.html
Subdivision modifier

Compare untouched geometry with LoopSubdivision topology, materials, and wireframes.

/webgl-modifier-subdivision-contract.html
Webcam material

Drive a 128-plane spherical field from a deterministic VideoTexture stream.

/webgl-materials-video-webcam-contract.html
Watch material

Trace physical metal/glass, PMREM, clock hands, camera choreography, and bloom.

/webgl-watch-contract.html
WebAudio timing

Make Timer-driven bounce transitions audible through five positional sources.

/webaudio-timing-contract.html
Gaussian splat field

Study covariance kernels, transparent sprites, and depth ordering across a pinned-package boundary.

/splat.html
Order-independent transparency

Accumulate intersecting transparent surfaces without draw-order popping.

/oit.html
Alpha-hash transparency

Compare stochastic coverage, fixed cutouts, and sorted blending.

/alphahash.html
Rapier solver laboratory

Compare solver iterations, CCD, sleeping, and fixed-step results.

/physics-rapier-solver.html
Rapier shared snapshot ring

Read worker-owned history through shared memory with a transfer fallback.

/physics-rapier-shared-ring.html
Rapier late-input policies

Compare ignoring, clamping, and reconciling stale commands.

/physics-rapier-late-policy.html
Rapier snapshot ring

Reconcile a late input from bounded worker-owned history.

/physics-rapier-snapshot-ring.html
Rapier input-log rollback

Replay fixed-tick worker inputs from a transferred checkpoint.

/physics-rapier-input-log.html
Worker Rapier rollback

Transfer serialized physics state across a worker and verify replay.

/physics-rapier-worker-snapshot.html
Rapier snapshots + replay

Capture, restore, and verify deterministic Rapier world replays.

/rapier-snapshot.html
Ammo instancing

Compare the Ammo/Bullet rigid-body bridge and indexed instance transforms.

/physics-ammo.html
Rapier physics

Study the Three.js scene and Rapier rigid-body world synchronization boundary.

/physics-rapier.html
Jolt instancing

Trace indexed Jolt bodies flowing through shared InstancedMesh buffers.

/physics-jolt.html
XR ball shooter

Launch instanced physics balls from XR controller gestures.

/xr-ballshooter.html
XR session contract

Inspect request plans, reference spaces, session-only layers, bindings, and frame boundaries.

/xr-session-contract.html
WebGPU XR cubes

Run the 200-cube room, controller selection, collision loop, and explicit WebGL2 reference.

/webgpu-xr-cubes-contract.html
WebXR dragging

Grab and release a deterministic 50-object field through two controller attachment paths.

/webxr-xr-dragging-contract.html
WebXR VR teleport

Trace controller floor intersections into source-shaped XR reference-space offsets.

/webxr-vr-teleport-contract.html
WebGPU XR roller coaster

Ride source-shaped track banking through procedural terrain, lifters, shadows, funfairs, and the explicit WebGL2 reference.

/webgpu-xr-rollercoaster-contract.html
XR native quad layer

Render a separate layer scene with a desktop XRRenderTarget fallback.

/xr-native-layers.html
XR layer topologies

Compare flat quad and curved cylinder layer proxies and callbacks.

/xr-layer-topologies.html
XR layer upload contract

Trace source canvas, texture upload, binding sub-image, and readback boundaries.

/xr-layer-upload.html
XR layer lifecycle contract

Exercise redraw, resource loss, recovery upload, destruction, and invalid-state policy.

/xr-layer-lifecycle-contract.html
XR media layer contract

Trace canvas video frames into VideoTexture and guarded equirect media layers.

/xr-media-layer.html
Media capture contract

Trace permission state, MediaStream tracks, VideoTexture/audio ownership, device probes, and teardown.

/media-capture-contract.html
XR anchors contract

Model hit-attached and free anchors, pose updates, tracking loss, deletion, and synthetic persistence.

/xr-anchors-contract.html
Compute particle lifecycle

Trace storage initialization, compute updates, sprite binding, and CPU fallback.

/compute-particle-lifecycle.html
Memory lifecycle

Make per-frame creation, disposal, tracked memory, and renderer shutdown observable.

/memory-lifecycle.html
Storage buffer elements

Compare indexed storage reads across WebGPU and WebGL2 backends.

/storage-buffer-elements.html
Instance mesh matrix

Compare one shared mesh across a moving field of instance transforms.

/instance-mesh-matrix.html
XR shadow backends

Compare WebGPU and WebGL2 shadow rigs before immersive presentation.

/xr-shadow-backends.html
Bitonic sort

Step through local and global storage-buffer compare stages.

/bitonic-sort.html
Texture ping-pong

Trace alternating storage-texture ownership through a TSL blur.

/texture-pingpong.html
Storage texture RMW

Verify one RGBA32F storage texture binding across read, modify, and write.

/storage-texture-rmw.html
Storage array texture contract

Write deterministic values across texture layers and verify GPU readback checksums.

/storage-array-texture-contract.html
TSL Graph picker contract

Verify primary-pass picking, NodeMaterial gates, graph IDs, drag thresholds, and helper cleanup.

/tsl-graph-picker-contract.html
TSL native execution contract

Execute trusted TSL fixtures, recompile fragmentNode, and inspect WGSL plus GLSL output.

/tsl-native-execution-contract.html
Partial texture update contract

Copy a small source region into a destination texture and verify changed versus untouched texels.

/texture-partial-update-contract.html
Readback buffer contract

Reuse one persistent GPU-to-CPU staging buffer across aligned subrange reads.

/readback-buffer-contract.html
CanvasTarget multi-canvas

Switch one renderer across four independent CanvasTargets and verify their size and disposal lifecycles.

/canvas-target-multi-contract.html
Texture update range contract

Queue component ranges on a DataTexture, verify WebGL2 merging, and prove the queue clears after upload.

/texture-update-range-contract.html
ProjectorLight contract

Project a deterministic map or TSL colorNode through a native WebGPU light and verify its shadow-matrix boundary.

/projector-light-contract.html
Projector video contract

Drive a native projector with two real VideoTexture frames and verify map-derived aspect plus teardown.

/projector-video-contract.html
Inspector runtime contract

Attach the full Inspector, drive live TSL controls, preview named nodes, and verify teardown.

/inspector-contract.html
Subgroup semantics contract

Probe device-defined subgroup lanes, intrinsics, feature gating, readback, and release.

/subgroup-contract.html
Indirect command contract

Read back exact GPU draw words and verify the indirect render consumer.

/indirect-command-contract.html
Multi-indirect offsets

Drive three draws from one GPU command buffer through byte offsets.

/multi-indirect-offsets.html
Indexed indirect contract

Reuse one index pattern while GPU commands select three vertex blocks.

/indexed-indirect-contract.html
Indexed first-index contract

Select three index windows from one GPU-driven indexed buffer.

/indexed-first-index-contract.html
Indexed format matrix

Compare Uint16 and Uint32 authoring paths at the WebGPU upload boundary.

/indexed-format-matrix-contract.html
Primitive restart contract

Split one indexed line-strip with the fixed restart sentinel and verify typed-index adaptation.

/primitive-restart-contract.html
Compute rasterizer

Resolve triangle coverage and packed depth in a visibility buffer.

/compute-rasterizer.html
Compute rasterizer IBL

Reconstruct material attributes after visibility resolves.

/compute-rasterizer-ibl.html
Occlusion queries

Read GPU visibility with a frame-latent renderer query.

/occlusion.html
Draw indirect

Let a GPU-written command choose the rendered instance count.

/draw-indirect.html
TSL transpiler

Translate GLSL into TSL or WGSL and inspect the bridge.

/tsl-transpiler.html
Material arrays

Map geometry groups to material slots and audit the draw contract.

/material-arrays.html
BufferGeometry contract

Update indexed positions, ranges, bounds, morph targets, and teardown explicitly.

/geometry-contract.html
Interactive BufferGeometry

Raycast a colored triangle field and reveal the selected face edges.

/webgl-interactive-buffergeometry-contract.html
Interactive orthographic cubes

Orbit an orthographic cube field and inspect reversible raycast selection.

/webgl-interactive-cubes-ortho-contract.html
Teapot geometry contract

Tessellate the Utah Teapot and audit patch flags, shading lanes, and BufferGeometry ownership.

/teapot-geometry-contract.html
Cube geometry contract

Make the smallest official geometry example explicit: box topology, texture color space, and loop ownership.

/cube-contract.html
Convex geometry contract

Turn deterministic 3D points into a convex hull and inspect the source point cloud versus surface.

/convex-geometry-contract.html
EdgeSplit modifier contract

Split sharp edges after OBJ vertex merging and inspect normals, shading, map, and teardown.

/webgl-modifier-edgesplit-contract.html
Tessellation modifier contract

Load beveled type, tessellate its edges, and inspect per-face shader color and displacement attributes.

/webgl-modifier-tessellation-contract.html
Color pipeline

Trace color inputs through linear lighting, tone mapping, and display output.

/color-pipeline.html
Camera + viewport

Compare projections and make viewport/scissor ownership explicit across backends.

/camera-viewport.html
Renderer + target state

Render offscreen, restore renderer state, and hand the texture back to the canvas.

/renderer-target-state.html
Native Gaussian Splat audit

Audit current-dev loaders, attributes, packed SH, sorting, and pinned-package drift.

/native-splat-audit.html
TSL graph persistence

Serialize a named TSL graph, rebuild independent NodeMaterials, and expose the pinned-release loader boundary.

/tsl-graph-persistence.html
TSL native loader contract

Reproduce the pinned UUID failure, recover with a local adapter, and compare the reconstructed scene.

/tsl-native-loader-contract.html
Loader lifecycle contract

Trace bytes, manager barriers, placeholder textures, cache, abort, and release.

/loader-lifecycle-contract.html
Image loader origin contract

Compare HTML-image and ImageBitmap ownership across same-origin and CORS paths.

/image-loader-origin-contract.html
ImageBitmap decode + cache contract

Read pixel orientation and reveal URL-only cache reuse before a GPU texture upload.

/imagebitmap-decode-cache-contract.html
TextureSource dev compatibility audit

Separate pinned runtime evidence from current-dev source drift and migration limits.

/texture-source-dev-compatibility-audit.html
Texture graph loader contract

Restore a texture-bearing TSL graph and verify image, sampler, UUID, and release ownership.

/texture-graph-loader-contract.html
Node registry migration contract

Migrate a versioned node document, validate registries and references, and expose stock fallback behavior.

/node-registry-migration-contract.html
TSL Graph editor persistence contract

Round-trip official codes, graph layouts, graph IDs, localStorage, and trusted material code.

/tsl-graph-editor-persistence-contract.html
TSL Graph editor bridge contract

Validate the host/iframe handshake, message gate, request timeouts, graph events, and teardown.

/tsl-graph-editor-bridge-contract.html
TSL Graph import compatibility

Compare pinned and current-dev import libraries without executing unsupported graph code.

/tsl-graph-import-compatibility.html
Texture source ownership contract

Share one Source across texture policies, fork ownership, and round-trip the image table.

/texture-source-ownership-contract.html
FBX loader contract

Load an animated FBX, inspect the runtime graph, and exercise clip ownership.

/fbx-loader-contract.html
FBX NURBS contract

Keep the FBX loader boundary visible while evaluating deterministic NURBS surfaces and curves.

/webgl-loader-fbx-nurbs-contract.html
FastHDR environment contract

Compare five material responses against a deterministic PMREM while keeping the KTX2 asset seam explicit.

/webgl-materials-envmaps-fasthdr-contract.html
Renderer resilience contract

Exercise real WebGL loss/restore and label application-owned backend recovery policy.

/renderer-resilience-contract.html
Collada loader contract

Parse XML scene graphs, inspect units/up-axis/animation, and state the supported subset honestly.

/collada-loader-contract.html
OBJ / MTL loader contract

Separate geometry, material-library, path-resolution, and disposal boundaries.

/obj-mtl-loader-contract.html
OBJ parser contract

Inspect named OBJ objects, MTL injection, topology, attributes, and parser teardown.

/obj-loader-contract.html
TTF loader contract

Parse a pinned TTF asset into shared mirrored TextGeometry and inspect the loader lifecycle.

/webgl-loader-ttf-contract.html
Material blending contract

Compare the five native blending modes and make alpha/depth ownership explicit.

/blending-contract.html
Cubemap reflection/refraction contract

Trace six-face CubeTexture ownership through reflection and refraction material paths.

/cubemap-contract.html
Displacement-map material contract

Keep normal, AO, displacement, UV2, and environment channels aligned on one surface.

/displacementmap-contract.html
Texture filtering contract

Compare native min/mag filters, mipmaps, wrapping, and anisotropy in a split sampler study.

/texture-filters-contract.html
Anaglyph effect contract

Trace off-axis eye cameras, zero-parallax distance, targets, and anaglyph compositing.

/anaglyph-contract.html
Lensflare contract

Attach native flare elements to colored lights and inspect occlusion-owned lifecycle.

/lensflare-contract.html
WebGPU LensflareMesh

Compare native WebGPU LensflareMesh occlusion ownership with the classic WebGL reference.

/webgpu-lensflares.html
Stereo effect

Split a WebGL render into left and right eye viewports.

/webgl-effects-stereo-contract.html
Parallax barrier effect

Interlace left and right render targets through a fullscreen scanline shader.

/webgl-effects-parallaxbarrier-contract.html
Reflector mirrors

Render ground and wall reflections through internal mirror targets.

/webgl-mirror-contract.html
ASCII effect contract

Trace WebGL pixels into a character-set DOM table with explicit effect ownership.

/ascii-contract.html
USD / USDZ loader contract

Trace stage roots, embedded layers, USDZ bytes, and the pinned parser boundary.

/usd-loader-contract.html
USDZ export fidelity

Export a scene, inspect the archive, reload it, and expose serialization loss.

/usdz-export-fidelity.html
PLY / STL round-trip contract

Compare attribute-rich PLY with surface-only STL and make format loss explicit.

/ply-stl-roundtrip-contract.html
Rhino 3DM loader contract

Trace Z-up Rhino layers, external WASM ownership, and layer visibility.

/webgl-3dm-loader-contract.html
Lottie texture loader contract

Drive a CanvasTexture from deterministic animationData and scrub it on a rounded mesh.

/webgl-lottie-loader-contract.html
Equirectangular panorama contract

Navigate a source-shaped inward sphere with pointer longitude, latitude, and FOV boundaries.

/webgl-panorama-equirectangular-contract.html
Cube panorama contract

Split a six-face atlas into inward-box textures and inspect damped orbit ownership.

/webgl-panorama-cube-contract.html
VOX loader contract

Parse voxel chunks into palette-colored scene graphs and inspect greedy meshing.

/vox-loader-contract.html
G-code exporter contract

Hand a Z-up primitive through printer, layer, infill, and local G-code export policy.

/gcode-exporter-contract.html
glTF animation pointers

Route JSON-pointer animation channels into material properties through the installed extension.

/gltf-animation-pointer-contract.html
glTF progressive LOD

Swap local mesh levels through the installed Needle progressive loader manager.

/gltf-progressive-lod-contract.html
CSG brush evaluator

Combine native brush solids with subtraction, intersection, and addition.

/csg-contract.html
Marching Cubes field

Turn a metaball scalar field into a live polygonized surface.

/marching-cubes-contract.html
Geometry constructor gallery

Compare native polyhedra, planar, revolved, and parametric generators.

/geometries-contract.html
Orientation transform

Compare gradual quaternion turns with an instant look-at target.

/orientation-transform-contract.html
Vertex colors

Populate and repaint native geometry color attributes across a small gallery.

/vertex-colors-contract.html
Custom attribute family

Compare line displacement, particle size, sorted billboards, and alpha-tested billboard attributes.

/webgl-custom-attributes-family-contract.html
Morph targets

Drive spherical and twist position targets through native influences.

/morph-targets-contract.html
Horse morph targets

Load the pinned Horse.glb through GLTFLoader and drive its AnimationMixer morph clip.

/morphtargets-horse-contract.html
Sphere morph targets

Parse a source-shaped AnimatedMorphSphere, animate a target, and share geometry with Points.

/morphtargets-sphere-contract.html
Multiple scenes comparison

Compare shaded and wireframe scenes through one camera and a scissor divider.

/multiple-scenes-comparison-contract.html
Terrain raycast contract

Deform a heightfield, bake its lighting, and probe surface normals.

/webgl-geometry-terrain-raycast-contract.html
Toon material contract

Quantize a material matrix with gradient maps and optional outlines.

/webgl-materials-toon-contract.html
3MF loader contract

Trace ZIP relationships, material resources, vertex colors, component builds, and transforms.

/3mf-loader-contract.html
WGSL / TSL interoperability

Compare one CRT effect implemented with native WGSL and TSL.

/tsl-interoperability.html
Multiple elements

Compose many DOM-backed scenes through one shared canvas.

/multiple-elements.html
Parallax UV

Turn a height texture into a camera-aware material illusion.

/parallax-uv.html
Texture gather

Read four neighboring texels and compare gathered depth values.

/texture-gather.html
Box-projected environment

Correct cubemap reflections against a room-sized projection box.

/bpcem.html
Render target array / 3D

Write the same source layers into array and volume render targets.

/render-target-array-3d.html
Compute rain

Feed a render-target collision field into GPU rain and surface ripples.

/compute-rain.html
Procedural terrain

Interactive generated terrain study.

/terrain.html
Raging sea

Animated ocean surface study.

/sea.html
Dynamic world

Moving-scene cell migration and broad-phase queries.

/dynamic-world.html
Octree worker

Triangle queries and worker broad-phase comparison.

/octree-worker.html
BVH comparison

Standard raycast, Octree, and three-mesh-bvh paths.

/bvh-compare.html
Object BVH

Scene-level TLAS over shared-geometry BLAS trees.

/object-bvh.html
Multiview

ArrayCamera versus explicit scissored passes.

/multiview.html

Rendering, textures, and media

Texture

Storage-texture ping-pong loop and CPU fallback.

/texture.html
Texture graph

Sampled texture graph and node-driven output.

/texture-graph.html
Texture gradient

Procedural texture-gradient study.

/texture-gradient.html
Texture mipmap

Mipmap generation and sampling study.

/texture-mipmap.html
Anisotropic texture filtering

Compare baseline and enhanced texture sampling on a steep floor.

/anisotropy.html
glTF material anisotropy

Load a glTF extension fixture and steer brushed-metal highlights.

/gltf-anisotropy.html
glTF material layers

Parse clearcoat, sheen, and iridescence extensions side by side.

/gltf-layers.html
glTF optical materials

Trace transmission, volume, IOR, specular, and dispersion through GLTFLoader.

/gltf-optics.html
glTF material variants

Switch authored material identities across shared glTF primitives.

/gltf-variants.html
glTF GPU instancing

Parse one mesh into a transform-rich field with one InstancedMesh batch.

/gltf-instancing.html
glTF unlit materials

Compare loader-mapped unlit shading with a PBR fallback reference.

/gltf-unlit.html
glTF texture transforms

Trace atlas offsets, rotation, scale, and UV-channel overrides through GLTFLoader.

/gltf-texture-transform.html
glTF texture format fallback

Compare PNG/WebP/AVIF associations and the official Draco-backed Forest House asset.

/gltf-texture-formats.html
glTF texture transform channels

Apply per-map transforms across base color, ORM, normal, occlusion, and emission.

/gltf-texture-transform-channels.html
glTF emissive strength

Compare core emission with HDR emissiveStrength loader mapping.

/gltf-emissive-strength.html
glTF export round-trip

Author a graph, export JSON/GLB, then load the artifact back.

/gltf-export-roundtrip.html
glTF normal-map export

Compare OpenGL and DirectX tangent maps through binary glTF export.

/gltf-export-normals.html
glTF instancing export

Export one InstancedMesh batch, inspect its extension, and load it back.

/gltf-instancing-export.html
DRACO exporter contract

Encode a source-shaped mesh, inspect quantization and attributes, and own the DRC download lifecycle.

/misc-exporter-draco-contract.html
glTF anisotropy contract

Parse a glTF material extension, mutate anisotropy factor/rotation/map state, and inspect lifecycle ownership.

/gltf-anisotropy-contract.html
Production glTF viewer

Compose progress, decoders, animation, framing, switching, and cleanup.

/gltf-production-viewer.html
glTF mesh quantization

Compare compact integer accessors with decoded runtime attributes.

/gltf-quantization.html
glTF bump extension

Inspect loader-created physical materials and linear height relief.

/gltf-bump-extension.html
glTF extension boundary

Compare native extension application with unknown metadata preservation.

/gltf-extension-boundary.html
glTF cameras + punctual lights

Switch authored camera projections and inspect node-attached lights.

/gltf-cameras-lights.html
glTF sparse accessors

Inspect sparse morph data and sparse animation output after loading.

/gltf-sparse-accessors.html
glTF sampler policy

Inspect authored filtering, mipmap, repeat, mirrored, and clamp state.

/gltf-sampler-policy.html
glTF PBR texture channels

Inspect base color, packed ORM, normal, occlusion, emissive, and color-space mappings.

/gltf-pbr-texture-channels.html
glTF skinning + morphs

Inspect weighted joints, inverse bind matrices, morph deltas, and clips.

/gltf-skinning-morph.html
glTF alpha modes

Inspect how OPAQUE, MASK, and BLEND map into Three.js materials.

/gltf-alpha-modes.html
Image quality

Physical-scale HDR studio and postprocessing chain.

/image-quality.html
Capabilities

Backend, limits, output settings, and memory counters.

/capabilities.html
Profiling

GPU timestamps compared with CPU render timing.

/profiling.html
Frame

Frame lifecycle and render-loop study.

/frame.html
MRT

Color and normal attachments with async readback.

/mrt.html
Bundle

BundleGroup versus regular Group performance.

/bundle.html
Audio

Browser audio and spatialization study.

/audio.html
Video

Video texture and media playback study.

/video.html
Media

Media-element loading and texture workflows.

/media.html
Codec

Browser codec capability and playback checks.

/codec.html

Lighting and postprocessing

Cascaded shadows

CSM split modes and shadow coverage.

/cascaded-shadows.html
Clustered lights

Forward+ lighting and depth-slice heatmaps.

/clustered-lights.html
Tiled shadows

Shadow-map arrays and tile controls.

/tiled-shadows.html
Light probes

Position-dependent diffuse GI through a baked grid.

/light-probes.html
CSM shadow node

WebGPU CSMShadowNode versus WebGL CSM.

/csm-shadow-node.html
Point shadows

Six-direction cube shadow targets.

/point-shadow.html
WebGL point-light shadows

Trace native six-direction PointLight shadows through map, bias, radius, and receiver ownership.

/webgl-point-shadow-contract.html
Clustered shadows

Forward+ light ownership and shadow boundaries.

/clustered-shadow.html
Tiled lights

Compatibility study with explicit fallbacks.

/tiled-lights.html
SSGI

Screen-space global illumination and temporal resolve.

/ssgi.html
SSR

Screen-space reflections with selectable views.

/ssr.html
SSR pass

Inspect native WebGL SSRPass targets, reflection scope, and output modes.

/ssr-pass-contract.html
SSR denoise

Stochastic reflections with history denoising.

/ssr-denoise.html
Depth of field

High-quality DOF with click-to-focus.

/dof.html
Basic depth of field

Performant blur-based focus effect.

/dof-basic.html
Ambient occlusion

GTAO, temporal resolve, and buffer previews.

/ao.html
SAO pass

Inspect native WebGL SAOPass normals, depth, occlusion, and blur.

/sao-contract.html
SMAA pass

Inspect native WebGL SMAA edge, weight, lookup, and blend stages.

/smaa-contract.html
Selective Unreal bloom

Inspect native bright extraction and selective layer policy.

/unreal-bloom-selective-contract.html
GTAO pass

Inspect native normal/depth, AO, denoise, and output targets.

/gtao-pass-contract.html
Transition pass

Blend two rendered worlds through native texture-aware transition targets.

/transition-pass-contract.html
Transition node

Compose two scene passes through the native TSL TransitionNode graph.

/webgpu-transition-contract.html
Clear pass

Inspect native clear-color, alpha, and read-buffer ownership.

/clear-pass-contract.html
Godrays ShaderPass

Inspect isolated radial scatter, projected-light sampling, and pass ownership.

/godrays-pass-contract.html
Procedural effects

Switch three source-backed fullscreen random-noise shader programs.

/procedural-pass-contract.html
Advanced postprocessing

Route one shared scene texture through four masked effect composers.

/advanced-postprocessing-contract.html
Texture rotation

Compare automatic and explicit UV-matrix transforms on a repeat-wrapped texture.

/texture-rotation-contract.html
Custom blending

Inspect the source-factor × destination-factor material matrix.

/custom-blending-contract.html
Contact shadows

Trace depth capture through two-stage blur into a ground shadow.

/contact-shadow-contract.html
Material channels

Switch one specimen across normal, velocity, and depth packing views.

/material-channels-contract.html
Alpha hash + TAA

Compare hashed coverage, sorted transparency, and temporal accumulation.

/alpha-hash-contract.html
Matcap material

Study view-space matcap lobes, normal-map participation, and material replacement.

/webgl-materials-matcap-contract.html
3D texture partial updates

Stream sub-volumes into one resident 3D texture and raymarch the assembled field.

/webgl-texture3d-partialupdate-contract.html
Subsurface scattering

Trace thickness-driven light transport through the source-shaped shader.

/webgl-materials-subsurface-scattering-contract.html
RectAreaLight

Inspect native rectangular emitters, dimensions, and helper ownership.

/webgl-lights-rectarealight-contract.html
Physical transmission + alpha

Explore transmission, optical depth, attenuation, and transparency policy.

/webgl-materials-physical-transmission-alpha-contract.html
Motion blur

Velocity-vector blur for camera and objects.

/motion-blur.html
TAAU

Temporal anti-aliasing upscaling from a lower resolution.

/taau.html
Upscaling

Native, bilinear, FSR1, and TAAU comparisons.

/upscaling.html
Subsurface scattering

Depth-raymarched SSS with temporal filtering.

/sss.html
WebGPU SSS material

Inspect thickness-driven scattering in the native node material.

/webgpu-materials-sss-contract.html
WebGPU 2D texture array

Animate a native array-layer depth sample through TSL.

/webgpu-textures-2d-array-contract.html
Compressed 2D texture array

Promote KTX2 compressed layers into a native depth-sampling graph.

/webgpu-textures-2d-array-compressed-contract.html
WebGL compressed 2D texture array

Trace the source-style GLSL3 sampler2DArray depth path.

/webgl-texture2darray-compressed-contract.html
WebGL 2D texture array

Animate a red-channel volume slice through the source shader.

/webgl-texture2darray-contract.html
Multisampled renderbuffers

Compare the single-sample and four-sample composer paths side by side.

/webgl-multisampled-renderbuffers-contract.html

Volumetrics, water, and compute

More demos to explore

Explore additional rendering studies and interactive experiments.

Typed Keyframe Tracks Lab / Three.js Foundations

Build the official keyframe contract from scratch: vectors for position and scale, quaternions for rotation, discrete colors, and scalar opacity on one mixer root.

/animation-typed-tracks.html
Box Selection Lab / Three.js Foundations

The official selection helper turns a 2D rectangle into a 3D frustum. Compare camera depth, center-point semantics, and instance IDs without hiding the lifecycle.

/box-selection.html
CanvasTexture · Three.js Foundations

Explore CanvasTexture · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/canvas-texture-contract.html
CSS3D YouTube · Three.js Foundations

A source-backed DOM-renderer contract for the pinned Three.js YouTube example: real iframe media surfaces become CSS3D objects, TrackballControls owns the camera, and a transparent blocker...

/css3d-youtube-contract.html
Curve Modifier Instanced · Three.js Foundations

InstancedFlow keeps one geometry/material pair while each instance selects a curve, owns an offset, and receives an independent color.

/curve-modifier-instanced.html
Curve Modifier · Three.js Foundations

Flow bends a mesh on the GPU by sampling curve position and Frenet frames from a half-float data texture, then advances the mesh along that path.

/curve-modifier.html
Custom particle attributes · Three.js Foundations

Explore Custom particle attributes · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/custom-attributes-particles-contract.html
Custom color attributes · Three.js Foundations

Explore Custom color attributes · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/custom-attributes-points-contract.html
GLBufferAttribute · Three.js Foundations

GLBufferAttribute describes a native WebGL buffer without asking Three.js to upload an array. The application owns the VBO data, while the geometry owns the attribute metadata, source swap, draw...

/glbuffer-attribute.html
glTF Multi-Scene Export Lab / Three.js Foundations

GLTFExporter accepts a scene or an array of scenes. This lab exports two authored roots to JSON and GLB, then independently reloads each artifact through GLTFLoader so scene count, animation...

/gltf-export-scenes.html
glTF Compressed Texture Export Lab / Three.js Foundations

The bundled CoffeeMat asset arrives through KTX2/Basis and Meshopt. This lab gives GLTFExporter a real compressed texture, proves the expected failure without texture utilities, then injects the...

/gltf-export-textures.html
glTF Scenes + Asset Response Lab / Three.js Foundations

GLTFLoader returns a default scene, the complete scenes array, imported cameras, parser access, and preserved metadata. Select each root scene and inspect the response boundary instead of treating...

/gltf-scenes.html
HemisphereLight contract · Three.js Foundations

A HemisphereLight blends sky and ground colors without casting shadows. The study keeps its helper update boundary visible beside a directional shadow reference and a source-shaped sky dome.

/hemisphere-light-contract.html
Indexed lines contract · Three.js Foundations

Explore Indexed lines contract · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/indexed-lines-contract.html
Instanced Interleaved Lab · Three.js Foundations

The box’s position and UV channels share a stride-eight Float32 record. One indexed topology is drawn many times while the per-instance matrix buffer changes every frame.

/instanced-interleaved.html
Integer Attributes · Three.js Foundations

A WebGL2 integer attribute reaches a GLSL3 in int without normalized float conversion. A flat varying carries that discrete value to a sampler-array branch, so each triangle keeps its chosen texture.

/integer-attributes.html
Interleaved Points Lab · Three.js Foundations

Positions stay float32; color rides beside them as normalized Uint8 data. The CPU shares bytes, while Three.js still tracks two interleaved owners.

/interleaved-points.html
Legacy Texture Loaders · Three.js Foundations

Parse five legacy texture families with their actual Three.js loaders. Compressed containers expose metadata and payload ownership; decoded raster formats expose RGBA bytes. Parsing success is...

/legacy-texture-loaders.html
Logarithmic Depth · Three.js Foundations

A depth ladder places markers across several orders of magnitude. Rebuilding the native WebGLRenderer with logarithmicDepthBuffer makes the precision policy explicit.

/log-depth-contract.html
Addon Lines · Three.js Foundations

Three focused line labs separate chain geometry, segment geometry, wide-line materials, dash distances, and generated wireframes.

/manual-addon-lines.html
Addon Objects + Effects · Three.js Foundations

Representative WebGL addon contracts: a CPU polygonizer, a reflection hook, a refractive virtual camera, and a replacement stereo renderer.

/manual-addon-objects.html
Background Manual Group · Three.js Foundations

A CSS image, a scene background, a cube map, and a second scene all fill pixels differently. Make the ownership boundary visible.

/manual-backgrounds.html
Billboards + Lots of Objects Manual Group · Three.js Foundations

Ten focused modes compare camera-facing labels, render-target impostors, repeated meshes, merged geometry, vertex colors, dataset fades, visibility switches, and morph targets.

/manual-billboards-objects.html
Camera Manual Group · Three.js Foundations

Projection, viewports, pixel coordinates, and depth precision are separate camera decisions. Switch one contract at a time.

/manual-cameras.html
Controls · Three.js Foundations

Five focused labs separate camera navigation, continuous motion, browser pointer lock, and event-driven object manipulation.

/manual-controls.html
Core Objects · Three.js Foundations

Five focused labs make instance attributes, object topology, skin deformation, batch capacity, and backend boundaries observable.

/manual-core-objects.html
CurveExtras + NURBS · Three.js Foundations

Compare parametric paths, arc-length sampling, generated tube topology, and NURBS target writes in one bounded study.

/manual-curves-nurbs.html
Debugging + Cleanup + Tips · Three.js Foundations

Twelve official manual pages become inspectable lessons for cleanup, debugging, capture timing, DOM composition, alpha, and canvas focus.

/manual-debugging-hygiene.html
Fundamentals + Scenegraph Manual Group · Three.js Foundations

Four focused modes follow the official foundations path from one static Mesh to lit cubes, time-based animation, and a composed car.

/manual-fundamentals-scene.html
Gallery Interaction · Three.js Foundations

Representative official gallery contracts make instance invalidation, CPU/GPU picking, line topology, resolution, and voxel rebuilds observable without claiming exact asset or pixel parity.

/manual-gallery-interaction.html
Gallery Postprocessing · Three.js Foundations

Representative labs from the official postprocessing gallery make screen ownership, history, antialiasing, selected effects, and target restoration observable without claiming exact asset or pixel...

/manual-gallery-postprocessing.html
Games + Data · Three.js Foundations

Eight representative labs cover model loading, animation clips, component game loops, input edges, follower state, LUT images, live CanvasTexture updates, and parsed grid data.

/manual-games-data.html
Generators + CCDIK · Three.js Foundations

Three focused passes separate deterministic procedural construction, terrain-owned placement, and CCD inverse-kinematics mutation.

/manual-generators-ik.html
Geometry + Curves · Three.js Foundations

Four focused labs make segmentation, profile construction, curve distance, and swept frames visible instead of leaving them as constructor options.

/manual-geometry-curves.html
Geometry + Paths · Three.js Foundations

Five representative labs make constructor topology, polyhedron detail, wireframe snapshots, path commands, and arc-length caches observable without claiming complete renderer or example coverage.

/manual-geometry-path.html
Geometry + Voxel Manual Group · Three.js Foundations

Eleven focused modes move from built-in primitives to authored attributes, dynamic buffers, and voxel surfaces whose hidden faces are deliberately omitted.

/manual-geometry-voxel.html
Helpers + Light Shadows · Three.js Foundations

Four compact labs make helper updates, light targets, shadow-camera variants, skeleton state, and explicit disposal observable. IES and projector lights remain intentionally source-only because...

/manual-helper-shadow.html
Interpolants + Shapes · Three.js Foundations

A compact lab for reusable interpolation buffers, path triangulation, and CPU data ownership before those values reach the renderer.

/manual-interpolants-shapes.html
HTML Labels in 3D · Three.js Foundations

Project HTML into CSS pixels, hide labels behind geometry, sort them by depth, and place globe labels from latitude and longitude.

/manual-labels.html
Legacy Shader Passes · Three.js Foundations

A compact lab for the older WebGL/GLSL pass family: time-driven film, resolution-aware halftone, owned glitch displacement, and non-swapping save/texture passes.

/manual-legacy-shader-passes.html
Lighting + Shadows Manual Group · Three.js Foundations

A light needs a material, a direction or target, and—when shadows are enabled—explicit renderer, light, and mesh ownership. Change one boundary at a time.

/manual-lighting-shadows.html
Loader Formats Lab · Three.js Foundations

Compare three materially different loader paths: Draco-compressed GLTF geometry, Basis-transcoded KTX2 textures, and SVG paths converted into Three.js shapes.

/manual-loader-formats.html
Model Loaders Manual Group · Three.js Foundations

Compare the official GLTF and OBJ lessons as contracts: parse or load, inspect the returned hierarchy, frame its bounds, animate it, and release what the application owns.

/manual-loaders.html
Materials + Lights · Three.js Foundations

Five compact labs make shading families, invalidation, line distances, light targets, probes, and area-light prerequisites observable without pretending every renderer path is equivalent.

/manual-materials-lights.html
Math + Transforms · Three.js Foundations

Four focused labs make rotation, composition, bounds, intersections, pointer coordinates, and frame-rate independent motion observable.

/manual-math-transforms.html
Renderer Targets + Telemetry · Three.js Foundations

Four compact labs separate logical canvas size, drawing-buffer size, renderer bookkeeping, uniform cloning, and blending/backend boundaries. The newer common-renderer target objects stay labeled...

/manual-renderer-telemetry.html
Responsive + OffscreenCanvas Manual Group · Three.js Foundations

Ten focused modes compare CSS layout, drawing-buffer sizing, device pixels, worker transfer, event proxies, and normalized-coordinate picking.

/manual-responsive-offscreen.html
Multiple Scenes + On Demand Manual Group · Three.js Foundations

Multiple scenes share a drawing buffer through viewport/scissor rectangles. On-demand rendering shares an invalidation rule: schedule one frame, then let changes request another.

/manual-scenes-on-demand.html
Shader Modules · Three.js Foundations

Pure GLSL modules become useful when their cloned uniforms, input texture IDs, resolution policy, and composer order are made explicit.

/manual-shader-modules.html
Shadertoy + Fog Manual Group · Three.js Foundations

Seven focused modes connect a Shadertoy-style fragment function to Three.js uniforms, sampler input, mesh UVs, and the built-in fog pipeline.

/manual-shadertoy-fog.html
Spatial Math · Three.js Foundations

Five focused labs connect color working spaces, 2D bounds, barycentric data, clipping planes, camera frustums, and angular coordinates.

/manual-spatial-math.html
Texture API · Three.js Foundations

Six labs make texture sources, raw texels, volume data, cube faces, media lifecycles, loaders, and invalidation boundaries observable.

/manual-texture-api.html
Timing + Visibility · Three.js Foundations

Five compact labs connect timing, native data, masks, offscreen attachments, fog, cube capture, and stereo views without claiming whole-page mastery.

/manual-timing-visibility.html
Transparency Manual Group · Three.js Foundations

Six focused scenes make the official transparency lessons tangible: blending, double-sided faces, the two-mesh workaround, intersecting planes, ordered splits, and alpha-tested cutouts.

/manual-transparency.html
WebXR Manual Group · Three.js Foundations

Study the WebXR boundary without pretending a desktop browser is a headset: the same scene exposes renderer XR state, VR capability, look-to-select dwell, controller rays, and attach/restore behavior.

/manual-webxr.html
Modified Materials · Three.js Foundations

`onBeforeCompile` lets a built-in material keep its lighting and normal pipeline while a small patch injects time-varying twist math. Separate cache keys keep opposite shader variants from sharing...

/material-modifier.html
MRT Mask Lab · Three.js Foundations

A per-material MRT mask feeds a Gaussian blur while the beauty pass stays intact, making selective post-processing ownership visible.

/mrt-mask.html
Multi-SpotLights contract · Three.js Foundations

Three independently colored SpotLight instances reproduce the official multi-light shape: shared cone settings, range/decay, shadow casting, helper updates, and deterministic motion over a...

/multi-spotlights-contract.html
Three.js WebGPU Ocean / Foundations Lab

The pinned occlusion example combines a reflective WaterMesh, procedural SkyMesh, PMREM environment regeneration, animated geometry, and a small bloom pipeline.

/ocean-occlusion.html
Ammo Break - Three.js Foundations

This native Ammo study follows the pinned break example: convex bodies own Bullet hulls, contact manifolds expose applied impulse, and ConvexObjectBreaker replaces a hit object with...

/physics-ammo-break-contract.html
Ammo Cloth - Three.js Foundations

This native Ammo study follows the pinned soft-body cloth example: a 20×15 patch is anchored to a motorized arm, simulated in a soft-rigid world, and written back into a lit Three.js surface.

/physics-ammo-cloth-contract.html
Ammo Rope - Three.js Foundations

This native Ammo study follows the pinned soft-body rope example: a 10-segment rope is anchored to a ball and a motorized arm inside a soft-rigid dynamics world.

/physics-ammo-rope-contract.html
Ammo Terrain - Three.js Foundations

This native Ammo study follows the pinned heightfield example: generated float samples are copied into the Ammo heap, wrapped by btHeightfieldTerrainShape, and used by falling rigid bodies.

/physics-ammo-terrain-contract.html
Ammo Volume - Three.js Foundations

This native Ammo study follows the pinned soft-body volume example: a sphere and a subdivided box keep their pressure while colliding with a ground plane, ramp, and thrown rigid balls.

/physics-ammo-volume-contract.html
Rapier Vehicle Controller - Three.js Foundations

This route turns Rapier's ray-cast vehicle controller into a small driving laboratory: the chassis is a dynamic rigid body, wheels raycast through suspension, and engine, steering, friction, and...

/physics-rapier-vehicle-controller.html
Picking Lab · Three.js Foundations

Three ways to turn a pointer into identity: geometric rays, indexed texture regions, and a one-pixel GPU ID pass.

/picking-lab.html
Dynamic Points · Three.js Foundations

Explore Dynamic Points · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/points-dynamic-contract.html
Points Waves · Three.js Foundations

A grid of points keeps its topology while CPU code rewrites the position and scale buffers every frame. A tiny ShaderMaterial turns each point into a camera-aware circular particle.

/points-waves.html
Post-render Filters · Three.js Foundations

A focused WebGPU lab for post-render ownership: stateless edge filtering, in-frame supersampling, and history-based reprojection. Each mode exposes what it owns and when it runs.

/post-render-filters.html
Post-Processing Lab · Three.js Foundations

A composer is a buffer graph. A render target is a producer. Make pass order, swaps, and target restoration visible instead of treating the screen as magic.

/postprocessing-lab.html
Raw shader contract · Three.js Foundations

Explore Raw shader contract · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/rawshader-contract.html
Reflection + Recursive Tree Cubes | Three.js Foundations

This lab isolates the official reflection boundary: instanced recursive tree cubes, a native ReflectorNode, TSL-driven cube deformation, and a render-pipeline blur/vignette pass.

/reflection-contract.html
Scenegraph Hierarchy Lab · Three.js Foundations

Build orbital frames, attach a turret, and let world transforms explain why hierarchy beats coordinate copying.

/scenegraph-hierarchy.html
Selective draw contract · Three.js Foundations

Explore Selective draw contract · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/selective-draw-contract.html
ShaderMaterial Uniforms · Three.js Contract

A fullscreen ShaderMaterial keeps its time, speed, and distortion uniforms on the CPU while GLSL owns the image. The controls expose mutation, recompilation, timing, and teardown as separate...

/shader-material-contract.html
Three.js Individual Skinning / Foundations Lab

Each body keeps its own animation time and proportions while one WebGPU compute graph writes the skinned vertex stream reused by the render pass.

/skinning-individual.html
Three.js Skinning Instancing / Foundations Lab

The source rig keeps one AnimationMixer while its skinned meshes expose an instance matrix, TSL-driven per-instance material variation, and a depth-directed blur pipeline.

/skinning-instancing.html
SpotLight contract · Three.js Foundations

A shadow-casting SpotLight projects a cookie map through a mutable cone. The lab keeps its target, shadow camera, helper geometry, and teardown boundaries visible.

/spotlight-contract.html
Storage 3D Texture Contract | Three.js Foundations

A write-only Storage3DTexture receives deterministic values at (x, y, z) coordinates. A separate storage buffer verifies the computed voxels without claiming ordinary WebGL2 equivalence.

/storage-3d-texture-contract.html
Texture Export Contract · Three.js Foundations

Compare EXR scene-linear HDR output with KTX2 raw texture containers. The lab keeps source target, output type, channel, color-space, compression, and release boundaries visible.

/texture-export-contract.html
WebGPU partial texture copy · Three.js Foundations

A deterministic 2×2 DataTexture is copied into a 4×4 destination at an explicit texel offset, then verified through GPU readback.

/texture-partial-update-webgpu.html
Texture Pipeline Lab · Three.js Foundations

Images, canvases, labels, and palettes all cross the CPU/GPU boundary differently. Make readiness, sampling, and upload ownership visible.

/texture-pipeline.html
local TSL Graph mock peer

Explore local TSL Graph mock peer with an interactive Three.js study and browser-based rendering controls.

/tsl-graph-editor-bridge-peer.html
TSL Shadow Map Contract / Three.js Foundations

Explore TSL Shadow Map Contract / Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/tsl-shadowmap-contract.html
UVsDebug contract · Three.js Foundations

UVsDebug turns indexed or non-indexed triangular geometry into a labeled canvas. The helper is deliberately a browser-side diagnostic: it inspects UV attributes, not textures or renderer state.

/uvs-debug-contract.html
Vertex ID Geometry · Three.js Foundations

With GLSL3, an empty BufferGeometry can still draw a field of triangles: the draw range supplies the vertex count, while gl_VertexID deterministically derives each position and color in a...

/vertex-id.html
3DS Loader Contract · Three.js Foundations

Deterministic 3DS binary chunks pass through the installed TDSLoader. The lab makes named objects, indexed faces, UVs, master scale, and the loader’s basic Phong material properties observable.

/webgl-3ds-loader-contract.html
AMF Loader Contract · Three.js Foundations

Deterministic Additive Manufacturing Format (AMF) documents pass through the installed AMFLoader. The lab makes metadata, unit scaling, material color/alpha, indexed triangle volumes, normals,...

/webgl-amf-loader-contract.html
WebGL Batch LOD BVH Contract · Three.js Foundations

The pinned example combines BatchedMesh, five geometry LODs, radix sorting, BLAS/TLAS BVHs, accelerated raycasting, and 500,000 instances. This route preserves that full topology and exposes the...

/webgl-batch-lod-bvh-contract.html
Bump Mapping · Three.js Contract

Bump mapping perturbs a lit surface from a height texture without changing its geometry or requiring vertex tangents. This procedural contract keeps the texture toggle, scale mutation, and shader...

/webgl-bumpmap-contract.html
BVH Loader Contract · Three.js Foundations

A deterministic single-root BVH fixture passes through the installed BVHLoader. The lab makes hierarchy offsets, animation-channel selection, SkeletonHelper, AnimationClip, and AnimationMixer...

/webgl-bvh-loader-contract.html
WebGL Cubemap Render-to-Mipmaps Contract · Three.js Foundations

Explore WebGL Cubemap Render-to-Mipmaps Contract · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgl-cubemap-render-mipmaps-contract.html
Custom Attributes Contract · Three.js Foundations

A deterministic per-vertex displacement attribute feeds the installed ShaderMaterial. The lab makes uniform amplitude, live buffer uploads, UV texture sampling, palette and repeat mutation, pause,...

/webgl-custom-attributes-contract.html
Decal Splatter Contract · Three.js Foundations

The official decal splatter study raycasts a mesh, transforms its face normal, and clips a transparent DecalGeometry against the hit surface. This lab keeps that projection, material policy, and...

/webgl-decals-contract.html
WebGL White Furnace Test | Three.js Foundations

The pinned white-furnace diagnostic makes energy conservation visible: roughness runs left to right, metalness runs top to bottom, and every sphere shares the same filtered radiance.

/webgl-furnace-test-contract.html
G-code Loader Contract · Three.js Foundations

Deterministic printer-style G-code passes through the installed GCodeLoader. The lab makes absolute/relative positioning, extrusion state, layer splitting, loader coordinate rotation,...

/webgl-gcode-loader-contract.html
Lookup Table Colors Contract / Three.js Foundations

Explore Lookup Table Colors Contract / Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgl-geometry-colors-lookuptable-contract.html
WebGL GPGPU Birds · Three.js Foundations

Explore WebGL GPGPU Birds · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgl-gpgpu-birds-contract.html
WebGL GPGPU Protoplanet · Three.js Foundations

Explore WebGL GPGPU Protoplanet · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgl-gpgpu-protoplanet-contract.html
WebGL GPGPU Water · Three.js Foundations

Explore WebGL GPGPU Water · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgl-gpgpu-water-contract.html
KMZ Loader Contract · Three.js Foundations

A deterministic KMZ ZIP contains doc.kml and a nested Collada model. The installed KMZLoader resolves the KML link, delegates the DAE to ColladaLoader, and returns a caller-owned scene graph.

/webgl-kmz-loader-contract.html
LDraw Loader Contract · Three.js Foundations

A library-free packed LDraw text model passes through the installed LDrawLoader. The route exposes native surface meshes, ordinary edges, conditional edges, BFC-aware smoothing, and building-step...

/webgl-ldraw-loader-contract.html
3D Tiles Loader Contract · Three.js Foundations

The pinned gallery source composes TilesRenderer, GlobeControls, Cesium Ion authentication, GLTF/DRACO tile plugins, Google Photorealistic Tiles, atmospheric clouds, and postprocessing. This local...

/webgl-loader-3dtiles-contract.html
Collada kinematics contract · Three.js Foundations

Explore Collada kinematics contract · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgl-loader-collada-kinematics-contract.html
IFC Loader Contract · Three.js Foundations

The pinned gallery source uses web-ifc directly: configure the WASM path, initialize IfcAPI, open the IFC byte stream with COORDINATE_TO_ORIGIN, stream all meshes, convert interleaved...

/webgl-loader-ifc-contract.html
TGA Loader Contract · Three.js Foundations

Deterministic raw RGB24 and RLE RGBA32 TGA payloads pass through the installed TGALoader. The route makes native RGBA conversion, origin handling, mipmap policy, DataTexture ownership, and the...

/webgl-loader-texture-tga-contract.html
Clearcoat Material Contract · Three.js Foundations

A procedural comparison makes MeshPhysicalMaterial clearcoat observable: base roughness, coating intensity, coating roughness, red/green channel maps, an independent normal layer, shader...

/webgl-materials-clearcoat.html
WebGL Cubemap Mipmaps Contract · Three.js Foundations

The official cubemap-mipmap study compares a six-face cube with authored mip levels against the same base cube with GPU-generated mipmaps. This explicit WebGL2 lane keeps texture ownership, level...

/webgl-materials-cubemap-mipmaps-contract.html
OBB Math Contract · Three.js Foundations

The official OBB study copies a geometry-level OBB through each world transform, runs pairwise intersectsOBB tests, and uses intersectRay to select the nearest oriented object. This lab makes...

/webgl-math-obb-contract.html
MD2 Character Control | Three.js Foundations

A deterministic MD2 frame payload is shared across three native MD2CharacterComplex roots. The primary character exposes the official movement flags while clones exercise shareParts, morph...

/webgl-md2-control-contract.html
MD2 Loader Contract · Three.js Foundations

A deterministic little-endian MD2 payload passes through the installed MD2Loader. The lab keeps the native render attributes, named frame morph targets, and derived AnimationClip visible as...

/webgl-md2-loader-contract.html
MDD Loader Contract · Three.js Foundations

A deterministic big-endian MDD payload passes through the installed MDDLoader. The lab binds native morph targets to indexed geometry and drives the parsed AnimationClip through AnimationMixer.

/webgl-mdd-loader-contract.html
WebGL Memory Test Contract · Three.js Foundations

A source-backed memory contract: every cycle creates a textured wireframe sphere, renders it through one WebGLRenderer, removes it from the scene, and disposes its geometry, material, and...

/webgl-memory-contract.html
WebGL Memory Test II Contract · Three.js Foundations

The second memory test intentionally differs from the clean lifecycle lab: 100 meshes share one sphere geometry, but every render replaces each mesh material with a new ShaderMaterial. The newest...

/webgl-memory2-contract.html
WebGL SimplifyModifier Contract · Three.js Foundations

The pinned example compares a loaded source mesh with a cloned mesh rebuilt by SimplifyModifier. This contract keeps that two-mesh boundary while using a deterministic local torus-knot fixture in...

/webgl-modifier-simplifier-contract.html
WebGL Face Morph Targets Webcam Contract · Three.js Foundations

The pinned webcam example aligns a FaceCap glTF expression rig and a hidden webcam video in the same metric camera frame, then applies MediaPipe blendshapes, pose, and eye scores. This route uses...

/webgl-morphtargets-webcam-contract.html
Multiple Render Targets · Three.js Contract

A native WebGL2 WebGLRenderTarget with two color attachments receives color and normal data from one GLSL3 draw. The preview and indexed readback keep the attachments observable.

/webgl-multiple-rendertargets-contract.html
Normal Map Contract · Three.js Foundations

Explore Normal Map Contract · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgl-normalmap-contract.html
NRRD Loader Contract · Three.js Foundations

Deterministic NRRD bytes pass through the installed NRRDLoader. The lab exposes typed payload decoding, spacing/RAS metadata, threshold repaint, and the official example’s x/y/z VolumeSlice...

/webgl-nrrd-loader-contract.html
PCD Loader Contract · Three.js Foundations

Deterministic Point Cloud Data (PCD) records pass through the installed PCDLoader. The lab makes typed headers, ASCII/binary transport, RGB, normals, intensity, labels, point size, and the...

/webgl-pcd-loader-contract.html
PDB Loader Contract · Three.js Foundations

Deterministic Protein Data Bank text passes through the installed PDBLoader. The lab makes fixed-column atom coordinates, native CPK colors, deduplicated CONECT bonds, and the loader’s atom/bond...

/webgl-pdb-loader-contract.html
WebGL PMREM Cubemap | Three.js Foundations

Keep the PMREM cubemap pipeline visible: deterministic six-face input, CubeUV convolution, a roughness/metalness physical-material grid, and explicit source/derived-resource ownership.

/webgl-pmrem-cubemap-contract.html
WebGL PMREM Test | Three.js Foundations

Compare the pinned PMREM approximation against a matched DirectionalLight: a single bright radiance sample, a white/black metal/dielectric grid, and a clear switch between environment and...

/webgl-pmrem-test-contract.html
WebGL Point Billboards Contract · Three.js Foundations

A source-backed particle contract: one position buffer feeds a textured Points cloud, while PointsMaterial.sizeAttenuation, pointer camera input, and animated HSL color remain explicit and reversible.

/webgl-points-billboards-contract.html
2D Texture Array Render Target · Three.js Contract

WebGL2 can attach one layer of a DataArrayTexture as a framebuffer target. This route renders a source slice into a native WebGLArrayRenderTarget, then samples the rendered array layer in the...

/webgl-rendertarget-texture2darray-contract.html
WebGL Sculpt Contract / Three.js Foundations

Explore WebGL Sculpt Contract / Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgl-sculpt-contract.html
WebGL ShadowMap | Three.js Foundations

A compact contract for the classic WebGL shadow-map example: a moving caster field, a large receiver, and a directional light whose map type and camera budget stay inspectable.

/webgl-shadowmap-contract.html
WebGL Shadow Performance | Three.js Foundations

Measure a deterministic animated-caster field under one shadow-casting SunLight-family reference: PCF shadow-map configuration, receiver ownership, instance count, and CPU-side render samples stay...

/webgl-shadowmap-performance-contract.html
WebGL VSM ShadowMap | Three.js Foundations

Keep the VSM shadow lane visible: a moving torus knot, a directional light, a spotlight, filter controls, and a renderer-level variance shadow-map contract.

/webgl-shadowmap-vsm-contract.html
WebGL ShadowMesh | Three.js Foundations

Keep the custom ShadowMesh path visible: animated geometry, a plane-projection matrix, explicit directional-versus-point divergence, and a stencil-capable renderer.

/webgl-shadowmesh-contract.html
WebGL Simple GI Contract · Three.js Foundations

A source-shaped study of the official simple global illumination example: camera probes read a tiny render target and progressively paint bounced light into torus-knot vertex colors.

/webgl-simple-gi-contract.html
3D Texture Volume · Three.js Contract

A float Data3DTexture feeds the official-style VolumeRenderShader1 raycaster. MIP and isosurface modes share one volume while clim, threshold, and colormap controls change the interpretation.

/webgl-texture3d-contract.html
TSL Instancing Contract / Three.js Foundations

Explore TSL Instancing Contract / Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgl-tsl-instancing-contract.html
TSL Skinning Contract / Three.js Foundations

Explore TSL Skinning Contract / Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgl-tsl-skinning-contract.html
Uniform Buffer Arrays · Three.js Contract

A GLSL3 UniformsGroup packs position and color arrays into one std140 LightingData block. Every specimen reads the same array while the active light count and motion change on the CPU.

/webgl-ubo-arrays-contract.html
Uniform Buffer Objects · Three.js Contract

A GLSL3 UniformsGroup packs shared light state into one std140 uniform buffer object. Every specimen reads the same GPU block while the controls mutate its contents without rebuilding the scene.

/webgl-ubo-contract.html
Three.js Lab — Video Kinect Contract

Explore Three.js Lab — Video Kinect Contract with an interactive Three.js study and browser-based rendering controls.

/webgl-video-kinect-contract.html
WebGL Video Panorama Contract · Three.js Foundations

Explore WebGL Video Panorama Contract · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgl-video-panorama-equirectangular-contract.html
Volume Instancing Contract · Three.js Foundations

A VOX density chunk becomes a GLSL3 sampler3D and is raymarched through thousands of instanced boxes. The study keeps the source’s per-instance local-ray transform and depth write observable.

/webgl-volume-instancing-contract.html
VRML Loader Contract · Three.js Foundations

Deterministic VRML V2.0 text passes through the installed VRMLLoader. The lab exposes native Scene construction, Transform/Shape hierarchy, primitive and indexed geometry nodes,...

/webgl-vrml-loader-contract.html
WebGL Wide Gamut Contract · Three.js Foundations

A source-backed wide-gamut contract: two scene backgrounds share one camera and a draggable scissor split, while Display P3 capability, working color space, output color space, and live...

/webgl-wide-gamut-contract.html
XYZ Loader Contract · Three.js Foundations

Deterministic XYZ text passes through the installed XYZLoader. The lab exposes both supported layouts, native position/color attributes, the official centered PointsMaterial presentation, and...

/webgl-xyz-loader-contract.html
Three.js Lab — Ready Player Animation Retargeting

The pinned example maps a Mixamo FBX animation onto a Ready Player glTF avatar with shared mixamorig bone names.

/webgpu-animation-retargeting-readyplayer-contract.html
WebGPU Centroid Sampling Contract · Three.js Foundations

Explore WebGPU Centroid Sampling Contract · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-centroid-sampling-contract.html
WebGPU Clipping Planes Contract / Three.js Foundations

Explore WebGPU Clipping Planes Contract / Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-clipping-contract.html
WebGPU Clipping Stencil Contract / Three.js Foundations

Explore WebGPU Clipping Stencil Contract / Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-clipping-stencil-contract.html
CubeMap Mipmaps Contract · Three.js Foundations

Explore CubeMap Mipmaps Contract · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-cubemap-mipmaps-contract.html
WebGPU Custom Fog Background | Three.js Foundations

A focused implementation of the official post-processing contract: scene pass, view-Z range fog, tone-mapped scene color, fog-color mix, and a color-transforming RenderPipeline output.

/webgpu-custom-fog-background-contract.html
WebGPU Custom Fog | Three.js Foundations

A bounded implementation of the official custom-fog contract: world-height pooling, two-octave procedural haze, distance fade, a sun-aligned key light, and deterministic terrain/forest proxies.

/webgpu-custom-fog-contract.html
WebGPU Fog Scattering | Three.js Foundations

A bounded implementation of the official scattering contract: density fog, a downsampled Gaussian blur, and a fog-weighted composite over deterministic generated trees.

/webgpu-custom-fog-scattering-contract.html
WebGPU Depth Texture | Three.js Foundations

A bounded implementation of the official depth-target contract: render the scene into a floating-point depth attachment, then display that attachment through a fullscreen preview.

/webgpu-depth-texture-contract.html
WebGPU Stereo Effects Contract / Three.js Foundations

Explore WebGPU Stereo Effects Contract / Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-display-stereo-contract.html
WebGPU Fat Lines · Three.js Foundations

These focused modes separate WebGPU Line2 construction, instanced segment topology, wireframe generation, and post-render raycasting resolution.

/webgpu-fat-lines.html
WebGPU Height Fog | Three.js Foundations

Explore WebGPU Height Fog | Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-fog-height-contract.html
WebGPU White Furnace Test | Three.js Foundations

A white furnace makes conservation visible: roughness runs left to right, metalness runs top to bottom, and every sphere shares the same filtered radiance.

/webgpu-furnace-test-contract.html
Ground Projection Contract · Three.js Foundations

A procedural six-face environment feeds the official-style TSL cubeTexture(..., getGroundProjectedNormal(...)) graph. The capture height controls the projected ground disk while the scene keeps a...

/webgpu-ground-projection-contract.html
WebGPU HDR Draw | Three.js Foundations

A single additive brush becomes a small HDR canvas: HalfFloat output, Extended sRGB presentation, TSL radial falloff, and an AfterImage trail.

/webgpu-hdr-contract.html
WebGPU Instancing Morph Contract · Three.js Foundations

The pinned gallery example loads Horse.glb, shares its morph-target geometry through one InstancedMesh, and writes a different AnimationMixer time into each instance’s morphTexture. This route...

/webgpu-instancing-morph-contract.html
WebGPU Layers · Three.js Foundations

Explore WebGPU Layers · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-layers-contract.html
Light Probe Volume · Multi-Room Contract

The official multi-room example adds two independently baked LightProbeGrid instances to one scene. This contract lab keeps their ownership visible: bake separately, detach one grid, then reattach...

/webgpu-lightprobes-complex-contract.html
Light Probe Volume · Progressive Contract

The official Sponza example schedules four probe captures per frame, completes each pass before the next indirect bounce, and keeps the helper out of cubemap captures. This synthetic atrium makes...

/webgpu-lightprobes-sponza-contract.html
WebGPU Basic Material | Three.js Foundations

Explore WebGPU Basic Material | Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-materials-basic-contract.html
WebGPU Materials Matrix · Three.js Foundations

Explore WebGPU Materials Matrix · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-materials-contract.html
WebGPU Lightmap Material | Three.js Foundations

Explore WebGPU Lightmap Material | Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-materials-lightmap-contract.html
WebGPU Matcap Material | Three.js Foundations

Explore WebGPU Matcap Material | Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-materials-matcap-contract.html
WebGPU Batch Mesh · Three.js Foundations

Explore WebGPU Batch Mesh · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-mesh-batch-contract.html
WebGPU Mirror Contract | Three.js Foundations

ReflectorNode captures a reflected camera into an internal render target. This compact contract makes its target, depth, resolution, and bounce policy observable without claiming the official...

/webgpu-mirror-contract.html
WebGPU Multisampled Renderbuffers | Three.js Foundations

Explore WebGPU Multisampled Renderbuffers | Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-multisampled-renderbuffers-contract.html
WebGPU Particles · Three.js Foundations

Explore WebGPU Particles · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-particles-contract.html
WebGPU Performance | Three.js Foundations

Explore WebGPU Performance | Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-performance-contract.html
WebGPU Render Bundle | Three.js Foundations

Explore WebGPU Render Bundle | Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-performance-renderbundle-contract.html
WebGPU PMREM Cubemap | Three.js Foundations

A bounded study of the official cubemap PMREM contract: six deterministic faces, a native environment node or fallback PMREM target, and a 6×5 physical-material grid spanning roughness and metalness.

/webgpu-pmrem-cubemap-contract.html
WebGPU PMREM Equirectangular | Three.js Foundations

A bounded implementation of the official equirectangular PMREM contract: decode the Ultra HDR source, prefilter it for physical materials, and expose the filtered radiance through the native node...

/webgpu-pmrem-equirectangular-contract.html
WebGPU PMREM Scene | Three.js Foundations

A bounded implementation of the official scene-derived PMREM contract: render a cube-lit source scene into a filtered target, then sample that target through a native node or explicit WebGL2 preview.

/webgpu-pmrem-scene-contract.html
WebGPU PMREM Test | Three.js Foundations

Compare the native WebGPU PMREM approximation against a matched DirectionalLight: a single bright radiance sample, a white/black metal/dielectric grid, and a clear switch between environment and...

/webgpu-pmrem-test-contract.html
WebGPU Portal - Three.js Foundations

The portal surface samples a second animated scene through the TSL pass(scenePortal, camera) graph.

/webgpu-portal.html
WebGPU Post Processing · Three.js Foundations

A deterministic 100-object field makes the official post-processing chain observable: a scene pass feeds a dot-screen node, then an RGB-shift node owns the screen.

/webgpu-postprocessing-contract.html
WebGPU Direct Post-Processing Contract / Three.js Foundations

Explore WebGPU Direct Post-Processing Contract / Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-postprocessing-direct-contract.html
WebGPU FXAA - Three.js Foundations

This study isolates the current WebGPU FXAA node boundary: a scene texture is color-transformed, passed through FXAANode, and written by a native RenderPipeline. The fallback keeps direct WebGL2...

/webgpu-postprocessing-fxaa.html
WebGPU Lensflare | Three.js Foundations

A named emissive MRT attachment feeds BloomNode, LensflareNode samples the bloom along the image center, and GaussianBlurNode softens the resulting ghosts before the RenderPipeline composite.

/webgpu-postprocessing-lensflare.html
WebGPU Radial Blur - Three.js Foundations

This study isolates the installed TSL radialBlur() contract: the scene pass feeds center-directed samples, while the direct WebGL2 lane stays explicitly outside the native node graph.

/webgpu-postprocessing-radial-blur.html
WebGPU Procedural Texture | Three.js Foundations

Explore WebGPU Procedural Texture | Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-procedural-texture-contract.html
WebGPU Sandbox Contract / Three.js Foundations

Explore WebGPU Sandbox Contract / Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-sandbox-contract.html
WebGPU Contact Shadows · Three.js Foundations

Explore WebGPU Contact Shadows · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-shadow-contact-contract.html
SpotLight Contract · Three.js Foundations

A real SpotLight makes target ownership, cone angle, penumbra, distance, decay, and shadow-map state inspectable on native WebGPU with an explicitly labeled WebGL2 fallback.

/webgpu-spotlight-contract.html
WebGPU Sprites · Three.js Foundations

The official sprites example turns a shared texture into a deep field of camera-facing sprites. This lab keeps the custom node contract visible: texture and UV color, alpha opacity, and per-sprite...

/webgpu-sprites-contract.html
WebGPU Memory Test · Three.js Foundations

The official memory test deliberately creates a sphere, CanvasTexture, and Lambert material during every animation frame, then disposes the prior resources. This lab makes that ownership boundary...

/webgpu-test-memory-contract.html
WebGPU Toon Material | Three.js Foundations

Explore WebGPU Toon Material | Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-toon-contract.html
WebGPU TSL editor contract · Three.js Foundations

The official editor compiles an editable TSL fragment node into a live plane, then asks the renderer for the backend shader. This local study keeps that boundary visible without depending on the...

/webgpu-tsl-editor-contract.html
WebGPU TSL Graph contract · Three.js Foundations

The official TSL Graph example attaches graph IDs to four NodeMaterial families, loads a graph document, and lets Inspector apply it to a shader-ball scene. This route keeps those ownership...

/webgpu-tsl-graph-contract.html
WGSL / TSL Interoperability · Three.js Foundations

The same varying, texture, sampler, and uniform contract drives handwritten WGSL above and a TSL node graph below. Their CRT-style masks make the shared inputs visible.

/webgpu-tsl-interoperability.html
WebGPU Video Frame Contract · Three.js Foundations

Explore WebGPU Video Frame Contract · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-video-frame-contract.html
WebGPU Video Panorama Contract · Three.js Foundations

Explore WebGPU Video Panorama Contract · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-video-panorama-contract.html
WebGPU Volumetric Lighting + TRAA / Three.js Foundations

Explore WebGPU Volumetric Lighting + TRAA / Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webgpu-volume-lighting-traa-contract.html
VXGI Contract · Three.js Foundations

The pinned example uses Voxel Cone Tracing: a depth/normal MRT pre-pass feeds VXGI, indirect light enters through builtinGIContext, and temporal noise resolves with TRAA.

/webgpu-vxgi-contract.html
VXGI Sponza - Three.js Foundations

The pinned example loads the Khronos Sponza glTF, derives a directional sun from its bounds, and sends depth, packed normals, and velocity through a VXGI → GI-context → TRAA graph.

/webgpu-vxgi-sponza-contract.html
WebXR AR cones - Three.js Foundations

Explore WebXR AR cones - Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webxr-ar-cones-contract.html
WebXR VR stereo panorama - Three.js Foundations

Explore WebXR VR stereo panorama - Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webxr-vr-panorama-contract.html
WebXR VR panorama depth - Three.js Foundations

Explore WebXR VR panorama depth - Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webxr-vr-panorama-depth-contract.html
WebXR VR rollercoaster - Three.js Foundations

Explore WebXR VR rollercoaster - Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webxr-vr-rollercoaster-contract.html
WebXR VR Sandbox · Three.js Foundations

Explore WebXR VR Sandbox · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webxr-vr-sandbox-contract.html
WebXR VR stereo video - Three.js Foundations

Explore WebXR VR stereo video - Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webxr-vr-video-contract.html
WebXR XR Cubes · Three.js Foundations

Explore WebXR XR Cubes · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webxr-xr-cubes-contract.html
WebXR XR Sculpt · Three.js Foundations

Explore WebXR XR Sculpt · Three.js Foundations with an interactive Three.js study and browser-based rendering controls.

/webxr-xr-sculpt-contract.html
XR Hand Pointer · Three.js Foundations

Study the hand-pointer boundary as a deterministic desktop harness: a target ray finds the nearest mesh, pinch drives button states, and drag ownership is attached one frame later before returning...

/xr-hand-pointer.html

No demos match that search. Try a broader topic, or show all demos.