diff --git a/examples-testing/changes.patch b/examples-testing/changes.patch
index 38a3d9c81..5953a1005 100644
--- a/examples-testing/changes.patch
+++ b/examples-testing/changes.patch
@@ -1,5 +1,5 @@
diff --git a/examples-testing/examples/css2d_label.ts b/examples-testing/examples/css2d_label.ts
-index 1b288998..4a5af212 100644
+index 1b2889980..4a5af2121 100644
--- a/examples-testing/examples/css2d_label.ts
+++ b/examples-testing/examples/css2d_label.ts
@@ -7,7 +7,7 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -39,7 +39,7 @@ index 1b288998..4a5af212 100644
scene.add(moon);
diff --git a/examples-testing/examples/css3d_mixed.ts b/examples-testing/examples/css3d_mixed.ts
-index b526e73e..261f0d70 100644
+index b526e73e5..261f0d704 100644
--- a/examples-testing/examples/css3d_mixed.ts
+++ b/examples-testing/examples/css3d_mixed.ts
@@ -3,8 +3,11 @@ import * as THREE from 'three';
@@ -66,7 +66,7 @@ index b526e73e..261f0d70 100644
const material = new THREE.MeshStandardMaterial({ color: 0x2200ff });
diff --git a/examples-testing/examples/css3d_molecules.ts b/examples-testing/examples/css3d_molecules.ts
-index 53847260..f08bb34a 100644
+index 538472607..f08bb34ab 100644
--- a/examples-testing/examples/css3d_molecules.ts
+++ b/examples-testing/examples/css3d_molecules.ts
@@ -5,11 +5,11 @@ import { PDBLoader } from 'three/addons/loaders/PDBLoader.js';
@@ -182,7 +182,7 @@ index 53847260..f08bb34a 100644
const atom = document.createElement('img');
atom.src = colorSprite;
diff --git a/examples-testing/examples/css3d_orthographic.ts b/examples-testing/examples/css3d_orthographic.ts
-index 4aabbed0..67e41fde 100644
+index 4aabbed08..67e41fde7 100644
--- a/examples-testing/examples/css3d_orthographic.ts
+++ b/examples-testing/examples/css3d_orthographic.ts
@@ -2,11 +2,11 @@ import * as THREE from 'three';
@@ -284,7 +284,7 @@ index 4aabbed0..67e41fde 100644
camera.setViewOffset(
fullWidth || window.innerWidth,
diff --git a/examples-testing/examples/css3d_periodictable.ts b/examples-testing/examples/css3d_periodictable.ts
-index e3a33f79..516df464 100644
+index e3a33f796..516df464c 100644
--- a/examples-testing/examples/css3d_periodictable.ts
+++ b/examples-testing/examples/css3d_periodictable.ts
@@ -597,11 +597,16 @@ const table = [
@@ -389,7 +389,7 @@ index e3a33f79..516df464 100644
.onUpdate(render)
.start();
diff --git a/examples-testing/examples/css3d_sandbox.ts b/examples-testing/examples/css3d_sandbox.ts
-index 1088b84b..02f1fa75 100644
+index 1088b84b1..02f1fa75a 100644
--- a/examples-testing/examples/css3d_sandbox.ts
+++ b/examples-testing/examples/css3d_sandbox.ts
@@ -2,13 +2,13 @@ import * as THREE from 'three';
@@ -490,7 +490,7 @@ index 1088b84b..02f1fa75 100644
camera.setViewOffset(
fullWidth || window.innerWidth,
diff --git a/examples-testing/examples/css3d_sprites.ts b/examples-testing/examples/css3d_sprites.ts
-index 39c3455a..b3092cf3 100644
+index 39c3455a5..b3092cf3c 100644
--- a/examples-testing/examples/css3d_sprites.ts
+++ b/examples-testing/examples/css3d_sprites.ts
@@ -4,12 +4,12 @@ import TWEEN from 'three/addons/libs/tween.module.js';
@@ -538,7 +538,7 @@ index 39c3455a..b3092cf3 100644
.onComplete(transition)
.start();
diff --git a/examples-testing/examples/css3d_youtube.ts b/examples-testing/examples/css3d_youtube.ts
-index 62652f87..3dcc2f12 100644
+index 62652f87f..3dcc2f12b 100644
--- a/examples-testing/examples/css3d_youtube.ts
+++ b/examples-testing/examples/css3d_youtube.ts
@@ -3,10 +3,10 @@ import * as THREE from 'three';
@@ -589,7 +589,7 @@ index 62652f87..3dcc2f12 100644
controls.addEventListener('start', function () {
diff --git a/examples-testing/examples/games_fps.ts b/examples-testing/examples/games_fps.ts
-index ed08fb5f..7b533de6 100644
+index ed08fb5fa..7b533de69 100644
--- a/examples-testing/examples/games_fps.ts
+++ b/examples-testing/examples/games_fps.ts
@@ -40,7 +40,7 @@ directionalLight.shadow.radius = 4;
@@ -691,7 +691,7 @@ index ed08fb5f..7b533de6 100644
}
});
diff --git a/examples-testing/examples/misc_animation_groups.ts b/examples-testing/examples/misc_animation_groups.ts
-index 9fed234f..638dab1f 100644
+index 9fed234fc..638dab1f7 100644
--- a/examples-testing/examples/misc_animation_groups.ts
+++ b/examples-testing/examples/misc_animation_groups.ts
@@ -2,8 +2,8 @@ import * as THREE from 'three';
@@ -706,7 +706,7 @@ index 9fed234f..638dab1f 100644
init();
diff --git a/examples-testing/examples/misc_animation_keys.ts b/examples-testing/examples/misc_animation_keys.ts
-index 32d497e5..505c3458 100644
+index 32d497e5a..505c34580 100644
--- a/examples-testing/examples/misc_animation_keys.ts
+++ b/examples-testing/examples/misc_animation_keys.ts
@@ -2,8 +2,8 @@ import * as THREE from 'three';
@@ -733,7 +733,7 @@ index 32d497e5..505c3458 100644
scene.add(mesh);
diff --git a/examples-testing/examples/misc_boxselection.ts b/examples-testing/examples/misc_boxselection.ts
-index e7079c40..e1d6904d 100644
+index e7079c405..e1d6904dc 100644
--- a/examples-testing/examples/misc_boxselection.ts
+++ b/examples-testing/examples/misc_boxselection.ts
@@ -5,8 +5,8 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -794,7 +794,7 @@ index e7079c40..e1d6904d 100644
}
});
diff --git a/examples-testing/examples/misc_controls_arcball.ts b/examples-testing/examples/misc_controls_arcball.ts
-index f2611be6..5982d695 100644
+index f2611be64..5982d6958 100644
--- a/examples-testing/examples/misc_controls_arcball.ts
+++ b/examples-testing/examples/misc_controls_arcball.ts
@@ -12,8 +12,12 @@ const cameraType = { type: 'Perspective' };
@@ -860,7 +860,7 @@ index f2611be6..5982d695 100644
camera = makeOrthographicCamera();
camera.position.set(0, 0, orthographicDistance);
diff --git a/examples-testing/examples/misc_controls_drag.ts b/examples-testing/examples/misc_controls_drag.ts
-index b12b0421..c3b378aa 100644
+index b12b0421e..c3b378aa7 100644
--- a/examples-testing/examples/misc_controls_drag.ts
+++ b/examples-testing/examples/misc_controls_drag.ts
@@ -2,12 +2,12 @@ import * as THREE from 'three';
@@ -912,7 +912,7 @@ index b12b0421..c3b378aa 100644
}
diff --git a/examples-testing/examples/misc_controls_fly.ts b/examples-testing/examples/misc_controls_fly.ts
-index 6493ebd8..50e66d62 100644
+index 6493ebd8a..50e66d62e 100644
--- a/examples-testing/examples/misc_controls_fly.ts
+++ b/examples-testing/examples/misc_controls_fly.ts
@@ -16,11 +16,15 @@ const MARGIN = 0;
@@ -963,7 +963,7 @@ index 6493ebd8..50e66d62 100644
meshMoon = new THREE.Mesh(geometry, materialMoon);
meshMoon.position.set(radius * 5, 0, 0);
diff --git a/examples-testing/examples/misc_controls_map.ts b/examples-testing/examples/misc_controls_map.ts
-index 9c7af0cd..2946df42 100644
+index 9c7af0cda..2946df424 100644
--- a/examples-testing/examples/misc_controls_map.ts
+++ b/examples-testing/examples/misc_controls_map.ts
@@ -4,7 +4,7 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -976,7 +976,7 @@ index 9c7af0cd..2946df42 100644
init();
//render(); // remove when using animation loop
diff --git a/examples-testing/examples/misc_controls_orbit.ts b/examples-testing/examples/misc_controls_orbit.ts
-index 7d2ec262..e8115f05 100644
+index 7d2ec2626..e8115f050 100644
--- a/examples-testing/examples/misc_controls_orbit.ts
+++ b/examples-testing/examples/misc_controls_orbit.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
@@ -989,7 +989,7 @@ index 7d2ec262..e8115f05 100644
init();
//render(); // remove when using animation loop
diff --git a/examples-testing/examples/misc_controls_pointerlock.ts b/examples-testing/examples/misc_controls_pointerlock.ts
-index 0b6fcc51..d97bb4c3 100644
+index 0b6fcc516..d97bb4c3b 100644
--- a/examples-testing/examples/misc_controls_pointerlock.ts
+++ b/examples-testing/examples/misc_controls_pointerlock.ts
@@ -2,11 +2,11 @@ import * as THREE from 'three';
@@ -1059,7 +1059,7 @@ index 0b6fcc51..d97bb4c3 100644
const box = new THREE.Mesh(boxGeometry, boxMaterial);
diff --git a/examples-testing/examples/misc_controls_trackball.ts b/examples-testing/examples/misc_controls_trackball.ts
-index c2512a35..c4719944 100644
+index c2512a352..c4719944f 100644
--- a/examples-testing/examples/misc_controls_trackball.ts
+++ b/examples-testing/examples/misc_controls_trackball.ts
@@ -5,7 +5,12 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -1086,7 +1086,7 @@ index c2512a35..c4719944 100644
controls.rotateSpeed = 1.0;
diff --git a/examples-testing/examples/misc_controls_transform.ts b/examples-testing/examples/misc_controls_transform.ts
-index 6f7793d3..d7d327e9 100644
+index 6f7793d33..d7d327e96 100644
--- a/examples-testing/examples/misc_controls_transform.ts
+++ b/examples-testing/examples/misc_controls_transform.ts
@@ -3,8 +3,8 @@ import * as THREE from 'three';
@@ -1112,7 +1112,7 @@ index 6f7793d3..d7d327e9 100644
orbit.object = currentCamera;
diff --git a/examples-testing/examples/misc_exporter_draco.ts b/examples-testing/examples/misc_exporter_draco.ts
-index 40a62fb1..cb9d3f59 100644
+index 40a62fb18..cb9d3f599 100644
--- a/examples-testing/examples/misc_exporter_draco.ts
+++ b/examples-testing/examples/misc_exporter_draco.ts
@@ -4,7 +4,11 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -1144,7 +1144,7 @@ index 40a62fb1..cb9d3f59 100644
save(new Blob([buffer], { type: 'application/octet-stream' }), filename);
}
diff --git a/examples-testing/examples/misc_exporter_exr.ts b/examples-testing/examples/misc_exporter_exr.ts
-index 014ea58a..643f6352 100644
+index 014ea58a0..643f63522 100644
--- a/examples-testing/examples/misc_exporter_exr.ts
+++ b/examples-testing/examples/misc_exporter_exr.ts
@@ -5,7 +5,14 @@ import { EXRExporter, ZIP_COMPRESSION, ZIPS_COMPRESSION, NO_COMPRESSION } from '
@@ -1173,7 +1173,7 @@ index 014ea58a..643f6352 100644
const link = document.createElement('a');
diff --git a/examples-testing/examples/misc_exporter_gltf.ts b/examples-testing/examples/misc_exporter_gltf.ts
-index f6fe0345..98c4a481 100644
+index f6fe03450..98c4a4815 100644
--- a/examples-testing/examples/misc_exporter_gltf.ts
+++ b/examples-testing/examples/misc_exporter_gltf.ts
@@ -7,7 +7,7 @@ import { MeshoptDecoder } from 'three/addons/libs/meshopt_decoder.module.js';
@@ -1246,7 +1246,7 @@ index f6fe0345..98c4a481 100644
ctx.fillRect(0, 0, 64, 64);
ctx.fillStyle = '#FFD500';
diff --git a/examples-testing/examples/misc_exporter_ktx2.ts b/examples-testing/examples/misc_exporter_ktx2.ts
-index c96889a2..1c8535e0 100644
+index c96889a24..1c8535e0e 100644
--- a/examples-testing/examples/misc_exporter_ktx2.ts
+++ b/examples-testing/examples/misc_exporter_ktx2.ts
@@ -5,7 +5,14 @@ import { KTX2Exporter } from 'three/addons/exporters/KTX2Exporter.js';
@@ -1275,7 +1275,7 @@ index c96889a2..1c8535e0 100644
const link = document.createElement('a');
diff --git a/examples-testing/examples/misc_exporter_obj.ts b/examples-testing/examples/misc_exporter_obj.ts
-index 025034da..73638fff 100644
+index 025034daf..73638fff1 100644
--- a/examples-testing/examples/misc_exporter_obj.ts
+++ b/examples-testing/examples/misc_exporter_obj.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -1320,7 +1320,7 @@ index 025034da..73638fff 100644
}
diff --git a/examples-testing/examples/misc_exporter_ply.ts b/examples-testing/examples/misc_exporter_ply.ts
-index b7e32468..c1682103 100644
+index b7e324688..c1682103c 100644
--- a/examples-testing/examples/misc_exporter_ply.ts
+++ b/examples-testing/examples/misc_exporter_ply.ts
@@ -4,7 +4,11 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -1357,7 +1357,7 @@ index b7e32468..c1682103 100644
save(new Blob([buffer], { type: 'application/octet-stream' }), filename);
}
diff --git a/examples-testing/examples/misc_exporter_stl.ts b/examples-testing/examples/misc_exporter_stl.ts
-index ff6d6e2b..105aeb07 100644
+index ff6d6e2b5..105aeb07d 100644
--- a/examples-testing/examples/misc_exporter_stl.ts
+++ b/examples-testing/examples/misc_exporter_stl.ts
@@ -4,7 +4,11 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -1394,7 +1394,7 @@ index ff6d6e2b..105aeb07 100644
save(new Blob([buffer], { type: 'application/octet-stream' }), filename);
}
diff --git a/examples-testing/examples/misc_exporter_usdz.ts b/examples-testing/examples/misc_exporter_usdz.ts
-index f1ce6548..5ec818dd 100644
+index f1ce65485..5ec818dd0 100644
--- a/examples-testing/examples/misc_exporter_usdz.ts
+++ b/examples-testing/examples/misc_exporter_usdz.ts
@@ -7,7 +7,7 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -1434,7 +1434,7 @@ index f1ce6548..5ec818dd 100644
}
diff --git a/examples-testing/examples/misc_uv_tests.ts b/examples-testing/examples/misc_uv_tests.ts
-index 4f782d45..0759cfca 100644
+index 4f782d45f..0759cfcad 100644
--- a/examples-testing/examples/misc_uv_tests.ts
+++ b/examples-testing/examples/misc_uv_tests.ts
@@ -7,7 +7,7 @@ import { UVsDebug } from 'three/addons/utils/UVsDebug.js';
@@ -1447,7 +1447,7 @@ index 4f782d45..0759cfca 100644
d.innerHTML = '
' + name + '
';
diff --git a/examples-testing/examples/physics_ammo_instancing.ts b/examples-testing/examples/physics_ammo_instancing.ts
-index 5cbee326..400763ef 100644
+index 5cbee3260..400763ef9 100644
--- a/examples-testing/examples/physics_ammo_instancing.ts
+++ b/examples-testing/examples/physics_ammo_instancing.ts
@@ -1,12 +1,12 @@
@@ -1468,7 +1468,7 @@ index 5cbee326..400763ef 100644
init();
diff --git a/examples-testing/examples/physics_jolt_instancing.ts b/examples-testing/examples/physics_jolt_instancing.ts
-index 70980b8d..e102f557 100644
+index 70980b8d5..e102f5577 100644
--- a/examples-testing/examples/physics_jolt_instancing.ts
+++ b/examples-testing/examples/physics_jolt_instancing.ts
@@ -1,12 +1,12 @@
@@ -1489,7 +1489,7 @@ index 70980b8d..e102f557 100644
init();
diff --git a/examples-testing/examples/physics_rapier_basic.ts b/examples-testing/examples/physics_rapier_basic.ts
-index 0bacda80..cb3c4e4b 100644
+index 0bacda80c..cb3c4e4b5 100644
--- a/examples-testing/examples/physics_rapier_basic.ts
+++ b/examples-testing/examples/physics_rapier_basic.ts
@@ -1,12 +1,16 @@
@@ -1527,7 +1527,7 @@ index 0bacda80..cb3c4e4b 100644
}
}
diff --git a/examples-testing/examples/physics_rapier_character_controller.ts b/examples-testing/examples/physics_rapier_character_controller.ts
-index 8e797a98..d9b8caa6 100644
+index 8e797a98c..d9b8caa6f 100644
--- a/examples-testing/examples/physics_rapier_character_controller.ts
+++ b/examples-testing/examples/physics_rapier_character_controller.ts
@@ -1,12 +1,14 @@
@@ -1559,7 +1559,7 @@ index 8e797a98..d9b8caa6 100644
}
diff --git a/examples-testing/examples/physics_rapier_instancing.ts b/examples-testing/examples/physics_rapier_instancing.ts
-index 20509f7f..c6e0ca0e 100644
+index 20509f7fd..c6e0ca0e1 100644
--- a/examples-testing/examples/physics_rapier_instancing.ts
+++ b/examples-testing/examples/physics_rapier_instancing.ts
@@ -1,12 +1,12 @@
@@ -1580,7 +1580,7 @@ index 20509f7f..c6e0ca0e 100644
init();
diff --git a/examples-testing/examples/physics_rapier_joints.ts b/examples-testing/examples/physics_rapier_joints.ts
-index 5f8805fe..318ffa8e 100644
+index 5f8805fe1..318ffa8ef 100644
--- a/examples-testing/examples/physics_rapier_joints.ts
+++ b/examples-testing/examples/physics_rapier_joints.ts
@@ -1,11 +1,11 @@
@@ -1608,7 +1608,7 @@ index 5f8805fe..318ffa8e 100644
const material = new THREE.MeshStandardMaterial({ color: 0xcccc00 });
diff --git a/examples-testing/examples/physics_rapier_terrain.ts b/examples-testing/examples/physics_rapier_terrain.ts
-index 7708ceab..96c71642 100644
+index 7708ceab8..96c716420 100644
--- a/examples-testing/examples/physics_rapier_terrain.ts
+++ b/examples-testing/examples/physics_rapier_terrain.ts
@@ -1,7 +1,7 @@
@@ -1701,7 +1701,7 @@ index 7708ceab..96c71642 100644
const data = new Float32Array(size);
const hRange = maxHeight - minHeight;
diff --git a/examples-testing/examples/physics_rapier_vehicle_controller.ts b/examples-testing/examples/physics_rapier_vehicle_controller.ts
-index fac5ef08..d4399154 100644
+index fac5ef082..d4399154b 100644
--- a/examples-testing/examples/physics_rapier_vehicle_controller.ts
+++ b/examples-testing/examples/physics_rapier_vehicle_controller.ts
@@ -1,12 +1,23 @@
@@ -1771,7 +1771,7 @@ index fac5ef08..d4399154 100644
const steerAngle = Math.PI / 4;
diff --git a/examples-testing/examples/svg_lines.ts b/examples-testing/examples/svg_lines.ts
-index 99b74c40..65aaf28d 100644
+index 99b74c405..65aaf28dd 100644
--- a/examples-testing/examples/svg_lines.ts
+++ b/examples-testing/examples/svg_lines.ts
@@ -4,7 +4,7 @@ import { SVGRenderer } from 'three/addons/renderers/SVGRenderer.js';
@@ -1784,7 +1784,7 @@ index 99b74c40..65aaf28d 100644
init();
animate();
diff --git a/examples-testing/examples/svg_sandbox.ts b/examples-testing/examples/svg_sandbox.ts
-index fa66f10e..d9e680e8 100644
+index fa66f10e1..d9e680e89 100644
--- a/examples-testing/examples/svg_sandbox.ts
+++ b/examples-testing/examples/svg_sandbox.ts
@@ -7,9 +7,9 @@ import { SVGRenderer, SVGObject } from 'three/addons/renderers/SVGRenderer.js';
@@ -1869,7 +1869,7 @@ index fa66f10e..d9e680e8 100644
node.appendChild(doc.documentElement);
diff --git a/examples-testing/examples/webaudio_orientation.ts b/examples-testing/examples/webaudio_orientation.ts
-index 7baaa88a..e133c2cd 100644
+index 7baaa88a0..e133c2cd2 100644
--- a/examples-testing/examples/webaudio_orientation.ts
+++ b/examples-testing/examples/webaudio_orientation.ts
@@ -4,16 +4,16 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -1931,7 +1931,7 @@ index 7baaa88a..e133c2cd 100644
const wall = new THREE.Mesh(wallGeometry, wallMaterial);
wall.position.set(0, 0.5, -0.5);
diff --git a/examples-testing/examples/webaudio_sandbox.ts b/examples-testing/examples/webaudio_sandbox.ts
-index 34afca98..93e03302 100644
+index 34afca985..93e033027 100644
--- a/examples-testing/examples/webaudio_sandbox.ts
+++ b/examples-testing/examples/webaudio_sandbox.ts
@@ -4,20 +4,24 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -2036,7 +2036,7 @@ index 34afca98..93e03302 100644
const gui = new GUI();
const soundControls = new SoundControls();
diff --git a/examples-testing/examples/webaudio_timing.ts b/examples-testing/examples/webaudio_timing.ts
-index f37b5c5c..9b6c61f9 100644
+index f37b5c5cf..9b6c61f9a 100644
--- a/examples-testing/examples/webaudio_timing.ts
+++ b/examples-testing/examples/webaudio_timing.ts
@@ -2,22 +2,22 @@ import * as THREE from 'three';
@@ -2077,7 +2077,7 @@ index f37b5c5c..9b6c61f9 100644
ball.userData.down = false;
}
diff --git a/examples-testing/examples/webaudio_visualizer.ts b/examples-testing/examples/webaudio_visualizer.ts
-index a3f58cb3..0bad866f 100644
+index a3f58cb36..0bad866f6 100644
--- a/examples-testing/examples/webaudio_visualizer.ts
+++ b/examples-testing/examples/webaudio_visualizer.ts
@@ -1,8 +1,13 @@
@@ -2123,7 +2123,7 @@ index a3f58cb3..0bad866f 100644
const geometry = new THREE.PlaneGeometry(1, 1);
diff --git a/examples-testing/examples/webgl_animation_keyframes.ts b/examples-testing/examples/webgl_animation_keyframes.ts
-index 20a44a9c..0b6f4895 100644
+index 20a44a9ce..0b6f48955 100644
--- a/examples-testing/examples/webgl_animation_keyframes.ts
+++ b/examples-testing/examples/webgl_animation_keyframes.ts
@@ -8,11 +8,11 @@ import { Sky } from 'three/addons/objects/Sky.js';
@@ -2150,7 +2150,7 @@ index 20a44a9c..0b6f4895 100644
const camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, 1, 100);
diff --git a/examples-testing/examples/webgl_animation_multiple.ts b/examples-testing/examples/webgl_animation_multiple.ts
-index 87355e96..4f93de7c 100644
+index 87355e968..4f93de7cf 100644
--- a/examples-testing/examples/webgl_animation_multiple.ts
+++ b/examples-testing/examples/webgl_animation_multiple.ts
@@ -4,11 +4,11 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -2200,7 +2200,7 @@ index 87355e96..4f93de7c 100644
const model1 = shareSkinnedMesh.clone();
diff --git a/examples-testing/examples/webgl_animation_skinning_morph.ts b/examples-testing/examples/webgl_animation_skinning_morph.ts
-index 0ae68e7d..d7e40e67 100644
+index 0ae68e7d7..d7e40e67a 100644
--- a/examples-testing/examples/webgl_animation_skinning_morph.ts
+++ b/examples-testing/examples/webgl_animation_skinning_morph.ts
@@ -5,10 +5,29 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -2302,7 +2302,7 @@ index 0ae68e7d..d7e40e67 100644
activeAction = actions[name];
diff --git a/examples-testing/examples/webgl_animation_walk.ts b/examples-testing/examples/webgl_animation_walk.ts
-index b4ab9c44..ee10390a 100644
+index b4ab9c444..ee10390a0 100644
--- a/examples-testing/examples/webgl_animation_walk.ts
+++ b/examples-testing/examples/webgl_animation_walk.ts
@@ -6,10 +6,19 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -2462,7 +2462,7 @@ index b4ab9c44..ee10390a 100644
switch (event.code) {
case 'ArrowUp':
diff --git a/examples-testing/examples/webgl_buffergeometry.ts b/examples-testing/examples/webgl_buffergeometry.ts
-index 28b2c96a..6a802ab6 100644
+index 28b2c96a4..6a802ab6c 100644
--- a/examples-testing/examples/webgl_buffergeometry.ts
+++ b/examples-testing/examples/webgl_buffergeometry.ts
@@ -2,17 +2,17 @@ import * as THREE from 'three';
@@ -2499,7 +2499,7 @@ index 28b2c96a..6a802ab6 100644
geometry.setAttribute('position', new THREE.Float32BufferAttribute(positions, 3).onUpload(disposeArray));
diff --git a/examples-testing/examples/webgl_buffergeometry_attributes_integer.ts b/examples-testing/examples/webgl_buffergeometry_attributes_integer.ts
-index 00490b71..c553afe5 100644
+index 00490b716..c553afe5d 100644
--- a/examples-testing/examples/webgl_buffergeometry_attributes_integer.ts
+++ b/examples-testing/examples/webgl_buffergeometry_attributes_integer.ts
@@ -1,6 +1,6 @@
@@ -2520,7 +2520,7 @@ index 00490b71..c553afe5 100644
geometry.computeBoundingSphere();
diff --git a/examples-testing/examples/webgl_buffergeometry_attributes_none.ts b/examples-testing/examples/webgl_buffergeometry_attributes_none.ts
-index a1424e87..f7fcf29f 100644
+index a1424e871..f7fcf29f9 100644
--- a/examples-testing/examples/webgl_buffergeometry_attributes_none.ts
+++ b/examples-testing/examples/webgl_buffergeometry_attributes_none.ts
@@ -1,6 +1,6 @@
@@ -2552,7 +2552,7 @@ index a1424e87..f7fcf29f 100644
mesh.rotation.y = (time / 1000.0) * 0.5;
diff --git a/examples-testing/examples/webgl_buffergeometry_custom_attributes_particles.ts b/examples-testing/examples/webgl_buffergeometry_custom_attributes_particles.ts
-index 0dffa65c..96dd8910 100644
+index 0dffa65cc..96dd89106 100644
--- a/examples-testing/examples/webgl_buffergeometry_custom_attributes_particles.ts
+++ b/examples-testing/examples/webgl_buffergeometry_custom_attributes_particles.ts
@@ -2,9 +2,11 @@ import * as THREE from 'three';
@@ -2590,7 +2590,7 @@ index 0dffa65c..96dd8910 100644
stats = new Stats();
diff --git a/examples-testing/examples/webgl_buffergeometry_drawrange.ts b/examples-testing/examples/webgl_buffergeometry_drawrange.ts
-index 142ff43b..4b26ac2a 100644
+index 142ff43bf..4b26ac2ac 100644
--- a/examples-testing/examples/webgl_buffergeometry_drawrange.ts
+++ b/examples-testing/examples/webgl_buffergeometry_drawrange.ts
@@ -5,15 +5,15 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -2628,7 +2628,7 @@ index 142ff43b..4b26ac2a 100644
camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 4000);
camera.position.z = 1750;
diff --git a/examples-testing/examples/webgl_buffergeometry_glbufferattribute.ts b/examples-testing/examples/webgl_buffergeometry_glbufferattribute.ts
-index 80fa828b..77f1bc38 100644
+index 80fa828bb..77f1bc385 100644
--- a/examples-testing/examples/webgl_buffergeometry_glbufferattribute.ts
+++ b/examples-testing/examples/webgl_buffergeometry_glbufferattribute.ts
@@ -2,11 +2,11 @@ import * as THREE from 'three';
@@ -2684,7 +2684,7 @@ index 80fa828b..77f1bc38 100644
gl.bufferData(gl.ARRAY_BUFFER, new Uint8Array(colors), gl.STATIC_DRAW);
diff --git a/examples-testing/examples/webgl_buffergeometry_indexed.ts b/examples-testing/examples/webgl_buffergeometry_indexed.ts
-index a2f9f379..4ad49d3c 100644
+index a2f9f3795..4ad49d3cd 100644
--- a/examples-testing/examples/webgl_buffergeometry_indexed.ts
+++ b/examples-testing/examples/webgl_buffergeometry_indexed.ts
@@ -3,9 +3,9 @@ import * as THREE from 'three';
@@ -2700,7 +2700,7 @@ index a2f9f379..4ad49d3c 100644
init();
diff --git a/examples-testing/examples/webgl_buffergeometry_instancing.ts b/examples-testing/examples/webgl_buffergeometry_instancing.ts
-index b27f500f..c9432b18 100644
+index b27f500f0..c9432b181 100644
--- a/examples-testing/examples/webgl_buffergeometry_instancing.ts
+++ b/examples-testing/examples/webgl_buffergeometry_instancing.ts
@@ -3,14 +3,14 @@ import * as THREE from 'three';
@@ -2742,7 +2742,7 @@ index b27f500f..c9432b18 100644
object.rotation.y = time * 0.0005;
object.material.uniforms['time'].value = time * 0.005;
diff --git a/examples-testing/examples/webgl_buffergeometry_instancing_billboards.ts b/examples-testing/examples/webgl_buffergeometry_instancing_billboards.ts
-index 2158dff3..2c97fbd9 100644
+index 2158dff39..2c97fbd94 100644
--- a/examples-testing/examples/webgl_buffergeometry_instancing_billboards.ts
+++ b/examples-testing/examples/webgl_buffergeometry_instancing_billboards.ts
@@ -2,10 +2,10 @@ import * as THREE from 'three';
@@ -2771,7 +2771,7 @@ index 2158dff3..2c97fbd9 100644
depthWrite: true,
});
diff --git a/examples-testing/examples/webgl_buffergeometry_instancing_interleaved.ts b/examples-testing/examples/webgl_buffergeometry_instancing_interleaved.ts
-index bef2c264..c0887a8d 100644
+index bef2c264d..c0887a8d3 100644
--- a/examples-testing/examples/webgl_buffergeometry_instancing_interleaved.ts
+++ b/examples-testing/examples/webgl_buffergeometry_instancing_interleaved.ts
@@ -2,8 +2,8 @@ import * as THREE from 'three';
@@ -2795,7 +2795,7 @@ index bef2c264..c0887a8d 100644
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000);
diff --git a/examples-testing/examples/webgl_buffergeometry_lines.ts b/examples-testing/examples/webgl_buffergeometry_lines.ts
-index d039e011..0b39e912 100644
+index d039e0112..0b39e912d 100644
--- a/examples-testing/examples/webgl_buffergeometry_lines.ts
+++ b/examples-testing/examples/webgl_buffergeometry_lines.ts
@@ -2,11 +2,11 @@ import * as THREE from 'three';
@@ -2840,7 +2840,7 @@ index d039e011..0b39e912 100644
for (let i = 0; i < segments; i++) {
diff --git a/examples-testing/examples/webgl_buffergeometry_lines_indexed.ts b/examples-testing/examples/webgl_buffergeometry_lines_indexed.ts
-index 58296087..8af0d6e9 100644
+index 58296087e..8af0d6e9d 100644
--- a/examples-testing/examples/webgl_buffergeometry_lines_indexed.ts
+++ b/examples-testing/examples/webgl_buffergeometry_lines_indexed.ts
@@ -2,16 +2,16 @@ import * as THREE from 'three';
@@ -2905,7 +2905,7 @@ index 58296087..8af0d6e9 100644
add_vertex(points[0]);
diff --git a/examples-testing/examples/webgl_buffergeometry_points.ts b/examples-testing/examples/webgl_buffergeometry_points.ts
-index 4547d9d0..357c3ddd 100644
+index 4547d9d08..357c3ddd6 100644
--- a/examples-testing/examples/webgl_buffergeometry_points.ts
+++ b/examples-testing/examples/webgl_buffergeometry_points.ts
@@ -2,17 +2,17 @@ import * as THREE from 'three';
@@ -2931,7 +2931,7 @@ index 4547d9d0..357c3ddd 100644
//
diff --git a/examples-testing/examples/webgl_buffergeometry_points_interleaved.ts b/examples-testing/examples/webgl_buffergeometry_points_interleaved.ts
-index 93eed992..60e05bc0 100644
+index 93eed992e..60e05bc0a 100644
--- a/examples-testing/examples/webgl_buffergeometry_points_interleaved.ts
+++ b/examples-testing/examples/webgl_buffergeometry_points_interleaved.ts
@@ -2,16 +2,16 @@ import * as THREE from 'three';
@@ -2956,7 +2956,7 @@ index 93eed992..60e05bc0 100644
camera = new THREE.PerspectiveCamera(27, window.innerWidth / window.innerHeight, 5, 3500);
camera.position.z = 2750;
diff --git a/examples-testing/examples/webgl_buffergeometry_rawshader.ts b/examples-testing/examples/webgl_buffergeometry_rawshader.ts
-index 5bc113dc..225e220a 100644
+index 5bc113dc3..225e220ac 100644
--- a/examples-testing/examples/webgl_buffergeometry_rawshader.ts
+++ b/examples-testing/examples/webgl_buffergeometry_rawshader.ts
@@ -2,14 +2,14 @@ import * as THREE from 'three';
@@ -2998,7 +2998,7 @@ index 5bc113dc..225e220a 100644
object.rotation.y = time * 0.0005;
object.material.uniforms.time.value = time * 0.005;
diff --git a/examples-testing/examples/webgl_buffergeometry_selective_draw.ts b/examples-testing/examples/webgl_buffergeometry_selective_draw.ts
-index d07176c5..ce51386e 100644
+index d07176c51..ce51386ee 100644
--- a/examples-testing/examples/webgl_buffergeometry_selective_draw.ts
+++ b/examples-testing/examples/webgl_buffergeometry_selective_draw.ts
@@ -2,8 +2,8 @@ import * as THREE from 'three';
@@ -3055,7 +3055,7 @@ index d07176c5..ce51386e 100644
function hideLines() {
diff --git a/examples-testing/examples/webgl_buffergeometry_uint.ts b/examples-testing/examples/webgl_buffergeometry_uint.ts
-index 0b8df6ec..dbb23e05 100644
+index 0b8df6ec7..dbb23e05e 100644
--- a/examples-testing/examples/webgl_buffergeometry_uint.ts
+++ b/examples-testing/examples/webgl_buffergeometry_uint.ts
@@ -2,16 +2,16 @@ import * as THREE from 'three';
@@ -3080,7 +3080,7 @@ index 0b8df6ec..dbb23e05 100644
//
diff --git a/examples-testing/examples/webgl_camera.ts b/examples-testing/examples/webgl_camera.ts
-index f3d66360..4235f508 100644
+index f3d663603..4235f508f 100644
--- a/examples-testing/examples/webgl_camera.ts
+++ b/examples-testing/examples/webgl_camera.ts
@@ -6,11 +6,11 @@ let SCREEN_WIDTH = window.innerWidth;
@@ -3110,7 +3110,7 @@ index f3d66360..4235f508 100644
case 79 /*O*/:
activeCamera = cameraOrtho;
diff --git a/examples-testing/examples/webgl_camera_array.ts b/examples-testing/examples/webgl_camera_array.ts
-index 8b10e27c..11295c5f 100644
+index 8b10e27cb..11295c5fd 100644
--- a/examples-testing/examples/webgl_camera_array.ts
+++ b/examples-testing/examples/webgl_camera_array.ts
@@ -1,7 +1,7 @@
@@ -3133,7 +3133,7 @@ index 8b10e27c..11295c5f 100644
subcamera.aspect = ASPECT_RATIO;
subcamera.updateProjectionMatrix();
diff --git a/examples-testing/examples/webgl_camera_logarithmicdepthbuffer.ts b/examples-testing/examples/webgl_camera_logarithmicdepthbuffer.ts
-index f1d44000..7f149db1 100644
+index f1d440004..7f149db11 100644
--- a/examples-testing/examples/webgl_camera_logarithmicdepthbuffer.ts
+++ b/examples-testing/examples/webgl_camera_logarithmicdepthbuffer.ts
@@ -1,6 +1,6 @@
@@ -3310,7 +3310,7 @@ index f1d44000..7f149db1 100644
if (amount === 0) return;
const dir = amount / Math.abs(amount);
diff --git a/examples-testing/examples/webgl_clipculldistance.ts b/examples-testing/examples/webgl_clipculldistance.ts
-index 42c1ff17..e7210e99 100644
+index 42c1ff17f..e7210e997 100644
--- a/examples-testing/examples/webgl_clipculldistance.ts
+++ b/examples-testing/examples/webgl_clipculldistance.ts
@@ -2,9 +2,14 @@ import * as THREE from 'three';
@@ -3351,7 +3351,7 @@ index 42c1ff17..e7210e99 100644
transparent: true,
vertexColors: true,
diff --git a/examples-testing/examples/webgl_clipping.ts b/examples-testing/examples/webgl_clipping.ts
-index cde10c7d..6ab3ba65 100644
+index cde10c7d1..6ab3ba65c 100644
--- a/examples-testing/examples/webgl_clipping.ts
+++ b/examples-testing/examples/webgl_clipping.ts
@@ -5,7 +5,12 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -3389,7 +3389,7 @@ index cde10c7d..6ab3ba65 100644
get Plane() {
diff --git a/examples-testing/examples/webgl_clipping_advanced.ts b/examples-testing/examples/webgl_clipping_advanced.ts
-index f65f0004..988b56d8 100644
+index f65f00043..988b56d80 100644
--- a/examples-testing/examples/webgl_clipping_advanced.ts
+++ b/examples-testing/examples/webgl_clipping_advanced.ts
@@ -5,7 +5,7 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -3511,7 +3511,7 @@ index f65f0004..988b56d8 100644
const planeMeshes = volumeVisualization.children;
diff --git a/examples-testing/examples/webgl_clipping_intersection.ts b/examples-testing/examples/webgl_clipping_intersection.ts
-index 5f45e45d..cb3cbdf2 100644
+index 5f45e45df..cb3cbdf2e 100644
--- a/examples-testing/examples/webgl_clipping_intersection.ts
+++ b/examples-testing/examples/webgl_clipping_intersection.ts
@@ -4,7 +4,7 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -3544,7 +3544,7 @@ index 5f45e45d..cb3cbdf2 100644
render();
diff --git a/examples-testing/examples/webgl_clipping_stencil.ts b/examples-testing/examples/webgl_clipping_stencil.ts
-index 7cb1f5c5..859a7551 100644
+index 7cb1f5c52..859a7551f 100644
--- a/examples-testing/examples/webgl_clipping_stencil.ts
+++ b/examples-testing/examples/webgl_clipping_stencil.ts
@@ -3,9 +3,13 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -3574,7 +3574,7 @@ index 7cb1f5c5..859a7551 100644
const baseMat = new THREE.MeshBasicMaterial();
baseMat.depthWrite = false;
diff --git a/examples-testing/examples/webgl_custom_attributes.ts b/examples-testing/examples/webgl_custom_attributes.ts
-index 0dc89774..431876d6 100644
+index 0dc897748..431876d68 100644
--- a/examples-testing/examples/webgl_custom_attributes.ts
+++ b/examples-testing/examples/webgl_custom_attributes.ts
@@ -2,11 +2,16 @@ import * as THREE from 'three';
@@ -3618,7 +3618,7 @@ index 0dc89774..431876d6 100644
stats = new Stats();
diff --git a/examples-testing/examples/webgl_custom_attributes_lines.ts b/examples-testing/examples/webgl_custom_attributes_lines.ts
-index 3e2454e9..d89a77d5 100644
+index 3e2454e92..d89a77d53 100644
--- a/examples-testing/examples/webgl_custom_attributes_lines.ts
+++ b/examples-testing/examples/webgl_custom_attributes_lines.ts
@@ -1,20 +1,25 @@
@@ -3672,7 +3672,7 @@ index 3e2454e9..d89a77d5 100644
stats = new Stats();
diff --git a/examples-testing/examples/webgl_custom_attributes_points.ts b/examples-testing/examples/webgl_custom_attributes_points.ts
-index ae112980..9035134c 100644
+index ae112980a..9035134c7 100644
--- a/examples-testing/examples/webgl_custom_attributes_points.ts
+++ b/examples-testing/examples/webgl_custom_attributes_points.ts
@@ -2,9 +2,9 @@ import * as THREE from 'three';
@@ -3708,7 +3708,7 @@ index ae112980..9035134c 100644
stats = new Stats();
diff --git a/examples-testing/examples/webgl_custom_attributes_points2.ts b/examples-testing/examples/webgl_custom_attributes_points2.ts
-index edd158fa..6f58c70a 100644
+index edd158fa1..6f58c70ad 100644
--- a/examples-testing/examples/webgl_custom_attributes_points2.ts
+++ b/examples-testing/examples/webgl_custom_attributes_points2.ts
@@ -4,8 +4,8 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -3783,7 +3783,7 @@ index edd158fa..6f58c70a 100644
function animate() {
diff --git a/examples-testing/examples/webgl_custom_attributes_points3.ts b/examples-testing/examples/webgl_custom_attributes_points3.ts
-index 1bca8ccd..66f12591 100644
+index 1bca8ccd4..66f12591f 100644
--- a/examples-testing/examples/webgl_custom_attributes_points3.ts
+++ b/examples-testing/examples/webgl_custom_attributes_points3.ts
@@ -4,11 +4,11 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -3860,7 +3860,7 @@ index 1bca8ccd..66f12591 100644
stats = new Stats();
diff --git a/examples-testing/examples/webgl_decals.ts b/examples-testing/examples/webgl_decals.ts
-index 8f77c30f..acc5b219 100644
+index 8f77c30fc..acc5b2193 100644
--- a/examples-testing/examples/webgl_decals.ts
+++ b/examples-testing/examples/webgl_decals.ts
@@ -7,12 +7,12 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -3942,7 +3942,7 @@ index 8f77c30f..acc5b219 100644
specular: 0x111111,
map: map,
diff --git a/examples-testing/examples/webgl_effects_anaglyph.ts b/examples-testing/examples/webgl_effects_anaglyph.ts
-index 7e67c917..e3d0719b 100644
+index 7e67c9173..e3d0719bf 100644
--- a/examples-testing/examples/webgl_effects_anaglyph.ts
+++ b/examples-testing/examples/webgl_effects_anaglyph.ts
@@ -2,9 +2,13 @@ import * as THREE from 'three';
@@ -3971,7 +3971,7 @@ index 7e67c917..e3d0719b 100644
mouseY = (event.clientY - windowHalfY) / 100;
}
diff --git a/examples-testing/examples/webgl_effects_ascii.ts b/examples-testing/examples/webgl_effects_ascii.ts
-index a412bb79..751102d7 100644
+index a412bb79e..751102d76 100644
--- a/examples-testing/examples/webgl_effects_ascii.ts
+++ b/examples-testing/examples/webgl_effects_ascii.ts
@@ -3,9 +3,13 @@ import * as THREE from 'three';
@@ -3991,7 +3991,7 @@ index a412bb79..751102d7 100644
const start = Date.now();
diff --git a/examples-testing/examples/webgl_effects_parallaxbarrier.ts b/examples-testing/examples/webgl_effects_parallaxbarrier.ts
-index 90c86797..e03cb5d7 100644
+index 90c867973..e03cb5d7b 100644
--- a/examples-testing/examples/webgl_effects_parallaxbarrier.ts
+++ b/examples-testing/examples/webgl_effects_parallaxbarrier.ts
@@ -2,9 +2,13 @@ import * as THREE from 'three';
@@ -4020,7 +4020,7 @@ index 90c86797..e03cb5d7 100644
mouseY = (event.clientY - windowHalfY) / 100;
}
diff --git a/examples-testing/examples/webgl_effects_stereo.ts b/examples-testing/examples/webgl_effects_stereo.ts
-index 67385054..98538672 100644
+index 673850541..985386724 100644
--- a/examples-testing/examples/webgl_effects_stereo.ts
+++ b/examples-testing/examples/webgl_effects_stereo.ts
@@ -2,9 +2,13 @@ import * as THREE from 'three';
@@ -4049,7 +4049,7 @@ index 67385054..98538672 100644
mouseY = (event.clientY - windowHalfY) * 0.01;
}
diff --git a/examples-testing/examples/webgl_framebuffer_texture.ts b/examples-testing/examples/webgl_framebuffer_texture.ts
-index df4acc9d..636f9db9 100644
+index df4acc9d6..636f9db9c 100644
--- a/examples-testing/examples/webgl_framebuffer_texture.ts
+++ b/examples-testing/examples/webgl_framebuffer_texture.ts
@@ -3,10 +3,10 @@ import * as THREE from 'three';
@@ -4085,7 +4085,7 @@ index df4acc9d..636f9db9 100644
for (let i = 0; i < l; i++) {
diff --git a/examples-testing/examples/webgl_furnace_test.ts b/examples-testing/examples/webgl_furnace_test.ts
-index a8195417..46230b4a 100644
+index a81954176..46230b4a9 100644
--- a/examples-testing/examples/webgl_furnace_test.ts
+++ b/examples-testing/examples/webgl_furnace_test.ts
@@ -1,6 +1,6 @@
@@ -4117,7 +4117,7 @@ index a8195417..46230b4a 100644
render();
diff --git a/examples-testing/examples/webgl_geometries.ts b/examples-testing/examples/webgl_geometries.ts
-index 0eb50120..a8181348 100644
+index 0eb50120c..a81813486 100644
--- a/examples-testing/examples/webgl_geometries.ts
+++ b/examples-testing/examples/webgl_geometries.ts
@@ -5,7 +5,7 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -4139,7 +4139,7 @@ index 0eb50120..a8181348 100644
object.rotation.y = timer * 2.5;
}
diff --git a/examples-testing/examples/webgl_geometry_colors.ts b/examples-testing/examples/webgl_geometry_colors.ts
-index 3166c03b..d2c22418 100644
+index 3166c03bc..d2c22418f 100644
--- a/examples-testing/examples/webgl_geometry_colors.ts
+++ b/examples-testing/examples/webgl_geometry_colors.ts
@@ -2,9 +2,9 @@ import * as THREE from 'three';
@@ -4192,7 +4192,7 @@ index 3166c03b..d2c22418 100644
mouseY = event.clientY - windowHalfY;
}
diff --git a/examples-testing/examples/webgl_geometry_colors_lookuptable.ts b/examples-testing/examples/webgl_geometry_colors_lookuptable.ts
-index 6b013852..c46e067e 100644
+index 6b0138529..c46e067e6 100644
--- a/examples-testing/examples/webgl_geometry_colors_lookuptable.ts
+++ b/examples-testing/examples/webgl_geometry_colors_lookuptable.ts
@@ -5,19 +5,19 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -4240,7 +4240,7 @@ index 6b013852..c46e067e 100644
map.needsUpdate = true;
}
diff --git a/examples-testing/examples/webgl_geometry_convex.ts b/examples-testing/examples/webgl_geometry_convex.ts
-index 09516c07..fe904221 100644
+index 09516c070..fe9042217 100644
--- a/examples-testing/examples/webgl_geometry_convex.ts
+++ b/examples-testing/examples/webgl_geometry_convex.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -4262,7 +4262,7 @@ index 09516c07..fe904221 100644
// if normal and uv attributes are not removed, mergeVertices() can't consolidate identical vertices with different normal/uv data
diff --git a/examples-testing/examples/webgl_geometry_cube.ts b/examples-testing/examples/webgl_geometry_cube.ts
-index 572601ac..136a3141 100644
+index 572601acb..136a31413 100644
--- a/examples-testing/examples/webgl_geometry_cube.ts
+++ b/examples-testing/examples/webgl_geometry_cube.ts
@@ -1,7 +1,7 @@
@@ -4276,7 +4276,7 @@ index 572601ac..136a3141 100644
init();
diff --git a/examples-testing/examples/webgl_geometry_extrude_shapes.ts b/examples-testing/examples/webgl_geometry_extrude_shapes.ts
-index a905c8ea..00283d47 100644
+index a905c8ea3..00283d47e 100644
--- a/examples-testing/examples/webgl_geometry_extrude_shapes.ts
+++ b/examples-testing/examples/webgl_geometry_extrude_shapes.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
@@ -4289,7 +4289,7 @@ index a905c8ea..00283d47 100644
init();
diff --git a/examples-testing/examples/webgl_geometry_extrude_splines.ts b/examples-testing/examples/webgl_geometry_extrude_splines.ts
-index 8636812f..90e2b7b0 100644
+index 8636812f7..90e2b7b06 100644
--- a/examples-testing/examples/webgl_geometry_extrude_splines.ts
+++ b/examples-testing/examples/webgl_geometry_extrude_splines.ts
@@ -6,9 +6,14 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -4359,7 +4359,7 @@ index 8636812f..90e2b7b0 100644
});
folderGeometry
diff --git a/examples-testing/examples/webgl_geometry_minecraft.ts b/examples-testing/examples/webgl_geometry_minecraft.ts
-index 22015655..32f4cb68 100644
+index 220156552..32f4cb688 100644
--- a/examples-testing/examples/webgl_geometry_minecraft.ts
+++ b/examples-testing/examples/webgl_geometry_minecraft.ts
@@ -6,9 +6,9 @@ import { FirstPersonControls } from 'three/addons/controls/FirstPersonControls.j
@@ -4402,7 +4402,7 @@ index 22015655..32f4cb68 100644
}
diff --git a/examples-testing/examples/webgl_geometry_nurbs.ts b/examples-testing/examples/webgl_geometry_nurbs.ts
-index ecd79c67..74676e45 100644
+index ecd79c67e..74676e45c 100644
--- a/examples-testing/examples/webgl_geometry_nurbs.ts
+++ b/examples-testing/examples/webgl_geometry_nurbs.ts
@@ -7,10 +7,10 @@ import { NURBSSurface } from 'three/addons/curves/NURBSSurface.js';
@@ -4494,7 +4494,7 @@ index ecd79c67..74676e45 100644
document.removeEventListener('pointermove', onPointerMove);
diff --git a/examples-testing/examples/webgl_geometry_shapes.ts b/examples-testing/examples/webgl_geometry_shapes.ts
-index 0c25d885..2042c353 100644
+index 0c25d8855..2042c3530 100644
--- a/examples-testing/examples/webgl_geometry_shapes.ts
+++ b/examples-testing/examples/webgl_geometry_shapes.ts
@@ -2,11 +2,11 @@ import * as THREE from 'three';
@@ -4584,7 +4584,7 @@ index 0c25d885..2042c353 100644
document.removeEventListener('pointermove', onPointerMove);
diff --git a/examples-testing/examples/webgl_geometry_teapot.ts b/examples-testing/examples/webgl_geometry_teapot.ts
-index 2516d660..0d7d5628 100644
+index 2516d660c..0d7d5628f 100644
--- a/examples-testing/examples/webgl_geometry_teapot.ts
+++ b/examples-testing/examples/webgl_geometry_teapot.ts
@@ -5,22 +5,30 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -4631,7 +4631,7 @@ index 2516d660..0d7d5628 100644
init();
render();
diff --git a/examples-testing/examples/webgl_geometry_terrain.ts b/examples-testing/examples/webgl_geometry_terrain.ts
-index 55b4aa47..2ed4b9f6 100644
+index 55b4aa474..2ed4b9f6c 100644
--- a/examples-testing/examples/webgl_geometry_terrain.ts
+++ b/examples-testing/examples/webgl_geometry_terrain.ts
@@ -5,9 +5,9 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -4693,7 +4693,7 @@ index 55b4aa47..2ed4b9f6 100644
context.drawImage(canvas, 0, 0);
diff --git a/examples-testing/examples/webgl_geometry_terrain_raycast.ts b/examples-testing/examples/webgl_geometry_terrain_raycast.ts
-index f1383c13..6e9cd025 100644
+index f1383c138..6e9cd0256 100644
--- a/examples-testing/examples/webgl_geometry_terrain_raycast.ts
+++ b/examples-testing/examples/webgl_geometry_terrain_raycast.ts
@@ -5,18 +5,18 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -4783,7 +4783,7 @@ index f1383c13..6e9cd025 100644
helper.position.copy(intersects[0].point);
}
diff --git a/examples-testing/examples/webgl_geometry_text.ts b/examples-testing/examples/webgl_geometry_text.ts
-index 1a9d00d0..e5947329 100644
+index 1a9d00d06..e59473290 100644
--- a/examples-testing/examples/webgl_geometry_text.ts
+++ b/examples-testing/examples/webgl_geometry_text.ts
@@ -1,23 +1,23 @@
@@ -4895,7 +4895,7 @@ index 1a9d00d0..e5947329 100644
document.removeEventListener('pointermove', onPointerMove);
diff --git a/examples-testing/examples/webgl_geometry_text_shapes.ts b/examples-testing/examples/webgl_geometry_text_shapes.ts
-index d9633cd1..c2b07d41 100644
+index d9633cd15..c2b07d41f 100644
--- a/examples-testing/examples/webgl_geometry_text_shapes.ts
+++ b/examples-testing/examples/webgl_geometry_text_shapes.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -4938,7 +4938,7 @@ index d9633cd1..c2b07d41 100644
if (shape.holes && shape.holes.length > 0) {
for (let j = 0; j < shape.holes.length; j++) {
diff --git a/examples-testing/examples/webgl_geometry_text_stroke.ts b/examples-testing/examples/webgl_geometry_text_stroke.ts
-index 373892c7..9bf58924 100644
+index 373892c74..9bf589244 100644
--- a/examples-testing/examples/webgl_geometry_text_stroke.ts
+++ b/examples-testing/examples/webgl_geometry_text_stroke.ts
@@ -5,7 +5,7 @@ import { SVGLoader } from 'three/addons/loaders/SVGLoader.js';
@@ -5000,7 +5000,7 @@ index 373892c7..9bf58924 100644
if (shape.holes && shape.holes.length > 0) {
for (let j = 0; j < shape.holes.length; j++) {
diff --git a/examples-testing/examples/webgl_gpgpu_birds.ts b/examples-testing/examples/webgl_gpgpu_birds.ts
-index 20a5e0d9..e9293211 100644
+index 20a5e0d97..e9293211c 100644
--- a/examples-testing/examples/webgl_gpgpu_birds.ts
+++ b/examples-testing/examples/webgl_gpgpu_birds.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -5113,7 +5113,7 @@ index 20a5e0d9..e9293211 100644
mouseX = event.clientX - windowHalfX;
diff --git a/examples-testing/examples/webgl_gpgpu_birds_gltf.ts b/examples-testing/examples/webgl_gpgpu_birds_gltf.ts
-index 05f81a86..f86d0d38 100644
+index 05f81a869..f86d0d386 100644
--- a/examples-testing/examples/webgl_gpgpu_birds_gltf.ts
+++ b/examples-testing/examples/webgl_gpgpu_birds_gltf.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
@@ -5262,7 +5262,7 @@ index 05f81a86..f86d0d38 100644
mouseX = event.clientX - windowHalfX;
diff --git a/examples-testing/examples/webgl_gpgpu_protoplanet.ts b/examples-testing/examples/webgl_gpgpu_protoplanet.ts
-index 30444ddb..e1c40aef 100644
+index 30444ddba..e1c40aefa 100644
--- a/examples-testing/examples/webgl_gpgpu_protoplanet.ts
+++ b/examples-testing/examples/webgl_gpgpu_protoplanet.ts
@@ -4,22 +4,32 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -5356,7 +5356,7 @@ index 30444ddb..e1c40aef 100644
}
diff --git a/examples-testing/examples/webgl_gpgpu_water.ts b/examples-testing/examples/webgl_gpgpu_water.ts
-index 3210a298..183dac1e 100644
+index 3210a298a..183dac1e3 100644
--- a/examples-testing/examples/webgl_gpgpu_water.ts
+++ b/examples-testing/examples/webgl_gpgpu_water.ts
@@ -4,7 +4,7 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -5525,7 +5525,7 @@ index 3210a298..183dac1e 100644
shader.uniforms[name] = { value: this.extra[name] };
}
diff --git a/examples-testing/examples/webgl_helpers.ts b/examples-testing/examples/webgl_helpers.ts
-index a8c3b977..09ad778d 100644
+index a8c3b9773..09ad778dc 100644
--- a/examples-testing/examples/webgl_helpers.ts
+++ b/examples-testing/examples/webgl_helpers.ts
@@ -5,10 +5,10 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -5562,7 +5562,7 @@ index a8c3b977..09ad778d 100644
line.material.opacity = 0.25;
line.material.transparent = true;
diff --git a/examples-testing/examples/webgl_instancing_dynamic.ts b/examples-testing/examples/webgl_instancing_dynamic.ts
-index bc4a8866..105d30e1 100644
+index bc4a88662..105d30e11 100644
--- a/examples-testing/examples/webgl_instancing_dynamic.ts
+++ b/examples-testing/examples/webgl_instancing_dynamic.ts
@@ -3,15 +3,19 @@ import * as THREE from 'three';
@@ -5598,7 +5598,7 @@ index bc4a8866..105d30e1 100644
mesh.computeBoundingSphere();
diff --git a/examples-testing/examples/webgl_instancing_morph.ts b/examples-testing/examples/webgl_instancing_morph.ts
-index 70e89199..d6fb00fb 100644
+index 70e89199c..d6fb00fbf 100644
--- a/examples-testing/examples/webgl_instancing_morph.ts
+++ b/examples-testing/examples/webgl_instancing_morph.ts
@@ -4,7 +4,13 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -5635,7 +5635,7 @@ index 70e89199..d6fb00fb 100644
renderer.render(scene, camera);
diff --git a/examples-testing/examples/webgl_instancing_performance.ts b/examples-testing/examples/webgl_instancing_performance.ts
-index bf1deaba..705d2cf3 100644
+index bf1deabad..705d2cf36 100644
--- a/examples-testing/examples/webgl_instancing_performance.ts
+++ b/examples-testing/examples/webgl_instancing_performance.ts
@@ -6,8 +6,12 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -5736,7 +5736,7 @@ index bf1deaba..705d2cf3 100644
const k = 1024;
diff --git a/examples-testing/examples/webgl_instancing_raycast.ts b/examples-testing/examples/webgl_instancing_raycast.ts
-index 371ea070..861bc9c5 100644
+index 371ea070b..861bc9c51 100644
--- a/examples-testing/examples/webgl_instancing_raycast.ts
+++ b/examples-testing/examples/webgl_instancing_raycast.ts
@@ -4,9 +4,13 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -5782,7 +5782,7 @@ index 371ea070..861bc9c5 100644
}
diff --git a/examples-testing/examples/webgl_instancing_scatter.ts b/examples-testing/examples/webgl_instancing_scatter.ts
-index fc3b9cc9..d0904e8e 100644
+index fc3b9cc9f..d0904e8e4 100644
--- a/examples-testing/examples/webgl_instancing_scatter.ts
+++ b/examples-testing/examples/webgl_instancing_scatter.ts
@@ -5,7 +5,7 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -5855,7 +5855,7 @@ index fc3b9cc9..d0904e8e 100644
ages[i] += 0.005;
diff --git a/examples-testing/examples/webgl_interactive_buffergeometry.ts b/examples-testing/examples/webgl_interactive_buffergeometry.ts
-index 1d6608b1..c6aca942 100644
+index 1d6608b13..c6aca942f 100644
--- a/examples-testing/examples/webgl_interactive_buffergeometry.ts
+++ b/examples-testing/examples/webgl_interactive_buffergeometry.ts
@@ -2,18 +2,18 @@ import * as THREE from 'three';
@@ -5915,7 +5915,7 @@ index 1d6608b1..c6aca942 100644
linePosition.copyAt(0, meshPosition, face.a);
linePosition.copyAt(1, meshPosition, face.b);
diff --git a/examples-testing/examples/webgl_interactive_cubes.ts b/examples-testing/examples/webgl_interactive_cubes.ts
-index adfcfddf..d26cee37 100644
+index adfcfddf8..d26cee370 100644
--- a/examples-testing/examples/webgl_interactive_cubes.ts
+++ b/examples-testing/examples/webgl_interactive_cubes.ts
@@ -2,10 +2,10 @@ import * as THREE from 'three';
@@ -5960,7 +5960,7 @@ index adfcfddf..d26cee37 100644
INTERSECTED = null;
}
diff --git a/examples-testing/examples/webgl_interactive_cubes_gpu.ts b/examples-testing/examples/webgl_interactive_cubes_gpu.ts
-index 5b19d208..b8772168 100644
+index 5b19d2085..b8772168d 100644
--- a/examples-testing/examples/webgl_interactive_cubes_gpu.ts
+++ b/examples-testing/examples/webgl_interactive_cubes_gpu.ts
@@ -5,12 +5,12 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -6018,7 +6018,7 @@ index 5b19d208..b8772168 100644
pointer.y = e.clientY;
}
diff --git a/examples-testing/examples/webgl_interactive_cubes_ortho.ts b/examples-testing/examples/webgl_interactive_cubes_ortho.ts
-index 520674b5..4b083ffe 100644
+index 520674b5f..4b083ffe9 100644
--- a/examples-testing/examples/webgl_interactive_cubes_ortho.ts
+++ b/examples-testing/examples/webgl_interactive_cubes_ortho.ts
@@ -2,11 +2,11 @@ import * as THREE from 'three';
@@ -6064,7 +6064,7 @@ index 520674b5..4b083ffe 100644
INTERSECTED = null;
}
diff --git a/examples-testing/examples/webgl_interactive_lines.ts b/examples-testing/examples/webgl_interactive_lines.ts
-index b137c550..891e5541 100644
+index b137c5501..891e5541c 100644
--- a/examples-testing/examples/webgl_interactive_lines.ts
+++ b/examples-testing/examples/webgl_interactive_lines.ts
@@ -2,8 +2,13 @@ import * as THREE from 'three';
@@ -6093,7 +6093,7 @@ index b137c550..891e5541 100644
pointer.y = -(event.clientY / window.innerHeight) * 2 + 1;
}
diff --git a/examples-testing/examples/webgl_interactive_points.ts b/examples-testing/examples/webgl_interactive_points.ts
-index b6be0df0..2bc27dae 100644
+index b6be0df05..2bc27dae9 100644
--- a/examples-testing/examples/webgl_interactive_points.ts
+++ b/examples-testing/examples/webgl_interactive_points.ts
@@ -4,19 +4,19 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -6174,7 +6174,7 @@ index b6be0df0..2bc27dae 100644
attributes.size.array[INTERSECTED] = PARTICLE_SIZE * 1.25;
attributes.size.needsUpdate = true;
diff --git a/examples-testing/examples/webgl_interactive_raycasting_points.ts b/examples-testing/examples/webgl_interactive_raycasting_points.ts
-index 50b8d1e1..8f0a5c28 100644
+index 50b8d1e1d..8f0a5c289 100644
--- a/examples-testing/examples/webgl_interactive_raycasting_points.ts
+++ b/examples-testing/examples/webgl_interactive_raycasting_points.ts
@@ -2,16 +2,16 @@ import * as THREE from 'three';
@@ -6253,7 +6253,7 @@ index 50b8d1e1..8f0a5c28 100644
pointer.y = -(event.clientY / window.innerHeight) * 2 + 1;
}
diff --git a/examples-testing/examples/webgl_interactive_voxelpainter.ts b/examples-testing/examples/webgl_interactive_voxelpainter.ts
-index 48b16f3b..dae1d758 100644
+index 48b16f3b7..dae1d7589 100644
--- a/examples-testing/examples/webgl_interactive_voxelpainter.ts
+++ b/examples-testing/examples/webgl_interactive_voxelpainter.ts
@@ -1,15 +1,15 @@
@@ -6333,7 +6333,7 @@ index 48b16f3b..dae1d758 100644
case 16:
isShiftDown = false;
diff --git a/examples-testing/examples/webgl_lensflares.ts b/examples-testing/examples/webgl_lensflares.ts
-index 0a55bec4..b45da6b9 100644
+index 0a55bec42..b45da6b93 100644
--- a/examples-testing/examples/webgl_lensflares.ts
+++ b/examples-testing/examples/webgl_lensflares.ts
@@ -5,10 +5,10 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -6360,7 +6360,7 @@ index 0a55bec4..b45da6b9 100644
light.color.setHSL(h, s, l);
light.position.set(x, y, z);
diff --git a/examples-testing/examples/webgl_lightprobe.ts b/examples-testing/examples/webgl_lightprobe.ts
-index 58f021e6..1427cce4 100644
+index 58f021e6d..1427cce47 100644
--- a/examples-testing/examples/webgl_lightprobe.ts
+++ b/examples-testing/examples/webgl_lightprobe.ts
@@ -8,12 +8,15 @@ import { LightProbeGenerator } from 'three/addons/lights/LightProbeGenerator.js'
@@ -6392,7 +6392,7 @@ index 58f021e6..1427cce4 100644
prefix + 'px' + postfix,
prefix + 'nx' + postfix,
diff --git a/examples-testing/examples/webgl_lightprobe_cubecamera.ts b/examples-testing/examples/webgl_lightprobe_cubecamera.ts
-index 65425d4e..a9a0533e 100644
+index 65425d4e7..a9a0533ef 100644
--- a/examples-testing/examples/webgl_lightprobe_cubecamera.ts
+++ b/examples-testing/examples/webgl_lightprobe_cubecamera.ts
@@ -4,9 +4,9 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -6417,7 +6417,7 @@ index 65425d4e..a9a0533e 100644
prefix + 'px' + postfix,
prefix + 'nx' + postfix,
diff --git a/examples-testing/examples/webgl_lights_hemisphere.ts b/examples-testing/examples/webgl_lights_hemisphere.ts
-index 2910b15d..32daa5e5 100644
+index 2910b15de..32daa5e5d 100644
--- a/examples-testing/examples/webgl_lights_hemisphere.ts
+++ b/examples-testing/examples/webgl_lights_hemisphere.ts
@@ -5,9 +5,9 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -6454,7 +6454,7 @@ index 2910b15d..32daa5e5 100644
topColor: { value: new THREE.Color(0x0077ff) },
bottomColor: { value: new THREE.Color(0xffffff) },
diff --git a/examples-testing/examples/webgl_lights_physical.ts b/examples-testing/examples/webgl_lights_physical.ts
-index 707ef200..8e4cf0bb 100644
+index 707ef200e..8e4cf0bbe 100644
--- a/examples-testing/examples/webgl_lights_physical.ts
+++ b/examples-testing/examples/webgl_lights_physical.ts
@@ -5,13 +5,19 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -6499,7 +6499,7 @@ index 707ef200..8e4cf0bb 100644
stats = new Stats();
container.appendChild(stats.dom);
diff --git a/examples-testing/examples/webgl_lights_rectarealight.ts b/examples-testing/examples/webgl_lights_rectarealight.ts
-index 621d183d..3f4b060e 100644
+index 621d183d8..3f4b060ec 100644
--- a/examples-testing/examples/webgl_lights_rectarealight.ts
+++ b/examples-testing/examples/webgl_lights_rectarealight.ts
@@ -6,9 +6,9 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -6525,7 +6525,7 @@ index 621d183d..3f4b060e 100644
ctx.fillRect(0, 0, 2, 2);
ctx.fillStyle = '#fff';
diff --git a/examples-testing/examples/webgl_lights_spotlight.ts b/examples-testing/examples/webgl_lights_spotlight.ts
-index 78fec9d4..c83421bb 100644
+index 78fec9d4e..c83421bb3 100644
--- a/examples-testing/examples/webgl_lights_spotlight.ts
+++ b/examples-testing/examples/webgl_lights_spotlight.ts
@@ -5,9 +5,9 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -6570,7 +6570,7 @@ index 78fec9d4..c83421bb 100644
renderer.render(scene, camera);
}
diff --git a/examples-testing/examples/webgl_lights_spotlights.ts b/examples-testing/examples/webgl_lights_spotlights.ts
-index be8dfd69..c2b109f2 100644
+index be8dfd69d..c2b109f2f 100644
--- a/examples-testing/examples/webgl_lights_spotlights.ts
+++ b/examples-testing/examples/webgl_lights_spotlights.ts
@@ -29,7 +29,7 @@ const spotLight1 = createSpotlight(0xff7f00);
@@ -6601,7 +6601,7 @@ index be8dfd69..c2b109f2 100644
.to(
{
diff --git a/examples-testing/examples/webgl_lines_colors.ts b/examples-testing/examples/webgl_lines_colors.ts
-index 9da19ee2..68bc979b 100644
+index 9da19ee2e..68bc979b0 100644
--- a/examples-testing/examples/webgl_lines_colors.ts
+++ b/examples-testing/examples/webgl_lines_colors.ts
@@ -8,7 +8,7 @@ let mouseX = 0,
@@ -6641,7 +6641,7 @@ index 9da19ee2..68bc979b 100644
}
}
diff --git a/examples-testing/examples/webgl_lines_dashed.ts b/examples-testing/examples/webgl_lines_dashed.ts
-index 3e3ee304..0c098cd5 100644
+index 3e3ee3041..0c098cd5b 100644
--- a/examples-testing/examples/webgl_lines_dashed.ts
+++ b/examples-testing/examples/webgl_lines_dashed.ts
@@ -4,8 +4,8 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -6674,7 +6674,7 @@ index 3e3ee304..0c098cd5 100644
object.rotation.y = 0.25 * time;
}
diff --git a/examples-testing/examples/webgl_lines_fat.ts b/examples-testing/examples/webgl_lines_fat.ts
-index b5b66bbb..b4bfb555 100644
+index b5b66bbb1..b4bfb555c 100644
--- a/examples-testing/examples/webgl_lines_fat.ts
+++ b/examples-testing/examples/webgl_lines_fat.ts
@@ -7,14 +7,19 @@ import { LineMaterial } from 'three/addons/lines/LineMaterial.js';
@@ -6704,7 +6704,7 @@ index b5b66bbb..b4bfb555 100644
init();
diff --git a/examples-testing/examples/webgl_lines_fat_raycasting.ts b/examples-testing/examples/webgl_lines_fat_raycasting.ts
-index ac9400da..7041465f 100644
+index ac9400da3..7041465f3 100644
--- a/examples-testing/examples/webgl_lines_fat_raycasting.ts
+++ b/examples-testing/examples/webgl_lines_fat_raycasting.ts
@@ -8,11 +8,12 @@ import { LineSegmentsGeometry } from 'three/addons/lines/LineSegmentsGeometry.js
@@ -6786,7 +6786,7 @@ index ac9400da..7041465f 100644
gui.add(params, 'translation', 0, 10).onChange(function (val) {
diff --git a/examples-testing/examples/webgl_lines_fat_wireframe.ts b/examples-testing/examples/webgl_lines_fat_wireframe.ts
-index 59660ad7..9f38fcb6 100644
+index 59660ad7e..9f38fcb6d 100644
--- a/examples-testing/examples/webgl_lines_fat_wireframe.ts
+++ b/examples-testing/examples/webgl_lines_fat_wireframe.ts
@@ -8,15 +8,20 @@ import { LineMaterial } from 'three/addons/lines/LineMaterial.js';
@@ -6827,7 +6827,7 @@ index 59660ad7..9f38fcb6 100644
const geometry = new WireframeGeometry2(geo);
diff --git a/examples-testing/examples/webgl_loader_3dm.ts b/examples-testing/examples/webgl_loader_3dm.ts
-index 7570306f..a363c213 100644
+index 7570306fd..a363c2132 100644
--- a/examples-testing/examples/webgl_loader_3dm.ts
+++ b/examples-testing/examples/webgl_loader_3dm.ts
@@ -5,8 +5,8 @@ import { Rhino3dmLoader } from 'three/addons/loaders/3DMLoader.js';
@@ -6860,7 +6860,7 @@ index 7570306f..a363c213 100644
for (let i = 0; i < layers.length; i++) {
diff --git a/examples-testing/examples/webgl_loader_3ds.ts b/examples-testing/examples/webgl_loader_3ds.ts
-index 10ce3407..ac3a6e23 100644
+index 10ce34076..ac3a6e232 100644
--- a/examples-testing/examples/webgl_loader_3ds.ts
+++ b/examples-testing/examples/webgl_loader_3ds.ts
@@ -3,8 +3,8 @@ import * as THREE from 'three';
@@ -6888,7 +6888,7 @@ index 10ce3407..ac3a6e23 100644
});
diff --git a/examples-testing/examples/webgl_loader_3dtiles.ts b/examples-testing/examples/webgl_loader_3dtiles.ts
-index bae36bc8..70aff037 100644
+index bae36bc84..70aff0378 100644
--- a/examples-testing/examples/webgl_loader_3dtiles.ts
+++ b/examples-testing/examples/webgl_loader_3dtiles.ts
@@ -13,8 +13,8 @@ import {
@@ -6903,7 +6903,7 @@ index bae36bc8..70aff037 100644
init();
diff --git a/examples-testing/examples/webgl_loader_3mf.ts b/examples-testing/examples/webgl_loader_3mf.ts
-index c31e3219..eecda516 100644
+index c31e32196..eecda516b 100644
--- a/examples-testing/examples/webgl_loader_3mf.ts
+++ b/examples-testing/examples/webgl_loader_3mf.ts
@@ -4,7 +4,12 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -6944,7 +6944,7 @@ index c31e3219..eecda516 100644
scene.remove(object);
diff --git a/examples-testing/examples/webgl_loader_3mf_materials.ts b/examples-testing/examples/webgl_loader_3mf_materials.ts
-index 0dea0139..6e897da1 100644
+index 0dea01391..6e897da19 100644
--- a/examples-testing/examples/webgl_loader_3mf_materials.ts
+++ b/examples-testing/examples/webgl_loader_3mf_materials.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -6957,7 +6957,7 @@ index 0dea0139..6e897da1 100644
init();
diff --git a/examples-testing/examples/webgl_loader_amf.ts b/examples-testing/examples/webgl_loader_amf.ts
-index ee576e04..7569a044 100644
+index ee576e04f..7569a0448 100644
--- a/examples-testing/examples/webgl_loader_amf.ts
+++ b/examples-testing/examples/webgl_loader_amf.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -6970,7 +6970,7 @@ index ee576e04..7569a044 100644
init();
diff --git a/examples-testing/examples/webgl_loader_bvh.ts b/examples-testing/examples/webgl_loader_bvh.ts
-index 70cec7e6..ba36382e 100644
+index 70cec7e6a..ba36382e8 100644
--- a/examples-testing/examples/webgl_loader_bvh.ts
+++ b/examples-testing/examples/webgl_loader_bvh.ts
@@ -6,8 +6,8 @@ import { BVHLoader } from 'three/addons/loaders/BVHLoader.js';
@@ -6985,7 +6985,7 @@ index 70cec7e6..ba36382e 100644
init();
diff --git a/examples-testing/examples/webgl_loader_collada.ts b/examples-testing/examples/webgl_loader_collada.ts
-index 3106369c..d9705f46 100644
+index 3106369c8..d9705f46e 100644
--- a/examples-testing/examples/webgl_loader_collada.ts
+++ b/examples-testing/examples/webgl_loader_collada.ts
@@ -4,13 +4,13 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -7015,7 +7015,7 @@ index 3106369c..d9705f46 100644
//
diff --git a/examples-testing/examples/webgl_loader_collada_skinning.ts b/examples-testing/examples/webgl_loader_collada_skinning.ts
-index bbbd0ac3..206bd4c7 100644
+index bbbd0ac3e..206bd4c76 100644
--- a/examples-testing/examples/webgl_loader_collada_skinning.ts
+++ b/examples-testing/examples/webgl_loader_collada_skinning.ts
@@ -5,13 +5,13 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -7045,7 +7045,7 @@ index bbbd0ac3..206bd4c7 100644
mixer = new THREE.AnimationMixer(avatar);
diff --git a/examples-testing/examples/webgl_loader_draco.ts b/examples-testing/examples/webgl_loader_draco.ts
-index c1df7100..6a8c4844 100644
+index c1df7100d..6a8c48446 100644
--- a/examples-testing/examples/webgl_loader_draco.ts
+++ b/examples-testing/examples/webgl_loader_draco.ts
@@ -2,9 +2,9 @@ import * as THREE from 'three';
@@ -7061,7 +7061,7 @@ index c1df7100..6a8c4844 100644
// Configure and create Draco decoder.
const dracoLoader = new DRACOLoader();
diff --git a/examples-testing/examples/webgl_loader_fbx.ts b/examples-testing/examples/webgl_loader_fbx.ts
-index bcf26ae9..7e78cf59 100644
+index bcf26ae95..7e78cf591 100644
--- a/examples-testing/examples/webgl_loader_fbx.ts
+++ b/examples-testing/examples/webgl_loader_fbx.ts
@@ -8,8 +8,14 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -7142,7 +7142,7 @@ index bcf26ae9..7e78cf59 100644
}
}
diff --git a/examples-testing/examples/webgl_loader_fbx_nurbs.ts b/examples-testing/examples/webgl_loader_fbx_nurbs.ts
-index f2e45bcb..c15264d7 100644
+index f2e45bcb5..c15264d71 100644
--- a/examples-testing/examples/webgl_loader_fbx_nurbs.ts
+++ b/examples-testing/examples/webgl_loader_fbx_nurbs.ts
@@ -5,7 +5,7 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -7155,7 +7155,7 @@ index f2e45bcb..c15264d7 100644
init();
diff --git a/examples-testing/examples/webgl_loader_gcode.ts b/examples-testing/examples/webgl_loader_gcode.ts
-index 16dfb92e..14f1b485 100644
+index 16dfb92e2..14f1b4850 100644
--- a/examples-testing/examples/webgl_loader_gcode.ts
+++ b/examples-testing/examples/webgl_loader_gcode.ts
@@ -4,9 +4,13 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -7197,7 +7197,7 @@ index 16dfb92e..14f1b485 100644
model = object;
model.position.copy(positions[assets.indexOf(asset)]);
diff --git a/examples-testing/examples/webgl_loader_gltf.ts b/examples-testing/examples/webgl_loader_gltf.ts
-index e0cb6854..68c61500 100644
+index e0cb68546..68c615001 100644
--- a/examples-testing/examples/webgl_loader_gltf.ts
+++ b/examples-testing/examples/webgl_loader_gltf.ts
@@ -5,8 +5,16 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -7261,7 +7261,7 @@ index e0cb6854..68c61500 100644
box.setFromObject(selection);
diff --git a/examples-testing/examples/webgl_loader_gltf_animation_pointer.ts b/examples-testing/examples/webgl_loader_gltf_animation_pointer.ts
-index 443df047..d2cb449e 100644
+index 443df047b..d2cb449eb 100644
--- a/examples-testing/examples/webgl_loader_gltf_animation_pointer.ts
+++ b/examples-testing/examples/webgl_loader_gltf_animation_pointer.ts
@@ -10,11 +10,11 @@ import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
@@ -7279,7 +7279,7 @@ index 443df047..d2cb449e 100644
const stats = new Stats();
container.appendChild(stats.dom);
diff --git a/examples-testing/examples/webgl_loader_gltf_anisotropy.ts b/examples-testing/examples/webgl_loader_gltf_anisotropy.ts
-index f0dd05cf..3ce7cc23 100644
+index f0dd05cfe..3ce7cc23a 100644
--- a/examples-testing/examples/webgl_loader_gltf_anisotropy.ts
+++ b/examples-testing/examples/webgl_loader_gltf_anisotropy.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -7292,7 +7292,7 @@ index f0dd05cf..3ce7cc23 100644
init();
diff --git a/examples-testing/examples/webgl_loader_gltf_avif.ts b/examples-testing/examples/webgl_loader_gltf_avif.ts
-index 37d63859..68dff97f 100644
+index 37d63859e..68dff97f2 100644
--- a/examples-testing/examples/webgl_loader_gltf_avif.ts
+++ b/examples-testing/examples/webgl_loader_gltf_avif.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -7305,7 +7305,7 @@ index 37d63859..68dff97f 100644
init();
render();
diff --git a/examples-testing/examples/webgl_loader_gltf_compressed.ts b/examples-testing/examples/webgl_loader_gltf_compressed.ts
-index 235d9b3d..06e6d507 100644
+index 235d9b3d0..06e6d5072 100644
--- a/examples-testing/examples/webgl_loader_gltf_compressed.ts
+++ b/examples-testing/examples/webgl_loader_gltf_compressed.ts
@@ -7,7 +7,7 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -7318,7 +7318,7 @@ index 235d9b3d..06e6d507 100644
init();
render();
diff --git a/examples-testing/examples/webgl_loader_gltf_dispersion.ts b/examples-testing/examples/webgl_loader_gltf_dispersion.ts
-index 0f1d7e57..c4a5d7f1 100644
+index 0f1d7e57a..c4a5d7f1b 100644
--- a/examples-testing/examples/webgl_loader_gltf_dispersion.ts
+++ b/examples-testing/examples/webgl_loader_gltf_dispersion.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -7331,7 +7331,7 @@ index 0f1d7e57..c4a5d7f1 100644
init().then(render);
diff --git a/examples-testing/examples/webgl_loader_gltf_instancing.ts b/examples-testing/examples/webgl_loader_gltf_instancing.ts
-index 6acb140e..205f4816 100644
+index 6acb140ec..205f48162 100644
--- a/examples-testing/examples/webgl_loader_gltf_instancing.ts
+++ b/examples-testing/examples/webgl_loader_gltf_instancing.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -7344,7 +7344,7 @@ index 6acb140e..205f4816 100644
init();
render();
diff --git a/examples-testing/examples/webgl_loader_gltf_iridescence.ts b/examples-testing/examples/webgl_loader_gltf_iridescence.ts
-index 5519835f..6cfbb56c 100644
+index 5519835fe..6cfbb56c3 100644
--- a/examples-testing/examples/webgl_loader_gltf_iridescence.ts
+++ b/examples-testing/examples/webgl_loader_gltf_iridescence.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -7357,7 +7357,7 @@ index 5519835f..6cfbb56c 100644
init().catch(function (err) {
console.error(err);
diff --git a/examples-testing/examples/webgl_loader_gltf_progressive_lod.ts b/examples-testing/examples/webgl_loader_gltf_progressive_lod.ts
-index 8d1c6048..72b6bed3 100644
+index 8d1c60480..72b6bed31 100644
--- a/examples-testing/examples/webgl_loader_gltf_progressive_lod.ts
+++ b/examples-testing/examples/webgl_loader_gltf_progressive_lod.ts
@@ -5,8 +5,8 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -7372,7 +7372,7 @@ index 8d1c6048..72b6bed3 100644
init();
diff --git a/examples-testing/examples/webgl_loader_gltf_sheen.ts b/examples-testing/examples/webgl_loader_gltf_sheen.ts
-index b058f1e2..3f75e10c 100644
+index b058f1e27..3f75e10cc 100644
--- a/examples-testing/examples/webgl_loader_gltf_sheen.ts
+++ b/examples-testing/examples/webgl_loader_gltf_sheen.ts
@@ -6,7 +6,7 @@ import { RoomEnvironment } from 'three/addons/environments/RoomEnvironment.js';
@@ -7397,7 +7397,7 @@ index b058f1e2..3f75e10c 100644
const gui = new GUI();
diff --git a/examples-testing/examples/webgl_loader_gltf_transmission.ts b/examples-testing/examples/webgl_loader_gltf_transmission.ts
-index e8ea0a92..d05568b5 100644
+index e8ea0a927..d05568b57 100644
--- a/examples-testing/examples/webgl_loader_gltf_transmission.ts
+++ b/examples-testing/examples/webgl_loader_gltf_transmission.ts
@@ -6,7 +6,12 @@ import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
@@ -7415,7 +7415,7 @@ index e8ea0a92..d05568b5 100644
init();
diff --git a/examples-testing/examples/webgl_loader_imagebitmap.ts b/examples-testing/examples/webgl_loader_imagebitmap.ts
-index c02a03e1..0dce69c1 100644
+index c02a03e17..0dce69c16 100644
--- a/examples-testing/examples/webgl_loader_imagebitmap.ts
+++ b/examples-testing/examples/webgl_loader_imagebitmap.ts
@@ -1,7 +1,7 @@
@@ -7456,7 +7456,7 @@ index c02a03e1..0dce69c1 100644
texture.onUpdate = null; // make sure this callback is executed only once per texture
}
diff --git a/examples-testing/examples/webgl_loader_kmz.ts b/examples-testing/examples/webgl_loader_kmz.ts
-index f93555e4..8793a351 100644
+index f93555e41..8793a3511 100644
--- a/examples-testing/examples/webgl_loader_kmz.ts
+++ b/examples-testing/examples/webgl_loader_kmz.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -7469,7 +7469,7 @@ index f93555e4..8793a351 100644
init();
diff --git a/examples-testing/examples/webgl_loader_lwo.ts b/examples-testing/examples/webgl_loader_lwo.ts
-index fb10c834..df003a04 100644
+index fb10c8340..df003a04f 100644
--- a/examples-testing/examples/webgl_loader_lwo.ts
+++ b/examples-testing/examples/webgl_loader_lwo.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -7482,7 +7482,7 @@ index fb10c834..df003a04 100644
init();
diff --git a/examples-testing/examples/webgl_loader_md2_control.ts b/examples-testing/examples/webgl_loader_md2_control.ts
-index 56b7dc3c..fb634369 100644
+index 56b7dc3c4..fb634369d 100644
--- a/examples-testing/examples/webgl_loader_md2_control.ts
+++ b/examples-testing/examples/webgl_loader_md2_control.ts
@@ -9,10 +9,10 @@ import { Gyroscope } from 'three/addons/misc/Gyroscope.js';
@@ -7533,7 +7533,7 @@ index 56b7dc3c..fb634369 100644
case 'ArrowUp':
case 'KeyW':
diff --git a/examples-testing/examples/webgl_loader_mdd.ts b/examples-testing/examples/webgl_loader_mdd.ts
-index 16e49221..d71600a5 100644
+index 16e49221c..d71600a53 100644
--- a/examples-testing/examples/webgl_loader_mdd.ts
+++ b/examples-testing/examples/webgl_loader_mdd.ts
@@ -2,7 +2,11 @@ import * as THREE from 'three';
@@ -7550,7 +7550,7 @@ index 16e49221..d71600a5 100644
init();
diff --git a/examples-testing/examples/webgl_loader_obj.ts b/examples-testing/examples/webgl_loader_obj.ts
-index 42f1f325..19ce7067 100644
+index 42f1f3257..19ce70671 100644
--- a/examples-testing/examples/webgl_loader_obj.ts
+++ b/examples-testing/examples/webgl_loader_obj.ts
@@ -4,7 +4,7 @@ import { MTLLoader } from 'three/addons/loaders/MTLLoader.js';
@@ -7563,7 +7563,7 @@ index 42f1f325..19ce7067 100644
init();
diff --git a/examples-testing/examples/webgl_loader_pcd.ts b/examples-testing/examples/webgl_loader_pcd.ts
-index dd0f0b0f..e47005a8 100644
+index dd0f0b0f5..e47005a81 100644
--- a/examples-testing/examples/webgl_loader_pcd.ts
+++ b/examples-testing/examples/webgl_loader_pcd.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -7585,7 +7585,7 @@ index dd0f0b0f..e47005a8 100644
points.geometry.center();
points.geometry.rotateX(Math.PI);
diff --git a/examples-testing/examples/webgl_loader_pdb.ts b/examples-testing/examples/webgl_loader_pdb.ts
-index b560efa7..9882dff5 100644
+index b560efa73..9882dff52 100644
--- a/examples-testing/examples/webgl_loader_pdb.ts
+++ b/examples-testing/examples/webgl_loader_pdb.ts
@@ -5,10 +5,10 @@ import { PDBLoader } from 'three/addons/loaders/PDBLoader.js';
@@ -7644,7 +7644,7 @@ index b560efa7..9882dff5 100644
geometryAtoms.translate(offset.x, offset.y, offset.z);
geometryBonds.translate(offset.x, offset.y, offset.z);
diff --git a/examples-testing/examples/webgl_loader_ply.ts b/examples-testing/examples/webgl_loader_ply.ts
-index 0f4042b7..dff17d16 100644
+index 0f4042b7d..dff17d169 100644
--- a/examples-testing/examples/webgl_loader_ply.ts
+++ b/examples-testing/examples/webgl_loader_ply.ts
@@ -4,9 +4,9 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -7669,7 +7669,7 @@ index 0f4042b7..dff17d16 100644
directionalLight.position.set(x, y, z);
scene.add(directionalLight);
diff --git a/examples-testing/examples/webgl_loader_svg.ts b/examples-testing/examples/webgl_loader_svg.ts
-index a04b79de..48a055d4 100644
+index a04b79de2..48a055d41 100644
--- a/examples-testing/examples/webgl_loader_svg.ts
+++ b/examples-testing/examples/webgl_loader_svg.ts
@@ -3,14 +3,24 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -7768,7 +7768,7 @@ index a04b79de..48a055d4 100644
});
}
diff --git a/examples-testing/examples/webgl_loader_texture_dds.ts b/examples-testing/examples/webgl_loader_texture_dds.ts
-index ba9b18e9..d4161ff3 100644
+index ba9b18e9d..d4161ff31 100644
--- a/examples-testing/examples/webgl_loader_texture_dds.ts
+++ b/examples-testing/examples/webgl_loader_texture_dds.ts
@@ -2,8 +2,8 @@ import * as THREE from 'three';
@@ -7792,7 +7792,7 @@ index ba9b18e9..d4161ff3 100644
mesh.position.y = -2;
scene.add(mesh);
diff --git a/examples-testing/examples/webgl_loader_texture_ktx.ts b/examples-testing/examples/webgl_loader_texture_ktx.ts
-index a4e74930..9f0ad48f 100644
+index a4e749301..9f0ad48f3 100644
--- a/examples-testing/examples/webgl_loader_texture_ktx.ts
+++ b/examples-testing/examples/webgl_loader_texture_ktx.ts
@@ -17,8 +17,8 @@ import { KTXLoader } from 'three/addons/loaders/KTXLoader.js';
@@ -7858,7 +7858,7 @@ index a4e74930..9f0ad48f 100644
meshes.push(new THREE.Mesh(geometry, material1));
meshes.push(new THREE.Mesh(geometry, material2));
diff --git a/examples-testing/examples/webgl_loader_texture_tga.ts b/examples-testing/examples/webgl_loader_texture_tga.ts
-index c4f65b79..fd6bab07 100644
+index c4f65b79a..fd6bab071 100644
--- a/examples-testing/examples/webgl_loader_texture_tga.ts
+++ b/examples-testing/examples/webgl_loader_texture_tga.ts
@@ -5,7 +5,7 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -7871,7 +7871,7 @@ index c4f65b79..fd6bab07 100644
init();
diff --git a/examples-testing/examples/webgl_loader_texture_tiff.ts b/examples-testing/examples/webgl_loader_texture_tiff.ts
-index f097774a..bb5b9d9d 100644
+index f097774aa..bb5b9d9d9 100644
--- a/examples-testing/examples/webgl_loader_texture_tiff.ts
+++ b/examples-testing/examples/webgl_loader_texture_tiff.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
@@ -7884,7 +7884,7 @@ index f097774a..bb5b9d9d 100644
init();
diff --git a/examples-testing/examples/webgl_loader_texture_ultrahdr.ts b/examples-testing/examples/webgl_loader_texture_ultrahdr.ts
-index c8bce4bf..a28a7f00 100644
+index c8bce4bf9..a28a7f00b 100644
--- a/examples-testing/examples/webgl_loader_texture_ultrahdr.ts
+++ b/examples-testing/examples/webgl_loader_texture_ultrahdr.ts
@@ -5,7 +5,14 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -7930,7 +7930,7 @@ index c8bce4bf..a28a7f00 100644
loader.load(`textures/equirectangular/spruit_sunrise_${resolution}.hdr.jpg`, function (texture) {
diff --git a/examples-testing/examples/webgl_loader_ttf.ts b/examples-testing/examples/webgl_loader_ttf.ts
-index b54b8c29..40a692eb 100644
+index b54b8c290..40a692ebd 100644
--- a/examples-testing/examples/webgl_loader_ttf.ts
+++ b/examples-testing/examples/webgl_loader_ttf.ts
@@ -4,9 +4,9 @@ import { TTFLoader } from 'three/addons/loaders/TTFLoader.js';
@@ -8021,7 +8021,7 @@ index b54b8c29..40a692eb 100644
document.removeEventListener('pointermove', onPointerMove);
document.removeEventListener('pointerup', onPointerUp);
diff --git a/examples-testing/examples/webgl_loader_usdz.ts b/examples-testing/examples/webgl_loader_usdz.ts
-index 409c6b59..dbde51b0 100644
+index 409c6b597..dbde51b00 100644
--- a/examples-testing/examples/webgl_loader_usdz.ts
+++ b/examples-testing/examples/webgl_loader_usdz.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -8034,7 +8034,7 @@ index 409c6b59..dbde51b0 100644
init();
diff --git a/examples-testing/examples/webgl_loader_vox.ts b/examples-testing/examples/webgl_loader_vox.ts
-index 87e0b2f8..5094b88c 100644
+index 87e0b2f81..5094b88cb 100644
--- a/examples-testing/examples/webgl_loader_vox.ts
+++ b/examples-testing/examples/webgl_loader_vox.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -8047,7 +8047,7 @@ index 87e0b2f8..5094b88c 100644
init();
diff --git a/examples-testing/examples/webgl_loader_vrml.ts b/examples-testing/examples/webgl_loader_vrml.ts
-index 1dda79f2..02c9d920 100644
+index 1dda79f2b..02c9d9209 100644
--- a/examples-testing/examples/webgl_loader_vrml.ts
+++ b/examples-testing/examples/webgl_loader_vrml.ts
@@ -6,7 +6,12 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -8101,7 +8101,7 @@ index 1dda79f2..02c9d920 100644
vrmlScene = object;
scene.add(object);
diff --git a/examples-testing/examples/webgl_loader_vtk.ts b/examples-testing/examples/webgl_loader_vtk.ts
-index dfc79865..de6983fb 100644
+index dfc798657..de6983fb2 100644
--- a/examples-testing/examples/webgl_loader_vtk.ts
+++ b/examples-testing/examples/webgl_loader_vtk.ts
@@ -5,9 +5,9 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -8117,7 +8117,7 @@ index dfc79865..de6983fb 100644
init();
diff --git a/examples-testing/examples/webgl_loader_xyz.ts b/examples-testing/examples/webgl_loader_xyz.ts
-index 315c6de3..61b37933 100644
+index 315c6de39..61b37933a 100644
--- a/examples-testing/examples/webgl_loader_xyz.ts
+++ b/examples-testing/examples/webgl_loader_xyz.ts
@@ -2,9 +2,9 @@ import * as THREE from 'three';
@@ -8133,7 +8133,7 @@ index 315c6de3..61b37933 100644
init();
diff --git a/examples-testing/examples/webgl_lod.ts b/examples-testing/examples/webgl_lod.ts
-index d957efbb..fd75a6cd 100644
+index d957efbbd..fd75a6cd0 100644
--- a/examples-testing/examples/webgl_lod.ts
+++ b/examples-testing/examples/webgl_lod.ts
@@ -2,9 +2,9 @@ import * as THREE from 'three';
@@ -8158,7 +8158,7 @@ index d957efbb..fd75a6cd 100644
[new THREE.IcosahedronGeometry(100, 8), 300],
[new THREE.IcosahedronGeometry(100, 4), 1000],
diff --git a/examples-testing/examples/webgl_marchingcubes.ts b/examples-testing/examples/webgl_marchingcubes.ts
-index ea96c0f9..b87765f3 100644
+index ea96c0f9f..b87765f39 100644
--- a/examples-testing/examples/webgl_marchingcubes.ts
+++ b/examples-testing/examples/webgl_marchingcubes.ts
@@ -7,17 +7,42 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -8274,7 +8274,7 @@ index ea96c0f9..b87765f3 100644
// fill the field with some metaballs
diff --git a/examples-testing/examples/webgl_materials_alphahash.ts b/examples-testing/examples/webgl_materials_alphahash.ts
-index 790e31be..335db180 100644
+index 790e31be4..335db1806 100644
--- a/examples-testing/examples/webgl_materials_alphahash.ts
+++ b/examples-testing/examples/webgl_materials_alphahash.ts
@@ -10,9 +10,15 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -8297,7 +8297,7 @@ index 790e31be..335db180 100644
let needsUpdate = false;
diff --git a/examples-testing/examples/webgl_materials_blending.ts b/examples-testing/examples/webgl_materials_blending.ts
-index fb2e6a91..6063485e 100644
+index fb2e6a91e..6063485e3 100644
--- a/examples-testing/examples/webgl_materials_blending.ts
+++ b/examples-testing/examples/webgl_materials_blending.ts
@@ -1,7 +1,7 @@
@@ -8350,7 +8350,7 @@ index fb2e6a91..6063485e 100644
canvas.height = 32;
diff --git a/examples-testing/examples/webgl_materials_blending_custom.ts b/examples-testing/examples/webgl_materials_blending_custom.ts
-index 07244742..62111971 100644
+index 072447426..62111971a 100644
--- a/examples-testing/examples/webgl_materials_blending_custom.ts
+++ b/examples-testing/examples/webgl_materials_blending_custom.ts
@@ -2,12 +2,12 @@ import * as THREE from 'three';
@@ -8401,7 +8401,7 @@ index 07244742..62111971 100644
material.blendEquation = value;
}
diff --git a/examples-testing/examples/webgl_materials_bumpmap.ts b/examples-testing/examples/webgl_materials_bumpmap.ts
-index a09c2157..00fe46b6 100644
+index a09c21573..00fe46b68 100644
--- a/examples-testing/examples/webgl_materials_bumpmap.ts
+++ b/examples-testing/examples/webgl_materials_bumpmap.ts
@@ -5,13 +5,13 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -8441,7 +8441,7 @@ index a09c2157..00fe46b6 100644
mesh.position.y = -0.5;
diff --git a/examples-testing/examples/webgl_materials_car.ts b/examples-testing/examples/webgl_materials_car.ts
-index 44be6e0e..f3a7b953 100644
+index 44be6e0ee..f3a7b9530 100644
--- a/examples-testing/examples/webgl_materials_car.ts
+++ b/examples-testing/examples/webgl_materials_car.ts
@@ -8,16 +8,16 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -8522,7 +8522,7 @@ index 44be6e0e..f3a7b953 100644
// shadow
diff --git a/examples-testing/examples/webgl_materials_cubemap.ts b/examples-testing/examples/webgl_materials_cubemap.ts
-index 5f269275..87044a87 100644
+index 5f2692751..87044a874 100644
--- a/examples-testing/examples/webgl_materials_cubemap.ts
+++ b/examples-testing/examples/webgl_materials_cubemap.ts
@@ -5,9 +5,9 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -8547,7 +8547,7 @@ index 5f269275..87044a87 100644
head.position.y = -3;
head.material = cubeMaterial1;
diff --git a/examples-testing/examples/webgl_materials_cubemap_dynamic.ts b/examples-testing/examples/webgl_materials_cubemap_dynamic.ts
-index 301835dd..352e2bb7 100644
+index 301835dda..352e2bb7f 100644
--- a/examples-testing/examples/webgl_materials_cubemap_dynamic.ts
+++ b/examples-testing/examples/webgl_materials_cubemap_dynamic.ts
@@ -6,12 +6,12 @@ import { HDRLoader } from 'three/addons/loaders/HDRLoader.js';
@@ -8577,7 +8577,7 @@ index 301835dd..352e2bb7 100644
cube.position.x = Math.cos(time) * 30;
diff --git a/examples-testing/examples/webgl_materials_cubemap_mipmaps.ts b/examples-testing/examples/webgl_materials_cubemap_mipmaps.ts
-index 944f4c18..21010ffa 100644
+index 944f4c18e..21010ffa4 100644
--- a/examples-testing/examples/webgl_materials_cubemap_mipmaps.ts
+++ b/examples-testing/examples/webgl_materials_cubemap_mipmaps.ts
@@ -2,9 +2,9 @@ import * as THREE from 'three';
@@ -8617,7 +8617,7 @@ index 944f4c18..21010ffa 100644
customizedCubeTexture.colorSpace = THREE.SRGBColorSpace;
customizedCubeTexture.minFilter = THREE.LinearMipMapLinearFilter;
diff --git a/examples-testing/examples/webgl_materials_cubemap_refraction.ts b/examples-testing/examples/webgl_materials_cubemap_refraction.ts
-index 8c025071..a47c4832 100644
+index 8c025071f..a47c4832f 100644
--- a/examples-testing/examples/webgl_materials_cubemap_refraction.ts
+++ b/examples-testing/examples/webgl_materials_cubemap_refraction.ts
@@ -4,9 +4,9 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -8656,7 +8656,7 @@ index 8c025071..a47c4832 100644
mouseY = (event.clientY - windowHalfY) * 4;
}
diff --git a/examples-testing/examples/webgl_materials_cubemap_render_to_mipmaps.ts b/examples-testing/examples/webgl_materials_cubemap_render_to_mipmaps.ts
-index 599a1369..a23a0582 100644
+index 599a1369b..a23a0582c 100644
--- a/examples-testing/examples/webgl_materials_cubemap_render_to_mipmaps.ts
+++ b/examples-testing/examples/webgl_materials_cubemap_render_to_mipmaps.ts
@@ -1,8 +1,8 @@
@@ -8706,7 +8706,7 @@ index 599a1369..a23a0582 100644
const material = new THREE.ShaderMaterial({
diff --git a/examples-testing/examples/webgl_materials_displacementmap.ts b/examples-testing/examples/webgl_materials_displacementmap.ts
-index fd0be9a5..9b08fe73 100644
+index fd0be9a5e..9b08fe733 100644
--- a/examples-testing/examples/webgl_materials_displacementmap.ts
+++ b/examples-testing/examples/webgl_materials_displacementmap.ts
@@ -6,8 +6,8 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -8742,7 +8742,7 @@ index fd0be9a5..9b08fe73 100644
mesh = new THREE.Mesh(geometry, material);
diff --git a/examples-testing/examples/webgl_materials_envmaps.ts b/examples-testing/examples/webgl_materials_envmaps.ts
-index 18a5542e..13fe2efc 100644
+index 18a5542ed..13fe2efc9 100644
--- a/examples-testing/examples/webgl_materials_envmaps.ts
+++ b/examples-testing/examples/webgl_materials_envmaps.ts
@@ -3,9 +3,19 @@ import * as THREE from 'three';
@@ -8769,7 +8769,7 @@ index 18a5542e..13fe2efc 100644
init();
diff --git a/examples-testing/examples/webgl_materials_envmaps_exr.ts b/examples-testing/examples/webgl_materials_envmaps_exr.ts
-index c3f3f4f7..4ae4cb95 100644
+index c3f3f4f7d..4ae4cb959 100644
--- a/examples-testing/examples/webgl_materials_envmaps_exr.ts
+++ b/examples-testing/examples/webgl_materials_envmaps_exr.ts
@@ -14,11 +14,12 @@ const params = {
@@ -8802,7 +8802,7 @@ index c3f3f4f7..4ae4cb95 100644
roughness: params.roughness,
envMapIntensity: 1.0,
diff --git a/examples-testing/examples/webgl_materials_envmaps_fasthdr.ts b/examples-testing/examples/webgl_materials_envmaps_fasthdr.ts
-index de8715eb..18b6ed98 100644
+index de8715eb7..18b6ed982 100644
--- a/examples-testing/examples/webgl_materials_envmaps_fasthdr.ts
+++ b/examples-testing/examples/webgl_materials_envmaps_fasthdr.ts
@@ -13,8 +13,8 @@ const params = {
@@ -8826,7 +8826,7 @@ index de8715eb..18b6ed98 100644
texture.mapping = THREE.CubeUVReflectionMapping;
scene.environment = texture;
diff --git a/examples-testing/examples/webgl_materials_envmaps_groundprojected.ts b/examples-testing/examples/webgl_materials_envmaps_groundprojected.ts
-index c1e0ed83..f7acbbb3 100644
+index c1e0ed83b..f7acbbb3a 100644
--- a/examples-testing/examples/webgl_materials_envmaps_groundprojected.ts
+++ b/examples-testing/examples/webgl_materials_envmaps_groundprojected.ts
@@ -13,7 +13,7 @@ const params = {
@@ -8862,7 +8862,7 @@ index c1e0ed83..f7acbbb3 100644
// shadow
const mesh = new THREE.Mesh(
diff --git a/examples-testing/examples/webgl_materials_envmaps_hdr.ts b/examples-testing/examples/webgl_materials_envmaps_hdr.ts
-index 2dc2b808..31851f3d 100644
+index 2dc2b808a..31851f3d4 100644
--- a/examples-testing/examples/webgl_materials_envmaps_hdr.ts
+++ b/examples-testing/examples/webgl_materials_envmaps_hdr.ts
@@ -7,7 +7,13 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -8913,7 +8913,7 @@ index 2dc2b808..31851f3d 100644
metalness: params.metalness,
roughness: params.roughness,
diff --git a/examples-testing/examples/webgl_materials_modified.ts b/examples-testing/examples/webgl_materials_modified.ts
-index de36aeb7..778aedd5 100644
+index de36aeb7d..778aedd59 100644
--- a/examples-testing/examples/webgl_materials_modified.ts
+++ b/examples-testing/examples/webgl_materials_modified.ts
@@ -5,7 +5,7 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -8955,7 +8955,7 @@ index de36aeb7..778aedd5 100644
if (shader) {
shader.uniforms.time.value = performance.now() / 1000;
diff --git a/examples-testing/examples/webgl_materials_normalmap_object_space.ts b/examples-testing/examples/webgl_materials_normalmap_object_space.ts
-index 1fc6f806..72108134 100644
+index 1fc6f8066..72108134a 100644
--- a/examples-testing/examples/webgl_materials_normalmap_object_space.ts
+++ b/examples-testing/examples/webgl_materials_normalmap_object_space.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -8996,7 +8996,7 @@ index 1fc6f806..72108134 100644
child.scale.multiplyScalar(0.5);
diff --git a/examples-testing/examples/webgl_materials_physical_clearcoat.ts b/examples-testing/examples/webgl_materials_physical_clearcoat.ts
-index 408fd992..dc782ea9 100644
+index 408fd9921..dc782ea9e 100644
--- a/examples-testing/examples/webgl_materials_physical_clearcoat.ts
+++ b/examples-testing/examples/webgl_materials_physical_clearcoat.ts
@@ -7,12 +7,12 @@ import { HDRCubeTextureLoader } from 'three/addons/loaders/HDRCubeTextureLoader.
@@ -9017,7 +9017,7 @@ index 408fd992..dc782ea9 100644
init();
diff --git a/examples-testing/examples/webgl_materials_physical_transmission.ts b/examples-testing/examples/webgl_materials_physical_transmission.ts
-index 08ee08ca..3fca6cce 100644
+index 08ee08cac..3fca6ccea 100644
--- a/examples-testing/examples/webgl_materials_physical_transmission.ts
+++ b/examples-testing/examples/webgl_materials_physical_transmission.ts
@@ -20,7 +20,7 @@ const params = {
@@ -9039,7 +9039,7 @@ index 08ee08ca..3fca6cce 100644
context.fillRect(0, 1, 2, 1);
diff --git a/examples-testing/examples/webgl_materials_physical_transmission_alpha.ts b/examples-testing/examples/webgl_materials_physical_transmission_alpha.ts
-index 6318d784..254e1b23 100644
+index 6318d7844..254e1b230 100644
--- a/examples-testing/examples/webgl_materials_physical_transmission_alpha.ts
+++ b/examples-testing/examples/webgl_materials_physical_transmission_alpha.ts
@@ -22,9 +22,9 @@ const params = {
@@ -9079,7 +9079,7 @@ index 6318d784..254e1b23 100644
scene = new THREE.Scene();
diff --git a/examples-testing/examples/webgl_materials_texture_anisotropy.ts b/examples-testing/examples/webgl_materials_texture_anisotropy.ts
-index 1e030d64..65577721 100644
+index 1e030d64d..65577721c 100644
--- a/examples-testing/examples/webgl_materials_texture_anisotropy.ts
+++ b/examples-testing/examples/webgl_materials_texture_anisotropy.ts
@@ -5,9 +5,9 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -9120,7 +9120,7 @@ index 1e030d64..65577721 100644
mouseY = event.clientY - windowHalfY;
}
diff --git a/examples-testing/examples/webgl_materials_texture_canvas.ts b/examples-testing/examples/webgl_materials_texture_canvas.ts
-index d23c6843..5a190fab 100644
+index d23c68436..5a190fab0 100644
--- a/examples-testing/examples/webgl_materials_texture_canvas.ts
+++ b/examples-testing/examples/webgl_materials_texture_canvas.ts
@@ -1,6 +1,10 @@
@@ -9165,7 +9165,7 @@ index d23c6843..5a190fab 100644
function onWindowResize() {
diff --git a/examples-testing/examples/webgl_materials_texture_filters.ts b/examples-testing/examples/webgl_materials_texture_filters.ts
-index 77b25468..b2ccb769 100644
+index 77b254684..b2ccb7690 100644
--- a/examples-testing/examples/webgl_materials_texture_filters.ts
+++ b/examples-testing/examples/webgl_materials_texture_filters.ts
@@ -3,9 +3,9 @@ import * as THREE from 'three';
@@ -9208,7 +9208,7 @@ index 77b25468..b2ccb769 100644
mouseY = event.clientY - windowHalfY;
}
diff --git a/examples-testing/examples/webgl_materials_texture_manualmipmap.ts b/examples-testing/examples/webgl_materials_texture_manualmipmap.ts
-index 24bd4eb9..2dad75e8 100644
+index 24bd4eb9f..2dad75e8e 100644
--- a/examples-testing/examples/webgl_materials_texture_manualmipmap.ts
+++ b/examples-testing/examples/webgl_materials_texture_manualmipmap.ts
@@ -3,9 +3,9 @@ import * as THREE from 'three';
@@ -9277,7 +9277,7 @@ index 24bd4eb9..2dad75e8 100644
mouseY = event.clientY - windowHalfY;
}
diff --git a/examples-testing/examples/webgl_materials_texture_partialupdate.ts b/examples-testing/examples/webgl_materials_texture_partialupdate.ts
-index 57fdc1c0..895c3b5a 100644
+index cae161939..0bcdf473d 100644
--- a/examples-testing/examples/webgl_materials_texture_partialupdate.ts
+++ b/examples-testing/examples/webgl_materials_texture_partialupdate.ts
@@ -1,6 +1,11 @@
@@ -9293,7 +9293,7 @@ index 57fdc1c0..895c3b5a 100644
let last = 0;
const position = new THREE.Vector2();
-@@ -80,9 +85,9 @@ function animate() {
+@@ -81,9 +86,9 @@ function animate() {
renderer.render(scene, camera);
}
@@ -9306,7 +9306,7 @@ index 57fdc1c0..895c3b5a 100644
// generate a random color and update texture data
diff --git a/examples-testing/examples/webgl_materials_texture_rotation.ts b/examples-testing/examples/webgl_materials_texture_rotation.ts
-index eedc80c6..e5c7131f 100644
+index eedc80c6f..e5c7131f4 100644
--- a/examples-testing/examples/webgl_materials_texture_rotation.ts
+++ b/examples-testing/examples/webgl_materials_texture_rotation.ts
@@ -3,7 +3,10 @@ import * as THREE from 'three';
@@ -9331,7 +9331,7 @@ index eedc80c6..e5c7131f 100644
if (texture.matrixAutoUpdate === true) {
texture.offset.set(API.offsetX, API.offsetY);
diff --git a/examples-testing/examples/webgl_materials_toon.ts b/examples-testing/examples/webgl_materials_toon.ts
-index 46c6a7e9..e89fc8cf 100644
+index 46c6a7e93..e89fc8cf3 100644
--- a/examples-testing/examples/webgl_materials_toon.ts
+++ b/examples-testing/examples/webgl_materials_toon.ts
@@ -4,20 +4,20 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -9370,7 +9370,7 @@ index 46c6a7e9..e89fc8cf 100644
font: font,
diff --git a/examples-testing/examples/webgl_materials_video.ts b/examples-testing/examples/webgl_materials_video.ts
-index 4f0d26a1..0bf378c5 100644
+index 4f0d26a18..0bf378c5d 100644
--- a/examples-testing/examples/webgl_materials_video.ts
+++ b/examples-testing/examples/webgl_materials_video.ts
@@ -5,13 +5,16 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -9487,7 +9487,7 @@ index 4f0d26a1..0bf378c5 100644
}
diff --git a/examples-testing/examples/webgl_materials_video_webcam.ts b/examples-testing/examples/webgl_materials_video_webcam.ts
-index cf6f8d50..00b48c16 100644
+index cf6f8d50c..00b48c163 100644
--- a/examples-testing/examples/webgl_materials_video_webcam.ts
+++ b/examples-testing/examples/webgl_materials_video_webcam.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
@@ -9509,7 +9509,7 @@ index cf6f8d50..00b48c16 100644
const texture = new THREE.VideoTexture(video);
texture.colorSpace = THREE.SRGBColorSpace;
diff --git a/examples-testing/examples/webgl_materials_wireframe.ts b/examples-testing/examples/webgl_materials_wireframe.ts
-index 8adbd71d..6424e8cb 100644
+index 8adbd71d6..6424e8cbd 100644
--- a/examples-testing/examples/webgl_materials_wireframe.ts
+++ b/examples-testing/examples/webgl_materials_wireframe.ts
@@ -8,7 +8,10 @@ const API = {
@@ -9545,7 +9545,7 @@ index 8adbd71d..6424e8cb 100644
const position = geometry.attributes.position;
diff --git a/examples-testing/examples/webgl_math_obb.ts b/examples-testing/examples/webgl_math_obb.ts
-index 71cb5a91..24b50ba8 100644
+index 71cb5a916..24b50ba81 100644
--- a/examples-testing/examples/webgl_math_obb.ts
+++ b/examples-testing/examples/webgl_math_obb.ts
@@ -5,9 +5,16 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -9590,7 +9590,7 @@ index 71cb5a91..24b50ba8 100644
}
diff --git a/examples-testing/examples/webgl_math_orientation_transform.ts b/examples-testing/examples/webgl_math_orientation_transform.ts
-index 1d66997c..a596f014 100644
+index 1d66997c4..a596f014f 100644
--- a/examples-testing/examples/webgl_math_orientation_transform.ts
+++ b/examples-testing/examples/webgl_math_orientation_transform.ts
@@ -2,7 +2,11 @@ import * as THREE from 'three';
@@ -9607,7 +9607,7 @@ index 1d66997c..a596f014 100644
const spherical = new THREE.Spherical();
const rotationMatrix = new THREE.Matrix4();
diff --git a/examples-testing/examples/webgl_mesh_batch.ts b/examples-testing/examples/webgl_mesh_batch.ts
-index e238e50a..618a58c0 100644
+index e238e50a3..618a58c03 100644
--- a/examples-testing/examples/webgl_mesh_batch.ts
+++ b/examples-testing/examples/webgl_mesh_batch.ts
@@ -4,12 +4,12 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -9718,7 +9718,7 @@ index e238e50a..618a58c0 100644
renderer.render(scene, camera);
diff --git a/examples-testing/examples/webgl_mirror.ts b/examples-testing/examples/webgl_mirror.ts
-index 4f1f17f7..6c780eab 100644
+index 4f1f17f7d..6c780eabe 100644
--- a/examples-testing/examples/webgl_mirror.ts
+++ b/examples-testing/examples/webgl_mirror.ts
@@ -5,13 +5,13 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -9749,7 +9749,7 @@ index 4f1f17f7..6c780eab 100644
// renderer
renderer = new THREE.WebGLRenderer({ antialias: true });
diff --git a/examples-testing/examples/webgl_modifier_edgesplit.ts b/examples-testing/examples/webgl_modifier_edgesplit.ts
-index 4725eff6..96620f50 100644
+index 4725eff62..96620f504 100644
--- a/examples-testing/examples/webgl_modifier_edgesplit.ts
+++ b/examples-testing/examples/webgl_modifier_edgesplit.ts
@@ -7,9 +7,11 @@ import * as BufferGeometryUtils from 'three/addons/utils/BufferGeometryUtils.js'
@@ -9777,7 +9777,7 @@ index 4725eff6..96620f50 100644
modifier = new EdgeSplitModifier();
diff --git a/examples-testing/examples/webgl_modifier_simplifier.ts b/examples-testing/examples/webgl_modifier_simplifier.ts
-index e6ea453b..f55a6581 100644
+index e6ea453b3..f55a6581b 100644
--- a/examples-testing/examples/webgl_modifier_simplifier.ts
+++ b/examples-testing/examples/webgl_modifier_simplifier.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -9799,7 +9799,7 @@ index e6ea453b..f55a6581 100644
simplified.material.flatShading = true;
const count = Math.floor(simplified.geometry.attributes.position.count * 0.875); // number of vertices to remove
diff --git a/examples-testing/examples/webgl_modifier_tessellation.ts b/examples-testing/examples/webgl_modifier_tessellation.ts
-index 4600fc6c..83af66a7 100644
+index 4600fc6cb..83af66a7c 100644
--- a/examples-testing/examples/webgl_modifier_tessellation.ts
+++ b/examples-testing/examples/webgl_modifier_tessellation.ts
@@ -4,14 +4,14 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -9851,7 +9851,7 @@ index 4600fc6c..83af66a7 100644
controls = new TrackballControls(camera, renderer.domElement);
diff --git a/examples-testing/examples/webgl_morphtargets.ts b/examples-testing/examples/webgl_morphtargets.ts
-index d8a4bbe8..92ef3836 100644
+index d8a4bbe8d..92ef3836a 100644
--- a/examples-testing/examples/webgl_morphtargets.ts
+++ b/examples-testing/examples/webgl_morphtargets.ts
@@ -3,12 +3,16 @@ import * as THREE from 'three';
@@ -9896,7 +9896,7 @@ index d8a4bbe8..92ef3836 100644
}
diff --git a/examples-testing/examples/webgl_morphtargets_face.ts b/examples-testing/examples/webgl_morphtargets_face.ts
-index 7f348c8a..1fa93e3b 100644
+index 7f348c8a4..1fa93e3be 100644
--- a/examples-testing/examples/webgl_morphtargets_face.ts
+++ b/examples-testing/examples/webgl_morphtargets_face.ts
@@ -12,7 +12,13 @@ import { RoomEnvironment } from 'three/addons/environments/RoomEnvironment.js';
@@ -9932,7 +9932,7 @@ index 7f348c8a..1fa93e3b 100644
}
});
diff --git a/examples-testing/examples/webgl_morphtargets_horse.ts b/examples-testing/examples/webgl_morphtargets_horse.ts
-index 2c29e9c0..5e285283 100644
+index 2c29e9c0e..5e285283a 100644
--- a/examples-testing/examples/webgl_morphtargets_horse.ts
+++ b/examples-testing/examples/webgl_morphtargets_horse.ts
@@ -4,9 +4,9 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -9949,7 +9949,7 @@ index 2c29e9c0..5e285283 100644
const radius = 600;
let theta = 0;
diff --git a/examples-testing/examples/webgl_morphtargets_sphere.ts b/examples-testing/examples/webgl_morphtargets_sphere.ts
-index 3e36f002..0c45a0cf 100644
+index 3e36f002c..0c45a0cf9 100644
--- a/examples-testing/examples/webgl_morphtargets_sphere.ts
+++ b/examples-testing/examples/webgl_morphtargets_sphere.ts
@@ -3,9 +3,9 @@ import * as THREE from 'three';
@@ -9995,7 +9995,7 @@ index 3e36f002..0c45a0cf 100644
}
}
diff --git a/examples-testing/examples/webgl_multiple_elements.ts b/examples-testing/examples/webgl_multiple_elements.ts
-index 64f8a9c5..8dafa688 100644
+index 64f8a9c5f..8dafa6881 100644
--- a/examples-testing/examples/webgl_multiple_elements.ts
+++ b/examples-testing/examples/webgl_multiple_elements.ts
@@ -2,14 +2,14 @@ import * as THREE from 'three';
@@ -10026,7 +10026,7 @@ index 64f8a9c5..8dafa688 100644
for (let i = 0; i < 40; i++) {
const scene = new THREE.Scene();
diff --git a/examples-testing/examples/webgl_multiple_rendertargets.ts b/examples-testing/examples/webgl_multiple_rendertargets.ts
-index 86708082..f63b7de6 100644
+index 86708082b..f63b7de60 100644
--- a/examples-testing/examples/webgl_multiple_rendertargets.ts
+++ b/examples-testing/examples/webgl_multiple_rendertargets.ts
@@ -3,9 +3,9 @@ import * as THREE from 'three';
@@ -10076,7 +10076,7 @@ index 86708082..f63b7de6 100644
});
diff --git a/examples-testing/examples/webgl_multiple_scenes_comparison.ts b/examples-testing/examples/webgl_multiple_scenes_comparison.ts
-index 41a5130d..66d539a9 100644
+index 41a5130d4..66d539a9b 100644
--- a/examples-testing/examples/webgl_multiple_scenes_comparison.ts
+++ b/examples-testing/examples/webgl_multiple_scenes_comparison.ts
@@ -2,15 +2,15 @@ import * as THREE from 'three';
@@ -10124,7 +10124,7 @@ index 41a5130d..66d539a9 100644
slider.style.left = sliderPos - slider.offsetWidth / 2 + 'px';
}
diff --git a/examples-testing/examples/webgl_multiple_views.ts b/examples-testing/examples/webgl_multiple_views.ts
-index 672846f9..5ba46471 100644
+index 672846f9f..5ba46471a 100644
--- a/examples-testing/examples/webgl_multiple_views.ts
+++ b/examples-testing/examples/webgl_multiple_views.ts
@@ -2,15 +2,26 @@ import * as THREE from 'three';
@@ -10196,7 +10196,7 @@ index 672846f9..5ba46471 100644
view.updateCamera(camera, scene, mouseX);
diff --git a/examples-testing/examples/webgl_multisampled_renderbuffers.ts b/examples-testing/examples/webgl_multisampled_renderbuffers.ts
-index df84fb14..fc3da7a8 100644
+index df84fb144..fc3da7a87 100644
--- a/examples-testing/examples/webgl_multisampled_renderbuffers.ts
+++ b/examples-testing/examples/webgl_multisampled_renderbuffers.ts
@@ -5,9 +5,9 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -10221,7 +10221,7 @@ index df84fb14..fc3da7a8 100644
camera = new THREE.PerspectiveCamera(45, container.offsetWidth / container.offsetHeight, 10, 2000);
camera.position.z = 500;
diff --git a/examples-testing/examples/webgl_panorama_cube.ts b/examples-testing/examples/webgl_panorama_cube.ts
-index efd09cfc..e4832209 100644
+index efd09cfc5..e4832209e 100644
--- a/examples-testing/examples/webgl_panorama_cube.ts
+++ b/examples-testing/examples/webgl_panorama_cube.ts
@@ -2,14 +2,14 @@ import * as THREE from 'three';
@@ -10264,7 +10264,7 @@ index efd09cfc..e4832209 100644
canvas.width = tileWidth;
context.drawImage(image, tileWidth * i, 0, tileWidth, tileWidth, 0, 0, tileWidth, tileWidth);
diff --git a/examples-testing/examples/webgl_panorama_equirectangular.ts b/examples-testing/examples/webgl_panorama_equirectangular.ts
-index 35949ee6..6d631dee 100644
+index 35949ee6f..6d631dee3 100644
--- a/examples-testing/examples/webgl_panorama_equirectangular.ts
+++ b/examples-testing/examples/webgl_panorama_equirectangular.ts
@@ -1,6 +1,6 @@
@@ -10320,7 +10320,7 @@ index 35949ee6..6d631dee 100644
camera.fov = THREE.MathUtils.clamp(fov, 10, 75);
diff --git a/examples-testing/examples/webgl_performance.ts b/examples-testing/examples/webgl_performance.ts
-index 697ea36f..22368981 100644
+index 697ea36fb..223689815 100644
--- a/examples-testing/examples/webgl_performance.ts
+++ b/examples-testing/examples/webgl_performance.ts
@@ -6,7 +6,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -10333,7 +10333,7 @@ index 697ea36f..22368981 100644
init();
diff --git a/examples-testing/examples/webgl_pmrem_cubemap.ts b/examples-testing/examples/webgl_pmrem_cubemap.ts
-index fb5bdafc..c432f8d3 100644
+index fb5bdafc1..c432f8d35 100644
--- a/examples-testing/examples/webgl_pmrem_cubemap.ts
+++ b/examples-testing/examples/webgl_pmrem_cubemap.ts
@@ -4,7 +4,7 @@ import { HDRCubeTextureLoader } from 'three/addons/loaders/HDRCubeTextureLoader.
@@ -10346,7 +10346,7 @@ index fb5bdafc..c432f8d3 100644
init();
diff --git a/examples-testing/examples/webgl_pmrem_equirectangular.ts b/examples-testing/examples/webgl_pmrem_equirectangular.ts
-index e7b8e76d..409d5e8e 100644
+index e7b8e76df..409d5e8e3 100644
--- a/examples-testing/examples/webgl_pmrem_equirectangular.ts
+++ b/examples-testing/examples/webgl_pmrem_equirectangular.ts
@@ -4,7 +4,7 @@ import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
@@ -10359,7 +10359,7 @@ index e7b8e76d..409d5e8e 100644
init();
diff --git a/examples-testing/examples/webgl_pmrem_test.ts b/examples-testing/examples/webgl_pmrem_test.ts
-index 3c482338..292f01c3 100644
+index 3c482338f..292f01c3d 100644
--- a/examples-testing/examples/webgl_pmrem_test.ts
+++ b/examples-testing/examples/webgl_pmrem_test.ts
@@ -5,7 +5,7 @@ import { HDRLoader } from 'three/addons/loaders/HDRLoader.js';
@@ -10384,7 +10384,7 @@ index 3c482338..292f01c3 100644
});
diff --git a/examples-testing/examples/webgl_points_billboards.ts b/examples-testing/examples/webgl_points_billboards.ts
-index 24d4de1a..f1a089bf 100644
+index 24d4de1a9..f1a089bf9 100644
--- a/examples-testing/examples/webgl_points_billboards.ts
+++ b/examples-testing/examples/webgl_points_billboards.ts
@@ -4,7 +4,11 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -10410,7 +10410,7 @@ index 24d4de1a..f1a089bf 100644
mouseX = event.clientX - windowHalfX;
diff --git a/examples-testing/examples/webgl_points_sprites.ts b/examples-testing/examples/webgl_points_sprites.ts
-index 31b9e2ce..d8f24b29 100644
+index 31b9e2ce1..d8f24b296 100644
--- a/examples-testing/examples/webgl_points_sprites.ts
+++ b/examples-testing/examples/webgl_points_sprites.ts
@@ -4,14 +4,18 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -10453,7 +10453,7 @@ index 31b9e2ce..d8f24b29 100644
mouseX = event.clientX - windowHalfX;
diff --git a/examples-testing/examples/webgl_points_waves.ts b/examples-testing/examples/webgl_points_waves.ts
-index 91986e9e..cb8e7687 100644
+index 91986e9e9..cb8e76873 100644
--- a/examples-testing/examples/webgl_points_waves.ts
+++ b/examples-testing/examples/webgl_points_waves.ts
@@ -6,10 +6,10 @@ const SEPARATION = 100,
@@ -10491,7 +10491,7 @@ index 91986e9e..cb8e7687 100644
mouseX = event.clientX - windowHalfX;
diff --git a/examples-testing/examples/webgl_portal.ts b/examples-testing/examples/webgl_portal.ts
-index 4bc59593..e61736c3 100644
+index 4bc59593f..e61736c30 100644
--- a/examples-testing/examples/webgl_portal.ts
+++ b/examples-testing/examples/webgl_portal.ts
@@ -3,26 +3,26 @@ import * as THREE from 'three';
@@ -10548,7 +10548,7 @@ index 4bc59593..e61736c3 100644
thisPortalMesh.worldToLocal(reflectedPosition.copy(camera.position));
reflectedPosition.x *= -1.0;
diff --git a/examples-testing/examples/webgl_postprocessing.ts b/examples-testing/examples/webgl_postprocessing.ts
-index ecc9b28e..2e894236 100644
+index ecc9b28ee..2e8942363 100644
--- a/examples-testing/examples/webgl_postprocessing.ts
+++ b/examples-testing/examples/webgl_postprocessing.ts
@@ -8,8 +8,8 @@ import { RGBShiftShader } from 'three/addons/shaders/RGBShiftShader.js';
@@ -10563,7 +10563,7 @@ index ecc9b28e..2e894236 100644
init();
diff --git a/examples-testing/examples/webgl_postprocessing_advanced.ts b/examples-testing/examples/webgl_postprocessing_advanced.ts
-index 82fc39be..1a14c2b9 100644
+index 82fc39be3..1a14c2b9b 100644
--- a/examples-testing/examples/webgl_postprocessing_advanced.ts
+++ b/examples-testing/examples/webgl_postprocessing_advanced.ts
@@ -21,11 +21,21 @@ import { GammaCorrectionShader } from 'three/addons/shaders/GammaCorrectionShade
@@ -10629,7 +10629,7 @@ index 82fc39be..1a14c2b9 100644
diffuseMap.colorSpace = THREE.SRGBColorSpace;
diff --git a/examples-testing/examples/webgl_postprocessing_afterimage.ts b/examples-testing/examples/webgl_postprocessing_afterimage.ts
-index 97353dcd..433322a3 100644
+index 97353dcd2..433322a3e 100644
--- a/examples-testing/examples/webgl_postprocessing_afterimage.ts
+++ b/examples-testing/examples/webgl_postprocessing_afterimage.ts
@@ -7,10 +7,10 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -10647,7 +10647,7 @@ index 97353dcd..433322a3 100644
const params = {
enable: true,
diff --git a/examples-testing/examples/webgl_postprocessing_backgrounds.ts b/examples-testing/examples/webgl_postprocessing_backgrounds.ts
-index 57a6a2db..f6d4c716 100644
+index 57a6a2dbd..f6d4c7167 100644
--- a/examples-testing/examples/webgl_postprocessing_backgrounds.ts
+++ b/examples-testing/examples/webgl_postprocessing_backgrounds.ts
@@ -11,10 +11,10 @@ import { ClearPass } from 'three/addons/postprocessing/ClearPass.js';
@@ -10684,7 +10684,7 @@ index 57a6a2db..f6d4c716 100644
prefix + 'px' + postfix,
prefix + 'nx' + postfix,
diff --git a/examples-testing/examples/webgl_postprocessing_fxaa.ts b/examples-testing/examples/webgl_postprocessing_fxaa.ts
-index c5e632ad..1774b0c8 100644
+index c5e632ad7..1774b0c84 100644
--- a/examples-testing/examples/webgl_postprocessing_fxaa.ts
+++ b/examples-testing/examples/webgl_postprocessing_fxaa.ts
@@ -6,14 +6,18 @@ import { OutputPass } from 'three/addons/postprocessing/OutputPass.js';
@@ -10710,7 +10710,7 @@ index c5e632ad..1774b0c8 100644
camera = new THREE.PerspectiveCamera(45, container.offsetWidth / container.offsetHeight, 1, 2000);
camera.position.z = 500;
diff --git a/examples-testing/examples/webgl_postprocessing_glitch.ts b/examples-testing/examples/webgl_postprocessing_glitch.ts
-index 02acda57..5c39961f 100644
+index 02acda572..5c39961fa 100644
--- a/examples-testing/examples/webgl_postprocessing_glitch.ts
+++ b/examples-testing/examples/webgl_postprocessing_glitch.ts
@@ -5,21 +5,21 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -10751,7 +10751,7 @@ index 02acda57..5c39961f 100644
updateOptions();
diff --git a/examples-testing/examples/webgl_postprocessing_godrays.ts b/examples-testing/examples/webgl_postprocessing_godrays.ts
-index b7c2c666..a8d6f639 100644
+index b7c2c6661..a8d6f639f 100644
--- a/examples-testing/examples/webgl_postprocessing_godrays.ts
+++ b/examples-testing/examples/webgl_postprocessing_godrays.ts
@@ -6,10 +6,10 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -10796,7 +10796,7 @@ index b7c2c666..a8d6f639 100644
obj.receiveShadow = true;
}
diff --git a/examples-testing/examples/webgl_postprocessing_gtao.ts b/examples-testing/examples/webgl_postprocessing_gtao.ts
-index a37d3041..9165702d 100644
+index a37d3041b..9165702d8 100644
--- a/examples-testing/examples/webgl_postprocessing_gtao.ts
+++ b/examples-testing/examples/webgl_postprocessing_gtao.ts
@@ -10,7 +10,14 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -10816,7 +10816,7 @@ index a37d3041..9165702d 100644
init();
diff --git a/examples-testing/examples/webgl_postprocessing_masking.ts b/examples-testing/examples/webgl_postprocessing_masking.ts
-index a4d09866..238c37da 100644
+index a4d09866d..238c37da7 100644
--- a/examples-testing/examples/webgl_postprocessing_masking.ts
+++ b/examples-testing/examples/webgl_postprocessing_masking.ts
@@ -6,8 +6,8 @@ import { ClearPass } from 'three/addons/postprocessing/ClearPass.js';
@@ -10831,7 +10831,7 @@ index a4d09866..238c37da 100644
init();
diff --git a/examples-testing/examples/webgl_postprocessing_outline.ts b/examples-testing/examples/webgl_postprocessing_outline.ts
-index 31ef6b9b..4b1fa11a 100644
+index 31ef6b9b2..4b1fa11a3 100644
--- a/examples-testing/examples/webgl_postprocessing_outline.ts
+++ b/examples-testing/examples/webgl_postprocessing_outline.ts
@@ -12,11 +12,11 @@ import { OutlinePass } from 'three/addons/postprocessing/OutlinePass.js';
@@ -10887,7 +10887,7 @@ index 31ef6b9b..4b1fa11a 100644
selectedObjects.push(object);
}
diff --git a/examples-testing/examples/webgl_postprocessing_pixel.ts b/examples-testing/examples/webgl_postprocessing_pixel.ts
-index 04aec481..3dc6f997 100644
+index 04aec4816..3dc6f997d 100644
--- a/examples-testing/examples/webgl_postprocessing_pixel.ts
+++ b/examples-testing/examples/webgl_postprocessing_pixel.ts
@@ -6,8 +6,14 @@ import { RenderPixelatedPass } from 'three/addons/postprocessing/RenderPixelated
@@ -10978,7 +10978,7 @@ index 04aec481..3dc6f997 100644
const worldScreenWidth = (camera.right - camera.left) / camera.zoom;
const worldScreenHeight = (camera.top - camera.bottom) / camera.zoom;
diff --git a/examples-testing/examples/webgl_postprocessing_procedural.ts b/examples-testing/examples/webgl_postprocessing_procedural.ts
-index 86982427..4533b72b 100644
+index 869824270..4533b72bd 100644
--- a/examples-testing/examples/webgl_postprocessing_procedural.ts
+++ b/examples-testing/examples/webgl_postprocessing_procedural.ts
@@ -3,16 +3,20 @@ import * as THREE from 'three';
@@ -11030,7 +11030,7 @@ index 86982427..4533b72b 100644
postMaterial = noiseRandom3DMaterial;
const postPlane = new THREE.PlaneGeometry(2, 2);
diff --git a/examples-testing/examples/webgl_postprocessing_rgb_halftone.ts b/examples-testing/examples/webgl_postprocessing_rgb_halftone.ts
-index 5a40f979..c1630944 100644
+index 5a40f9793..c16309448 100644
--- a/examples-testing/examples/webgl_postprocessing_rgb_halftone.ts
+++ b/examples-testing/examples/webgl_postprocessing_rgb_halftone.ts
@@ -8,11 +8,11 @@ import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
@@ -11048,7 +11048,7 @@ index 5a40f979..c1630944 100644
init();
diff --git a/examples-testing/examples/webgl_postprocessing_sao.ts b/examples-testing/examples/webgl_postprocessing_sao.ts
-index 0c6298e6..c7ab9a36 100644
+index 0c6298e6b..c7ab9a36e 100644
--- a/examples-testing/examples/webgl_postprocessing_sao.ts
+++ b/examples-testing/examples/webgl_postprocessing_sao.ts
@@ -8,10 +8,10 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -11067,7 +11067,7 @@ index 0c6298e6..c7ab9a36 100644
init();
diff --git a/examples-testing/examples/webgl_postprocessing_smaa.ts b/examples-testing/examples/webgl_postprocessing_smaa.ts
-index 9e73d38b..e07817b1 100644
+index 9e73d38b0..e07817b17 100644
--- a/examples-testing/examples/webgl_postprocessing_smaa.ts
+++ b/examples-testing/examples/webgl_postprocessing_smaa.ts
@@ -8,7 +8,12 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -11094,7 +11094,7 @@ index 9e73d38b..e07817b1 100644
renderer = new THREE.WebGLRenderer();
renderer.setPixelRatio(window.devicePixelRatio);
diff --git a/examples-testing/examples/webgl_postprocessing_sobel.ts b/examples-testing/examples/webgl_postprocessing_sobel.ts
-index 55d88dc0..1512ed8b 100644
+index 55d88dc02..1512ed8bd 100644
--- a/examples-testing/examples/webgl_postprocessing_sobel.ts
+++ b/examples-testing/examples/webgl_postprocessing_sobel.ts
@@ -11,9 +11,9 @@ import { ShaderPass } from 'three/addons/postprocessing/ShaderPass.js';
@@ -11110,7 +11110,7 @@ index 55d88dc0..1512ed8b 100644
const params = {
enable: true,
diff --git a/examples-testing/examples/webgl_postprocessing_ssaa.ts b/examples-testing/examples/webgl_postprocessing_ssaa.ts
-index 45d8767b..84be0a91 100644
+index 45d8767b1..84be0a91f 100644
--- a/examples-testing/examples/webgl_postprocessing_ssaa.ts
+++ b/examples-testing/examples/webgl_postprocessing_ssaa.ts
@@ -7,10 +7,10 @@ import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
@@ -11147,7 +11147,7 @@ index 45d8767b..84be0a91 100644
composer.render();
diff --git a/examples-testing/examples/webgl_postprocessing_ssao.ts b/examples-testing/examples/webgl_postprocessing_ssao.ts
-index fd3739af..5d2865f0 100644
+index fd3739af3..5d2865f06 100644
--- a/examples-testing/examples/webgl_postprocessing_ssao.ts
+++ b/examples-testing/examples/webgl_postprocessing_ssao.ts
@@ -8,10 +8,10 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -11166,7 +11166,7 @@ index fd3739af..5d2865f0 100644
init();
diff --git a/examples-testing/examples/webgl_postprocessing_ssr.ts b/examples-testing/examples/webgl_postprocessing_ssr.ts
-index 1f5e48d3..bad3a477 100644
+index 1f5e48d3b..bad3a477f 100644
--- a/examples-testing/examples/webgl_postprocessing_ssr.ts
+++ b/examples-testing/examples/webgl_postprocessing_ssr.ts
@@ -18,17 +18,17 @@ const params = {
@@ -11208,7 +11208,7 @@ index 1f5e48d3..bad3a477 100644
geometry = new THREE.BoxGeometry(0.05, 0.05, 0.05);
material = new THREE.MeshStandardMaterial({ color: 'green' });
diff --git a/examples-testing/examples/webgl_postprocessing_taa.ts b/examples-testing/examples/webgl_postprocessing_taa.ts
-index 11a98674..ddb2bcc6 100644
+index 11a986741..ddb2bcc6c 100644
--- a/examples-testing/examples/webgl_postprocessing_taa.ts
+++ b/examples-testing/examples/webgl_postprocessing_taa.ts
@@ -8,8 +8,13 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -11237,7 +11237,7 @@ index 11a98674..ddb2bcc6 100644
renderer = new THREE.WebGLRenderer();
renderer.setPixelRatio(window.devicePixelRatio);
diff --git a/examples-testing/examples/webgl_postprocessing_transition.ts b/examples-testing/examples/webgl_postprocessing_transition.ts
-index 1cf5dd3c..53c3e9b3 100644
+index 1cf5dd3cb..53c3e9b31 100644
--- a/examples-testing/examples/webgl_postprocessing_transition.ts
+++ b/examples-testing/examples/webgl_postprocessing_transition.ts
@@ -7,10 +7,10 @@ import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
@@ -11359,7 +11359,7 @@ index 1cf5dd3c..53c3e9b3 100644
const dummy = new THREE.Object3D();
diff --git a/examples-testing/examples/webgl_postprocessing_unreal_bloom.ts b/examples-testing/examples/webgl_postprocessing_unreal_bloom.ts
-index b5e2ee0f..1de630e0 100644
+index b5e2ee0f9..1de630e05 100644
--- a/examples-testing/examples/webgl_postprocessing_unreal_bloom.ts
+++ b/examples-testing/examples/webgl_postprocessing_unreal_bloom.ts
@@ -10,8 +10,8 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -11383,7 +11383,7 @@ index b5e2ee0f..1de630e0 100644
timer = new THREE.Timer();
timer.connect(document);
diff --git a/examples-testing/examples/webgl_postprocessing_unreal_bloom_selective.ts b/examples-testing/examples/webgl_postprocessing_unreal_bloom_selective.ts
-index 288b4477..e56fedad 100644
+index 288b4477d..e56fedad4 100644
--- a/examples-testing/examples/webgl_postprocessing_unreal_bloom_selective.ts
+++ b/examples-testing/examples/webgl_postprocessing_unreal_bloom_selective.ts
@@ -23,7 +23,7 @@ const params = {
@@ -11452,7 +11452,7 @@ index 288b4477..e56fedad 100644
}
}
diff --git a/examples-testing/examples/webgl_random_uv.ts b/examples-testing/examples/webgl_random_uv.ts
-index fea6b347..fef39937 100644
+index fea6b3478..fef399378 100644
--- a/examples-testing/examples/webgl_random_uv.ts
+++ b/examples-testing/examples/webgl_random_uv.ts
@@ -6,14 +6,24 @@ import { HDRLoader } from 'three/addons/loaders/HDRLoader.js';
@@ -11501,7 +11501,7 @@ index fea6b347..fef39937 100644
materialIn.transparent = true;
diff --git a/examples-testing/examples/webgl_raycaster_sprite.ts b/examples-testing/examples/webgl_raycaster_sprite.ts
-index f35d5de1..73dd9349 100644
+index f35d5de17..73dd93494 100644
--- a/examples-testing/examples/webgl_raycaster_sprite.ts
+++ b/examples-testing/examples/webgl_raycaster_sprite.ts
@@ -2,10 +2,10 @@ import * as THREE from 'three';
@@ -11537,7 +11537,7 @@ index f35d5de1..73dd9349 100644
}
}
diff --git a/examples-testing/examples/webgl_raycaster_texture.ts b/examples-testing/examples/webgl_raycaster_texture.ts
-index 72c7054d..0e584dc0 100644
+index 72c7054dc..0e584dc0b 100644
--- a/examples-testing/examples/webgl_raycaster_texture.ts
+++ b/examples-testing/examples/webgl_raycaster_texture.ts
@@ -8,7 +8,15 @@ const WRAPPING = {
@@ -11750,7 +11750,7 @@ index 72c7054d..0e584dc0 100644
circleTexture.needsUpdate = true;
}
diff --git a/examples-testing/examples/webgl_read_float_buffer.ts b/examples-testing/examples/webgl_read_float_buffer.ts
-index 69f84772..e0e975c4 100644
+index 69f847729..e0e975c4f 100644
--- a/examples-testing/examples/webgl_read_float_buffer.ts
+++ b/examples-testing/examples/webgl_read_float_buffer.ts
@@ -2,9 +2,14 @@ import * as THREE from 'three';
@@ -11824,7 +11824,7 @@ index 69f84772..e0e975c4 100644
mouseY = event.clientY - windowHalfY;
}
diff --git a/examples-testing/examples/webgl_refraction.ts b/examples-testing/examples/webgl_refraction.ts
-index b8ef7143..1c61619e 100644
+index b8ef7143d..1c61619ec 100644
--- a/examples-testing/examples/webgl_refraction.ts
+++ b/examples-testing/examples/webgl_refraction.ts
@@ -4,14 +4,14 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -11846,7 +11846,7 @@ index b8ef7143..1c61619e 100644
timer = new THREE.Timer();
timer.connect(document);
diff --git a/examples-testing/examples/webgl_rtt.ts b/examples-testing/examples/webgl_rtt.ts
-index b80e78ed..47e8e8b3 100644
+index b80e78ed3..47e8e8b3b 100644
--- a/examples-testing/examples/webgl_rtt.ts
+++ b/examples-testing/examples/webgl_rtt.ts
@@ -2,9 +2,16 @@ import * as THREE from 'three';
@@ -11914,7 +11914,7 @@ index b80e78ed..47e8e8b3 100644
mouseY = event.clientY - windowHalfY;
}
diff --git a/examples-testing/examples/webgl_shader.ts b/examples-testing/examples/webgl_shader.ts
-index 47a6c7ec..7ac1257b 100644
+index 47a6c7ece..7ac1257b6 100644
--- a/examples-testing/examples/webgl_shader.ts
+++ b/examples-testing/examples/webgl_shader.ts
@@ -1,13 +1,13 @@
@@ -11946,7 +11946,7 @@ index 47a6c7ec..7ac1257b 100644
const mesh = new THREE.Mesh(geometry, material);
diff --git a/examples-testing/examples/webgl_shader_lava.ts b/examples-testing/examples/webgl_shader_lava.ts
-index 0c974f5b..14a618b4 100644
+index 0c974f5b9..14a618b44 100644
--- a/examples-testing/examples/webgl_shader_lava.ts
+++ b/examples-testing/examples/webgl_shader_lava.ts
@@ -5,14 +5,22 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -11988,7 +11988,7 @@ index 0c974f5b..14a618b4 100644
mesh = new THREE.Mesh(new THREE.TorusGeometry(size, 0.3, 30, 30), material);
diff --git a/examples-testing/examples/webgl_shaders_ocean.ts b/examples-testing/examples/webgl_shaders_ocean.ts
-index e0e26ed3..6832f4e6 100644
+index e0e26ed33..6832f4e68 100644
--- a/examples-testing/examples/webgl_shaders_ocean.ts
+++ b/examples-testing/examples/webgl_shaders_ocean.ts
@@ -8,14 +8,14 @@ import { Water } from 'three/addons/objects/Water.js';
@@ -12020,7 +12020,7 @@ index e0e26ed3..6832f4e6 100644
function updateSun() {
const phi = THREE.MathUtils.degToRad(90 - parameters.elevation);
diff --git a/examples-testing/examples/webgl_shaders_sky.ts b/examples-testing/examples/webgl_shaders_sky.ts
-index 01cdddec..0cd9aa7b 100644
+index 01cdddec4..0cd9aa7bb 100644
--- a/examples-testing/examples/webgl_shaders_sky.ts
+++ b/examples-testing/examples/webgl_shaders_sky.ts
@@ -4,9 +4,9 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -12036,7 +12036,7 @@ index 01cdddec..0cd9aa7b 100644
init();
diff --git a/examples-testing/examples/webgl_shadow_contact.ts b/examples-testing/examples/webgl_shadow_contact.ts
-index f402fa20..8e71282d 100644
+index f402fa20d..8e71282d7 100644
--- a/examples-testing/examples/webgl_shadow_contact.ts
+++ b/examples-testing/examples/webgl_shadow_contact.ts
@@ -5,9 +5,9 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -12089,7 +12089,7 @@ index f402fa20..8e71282d 100644
// blur horizontally and draw in the renderTargetBlur
diff --git a/examples-testing/examples/webgl_shadowmap.ts b/examples-testing/examples/webgl_shadowmap.ts
-index 9557bb05..61f97bae 100644
+index 9557bb051..61f97bae9 100644
--- a/examples-testing/examples/webgl_shadowmap.ts
+++ b/examples-testing/examples/webgl_shadowmap.ts
@@ -15,18 +15,18 @@ const SCREEN_WIDTH = window.innerWidth;
@@ -12197,7 +12197,7 @@ index 9557bb05..61f97bae 100644
if (morph.position.x > 2000) {
morph.position.x = -1000 - Math.random() * 500;
diff --git a/examples-testing/examples/webgl_shadowmap_csm.ts b/examples-testing/examples/webgl_shadowmap_csm.ts
-index c8e959a0..6eca1560 100644
+index c8e959a0b..6eca15605 100644
--- a/examples-testing/examples/webgl_shadowmap_csm.ts
+++ b/examples-testing/examples/webgl_shadowmap_csm.ts
@@ -2,12 +2,32 @@ import * as THREE from 'three';
@@ -12249,7 +12249,7 @@ index c8e959a0..6eca1560 100644
});
});
diff --git a/examples-testing/examples/webgl_shadowmap_pcss.ts b/examples-testing/examples/webgl_shadowmap_pcss.ts
-index de542688..6d750ce4 100644
+index de5426883..6d750ce4b 100644
--- a/examples-testing/examples/webgl_shadowmap_pcss.ts
+++ b/examples-testing/examples/webgl_shadowmap_pcss.ts
@@ -4,10 +4,10 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -12283,7 +12283,7 @@ index de542688..6d750ce4 100644
'\t\t\t\tfloat depth = texture2D( shadowMap, shadowCoord.xy ).r;',
);
diff --git a/examples-testing/examples/webgl_shadowmap_performance.ts b/examples-testing/examples/webgl_shadowmap_performance.ts
-index de54f335..279e7f9f 100644
+index de54f335f..279e7f9f1 100644
--- a/examples-testing/examples/webgl_shadowmap_performance.ts
+++ b/examples-testing/examples/webgl_shadowmap_performance.ts
@@ -16,16 +16,17 @@ const FLOOR = -250;
@@ -12356,7 +12356,7 @@ index de54f335..279e7f9f 100644
if (morph.position.x > 2000) {
morph.position.x = -1000 - Math.random() * 500;
diff --git a/examples-testing/examples/webgl_shadowmap_pointlight.ts b/examples-testing/examples/webgl_shadowmap_pointlight.ts
-index 4323655d..5db3f4dd 100644
+index 4323655dc..5db3f4dd8 100644
--- a/examples-testing/examples/webgl_shadowmap_pointlight.ts
+++ b/examples-testing/examples/webgl_shadowmap_pointlight.ts
@@ -4,8 +4,8 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -12401,7 +12401,7 @@ index 4323655d..5db3f4dd 100644
context.fillRect(0, 1, 2, 1);
diff --git a/examples-testing/examples/webgl_shadowmap_progressive.ts b/examples-testing/examples/webgl_shadowmap_progressive.ts
-index 29298630..9d04c42e 100644
+index 29298630f..9d04c42ee 100644
--- a/examples-testing/examples/webgl_shadowmap_progressive.ts
+++ b/examples-testing/examples/webgl_shadowmap_progressive.ts
@@ -9,17 +9,17 @@ import { ProgressiveLightMap } from 'three/addons/misc/ProgressiveLightMap.js';
@@ -12461,7 +12461,7 @@ index 29298630..9d04c42e 100644
} else {
// Uniform Hemispherical Surface Distribution for Ambient Occlusion
diff --git a/examples-testing/examples/webgl_shadowmap_viewer.ts b/examples-testing/examples/webgl_shadowmap_viewer.ts
-index 2ed16e99..b66a00d4 100644
+index 2ed16e992..b66a00d4e 100644
--- a/examples-testing/examples/webgl_shadowmap_viewer.ts
+++ b/examples-testing/examples/webgl_shadowmap_viewer.ts
@@ -5,10 +5,14 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -12493,7 +12493,7 @@ index 2ed16e99..b66a00d4 100644
color: 0xff0000,
shininess: 150,
diff --git a/examples-testing/examples/webgl_shadowmap_vsm.ts b/examples-testing/examples/webgl_shadowmap_vsm.ts
-index d5bf4f7b..6613aea1 100644
+index d5bf4f7bb..6613aea1c 100644
--- a/examples-testing/examples/webgl_shadowmap_vsm.ts
+++ b/examples-testing/examples/webgl_shadowmap_vsm.ts
@@ -5,9 +5,13 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -12532,7 +12532,7 @@ index d5bf4f7b..6613aea1 100644
renderer.render(scene, camera);
diff --git a/examples-testing/examples/webgl_shadowmesh.ts b/examples-testing/examples/webgl_shadowmesh.ts
-index e4f7ebb8..97eef890 100644
+index e4f7ebb8f..97eef8905 100644
--- a/examples-testing/examples/webgl_shadowmesh.ts
+++ b/examples-testing/examples/webgl_shadowmesh.ts
@@ -13,18 +13,18 @@ const renderer = new THREE.WebGLRenderer({ stencil: true });
@@ -12610,7 +12610,7 @@ index e4f7ebb8..97eef890 100644
}
}
diff --git a/examples-testing/examples/webgl_simple_gi.ts b/examples-testing/examples/webgl_simple_gi.ts
-index 4ab6dc89..adea084a 100644
+index 4ab6dc895..adea084a0 100644
--- a/examples-testing/examples/webgl_simple_gi.ts
+++ b/examples-testing/examples/webgl_simple_gi.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -12797,7 +12797,7 @@ index 4ab6dc89..adea084a 100644
init();
diff --git a/examples-testing/examples/webgl_sprites.ts b/examples-testing/examples/webgl_sprites.ts
-index 2e418934..3ff04b10 100644
+index 2e4189347..3ff04b108 100644
--- a/examples-testing/examples/webgl_sprites.ts
+++ b/examples-testing/examples/webgl_sprites.ts
@@ -1,13 +1,17 @@
@@ -12873,7 +12873,7 @@ index 2e418934..3ff04b10 100644
sprite.material.rotation += 0.1 * (i / l);
diff --git a/examples-testing/examples/webgl_test_memory.ts b/examples-testing/examples/webgl_test_memory.ts
-index f5d0e112..128862a2 100644
+index f5d0e112d..128862a27 100644
--- a/examples-testing/examples/webgl_test_memory.ts
+++ b/examples-testing/examples/webgl_test_memory.ts
@@ -1,6 +1,6 @@
@@ -12894,7 +12894,7 @@ index f5d0e112..128862a2 100644
'rgb(' +
Math.floor(Math.random() * 256) +
diff --git a/examples-testing/examples/webgl_test_memory2.ts b/examples-testing/examples/webgl_test_memory2.ts
-index 366a2791..74077e99 100644
+index 366a27914..74077e99b 100644
--- a/examples-testing/examples/webgl_test_memory2.ts
+++ b/examples-testing/examples/webgl_test_memory2.ts
@@ -2,15 +2,15 @@ import * as THREE from 'three';
@@ -12945,7 +12945,7 @@ index 366a2791..74077e99 100644
+ console.log('after', renderer.info.programs!.length);
}
diff --git a/examples-testing/examples/webgl_test_wide_gamut.ts b/examples-testing/examples/webgl_test_wide_gamut.ts
-index 5988299e..6da2af6c 100644
+index 5988299e1..6da2af6ca 100644
--- a/examples-testing/examples/webgl_test_wide_gamut.ts
+++ b/examples-testing/examples/webgl_test_wide_gamut.ts
@@ -9,12 +9,12 @@ import {
@@ -13022,7 +13022,7 @@ index 5988299e..6da2af6c 100644
textureL.needsUpdate = true;
diff --git a/examples-testing/examples/webgl_texture2darray_compressed.ts b/examples-testing/examples/webgl_texture2darray_compressed.ts
-index e074be57..6039c4df 100644
+index e074be576..6039c4df2 100644
--- a/examples-testing/examples/webgl_texture2darray_compressed.ts
+++ b/examples-testing/examples/webgl_texture2darray_compressed.ts
@@ -3,7 +3,12 @@ import * as THREE from 'three';
@@ -13051,7 +13051,7 @@ index e074be57..6039c4df 100644
});
diff --git a/examples-testing/examples/webgl_texture2darray_layerupdate.ts b/examples-testing/examples/webgl_texture2darray_layerupdate.ts
-index 0cc136cb..26237259 100644
+index 0cc136cb7..262372590 100644
--- a/examples-testing/examples/webgl_texture2darray_layerupdate.ts
+++ b/examples-testing/examples/webgl_texture2darray_layerupdate.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -13112,7 +13112,7 @@ index 0cc136cb..26237259 100644
renderer.render(scene, camera);
}
diff --git a/examples-testing/examples/webgl_texture3d.ts b/examples-testing/examples/webgl_texture3d.ts
-index 977dbadb..fb1460ca 100644
+index 977dbadb7..fb1460cae 100644
--- a/examples-testing/examples/webgl_texture3d.ts
+++ b/examples-testing/examples/webgl_texture3d.ts
@@ -5,7 +5,15 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -13142,7 +13142,7 @@ index 977dbadb..fb1460ca 100644
material.uniforms['u_renderthreshold'].value = volconfig.isothreshold; // For ISO renderstyle
material.uniforms['u_cmdata'].value = cmtextures[volconfig.colormap];
diff --git a/examples-testing/examples/webgl_texture3d_partialupdate.ts b/examples-testing/examples/webgl_texture3d_partialupdate.ts
-index 58615db8..1ae4e437 100644
+index 58615db84..1ae4e437f 100644
--- a/examples-testing/examples/webgl_texture3d_partialupdate.ts
+++ b/examples-testing/examples/webgl_texture3d_partialupdate.ts
@@ -6,14 +6,14 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -13195,7 +13195,7 @@ index 58615db8..1ae4e437 100644
renderer.render(scene, camera);
}
diff --git a/examples-testing/examples/webgl_tonemapping.ts b/examples-testing/examples/webgl_tonemapping.ts
-index 2163e1b0..a7cb196e 100644
+index 2163e1b06..a7cb196ef 100644
--- a/examples-testing/examples/webgl_tonemapping.ts
+++ b/examples-testing/examples/webgl_tonemapping.ts
@@ -1,23 +1,32 @@
@@ -13259,7 +13259,7 @@ index 2163e1b0..a7cb196e 100644
}
diff --git a/examples-testing/examples/webgl_tsl_clearcoat.ts b/examples-testing/examples/webgl_tsl_clearcoat.ts
-index 6a123032..99fab8d9 100644
+index 6a123032e..99fab8d99 100644
--- a/examples-testing/examples/webgl_tsl_clearcoat.ts
+++ b/examples-testing/examples/webgl_tsl_clearcoat.ts
@@ -7,10 +7,10 @@ import { HDRCubeTextureLoader } from 'three/addons/loaders/HDRCubeTextureLoader.
@@ -13277,7 +13277,7 @@ index 6a123032..99fab8d9 100644
init();
diff --git a/examples-testing/examples/webgl_tsl_instancing.ts b/examples-testing/examples/webgl_tsl_instancing.ts
-index c80bebf9..3bdc2e64 100644
+index c80bebf9b..3bdc2e645 100644
--- a/examples-testing/examples/webgl_tsl_instancing.ts
+++ b/examples-testing/examples/webgl_tsl_instancing.ts
@@ -9,8 +9,12 @@ import * as BufferGeometryUtils from 'three/addons/utils/BufferGeometryUtils.js'
@@ -13373,7 +13373,7 @@ index c80bebf9..3bdc2e64 100644
const k = 1024;
diff --git a/examples-testing/examples/webgl_tsl_shadowmap.ts b/examples-testing/examples/webgl_tsl_shadowmap.ts
-index f006d7c1..29913d9a 100644
+index f006d7c1a..29913d9a4 100644
--- a/examples-testing/examples/webgl_tsl_shadowmap.ts
+++ b/examples-testing/examples/webgl_tsl_shadowmap.ts
@@ -5,9 +5,9 @@ import { mx_fractal_noise_float, mx_fractal_noise_vec3, positionLocal, positionW
@@ -13399,7 +13399,7 @@ index f006d7c1..29913d9a 100644
const delta = timer.getDelta();
diff --git a/examples-testing/examples/webgl_tsl_skinning.ts b/examples-testing/examples/webgl_tsl_skinning.ts
-index 6164dbab..27b9b71b 100644
+index 6164dbab6..27b9b71b6 100644
--- a/examples-testing/examples/webgl_tsl_skinning.ts
+++ b/examples-testing/examples/webgl_tsl_skinning.ts
@@ -4,9 +4,9 @@ import { WebGLRenderer } from 'three';
@@ -13415,7 +13415,7 @@ index 6164dbab..27b9b71b 100644
init();
diff --git a/examples-testing/examples/webgl_ubo.ts b/examples-testing/examples/webgl_ubo.ts
-index a34a5b2f..75fc5e0d 100644
+index a34a5b2ff..75fc5e0d8 100644
--- a/examples-testing/examples/webgl_ubo.ts
+++ b/examples-testing/examples/webgl_ubo.ts
@@ -1,11 +1,11 @@
@@ -13464,7 +13464,7 @@ index a34a5b2f..75fc5e0d 100644
child.rotation.y += delta * 0.3;
}
diff --git a/examples-testing/examples/webgl_ubo_arrays.ts b/examples-testing/examples/webgl_ubo_arrays.ts
-index 1d8f5f76..214deef5 100644
+index 1d8f5f763..214deef55 100644
--- a/examples-testing/examples/webgl_ubo_arrays.ts
+++ b/examples-testing/examples/webgl_ubo_arrays.ts
@@ -4,11 +4,15 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -13516,7 +13516,7 @@ index 1d8f5f76..214deef5 100644
// Parameters for circular movement
const radius = 5; // Smaller radius for individual circular movements
diff --git a/examples-testing/examples/webgl_video_kinect.ts b/examples-testing/examples/webgl_video_kinect.ts
-index 8abc9391..dd637649 100644
+index 8abc93917..dd637649d 100644
--- a/examples-testing/examples/webgl_video_kinect.ts
+++ b/examples-testing/examples/webgl_video_kinect.ts
@@ -2,9 +2,9 @@ import * as THREE from 'three';
@@ -13562,7 +13562,7 @@ index 8abc9391..dd637649 100644
mouse.y = (event.clientY - window.innerHeight / 2) * 8;
}
diff --git a/examples-testing/examples/webgl_video_panorama_equirectangular.ts b/examples-testing/examples/webgl_video_panorama_equirectangular.ts
-index 866eca16..07301138 100644
+index 866eca16a..073011389 100644
--- a/examples-testing/examples/webgl_video_panorama_equirectangular.ts
+++ b/examples-testing/examples/webgl_video_panorama_equirectangular.ts
@@ -1,6 +1,6 @@
@@ -13610,7 +13610,7 @@ index 866eca16..07301138 100644
lon = (onPointerDownPointerX - event.clientX) * 0.1 + onPointerDownLon;
lat = (onPointerDownPointerY - event.clientY) * 0.1 + onPointerDownLat;
diff --git a/examples-testing/examples/webgl_volume_cloud.ts b/examples-testing/examples/webgl_volume_cloud.ts
-index 9aa07b98..dfe98826 100644
+index 9aa07b98f..dfe98826a 100644
--- a/examples-testing/examples/webgl_volume_cloud.ts
+++ b/examples-testing/examples/webgl_volume_cloud.ts
@@ -4,8 +4,8 @@ import { ImprovedNoise } from 'three/addons/math/ImprovedNoise.js';
@@ -13647,7 +13647,7 @@ index 9aa07b98..dfe98826 100644
renderer.render(scene, camera);
}
diff --git a/examples-testing/examples/webgl_volume_instancing.ts b/examples-testing/examples/webgl_volume_instancing.ts
-index 7045732d..3a614592 100644
+index 7045732d6..3a6145920 100644
--- a/examples-testing/examples/webgl_volume_instancing.ts
+++ b/examples-testing/examples/webgl_volume_instancing.ts
@@ -2,7 +2,11 @@ import * as THREE from 'three';
@@ -13686,7 +13686,7 @@ index 7045732d..3a614592 100644
const transform = new THREE.Object3D();
diff --git a/examples-testing/examples/webgl_volume_perlin.ts b/examples-testing/examples/webgl_volume_perlin.ts
-index 0f299f66..b02dd139 100644
+index 0f299f66f..b02dd139c 100644
--- a/examples-testing/examples/webgl_volume_perlin.ts
+++ b/examples-testing/examples/webgl_volume_perlin.ts
@@ -4,8 +4,8 @@ import { ImprovedNoise } from 'three/addons/math/ImprovedNoise.js';
@@ -13710,7 +13710,7 @@ index 0f299f66..b02dd139 100644
renderer.render(scene, camera);
}
diff --git a/examples-testing/examples/webgl_watch.ts b/examples-testing/examples/webgl_watch.ts
-index 8c7b7ecb..83a4fbb6 100644
+index 8c7b7ecb6..83a4fbb6f 100644
--- a/examples-testing/examples/webgl_watch.ts
+++ b/examples-testing/examples/webgl_watch.ts
@@ -1,5 +1,5 @@
@@ -13816,7 +13816,7 @@ index 8c7b7ecb..83a4fbb6 100644
function upBloom() {
diff --git a/examples-testing/examples/webgpu_animation_retargeting.ts b/examples-testing/examples/webgpu_animation_retargeting.ts
-index 23ebb2af..8f8292c9 100644
+index 23ebb2af4..8f8292c9f 100644
--- a/examples-testing/examples/webgpu_animation_retargeting.ts
+++ b/examples-testing/examples/webgpu_animation_retargeting.ts
@@ -21,17 +21,17 @@ import {
@@ -13889,7 +13889,7 @@ index 23ebb2af..8f8292c9 100644
const targetSkelHelper = new THREE.SkeletonHelper(targetModel.scene);
diff --git a/examples-testing/examples/webgpu_animation_retargeting_readyplayer.ts b/examples-testing/examples/webgpu_animation_retargeting_readyplayer.ts
-index de90d890..cd271c05 100644
+index de90d890f..cd271c05d 100644
--- a/examples-testing/examples/webgpu_animation_retargeting_readyplayer.ts
+++ b/examples-testing/examples/webgpu_animation_retargeting_readyplayer.ts
@@ -2,18 +2,18 @@ import * as THREE from 'three/webgpu';
@@ -13943,7 +13943,7 @@ index de90d890..cd271c05 100644
hip: 'mixamorigHips',
diff --git a/examples-testing/examples/webgpu_backdrop.ts b/examples-testing/examples/webgpu_backdrop.ts
-index af6dcc39..35eb38d4 100644
+index af6dcc399..35eb38d45 100644
--- a/examples-testing/examples/webgpu_backdrop.ts
+++ b/examples-testing/examples/webgpu_backdrop.ts
@@ -22,10 +22,10 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -13981,7 +13981,7 @@ index af6dcc39..35eb38d4 100644
const id = portals.children.length;
const rotation = THREE.MathUtils.degToRad(id * 45);
diff --git a/examples-testing/examples/webgpu_backdrop_area.ts b/examples-testing/examples/webgpu_backdrop_area.ts
-index 384311dd..8d39e8ac 100644
+index 384311dd4..8d39e8acc 100644
--- a/examples-testing/examples/webgpu_backdrop_area.ts
+++ b/examples-testing/examples/webgpu_backdrop_area.ts
@@ -20,8 +20,8 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -14013,7 +14013,7 @@ index 384311dd..8d39e8ac 100644
});
}
diff --git a/examples-testing/examples/webgpu_backdrop_water.ts b/examples-testing/examples/webgpu_backdrop_water.ts
-index a8538cf9..53b97519 100644
+index a8538cf94..53b975193 100644
--- a/examples-testing/examples/webgpu_backdrop_water.ts
+++ b/examples-testing/examples/webgpu_backdrop_water.ts
@@ -24,11 +24,13 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -14054,7 +14054,7 @@ index a8538cf9..53b97519 100644
floorPosition = new THREE.Vector3(0, 0.2, 0);
diff --git a/examples-testing/examples/webgpu_camera.ts b/examples-testing/examples/webgpu_camera.ts
-index bf4724ac..b964cc5f 100644
+index bf4724ac8..b964cc5fd 100644
--- a/examples-testing/examples/webgpu_camera.ts
+++ b/examples-testing/examples/webgpu_camera.ts
@@ -4,11 +4,11 @@ let SCREEN_WIDTH = window.innerWidth;
@@ -14084,7 +14084,7 @@ index bf4724ac..b964cc5f 100644
case 79 /*O*/:
activeCamera = cameraOrtho;
diff --git a/examples-testing/examples/webgpu_camera_array.ts b/examples-testing/examples/webgpu_camera_array.ts
-index a4d82a70..9511c886 100644
+index a4d82a709..9511c886a 100644
--- a/examples-testing/examples/webgpu_camera_array.ts
+++ b/examples-testing/examples/webgpu_camera_array.ts
@@ -1,7 +1,7 @@
@@ -14107,7 +14107,7 @@ index a4d82a70..9511c886 100644
subcamera.position.x = x / AMOUNT - 0.5;
diff --git a/examples-testing/examples/webgpu_camera_logarithmicdepthbuffer.ts b/examples-testing/examples/webgpu_camera_logarithmicdepthbuffer.ts
-index a0e748e1..81206987 100644
+index a0e748e1b..812069877 100644
--- a/examples-testing/examples/webgpu_camera_logarithmicdepthbuffer.ts
+++ b/examples-testing/examples/webgpu_camera_logarithmicdepthbuffer.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three/webgpu';
@@ -14276,7 +14276,7 @@ index a0e748e1..81206987 100644
if (amount === 0) return;
const dir = amount / Math.abs(amount);
diff --git a/examples-testing/examples/webgpu_caustics.ts b/examples-testing/examples/webgpu_caustics.ts
-index 0829fb55..b7692cbb 100644
+index 0829fb558..b7692cbbc 100644
--- a/examples-testing/examples/webgpu_caustics.ts
+++ b/examples-testing/examples/webgpu_caustics.ts
@@ -20,8 +20,8 @@ import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
@@ -14309,7 +14309,7 @@ index 0829fb55..b7692cbb 100644
gui.addColor(duck.material, 'color').name('material color');
gui.add({ model: 'duck' }, 'model', ['duck', 'glass']).onChange(model => {
diff --git a/examples-testing/examples/webgpu_centroid_sampling.ts b/examples-testing/examples/webgpu_centroid_sampling.ts
-index ca159d04..24b0ee88 100644
+index ca159d04c..24b0ee885 100644
--- a/examples-testing/examples/webgpu_centroid_sampling.ts
+++ b/examples-testing/examples/webgpu_centroid_sampling.ts
@@ -2,14 +2,22 @@ import * as THREE from 'three/webgpu';
@@ -14405,7 +14405,7 @@ index ca159d04..24b0ee88 100644
THREE.InterpolationSamplingMode.NORMAL,
THREE.InterpolationSamplingMode.CENTROID,
diff --git a/examples-testing/examples/webgpu_clearcoat.ts b/examples-testing/examples/webgpu_clearcoat.ts
-index 02fbacb9..d3ee1763 100644
+index 02fbacb9d..d3ee1763c 100644
--- a/examples-testing/examples/webgpu_clearcoat.ts
+++ b/examples-testing/examples/webgpu_clearcoat.ts
@@ -7,10 +7,10 @@ import { HDRCubeTextureLoader } from 'three/addons/loaders/HDRCubeTextureLoader.
@@ -14423,7 +14423,7 @@ index 02fbacb9..d3ee1763 100644
init();
diff --git a/examples-testing/examples/webgpu_clipping.ts b/examples-testing/examples/webgpu_clipping.ts
-index b7e94da9..b7c85c2e 100644
+index b7e94da98..b7c85c2ee 100644
--- a/examples-testing/examples/webgpu_clipping.ts
+++ b/examples-testing/examples/webgpu_clipping.ts
@@ -4,7 +4,11 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -14458,7 +14458,7 @@ index b7e94da9..b7c85c2e 100644
object.position.y = 0.8;
diff --git a/examples-testing/examples/webgpu_compile_async.ts b/examples-testing/examples/webgpu_compile_async.ts
-index fbcf0a7b..b80719c4 100644
+index fbcf0a7b0..b80719c41 100644
--- a/examples-testing/examples/webgpu_compile_async.ts
+++ b/examples-testing/examples/webgpu_compile_async.ts
@@ -16,9 +16,9 @@ let MESH_COUNT = 256;
@@ -14537,7 +14537,7 @@ index fbcf0a7b..b80719c4 100644
const startX = -(GRID_SIZE - 1) / 2;
const startY = -(GRID_SIZE - 1) / 2;
diff --git a/examples-testing/examples/webgpu_compute_audio.ts b/examples-testing/examples/webgpu_compute_audio.ts
-index 229033d7..da8f94d5 100644
+index 229033d79..da8f94d50 100644
--- a/examples-testing/examples/webgpu_compute_audio.ts
+++ b/examples-testing/examples/webgpu_compute_audio.ts
@@ -3,15 +3,15 @@ import { Fn, uniform, instanceIndex, instancedArray, float, texture, screenUV, c
@@ -14591,7 +14591,7 @@ index 229033d7..da8f94d5 100644
gui.add(pitch, 'value', 0.5, 2, 0.01).name('pitch');
gui.add(delayVolume, 'value', 0, 1, 0.01).name('delayVolume');
diff --git a/examples-testing/examples/webgpu_compute_birds.ts b/examples-testing/examples/webgpu_compute_birds.ts
-index 665a5452..9931b08b 100644
+index 665a54528..9931b08b2 100644
--- a/examples-testing/examples/webgpu_compute_birds.ts
+++ b/examples-testing/examples/webgpu_compute_birds.ts
@@ -35,13 +35,24 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -14651,10 +14651,10 @@ index 665a5452..9931b08b 100644
pointer.x = (event.clientX / window.innerWidth) * 2.0 - 1.0;
diff --git a/examples-testing/examples/webgpu_compute_cloth.ts b/examples-testing/examples/webgpu_compute_cloth.ts
-index f4dd0864..b5950ad0 100644
+index c18af53f2..7d92981fd 100644
--- a/examples-testing/examples/webgpu_compute_cloth.ts
+++ b/examples-testing/examples/webgpu_compute_cloth.ts
-@@ -24,7 +24,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+@@ -23,7 +23,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
import WebGPU from 'three/addons/capabilities/WebGPU.js';
@@ -14663,7 +14663,7 @@ index f4dd0864..b5950ad0 100644
const clothWidth = 1;
const clothHeight = 1;
-@@ -32,18 +32,41 @@ const clothNumSegmentsX = 30;
+@@ -31,18 +31,41 @@ const clothNumSegmentsX = 30;
const clothNumSegmentsY = 30;
const sphereRadius = 0.15;
@@ -14715,7 +14715,7 @@ index f4dd0864..b5950ad0 100644
const timer = new THREE.Timer();
timer.connect(document);
-@@ -99,7 +122,7 @@ async function init() {
+@@ -98,7 +121,7 @@ async function init() {
setupCloth();
@@ -14724,7 +14724,7 @@ index f4dd0864..b5950ad0 100644
gui.add(stiffnessUniform, 'value', 0.1, 0.5, 0.01).name('stiffness');
gui.add(params, 'wireframe');
gui.add(params, 'sphere');
-@@ -124,7 +147,7 @@ async function init() {
+@@ -123,7 +146,7 @@ async function init() {
function setupVerletGeometry() {
// this function sets up the geometry of the verlet system, a grid of vertices connected by springs
@@ -14733,7 +14733,7 @@ index f4dd0864..b5950ad0 100644
const id = verletVertices.length;
const vertex = {
id,
-@@ -136,7 +159,7 @@ function setupVerletGeometry() {
+@@ -135,7 +158,7 @@ function setupVerletGeometry() {
return vertex;
};
@@ -14742,7 +14742,7 @@ index f4dd0864..b5950ad0 100644
const id = verletSprings.length;
const spring = {
id,
-@@ -350,7 +373,7 @@ function setupWireframe() {
+@@ -337,7 +360,7 @@ function setupWireframe() {
const springWireframeMaterial = new THREE.LineBasicNodeMaterial();
springWireframeMaterial.positionNode = Fn(() => {
const vertexIds = springVertexIdBuffer.element(instanceIndex);
@@ -14751,7 +14751,7 @@ index f4dd0864..b5950ad0 100644
return vertexPositionBuffer.element(vertexId);
})();
-@@ -383,7 +406,7 @@ function setupClothMesh() {
+@@ -370,7 +393,7 @@ function setupClothMesh() {
const verletVertexIdArray = new Uint32Array(vertexCount * 4);
const indices = [];
@@ -14760,7 +14760,7 @@ index f4dd0864..b5950ad0 100644
return y * clothNumSegmentsX + x;
};
-@@ -420,7 +443,7 @@ function setupClothMesh() {
+@@ -407,7 +430,7 @@ function setupClothMesh() {
clothMaterial.positionNode = Fn(({ material }) => {
// gather the position of the 4 verlet vertices and calculate the center position and normal from that
@@ -14769,7 +14769,7 @@ index f4dd0864..b5950ad0 100644
const v0 = vertexPositionBuffer.element(vertexIds.x).toVar();
const v1 = vertexPositionBuffer.element(vertexIds.y).toVar();
const v2 = vertexPositionBuffer.element(vertexIds.z).toVar();
-@@ -437,7 +460,7 @@ function setupClothMesh() {
+@@ -424,7 +447,7 @@ function setupClothMesh() {
const normal = cross(tangent, bitangent);
// send the normalView from the vertex shader to the fragment shader
@@ -14779,7 +14779,7 @@ index f4dd0864..b5950ad0 100644
return v0.add(v1).add(v2).add(v3).mul(0.25);
})();
diff --git a/examples-testing/examples/webgpu_compute_geometry.ts b/examples-testing/examples/webgpu_compute_geometry.ts
-index 9299e215..509cf684 100644
+index 9299e215b..509cf6845 100644
--- a/examples-testing/examples/webgpu_compute_geometry.ts
+++ b/examples-testing/examples/webgpu_compute_geometry.ts
@@ -18,8 +18,8 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -14839,7 +14839,7 @@ index 9299e215..509cf684 100644
} else {
pointerPosition.value.w = 0; // disable
diff --git a/examples-testing/examples/webgpu_compute_particles.ts b/examples-testing/examples/webgpu_compute_particles.ts
-index 71fbd662..c2fc51fe 100644
+index 71fbd6622..c2fc51fe1 100644
--- a/examples-testing/examples/webgpu_compute_particles.ts
+++ b/examples-testing/examples/webgpu_compute_particles.ts
@@ -14,11 +14,11 @@ const size = uniform(0.12);
@@ -14877,7 +14877,7 @@ index 71fbd662..c2fc51fe 100644
gui.add(gravity, 'value', -0.0098, 0, 0.0001).name('gravity');
gui.add(bounce, 'value', 0.1, 1, 0.01).name('bounce');
diff --git a/examples-testing/examples/webgpu_compute_particles_rain.ts b/examples-testing/examples/webgpu_compute_particles_rain.ts
-index eaa4e957..43cca9dd 100644
+index eaa4e957e..43cca9ddd 100644
--- a/examples-testing/examples/webgpu_compute_particles_rain.ts
+++ b/examples-testing/examples/webgpu_compute_particles_rain.ts
@@ -25,14 +25,17 @@ import * as BufferGeometryUtils from 'three/addons/utils/BufferGeometryUtils.js'
@@ -14925,7 +14925,7 @@ index eaa4e957..43cca9dd 100644
// use lerp to smooth the movement
collisionBoxPosUI = new THREE.Vector3().copy(collisionBox.position);
diff --git a/examples-testing/examples/webgpu_compute_particles_snow.ts b/examples-testing/examples/webgpu_compute_particles_snow.ts
-index e00fe068..476468a0 100644
+index e00fe068f..476468a0a 100644
--- a/examples-testing/examples/webgpu_compute_particles_snow.ts
+++ b/examples-testing/examples/webgpu_compute_particles_snow.ts
@@ -26,12 +26,14 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -14976,7 +14976,7 @@ index e00fe068..476468a0 100644
totalPass = totalPass.mul(vignette);
totalPass = totalPass.add(teapotTreePass.mul(10).add(teapotTreePassBlurred).toInspector('Teapot Blur'));
diff --git a/examples-testing/examples/webgpu_compute_points.ts b/examples-testing/examples/webgpu_compute_points.ts
-index eab1d9f6..65a487a7 100644
+index eab1d9f61..65a487a75 100644
--- a/examples-testing/examples/webgpu_compute_points.ts
+++ b/examples-testing/examples/webgpu_compute_points.ts
@@ -4,8 +4,8 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -15009,7 +15009,7 @@ index eab1d9f6..65a487a7 100644
const y = event.clientY;
diff --git a/examples-testing/examples/webgpu_compute_sort_bitonic.ts b/examples-testing/examples/webgpu_compute_sort_bitonic.ts
-index 9a37a9ec..2726efaa 100644
+index 9a37a9ece..2726efaa7 100644
--- a/examples-testing/examples/webgpu_compute_sort_bitonic.ts
+++ b/examples-testing/examples/webgpu_compute_sort_bitonic.ts
@@ -18,8 +18,8 @@ const StepType = {
@@ -15116,7 +15116,7 @@ index 9a37a9ec..2726efaa 100644
If(currentElementsStorage.element(idxAfter).lessThan(currentElementsStorage.element(idxBefore)), () => {
// Apply the swapped values to temporary storage.
diff --git a/examples-testing/examples/webgpu_compute_texture.ts b/examples-testing/examples/webgpu_compute_texture.ts
-index 43d162ab..259faad4 100644
+index 43d162ab5..259faad4c 100644
--- a/examples-testing/examples/webgpu_compute_texture.ts
+++ b/examples-testing/examples/webgpu_compute_texture.ts
@@ -3,7 +3,7 @@ import { texture, textureStore, Fn, instanceIndex, float, uvec2, vec4 } from 'th
@@ -15138,7 +15138,7 @@ index 43d162ab..259faad4 100644
const posY = instanceIndex.div(width);
const indexUV = uvec2(posX, posY);
diff --git a/examples-testing/examples/webgpu_compute_texture_3d.ts b/examples-testing/examples/webgpu_compute_texture_3d.ts
-index ccdfba0b..4e0661c5 100644
+index ccdfba0be..4e0661c5d 100644
--- a/examples-testing/examples/webgpu_compute_texture_3d.ts
+++ b/examples-testing/examples/webgpu_compute_texture_3d.ts
@@ -23,9 +23,9 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -15203,7 +15203,7 @@ index ccdfba0b..4e0661c5 100644
gui.add(opacity, 'value', 0, 1, 0.01).name('opacity');
gui.add(range, 'value', 0, 1, 0.01).name('range');
diff --git a/examples-testing/examples/webgpu_compute_texture_pingpong.ts b/examples-testing/examples/webgpu_compute_texture_pingpong.ts
-index 5c411fa6..9bc80d89 100644
+index 5c411fa69..9bc80d895 100644
--- a/examples-testing/examples/webgpu_compute_texture_pingpong.ts
+++ b/examples-testing/examples/webgpu_compute_texture_pingpong.ts
@@ -16,10 +16,10 @@ import {
@@ -15249,7 +15249,7 @@ index 5c411fa6..9bc80d89 100644
const posY = instanceIndex.div(width);
const indexUV = ivec2(int(posX), int(posY));
diff --git a/examples-testing/examples/webgpu_cubemap_adjustments.ts b/examples-testing/examples/webgpu_cubemap_adjustments.ts
-index 2e886d82..1161f02f 100644
+index 2e886d824..1161f02f6 100644
--- a/examples-testing/examples/webgpu_cubemap_adjustments.ts
+++ b/examples-testing/examples/webgpu_cubemap_adjustments.ts
@@ -20,7 +20,7 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -15280,7 +15280,7 @@ index 2e886d82..1161f02f 100644
gui.add({ blurBackground: blurNode.value }, 'blurBackground', 0, 1, 0.01).onChange(value => {
blurNode.value = value;
diff --git a/examples-testing/examples/webgpu_cubemap_dynamic.ts b/examples-testing/examples/webgpu_cubemap_dynamic.ts
-index 244b8593..e66a01f9 100644
+index 244b85935..e66a01f9b 100644
--- a/examples-testing/examples/webgpu_cubemap_dynamic.ts
+++ b/examples-testing/examples/webgpu_cubemap_dynamic.ts
@@ -4,12 +4,12 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -15319,7 +15319,7 @@ index 244b8593..e66a01f9 100644
cube.position.x = Math.cos(time) * 30;
diff --git a/examples-testing/examples/webgpu_cubemap_mix.ts b/examples-testing/examples/webgpu_cubemap_mix.ts
-index 6fbdb55a..fd5ec570 100644
+index 6fbdb55ae..fd5ec5705 100644
--- a/examples-testing/examples/webgpu_cubemap_mix.ts
+++ b/examples-testing/examples/webgpu_cubemap_mix.ts
@@ -8,7 +8,7 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -15332,7 +15332,7 @@ index 6fbdb55a..fd5ec570 100644
init();
diff --git a/examples-testing/examples/webgpu_custom_fog.ts b/examples-testing/examples/webgpu_custom_fog.ts
-index bcfcb0fd..be07fc03 100644
+index bcfcb0fd3..be07fc038 100644
--- a/examples-testing/examples/webgpu_custom_fog.ts
+++ b/examples-testing/examples/webgpu_custom_fog.ts
@@ -4,8 +4,8 @@ import { color, fog, float, positionWorld, triNoise3D, positionView, normalWorld
@@ -15347,7 +15347,7 @@ index bcfcb0fd..be07fc03 100644
init();
diff --git a/examples-testing/examples/webgpu_custom_fog_background.ts b/examples-testing/examples/webgpu_custom_fog_background.ts
-index a9b61934..e482a1e2 100644
+index a9b619345..e482a1e2e 100644
--- a/examples-testing/examples/webgpu_custom_fog_background.ts
+++ b/examples-testing/examples/webgpu_custom_fog_background.ts
@@ -6,8 +6,8 @@ import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
@@ -15362,7 +15362,7 @@ index a9b61934..e482a1e2 100644
init();
diff --git a/examples-testing/examples/webgpu_custom_fog_scattering.ts b/examples-testing/examples/webgpu_custom_fog_scattering.ts
-index 7f14133f..7be64774 100644
+index 7f14133fd..7be64774d 100644
--- a/examples-testing/examples/webgpu_custom_fog_scattering.ts
+++ b/examples-testing/examples/webgpu_custom_fog_scattering.ts
@@ -5,7 +5,11 @@ import { gaussianBlur } from 'three/addons/tsl/display/GaussianBlurNode.js';
@@ -15394,7 +15394,7 @@ index 7f14133f..7be64774 100644
gui.add(scattering, 'value', 0, 5).name('scattering factor');
gui.add(params, 'scatteringEnabled')
diff --git a/examples-testing/examples/webgpu_display_stereo.ts b/examples-testing/examples/webgpu_display_stereo.ts
-index 7f1ade72..c948dd93 100644
+index 7f1ade726..c948dd939 100644
--- a/examples-testing/examples/webgpu_display_stereo.ts
+++ b/examples-testing/examples/webgpu_display_stereo.ts
@@ -1,22 +1,36 @@
@@ -15479,7 +15479,7 @@ index 7f1ade72..c948dd93 100644
position.y = matrix.elements[13];
position.z = matrix.elements[14];
diff --git a/examples-testing/examples/webgpu_equirectangular.ts b/examples-testing/examples/webgpu_equirectangular.ts
-index 9e159e46..128e18b7 100644
+index 9e159e465..128e18b7b 100644
--- a/examples-testing/examples/webgpu_equirectangular.ts
+++ b/examples-testing/examples/webgpu_equirectangular.ts
@@ -4,8 +4,8 @@ import { texture, equirectUV } from 'three/tsl';
@@ -15503,7 +15503,7 @@ index 9e159e46..128e18b7 100644
gui.add(scene, 'backgroundIntensity', 0, 1).name('background intensity');
diff --git a/examples-testing/examples/webgpu_fog_height.ts b/examples-testing/examples/webgpu_fog_height.ts
-index 65bda9cd..5d3957e5 100644
+index 65bda9cd8..5d3957e54 100644
--- a/examples-testing/examples/webgpu_fog_height.ts
+++ b/examples-testing/examples/webgpu_fog_height.ts
@@ -4,8 +4,8 @@ import { exponentialHeightFogFactor, uniform, fog, color } from 'three/tsl';
@@ -15527,7 +15527,7 @@ index 65bda9cd..5d3957e5 100644
gui.add(density, 'value', 0.001, 0.1).step(0.0001).name('Density');
gui.add(height, 'value', -5, 5).name('Height');
diff --git a/examples-testing/examples/webgpu_hdr.ts b/examples-testing/examples/webgpu_hdr.ts
-index b96ba5f4..676326fe 100644
+index b96ba5f42..676326fed 100644
--- a/examples-testing/examples/webgpu_hdr.ts
+++ b/examples-testing/examples/webgpu_hdr.ts
@@ -17,7 +17,7 @@ const hdrMediaQuery = window.matchMedia('(dynamic-range: high)');
@@ -15558,7 +15558,7 @@ index b96ba5f4..676326fe 100644
const colorFolder = gui.addFolder('HDR');
colorFolder.add(params.intensity, 'value', 0, 10, 0.1).name('Intensity');
diff --git a/examples-testing/examples/webgpu_instance_mesh.ts b/examples-testing/examples/webgpu_instance_mesh.ts
-index 0abd2f26..30705fb0 100644
+index 0abd2f26c..30705fb0c 100644
--- a/examples-testing/examples/webgpu_instance_mesh.ts
+++ b/examples-testing/examples/webgpu_instance_mesh.ts
@@ -3,9 +3,9 @@ import { mix, range, normalWorld, oscSine, time } from 'three/tsl';
@@ -15583,7 +15583,7 @@ index 0abd2f26..30705fb0 100644
});
diff --git a/examples-testing/examples/webgpu_instance_path.ts b/examples-testing/examples/webgpu_instance_path.ts
-index a5bce322..8b2fa4ad 100644
+index a5bce3225..8b2fa4ad7 100644
--- a/examples-testing/examples/webgpu_instance_path.ts
+++ b/examples-testing/examples/webgpu_instance_path.ts
@@ -19,7 +19,7 @@ import {
@@ -15631,7 +15631,7 @@ index a5bce322..8b2fa4ad 100644
const localTime = instanceTime.add(time);
const modTime = mod(time.mul(0.4), 1);
diff --git a/examples-testing/examples/webgpu_instance_points.ts b/examples-testing/examples/webgpu_instance_points.ts
-index 40912937..d2ce322f 100644
+index 409129373..d2ce322f4 100644
--- a/examples-testing/examples/webgpu_instance_points.ts
+++ b/examples-testing/examples/webgpu_instance_points.ts
@@ -19,16 +19,25 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -15689,7 +15689,7 @@ index 40912937..d2ce322f 100644
gui.add(material, 'alphaToCoverage');
diff --git a/examples-testing/examples/webgpu_instancing_morph.ts b/examples-testing/examples/webgpu_instancing_morph.ts
-index f8f5c5fe..4da82327 100644
+index f8f5c5fe5..4da82327d 100644
--- a/examples-testing/examples/webgpu_instancing_morph.ts
+++ b/examples-testing/examples/webgpu_instancing_morph.ts
@@ -3,7 +3,12 @@ import * as THREE from 'three/webgpu';
@@ -15725,7 +15725,7 @@ index f8f5c5fe..4da82327 100644
renderer.render(scene, camera);
diff --git a/examples-testing/examples/webgpu_layers.ts b/examples-testing/examples/webgpu_layers.ts
-index c1db7d60..319d54e8 100644
+index c1db7d60c..319d54e83 100644
--- a/examples-testing/examples/webgpu_layers.ts
+++ b/examples-testing/examples/webgpu_layers.ts
@@ -4,7 +4,7 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -15772,7 +15772,7 @@ index c1db7d60..319d54e8 100644
const rotatedPosition = rotate(positionLocal, instanceRotation.mul(modTime.mul(20)));
diff --git a/examples-testing/examples/webgpu_lensflares.ts b/examples-testing/examples/webgpu_lensflares.ts
-index ab4e4967..d5662716 100644
+index ab4e49677..d5662716d 100644
--- a/examples-testing/examples/webgpu_lensflares.ts
+++ b/examples-testing/examples/webgpu_lensflares.ts
@@ -4,10 +4,10 @@ import { FlyControls } from 'three/addons/controls/FlyControls.js';
@@ -15799,7 +15799,7 @@ index ab4e4967..d5662716 100644
light.color.setHSL(h, s, l);
light.position.set(x, y, z);
diff --git a/examples-testing/examples/webgpu_lightprobe.ts b/examples-testing/examples/webgpu_lightprobe.ts
-index 3e90b6f6..34208354 100644
+index 3e90b6f66..342083547 100644
--- a/examples-testing/examples/webgpu_lightprobe.ts
+++ b/examples-testing/examples/webgpu_lightprobe.ts
@@ -1,6 +1,7 @@
@@ -15849,7 +15849,7 @@ index 3e90b6f6..34208354 100644
gui.add(API, 'lightProbeIntensity', 0, 1, 0.02)
.name('light probe')
diff --git a/examples-testing/examples/webgpu_lightprobe_cubecamera.ts b/examples-testing/examples/webgpu_lightprobe_cubecamera.ts
-index 60fe6ccc..c29cde36 100644
+index 60fe6ccc9..c29cde36b 100644
--- a/examples-testing/examples/webgpu_lightprobe_cubecamera.ts
+++ b/examples-testing/examples/webgpu_lightprobe_cubecamera.ts
@@ -6,9 +6,9 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -15874,7 +15874,7 @@ index 60fe6ccc..c29cde36 100644
prefix + 'px' + postfix,
prefix + 'nx' + postfix,
diff --git a/examples-testing/examples/webgpu_lights_dynamic.ts b/examples-testing/examples/webgpu_lights_dynamic.ts
-index b08c5902..123a9c1a 100644
+index b08c5902f..123a9c1a9 100644
--- a/examples-testing/examples/webgpu_lights_dynamic.ts
+++ b/examples-testing/examples/webgpu_lights_dynamic.ts
@@ -5,10 +5,15 @@ import { DynamicLighting } from 'three/addons/lighting/DynamicLighting.js';
@@ -15941,7 +15941,7 @@ index b08c5902..123a9c1a 100644
light.dispose();
}
diff --git a/examples-testing/examples/webgpu_lights_ies_spotlight.ts b/examples-testing/examples/webgpu_lights_ies_spotlight.ts
-index edfc51ef..d3f6e377 100644
+index edfc51efa..d3f6e3779 100644
--- a/examples-testing/examples/webgpu_lights_ies_spotlight.ts
+++ b/examples-testing/examples/webgpu_lights_ies_spotlight.ts
@@ -1,13 +1,13 @@
@@ -15989,7 +15989,7 @@ index edfc51ef..d3f6e377 100644
for (let i = 0; i < lights.length; i++) {
diff --git a/examples-testing/examples/webgpu_lights_phong.ts b/examples-testing/examples/webgpu_lights_phong.ts
-index c2cdf439..64116a21 100644
+index c2cdf4393..64116a21b 100644
--- a/examples-testing/examples/webgpu_lights_phong.ts
+++ b/examples-testing/examples/webgpu_lights_phong.ts
@@ -6,7 +6,14 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -16018,7 +16018,7 @@ index c2cdf439..64116a21 100644
material.colorNode = color(hexColor);
material.lights = false;
diff --git a/examples-testing/examples/webgpu_lights_physical.ts b/examples-testing/examples/webgpu_lights_physical.ts
-index 43d7ce72..616ed8e6 100644
+index 43d7ce723..616ed8e6b 100644
--- a/examples-testing/examples/webgpu_lights_physical.ts
+++ b/examples-testing/examples/webgpu_lights_physical.ts
@@ -4,8 +4,13 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -16078,7 +16078,7 @@ index 43d7ce72..616ed8e6 100644
gui.add(params, 'shadows');
}
diff --git a/examples-testing/examples/webgpu_lights_pointlights.ts b/examples-testing/examples/webgpu_lights_pointlights.ts
-index e00d75b2..c0d16ef1 100644
+index e00d75b21..c0d16ef13 100644
--- a/examples-testing/examples/webgpu_lights_pointlights.ts
+++ b/examples-testing/examples/webgpu_lights_pointlights.ts
@@ -16,9 +16,13 @@ import {
@@ -16130,7 +16130,7 @@ index e00d75b2..c0d16ef1 100644
const v0 = new THREE.Vector3();
diff --git a/examples-testing/examples/webgpu_lights_rectarealight.ts b/examples-testing/examples/webgpu_lights_rectarealight.ts
-index 75e2cc44..66cbd8c5 100644
+index 75e2cc442..66cbd8c58 100644
--- a/examples-testing/examples/webgpu_lights_rectarealight.ts
+++ b/examples-testing/examples/webgpu_lights_rectarealight.ts
@@ -8,9 +8,9 @@ import { RectAreaLightTexturesLib } from 'three/addons/lights/RectAreaLightTextu
@@ -16147,7 +16147,7 @@ index 75e2cc44..66cbd8c5 100644
init();
diff --git a/examples-testing/examples/webgpu_lights_selective.ts b/examples-testing/examples/webgpu_lights_selective.ts
-index d0004834..54f94948 100644
+index d00048347..54f94948b 100644
--- a/examples-testing/examples/webgpu_lights_selective.ts
+++ b/examples-testing/examples/webgpu_lights_selective.ts
@@ -6,7 +6,14 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -16185,7 +16185,7 @@ index d0004834..54f94948 100644
gui.add(centerObject.material, 'roughness', 0, 1, 0.01);
gui.add(centerObject.material, 'metalness', 0, 1, 0.01);
diff --git a/examples-testing/examples/webgpu_lights_spotlight.ts b/examples-testing/examples/webgpu_lights_spotlight.ts
-index 85e32080..4b07c276 100644
+index 85e320800..4b07c276f 100644
--- a/examples-testing/examples/webgpu_lights_spotlight.ts
+++ b/examples-testing/examples/webgpu_lights_spotlight.ts
@@ -5,9 +5,9 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -16239,7 +16239,7 @@ index 85e32080..4b07c276 100644
renderer.render(scene, camera);
}
diff --git a/examples-testing/examples/webgpu_lights_tiled.ts b/examples-testing/examples/webgpu_lights_tiled.ts
-index e575ee34..d9cc9fb5 100644
+index e575ee344..d9cc9fb54 100644
--- a/examples-testing/examples/webgpu_lights_tiled.ts
+++ b/examples-testing/examples/webgpu_lights_tiled.ts
@@ -3,6 +3,7 @@ import { texture, uv, pass, normalMap, uniform } from 'three/tsl';
@@ -16301,7 +16301,7 @@ index e575ee34..d9cc9fb5 100644
renderPipeline.outputNode = compose.add(debugBlockIndexes.mul(tileInfluence));
diff --git a/examples-testing/examples/webgpu_lines_fat.ts b/examples-testing/examples/webgpu_lines_fat.ts
-index 96417888..2ec8e8b1 100644
+index 96417888c..2ec8e8b1f 100644
--- a/examples-testing/examples/webgpu_lines_fat.ts
+++ b/examples-testing/examples/webgpu_lines_fat.ts
@@ -9,15 +9,23 @@ import { Line2 } from 'three/addons/lines/webgpu/Line2.js';
@@ -16336,7 +16336,7 @@ index 96417888..2ec8e8b1 100644
init();
diff --git a/examples-testing/examples/webgpu_lines_fat_raycasting.ts b/examples-testing/examples/webgpu_lines_fat_raycasting.ts
-index 4280b580..2b1b6daa 100644
+index 4280b580c..2b1b6daaa 100644
--- a/examples-testing/examples/webgpu_lines_fat_raycasting.ts
+++ b/examples-testing/examples/webgpu_lines_fat_raycasting.ts
@@ -1,6 +1,7 @@
@@ -16445,7 +16445,7 @@ index 4280b580..2b1b6daa 100644
gui.add(params, 'translation', 0, 10).onChange(function (val) {
diff --git a/examples-testing/examples/webgpu_lines_fat_wireframe.ts b/examples-testing/examples/webgpu_lines_fat_wireframe.ts
-index 9ab5c44c..dee04a5a 100644
+index 9ab5c44c0..dee04a5ae 100644
--- a/examples-testing/examples/webgpu_lines_fat_wireframe.ts
+++ b/examples-testing/examples/webgpu_lines_fat_wireframe.ts
@@ -2,19 +2,26 @@ import * as THREE from 'three/webgpu';
@@ -16500,7 +16500,7 @@ index 9ab5c44c..dee04a5a 100644
const param = {
'line type': 0,
diff --git a/examples-testing/examples/webgpu_loader_gltf.ts b/examples-testing/examples/webgpu_loader_gltf.ts
-index 6380bd90..355b0534 100644
+index 6380bd903..355b05345 100644
--- a/examples-testing/examples/webgpu_loader_gltf.ts
+++ b/examples-testing/examples/webgpu_loader_gltf.ts
@@ -7,8 +7,16 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -16588,7 +16588,7 @@ index 6380bd90..355b0534 100644
box.setFromObject(selection);
diff --git a/examples-testing/examples/webgpu_loader_gltf_anisotropy.ts b/examples-testing/examples/webgpu_loader_gltf_anisotropy.ts
-index a3aa95e1..144199f2 100644
+index a3aa95e15..144199f29 100644
--- a/examples-testing/examples/webgpu_loader_gltf_anisotropy.ts
+++ b/examples-testing/examples/webgpu_loader_gltf_anisotropy.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -16601,7 +16601,7 @@ index a3aa95e1..144199f2 100644
init();
diff --git a/examples-testing/examples/webgpu_loader_gltf_compressed.ts b/examples-testing/examples/webgpu_loader_gltf_compressed.ts
-index 31d5d0d1..8a2e68da 100644
+index 31d5d0d1a..8a2e68da5 100644
--- a/examples-testing/examples/webgpu_loader_gltf_compressed.ts
+++ b/examples-testing/examples/webgpu_loader_gltf_compressed.ts
@@ -6,7 +6,7 @@ import { MeshoptDecoder } from 'three/addons/libs/meshopt_decoder.module.js';
@@ -16614,7 +16614,7 @@ index 31d5d0d1..8a2e68da 100644
init();
diff --git a/examples-testing/examples/webgpu_loader_gltf_dispersion.ts b/examples-testing/examples/webgpu_loader_gltf_dispersion.ts
-index a2e815dd..25b08c75 100644
+index a2e815ddb..25b08c750 100644
--- a/examples-testing/examples/webgpu_loader_gltf_dispersion.ts
+++ b/examples-testing/examples/webgpu_loader_gltf_dispersion.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -16627,7 +16627,7 @@ index a2e815dd..25b08c75 100644
init();
diff --git a/examples-testing/examples/webgpu_loader_gltf_iridescence.ts b/examples-testing/examples/webgpu_loader_gltf_iridescence.ts
-index 8007d5e6..dc83ae61 100644
+index 8007d5e65..dc83ae61c 100644
--- a/examples-testing/examples/webgpu_loader_gltf_iridescence.ts
+++ b/examples-testing/examples/webgpu_loader_gltf_iridescence.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -16640,7 +16640,7 @@ index 8007d5e6..dc83ae61 100644
init().catch(function (err) {
console.error(err);
diff --git a/examples-testing/examples/webgpu_loader_gltf_sheen.ts b/examples-testing/examples/webgpu_loader_gltf_sheen.ts
-index 442edc7f..46d19c02 100644
+index 442edc7fb..46d19c02b 100644
--- a/examples-testing/examples/webgpu_loader_gltf_sheen.ts
+++ b/examples-testing/examples/webgpu_loader_gltf_sheen.ts
@@ -6,7 +6,7 @@ import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
@@ -16668,7 +16668,7 @@ index 442edc7f..46d19c02 100644
gui.add(object.material, 'sheen', 0, 1);
});
diff --git a/examples-testing/examples/webgpu_loader_gltf_transmission.ts b/examples-testing/examples/webgpu_loader_gltf_transmission.ts
-index 45b86e77..2f70dde2 100644
+index 45b86e772..2f70dde29 100644
--- a/examples-testing/examples/webgpu_loader_gltf_transmission.ts
+++ b/examples-testing/examples/webgpu_loader_gltf_transmission.ts
@@ -6,7 +6,12 @@ import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
@@ -16686,7 +16686,7 @@ index 45b86e77..2f70dde2 100644
init();
diff --git a/examples-testing/examples/webgpu_loader_materialx.ts b/examples-testing/examples/webgpu_loader_materialx.ts
-index bb84eb69..55416bc9 100644
+index bb84eb693..55416bc98 100644
--- a/examples-testing/examples/webgpu_loader_materialx.ts
+++ b/examples-testing/examples/webgpu_loader_materialx.ts
@@ -61,9 +61,9 @@ const localSamples = [
@@ -16797,7 +16797,7 @@ index bb84eb69..55416bc9 100644
}
});
diff --git a/examples-testing/examples/webgpu_loader_texture_ktx2.ts b/examples-testing/examples/webgpu_loader_texture_ktx2.ts
-index 1daf0f03..ee2cb370 100644
+index 1daf0f032..ee2cb370b 100644
--- a/examples-testing/examples/webgpu_loader_texture_ktx2.ts
+++ b/examples-testing/examples/webgpu_loader_texture_ktx2.ts
@@ -1,12 +1,18 @@
@@ -16851,7 +16851,7 @@ index 1daf0f03..ee2cb370 100644
for (let i = 0; i < uv.count; i++) {
diff --git a/examples-testing/examples/webgpu_materials_alphahash.ts b/examples-testing/examples/webgpu_materials_alphahash.ts
-index 047bbe58..5a01713a 100644
+index 047bbe582..5a01713a4 100644
--- a/examples-testing/examples/webgpu_materials_alphahash.ts
+++ b/examples-testing/examples/webgpu_materials_alphahash.ts
@@ -7,7 +7,13 @@ import { RoomEnvironment } from 'three/addons/environments/RoomEnvironment.js';
@@ -16879,7 +16879,7 @@ index 047bbe58..5a01713a 100644
gui.add(params, 'alpha', 0, 1).onChange(onMaterialUpdate);
gui.add(params, 'alphaHash').onChange(onMaterialUpdate);
diff --git a/examples-testing/examples/webgpu_materials_arrays.ts b/examples-testing/examples/webgpu_materials_arrays.ts
-index e6d15853..154e3803 100644
+index e6d15853e..154e3803c 100644
--- a/examples-testing/examples/webgpu_materials_arrays.ts
+++ b/examples-testing/examples/webgpu_materials_arrays.ts
@@ -4,9 +4,9 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -16905,7 +16905,7 @@ index e6d15853..154e3803 100644
gui.add(api, 'webgpu').onChange(() => {
init(!api.webgpu);
diff --git a/examples-testing/examples/webgpu_materials_basic.ts b/examples-testing/examples/webgpu_materials_basic.ts
-index 6aca76c9..fe08f13b 100644
+index 6aca76c97..fe08f13b4 100644
--- a/examples-testing/examples/webgpu_materials_basic.ts
+++ b/examples-testing/examples/webgpu_materials_basic.ts
@@ -2,9 +2,9 @@ import * as THREE from 'three/webgpu';
@@ -16954,7 +16954,7 @@ index 6aca76c9..fe08f13b 100644
mouseY = (event.clientY - windowHalfY) / 100;
}
diff --git a/examples-testing/examples/webgpu_materials_cubemap_mipmaps.ts b/examples-testing/examples/webgpu_materials_cubemap_mipmaps.ts
-index 6c66f9d3..ccc9cd5e 100644
+index 6c66f9d35..ccc9cd5ec 100644
--- a/examples-testing/examples/webgpu_materials_cubemap_mipmaps.ts
+++ b/examples-testing/examples/webgpu_materials_cubemap_mipmaps.ts
@@ -2,9 +2,9 @@ import * as THREE from 'three/webgpu';
@@ -17005,7 +17005,7 @@ index 6c66f9d3..ccc9cd5e 100644
customizedCubeTexture.colorSpace = THREE.SRGBColorSpace;
customizedCubeTexture.minFilter = THREE.LinearMipMapLinearFilter;
diff --git a/examples-testing/examples/webgpu_materials_displacementmap.ts b/examples-testing/examples/webgpu_materials_displacementmap.ts
-index 17a01f32..1ecf1a86 100644
+index 17a01f324..1ecf1a86f 100644
--- a/examples-testing/examples/webgpu_materials_displacementmap.ts
+++ b/examples-testing/examples/webgpu_materials_displacementmap.ts
@@ -5,7 +5,7 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -17048,7 +17048,7 @@ index 17a01f32..1ecf1a86 100644
mesh = new THREE.Mesh(geometry, material);
diff --git a/examples-testing/examples/webgpu_materials_envmaps.ts b/examples-testing/examples/webgpu_materials_envmaps.ts
-index 6862caee..97cae265 100644
+index 6862caeed..97cae265b 100644
--- a/examples-testing/examples/webgpu_materials_envmaps.ts
+++ b/examples-testing/examples/webgpu_materials_envmaps.ts
@@ -4,9 +4,18 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -17083,7 +17083,7 @@ index 6862caee..97cae265 100644
if (value === 'Cube') {
scene.background = textureCube;
diff --git a/examples-testing/examples/webgpu_materials_envmaps_bpcem.ts b/examples-testing/examples/webgpu_materials_envmaps_bpcem.ts
-index adc28c98..8a0c918d 100644
+index adc28c989..8a0c918d7 100644
--- a/examples-testing/examples/webgpu_materials_envmaps_bpcem.ts
+++ b/examples-testing/examples/webgpu_materials_envmaps_bpcem.ts
@@ -16,11 +16,11 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -17111,7 +17111,7 @@ index adc28c98..8a0c918d 100644
'box projected': true,
};
diff --git a/examples-testing/examples/webgpu_materials_lightmap.ts b/examples-testing/examples/webgpu_materials_lightmap.ts
-index 081de95a..78b575f1 100644
+index 081de95ac..78b575f13 100644
--- a/examples-testing/examples/webgpu_materials_lightmap.ts
+++ b/examples-testing/examples/webgpu_materials_lightmap.ts
@@ -5,8 +5,8 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -17141,7 +17141,7 @@ index 081de95a..78b575f1 100644
}
});
diff --git a/examples-testing/examples/webgpu_materials_matcap.ts b/examples-testing/examples/webgpu_materials_matcap.ts
-index 0a841ae2..847b3df3 100644
+index 0a841ae27..847b3df3e 100644
--- a/examples-testing/examples/webgpu_materials_matcap.ts
+++ b/examples-testing/examples/webgpu_materials_matcap.ts
@@ -6,7 +6,10 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -17241,7 +17241,7 @@ index 0a841ae2..847b3df3 100644
});
}
diff --git a/examples-testing/examples/webgpu_materials_sss.ts b/examples-testing/examples/webgpu_materials_sss.ts
-index c76df99d..b94767b7 100644
+index c76df99dc..b94767b77 100644
--- a/examples-testing/examples/webgpu_materials_sss.ts
+++ b/examples-testing/examples/webgpu_materials_sss.ts
@@ -6,9 +6,9 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -17337,7 +17337,7 @@ index c76df99d..b94767b7 100644
}
diff --git a/examples-testing/examples/webgpu_materials_texture_manualmipmap.ts b/examples-testing/examples/webgpu_materials_texture_manualmipmap.ts
-index 09037272..2456b295 100644
+index 090372729..2456b2959 100644
--- a/examples-testing/examples/webgpu_materials_texture_manualmipmap.ts
+++ b/examples-testing/examples/webgpu_materials_texture_manualmipmap.ts
@@ -3,9 +3,9 @@ import * as THREE from 'three/webgpu';
@@ -17383,7 +17383,7 @@ index 09037272..2456b295 100644
mouseY = event.clientY - windowHalfY;
}
diff --git a/examples-testing/examples/webgpu_materials_toon.ts b/examples-testing/examples/webgpu_materials_toon.ts
-index 78cb62ed..210b1d6e 100644
+index 78cb62ed6..210b1d6e9 100644
--- a/examples-testing/examples/webgpu_materials_toon.ts
+++ b/examples-testing/examples/webgpu_materials_toon.ts
@@ -6,18 +6,22 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -17423,7 +17423,7 @@ index 78cb62ed..210b1d6e 100644
font: font,
diff --git a/examples-testing/examples/webgpu_materials_transmission.ts b/examples-testing/examples/webgpu_materials_transmission.ts
-index 310d979d..eeb24a3e 100644
+index 310d979d5..eeb24a3eb 100644
--- a/examples-testing/examples/webgpu_materials_transmission.ts
+++ b/examples-testing/examples/webgpu_materials_transmission.ts
@@ -20,7 +20,7 @@ const params = {
@@ -17454,7 +17454,7 @@ index 310d979d..eeb24a3e 100644
context.fillRect(0, 1, 2, 1);
diff --git a/examples-testing/examples/webgpu_materials_video.ts b/examples-testing/examples/webgpu_materials_video.ts
-index bc837653..3148b5e1 100644
+index bc837653f..3148b5e16 100644
--- a/examples-testing/examples/webgpu_materials_video.ts
+++ b/examples-testing/examples/webgpu_materials_video.ts
@@ -1,10 +1,13 @@
@@ -17567,7 +17567,7 @@ index bc837653..3148b5e1 100644
}
diff --git a/examples-testing/examples/webgpu_materialx_noise.ts b/examples-testing/examples/webgpu_materialx_noise.ts
-index 229c26a8..46060513 100644
+index 229c26a8e..460605135 100644
--- a/examples-testing/examples/webgpu_materialx_noise.ts
+++ b/examples-testing/examples/webgpu_materialx_noise.ts
@@ -13,12 +13,12 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -17588,7 +17588,7 @@ index 229c26a8..46060513 100644
init();
diff --git a/examples-testing/examples/webgpu_mesh_batch.ts b/examples-testing/examples/webgpu_mesh_batch.ts
-index c20dc4b5..3c821864 100644
+index c20dc4b57..3c8218646 100644
--- a/examples-testing/examples/webgpu_mesh_batch.ts
+++ b/examples-testing/examples/webgpu_mesh_batch.ts
@@ -1,17 +1,18 @@
@@ -17684,7 +17684,7 @@ index c20dc4b5..3c821864 100644
list[i].z *= factor;
}
diff --git a/examples-testing/examples/webgpu_mirror.ts b/examples-testing/examples/webgpu_mirror.ts
-index 56b22619..d0a270bf 100644
+index 56b226193..d0a270bfb 100644
--- a/examples-testing/examples/webgpu_mirror.ts
+++ b/examples-testing/examples/webgpu_mirror.ts
@@ -5,11 +5,11 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -17714,7 +17714,7 @@ index 56b22619..d0a270bf 100644
const groundNode = texture(decalDiffuse).a.mix(color(0xffffff), groundReflector);
const verticalNode = color(0x0000ff).mul(0.1).add(verticalReflector);
diff --git a/examples-testing/examples/webgpu_modifier_curve.ts b/examples-testing/examples/webgpu_modifier_curve.ts
-index c465ddc5..9fa79745 100644
+index c465ddc57..9fa79745b 100644
--- a/examples-testing/examples/webgpu_modifier_curve.ts
+++ b/examples-testing/examples/webgpu_modifier_curve.ts
@@ -7,16 +7,16 @@ import { TextGeometry } from 'three/addons/geometries/TextGeometry.js';
@@ -17752,7 +17752,7 @@ index c465ddc5..9fa79745 100644
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
diff --git a/examples-testing/examples/webgpu_morphtargets.ts b/examples-testing/examples/webgpu_morphtargets.ts
-index cde3ae83..c6e68d05 100644
+index cde3ae83b..c6e68d052 100644
--- a/examples-testing/examples/webgpu_morphtargets.ts
+++ b/examples-testing/examples/webgpu_morphtargets.ts
@@ -4,12 +4,16 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -17801,7 +17801,7 @@ index cde3ae83..c6e68d05 100644
}
diff --git a/examples-testing/examples/webgpu_morphtargets_face.ts b/examples-testing/examples/webgpu_morphtargets_face.ts
-index 91120dfb..53282897 100644
+index 91120dfb5..53282897e 100644
--- a/examples-testing/examples/webgpu_morphtargets_face.ts
+++ b/examples-testing/examples/webgpu_morphtargets_face.ts
@@ -12,7 +12,7 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -17831,7 +17831,7 @@ index 91120dfb..53282897 100644
}
});
diff --git a/examples-testing/examples/webgpu_mrt.ts b/examples-testing/examples/webgpu_mrt.ts
-index 2b41adc9..78ef5384 100644
+index 2b41adc9c..78ef5384d 100644
--- a/examples-testing/examples/webgpu_mrt.ts
+++ b/examples-testing/examples/webgpu_mrt.ts
@@ -20,8 +20,8 @@ import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
@@ -17846,7 +17846,7 @@ index 2b41adc9..78ef5384 100644
init();
diff --git a/examples-testing/examples/webgpu_mrt_mask.ts b/examples-testing/examples/webgpu_mrt_mask.ts
-index 2bb80b84..a7f4b833 100644
+index 2bb80b84e..a7f4b8335 100644
--- a/examples-testing/examples/webgpu_mrt_mask.ts
+++ b/examples-testing/examples/webgpu_mrt_mask.ts
@@ -6,11 +6,11 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -17886,7 +17886,7 @@ index 2bb80b84..a7f4b833 100644
const id = spheres.children.length;
const rotation = THREE.MathUtils.degToRad(id * 90);
diff --git a/examples-testing/examples/webgpu_multiple_canvas.ts b/examples-testing/examples/webgpu_multiple_canvas.ts
-index db55fe16..caeb5d84 100644
+index db55fe165..caeb5d841 100644
--- a/examples-testing/examples/webgpu_multiple_canvas.ts
+++ b/examples-testing/examples/webgpu_multiple_canvas.ts
@@ -1,4 +1,4 @@
@@ -17917,7 +17917,7 @@ index db55fe16..caeb5d84 100644
for (let i = 0; i < 40; i++) {
const scene = new THREE.Scene();
diff --git a/examples-testing/examples/webgpu_multiple_elements.ts b/examples-testing/examples/webgpu_multiple_elements.ts
-index 65bd3e75..3d3f2fd9 100644
+index 65bd3e75d..3d3f2fd92 100644
--- a/examples-testing/examples/webgpu_multiple_elements.ts
+++ b/examples-testing/examples/webgpu_multiple_elements.ts
@@ -1,16 +1,16 @@
@@ -17951,7 +17951,7 @@ index 65bd3e75..3d3f2fd9 100644
for (let i = 0; i < 40; i++) {
const scene = new THREE.Scene();
diff --git a/examples-testing/examples/webgpu_multiple_rendertargets.ts b/examples-testing/examples/webgpu_multiple_rendertargets.ts
-index 2085d3c6..f4bc1ae6 100644
+index 2085d3c63..f4bc1ae6e 100644
--- a/examples-testing/examples/webgpu_multiple_rendertargets.ts
+++ b/examples-testing/examples/webgpu_multiple_rendertargets.ts
@@ -3,8 +3,8 @@ import { mix, vec2, step, texture, uv, screenUV, normalWorld, output, mrt } from
@@ -17975,7 +17975,7 @@ index 2085d3c6..f4bc1ae6 100644
// render scene into target
diff --git a/examples-testing/examples/webgpu_multiple_rendertargets_readback.ts b/examples-testing/examples/webgpu_multiple_rendertargets_readback.ts
-index 2232ab18..cbc9492b 100644
+index 2232ab182..cbc9492b1 100644
--- a/examples-testing/examples/webgpu_multiple_rendertargets_readback.ts
+++ b/examples-testing/examples/webgpu_multiple_rendertargets_readback.ts
@@ -5,8 +5,15 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -18044,7 +18044,7 @@ index 2232ab18..cbc9492b 100644
pixelBufferTexture.image.data = pixelBuffer;
pixelBufferTexture.needsUpdate = true;
diff --git a/examples-testing/examples/webgpu_multisampled_renderbuffers.ts b/examples-testing/examples/webgpu_multisampled_renderbuffers.ts
-index 05098c8d..9164cb14 100644
+index 05098c8d4..9164cb14b 100644
--- a/examples-testing/examples/webgpu_multisampled_renderbuffers.ts
+++ b/examples-testing/examples/webgpu_multisampled_renderbuffers.ts
@@ -3,12 +3,12 @@ import { texture } from 'three/tsl';
@@ -18091,7 +18091,7 @@ index 05098c8d..9164cb14 100644
mouse.y = e.offsetY / window.innerHeight;
}
diff --git a/examples-testing/examples/webgpu_occlusion.ts b/examples-testing/examples/webgpu_occlusion.ts
-index 376dc987..d6dd4f61 100644
+index 376dc987d..d6dd4f613 100644
--- a/examples-testing/examples/webgpu_occlusion.ts
+++ b/examples-testing/examples/webgpu_occlusion.ts
@@ -3,10 +3,16 @@ import { uniform } from 'three/tsl';
@@ -18126,7 +18126,7 @@ index 376dc987..d6dd4f61 100644
this.uniformNode.value.copy(isOccluded ? this.occludedColor : this.normalColor);
}
diff --git a/examples-testing/examples/webgpu_ocean.ts b/examples-testing/examples/webgpu_ocean.ts
-index a7939461..fe749d04 100644
+index a7939461e..fe749d04c 100644
--- a/examples-testing/examples/webgpu_ocean.ts
+++ b/examples-testing/examples/webgpu_ocean.ts
@@ -1,6 +1,6 @@
@@ -18178,7 +18178,7 @@ index a7939461..fe749d04 100644
const folderSky = gui.addFolder('Sky');
folderSky.add(parameters, 'elevation', 0, 90, 0.1).onChange(updateSun);
diff --git a/examples-testing/examples/webgpu_parallax_uv.ts b/examples-testing/examples/webgpu_parallax_uv.ts
-index b6282d89..43fa2744 100644
+index b6282d89f..43fa27447 100644
--- a/examples-testing/examples/webgpu_parallax_uv.ts
+++ b/examples-testing/examples/webgpu_parallax_uv.ts
@@ -6,9 +6,9 @@ import { HDRLoader } from 'three/addons/loaders/HDRLoader.js';
@@ -18203,7 +18203,7 @@ index b6282d89..43fa2744 100644
gui.add(parallaxScale, 'value', 0.2, 0.5).name('Parallax Scale');
gui.add(scaleUV, 'value', 1, 5).name('UV Scale');
diff --git a/examples-testing/examples/webgpu_particles.ts b/examples-testing/examples/webgpu_particles.ts
-index 9e81f076..da9ee875 100644
+index 9e81f0761..da9ee8757 100644
--- a/examples-testing/examples/webgpu_particles.ts
+++ b/examples-testing/examples/webgpu_particles.ts
@@ -7,8 +7,8 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -18236,7 +18236,7 @@ index 9e81f076..da9ee875 100644
gui.add(speed, 'value', 0, 1, 0.01).name('speed');
}
diff --git a/examples-testing/examples/webgpu_performance.ts b/examples-testing/examples/webgpu_performance.ts
-index fb4ed155..8f0c113a 100644
+index fb4ed1556..8f0c113a5 100644
--- a/examples-testing/examples/webgpu_performance.ts
+++ b/examples-testing/examples/webgpu_performance.ts
@@ -8,17 +8,17 @@ import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
@@ -18272,7 +18272,7 @@ index fb4ed155..8f0c113a 100644
setStatic(model, options.static);
});
diff --git a/examples-testing/examples/webgpu_performance_renderbundle.ts b/examples-testing/examples/webgpu_performance_renderbundle.ts
-index 3b20847b..bda53998 100644
+index 3b20847b8..bda539989 100644
--- a/examples-testing/examples/webgpu_performance_renderbundle.ts
+++ b/examples-testing/examples/webgpu_performance_renderbundle.ts
@@ -1,13 +1,14 @@
@@ -18354,7 +18354,7 @@ index 3b20847b..bda53998 100644
function reload() {
diff --git a/examples-testing/examples/webgpu_pmrem_cubemap.ts b/examples-testing/examples/webgpu_pmrem_cubemap.ts
-index bd751ba3..9f58dc8b 100644
+index bd751ba33..9f58dc8b0 100644
--- a/examples-testing/examples/webgpu_pmrem_cubemap.ts
+++ b/examples-testing/examples/webgpu_pmrem_cubemap.ts
@@ -5,7 +5,7 @@ import { HDRCubeTextureLoader } from 'three/addons/loaders/HDRCubeTextureLoader.
@@ -18367,7 +18367,7 @@ index bd751ba3..9f58dc8b 100644
init();
diff --git a/examples-testing/examples/webgpu_pmrem_equirectangular.ts b/examples-testing/examples/webgpu_pmrem_equirectangular.ts
-index 76f8326d..cc85ba86 100644
+index 76f8326d3..cc85ba863 100644
--- a/examples-testing/examples/webgpu_pmrem_equirectangular.ts
+++ b/examples-testing/examples/webgpu_pmrem_equirectangular.ts
@@ -5,7 +5,7 @@ import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
@@ -18380,7 +18380,7 @@ index 76f8326d..cc85ba86 100644
init();
diff --git a/examples-testing/examples/webgpu_pmrem_scene.ts b/examples-testing/examples/webgpu_pmrem_scene.ts
-index deab005f..36ca1c7d 100644
+index deab005fc..36ca1c7d1 100644
--- a/examples-testing/examples/webgpu_pmrem_scene.ts
+++ b/examples-testing/examples/webgpu_pmrem_scene.ts
@@ -5,7 +5,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -18402,7 +18402,7 @@ index deab005f..36ca1c7d 100644
.name('roughness')
.onChange(() => render());
diff --git a/examples-testing/examples/webgpu_pmrem_test.ts b/examples-testing/examples/webgpu_pmrem_test.ts
-index 3e1ea3ef..e0e11ef8 100644
+index 3e1ea3ef9..e0e11ef81 100644
--- a/examples-testing/examples/webgpu_pmrem_test.ts
+++ b/examples-testing/examples/webgpu_pmrem_test.ts
@@ -1,11 +1,11 @@
@@ -18441,7 +18441,7 @@ index 3e1ea3ef..e0e11ef8 100644
});
});
diff --git a/examples-testing/examples/webgpu_portal.ts b/examples-testing/examples/webgpu_portal.ts
-index df2e400f..a9b88127 100644
+index df2e400f3..a9b881274 100644
--- a/examples-testing/examples/webgpu_portal.ts
+++ b/examples-testing/examples/webgpu_portal.ts
@@ -17,10 +17,10 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -18490,7 +18490,7 @@ index df2e400f..a9b88127 100644
applyFX(0);
diff --git a/examples-testing/examples/webgpu_postprocessing.ts b/examples-testing/examples/webgpu_postprocessing.ts
-index d554a883..1b45472b 100644
+index d554a8835..1b45472b6 100644
--- a/examples-testing/examples/webgpu_postprocessing.ts
+++ b/examples-testing/examples/webgpu_postprocessing.ts
@@ -4,8 +4,8 @@ import { dotScreen } from 'three/addons/tsl/display/DotScreenNode.js';
@@ -18505,7 +18505,7 @@ index d554a883..1b45472b 100644
init();
diff --git a/examples-testing/examples/webgpu_postprocessing_3dlut.ts b/examples-testing/examples/webgpu_postprocessing_3dlut.ts
-index 867cc62f..cd14289f 100644
+index 867cc62f7..cd14289f0 100644
--- a/examples-testing/examples/webgpu_postprocessing_3dlut.ts
+++ b/examples-testing/examples/webgpu_postprocessing_3dlut.ts
@@ -18,21 +18,31 @@ import {
@@ -18631,7 +18631,7 @@ index 867cc62f..cd14289f 100644
lutPass.size.value = lut.texture3D.image.width;
}
diff --git a/examples-testing/examples/webgpu_postprocessing_afterimage.ts b/examples-testing/examples/webgpu_postprocessing_afterimage.ts
-index 2df8212f..8d35cb73 100644
+index 2df8212f5..8d35cb734 100644
--- a/examples-testing/examples/webgpu_postprocessing_afterimage.ts
+++ b/examples-testing/examples/webgpu_postprocessing_afterimage.ts
@@ -13,12 +13,12 @@ import {
@@ -18705,7 +18705,7 @@ index 2df8212f..8d35cb73 100644
renderPipeline.render();
diff --git a/examples-testing/examples/webgpu_postprocessing_anamorphic.ts b/examples-testing/examples/webgpu_postprocessing_anamorphic.ts
-index 1cdb6893..8286bb59 100644
+index 1cdb6893c..8286bb59b 100644
--- a/examples-testing/examples/webgpu_postprocessing_anamorphic.ts
+++ b/examples-testing/examples/webgpu_postprocessing_anamorphic.ts
@@ -9,8 +9,8 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -18729,7 +18729,7 @@ index 1cdb6893..8286bb59 100644
gui.add(threshold, 'value', 0.8, 3, 0.001).name('threshold');
gui.add(scaleNode, 'value', 1, 10, 0.1).name('scale');
diff --git a/examples-testing/examples/webgpu_postprocessing_ao.ts b/examples-testing/examples/webgpu_postprocessing_ao.ts
-index 76046bee..460c90fd 100644
+index 76046bee8..460c90fd6 100644
--- a/examples-testing/examples/webgpu_postprocessing_ao.ts
+++ b/examples-testing/examples/webgpu_postprocessing_ao.ts
@@ -13,8 +13,8 @@ import {
@@ -18771,7 +18771,7 @@ index 76046bee..460c90fd 100644
gui.add(params, 'distanceExponent', 1, 2).onChange(updateParameters);
gui.add(params, 'distanceFallOff', 0.01, 1).onChange(updateParameters);
diff --git a/examples-testing/examples/webgpu_postprocessing_bloom.ts b/examples-testing/examples/webgpu_postprocessing_bloom.ts
-index 3197d680..d173ef87 100644
+index 3197d680d..d173ef87b 100644
--- a/examples-testing/examples/webgpu_postprocessing_bloom.ts
+++ b/examples-testing/examples/webgpu_postprocessing_bloom.ts
@@ -7,8 +7,11 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -18798,7 +18798,7 @@ index 3197d680..d173ef87 100644
const bloomFolder = gui.addFolder('bloom');
diff --git a/examples-testing/examples/webgpu_postprocessing_bloom_emissive.ts b/examples-testing/examples/webgpu_postprocessing_bloom_emissive.ts
-index faa5b67f..efe98431 100644
+index faa5b67fb..efe984318 100644
--- a/examples-testing/examples/webgpu_postprocessing_bloom_emissive.ts
+++ b/examples-testing/examples/webgpu_postprocessing_bloom_emissive.ts
@@ -9,8 +9,8 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -18822,7 +18822,7 @@ index faa5b67f..efe98431 100644
const bloomFolder = gui.addFolder('Bloom');
bloomFolder.add(bloomPass.strength, 'value', 0.0, 5.0).name('strength');
diff --git a/examples-testing/examples/webgpu_postprocessing_bloom_selective.ts b/examples-testing/examples/webgpu_postprocessing_bloom_selective.ts
-index b8f2427d..00b649ae 100644
+index b8f2427d4..00b649aed 100644
--- a/examples-testing/examples/webgpu_postprocessing_bloom_selective.ts
+++ b/examples-testing/examples/webgpu_postprocessing_bloom_selective.ts
@@ -86,16 +86,17 @@ window.addEventListener('pointerdown', event => {
@@ -18847,7 +18847,7 @@ index b8f2427d..00b649ae 100644
const bloomFolder = gui.addFolder('Bloom');
bloomFolder.add(bloomPass.threshold, 'value', 0.0, 1.0).name('threshold');
diff --git a/examples-testing/examples/webgpu_postprocessing_ca.ts b/examples-testing/examples/webgpu_postprocessing_ca.ts
-index 48b54905..4af52250 100644
+index 48b549050..4af52250f 100644
--- a/examples-testing/examples/webgpu_postprocessing_ca.ts
+++ b/examples-testing/examples/webgpu_postprocessing_ca.ts
@@ -17,8 +17,12 @@ const params = {
@@ -18895,7 +18895,7 @@ index 48b54905..4af52250 100644
subChild.rotation.z = time * (1 - subIndex * 0.1);
}
diff --git a/examples-testing/examples/webgpu_postprocessing_difference.ts b/examples-testing/examples/webgpu_postprocessing_difference.ts
-index 91cc4cbf..7dd420b3 100644
+index 91cc4cbf5..7dd420b37 100644
--- a/examples-testing/examples/webgpu_postprocessing_difference.ts
+++ b/examples-testing/examples/webgpu_postprocessing_difference.ts
@@ -9,8 +9,8 @@ const params = {
@@ -18919,7 +18919,7 @@ index 91cc4cbf..7dd420b3 100644
}
diff --git a/examples-testing/examples/webgpu_postprocessing_dof.ts b/examples-testing/examples/webgpu_postprocessing_dof.ts
-index 862c2802..72722971 100644
+index 862c2802b..72722971d 100644
--- a/examples-testing/examples/webgpu_postprocessing_dof.ts
+++ b/examples-testing/examples/webgpu_postprocessing_dof.ts
@@ -7,12 +7,16 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -18951,7 +18951,7 @@ index 862c2802..72722971 100644
gui.add(effectController.focalLength, 'value', 50, 750).name('focal length');
gui.add(effectController.bokehScale, 'value', 1, 20).name('bokeh scale');
diff --git a/examples-testing/examples/webgpu_postprocessing_dof_basic.ts b/examples-testing/examples/webgpu_postprocessing_dof_basic.ts
-index 7d51910e..9dc7e177 100644
+index 3ad295247..6e0d389bb 100644
--- a/examples-testing/examples/webgpu_postprocessing_dof_basic.ts
+++ b/examples-testing/examples/webgpu_postprocessing_dof_basic.ts
@@ -11,7 +11,15 @@ import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
@@ -18990,7 +18990,7 @@ index 7d51910e..9dc7e177 100644
raycaster.setFromCamera(pointerCoords, camera);
diff --git a/examples-testing/examples/webgpu_postprocessing_fxaa.ts b/examples-testing/examples/webgpu_postprocessing_fxaa.ts
-index 24c01a95..b820da43 100644
+index 24c01a950..b820da439 100644
--- a/examples-testing/examples/webgpu_postprocessing_fxaa.ts
+++ b/examples-testing/examples/webgpu_postprocessing_fxaa.ts
@@ -9,8 +9,12 @@ const params = {
@@ -19018,7 +19018,7 @@ index 24c01a95..b820da43 100644
if (value === true) {
renderPipeline.outputNode = fxaaPass;
diff --git a/examples-testing/examples/webgpu_postprocessing_godrays.ts b/examples-testing/examples/webgpu_postprocessing_godrays.ts
-index 32e619a4..fe3c281c 100644
+index 32e619a47..fe3c281c6 100644
--- a/examples-testing/examples/webgpu_postprocessing_godrays.ts
+++ b/examples-testing/examples/webgpu_postprocessing_godrays.ts
@@ -9,7 +9,11 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -19071,7 +19071,7 @@ index 32e619a4..fe3c281c 100644
godraysFolder.add(godraysPass.raymarchSteps, 'value', 24, 120).step(1).name('raymarch steps');
godraysFolder.add(godraysPass.density, 'value', 0, 1).name('density');
diff --git a/examples-testing/examples/webgpu_postprocessing_lensflare.ts b/examples-testing/examples/webgpu_postprocessing_lensflare.ts
-index 39b1e5f6..07904d37 100644
+index 39b1e5f6e..07904d37c 100644
--- a/examples-testing/examples/webgpu_postprocessing_lensflare.ts
+++ b/examples-testing/examples/webgpu_postprocessing_lensflare.ts
@@ -11,8 +11,8 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -19095,7 +19095,7 @@ index 39b1e5f6..07904d37 100644
const bloomFolder = gui.addFolder('bloom');
bloomFolder.add(bloomPass.strength, 'value', 0.0, 2.0).name('strength');
diff --git a/examples-testing/examples/webgpu_postprocessing_masking.ts b/examples-testing/examples/webgpu_postprocessing_masking.ts
-index b234abc6..2f52a98c 100644
+index b234abc66..2f52a98c9 100644
--- a/examples-testing/examples/webgpu_postprocessing_masking.ts
+++ b/examples-testing/examples/webgpu_postprocessing_masking.ts
@@ -2,8 +2,8 @@ import * as THREE from 'three/webgpu';
@@ -19119,7 +19119,7 @@ index b234abc6..2f52a98c 100644
compose = sceneMask2.mix(compose, texture(texture2));
diff --git a/examples-testing/examples/webgpu_postprocessing_motion_blur.ts b/examples-testing/examples/webgpu_postprocessing_motion_blur.ts
-index 5ae3d966..64a4411f 100644
+index 5ae3d9661..64a4411fc 100644
--- a/examples-testing/examples/webgpu_postprocessing_motion_blur.ts
+++ b/examples-testing/examples/webgpu_postprocessing_motion_blur.ts
@@ -8,10 +8,10 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -19156,7 +19156,7 @@ index 5ae3d966..64a4411f 100644
gui.add(blurAmount, 'value', 0, 3).name('blur amount');
gui.add(params, 'speed', 0, 2);
diff --git a/examples-testing/examples/webgpu_postprocessing_outline.ts b/examples-testing/examples/webgpu_postprocessing_outline.ts
-index f87415b7..beb843ed 100644
+index f87415b74..beb843ed8 100644
--- a/examples-testing/examples/webgpu_postprocessing_outline.ts
+++ b/examples-testing/examples/webgpu_postprocessing_outline.ts
@@ -1,16 +1,16 @@
@@ -19208,7 +19208,7 @@ index f87415b7..beb843ed 100644
selectedObjects.push(object);
}
diff --git a/examples-testing/examples/webgpu_postprocessing_pixel.ts b/examples-testing/examples/webgpu_postprocessing_pixel.ts
-index a3d58f20..26c4a8ac 100644
+index a3d58f203..26c4a8ac8 100644
--- a/examples-testing/examples/webgpu_postprocessing_pixel.ts
+++ b/examples-testing/examples/webgpu_postprocessing_pixel.ts
@@ -6,8 +6,18 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -19295,7 +19295,7 @@ index a3d58f20..26c4a8ac 100644
const worldScreenWidth = (camera.right - camera.left) / camera.zoom;
const worldScreenHeight = (camera.top - camera.bottom) / camera.zoom;
diff --git a/examples-testing/examples/webgpu_postprocessing_radial_blur.ts b/examples-testing/examples/webgpu_postprocessing_radial_blur.ts
-index f358421e..95f4cba6 100644
+index f358421e3..95f4cba68 100644
--- a/examples-testing/examples/webgpu_postprocessing_radial_blur.ts
+++ b/examples-testing/examples/webgpu_postprocessing_radial_blur.ts
@@ -9,8 +9,12 @@ const params = {
@@ -19323,7 +19323,7 @@ index f358421e..95f4cba6 100644
gui.add(decayUniform, 'value', 0, 1).name('decay');
gui.add(countUniform, 'value', 16, 64, 1).name('sample count');
diff --git a/examples-testing/examples/webgpu_postprocessing_retro.ts b/examples-testing/examples/webgpu_postprocessing_retro.ts
-index b9958352..541a349a 100644
+index b9958352f..541a349ac 100644
--- a/examples-testing/examples/webgpu_postprocessing_retro.ts
+++ b/examples-testing/examples/webgpu_postprocessing_retro.ts
@@ -40,9 +40,13 @@ import { HDRLoader } from 'three/addons/loaders/HDRLoader.js';
@@ -19390,7 +19390,7 @@ index b9958352..541a349a 100644
gui.add({ model: 'Coffee Mug' }, 'model', Object.keys(models)).name('Model').onChange(loadModel);
diff --git a/examples-testing/examples/webgpu_postprocessing_smaa.ts b/examples-testing/examples/webgpu_postprocessing_smaa.ts
-index f0637425..e23e3725 100644
+index f06374258..e23e37256 100644
--- a/examples-testing/examples/webgpu_postprocessing_smaa.ts
+++ b/examples-testing/examples/webgpu_postprocessing_smaa.ts
@@ -4,7 +4,10 @@ import { smaa } from 'three/addons/tsl/display/SMAANode.js';
@@ -19415,7 +19415,7 @@ index f0637425..e23e3725 100644
const smaaFolder = gui.addFolder('SMAA');
smaaFolder.add(params, 'enabled').onChange(value => {
diff --git a/examples-testing/examples/webgpu_postprocessing_sobel.ts b/examples-testing/examples/webgpu_postprocessing_sobel.ts
-index bdc37d2f..0888593b 100644
+index bdc37d2fd..0888593b0 100644
--- a/examples-testing/examples/webgpu_postprocessing_sobel.ts
+++ b/examples-testing/examples/webgpu_postprocessing_sobel.ts
@@ -7,8 +7,8 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -19448,7 +19448,7 @@ index bdc37d2f..0888593b 100644
//
diff --git a/examples-testing/examples/webgpu_postprocessing_ssaa.ts b/examples-testing/examples/webgpu_postprocessing_ssaa.ts
-index c38832c7..8630c18d 100644
+index c38832c7a..8630c18d6 100644
--- a/examples-testing/examples/webgpu_postprocessing_ssaa.ts
+++ b/examples-testing/examples/webgpu_postprocessing_ssaa.ts
@@ -1,11 +1,11 @@
@@ -19495,7 +19495,7 @@ index c38832c7..8630c18d 100644
renderPipeline.render();
}
diff --git a/examples-testing/examples/webgpu_postprocessing_ssgi.ts b/examples-testing/examples/webgpu_postprocessing_ssgi.ts
-index 8c8e4a91..12595f85 100644
+index 8c8e4a91c..12595f85c 100644
--- a/examples-testing/examples/webgpu_postprocessing_ssgi.ts
+++ b/examples-testing/examples/webgpu_postprocessing_ssgi.ts
@@ -20,7 +20,11 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -19529,8 +19529,111 @@ index 8c8e4a91..12595f85 100644
if (value === 1) {
renderPipeline.outputNode = vec4(vec3(ao), 1);
} else if (value === 2) {
+diff --git a/examples-testing/examples/webgpu_postprocessing_ssgi_ballpool.ts b/examples-testing/examples/webgpu_postprocessing_ssgi_ballpool.ts
+index 4d1e617c1..54d760f2f 100644
+--- a/examples-testing/examples/webgpu_postprocessing_ssgi_ballpool.ts
++++ b/examples-testing/examples/webgpu_postprocessing_ssgi_ballpool.ts
+@@ -14,7 +14,8 @@ import {
+ } from 'three/tsl';
+ import { ssgi } from 'three/addons/tsl/display/SSGINode.js';
+ import { traa } from 'three/addons/tsl/display/TRAANode.js';
+-import { World } from '@perplexdotgg/bounce';
++import { Body, Vec3, World } from '@perplexdotgg/bounce';
++import { WithPool } from 'monomorph';
+
+ const BALL_RADIUS = 0.4;
+ const FILL_RATIO = 0.4;
+@@ -25,15 +26,18 @@ const WALL_THICKNESS = 0.5;
+ const CAM_FOV = 45;
+ const EASE_SPEED = 8;
+
+-let camera, scene, renderer, renderPipeline;
+-let raycaster, pointer;
+-let mouseLight;
++let camera: THREE.PerspectiveCamera,
++ scene: THREE.Scene,
++ renderer: THREE.WebGPURenderer,
++ renderPipeline: THREE.RenderPipeline;
++let raycaster: THREE.Raycaster, pointer: THREE.Vector2;
++let mouseLight: THREE.PointLight;
+
+-let world;
++let world: World;
+ let ballCount = 0;
+-let bodies = [];
+-let ballsMesh = null;
+-let wallMeshes = [];
++let bodies: WithPool[] = [];
++let ballsMesh: THREE.InstancedMesh | null = null;
++let wallMeshes: THREE.Mesh[] = [];
+ const boxSize = { w: 8, h: BOX_HEIGHT, d: BOX_DEPTH };
+
+ let mouseRayOrigin = new THREE.Vector3();
+@@ -207,7 +211,12 @@ function createBox() {
+ metalness: 0.0,
+ });
+
+- const walls = [
++ const walls: {
++ size: [number, number, number];
++ pos: [number, number, number];
++ mat?: THREE.MeshPhysicalMaterial;
++ noMesh?: boolean;
++ }[] = [
+ { size: [boxSize.w, t, boxSize.d], pos: [0, -t / 2, 0], mat: whiteMaterial },
+ { size: [boxSize.w, t, boxSize.d], pos: [0, boxSize.h + t / 2, 0], mat: whiteMaterial },
+ { size: [boxSize.w, boxSize.h, t], pos: [0, hh, -hd - t / 2], mat: whiteMaterial },
+@@ -271,7 +280,7 @@ function createBalls() {
+ }
+ }
+
+-function onPointerDown(event) {
++function onPointerDown(event: PointerEvent) {
+ activePointers.add(event.pointerId);
+
+ if (event.pointerType === 'touch') {
+@@ -281,7 +290,7 @@ function onPointerDown(event) {
+ }
+ }
+
+-function onPointerUp(event) {
++function onPointerUp(event: PointerEvent) {
+ activePointers.delete(event.pointerId);
+
+ if (event.pointerType === 'touch') {
+@@ -291,7 +300,7 @@ function onPointerUp(event) {
+ }
+ }
+
+-function onPointerMove(event) {
++function onPointerMove(event: PointerEvent) {
+ pointer.x = (event.clientX / window.innerWidth) * 2 - 1;
+ pointer.y = -(event.clientY / window.innerHeight) * 2 + 1;
+
+@@ -386,7 +395,7 @@ function animate() {
+ x: _pushDir.x * strength,
+ y: _pushDir.y * strength,
+ z: _pushDir.z * strength,
+- });
++ } as Vec3);
+ }
+ }
+ }
+@@ -404,10 +413,10 @@ function animate() {
+ _dummy.quaternion.set(q.x, q.y, q.z, q.w);
+ _dummy.updateMatrix();
+
+- ballsMesh.setMatrixAt(i, _dummy.matrix);
++ ballsMesh!.setMatrixAt(i, _dummy.matrix);
+ }
+
+- ballsMesh.instanceMatrix.needsUpdate = true;
++ ballsMesh!.instanceMatrix.needsUpdate = true;
+
+ renderPipeline.render();
+ }
diff --git a/examples-testing/examples/webgpu_postprocessing_ssr.ts b/examples-testing/examples/webgpu_postprocessing_ssr.ts
-index 7ce11780..2d8012fa 100644
+index 7ce11780a..2d8012faa 100644
--- a/examples-testing/examples/webgpu_postprocessing_ssr.ts
+++ b/examples-testing/examples/webgpu_postprocessing_ssr.ts
@@ -14,7 +14,7 @@ import {
@@ -19597,7 +19700,7 @@ index 7ce11780..2d8012fa 100644
});
});
diff --git a/examples-testing/examples/webgpu_postprocessing_sss.ts b/examples-testing/examples/webgpu_postprocessing_sss.ts
-index 42cc26f3..01ca5fa0 100644
+index 42cc26f39..01ca5fa02 100644
--- a/examples-testing/examples/webgpu_postprocessing_sss.ts
+++ b/examples-testing/examples/webgpu_postprocessing_sss.ts
@@ -8,7 +8,11 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -19636,7 +19739,7 @@ index 42cc26f3..01ca5fa0 100644
gui.add(sssPass.shadowIntensity, 'value', 0, 1).name('shadow intensity');
gui.add(sssPass.maxDistance, 'value', 0.01, 1).name('max ray distance');
diff --git a/examples-testing/examples/webgpu_postprocessing_traa.ts b/examples-testing/examples/webgpu_postprocessing_traa.ts
-index 01d17ca1..9c7b6cb6 100644
+index 01d17ca17..9c7b6cb64 100644
--- a/examples-testing/examples/webgpu_postprocessing_traa.ts
+++ b/examples-testing/examples/webgpu_postprocessing_traa.ts
@@ -4,7 +4,10 @@ import { traa } from 'three/addons/tsl/display/TRAANode.js';
@@ -19652,7 +19755,7 @@ index 01d17ca1..9c7b6cb6 100644
init();
diff --git a/examples-testing/examples/webgpu_postprocessing_transition.ts b/examples-testing/examples/webgpu_postprocessing_transition.ts
-index 1a5a88fc..74dc8f8e 100644
+index 1a5a88fc1..74dc8f8ec 100644
--- a/examples-testing/examples/webgpu_postprocessing_transition.ts
+++ b/examples-testing/examples/webgpu_postprocessing_transition.ts
@@ -3,17 +3,33 @@ import * as THREE from 'three/webgpu';
@@ -19796,7 +19899,7 @@ index 1a5a88fc..74dc8f8e 100644
gui.add(effectController, 'animateScene').name('Animate Scene');
gui.add(effectController, 'animateTransition').name('Animate Transition');
diff --git a/examples-testing/examples/webgpu_procedural_texture.ts b/examples-testing/examples/webgpu_procedural_texture.ts
-index 21fb4a3c..d3a164be 100644
+index 21fb4a3c2..d3a164bef 100644
--- a/examples-testing/examples/webgpu_procedural_texture.ts
+++ b/examples-testing/examples/webgpu_procedural_texture.ts
@@ -4,7 +4,7 @@ import { gaussianBlur } from 'three/addons/tsl/display/GaussianBlurNode.js';
@@ -19818,7 +19921,7 @@ index 21fb4a3c..d3a164be 100644
gui.add(blurAmount, 'value', 0, 2).name('blur amount ( after rtt )');
gui.add(proceduralToTexture, 'autoUpdate').name('auto update');
diff --git a/examples-testing/examples/webgpu_reflection.ts b/examples-testing/examples/webgpu_reflection.ts
-index d5dd2331..a5a22f6a 100644
+index d5dd23318..a5a22f6a1 100644
--- a/examples-testing/examples/webgpu_reflection.ts
+++ b/examples-testing/examples/webgpu_reflection.ts
@@ -32,9 +32,9 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -19898,7 +20001,7 @@ index d5dd2331..a5a22f6a 100644
animated = animated.add(direction.mul(effect.add(instanceSize)));
diff --git a/examples-testing/examples/webgpu_reflection_roughness.ts b/examples-testing/examples/webgpu_reflection_roughness.ts
-index 2b6b4a78..edabe7a8 100644
+index 2b6b4a78d..edabe7a83 100644
--- a/examples-testing/examples/webgpu_reflection_roughness.ts
+++ b/examples-testing/examples/webgpu_reflection_roughness.ts
@@ -6,8 +6,8 @@ import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
@@ -19913,7 +20016,7 @@ index 2b6b4a78..edabe7a8 100644
init();
diff --git a/examples-testing/examples/webgpu_refraction.ts b/examples-testing/examples/webgpu_refraction.ts
-index d475ed2d..3d0c4e82 100644
+index d475ed2de..3d0c4e82b 100644
--- a/examples-testing/examples/webgpu_refraction.ts
+++ b/examples-testing/examples/webgpu_refraction.ts
@@ -5,11 +5,11 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -19932,7 +20035,7 @@ index d475ed2d..3d0c4e82 100644
init();
diff --git a/examples-testing/examples/webgpu_rendertarget_2d-array_3d.ts b/examples-testing/examples/webgpu_rendertarget_2d-array_3d.ts
-index 627fd6b1..9dc934c0 100644
+index 627fd6b18..9dc934c0f 100644
--- a/examples-testing/examples/webgpu_rendertarget_2d-array_3d.ts
+++ b/examples-testing/examples/webgpu_rendertarget_2d-array_3d.ts
@@ -5,11 +5,22 @@ import { TextureHelper } from 'three/addons/helpers/TextureHelperGPU.js';
@@ -20018,7 +20121,7 @@ index 627fd6b1..9dc934c0 100644
const left = Math.floor(view.left * window.innerWidth);
const bottom = Math.floor((1 - view.top - view.height) * window.innerHeight);
diff --git a/examples-testing/examples/webgpu_reversed_depth_buffer.ts b/examples-testing/examples/webgpu_reversed_depth_buffer.ts
-index d159748f..fae26aad 100644
+index d159748f5..fae26aad0 100644
--- a/examples-testing/examples/webgpu_reversed_depth_buffer.ts
+++ b/examples-testing/examples/webgpu_reversed_depth_buffer.ts
@@ -1,10 +1,14 @@
@@ -20066,7 +20169,7 @@ index d159748f..fae26aad 100644
reverseRenderer.setPixelRatio(window.devicePixelRatio);
reverseRenderer.setSize(0.33 * window.innerWidth, window.innerHeight);
diff --git a/examples-testing/examples/webgpu_rtt.ts b/examples-testing/examples/webgpu_rtt.ts
-index fa7577ea..b4c7a8c3 100644
+index fa7577ea8..b4c7a8c39 100644
--- a/examples-testing/examples/webgpu_rtt.ts
+++ b/examples-testing/examples/webgpu_rtt.ts
@@ -3,12 +3,12 @@ import { texture, uniform, saturation, hue } from 'three/tsl';
@@ -20095,7 +20198,7 @@ index fa7577ea..b4c7a8c3 100644
mouse.y = e.offsetY / window.innerHeight;
}
diff --git a/examples-testing/examples/webgpu_shadow_contact.ts b/examples-testing/examples/webgpu_shadow_contact.ts
-index ac3e4fbd..64234710 100644
+index ac3e4fbd8..642347107 100644
--- a/examples-testing/examples/webgpu_shadow_contact.ts
+++ b/examples-testing/examples/webgpu_shadow_contact.ts
@@ -4,13 +4,13 @@ import { gaussianBlur } from 'three/addons/tsl/display/GaussianBlurNode.js';
@@ -20128,7 +20231,7 @@ index ac3e4fbd..64234710 100644
gui.add(params, 'shadowBlur', 0, 15, 0.1).onChange(() => {
state.shadow.blur = params.shadowBlur;
diff --git a/examples-testing/examples/webgpu_shadowmap.ts b/examples-testing/examples/webgpu_shadowmap.ts
-index f6edec75..a0064c0d 100644
+index f6edec750..a0064c0dc 100644
--- a/examples-testing/examples/webgpu_shadowmap.ts
+++ b/examples-testing/examples/webgpu_shadowmap.ts
@@ -5,9 +5,9 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -20154,7 +20257,7 @@ index f6edec75..a0064c0d 100644
const delta = timer.getDelta();
diff --git a/examples-testing/examples/webgpu_shadowmap_array.ts b/examples-testing/examples/webgpu_shadowmap_array.ts
-index 0dfe8084..efdb6b9e 100644
+index 0dfe8084f..efdb6b9eb 100644
--- a/examples-testing/examples/webgpu_shadowmap_array.ts
+++ b/examples-testing/examples/webgpu_shadowmap_array.ts
@@ -8,10 +8,10 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -20182,7 +20285,7 @@ index 0dfe8084..efdb6b9e 100644
const delta = timer.getDelta();
diff --git a/examples-testing/examples/webgpu_shadowmap_csm.ts b/examples-testing/examples/webgpu_shadowmap_csm.ts
-index 5be06145..60811643 100644
+index 5be061456..60811643e 100644
--- a/examples-testing/examples/webgpu_shadowmap_csm.ts
+++ b/examples-testing/examples/webgpu_shadowmap_csm.ts
@@ -4,12 +4,33 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -20255,7 +20358,7 @@ index 5be06145..60811643 100644
});
diff --git a/examples-testing/examples/webgpu_shadowmap_opacity.ts b/examples-testing/examples/webgpu_shadowmap_opacity.ts
-index e508e103..ec2ae150 100644
+index e508e1039..ec2ae1509 100644
--- a/examples-testing/examples/webgpu_shadowmap_opacity.ts
+++ b/examples-testing/examples/webgpu_shadowmap_opacity.ts
@@ -6,7 +6,7 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -20294,7 +20397,7 @@ index e508e103..ec2ae150 100644
// apply shadow
diff --git a/examples-testing/examples/webgpu_shadowmap_pointlight.ts b/examples-testing/examples/webgpu_shadowmap_pointlight.ts
-index 3cb878e6..ef4acd04 100644
+index 3cb878e6f..ef4acd04a 100644
--- a/examples-testing/examples/webgpu_shadowmap_pointlight.ts
+++ b/examples-testing/examples/webgpu_shadowmap_pointlight.ts
@@ -1,11 +1,11 @@
@@ -20342,7 +20445,7 @@ index 3cb878e6..ef4acd04 100644
context.fillRect(0, 1, 2, 1);
diff --git a/examples-testing/examples/webgpu_shadowmap_progressive.ts b/examples-testing/examples/webgpu_shadowmap_progressive.ts
-index ca5ee0f7..26016858 100644
+index ca5ee0f72..260168589 100644
--- a/examples-testing/examples/webgpu_shadowmap_progressive.ts
+++ b/examples-testing/examples/webgpu_shadowmap_progressive.ts
@@ -11,17 +11,17 @@ import { ProgressiveLightMap } from 'three/addons/misc/ProgressiveLightMapGPU.js
@@ -20401,7 +20504,7 @@ index ca5ee0f7..26016858 100644
gui.add(params, 'Blur Edges');
gui.add(params, 'Blend Window', 1, 500, 1);
diff --git a/examples-testing/examples/webgpu_shadowmap_vsm.ts b/examples-testing/examples/webgpu_shadowmap_vsm.ts
-index edaf4fd9..a40b8b28 100644
+index edaf4fd9e..a40b8b289 100644
--- a/examples-testing/examples/webgpu_shadowmap_vsm.ts
+++ b/examples-testing/examples/webgpu_shadowmap_vsm.ts
@@ -4,9 +4,9 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -20436,7 +20539,7 @@ index edaf4fd9..a40b8b28 100644
const delta = timer.getDelta();
diff --git a/examples-testing/examples/webgpu_skinning.ts b/examples-testing/examples/webgpu_skinning.ts
-index 36669a5d..ba34cfcf 100644
+index 36669a5d4..ba34cfcfd 100644
--- a/examples-testing/examples/webgpu_skinning.ts
+++ b/examples-testing/examples/webgpu_skinning.ts
@@ -3,9 +3,9 @@ import { color, screenUV } from 'three/tsl';
@@ -20452,7 +20555,7 @@ index 36669a5d..ba34cfcf 100644
init();
diff --git a/examples-testing/examples/webgpu_skinning_instancing.ts b/examples-testing/examples/webgpu_skinning_instancing.ts
-index 877ee46c..1b8d0b2d 100644
+index 877ee46cb..1b8d0b2dc 100644
--- a/examples-testing/examples/webgpu_skinning_instancing.ts
+++ b/examples-testing/examples/webgpu_skinning_instancing.ts
@@ -4,10 +4,10 @@ import { gaussianBlur } from 'three/addons/tsl/display/GaussianBlurNode.js';
@@ -20520,7 +20623,7 @@ index 877ee46c..1b8d0b2d 100644
}
});
diff --git a/examples-testing/examples/webgpu_sprites.ts b/examples-testing/examples/webgpu_sprites.ts
-index de9f219b..68a7b73a 100644
+index de9f219b8..68a7b73a8 100644
--- a/examples-testing/examples/webgpu_sprites.ts
+++ b/examples-testing/examples/webgpu_sprites.ts
@@ -1,11 +1,11 @@
@@ -20539,7 +20642,7 @@ index de9f219b..68a7b73a 100644
let imageWidth = 1,
imageHeight = 1;
diff --git a/examples-testing/examples/webgpu_storage_buffer.ts b/examples-testing/examples/webgpu_storage_buffer.ts
-index 1b4461d3..5c2d4902 100644
+index 1b4461d33..5c2d49027 100644
--- a/examples-testing/examples/webgpu_storage_buffer.ts
+++ b/examples-testing/examples/webgpu_storage_buffer.ts
@@ -2,8 +2,8 @@ import * as THREE from 'three/webgpu';
@@ -20616,7 +20719,7 @@ index 1b4461d3..5c2d4902 100644
color.assign(vec3(value, value, value));
diff --git a/examples-testing/examples/webgpu_struct_drawindirect.ts b/examples-testing/examples/webgpu_struct_drawindirect.ts
-index b0d1139d..ad573696 100644
+index b0d1139db..ad5736962 100644
--- a/examples-testing/examples/webgpu_struct_drawindirect.ts
+++ b/examples-testing/examples/webgpu_struct_drawindirect.ts
@@ -45,7 +45,7 @@ scene.background = new THREE.Color(0x00001f);
@@ -20646,7 +20749,7 @@ index b0d1139d..ad573696 100644
};
diff --git a/examples-testing/examples/webgpu_test_memory.ts b/examples-testing/examples/webgpu_test_memory.ts
-index aadde4dc..c4babf4a 100644
+index aadde4dc6..c4babf4ae 100644
--- a/examples-testing/examples/webgpu_test_memory.ts
+++ b/examples-testing/examples/webgpu_test_memory.ts
@@ -1,16 +1,22 @@
@@ -20725,7 +20828,7 @@ index aadde4dc..c4babf4a 100644
}
diff --git a/examples-testing/examples/webgpu_textures_2d-array.ts b/examples-testing/examples/webgpu_textures_2d-array.ts
-index a1a354ff..940a35c8 100644
+index a1a354ff7..940a35c89 100644
--- a/examples-testing/examples/webgpu_textures_2d-array.ts
+++ b/examples-testing/examples/webgpu_textures_2d-array.ts
@@ -5,7 +5,10 @@ import { unzipSync } from 'three/addons/libs/fflate.module.js';
@@ -20759,7 +20862,7 @@ index a1a354ff..940a35c8 100644
let oscLayers = oscTriangle(time.mul(0.5)); // [ /\/ ] triangle osc animation
diff --git a/examples-testing/examples/webgpu_textures_2d-array_compressed.ts b/examples-testing/examples/webgpu_textures_2d-array_compressed.ts
-index 62b51645..12beb46d 100644
+index 62b516458..12beb46d5 100644
--- a/examples-testing/examples/webgpu_textures_2d-array_compressed.ts
+++ b/examples-testing/examples/webgpu_textures_2d-array_compressed.ts
@@ -6,7 +6,11 @@ import { KTX2Loader } from 'three/addons/loaders/KTX2Loader.js';
@@ -20776,7 +20879,7 @@ index 62b51645..12beb46d 100644
const depth = uniform(0);
diff --git a/examples-testing/examples/webgpu_textures_anisotropy.ts b/examples-testing/examples/webgpu_textures_anisotropy.ts
-index 0444823f..fdcb1a01 100644
+index 0444823f5..fdcb1a01a 100644
--- a/examples-testing/examples/webgpu_textures_anisotropy.ts
+++ b/examples-testing/examples/webgpu_textures_anisotropy.ts
@@ -1,8 +1,8 @@
@@ -20816,7 +20919,7 @@ index 0444823f..fdcb1a01 100644
const windowHalfY = window.innerHeight / 2;
diff --git a/examples-testing/examples/webgpu_textures_partialupdate.ts b/examples-testing/examples/webgpu_textures_partialupdate.ts
-index d189cec9..da4f7320 100644
+index d893a041d..c14143058 100644
--- a/examples-testing/examples/webgpu_textures_partialupdate.ts
+++ b/examples-testing/examples/webgpu_textures_partialupdate.ts
@@ -1,6 +1,11 @@
@@ -20832,7 +20935,7 @@ index d189cec9..da4f7320 100644
let last = 0;
const position = new THREE.Vector2();
-@@ -79,9 +84,9 @@ function animate() {
+@@ -80,9 +85,9 @@ function animate() {
}
}
@@ -20845,7 +20948,7 @@ index d189cec9..da4f7320 100644
// generate a random color and update texture data
diff --git a/examples-testing/examples/webgpu_tonemapping.ts b/examples-testing/examples/webgpu_tonemapping.ts
-index 4140a49f..e371e494 100644
+index 4140a49fd..e371e494c 100644
--- a/examples-testing/examples/webgpu_tonemapping.ts
+++ b/examples-testing/examples/webgpu_tonemapping.ts
@@ -1,23 +1,33 @@
@@ -20901,7 +21004,7 @@ index 4140a49f..e371e494 100644
.name('type')
.onChange(function () {
diff --git a/examples-testing/examples/webgpu_tsl_angular_slicing.ts b/examples-testing/examples/webgpu_tsl_angular_slicing.ts
-index d74e1bc0..8149db0a 100644
+index d74e1bc0a..8149db0a4 100644
--- a/examples-testing/examples/webgpu_tsl_angular_slicing.ts
+++ b/examples-testing/examples/webgpu_tsl_angular_slicing.ts
@@ -8,7 +8,7 @@ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
@@ -20953,7 +21056,7 @@ index d74e1bc0..8149db0a 100644
gui.add(sliceArc, 'value', 0, Math.PI * 2, 0.001).name('sliceArc');
gui.addColor({ color: sliceColor.value.getHexString(THREE.SRGBColorSpace) }, 'color').onChange(value =>
diff --git a/examples-testing/examples/webgpu_tsl_earth.ts b/examples-testing/examples/webgpu_tsl_earth.ts
-index dece09af..512fb5cd 100644
+index dece09afb..512fb5cdf 100644
--- a/examples-testing/examples/webgpu_tsl_earth.ts
+++ b/examples-testing/examples/webgpu_tsl_earth.ts
@@ -21,7 +21,12 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -20980,7 +21083,7 @@ index dece09af..512fb5cd 100644
gui.addColor({ color: atmosphereDayColor.value.getHex(THREE.SRGBColorSpace) }, 'color')
.onChange(value => {
diff --git a/examples-testing/examples/webgpu_tsl_galaxy.ts b/examples-testing/examples/webgpu_tsl_galaxy.ts
-index 73913850..46c0eead 100644
+index 739138504..46c0eead5 100644
--- a/examples-testing/examples/webgpu_tsl_galaxy.ts
+++ b/examples-testing/examples/webgpu_tsl_galaxy.ts
@@ -5,7 +5,7 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -21002,7 +21105,7 @@ index 73913850..46c0eead 100644
gui.add(size, 'value', 0, 1, 0.001).name('size');
diff --git a/examples-testing/examples/webgpu_tsl_graph.ts b/examples-testing/examples/webgpu_tsl_graph.ts
-index cdde58a9..606093a3 100644
+index cdde58a9a..606093a39 100644
--- a/examples-testing/examples/webgpu_tsl_graph.ts
+++ b/examples-testing/examples/webgpu_tsl_graph.ts
@@ -11,9 +11,9 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -21150,7 +21253,7 @@ index cdde58a9..606093a3 100644
});
diff --git a/examples-testing/examples/webgpu_tsl_halftone.ts b/examples-testing/examples/webgpu_tsl_halftone.ts
-index 682e1df6..6aef3f0d 100644
+index 682e1df64..6aef3f0dd 100644
--- a/examples-testing/examples/webgpu_tsl_halftone.ts
+++ b/examples-testing/examples/webgpu_tsl_halftone.ts
@@ -6,7 +6,36 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -21307,7 +21410,7 @@ index 682e1df6..6aef3f0d 100644
renderer.render(scene, camera);
}
diff --git a/examples-testing/examples/webgpu_tsl_interoperability.ts b/examples-testing/examples/webgpu_tsl_interoperability.ts
-index e57c66ee..4ca0fc90 100644
+index e57c66eeb..4ca0fc90d 100644
--- a/examples-testing/examples/webgpu_tsl_interoperability.ts
+++ b/examples-testing/examples/webgpu_tsl_interoperability.ts
@@ -23,13 +23,13 @@ import WebGPU from 'three/addons/capabilities/WebGPU.js';
@@ -21345,7 +21448,7 @@ index e57c66ee..4ca0fc90 100644
gui.add(cellSizeUniform, 'value', 6, 50, 1).name('Cell Size');
gui.add(cellOffsetUniform, 'value', 0, 1, 0.1).name('Cell Offset');
diff --git a/examples-testing/examples/webgpu_tsl_procedural_terrain.ts b/examples-testing/examples/webgpu_tsl_procedural_terrain.ts
-index 5630137b..ebffc04e 100644
+index 5630137b8..ebffc04e0 100644
--- a/examples-testing/examples/webgpu_tsl_procedural_terrain.ts
+++ b/examples-testing/examples/webgpu_tsl_procedural_terrain.ts
@@ -22,7 +22,26 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -21431,7 +21534,7 @@ index 5630137b..ebffc04e 100644
drag.worldCoords.copy(intersect.point);
}
diff --git a/examples-testing/examples/webgpu_tsl_raging_sea.ts b/examples-testing/examples/webgpu_tsl_raging_sea.ts
-index cb513d07..b403ba07 100644
+index cb513d075..b403ba076 100644
--- a/examples-testing/examples/webgpu_tsl_raging_sea.ts
+++ b/examples-testing/examples/webgpu_tsl_raging_sea.ts
@@ -19,7 +19,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -21462,7 +21565,7 @@ index cb513d07..b403ba07 100644
gui.addColor({ color: material.color.getHex(THREE.SRGBColorSpace) }, 'color')
.name('color')
diff --git a/examples-testing/examples/webgpu_tsl_vfx_flames.ts b/examples-testing/examples/webgpu_tsl_vfx_flames.ts
-index f1e42344..34df22c9 100644
+index f1e423444..34df22c9f 100644
--- a/examples-testing/examples/webgpu_tsl_vfx_flames.ts
+++ b/examples-testing/examples/webgpu_tsl_vfx_flames.ts
@@ -20,7 +20,15 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -21497,7 +21600,7 @@ index f1e42344..34df22c9 100644
gradient.colors = ['#090033', '#5f1f93', '#e02e96', '#ffbd80', '#fff0db'];
diff --git a/examples-testing/examples/webgpu_tsl_vfx_linkedparticles.ts b/examples-testing/examples/webgpu_tsl_vfx_linkedparticles.ts
-index e220c164..f9b0a23f 100644
+index e220c164b..f9b0a23f4 100644
--- a/examples-testing/examples/webgpu_tsl_vfx_linkedparticles.ts
+++ b/examples-testing/examples/webgpu_tsl_vfx_linkedparticles.ts
@@ -37,10 +37,16 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -21548,7 +21651,7 @@ index e220c164..f9b0a23f 100644
screenPointer.y = -(e.clientY / window.innerHeight) * 2 + 1;
}
diff --git a/examples-testing/examples/webgpu_tsl_vfx_tornado.ts b/examples-testing/examples/webgpu_tsl_vfx_tornado.ts
-index 625a9d20..0509e361 100644
+index 625a9d209..0509e361d 100644
--- a/examples-testing/examples/webgpu_tsl_vfx_tornado.ts
+++ b/examples-testing/examples/webgpu_tsl_vfx_tornado.ts
@@ -25,7 +25,11 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -21648,7 +21751,7 @@ index 625a9d20..0509e361 100644
gui.addColor({ color: emissiveColor.value.getHexString(THREE.SRGBColorSpace) }, 'color')
.onChange(value => emissiveColor.value.set(value))
diff --git a/examples-testing/examples/webgpu_tsl_wood.ts b/examples-testing/examples/webgpu_tsl_wood.ts
-index 5a4e0650..f42fd5a7 100644
+index 5a4e06502..f42fd5a76 100644
--- a/examples-testing/examples/webgpu_tsl_wood.ts
+++ b/examples-testing/examples/webgpu_tsl_wood.ts
@@ -1,22 +1,30 @@
@@ -21801,7 +21904,7 @@ index 5a4e0650..f42fd5a7 100644
createLabel('custom', font, text_mat, getGridPosition(Math.round(WoodGenuses.length / 2 - 1), 5));
diff --git a/examples-testing/examples/webgpu_video_panorama.ts b/examples-testing/examples/webgpu_video_panorama.ts
-index f52b15ff..78885bec 100644
+index f52b15ffe..78885bec4 100644
--- a/examples-testing/examples/webgpu_video_panorama.ts
+++ b/examples-testing/examples/webgpu_video_panorama.ts
@@ -1,6 +1,6 @@
@@ -21849,7 +21952,7 @@ index f52b15ff..78885bec 100644
lon = (onPointerDownPointerX - event.clientX) * 0.1 + onPointerDownLon;
lat = (onPointerDownPointerY - event.clientY) * 0.1 + onPointerDownLat;
diff --git a/examples-testing/examples/webgpu_volume_caustics.ts b/examples-testing/examples/webgpu_volume_caustics.ts
-index 0c85390d..23cd2ae0 100644
+index 0c85390dd..23cd2ae09 100644
--- a/examples-testing/examples/webgpu_volume_caustics.ts
+++ b/examples-testing/examples/webgpu_volume_caustics.ts
@@ -31,9 +31,9 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -21899,7 +22002,7 @@ index 0c85390d..23cd2ae0 100644
let density = sampleGrain(1);
diff --git a/examples-testing/examples/webgpu_volume_cloud.ts b/examples-testing/examples/webgpu_volume_cloud.ts
-index 1d46c354..5f4fdfa3 100644
+index 1d46c3543..5f4fdfa36 100644
--- a/examples-testing/examples/webgpu_volume_cloud.ts
+++ b/examples-testing/examples/webgpu_volume_cloud.ts
@@ -8,8 +8,8 @@ import { ImprovedNoise } from 'three/addons/math/ImprovedNoise.js';
@@ -21953,7 +22056,7 @@ index 1d46c354..5f4fdfa3 100644
gui.add(opacity, 'value', 0, 1, 0.01).name('opacity');
gui.add(range, 'value', 0, 1, 0.01).name('range');
diff --git a/examples-testing/examples/webgpu_volume_lighting.ts b/examples-testing/examples/webgpu_volume_lighting.ts
-index 38099c6a..c9e0380f 100644
+index 38099c6a5..c9e0380fc 100644
--- a/examples-testing/examples/webgpu_volume_lighting.ts
+++ b/examples-testing/examples/webgpu_volume_lighting.ts
@@ -10,9 +10,9 @@ import { TeapotGeometry } from 'three/addons/geometries/TeapotGeometry.js';
@@ -21994,7 +22097,7 @@ index 38099c6a..c9e0380f 100644
const rayMarching = gui.addFolder('Ray Marching');
rayMarching.add(params, 'resolution', 0.1, 1).onChange(resolution => {
diff --git a/examples-testing/examples/webgpu_volume_lighting_rectarea.ts b/examples-testing/examples/webgpu_volume_lighting_rectarea.ts
-index 47c82841..73084cc4 100644
+index 47c82841c..73084cc4c 100644
--- a/examples-testing/examples/webgpu_volume_lighting_rectarea.ts
+++ b/examples-testing/examples/webgpu_volume_lighting_rectarea.ts
@@ -10,11 +10,11 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -22048,7 +22151,7 @@ index 47c82841..73084cc4 100644
const rayMarching = gui.addFolder('Ray Marching');
rayMarching.add(params, 'resolution', 0.1, 1).onChange(resolution => {
diff --git a/examples-testing/examples/webgpu_volume_lighting_traa.ts b/examples-testing/examples/webgpu_volume_lighting_traa.ts
-index c5cc55e7..7ae7f370 100644
+index c5cc55e71..7ae7f3702 100644
--- a/examples-testing/examples/webgpu_volume_lighting_traa.ts
+++ b/examples-testing/examples/webgpu_volume_lighting_traa.ts
@@ -26,7 +26,7 @@ import { TeapotGeometry } from 'three/addons/geometries/TeapotGeometry.js';
@@ -22105,7 +22208,7 @@ index c5cc55e7..7ae7f370 100644
gui.add(params, 'animated');
gui.add(params, 'traa').name('TRAA').onChange(updatePostProcessing);
diff --git a/examples-testing/examples/webgpu_volume_perlin.ts b/examples-testing/examples/webgpu_volume_perlin.ts
-index fb6f2bbd..50d3e036 100644
+index fb6f2bbd5..50d3e0361 100644
--- a/examples-testing/examples/webgpu_volume_perlin.ts
+++ b/examples-testing/examples/webgpu_volume_perlin.ts
@@ -8,8 +8,8 @@ import { ImprovedNoise } from 'three/addons/math/ImprovedNoise.js';
@@ -22178,7 +22281,7 @@ index fb6f2bbd..50d3e036 100644
gui.add(steps, 'value', 0, 300, 1).name('steps');
diff --git a/examples-testing/examples/webgpu_water.ts b/examples-testing/examples/webgpu_water.ts
-index 88a9e5f6..7d8c8b73 100644
+index 88a9e5f60..7d8c8b731 100644
--- a/examples-testing/examples/webgpu_water.ts
+++ b/examples-testing/examples/webgpu_water.ts
@@ -9,11 +9,16 @@ import { Inspector } from 'three/addons/inspector/Inspector.js';
@@ -22212,7 +22315,7 @@ index 88a9e5f6..7d8c8b73 100644
gui.addColor(params, 'color').onChange(function (value) {
waterNode.color.value.set(value);
diff --git a/examples-testing/examples/webgpu_xr_cubes.ts b/examples-testing/examples/webgpu_xr_cubes.ts
-index d164eb84..71b4dcc3 100644
+index d164eb843..71b4dcc37 100644
--- a/examples-testing/examples/webgpu_xr_cubes.ts
+++ b/examples-testing/examples/webgpu_xr_cubes.ts
@@ -4,16 +4,20 @@ import { BoxLineGeometry } from 'three/addons/geometries/BoxLineGeometry.js';
@@ -22291,7 +22394,7 @@ index d164eb84..71b4dcc3 100644
INTERSECTED.material.emissive.setHex(0xff0000);
}
diff --git a/examples-testing/examples/webgpu_xr_native_layers.ts b/examples-testing/examples/webgpu_xr_native_layers.ts
-index cd7f3fb2..70371da6 100644
+index cd7f3fb2d..70371da60 100644
--- a/examples-testing/examples/webgpu_xr_native_layers.ts
+++ b/examples-testing/examples/webgpu_xr_native_layers.ts
@@ -15,11 +15,11 @@ import {
@@ -22573,7 +22676,7 @@ index cd7f3fb2..70371da6 100644
//
const delta = timer.getDelta() * 0.8;
diff --git a/examples-testing/examples/webgpu_xr_rollercoaster.ts b/examples-testing/examples/webgpu_xr_rollercoaster.ts
-index 6035d068..39b9b8fc 100644
+index 6035d0687..39b9b8fce 100644
--- a/examples-testing/examples/webgpu_xr_rollercoaster.ts
+++ b/examples-testing/examples/webgpu_xr_rollercoaster.ts
@@ -9,7 +9,7 @@ import {
@@ -22613,7 +22716,7 @@ index 6035d068..39b9b8fc 100644
//
diff --git a/examples-testing/examples/webxr_ar_cones.ts b/examples-testing/examples/webxr_ar_cones.ts
-index 95eb3439..0e641cdb 100644
+index 95eb34393..0e641cdb3 100644
--- a/examples-testing/examples/webxr_ar_cones.ts
+++ b/examples-testing/examples/webxr_ar_cones.ts
@@ -1,8 +1,8 @@
@@ -22628,7 +22731,7 @@ index 95eb3439..0e641cdb 100644
init();
diff --git a/examples-testing/examples/webxr_ar_hittest.ts b/examples-testing/examples/webxr_ar_hittest.ts
-index 009b4b97..ffb71130 100644
+index 009b4b976..ffb711306 100644
--- a/examples-testing/examples/webxr_ar_hittest.ts
+++ b/examples-testing/examples/webxr_ar_hittest.ts
@@ -1,13 +1,13 @@
@@ -22678,7 +22781,7 @@ index 009b4b97..ffb71130 100644
reticle.visible = false;
}
diff --git a/examples-testing/examples/webxr_ar_lighting.ts b/examples-testing/examples/webxr_ar_lighting.ts
-index 10f49f0b..00e35fbe 100644
+index 10f49f0bf..00e35fbef 100644
--- a/examples-testing/examples/webxr_ar_lighting.ts
+++ b/examples-testing/examples/webxr_ar_lighting.ts
@@ -3,9 +3,9 @@ import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
@@ -22695,7 +22798,7 @@ index 10f49f0b..00e35fbe 100644
init();
diff --git a/examples-testing/examples/webxr_vr_handinput.ts b/examples-testing/examples/webxr_vr_handinput.ts
-index d746e458..af438f0f 100644
+index d746e4582..af438f0f6 100644
--- a/examples-testing/examples/webxr_vr_handinput.ts
+++ b/examples-testing/examples/webxr_vr_handinput.ts
@@ -4,13 +4,13 @@ import { VRButton } from 'three/addons/webxr/VRButton.js';
@@ -22719,7 +22822,7 @@ index d746e458..af438f0f 100644
init();
diff --git a/examples-testing/examples/webxr_vr_panorama.ts b/examples-testing/examples/webxr_vr_panorama.ts
-index 535e1c93..ab2e4ee0 100644
+index 535e1c937..ab2e4ee0d 100644
--- a/examples-testing/examples/webxr_vr_panorama.ts
+++ b/examples-testing/examples/webxr_vr_panorama.ts
@@ -1,9 +1,9 @@
@@ -22756,7 +22859,7 @@ index 535e1c93..ab2e4ee0 100644
canvas.width = tileWidth;
context.drawImage(imageObj, tileWidth * i, 0, tileWidth, tileWidth, 0, 0, tileWidth, tileWidth);
diff --git a/examples-testing/examples/webxr_vr_panorama_depth.ts b/examples-testing/examples/webxr_vr_panorama_depth.ts
-index ea3d7619..a195db61 100644
+index ea3d76199..a195db610 100644
--- a/examples-testing/examples/webxr_vr_panorama_depth.ts
+++ b/examples-testing/examples/webxr_vr_panorama_depth.ts
@@ -1,12 +1,16 @@
@@ -22779,7 +22882,7 @@ index ea3d7619..a195db61 100644
timer = new THREE.Timer();
timer.connect(document);
diff --git a/examples-testing/examples/webxr_vr_rollercoaster.ts b/examples-testing/examples/webxr_vr_rollercoaster.ts
-index b8c35a9e..ee5f02da 100644
+index b8c35a9e3..ee5f02daf 100644
--- a/examples-testing/examples/webxr_vr_rollercoaster.ts
+++ b/examples-testing/examples/webxr_vr_rollercoaster.ts
@@ -9,7 +9,7 @@ import {
@@ -22819,7 +22922,7 @@ index b8c35a9e..ee5f02da 100644
//
diff --git a/examples-testing/examples/webxr_vr_sandbox.ts b/examples-testing/examples/webxr_vr_sandbox.ts
-index 19108d58..794121e2 100644
+index 19108d589..794121e2b 100644
--- a/examples-testing/examples/webxr_vr_sandbox.ts
+++ b/examples-testing/examples/webxr_vr_sandbox.ts
@@ -11,9 +11,9 @@ import { XRControllerModelFactory } from 'three/addons/webxr/XRControllerModelFa
@@ -22856,7 +22959,7 @@ index 19108d58..794121e2 100644
+ update(): void;
}
diff --git a/examples-testing/examples/webxr_vr_video.ts b/examples-testing/examples/webxr_vr_video.ts
-index 50a99041..b5925eb1 100644
+index 50a990412..b5925eb18 100644
--- a/examples-testing/examples/webxr_vr_video.ts
+++ b/examples-testing/examples/webxr_vr_video.ts
@@ -1,12 +1,12 @@
@@ -22884,7 +22987,7 @@ index 50a99041..b5925eb1 100644
const texture = new THREE.VideoTexture(video);
diff --git a/examples-testing/examples/webxr_xr_controls_transform.ts b/examples-testing/examples/webxr_xr_controls_transform.ts
-index cd9b1290..3edf26cf 100644
+index cd9b1290d..3edf26cf8 100644
--- a/examples-testing/examples/webxr_xr_controls_transform.ts
+++ b/examples-testing/examples/webxr_xr_controls_transform.ts
@@ -4,15 +4,15 @@ import { XRButton } from 'three/addons/webxr/XRButton.js';
@@ -22928,7 +23031,7 @@ index cd9b1290..3edf26cf 100644
if (controller.userData.active === false) return;
diff --git a/examples-testing/examples/webxr_xr_dragging_custom_depth.ts b/examples-testing/examples/webxr_xr_dragging_custom_depth.ts
-index 2cd50ba4..b97f3eee 100644
+index 2cd50ba4c..b97f3eee2 100644
--- a/examples-testing/examples/webxr_xr_dragging_custom_depth.ts
+++ b/examples-testing/examples/webxr_xr_dragging_custom_depth.ts
@@ -3,18 +3,18 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
diff --git a/examples-testing/package.json b/examples-testing/package.json
index 1738698c6..0560b0da7 100644
--- a/examples-testing/package.json
+++ b/examples-testing/package.json
@@ -15,8 +15,10 @@
"dependencies": {
"@needle-tools/gltf-progressive": "~3.2.0",
"@needle-tools/three-animation-pointer": "~1.0.7",
+ "@perplexdotgg/bounce": "~1.8.0",
"@types/three": "file:../types/three",
"3d-tiles-renderer": "~0.4.21",
+ "monomorph": "^2.3.1",
"postprocessing": "~6.38.3",
"prettier": "^3.8.1",
"stats-gl": "^3.8.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cb32b5551..a2bd22ae0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -59,9 +59,15 @@ importers:
'@needle-tools/three-animation-pointer':
specifier: ~1.0.7
version: 1.0.7(three@0.183.1)
+ '@perplexdotgg/bounce':
+ specifier: ~1.8.0
+ version: 1.8.0
'@types/three':
specifier: file:../types/three
version: link:../types/three
+ monomorph:
+ specifier: ^2.3.1
+ version: 2.3.1
postprocessing:
specifier: ~6.38.3
version: 6.38.3(three@0.183.1)
@@ -621,6 +627,9 @@ packages:
'@octokit/types@13.10.0':
resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==}
+ '@perplexdotgg/bounce@1.8.0':
+ resolution: {integrity: sha512-UZIuTVGXhxgxMQsF1ekeWAR8c0z3qFNHrEdRIWe7Bmh34tN+RYrMaPmIwONd+WHOA78YosARb13gjKF5bgiT6Q==}
+
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
@@ -1787,6 +1796,9 @@ packages:
resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==}
engines: {node: '>= 18'}
+ monomorph@2.3.1:
+ resolution: {integrity: sha512-kACbfiM0x7viZ00Ofgwy9HmElqqqY21w0S45hbH+W6BQUFhvs9mHIAmKEgBKo5hF5w4OUgRtABRgftDDVc5zFw==}
+
mrmime@2.0.1:
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
engines: {node: '>=10'}
@@ -2999,6 +3011,10 @@ snapshots:
dependencies:
'@octokit/openapi-types': 24.2.0
+ '@perplexdotgg/bounce@1.8.0':
+ dependencies:
+ monomorph: 2.3.1
+
'@polka/url@1.0.0-next.29': {}
'@rollup/rollup-android-arm-eabi@4.58.0':
@@ -4305,6 +4321,8 @@ snapshots:
dependencies:
minipass: 7.1.2
+ monomorph@2.3.1: {}
+
mrmime@2.0.1: {}
ms@2.1.3: {}
diff --git a/renovate.json b/renovate.json
index 38ff676a1..7a72fe212 100644
--- a/renovate.json
+++ b/renovate.json
@@ -40,6 +40,11 @@
"matchUpdateTypes": ["major", "minor"],
"enabled": false
},
+ {
+ "matchPackageNames": ["@perplexdotgg/bounce"],
+ "matchUpdateTypes": ["major", "minor"],
+ "enabled": false
+ },
{
"matchPackageNames": ["3d-tiles-renderer"],
"matchUpdateTypes": ["major", "minor"],
diff --git a/three.js b/three.js
index 112ba9b71..85f77d7f2 160000
--- a/three.js
+++ b/three.js
@@ -1 +1 @@
-Subproject commit 112ba9b71c29e984e339dd95ab42584b43029940
+Subproject commit 85f77d7f2ad12ce724aa5624facb11b23233281d
diff --git a/types/three/examples/jsm/loaders/ColladaLoader.d.ts b/types/three/examples/jsm/loaders/ColladaLoader.d.ts
index 70efc74fe..42117ccbb 100644
--- a/types/three/examples/jsm/loaders/ColladaLoader.d.ts
+++ b/types/three/examples/jsm/loaders/ColladaLoader.d.ts
@@ -21,6 +21,7 @@ export interface ColladaLibrary {
kinematicsModels: Record;
physicsModels: Record;
kinematicsScenes: Record;
+ joints: Record;
}
export interface Collada {