diff --git a/examples-testing/changes.patch b/examples-testing/changes.patch
index 5fd7b4098..b8d257876 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 48a2d1f0..e7260210 100644
+index 48a2d1f..e726021 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 48a2d1f0..e7260210 100644
scene.add(moon);
diff --git a/examples-testing/examples/css3d_molecules.ts b/examples-testing/examples/css3d_molecules.ts
-index 53847260..f08bb34a 100644
+index 5384726..f08bb34 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';
@@ -155,7 +155,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 4aabbed..67e41fd 100644
--- a/examples-testing/examples/css3d_orthographic.ts
+++ b/examples-testing/examples/css3d_orthographic.ts
@@ -2,11 +2,11 @@ import * as THREE from 'three';
@@ -257,7 +257,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 e3a33f7..516df46 100644
--- a/examples-testing/examples/css3d_periodictable.ts
+++ b/examples-testing/examples/css3d_periodictable.ts
@@ -597,11 +597,16 @@ const table = [
@@ -362,7 +362,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 1088b84..02f1fa7 100644
--- a/examples-testing/examples/css3d_sandbox.ts
+++ b/examples-testing/examples/css3d_sandbox.ts
@@ -2,13 +2,13 @@ import * as THREE from 'three';
@@ -463,7 +463,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 dfe24e79..93f2c07b 100644
+index dfe24e7..93f2c07 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';
@@ -511,7 +511,7 @@ index dfe24e79..93f2c07b 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 62652f8..3dcc2f1 100644
--- a/examples-testing/examples/css3d_youtube.ts
+++ b/examples-testing/examples/css3d_youtube.ts
@@ -3,10 +3,10 @@ import * as THREE from 'three';
@@ -562,7 +562,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 d41f9161..306ccdc5 100644
+index d41f916..306ccdc 100644
--- a/examples-testing/examples/games_fps.ts
+++ b/examples-testing/examples/games_fps.ts
@@ -39,7 +39,7 @@ directionalLight.shadow.radius = 4;
@@ -664,7 +664,7 @@ index d41f9161..306ccdc5 100644
}
});
diff --git a/examples-testing/examples/misc_animation_groups.ts b/examples-testing/examples/misc_animation_groups.ts
-index 33fc4199..e5cc63bc 100644
+index 33fc419..e5cc63b 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';
@@ -679,7 +679,7 @@ index 33fc4199..e5cc63bc 100644
init();
diff --git a/examples-testing/examples/misc_animation_keys.ts b/examples-testing/examples/misc_animation_keys.ts
-index e2f141f9..a2e43b58 100644
+index e2f141f..a2e43b5 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';
@@ -706,7 +706,7 @@ index e2f141f9..a2e43b58 100644
scene.add(mesh);
diff --git a/examples-testing/examples/misc_boxselection.ts b/examples-testing/examples/misc_boxselection.ts
-index e7079c40..89676cd4 100644
+index e7079c4..89676cd 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';
@@ -763,7 +763,7 @@ index e7079c40..89676cd4 100644
}
});
diff --git a/examples-testing/examples/misc_controls_arcball.ts b/examples-testing/examples/misc_controls_arcball.ts
-index fbef3318..be69ca7b 100644
+index fbef331..be69ca7 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' };
@@ -829,7 +829,7 @@ index fbef3318..be69ca7b 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 eb7e7ca0..4d327e38 100644
+index eb7e7ca..4d327e3 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';
@@ -881,7 +881,7 @@ index eb7e7ca0..4d327e38 100644
}
diff --git a/examples-testing/examples/misc_controls_fly.ts b/examples-testing/examples/misc_controls_fly.ts
-index 5c37e20a..acb42943 100644
+index 5c37e20..acb4294 100644
--- a/examples-testing/examples/misc_controls_fly.ts
+++ b/examples-testing/examples/misc_controls_fly.ts
@@ -19,11 +19,15 @@ const MARGIN = 0;
@@ -932,7 +932,7 @@ index 5c37e20a..acb42943 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 2f52190c..3a96c544 100644
+index 2f52190..3a96c54 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';
@@ -945,7 +945,7 @@ index 2f52190c..3a96c544 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 186e216c..0f8b9b11 100644
+index 186e216..0f8b9b1 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';
@@ -958,7 +958,7 @@ index 186e216c..0f8b9b11 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 66b06167..b9e41acc 100644
+index 66b0616..b9e41ac 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';
@@ -1028,7 +1028,7 @@ index 66b06167..b9e41acc 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 b6479e9f..2e8f3dad 100644
+index b6479e9..2e8f3da 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';
@@ -1055,7 +1055,7 @@ index b6479e9f..2e8f3dad 100644
controls.rotateSpeed = 1.0;
diff --git a/examples-testing/examples/misc_controls_transform.ts b/examples-testing/examples/misc_controls_transform.ts
-index 9d14bf7e..11cc8b14 100644
+index 9d14bf7..11cc8b1 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';
@@ -1081,7 +1081,7 @@ index 9d14bf7e..11cc8b14 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 40a62fb..cb9d3f5 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';
@@ -1113,7 +1113,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 c239a65f..1b774b55 100644
+index c239a65..1b774b5 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 '
@@ -1142,7 +1142,7 @@ index c239a65f..1b774b55 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 e4172b85..3ceb9601 100644
+index e4172b8..3ceb960 100644
--- a/examples-testing/examples/misc_exporter_gltf.ts
+++ b/examples-testing/examples/misc_exporter_gltf.ts
@@ -6,7 +6,7 @@ import { KTX2Loader } from 'three/addons/loaders/KTX2Loader.js';
@@ -1206,7 +1206,7 @@ index e4172b85..3ceb9601 100644
object.position.set(400, 0, 200);
diff --git a/examples-testing/examples/misc_exporter_obj.ts b/examples-testing/examples/misc_exporter_obj.ts
-index 025034da..73638fff 100644
+index 025034d..73638ff 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';
@@ -1251,7 +1251,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 b7e3246..c168210 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';
@@ -1288,7 +1288,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 ff6d6e2..105aeb0 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';
@@ -1325,7 +1325,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 d2c4fdfa..a751a6eb 100644
+index d2c4fdf..a751a6e 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';
@@ -1365,7 +1365,7 @@ index d2c4fdfa..a751a6eb 100644
}
diff --git a/examples-testing/examples/misc_lookat.ts b/examples-testing/examples/misc_lookat.ts
-index 280b6e2d..be88f897 100644
+index 280b6e2..be88f89 100644
--- a/examples-testing/examples/misc_lookat.ts
+++ b/examples-testing/examples/misc_lookat.ts
@@ -2,9 +2,9 @@ import * as THREE from 'three';
@@ -1390,7 +1390,7 @@ index 280b6e2d..be88f897 100644
mouseY = (event.clientY - windowHalfY) * 10;
}
diff --git a/examples-testing/examples/misc_uv_tests.ts b/examples-testing/examples/misc_uv_tests.ts
-index 4f782d45..0759cfca 100644
+index 4f782d4..0759cfc 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';
@@ -1403,7 +1403,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 265c254c..3a6ae139 100644
+index 265c254..3a6ae13 100644
--- a/examples-testing/examples/physics_ammo_instancing.ts
+++ b/examples-testing/examples/physics_ammo_instancing.ts
@@ -1,12 +1,12 @@
@@ -1424,7 +1424,7 @@ index 265c254c..3a6ae139 100644
init();
diff --git a/examples-testing/examples/physics_jolt_instancing.ts b/examples-testing/examples/physics_jolt_instancing.ts
-index 022263c0..3df667b6 100644
+index 022263c..3df667b 100644
--- a/examples-testing/examples/physics_jolt_instancing.ts
+++ b/examples-testing/examples/physics_jolt_instancing.ts
@@ -1,12 +1,12 @@
@@ -1445,7 +1445,7 @@ index 022263c0..3df667b6 100644
init();
diff --git a/examples-testing/examples/physics_rapier_instancing.ts b/examples-testing/examples/physics_rapier_instancing.ts
-index f23cf766..859a1d59 100644
+index f23cf76..859a1d5 100644
--- a/examples-testing/examples/physics_rapier_instancing.ts
+++ b/examples-testing/examples/physics_rapier_instancing.ts
@@ -1,12 +1,12 @@
@@ -1466,7 +1466,7 @@ index f23cf766..859a1d59 100644
init();
diff --git a/examples-testing/examples/svg_lines.ts b/examples-testing/examples/svg_lines.ts
-index 99b74c40..65aaf28d 100644
+index 99b74c4..65aaf28 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';
@@ -1479,7 +1479,7 @@ index 99b74c40..65aaf28d 100644
init();
animate();
diff --git a/examples-testing/examples/svg_sandbox.ts b/examples-testing/examples/svg_sandbox.ts
-index e6be8386..faea9a7a 100644
+index e6be838..faea9a7 100644
--- a/examples-testing/examples/svg_sandbox.ts
+++ b/examples-testing/examples/svg_sandbox.ts
@@ -6,9 +6,9 @@ import { SVGRenderer, SVGObject } from 'three/addons/renderers/SVGRenderer.js';
@@ -1564,7 +1564,7 @@ index e6be8386..faea9a7a 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 7baaa88..e133c2c 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';
@@ -1626,7 +1626,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 d67d0d55..21c7a0bf 100644
+index d67d0d5..21c7a0b 100644
--- a/examples-testing/examples/webaudio_sandbox.ts
+++ b/examples-testing/examples/webaudio_sandbox.ts
@@ -4,19 +4,23 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -1730,7 +1730,7 @@ index d67d0d55..21c7a0bf 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 9e17bcbc..475113b9 100644
+index 9e17bcb..475113b 100644
--- a/examples-testing/examples/webaudio_timing.ts
+++ b/examples-testing/examples/webaudio_timing.ts
@@ -2,22 +2,22 @@ import * as THREE from 'three';
@@ -1771,7 +1771,7 @@ index 9e17bcbc..475113b9 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 a3f58cb..0bad866 100644
--- a/examples-testing/examples/webaudio_visualizer.ts
+++ b/examples-testing/examples/webaudio_visualizer.ts
@@ -1,8 +1,13 @@
@@ -1817,7 +1817,7 @@ index a3f58cb3..0bad866f 100644
const geometry = new THREE.PlaneGeometry(1, 1);
diff --git a/examples-testing/examples/webgl2_buffergeometry_attributes_integer.ts b/examples-testing/examples/webgl2_buffergeometry_attributes_integer.ts
-index 96926c2c..76e6c251 100644
+index 96926c2..76e6c25 100644
--- a/examples-testing/examples/webgl2_buffergeometry_attributes_integer.ts
+++ b/examples-testing/examples/webgl2_buffergeometry_attributes_integer.ts
@@ -1,6 +1,6 @@
@@ -1849,7 +1849,7 @@ index 96926c2c..76e6c251 100644
glslVersion: THREE.GLSL3,
});
diff --git a/examples-testing/examples/webgl2_buffergeometry_attributes_none.ts b/examples-testing/examples/webgl2_buffergeometry_attributes_none.ts
-index a1424e87..f7fcf29f 100644
+index a1424e8..f7fcf29 100644
--- a/examples-testing/examples/webgl2_buffergeometry_attributes_none.ts
+++ b/examples-testing/examples/webgl2_buffergeometry_attributes_none.ts
@@ -1,6 +1,6 @@
@@ -1881,7 +1881,7 @@ index a1424e87..f7fcf29f 100644
mesh.rotation.y = (time / 1000.0) * 0.5;
diff --git a/examples-testing/examples/webgl2_clipculldistance.ts b/examples-testing/examples/webgl2_clipculldistance.ts
-index a5fb54d4..0165880a 100644
+index a5fb54d..0165880 100644
--- a/examples-testing/examples/webgl2_clipculldistance.ts
+++ b/examples-testing/examples/webgl2_clipculldistance.ts
@@ -2,9 +2,14 @@ import * as THREE from 'three';
@@ -1922,7 +1922,7 @@ index a5fb54d4..0165880a 100644
transparent: true,
vertexColors: true,
diff --git a/examples-testing/examples/webgl2_materials_texture3d.ts b/examples-testing/examples/webgl2_materials_texture3d.ts
-index 977dbadb..fb1460ca 100644
+index 977dbad..fb1460c 100644
--- a/examples-testing/examples/webgl2_materials_texture3d.ts
+++ b/examples-testing/examples/webgl2_materials_texture3d.ts
@@ -5,7 +5,15 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -1952,7 +1952,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/webgl2_materials_texture3d_partialupdate.ts b/examples-testing/examples/webgl2_materials_texture3d_partialupdate.ts
-index 1ad6d264..10b32582 100644
+index 1ad6d26..10b3258 100644
--- a/examples-testing/examples/webgl2_materials_texture3d_partialupdate.ts
+++ b/examples-testing/examples/webgl2_materials_texture3d_partialupdate.ts
@@ -6,14 +6,14 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -2005,7 +2005,7 @@ index 1ad6d264..10b32582 100644
renderer.render(scene, camera);
}
diff --git a/examples-testing/examples/webgl2_multiple_rendertargets.ts b/examples-testing/examples/webgl2_multiple_rendertargets.ts
-index 86708082..f63b7de6 100644
+index 8670808..f63b7de 100644
--- a/examples-testing/examples/webgl2_multiple_rendertargets.ts
+++ b/examples-testing/examples/webgl2_multiple_rendertargets.ts
@@ -3,9 +3,9 @@ import * as THREE from 'three';
@@ -2055,7 +2055,7 @@ index 86708082..f63b7de6 100644
});
diff --git a/examples-testing/examples/webgl2_multisampled_renderbuffers.ts b/examples-testing/examples/webgl2_multisampled_renderbuffers.ts
-index df84fb14..fc3da7a8 100644
+index df84fb1..fc3da7a 100644
--- a/examples-testing/examples/webgl2_multisampled_renderbuffers.ts
+++ b/examples-testing/examples/webgl2_multisampled_renderbuffers.ts
@@ -5,9 +5,9 @@ import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
@@ -2080,7 +2080,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/webgl2_texture2darray_compressed.ts b/examples-testing/examples/webgl2_texture2darray_compressed.ts
-index f263be70..bc8f8622 100644
+index f263be7..bc8f862 100644
--- a/examples-testing/examples/webgl2_texture2darray_compressed.ts
+++ b/examples-testing/examples/webgl2_texture2darray_compressed.ts
@@ -3,7 +3,12 @@ import * as THREE from 'three';
@@ -2109,7 +2109,7 @@ index f263be70..bc8f8622 100644
});
diff --git a/examples-testing/examples/webgl2_ubo.ts b/examples-testing/examples/webgl2_ubo.ts
-index 01064f11..814edd87 100644
+index 01064f1..814edd8 100644
--- a/examples-testing/examples/webgl2_ubo.ts
+++ b/examples-testing/examples/webgl2_ubo.ts
@@ -1,11 +1,11 @@
@@ -2158,7 +2158,7 @@ index 01064f11..814edd87 100644
child.rotation.y += delta * 0.3;
}
diff --git a/examples-testing/examples/webgl2_ubo_arrays.ts b/examples-testing/examples/webgl2_ubo_arrays.ts
-index d846e144..85bcff4c 100644
+index d846e14..85bcff4 100644
--- a/examples-testing/examples/webgl2_ubo_arrays.ts
+++ b/examples-testing/examples/webgl2_ubo_arrays.ts
@@ -4,11 +4,15 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -2210,7 +2210,7 @@ index d846e144..85bcff4c 100644
// Parameters for circular movement
const radius = 5; // Smaller radius for individual circular movements
diff --git a/examples-testing/examples/webgl2_volume_cloud.ts b/examples-testing/examples/webgl2_volume_cloud.ts
-index 77dd8de4..6414f1b4 100644
+index 77dd8de..6414f1b 100644
--- a/examples-testing/examples/webgl2_volume_cloud.ts
+++ b/examples-testing/examples/webgl2_volume_cloud.ts
@@ -4,8 +4,8 @@ import { ImprovedNoise } from 'three/addons/math/ImprovedNoise.js';
@@ -2247,7 +2247,7 @@ index 77dd8de4..6414f1b4 100644
renderer.render(scene, camera);
}
diff --git a/examples-testing/examples/webgl2_volume_instancing.ts b/examples-testing/examples/webgl2_volume_instancing.ts
-index bf90eeea..135869e2 100644
+index bf90eee..135869e 100644
--- a/examples-testing/examples/webgl2_volume_instancing.ts
+++ b/examples-testing/examples/webgl2_volume_instancing.ts
@@ -2,7 +2,11 @@ import * as THREE from 'three';
@@ -2273,7 +2273,7 @@ index bf90eeea..135869e2 100644
const transform = new THREE.Object3D();
diff --git a/examples-testing/examples/webgl2_volume_perlin.ts b/examples-testing/examples/webgl2_volume_perlin.ts
-index a98f9a68..5689cf91 100644
+index a98f9a6..5689cf9 100644
--- a/examples-testing/examples/webgl2_volume_perlin.ts
+++ b/examples-testing/examples/webgl2_volume_perlin.ts
@@ -4,8 +4,8 @@ import { ImprovedNoise } from 'three/addons/math/ImprovedNoise.js';
@@ -2297,7 +2297,7 @@ index a98f9a68..5689cf91 100644
renderer.render(scene, camera);
}
diff --git a/examples-testing/examples/webgl_animation_keyframes.ts b/examples-testing/examples/webgl_animation_keyframes.ts
-index c3acdc43..fef2f2e8 100644
+index c3acdc4..fef2f2e 100644
--- a/examples-testing/examples/webgl_animation_keyframes.ts
+++ b/examples-testing/examples/webgl_animation_keyframes.ts
@@ -8,10 +8,10 @@ import { RoomEnvironment } from 'three/addons/environments/RoomEnvironment.js';
@@ -2314,7 +2314,7 @@ index c3acdc43..fef2f2e8 100644
const stats = new Stats();
container.appendChild(stats.dom);
diff --git a/examples-testing/examples/webgl_animation_multiple.ts b/examples-testing/examples/webgl_animation_multiple.ts
-index 152c6506..ce388749 100644
+index 152c650..ce38874 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';
@@ -2364,7 +2364,7 @@ index 152c6506..ce388749 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 f05369aa..5e9ce7d0 100644
+index f05369a..5e9ce7d 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';
@@ -2466,7 +2466,7 @@ index f05369aa..5e9ce7d0 100644
activeAction = actions[name];
diff --git a/examples-testing/examples/webgl_buffergeometry.ts b/examples-testing/examples/webgl_buffergeometry.ts
-index 28b2c96a..6a802ab6 100644
+index 28b2c96..6a802ab 100644
--- a/examples-testing/examples/webgl_buffergeometry.ts
+++ b/examples-testing/examples/webgl_buffergeometry.ts
@@ -2,17 +2,17 @@ import * as THREE from 'three';
@@ -2503,7 +2503,7 @@ index 28b2c96a..6a802ab6 100644
geometry.setAttribute('position', new THREE.Float32BufferAttribute(positions, 3).onUpload(disposeArray));
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 0dffa65..96dd891 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';
@@ -2541,7 +2541,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..903b59ee 100644
+index 142ff43..903b59e 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';
@@ -2579,7 +2579,7 @@ index 142ff43b..903b59ee 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 aea462cf..f66207e2 100644
+index aea462c..f66207e 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';
@@ -2635,7 +2635,7 @@ index aea462cf..f66207e2 100644
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(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 a2f9f37..4ad49d3 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';
@@ -2651,7 +2651,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 a5b90ae6..df382735 100644
+index a5b90ae..df38273 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';
@@ -2693,7 +2693,7 @@ index a5b90ae6..df382735 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 2158dff..2c97fbd 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';
@@ -2722,7 +2722,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 bef2c26..c0887a8 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';
@@ -2746,7 +2746,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 1aaa5ca4..9d608594 100644
+index 1aaa5ca..9d60859 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';
@@ -2791,7 +2791,7 @@ index 1aaa5ca4..9d608594 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 5829608..8af0d6e 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';
@@ -2856,7 +2856,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 4547d9d..357c3dd 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';
@@ -2882,7 +2882,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 93eed99..60e05bc 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';
@@ -2907,7 +2907,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 5bc113d..225e220 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';
@@ -2949,7 +2949,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 d07176c..ce51386 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';
@@ -3006,7 +3006,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 0b8df6e..dbb23e0 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';
@@ -3031,7 +3031,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 f3d6636..4235f50 100644
--- a/examples-testing/examples/webgl_camera.ts
+++ b/examples-testing/examples/webgl_camera.ts
@@ -6,11 +6,11 @@ let SCREEN_WIDTH = window.innerWidth;
@@ -3061,7 +3061,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 8b10e27..11295c5 100644
--- a/examples-testing/examples/webgl_camera_array.ts
+++ b/examples-testing/examples/webgl_camera_array.ts
@@ -1,7 +1,7 @@
@@ -3084,7 +3084,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 f1d4400..7f149db 100644
--- a/examples-testing/examples/webgl_camera_logarithmicdepthbuffer.ts
+++ b/examples-testing/examples/webgl_camera_logarithmicdepthbuffer.ts
@@ -1,6 +1,6 @@
@@ -3261,7 +3261,7 @@ index f1d44000..7f149db1 100644
if (amount === 0) return;
const dir = amount / Math.abs(amount);
diff --git a/examples-testing/examples/webgl_clipping.ts b/examples-testing/examples/webgl_clipping.ts
-index cde10c7d..6ab3ba65 100644
+index cde10c7..6ab3ba6 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';
@@ -3299,7 +3299,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 614d710d..02b9ad88 100644
+index 614d710..02b9ad8 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';
@@ -3421,7 +3421,7 @@ index 614d710d..02b9ad88 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 5f45e45..cb3cbdf 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';
@@ -3454,7 +3454,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 ecb6b42b..6efdbf5a 100644
+index ecb6b42..6efdbf5 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';
@@ -3484,7 +3484,7 @@ index ecb6b42b..6efdbf5a 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..8725fd46 100644
+index 0dc8977..8725fd4 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';
@@ -3528,7 +3528,7 @@ index 0dc89774..8725fd46 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 3e2454e..d89a77d 100644
--- a/examples-testing/examples/webgl_custom_attributes_lines.ts
+++ b/examples-testing/examples/webgl_custom_attributes_lines.ts
@@ -1,20 +1,25 @@
@@ -3582,7 +3582,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 ae11298..9035134 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';
@@ -3618,7 +3618,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 edd158f..6f58c70 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';
@@ -3693,7 +3693,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 1b46a805..e5798e30 100644
+index 1b46a80..e5798e3 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';
@@ -3770,7 +3770,7 @@ index 1b46a805..e5798e30 100644
stats = new Stats();
diff --git a/examples-testing/examples/webgl_decals.ts b/examples-testing/examples/webgl_decals.ts
-index 23cdb4da..bbaddccc 100644
+index 23cdb4d..bbaddcc 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';
@@ -3852,7 +3852,7 @@ index 23cdb4da..bbaddccc 100644
specular: 0x111111,
map: map,
diff --git a/examples-testing/examples/webgl_effects_anaglyph.ts b/examples-testing/examples/webgl_effects_anaglyph.ts
-index 8415973d..d6a7d4c5 100644
+index 8415973..d6a7d4c 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';
@@ -3881,7 +3881,7 @@ index 8415973d..d6a7d4c5 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 a412bb7..751102d 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';
@@ -3901,7 +3901,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 90c8679..e03cb5d 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';
@@ -3930,7 +3930,7 @@ index 90c86797..e03cb5d7 100644
mouseY = (event.clientY - windowHalfY) / 100;
}
diff --git a/examples-testing/examples/webgl_effects_peppersghost.ts b/examples-testing/examples/webgl_effects_peppersghost.ts
-index 41dfb4b6..54f8aaa5 100644
+index 41dfb4b..54f8aaa 100644
--- a/examples-testing/examples/webgl_effects_peppersghost.ts
+++ b/examples-testing/examples/webgl_effects_peppersghost.ts
@@ -2,10 +2,10 @@ import * as THREE from 'three';
@@ -3948,7 +3948,7 @@ index 41dfb4b6..54f8aaa5 100644
init();
diff --git a/examples-testing/examples/webgl_effects_stereo.ts b/examples-testing/examples/webgl_effects_stereo.ts
-index dd2f61f9..6dab1b6e 100644
+index dd2f61f..6dab1b6 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';
@@ -3977,7 +3977,7 @@ index dd2f61f9..6dab1b6e 100644
mouseY = (event.clientY - windowHalfY) * 10;
}
diff --git a/examples-testing/examples/webgl_framebuffer_texture.ts b/examples-testing/examples/webgl_framebuffer_texture.ts
-index df4acc9d..636f9db9 100644
+index df4acc9..636f9db 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';
@@ -4013,7 +4013,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 a819541..46230b4 100644
--- a/examples-testing/examples/webgl_furnace_test.ts
+++ b/examples-testing/examples/webgl_furnace_test.ts
@@ -1,6 +1,6 @@
@@ -4045,7 +4045,7 @@ index a8195417..46230b4a 100644
render();
diff --git a/examples-testing/examples/webgl_geometries.ts b/examples-testing/examples/webgl_geometries.ts
-index 2b2d0261..d5820b37 100644
+index 2b2d026..d5820b3 100644
--- a/examples-testing/examples/webgl_geometries.ts
+++ b/examples-testing/examples/webgl_geometries.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
@@ -4067,7 +4067,7 @@ index 2b2d0261..d5820b37 100644
object.rotation.y = timer * 2.5;
}
diff --git a/examples-testing/examples/webgl_geometries_parametric.ts b/examples-testing/examples/webgl_geometries_parametric.ts
-index 29bf7ae2..30a6930c 100644
+index 29bf7ae..30a6930 100644
--- a/examples-testing/examples/webgl_geometries_parametric.ts
+++ b/examples-testing/examples/webgl_geometries_parametric.ts
@@ -6,12 +6,12 @@ import * as Curves from 'three/addons/curves/CurveExtras.js';
@@ -4095,7 +4095,7 @@ index 29bf7ae2..30a6930c 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 bc0bf517..68466b5b 100644
+index bc0bf51..68466b5 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';
@@ -4138,7 +4138,7 @@ index bc0bf517..68466b5b 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..382a9b7a 100644
+index 6b01385..382a9b7 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';
@@ -4186,7 +4186,7 @@ index 6b013852..382a9b7a 100644
map.needsUpdate = true;
}
diff --git a/examples-testing/examples/webgl_geometry_convex.ts b/examples-testing/examples/webgl_geometry_convex.ts
-index ade9cb80..87ea7be3 100644
+index ade9cb8..87ea7be 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';
@@ -4208,7 +4208,7 @@ index ade9cb80..87ea7be3 100644
// if normal and uv attributes are not removed, mergeVertices() can't consolidate indentical 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 572601a..136a314 100644
--- a/examples-testing/examples/webgl_geometry_cube.ts
+++ b/examples-testing/examples/webgl_geometry_cube.ts
@@ -1,7 +1,7 @@
@@ -4222,7 +4222,7 @@ index 572601ac..136a3141 100644
init();
diff --git a/examples-testing/examples/webgl_geometry_dynamic.ts b/examples-testing/examples/webgl_geometry_dynamic.ts
-index 06e858f5..28273563 100644
+index 06e858f..2827356 100644
--- a/examples-testing/examples/webgl_geometry_dynamic.ts
+++ b/examples-testing/examples/webgl_geometry_dynamic.ts
@@ -4,9 +4,13 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -4251,7 +4251,7 @@ index 06e858f5..28273563 100644
for (let i = 0; i < position.count; i++) {
diff --git a/examples-testing/examples/webgl_geometry_extrude_shapes.ts b/examples-testing/examples/webgl_geometry_extrude_shapes.ts
-index 7428aee3..386e8d57 100644
+index 7428aee..386e8d5 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';
@@ -4273,7 +4273,7 @@ index 7428aee3..386e8d57 100644
'three.js webgl - geometry extrude shapes';
document.body.appendChild(info);
diff --git a/examples-testing/examples/webgl_geometry_extrude_splines.ts b/examples-testing/examples/webgl_geometry_extrude_splines.ts
-index 0741083d..e988b543 100644
+index 0741083..e988b54 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';
@@ -4343,7 +4343,7 @@ index 0741083d..e988b543 100644
});
folderGeometry
diff --git a/examples-testing/examples/webgl_geometry_minecraft.ts b/examples-testing/examples/webgl_geometry_minecraft.ts
-index 765aa1e4..b15665d8 100644
+index 765aa1e..b15665d 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
@@ -4386,7 +4386,7 @@ index 765aa1e4..b15665d8 100644
}
diff --git a/examples-testing/examples/webgl_geometry_nurbs.ts b/examples-testing/examples/webgl_geometry_nurbs.ts
-index a603710b..74676e45 100644
+index a603710..74676e4 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';
@@ -4478,7 +4478,7 @@ index a603710b..74676e45 100644
document.removeEventListener('pointermove', onPointerMove);
diff --git a/examples-testing/examples/webgl_geometry_sdf.ts b/examples-testing/examples/webgl_geometry_sdf.ts
-index 01b047a2..9ce7da93 100644
+index 01b047a..9ce7da9 100644
--- a/examples-testing/examples/webgl_geometry_sdf.ts
+++ b/examples-testing/examples/webgl_geometry_sdf.ts
@@ -1,10 +1,19 @@
@@ -4513,7 +4513,7 @@ index 01b047a2..9ce7da93 100644
// Example SDF from https://www.shadertoy.com/view/MdXSWn -->
diff --git a/examples-testing/examples/webgl_geometry_shapes.ts b/examples-testing/examples/webgl_geometry_shapes.ts
-index f1d00f01..2042c353 100644
+index f1d00f0..2042c35 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';
@@ -4603,7 +4603,7 @@ index f1d00f01..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 4c884a55..b94b16db 100644
+index 4c884a5..b94b16d 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';
@@ -4650,7 +4650,7 @@ index 4c884a55..b94b16db 100644
init();
render();
diff --git a/examples-testing/examples/webgl_geometry_terrain.ts b/examples-testing/examples/webgl_geometry_terrain.ts
-index 8b6ed84e..22ec3f6a 100644
+index 8b6ed84..22ec3f6 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';
@@ -4712,7 +4712,7 @@ index 8b6ed84e..22ec3f6a 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 f1383c1..6e9cd02 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';
@@ -4802,7 +4802,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 831ebcd6..e5947329 100644
+index 831ebcd..e594732 100644
--- a/examples-testing/examples/webgl_geometry_text.ts
+++ b/examples-testing/examples/webgl_geometry_text.ts
@@ -1,23 +1,23 @@
@@ -4914,7 +4914,7 @@ index 831ebcd6..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 adfb6008..141b618f 100644
+index adfb600..141b618 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';
@@ -4957,7 +4957,7 @@ index adfb6008..141b618f 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 9a198325..e47d7b66 100644
+index 9a19832..e47d7b6 100644
--- a/examples-testing/examples/webgl_geometry_text_stroke.ts
+++ b/examples-testing/examples/webgl_geometry_text_stroke.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -5000,7 +5000,7 @@ index 9a198325..e47d7b66 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..5bb4ed25 100644
+index 20a5e0d..5bb4ed2 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';
@@ -5109,7 +5109,7 @@ index 20a5e0d9..5bb4ed25 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 3176b95a..df84fb25 100644
+index 3176b95..df84fb2 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';
@@ -5283,7 +5283,7 @@ index 3176b95a..df84fb25 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..158350b0 100644
+index 30444dd..158350b 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';
@@ -5373,7 +5373,7 @@ index 30444ddb..158350b0 100644
}
diff --git a/examples-testing/examples/webgl_gpgpu_water.ts b/examples-testing/examples/webgl_gpgpu_water.ts
-index 00c32f22..57e7c212 100644
+index 00c32f2..57e7c21 100644
--- a/examples-testing/examples/webgl_gpgpu_water.ts
+++ b/examples-testing/examples/webgl_gpgpu_water.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -5486,7 +5486,7 @@ index 00c32f22..57e7c212 100644
setMouseCoords(event.clientX, event.clientY);
diff --git a/examples-testing/examples/webgl_helpers.ts b/examples-testing/examples/webgl_helpers.ts
-index a8c3b977..09ad778d 100644
+index a8c3b97..09ad778 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';
@@ -5523,7 +5523,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 88562fc5..a8b1e2d0 100644
+index 88562fc..a8b1e2d 100644
--- a/examples-testing/examples/webgl_instancing_dynamic.ts
+++ b/examples-testing/examples/webgl_instancing_dynamic.ts
@@ -3,9 +3,9 @@ import * as THREE from 'three';
@@ -5539,7 +5539,7 @@ index 88562fc5..a8b1e2d0 100644
const count = Math.pow(amount, 3);
const dummy = new THREE.Object3D();
diff --git a/examples-testing/examples/webgl_instancing_morph.ts b/examples-testing/examples/webgl_instancing_morph.ts
-index 8686a75b..fb76abe3 100644
+index 8686a75..fb76abe 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';
@@ -5576,7 +5576,7 @@ index 8686a75b..fb76abe3 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 bf1deab..705d2cf 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';
@@ -5677,7 +5677,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 371ea07..861bc9c 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';
@@ -5723,7 +5723,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 fc3b9cc..d0904e8 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';
@@ -5796,7 +5796,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 1d6608b..c6aca94 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';
@@ -5856,7 +5856,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 adfcfdd..d26cee3 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';
@@ -5901,7 +5901,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 2644469c..d48fa232 100644
+index 2644469..d48fa23 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';
@@ -5959,7 +5959,7 @@ index 2644469c..d48fa232 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 520674b..4b083ff 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';
@@ -6005,7 +6005,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 b137c55..891e554 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';
@@ -6034,7 +6034,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 93113b86..e090fb6c 100644
+index 93113b8..e090fb6 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';
@@ -6115,7 +6115,7 @@ index 93113b86..e090fb6c 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 41c158a4..bb134818 100644
+index 41c158a..bb13481 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';
@@ -6194,7 +6194,7 @@ index 41c158a4..bb134818 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 48b16f3..dae1d75 100644
--- a/examples-testing/examples/webgl_interactive_voxelpainter.ts
+++ b/examples-testing/examples/webgl_interactive_voxelpainter.ts
@@ -1,15 +1,15 @@
@@ -6274,7 +6274,7 @@ index 48b16f3b..dae1d758 100644
case 16:
isShiftDown = false;
diff --git a/examples-testing/examples/webgl_layers.ts b/examples-testing/examples/webgl_layers.ts
-index 8bdcda7f..f24cdc8b 100644
+index 8bdcda7..f24cdc8 100644
--- a/examples-testing/examples/webgl_layers.ts
+++ b/examples-testing/examples/webgl_layers.ts
@@ -3,8 +3,8 @@ import * as THREE from 'three';
@@ -6289,7 +6289,7 @@ index 8bdcda7f..f24cdc8b 100644
let theta = 0;
const radius = 5;
diff --git a/examples-testing/examples/webgl_lensflares.ts b/examples-testing/examples/webgl_lensflares.ts
-index 230cebfa..56651e28 100644
+index 230cebf..56651e2 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';
@@ -6316,7 +6316,7 @@ index 230cebfa..56651e28 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 2efcad52..b21d0287 100644
+index 2efcad5..b21d028 100644
--- a/examples-testing/examples/webgl_lightprobe.ts
+++ b/examples-testing/examples/webgl_lightprobe.ts
@@ -5,12 +5,15 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -6348,7 +6348,7 @@ index 2efcad52..b21d0287 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 c714d297..ccf95e09 100644
+index c714d29..ccf95e0 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';
@@ -6373,7 +6373,7 @@ index c714d297..ccf95e09 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 6a4965df..152a2428 100644
+index 6a4965d..152a242 100644
--- a/examples-testing/examples/webgl_lights_hemisphere.ts
+++ b/examples-testing/examples/webgl_lights_hemisphere.ts
@@ -5,16 +5,16 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -6409,7 +6409,7 @@ index 6a4965df..152a2428 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 707ef20..8e4cf0b 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';
@@ -6454,7 +6454,7 @@ index 707ef200..8e4cf0bb 100644
stats = new Stats();
container.appendChild(stats.dom);
diff --git a/examples-testing/examples/webgl_lights_pointlights.ts b/examples-testing/examples/webgl_lights_pointlights.ts
-index ea95070c..020d2160 100644
+index ea95070..020d216 100644
--- a/examples-testing/examples/webgl_lights_pointlights.ts
+++ b/examples-testing/examples/webgl_lights_pointlights.ts
@@ -4,7 +4,15 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -6475,7 +6475,7 @@ index ea95070c..020d2160 100644
const clock = new THREE.Clock();
diff --git a/examples-testing/examples/webgl_lights_rectarealight.ts b/examples-testing/examples/webgl_lights_rectarealight.ts
-index b841fa6b..f3051618 100644
+index b841fa6..f305161 100644
--- a/examples-testing/examples/webgl_lights_rectarealight.ts
+++ b/examples-testing/examples/webgl_lights_rectarealight.ts
@@ -6,8 +6,8 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -6499,7 +6499,7 @@ index b841fa6b..f3051618 100644
renderer.render(scene, camera);
diff --git a/examples-testing/examples/webgl_lights_spotlight.ts b/examples-testing/examples/webgl_lights_spotlight.ts
-index 894abaf6..342a70fb 100644
+index 894abaf..342a70f 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';
@@ -6535,7 +6535,7 @@ index 894abaf6..342a70fb 100644
});
});
diff --git a/examples-testing/examples/webgl_lights_spotlights.ts b/examples-testing/examples/webgl_lights_spotlights.ts
-index 70caf5a5..fc4817fb 100644
+index 70caf5a..fc4817f 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);
@@ -6566,7 +6566,7 @@ index 70caf5a5..fc4817fb 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 9da19ee..68bc979 100644
--- a/examples-testing/examples/webgl_lines_colors.ts
+++ b/examples-testing/examples/webgl_lines_colors.ts
@@ -8,7 +8,7 @@ let mouseX = 0,
@@ -6606,7 +6606,7 @@ index 9da19ee2..68bc979b 100644
}
}
diff --git a/examples-testing/examples/webgl_lines_dashed.ts b/examples-testing/examples/webgl_lines_dashed.ts
-index 4849e7c3..4bddc484 100644
+index 4849e7c..4bddc48 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';
@@ -6639,7 +6639,7 @@ index 4849e7c3..4bddc484 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 75a66df6..37d59938 100644
+index 34c2e2d..5e03987 100644
--- a/examples-testing/examples/webgl_lines_fat.ts
+++ b/examples-testing/examples/webgl_lines_fat.ts
@@ -10,15 +10,20 @@ import { LineMaterial } from 'three/addons/lines/LineMaterial.js';
@@ -6671,7 +6671,7 @@ index 75a66df6..37d59938 100644
init();
diff --git a/examples-testing/examples/webgl_lines_fat_raycasting.ts b/examples-testing/examples/webgl_lines_fat_raycasting.ts
-index e5b61d4a..49a66bb1 100644
+index 75cef62..e72b18a 100644
--- a/examples-testing/examples/webgl_lines_fat_raycasting.ts
+++ b/examples-testing/examples/webgl_lines_fat_raycasting.ts
@@ -11,12 +11,13 @@ import { LineSegmentsGeometry } from 'three/addons/lines/LineSegmentsGeometry.js
@@ -6704,8 +6704,8 @@ index e5b61d4a..49a66bb1 100644
const matLine = new LineMaterial({
color: 0xffffff,
-@@ -179,7 +179,7 @@ function onWindowResize() {
- matThresholdLine.resolution.set(window.innerWidth, window.innerHeight);
+@@ -173,7 +173,7 @@ function onWindowResize() {
+ renderer.setSize(window.innerWidth, window.innerHeight);
}
-function onPointerMove(event) {
@@ -6713,7 +6713,7 @@ index e5b61d4a..49a66bb1 100644
pointer.x = (event.clientX / window.innerWidth) * 2 - 1;
pointer.y = -(event.clientY / window.innerHeight) * 2 + 1;
}
-@@ -208,9 +208,9 @@ function animate() {
+@@ -202,9 +202,9 @@ function animate() {
sphereOnLine.visible = true;
sphereInter.position.copy(intersects[0].point);
@@ -6725,7 +6725,7 @@ index e5b61d4a..49a66bb1 100644
const colors = obj.geometry.getAttribute('instanceColorStart');
color.fromBufferAttribute(colors, index);
-@@ -234,7 +234,7 @@ function animate() {
+@@ -228,7 +228,7 @@ function animate() {
//
@@ -6734,7 +6734,7 @@ index e5b61d4a..49a66bb1 100644
switch (val) {
case 0:
line.visible = true;
-@@ -279,7 +279,7 @@ function initGui() {
+@@ -273,7 +273,7 @@ function initGui() {
gui.add(params, 'width', 1, 10).onChange(function (val) {
matLine.linewidth = val;
@@ -6743,7 +6743,7 @@ index e5b61d4a..49a66bb1 100644
});
gui.add(params, 'alphaToCoverage').onChange(function (val) {
-@@ -287,8 +287,8 @@ function initGui() {
+@@ -281,8 +281,8 @@ function initGui() {
});
gui.add(params, 'threshold', 0, 10).onChange(function (val) {
@@ -6755,7 +6755,7 @@ index e5b61d4a..49a66bb1 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 1b6b6567..95cb9cee 100644
+index 59660ad..9f38fcb 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';
@@ -6796,7 +6796,7 @@ index 1b6b6567..95cb9cee 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 7570306..a363c21 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';
@@ -6829,7 +6829,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 10ce340..ac3a6e2 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';
@@ -6857,7 +6857,7 @@ index 10ce3407..ac3a6e23 100644
});
diff --git a/examples-testing/examples/webgl_loader_3mf.ts b/examples-testing/examples/webgl_loader_3mf.ts
-index c31e3219..eecda516 100644
+index c31e321..eecda51 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';
@@ -6898,7 +6898,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 fcdd7308..3cfb49b4 100644
+index fcdd730..3cfb49b 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';
@@ -6911,7 +6911,7 @@ index fcdd7308..3cfb49b4 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 ee576e0..7569a04 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';
@@ -6924,7 +6924,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 0be3add4..cfdf0bc7 100644
+index 0be3add..cfdf0bc 100644
--- a/examples-testing/examples/webgl_loader_bvh.ts
+++ b/examples-testing/examples/webgl_loader_bvh.ts
@@ -5,8 +5,8 @@ import { BVHLoader } from 'three/addons/loaders/BVHLoader.js';
@@ -6939,7 +6939,7 @@ index 0be3add4..cfdf0bc7 100644
init();
diff --git a/examples-testing/examples/webgl_loader_collada.ts b/examples-testing/examples/webgl_loader_collada.ts
-index 62588b69..e1e82771 100644
+index 62588b6..e1e8277 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';
@@ -6960,7 +6960,7 @@ index 62588b69..e1e82771 100644
camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 2000);
camera.position.set(8, 10, 8);
diff --git a/examples-testing/examples/webgl_loader_collada_skinning.ts b/examples-testing/examples/webgl_loader_collada_skinning.ts
-index 5cb808b1..7b2b57bd 100644
+index 5cb808b..7b2b57b 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';
@@ -6981,7 +6981,7 @@ index 5cb808b1..7b2b57bd 100644
camera = new THREE.PerspectiveCamera(25, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.set(15, 10, -15);
diff --git a/examples-testing/examples/webgl_loader_draco.ts b/examples-testing/examples/webgl_loader_draco.ts
-index c9947c69..69bf22b4 100644
+index c9947c6..69bf22b 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';
@@ -6997,34 +6997,79 @@ index c9947c69..69bf22b4 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 8625cee0..816d8036 100644
+index 9c044b1..cc34275 100644
--- a/examples-testing/examples/webgl_loader_fbx.ts
+++ b/examples-testing/examples/webgl_loader_fbx.ts
-@@ -5,11 +5,11 @@ import Stats from 'three/addons/libs/stats.module.js';
- import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+@@ -6,10 +6,16 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { FBXLoader } from 'three/addons/loaders/FBXLoader.js';
+ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
--let camera, scene, renderer, stats;
-+let camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer, stats: Stats;
-
+-let camera, scene, renderer, stats, object, loader, guiMorphsFolder;
++let camera: THREE.PerspectiveCamera,
++ scene: THREE.Scene,
++ renderer: THREE.WebGLRenderer,
++ stats: Stats,
++ object: THREE.Group,
++ loader: FBXLoader,
++ guiMorphsFolder: GUI;
const clock = new THREE.Clock();
-let mixer;
-+let mixer: THREE.AnimationMixer;
++let mixer: THREE.AnimationMixer | null;
- init();
+ const params = {
+ asset: 'Samba Dancing',
+@@ -87,13 +93,18 @@ function init() {
+ guiMorphsFolder = gui.addFolder('Morphs').hide();
+ }
-@@ -62,7 +62,7 @@ function init() {
- action.play();
+-function loadAsset(asset) {
++function loadAsset(asset: string) {
+ loader.load('models/fbx/' + asset + '.fbx', function (group) {
+ if (object) {
+ object.traverse(function (child) {
+- if (child.material) child.material.dispose();
+- if (child.material && child.material.map) child.material.map.dispose();
+- if (child.geometry) child.geometry.dispose();
++ if ((child as THREE.Mesh).material)
++ (child as THREE.Mesh).material.dispose();
++ if (
++ (child as THREE.Mesh).material &&
++ (child as THREE.Mesh).material.map
++ )
++ (child as THREE.Mesh).material.map!.dispose();
++ if ((child as THREE.Mesh).geometry) (child as THREE.Mesh).geometry.dispose();
+ });
+
+ scene.remove(object);
+@@ -116,15 +127,21 @@ function loadAsset(asset) {
+ guiMorphsFolder.hide();
object.traverse(function (child) {
- if (child.isMesh) {
+ if ((child as THREE.Mesh).isMesh) {
child.castShadow = true;
child.receiveShadow = true;
+
+- if (child.morphTargetDictionary) {
++ if ((child as THREE.Mesh).morphTargetDictionary) {
+ guiMorphsFolder.show();
+ const meshFolder = guiMorphsFolder.addFolder(child.name || child.uuid);
+- Object.keys(child.morphTargetDictionary).forEach(key => {
+- meshFolder.add(child.morphTargetInfluences, child.morphTargetDictionary[key], 0, 1, 0.01);
++ Object.keys((child as THREE.Mesh).morphTargetDictionary!).forEach(key => {
++ meshFolder.add(
++ (child as THREE.Mesh).morphTargetInfluences!,
++ (child as THREE.Mesh).morphTargetDictionary![key],
++ 0,
++ 1,
++ 0.01,
++ );
+ });
+ }
}
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 f2e45bc..c15264d 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';
@@ -7037,7 +7082,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 6fd3e149..79c64232 100644
+index 6fd3e14..79c6423 100644
--- a/examples-testing/examples/webgl_loader_gcode.ts
+++ b/examples-testing/examples/webgl_loader_gcode.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -7050,7 +7095,7 @@ index 6fd3e149..79c64232 100644
init();
render();
diff --git a/examples-testing/examples/webgl_loader_gltf.ts b/examples-testing/examples/webgl_loader_gltf.ts
-index e1b0adc5..6fcb3ed5 100644
+index e1b0adc..6fcb3ed 100644
--- a/examples-testing/examples/webgl_loader_gltf.ts
+++ b/examples-testing/examples/webgl_loader_gltf.ts
@@ -4,7 +4,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -7063,7 +7108,7 @@ index e1b0adc5..6fcb3ed5 100644
init();
diff --git a/examples-testing/examples/webgl_loader_gltf_anisotropy.ts b/examples-testing/examples/webgl_loader_gltf_anisotropy.ts
-index 6e240a27..96a39391 100644
+index 6e240a2..96a3939 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';
@@ -7076,7 +7121,7 @@ index 6e240a27..96a39391 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 37d6385..68dff97 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';
@@ -7089,7 +7134,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 82024303..0926a591 100644
+index 8202430..0926a59 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';
@@ -7102,7 +7147,7 @@ index 82024303..0926a591 100644
init();
render();
diff --git a/examples-testing/examples/webgl_loader_gltf_dispersion.ts b/examples-testing/examples/webgl_loader_gltf_dispersion.ts
-index d17e066d..496142db 100644
+index d17e066..496142d 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';
@@ -7115,7 +7160,7 @@ index d17e066d..496142db 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 5d23e775..b8a6814d 100644
+index 5d23e77..b8a6814 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';
@@ -7128,7 +7173,7 @@ index 5d23e775..b8a6814d 100644
init();
render();
diff --git a/examples-testing/examples/webgl_loader_gltf_iridescence.ts b/examples-testing/examples/webgl_loader_gltf_iridescence.ts
-index eb0f8d91..9ab15779 100644
+index eb0f8d9..9ab1577 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';
@@ -7141,7 +7186,7 @@ index eb0f8d91..9ab15779 100644
init().catch(function (err) {
console.error(err);
diff --git a/examples-testing/examples/webgl_loader_gltf_lights.ts b/examples-testing/examples/webgl_loader_gltf_lights.ts
-index f2bd5b10..7efbb033 100644
+index f2bd5b1..7efbb03 100644
--- a/examples-testing/examples/webgl_loader_gltf_lights.ts
+++ b/examples-testing/examples/webgl_loader_gltf_lights.ts
@@ -6,7 +6,7 @@ import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
@@ -7166,7 +7211,7 @@ index f2bd5b10..7efbb033 100644
}
});
diff --git a/examples-testing/examples/webgl_loader_gltf_sheen.ts b/examples-testing/examples/webgl_loader_gltf_sheen.ts
-index 1ff3e7a8..ac16074b 100644
+index 1ff3e7a..ac16074 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';
@@ -7191,7 +7236,7 @@ index 1ff3e7a8..ac16074b 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 87a47d2c..c1341d80 100644
+index 87a47d2..c1341d8 100644
--- a/examples-testing/examples/webgl_loader_gltf_transmission.ts
+++ b/examples-testing/examples/webgl_loader_gltf_transmission.ts
@@ -6,7 +6,12 @@ import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
@@ -7209,7 +7254,7 @@ index 87a47d2c..c1341d80 100644
init();
diff --git a/examples-testing/examples/webgl_loader_imagebitmap.ts b/examples-testing/examples/webgl_loader_imagebitmap.ts
-index 1049e985..ae304ad8 100644
+index 1049e98..ae304ad 100644
--- a/examples-testing/examples/webgl_loader_imagebitmap.ts
+++ b/examples-testing/examples/webgl_loader_imagebitmap.ts
@@ -1,7 +1,7 @@
@@ -7232,7 +7277,7 @@ index 1049e985..ae304ad8 100644
cube.position.set(Math.random() * 2 - 1, Math.random() * 2 - 1, Math.random() * 2 - 1);
cube.rotation.set(Math.random() * 2 * Math.PI, Math.random() * 2 * Math.PI, Math.random() * 2 * Math.PI);
diff --git a/examples-testing/examples/webgl_loader_kmz.ts b/examples-testing/examples/webgl_loader_kmz.ts
-index f93555e4..8793a351 100644
+index f93555e..8793a35 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';
@@ -7245,7 +7290,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 fb10c83..df003a0 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';
@@ -7258,7 +7303,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 683e4c2a..845039ea 100644
+index 683e4c2..845039e 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';
@@ -7309,7 +7354,7 @@ index 683e4c2a..845039ea 100644
case 'ArrowUp':
case 'KeyW':
diff --git a/examples-testing/examples/webgl_loader_mdd.ts b/examples-testing/examples/webgl_loader_mdd.ts
-index 5b13e8f4..83aad15c 100644
+index 5b13e8f..83aad15 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';
@@ -7326,7 +7371,7 @@ index 5b13e8f4..83aad15c 100644
init();
diff --git a/examples-testing/examples/webgl_loader_obj.ts b/examples-testing/examples/webgl_loader_obj.ts
-index f61eeb75..44b29b66 100644
+index f61eeb7..44b29b6 100644
--- a/examples-testing/examples/webgl_loader_obj.ts
+++ b/examples-testing/examples/webgl_loader_obj.ts
@@ -3,9 +3,9 @@ import * as THREE from 'three';
@@ -7361,7 +7406,7 @@ index f61eeb75..44b29b66 100644
const percentComplete = (xhr.loaded / xhr.total) * 100;
console.log('model ' + percentComplete.toFixed(2) + '% downloaded');
diff --git a/examples-testing/examples/webgl_loader_obj_mtl.ts b/examples-testing/examples/webgl_loader_obj_mtl.ts
-index 4308aee7..f27d82d9 100644
+index 4308aee..f27d82d 100644
--- a/examples-testing/examples/webgl_loader_obj_mtl.ts
+++ b/examples-testing/examples/webgl_loader_obj_mtl.ts
@@ -4,7 +4,7 @@ import { MTLLoader } from 'three/addons/loaders/MTLLoader.js';
@@ -7383,7 +7428,7 @@ index 4308aee7..f27d82d9 100644
const percentComplete = (xhr.loaded / xhr.total) * 100;
console.log(percentComplete.toFixed(2) + '% downloaded');
diff --git a/examples-testing/examples/webgl_loader_pcd.ts b/examples-testing/examples/webgl_loader_pcd.ts
-index d69e3fa2..312ad67c 100644
+index d69e3fa..312ad67 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';
@@ -7396,7 +7441,7 @@ index d69e3fa2..312ad67c 100644
init();
render();
diff --git a/examples-testing/examples/webgl_loader_pdb.ts b/examples-testing/examples/webgl_loader_pdb.ts
-index b560efa7..9882dff5 100644
+index b560efa..9882dff 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';
@@ -7455,7 +7500,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 0f4042b..dff17d1 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';
@@ -7480,7 +7525,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 45361b92..f5d72d3c 100644
+index 45361b9..f5d72d3 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';
@@ -7559,7 +7604,7 @@ index 45361b92..f5d72d3c 100644
if (geometry) {
const mesh = new THREE.Mesh(geometry, material);
diff --git a/examples-testing/examples/webgl_loader_texture_dds.ts b/examples-testing/examples/webgl_loader_texture_dds.ts
-index bc4bd057..0bf94def 100644
+index bc4bd05..0bf94de 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';
@@ -7583,7 +7628,7 @@ index bc4bd057..0bf94def 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 af66eb81..f7832073 100644
+index af66eb8..f783207 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';
@@ -7649,7 +7694,7 @@ index af66eb81..f7832073 100644
meshes.push(new THREE.Mesh(geometry, material1));
meshes.push(new THREE.Mesh(geometry, material2));
diff --git a/examples-testing/examples/webgl_loader_texture_logluv.ts b/examples-testing/examples/webgl_loader_texture_logluv.ts
-index 7f3fbd4a..181e0033 100644
+index 7f3fbd4..181e003 100644
--- a/examples-testing/examples/webgl_loader_texture_logluv.ts
+++ b/examples-testing/examples/webgl_loader_texture_logluv.ts
@@ -8,7 +8,7 @@ const params = {
@@ -7662,7 +7707,7 @@ index 7f3fbd4a..181e0033 100644
init();
diff --git a/examples-testing/examples/webgl_loader_texture_rgbm.ts b/examples-testing/examples/webgl_loader_texture_rgbm.ts
-index a882cdbc..a7cbf3e0 100644
+index a882cdb..a7cbf3e 100644
--- a/examples-testing/examples/webgl_loader_texture_rgbm.ts
+++ b/examples-testing/examples/webgl_loader_texture_rgbm.ts
@@ -8,7 +8,7 @@ const params = {
@@ -7675,7 +7720,7 @@ index a882cdbc..a7cbf3e0 100644
init();
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 c4f65b7..fd6bab0 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';
@@ -7688,7 +7733,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 f097774..bb5b9d9 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';
@@ -7701,7 +7746,7 @@ index f097774a..bb5b9d9d 100644
init();
diff --git a/examples-testing/examples/webgl_loader_tilt.ts b/examples-testing/examples/webgl_loader_tilt.ts
-index 2a583c2b..8e3e976b 100644
+index 2a583c2..8e3e976 100644
--- a/examples-testing/examples/webgl_loader_tilt.ts
+++ b/examples-testing/examples/webgl_loader_tilt.ts
@@ -3,7 +3,7 @@ import * as THREE from 'three';
@@ -7714,7 +7759,7 @@ index 2a583c2b..8e3e976b 100644
init();
diff --git a/examples-testing/examples/webgl_loader_ttf.ts b/examples-testing/examples/webgl_loader_ttf.ts
-index 168371a1..073084f7 100644
+index 168371a..073084f 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';
@@ -7803,7 +7848,7 @@ index 168371a1..073084f7 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 d75823d8..cdd7c733 100644
+index d75823d..cdd7c73 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';
@@ -7816,7 +7861,7 @@ index d75823d8..cdd7c733 100644
init();
diff --git a/examples-testing/examples/webgl_loader_vox.ts b/examples-testing/examples/webgl_loader_vox.ts
-index 06184801..1f9629e0 100644
+index 0618480..1f9629e 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';
@@ -7829,7 +7874,7 @@ index 06184801..1f9629e0 100644
init();
diff --git a/examples-testing/examples/webgl_loader_vrml.ts b/examples-testing/examples/webgl_loader_vrml.ts
-index fecf4bb4..a6093ead 100644
+index fecf4bb..a6093ea 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';
@@ -7883,7 +7928,7 @@ index fecf4bb4..a6093ead 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 dfc7986..de6983f 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';
@@ -7899,7 +7944,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 90e00984..61ef0cf1 100644
+index 90e0098..61ef0cf 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';
@@ -7915,7 +7960,7 @@ index 90e00984..61ef0cf1 100644
init();
diff --git a/examples-testing/examples/webgl_lod.ts b/examples-testing/examples/webgl_lod.ts
-index 0bb9e7be..bd1d0e46 100644
+index 0bb9e7b..bd1d0e4 100644
--- a/examples-testing/examples/webgl_lod.ts
+++ b/examples-testing/examples/webgl_lod.ts
@@ -2,9 +2,9 @@ import * as THREE from 'three';
@@ -7940,7 +7985,7 @@ index 0bb9e7be..bd1d0e46 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 d11df56a..ea05a705 100644
+index d11df56..ea05a70 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';
@@ -8056,7 +8101,7 @@ index d11df56a..ea05a705 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 807e5a33..b2e1cd10 100644
+index 807e5a3..b2e1cd1 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';
@@ -8079,7 +8124,7 @@ index 807e5a33..b2e1cd10 100644
let needsUpdate = false;
diff --git a/examples-testing/examples/webgl_materials_blending.ts b/examples-testing/examples/webgl_materials_blending.ts
-index 11cc009b..7f7fd73c 100644
+index 11cc009..7f7fd73 100644
--- a/examples-testing/examples/webgl_materials_blending.ts
+++ b/examples-testing/examples/webgl_materials_blending.ts
@@ -1,7 +1,7 @@
@@ -8132,7 +8177,7 @@ index 11cc009b..7f7fd73c 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 0724474..6211197 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';
@@ -8183,7 +8228,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 d954fab7..73947a37 100644
+index d954fab..73947a3 100644
--- a/examples-testing/examples/webgl_materials_bumpmap.ts
+++ b/examples-testing/examples/webgl_materials_bumpmap.ts
@@ -4,13 +4,13 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -8232,7 +8277,7 @@ index d954fab7..73947a37 100644
mouseY = event.clientY - windowHalfY;
}
diff --git a/examples-testing/examples/webgl_materials_car.ts b/examples-testing/examples/webgl_materials_car.ts
-index e810f7b7..5f71ea26 100644
+index e810f7b..5f71ea2 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';
@@ -8313,7 +8358,7 @@ index e810f7b7..5f71ea26 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 5f26927..87044a8 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';
@@ -8338,7 +8383,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 13a26890..8b84f71a 100644
+index 13a2689..8b84f71 100644
--- a/examples-testing/examples/webgl_materials_cubemap_dynamic.ts
+++ b/examples-testing/examples/webgl_materials_cubemap_dynamic.ts
@@ -6,12 +6,12 @@ import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
@@ -8368,7 +8413,7 @@ index 13a26890..8b84f71a 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 944f4c1..21010ff 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';
@@ -8408,7 +8453,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 8c02507..a47c483 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';
@@ -8447,7 +8492,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..fa4f85c1 100644
+index 599a136..fa4f85c 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 @@
@@ -8490,7 +8535,7 @@ index 599a1369..fa4f85c1 100644
const material = new THREE.ShaderMaterial({
diff --git a/examples-testing/examples/webgl_materials_curvature.ts b/examples-testing/examples/webgl_materials_curvature.ts
-index 60992dbc..15625389 100644
+index 60992db..1562538 100644
--- a/examples-testing/examples/webgl_materials_curvature.ts
+++ b/examples-testing/examples/webgl_materials_curvature.ts
@@ -4,14 +4,16 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -8581,7 +8626,7 @@ index 60992dbc..15625389 100644
ninjaMeshRaw = new THREE.Mesh(bufferGeo, materialRaw);
diff --git a/examples-testing/examples/webgl_materials_displacementmap.ts b/examples-testing/examples/webgl_materials_displacementmap.ts
-index fd0be9a5..9b08fe73 100644
+index fd0be9a..9b08fe7 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';
@@ -8617,7 +8662,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 18a5542..13fe2ef 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';
@@ -8644,7 +8689,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 c3f3f4f..4ae4cb9 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 = {
@@ -8677,7 +8722,7 @@ index c3f3f4f7..4ae4cb95 100644
roughness: params.roughness,
envMapIntensity: 1.0,
diff --git a/examples-testing/examples/webgl_materials_envmaps_groundprojected.ts b/examples-testing/examples/webgl_materials_envmaps_groundprojected.ts
-index 48e0077f..09c67188 100644
+index 48e0077..09c6718 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 = {
@@ -8713,7 +8758,7 @@ index 48e0077f..09c67188 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 b4c6f64e..48b6c01c 100644
+index b4c6f64..48b6c01 100644
--- a/examples-testing/examples/webgl_materials_envmaps_hdr.ts
+++ b/examples-testing/examples/webgl_materials_envmaps_hdr.ts
@@ -8,7 +8,13 @@ import { HDRCubeTextureLoader } from 'three/addons/loaders/HDRCubeTextureLoader.
@@ -8765,7 +8810,7 @@ index b4c6f64e..48b6c01c 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 c6ee5af3..a1a808a7 100644
+index c6ee5af..a1a808a 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';
@@ -8807,7 +8852,7 @@ index c6ee5af3..a1a808a7 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 1fc6f80..7210813 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';
@@ -8848,7 +8893,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 408fd99..dc782ea 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.
@@ -8869,7 +8914,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 d4596797..6464232e 100644
+index d459679..6464232 100644
--- a/examples-testing/examples/webgl_materials_physical_transmission.ts
+++ b/examples-testing/examples/webgl_materials_physical_transmission.ts
@@ -19,7 +19,7 @@ const params = {
@@ -8891,7 +8936,7 @@ index d4596797..6464232e 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 d81f59c3..1e194ce8 100644
+index d81f59c..1e194ce 100644
--- a/examples-testing/examples/webgl_materials_physical_transmission_alpha.ts
+++ b/examples-testing/examples/webgl_materials_physical_transmission_alpha.ts
@@ -22,17 +22,20 @@ const params = {
@@ -8929,7 +8974,7 @@ index d81f59c3..1e194ce8 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 1e030d6..6557772 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';
@@ -8970,7 +9015,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 d23c684..5a190fa 100644
--- a/examples-testing/examples/webgl_materials_texture_canvas.ts
+++ b/examples-testing/examples/webgl_materials_texture_canvas.ts
@@ -1,6 +1,10 @@
@@ -9015,7 +9060,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 178c2ce4..fb67cabe 100644
+index 178c2ce..fb67cab 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';
@@ -9058,7 +9103,7 @@ index 178c2ce4..fb67cabe 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..5d5e77b6 100644
+index 24bd4eb..5d5e77b 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';
@@ -9104,7 +9149,7 @@ index 24bd4eb9..5d5e77b6 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 5adfc8e6..55d802e3 100644
+index 5adfc8e..55d802e 100644
--- a/examples-testing/examples/webgl_materials_texture_partialupdate.ts
+++ b/examples-testing/examples/webgl_materials_texture_partialupdate.ts
@@ -1,6 +1,11 @@
@@ -9130,7 +9175,7 @@ index 5adfc8e6..55d802e3 100644
const data = texture.image.data;
diff --git a/examples-testing/examples/webgl_materials_texture_rotation.ts b/examples-testing/examples/webgl_materials_texture_rotation.ts
-index 2666d09d..b284d9ff 100644
+index 2666d09..b284d9f 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';
@@ -9155,7 +9200,7 @@ index 2666d09d..b284d9ff 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 03db286a..883244f5 100644
+index 03db286..883244f 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';
@@ -9194,7 +9239,7 @@ index 03db286a..883244f5 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 4f0d26a..0bf378c 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';
@@ -9311,7 +9356,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 cf6f8d5..00b48c1 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';
@@ -9333,7 +9378,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 8adbd71..6424e8c 100644
--- a/examples-testing/examples/webgl_materials_wireframe.ts
+++ b/examples-testing/examples/webgl_materials_wireframe.ts
@@ -8,7 +8,10 @@ const API = {
@@ -9369,7 +9414,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 48480d10..97a81a97 100644
+index 48480d1..97a81a9 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';
@@ -9414,7 +9459,7 @@ index 48480d10..97a81a97 100644
}
diff --git a/examples-testing/examples/webgl_math_orientation_transform.ts b/examples-testing/examples/webgl_math_orientation_transform.ts
-index 99be247d..2ff2bca4 100644
+index 99be247..2ff2bca 100644
--- a/examples-testing/examples/webgl_math_orientation_transform.ts
+++ b/examples-testing/examples/webgl_math_orientation_transform.ts
@@ -1,6 +1,10 @@
@@ -9430,7 +9475,7 @@ index 99be247d..2ff2bca4 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 458700ac..7c519a2a 100644
+index 5c70b6c..7ddd301 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';
@@ -9483,20 +9528,16 @@ index 458700ac..7c519a2a 100644
}
}
}
-@@ -213,18 +213,26 @@ function init() {
+@@ -213,14 +213,18 @@ function init() {
//
--function sortFunction(list, camera) {
+-function sortFunction(list) {
+type BatchedMeshWithOptions = THREE.BatchedMesh & {
+ _options?: RadixSortOptions<{ start: number; count: number; z: number }>;
+};
+
-+function sortFunction(
-+ this: THREE.BatchedMesh,
-+ list: { start: number; count: number; z: number }[],
-+ camera: THREE.Camera,
-+) {
++function sortFunction(this: THREE.BatchedMesh, list: { start: number; count: number; z: number }[]) {
// initialize options
- this._options = this._options || {
+ (this as BatchedMeshWithOptions)._options = (this as BatchedMeshWithOptions)._options || {
@@ -9508,13 +9549,8 @@ index 458700ac..7c519a2a 100644
+ const options = (this as BatchedMeshWithOptions)._options!;
options.reversed = this.material.transparent;
- // convert depth to unsigned 32 bit range
-- const factor = (2 ** 32 - 1) / camera.far; // UINT32_MAX / max_depth
-+ const factor = (2 ** 32 - 1) / (camera as THREE.PerspectiveCamera).far; // UINT32_MAX / max_depth
- for (let i = 0, l = list.length; i < l; i++) {
- list[i].z *= factor;
- }
-@@ -260,9 +268,9 @@ function animateMeshes() {
+ let minZ = Infinity;
+@@ -270,9 +274,9 @@ function animateMeshes() {
const rotationMatrix = mesh.userData.rotationSpeeds[i];
const id = ids[i];
@@ -9526,7 +9562,7 @@ index 458700ac..7c519a2a 100644
}
} else {
for (let i = 0; i < loopNum; i++) {
-@@ -279,10 +287,10 @@ function animateMeshes() {
+@@ -289,10 +293,10 @@ function animateMeshes() {
}
function render() {
@@ -9542,7 +9578,7 @@ index 458700ac..7c519a2a 100644
renderer.render(scene, camera);
diff --git a/examples-testing/examples/webgl_mirror.ts b/examples-testing/examples/webgl_mirror.ts
-index 8b27363a..7d0f6cfb 100644
+index 8b27363..7d0f6cf 100644
--- a/examples-testing/examples/webgl_mirror.ts
+++ b/examples-testing/examples/webgl_mirror.ts
@@ -3,18 +3,18 @@ import * as THREE from 'three';
@@ -9570,7 +9606,7 @@ index 8b27363a..7d0f6cfb 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 4725eff..96620f5 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'
@@ -9598,7 +9634,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 e6ea453..f55a658 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';
@@ -9620,7 +9656,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 4600fc6..83af66a 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';
@@ -9672,7 +9708,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 40d605f8..5965ef35 100644
+index 40d605f..5965ef3 100644
--- a/examples-testing/examples/webgl_morphtargets.ts
+++ b/examples-testing/examples/webgl_morphtargets.ts
@@ -3,12 +3,16 @@ import * as THREE from 'three';
@@ -9719,7 +9755,7 @@ index 40d605f8..5965ef35 100644
}
diff --git a/examples-testing/examples/webgl_morphtargets_face.ts b/examples-testing/examples/webgl_morphtargets_face.ts
-index ceada53d..08e011dc 100644
+index ceada53..08e011d 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';
@@ -9755,7 +9791,7 @@ index ceada53d..08e011dc 100644
}
});
diff --git a/examples-testing/examples/webgl_morphtargets_horse.ts b/examples-testing/examples/webgl_morphtargets_horse.ts
-index 2c29e9c0..5e285283 100644
+index 2c29e9c..5e28528 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';
@@ -9772,7 +9808,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 2b889911..8ddf9f4a 100644
+index 2b88991..8ddf9f4 100644
--- a/examples-testing/examples/webgl_morphtargets_sphere.ts
+++ b/examples-testing/examples/webgl_morphtargets_sphere.ts
@@ -4,9 +4,9 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -9818,7 +9854,7 @@ index 2b889911..8ddf9f4a 100644
}
}
diff --git a/examples-testing/examples/webgl_multiple_elements.ts b/examples-testing/examples/webgl_multiple_elements.ts
-index 64f8a9c5..8dafa688 100644
+index 64f8a9c..8dafa68 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';
@@ -9849,7 +9885,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_scenes_comparison.ts b/examples-testing/examples/webgl_multiple_scenes_comparison.ts
-index 41a5130d..66d539a9 100644
+index 41a5130..66d539a 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';
@@ -9897,7 +9933,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 29126b01..b418641f 100644
+index 29126b0..b418641 100644
--- a/examples-testing/examples/webgl_multiple_views.ts
+++ b/examples-testing/examples/webgl_multiple_views.ts
@@ -2,16 +2,27 @@ import * as THREE from 'three';
@@ -9970,7 +10006,7 @@ index 29126b01..b418641f 100644
view.updateCamera(camera, scene, mouseX, mouseY);
diff --git a/examples-testing/examples/webgl_panorama_cube.ts b/examples-testing/examples/webgl_panorama_cube.ts
-index efd09cfc..e4832209 100644
+index efd09cf..e483220 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';
@@ -10013,7 +10049,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 55274522..850cc6aa 100644
+index 5527452..850cc6a 100644
--- a/examples-testing/examples/webgl_panorama_equirectangular.ts
+++ b/examples-testing/examples/webgl_panorama_equirectangular.ts
@@ -1,6 +1,6 @@
@@ -10105,7 +10141,7 @@ index 55274522..850cc6aa 100644
camera.fov = THREE.MathUtils.clamp(fov, 10, 75);
diff --git a/examples-testing/examples/webgl_pmrem_test.ts b/examples-testing/examples/webgl_pmrem_test.ts
-index b33e4e2f..3f0ef819 100644
+index b33e4e2..3f0ef81 100644
--- a/examples-testing/examples/webgl_pmrem_test.ts
+++ b/examples-testing/examples/webgl_pmrem_test.ts
@@ -5,7 +5,7 @@ import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
@@ -10130,7 +10166,7 @@ index b33e4e2f..3f0ef819 100644
});
diff --git a/examples-testing/examples/webgl_points_billboards.ts b/examples-testing/examples/webgl_points_billboards.ts
-index 24d4de1a..f1a089bf 100644
+index 24d4de1..f1a089b 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';
@@ -10156,7 +10192,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 31b9e2c..d8f24b2 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';
@@ -10199,7 +10235,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 91986e9..cb8e768 100644
--- a/examples-testing/examples/webgl_points_waves.ts
+++ b/examples-testing/examples/webgl_points_waves.ts
@@ -6,10 +6,10 @@ const SEPARATION = 100,
@@ -10237,7 +10273,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 4bc5959..e61736c 100644
--- a/examples-testing/examples/webgl_portal.ts
+++ b/examples-testing/examples/webgl_portal.ts
@@ -3,26 +3,26 @@ import * as THREE from 'three';
@@ -10294,7 +10330,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 ecc9b28..2e89423 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';
@@ -10309,7 +10345,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 adaef620..2b43e46a 100644
+index adaef62..2b43e46 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
@@ -10375,7 +10411,7 @@ index adaef620..2b43e46a 100644
diffuseMap.colorSpace = THREE.SRGBColorSpace;
diff --git a/examples-testing/examples/webgl_postprocessing_afterimage.ts b/examples-testing/examples/webgl_postprocessing_afterimage.ts
-index 508f90b8..53e74b77 100644
+index 508f90b..53e74b7 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';
@@ -10393,7 +10429,7 @@ index 508f90b8..53e74b77 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 57a6a2d..f6d4c71 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';
@@ -10430,7 +10466,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 55745f88..78bb4bda 100644
+index 55745f8..78bb4bd 100644
--- a/examples-testing/examples/webgl_postprocessing_fxaa.ts
+++ b/examples-testing/examples/webgl_postprocessing_fxaa.ts
@@ -6,14 +6,19 @@ import { ShaderPass } from 'three/addons/postprocessing/ShaderPass.js';
@@ -10457,7 +10493,7 @@ index 55745f88..78bb4bda 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 f846c0ce..5eaa953f 100644
+index f846c0c..5eaa953 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';
@@ -10498,7 +10534,7 @@ index f846c0ce..5eaa953f 100644
updateOptions();
diff --git a/examples-testing/examples/webgl_postprocessing_godrays.ts b/examples-testing/examples/webgl_postprocessing_godrays.ts
-index fb760441..73c8beb2 100644
+index fb76044..73c8beb 100644
--- a/examples-testing/examples/webgl_postprocessing_godrays.ts
+++ b/examples-testing/examples/webgl_postprocessing_godrays.ts
@@ -11,16 +11,37 @@ import {
@@ -10720,7 +10756,7 @@ index fb760441..73c8beb2 100644
renderer.setRenderTarget(null);
renderer.clear();
diff --git a/examples-testing/examples/webgl_postprocessing_gtao.ts b/examples-testing/examples/webgl_postprocessing_gtao.ts
-index d8e7f7a9..062d0755 100644
+index d8e7f7a..062d075 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';
@@ -10740,7 +10776,7 @@ index d8e7f7a9..062d0755 100644
init();
diff --git a/examples-testing/examples/webgl_postprocessing_masking.ts b/examples-testing/examples/webgl_postprocessing_masking.ts
-index f6e7310b..598a33dc 100644
+index f6e7310..598a33d 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';
@@ -10755,7 +10791,7 @@ index f6e7310b..598a33dc 100644
init();
diff --git a/examples-testing/examples/webgl_postprocessing_material_ao.ts b/examples-testing/examples/webgl_postprocessing_material_ao.ts
-index 2f17a530..c0374ac4 100644
+index 2f17a53..c0374ac 100644
--- a/examples-testing/examples/webgl_postprocessing_material_ao.ts
+++ b/examples-testing/examples/webgl_postprocessing_material_ao.ts
@@ -10,7 +10,12 @@ import { GTAOPass } from 'three/addons/postprocessing/GTAOPass.js';
@@ -10782,7 +10818,7 @@ index 2f17a530..c0374ac4 100644
gui.add(sceneParameters, 'shadow').onChange(value => {
renderer.shadowMap.enabled = value;
diff --git a/examples-testing/examples/webgl_postprocessing_outline.ts b/examples-testing/examples/webgl_postprocessing_outline.ts
-index 35657546..fa861b5b 100644
+index 3565754..fa861b5 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';
@@ -10838,7 +10874,7 @@ index 35657546..fa861b5b 100644
selectedObjects.push(object);
}
diff --git a/examples-testing/examples/webgl_postprocessing_pixel.ts b/examples-testing/examples/webgl_postprocessing_pixel.ts
-index 15b54d07..fdea0e6e 100644
+index 15b54d0..fdea0e6 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
@@ -10929,7 +10965,7 @@ index 15b54d07..fdea0e6e 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 8698242..4533b72 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';
@@ -10981,7 +11017,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 fa46d4c8..2de78ec5 100644
+index fa46d4c..2de78ec 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';
@@ -10999,7 +11035,7 @@ index fa46d4c8..2de78ec5 100644
init();
diff --git a/examples-testing/examples/webgl_postprocessing_sao.ts b/examples-testing/examples/webgl_postprocessing_sao.ts
-index bf40d026..deb21b3f 100644
+index bf40d02..deb21b3 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';
@@ -11018,7 +11054,7 @@ index bf40d026..deb21b3f 100644
init();
diff --git a/examples-testing/examples/webgl_postprocessing_smaa.ts b/examples-testing/examples/webgl_postprocessing_smaa.ts
-index 6f71f647..44b765c1 100644
+index 6f71f64..44b765c 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';
@@ -11045,7 +11081,7 @@ index 6f71f647..44b765c1 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 55d88dc..1512ed8 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';
@@ -11061,7 +11097,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 429e02de..438d81e7 100644
+index 429e02d..438d81e 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';
@@ -11098,7 +11134,7 @@ index 429e02de..438d81e7 100644
composer.render();
diff --git a/examples-testing/examples/webgl_postprocessing_ssao.ts b/examples-testing/examples/webgl_postprocessing_ssao.ts
-index e55ab044..811417b6 100644
+index e55ab04..811417b 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';
@@ -11117,7 +11153,7 @@ index e55ab044..811417b6 100644
init();
diff --git a/examples-testing/examples/webgl_postprocessing_ssr.ts b/examples-testing/examples/webgl_postprocessing_ssr.ts
-index 307cfd1d..6b864359 100644
+index 307cfd1..6b86435 100644
--- a/examples-testing/examples/webgl_postprocessing_ssr.ts
+++ b/examples-testing/examples/webgl_postprocessing_ssr.ts
@@ -18,17 +18,17 @@ const params = {
@@ -11159,7 +11195,7 @@ index 307cfd1d..6b864359 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 11a9867..ddb2bcc 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';
@@ -11188,7 +11224,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 00b81394..9f8ce1fc 100644
+index 00b8139..9f8ce1f 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';
@@ -11310,7 +11346,7 @@ index 00b81394..9f8ce1fc 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 53ec2fe2..b407c23e 100644
+index 53ec2fe..b407c23 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';
@@ -11334,7 +11370,7 @@ index 53ec2fe2..b407c23e 100644
clock = new THREE.Clock();
diff --git a/examples-testing/examples/webgl_postprocessing_unreal_bloom_selective.ts b/examples-testing/examples/webgl_postprocessing_unreal_bloom_selective.ts
-index d633806e..a25f53b5 100644
+index d633806..a25f53b 100644
--- a/examples-testing/examples/webgl_postprocessing_unreal_bloom_selective.ts
+++ b/examples-testing/examples/webgl_postprocessing_unreal_bloom_selective.ts
@@ -22,7 +22,7 @@ const params = {
@@ -11403,7 +11439,7 @@ index d633806e..a25f53b5 100644
}
}
diff --git a/examples-testing/examples/webgl_raycaster_sprite.ts b/examples-testing/examples/webgl_raycaster_sprite.ts
-index f35d5de1..73dd9349 100644
+index f35d5de..73dd934 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';
@@ -11439,7 +11475,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 72c7054..0e584dc 100644
--- a/examples-testing/examples/webgl_raycaster_texture.ts
+++ b/examples-testing/examples/webgl_raycaster_texture.ts
@@ -8,7 +8,15 @@ const WRAPPING = {
@@ -11652,7 +11688,7 @@ index 72c7054d..0e584dc0 100644
circleTexture.needsUpdate = true;
}
diff --git a/examples-testing/examples/webgl_raymarching_reflect.ts b/examples-testing/examples/webgl_raymarching_reflect.ts
-index e5448ebb..58fe2f1c 100644
+index e5448eb..58fe2f1 100644
--- a/examples-testing/examples/webgl_raymarching_reflect.ts
+++ b/examples-testing/examples/webgl_raymarching_reflect.ts
@@ -5,11 +5,11 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -11683,7 +11719,7 @@ index e5448ebb..58fe2f1c 100644
mesh = new THREE.Mesh(geometry, material);
mesh.frustumCulled = false;
diff --git a/examples-testing/examples/webgl_read_float_buffer.ts b/examples-testing/examples/webgl_read_float_buffer.ts
-index 68452a12..51fbce5e 100644
+index 68452a1..51fbce5 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';
@@ -11757,7 +11793,7 @@ index 68452a12..51fbce5e 100644
mouseY = event.clientY - windowHalfY;
}
diff --git a/examples-testing/examples/webgl_refraction.ts b/examples-testing/examples/webgl_refraction.ts
-index 572575af..169120a1 100644
+index 572575a..169120a 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';
@@ -11779,7 +11815,7 @@ index 572575af..169120a1 100644
clock = new THREE.Clock();
diff --git a/examples-testing/examples/webgl_rtt.ts b/examples-testing/examples/webgl_rtt.ts
-index 9f16fdab..9c70a341 100644
+index 9f16fda..9c70a34 100644
--- a/examples-testing/examples/webgl_rtt.ts
+++ b/examples-testing/examples/webgl_rtt.ts
@@ -2,9 +2,16 @@ import * as THREE from 'three';
@@ -11847,7 +11883,7 @@ index 9f16fdab..9c70a341 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 47a6c7e..7ac1257 100644
--- a/examples-testing/examples/webgl_shader.ts
+++ b/examples-testing/examples/webgl_shader.ts
@@ -1,13 +1,13 @@
@@ -11879,7 +11915,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 973a580e..a5d1f1af 100644
+index 973a580..a5d1f1a 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';
@@ -11921,7 +11957,7 @@ index 973a580e..a5d1f1af 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 8b0f9a73..afbdb1da 100644
+index 8b0f9a7..afbdb1d 100644
--- a/examples-testing/examples/webgl_shaders_ocean.ts
+++ b/examples-testing/examples/webgl_shaders_ocean.ts
@@ -7,14 +7,14 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -11953,7 +11989,7 @@ index 8b0f9a73..afbdb1da 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 18020f78..3b61996d 100644
+index 18020f7..3b61996 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';
@@ -11969,7 +12005,7 @@ index 18020f78..3b61996d 100644
init();
render();
diff --git a/examples-testing/examples/webgl_shadow_contact.ts b/examples-testing/examples/webgl_shadow_contact.ts
-index 9eda35b8..0c262569 100644
+index 9eda35b..0c26256 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';
@@ -12022,7 +12058,7 @@ index 9eda35b8..0c262569 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 6d0ac3ad..d03a38a3 100644
+index 6d0ac3a..d03a38a 100644
--- a/examples-testing/examples/webgl_shadowmap.ts
+++ b/examples-testing/examples/webgl_shadowmap.ts
@@ -15,18 +15,18 @@ let SCREEN_WIDTH = window.innerWidth;
@@ -12130,7 +12166,7 @@ index 6d0ac3ad..d03a38a3 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 c89bc02d..4da2da35 100644
+index c89bc02..4da2da3 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';
@@ -12182,7 +12218,7 @@ index c89bc02d..4da2da35 100644
});
});
diff --git a/examples-testing/examples/webgl_shadowmap_pcss.ts b/examples-testing/examples/webgl_shadowmap_pcss.ts
-index a47a011f..7e1f5fb3 100644
+index a47a011..7e1f5fb 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';
@@ -12215,7 +12251,7 @@ index a47a011f..7e1f5fb3 100644
THREE.ShaderChunk.shadowmap_pars_fragment = shader;
diff --git a/examples-testing/examples/webgl_shadowmap_performance.ts b/examples-testing/examples/webgl_shadowmap_performance.ts
-index 0e45b63f..1b61f3db 100644
+index 0e45b63..1b61f3d 100644
--- a/examples-testing/examples/webgl_shadowmap_performance.ts
+++ b/examples-testing/examples/webgl_shadowmap_performance.ts
@@ -16,16 +16,16 @@ const FLOOR = -250;
@@ -12287,7 +12323,7 @@ index 0e45b63f..1b61f3db 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 c68d6974..996aedd4 100644
+index c68d697..996aedd 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';
@@ -12332,7 +12368,7 @@ index c68d6974..996aedd4 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 86ec6817..dc329b9a 100644
+index 86ec681..dc329b9 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';
@@ -12392,7 +12428,7 @@ index 86ec6817..dc329b9a 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 f974ef03..755278b8 100644
+index f974ef0..755278b 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';
@@ -12424,7 +12460,7 @@ index f974ef03..755278b8 100644
color: 0xff0000,
shininess: 150,
diff --git a/examples-testing/examples/webgl_shadowmap_vsm.ts b/examples-testing/examples/webgl_shadowmap_vsm.ts
-index 4867c731..2e2ccaa9 100644
+index 4867c73..2e2ccaa 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';
@@ -12463,7 +12499,7 @@ index 4867c731..2e2ccaa9 100644
renderer.render(scene, camera);
diff --git a/examples-testing/examples/webgl_shadowmesh.ts b/examples-testing/examples/webgl_shadowmesh.ts
-index 412fc028..6043a477 100644
+index 412fc02..6043a47 100644
--- a/examples-testing/examples/webgl_shadowmesh.ts
+++ b/examples-testing/examples/webgl_shadowmesh.ts
@@ -12,18 +12,18 @@ const renderer = new THREE.WebGLRenderer({ stencil: true });
@@ -12541,7 +12577,7 @@ index 412fc028..6043a477 100644
}
}
diff --git a/examples-testing/examples/webgl_simple_gi.ts b/examples-testing/examples/webgl_simple_gi.ts
-index 4ab6dc89..adea084a 100644
+index 4ab6dc8..adea084 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';
@@ -12728,7 +12764,7 @@ index 4ab6dc89..adea084a 100644
init();
diff --git a/examples-testing/examples/webgl_sprites.ts b/examples-testing/examples/webgl_sprites.ts
-index 2e418934..c9f61690 100644
+index 2e41893..c9f6169 100644
--- a/examples-testing/examples/webgl_sprites.ts
+++ b/examples-testing/examples/webgl_sprites.ts
@@ -1,13 +1,17 @@
@@ -12792,7 +12828,7 @@ index 2e418934..c9f61690 100644
const scale = Math.sin(time + sprite.position.x * 0.01) * 0.3 + 1.0;
diff --git a/examples-testing/examples/webgl_test_memory.ts b/examples-testing/examples/webgl_test_memory.ts
-index f5d0e112..128862a2 100644
+index f5d0e11..128862a 100644
--- a/examples-testing/examples/webgl_test_memory.ts
+++ b/examples-testing/examples/webgl_test_memory.ts
@@ -1,6 +1,6 @@
@@ -12813,7 +12849,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 366a279..74077e9 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';
@@ -12864,7 +12900,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 57c38ba0..1da45af5 100644
+index 57c38ba..1da45af 100644
--- a/examples-testing/examples/webgl_test_wide_gamut.ts
+++ b/examples-testing/examples/webgl_test_wide_gamut.ts
@@ -2,8 +2,8 @@ import * as THREE from 'three';
@@ -12936,7 +12972,7 @@ index 57c38ba0..1da45af5 100644
// and does so without distortion. Akin to CSS object-fit: contain.
// Source: https://github.com/mrdoob/three.js/pull/17199
diff --git a/examples-testing/examples/webgl_tonemapping.ts b/examples-testing/examples/webgl_tonemapping.ts
-index 08115cf3..f68d7a8d 100644
+index 08115cf..f68d7a8 100644
--- a/examples-testing/examples/webgl_tonemapping.ts
+++ b/examples-testing/examples/webgl_tonemapping.ts
@@ -1,22 +1,35 @@
@@ -13009,7 +13045,7 @@ index 08115cf3..f68d7a8d 100644
guiExposure.destroy();
guiExposure = null;
diff --git a/examples-testing/examples/webgl_video_kinect.ts b/examples-testing/examples/webgl_video_kinect.ts
-index 4f0e2f11..7b4a3fab 100644
+index 4f0e2f1..7b4a3fa 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';
@@ -13055,7 +13091,7 @@ index 4f0e2f11..7b4a3fab 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 866eca1..0730113 100644
--- a/examples-testing/examples/webgl_video_panorama_equirectangular.ts
+++ b/examples-testing/examples/webgl_video_panorama_equirectangular.ts
@@ -1,6 +1,6 @@
@@ -13103,7 +13139,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_water.ts b/examples-testing/examples/webgl_water.ts
-index 496a5f85..379619a1 100644
+index 496a5f8..379619a 100644
--- a/examples-testing/examples/webgl_water.ts
+++ b/examples-testing/examples/webgl_water.ts
@@ -4,9 +4,13 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -13123,7 +13159,7 @@ index 496a5f85..379619a1 100644
const params = {
color: '#ffffff',
diff --git a/examples-testing/examples/webgl_water_flowmap.ts b/examples-testing/examples/webgl_water_flowmap.ts
-index d0255e43..c924d666 100644
+index d0255e4..c924d66 100644
--- a/examples-testing/examples/webgl_water_flowmap.ts
+++ b/examples-testing/examples/webgl_water_flowmap.ts
@@ -4,7 +4,7 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -13136,7 +13172,7 @@ index d0255e43..c924d666 100644
init();
diff --git a/examples-testing/examples/webgpu_backdrop_area.ts b/examples-testing/examples/webgpu_backdrop_area.ts
-index 0123e703..d4a9e6d0 100644
+index 0123e70..d4a9e6d 100644
--- a/examples-testing/examples/webgpu_backdrop_area.ts
+++ b/examples-testing/examples/webgpu_backdrop_area.ts
@@ -24,8 +24,8 @@ import WebGPURenderer from 'three/addons/renderers/webgpu/WebGPURenderer.js';
@@ -13167,7 +13203,7 @@ index 0123e703..d4a9e6d0 100644
});
}
diff --git a/examples-testing/examples/webgpu_camera_logarithmicdepthbuffer.ts b/examples-testing/examples/webgpu_camera_logarithmicdepthbuffer.ts
-index 2a3a26f5..a394dceb 100644
+index 2a3a26f..a394dce 100644
--- a/examples-testing/examples/webgpu_camera_logarithmicdepthbuffer.ts
+++ b/examples-testing/examples/webgpu_camera_logarithmicdepthbuffer.ts
@@ -1,6 +1,6 @@
@@ -13344,7 +13380,7 @@ index 2a3a26f5..a394dceb 100644
if (amount === 0) return;
const dir = amount / Math.abs(amount);
diff --git a/examples-testing/examples/webgpu_clearcoat.ts b/examples-testing/examples/webgpu_clearcoat.ts
-index 37050450..7fc18065 100644
+index 3705045..7fc1806 100644
--- a/examples-testing/examples/webgpu_clearcoat.ts
+++ b/examples-testing/examples/webgpu_clearcoat.ts
@@ -10,12 +10,12 @@ import { HDRCubeTextureLoader } from 'three/addons/loaders/HDRCubeTextureLoader.
@@ -13365,7 +13401,7 @@ index 37050450..7fc18065 100644
init();
diff --git a/examples-testing/examples/webgpu_clipping.ts b/examples-testing/examples/webgpu_clipping.ts
-index c89b95fe..60e05710 100644
+index c89b95f..60e0571 100644
--- a/examples-testing/examples/webgpu_clipping.ts
+++ b/examples-testing/examples/webgpu_clipping.ts
@@ -12,7 +12,12 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -13410,7 +13446,7 @@ index c89b95fe..60e05710 100644
object.position.y = 0.8;
diff --git a/examples-testing/examples/webgpu_custom_fog_background.ts b/examples-testing/examples/webgpu_custom_fog_background.ts
-index 9f06a5a9..5b5f93ce 100644
+index 9f06a5a..5b5f93c 100644
--- a/examples-testing/examples/webgpu_custom_fog_background.ts
+++ b/examples-testing/examples/webgpu_custom_fog_background.ts
@@ -10,8 +10,8 @@ import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
@@ -13425,7 +13461,7 @@ index 9f06a5a9..5b5f93ce 100644
init();
diff --git a/examples-testing/examples/webgpu_instancing_morph.ts b/examples-testing/examples/webgpu_instancing_morph.ts
-index 0d7e9fe6..5067e622 100644
+index 0d7e9fe..5067e62 100644
--- a/examples-testing/examples/webgpu_instancing_morph.ts
+++ b/examples-testing/examples/webgpu_instancing_morph.ts
@@ -7,7 +7,13 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -13462,7 +13498,7 @@ index 0d7e9fe6..5067e622 100644
renderer.render(scene, camera);
diff --git a/examples-testing/examples/webgpu_lights_ies_spotlight.ts b/examples-testing/examples/webgpu_lights_ies_spotlight.ts
-index 1430a290..58b951d4 100644
+index 1430a29..58b951d 100644
--- a/examples-testing/examples/webgpu_lights_ies_spotlight.ts
+++ b/examples-testing/examples/webgpu_lights_ies_spotlight.ts
@@ -7,12 +7,12 @@ import WebGPURenderer from 'three/addons/renderers/webgpu/WebGPURenderer.js';
@@ -13492,7 +13528,7 @@ index 1430a290..58b951d4 100644
for (let i = 0; i < lights.length; i++) {
diff --git a/examples-testing/examples/webgpu_loader_gltf.ts b/examples-testing/examples/webgpu_loader_gltf.ts
-index d0fd3109..7292c9ed 100644
+index d0fd310..7292c9e 100644
--- a/examples-testing/examples/webgpu_loader_gltf.ts
+++ b/examples-testing/examples/webgpu_loader_gltf.ts
@@ -10,7 +10,7 @@ import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
@@ -13505,7 +13541,7 @@ index d0fd3109..7292c9ed 100644
init();
render();
diff --git a/examples-testing/examples/webgpu_loader_gltf_anisotropy.ts b/examples-testing/examples/webgpu_loader_gltf_anisotropy.ts
-index b5e71a42..0e819254 100644
+index b5e71a4..0e81925 100644
--- a/examples-testing/examples/webgpu_loader_gltf_anisotropy.ts
+++ b/examples-testing/examples/webgpu_loader_gltf_anisotropy.ts
@@ -6,7 +6,7 @@ import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
@@ -13518,7 +13554,7 @@ index b5e71a42..0e819254 100644
init();
diff --git a/examples-testing/examples/webgpu_loader_gltf_compressed.ts b/examples-testing/examples/webgpu_loader_gltf_compressed.ts
-index 74e7d69d..bacdc109 100644
+index 74e7d69..bacdc10 100644
--- a/examples-testing/examples/webgpu_loader_gltf_compressed.ts
+++ b/examples-testing/examples/webgpu_loader_gltf_compressed.ts
@@ -8,7 +8,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -13530,8 +13566,21 @@ index 74e7d69d..bacdc109 100644
init();
+diff --git a/examples-testing/examples/webgpu_loader_gltf_dispersion.ts b/examples-testing/examples/webgpu_loader_gltf_dispersion.ts
+index 2985687..731ee60 100644
+--- a/examples-testing/examples/webgpu_loader_gltf_dispersion.ts
++++ b/examples-testing/examples/webgpu_loader_gltf_dispersion.ts
+@@ -6,7 +6,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
+ import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
+
+-let camera, scene, renderer;
++let camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: WebGPURenderer;
+
+ init().then(render);
+
diff --git a/examples-testing/examples/webgpu_loader_gltf_iridescence.ts b/examples-testing/examples/webgpu_loader_gltf_iridescence.ts
-index b36a9fee..d4c841b8 100644
+index b36a9fe..d4c841b 100644
--- a/examples-testing/examples/webgpu_loader_gltf_iridescence.ts
+++ b/examples-testing/examples/webgpu_loader_gltf_iridescence.ts
@@ -9,7 +9,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -13544,7 +13593,7 @@ index b36a9fee..d4c841b8 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 b8fb3832..0bcc65c1 100644
+index b8fb383..0bcc65c 100644
--- a/examples-testing/examples/webgpu_loader_gltf_sheen.ts
+++ b/examples-testing/examples/webgpu_loader_gltf_sheen.ts
@@ -11,7 +11,7 @@ import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
@@ -13569,7 +13618,7 @@ index b8fb3832..0bcc65c1 100644
const gui = new GUI();
diff --git a/examples-testing/examples/webgpu_loader_gltf_transmission.ts b/examples-testing/examples/webgpu_loader_gltf_transmission.ts
-index e8de51c0..1db14de9 100644
+index e8de51c..1db14de 100644
--- a/examples-testing/examples/webgpu_loader_gltf_transmission.ts
+++ b/examples-testing/examples/webgpu_loader_gltf_transmission.ts
@@ -8,7 +8,12 @@ import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
@@ -13587,7 +13636,7 @@ index e8de51c0..1db14de9 100644
init();
diff --git a/examples-testing/examples/webgpu_materials_displacementmap.ts b/examples-testing/examples/webgpu_materials_displacementmap.ts
-index 5c7287ff..da3d0831 100644
+index 5c7287f..da3d083 100644
--- a/examples-testing/examples/webgpu_materials_displacementmap.ts
+++ b/examples-testing/examples/webgpu_materials_displacementmap.ts
@@ -10,8 +10,8 @@ import { OBJLoader } from 'three/addons/loaders/OBJLoader.js';
@@ -13623,7 +13672,7 @@ index 5c7287ff..da3d0831 100644
mesh = new THREE.Mesh(geometry, material);
diff --git a/examples-testing/examples/webgpu_materials_lightmap.ts b/examples-testing/examples/webgpu_materials_lightmap.ts
-index 99b484c4..9eb3c67b 100644
+index 99b484c..9eb3c67 100644
--- a/examples-testing/examples/webgpu_materials_lightmap.ts
+++ b/examples-testing/examples/webgpu_materials_lightmap.ts
@@ -8,8 +8,8 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
@@ -13638,7 +13687,7 @@ index 99b484c4..9eb3c67b 100644
init();
diff --git a/examples-testing/examples/webgpu_materials_texture_anisotropy.ts b/examples-testing/examples/webgpu_materials_texture_anisotropy.ts
-index ca0ae9e7..2125232e 100644
+index ca0ae9e..2125232 100644
--- a/examples-testing/examples/webgpu_materials_texture_anisotropy.ts
+++ b/examples-testing/examples/webgpu_materials_texture_anisotropy.ts
@@ -3,9 +3,9 @@ import * as THREE from 'three';
@@ -13679,7 +13728,7 @@ index ca0ae9e7..2125232e 100644
const windowHalfY = window.innerHeight / 2;
diff --git a/examples-testing/examples/webgpu_materials_texture_partialupdate.ts b/examples-testing/examples/webgpu_materials_texture_partialupdate.ts
-index b25b4234..8f3d457b 100644
+index 83d6b53..8f3d457 100644
--- a/examples-testing/examples/webgpu_materials_texture_partialupdate.ts
+++ b/examples-testing/examples/webgpu_materials_texture_partialupdate.ts
@@ -1,7 +1,12 @@
@@ -13696,12 +13745,7 @@ index b25b4234..8f3d457b 100644
let last = 0;
const position = new THREE.Vector2();
-@@ -75,11 +80,11 @@ async function animate() {
-
- // perform copy from src to dest texture to a random position
-
-- renderer.copyTextureToTexture(dataTexture, diffuseMap, new THREE.Vector2(), position);
-+ renderer.copyTextureToTexture(dataTexture, diffuseMap, null, position);
+@@ -79,7 +84,7 @@ async function animate() {
}
}
@@ -13711,7 +13755,7 @@ index b25b4234..8f3d457b 100644
const data = texture.image.data;
diff --git a/examples-testing/examples/webgpu_materials_toon.ts b/examples-testing/examples/webgpu_materials_toon.ts
-index 107f4f84..f7b787da 100644
+index 107f4f8..f7b787d 100644
--- a/examples-testing/examples/webgpu_materials_toon.ts
+++ b/examples-testing/examples/webgpu_materials_toon.ts
@@ -12,18 +12,19 @@ import Stats from 'three/addons/libs/stats.module.js';
@@ -13748,7 +13792,7 @@ index 107f4f84..f7b787da 100644
font: font,
diff --git a/examples-testing/examples/webgpu_materials_transmission.ts b/examples-testing/examples/webgpu_materials_transmission.ts
-index f3f854ee..72688efc 100644
+index f3f854e..72688ef 100644
--- a/examples-testing/examples/webgpu_materials_transmission.ts
+++ b/examples-testing/examples/webgpu_materials_transmission.ts
@@ -21,7 +21,7 @@ const params = {
@@ -13770,7 +13814,7 @@ index f3f854ee..72688efc 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 fbbabfca..a1a82bd3 100644
+index fbbabfc..a1a82bd 100644
--- a/examples-testing/examples/webgpu_materials_video.ts
+++ b/examples-testing/examples/webgpu_materials_video.ts
@@ -2,11 +2,14 @@ import * as THREE from 'three';
@@ -13884,7 +13928,7 @@ index fbbabfca..a1a82bd3 100644
}
diff --git a/examples-testing/examples/webgpu_mesh_batch.ts b/examples-testing/examples/webgpu_mesh_batch.ts
-index 53166211..48fb5207 100644
+index 5316621..48fb520 100644
--- a/examples-testing/examples/webgpu_mesh_batch.ts
+++ b/examples-testing/examples/webgpu_mesh_batch.ts
@@ -4,15 +4,15 @@ import Stats from 'stats-gl';
@@ -13976,7 +14020,7 @@ index 53166211..48fb5207 100644
list[i].z *= factor;
}
diff --git a/examples-testing/examples/webgpu_morphtargets.ts b/examples-testing/examples/webgpu_morphtargets.ts
-index 751d39f9..f54fb934 100644
+index 751d39f..f54fb93 100644
--- a/examples-testing/examples/webgpu_morphtargets.ts
+++ b/examples-testing/examples/webgpu_morphtargets.ts
@@ -8,7 +8,11 @@ import WebGL from 'three/addons/capabilities/WebGL.js';
@@ -14026,7 +14070,7 @@ index 751d39f9..f54fb934 100644
}
diff --git a/examples-testing/examples/webgpu_morphtargets_face.ts b/examples-testing/examples/webgpu_morphtargets_face.ts
-index 3a13ab5a..2850b1be 100644
+index 3a13ab5..2850b1b 100644
--- a/examples-testing/examples/webgpu_morphtargets_face.ts
+++ b/examples-testing/examples/webgpu_morphtargets_face.ts
@@ -24,7 +24,7 @@ async function init() {
@@ -14059,7 +14103,7 @@ index 3a13ab5a..2850b1be 100644
}
});
diff --git a/examples-testing/examples/webgpu_multiple_rendertargets_readback.ts b/examples-testing/examples/webgpu_multiple_rendertargets_readback.ts
-index 19e195de..6a7d4ceb 100644
+index 19e195d..6a7d4ce 100644
--- a/examples-testing/examples/webgpu_multiple_rendertargets_readback.ts
+++ b/examples-testing/examples/webgpu_multiple_rendertargets_readback.ts
@@ -26,8 +26,14 @@ import WebGPURenderer from 'three/addons/renderers/webgpu/WebGPURenderer.js';
@@ -14145,7 +14189,7 @@ index 19e195de..6a7d4ceb 100644
pixelBufferTexture.image.data = pixelBuffer;
pixelBufferTexture.needsUpdate = true;
diff --git a/examples-testing/examples/webgpu_parallax_uv.ts b/examples-testing/examples/webgpu_parallax_uv.ts
-index 2540603f..0d2dd795 100644
+index 2540603..0d2dd79 100644
--- a/examples-testing/examples/webgpu_parallax_uv.ts
+++ b/examples-testing/examples/webgpu_parallax_uv.ts
@@ -5,9 +5,9 @@ import WebGPURenderer from 'three/addons/renderers/webgpu/WebGPURenderer.js';
@@ -14161,7 +14205,7 @@ index 2540603f..0d2dd795 100644
init();
diff --git a/examples-testing/examples/webgpu_postprocessing_afterimage.ts b/examples-testing/examples/webgpu_postprocessing_afterimage.ts
-index b89f2921..c3cfcdfe 100644
+index b89f292..c3cfcdf 100644
--- a/examples-testing/examples/webgpu_postprocessing_afterimage.ts
+++ b/examples-testing/examples/webgpu_postprocessing_afterimage.ts
@@ -5,9 +5,10 @@ import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
@@ -14188,7 +14232,7 @@ index b89f2921..c3cfcdfe 100644
postProcessing.outputNode = combinedPass;
diff --git a/examples-testing/examples/webgpu_video_panorama.ts b/examples-testing/examples/webgpu_video_panorama.ts
-index c6e051fe..dca0db31 100644
+index c6e051f..dca0db3 100644
--- a/examples-testing/examples/webgpu_video_panorama.ts
+++ b/examples-testing/examples/webgpu_video_panorama.ts
@@ -2,7 +2,7 @@ import * as THREE from 'three';
@@ -14237,7 +14281,7 @@ index c6e051fe..dca0db31 100644
lon = (onPointerDownPointerX - event.clientX) * 0.1 + onPointerDownLon;
lat = (onPointerDownPointerY - event.clientY) * 0.1 + onPointerDownLat;
diff --git a/examples-testing/examples/webxr_ar_cones.ts b/examples-testing/examples/webxr_ar_cones.ts
-index 95eb3439..0e641cdb 100644
+index 95eb343..0e641cd 100644
--- a/examples-testing/examples/webxr_ar_cones.ts
+++ b/examples-testing/examples/webxr_ar_cones.ts
@@ -1,8 +1,8 @@
@@ -14252,7 +14296,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 1867cc47..77acf97e 100644
+index 1867cc4..77acf97 100644
--- a/examples-testing/examples/webxr_ar_hittest.ts
+++ b/examples-testing/examples/webxr_ar_hittest.ts
@@ -1,13 +1,13 @@
@@ -14302,7 +14346,7 @@ index 1867cc47..77acf97e 100644
reticle.visible = false;
}
diff --git a/examples-testing/examples/webxr_ar_lighting.ts b/examples-testing/examples/webxr_ar_lighting.ts
-index 9de23ad9..df20bb43 100644
+index 9de23ad..df20bb4 100644
--- a/examples-testing/examples/webxr_ar_lighting.ts
+++ b/examples-testing/examples/webxr_ar_lighting.ts
@@ -3,9 +3,9 @@ import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
@@ -14319,7 +14363,7 @@ index 9de23ad9..df20bb43 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 d746e45..af438f0 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';
@@ -14343,7 +14387,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 535e1c9..ab2e4ee 100644
--- a/examples-testing/examples/webxr_vr_panorama.ts
+++ b/examples-testing/examples/webxr_vr_panorama.ts
@@ -1,9 +1,9 @@
@@ -14380,7 +14424,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 66215469..9ad505c4 100644
+index 6621546..9ad505c 100644
--- a/examples-testing/examples/webxr_vr_panorama_depth.ts
+++ b/examples-testing/examples/webxr_vr_panorama_depth.ts
@@ -1,12 +1,16 @@
@@ -14403,7 +14447,7 @@ index 66215469..9ad505c4 100644
clock = new THREE.Clock();
diff --git a/examples-testing/examples/webxr_vr_rollercoaster.ts b/examples-testing/examples/webxr_vr_rollercoaster.ts
-index b8c35a9e..ee5f02da 100644
+index b8c35a9..ee5f02d 100644
--- a/examples-testing/examples/webxr_vr_rollercoaster.ts
+++ b/examples-testing/examples/webxr_vr_rollercoaster.ts
@@ -9,7 +9,7 @@ import {
@@ -14443,7 +14487,7 @@ index b8c35a9e..ee5f02da 100644
//
diff --git a/examples-testing/examples/webxr_vr_sandbox.ts b/examples-testing/examples/webxr_vr_sandbox.ts
-index 9e8e7590..72aab013 100644
+index 9e8e759..72aab01 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
@@ -14480,7 +14524,7 @@ index 9e8e7590..72aab013 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 50a9904..b5925eb 100644
--- a/examples-testing/examples/webxr_vr_video.ts
+++ b/examples-testing/examples/webxr_vr_video.ts
@@ -1,12 +1,12 @@
@@ -14508,7 +14552,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 f3b4796e..c66cccea 100644
+index f3b4796..c66ccce 100644
--- a/examples-testing/examples/webxr_xr_controls_transform.ts
+++ b/examples-testing/examples/webxr_xr_controls_transform.ts
@@ -3,14 +3,14 @@ import { TransformControls } from 'three/addons/controls/TransformControls.js';
diff --git a/three.js b/three.js
index db0a63d4f..7a2ccef35 160000
--- a/three.js
+++ b/three.js
@@ -1 +1 @@
-Subproject commit db0a63d4f0c5819267c88a4507471913ad57184f
+Subproject commit 7a2ccef35998273f4cb99d20ffaea08c7d44ef52
diff --git a/types/three/examples/jsm/nodes/Nodes.d.ts b/types/three/examples/jsm/nodes/Nodes.d.ts
index 809b1d390..06758aef2 100644
--- a/types/three/examples/jsm/nodes/Nodes.d.ts
+++ b/types/three/examples/jsm/nodes/Nodes.d.ts
@@ -211,6 +211,7 @@ export {
materialClearcoatNormal,
materialClearcoatRoughness,
materialColor,
+ materialDispersion,
materialEmissive,
materialIridescence,
materialIridescenceIOR,
diff --git a/types/three/examples/jsm/nodes/accessors/MaterialNode.d.ts b/types/three/examples/jsm/nodes/accessors/MaterialNode.d.ts
index ffdf65a18..e6ab14ca6 100644
--- a/types/three/examples/jsm/nodes/accessors/MaterialNode.d.ts
+++ b/types/three/examples/jsm/nodes/accessors/MaterialNode.d.ts
@@ -37,7 +37,8 @@ export type MaterialNodeScope =
| typeof MaterialNode.LINE_GAP_SIZE
| typeof MaterialNode.LINE_WIDTH
| typeof MaterialNode.LINE_DASH_OFFSET
- | typeof MaterialNode.POINT_WIDTH;
+ | typeof MaterialNode.POINT_WIDTH
+ | typeof MaterialNode.DISPERSION;
export default class MaterialNode extends Node {
static ALPHA_TEST: "alphaTest";
@@ -74,6 +75,7 @@ export default class MaterialNode extends Node {
static LINE_WIDTH: "linewidth";
static LINE_DASH_OFFSET: "dashOffset";
static POINT_WIDTH: "pointWidth";
+ static DISPERSION: "dispersion";
scope: MaterialNodeScope;
constructor(scope?: MaterialNodeScope);
@@ -115,4 +117,5 @@ export const materialLineGapSize: ShaderNodeObject;
export const materialLineWidth: ShaderNodeObject;
export const materialLineDashOffset: ShaderNodeObject;
export const materialPointWidth: ShaderNodeObject;
+export const materialDispersion: ShaderNodeObject;
export const materialAnisotropyVector: ShaderNodeObject>;
diff --git a/types/three/examples/jsm/nodes/core/PropertyNode.d.ts b/types/three/examples/jsm/nodes/core/PropertyNode.d.ts
index 1b7feccae..108864abc 100644
--- a/types/three/examples/jsm/nodes/core/PropertyNode.d.ts
+++ b/types/three/examples/jsm/nodes/core/PropertyNode.d.ts
@@ -40,3 +40,4 @@ export const transmission: ShaderNodeObject;
export const thickness: ShaderNodeObject;
export const attenuationDistance: ShaderNodeObject;
export const attenuationColor: ShaderNodeObject;
+export const dispersion: ShaderNodeObject;
diff --git a/types/three/examples/jsm/nodes/functions/PhysicalLightingModel.d.ts b/types/three/examples/jsm/nodes/functions/PhysicalLightingModel.d.ts
index 615b47095..bec381051 100644
--- a/types/three/examples/jsm/nodes/functions/PhysicalLightingModel.d.ts
+++ b/types/three/examples/jsm/nodes/functions/PhysicalLightingModel.d.ts
@@ -7,6 +7,7 @@ export default class PhysicalLightingModel extends LightingModel {
iridescence: boolean;
anisotropy: boolean;
transmission: boolean;
+ dispersion: boolean;
clearcoatRadiance: Node | null;
clearcoatSpecularDirect: Node | null;
@@ -22,6 +23,7 @@ export default class PhysicalLightingModel extends LightingModel {
iridescence?: boolean,
anisotropy?: boolean,
transmission?: boolean,
+ dispersion?: boolean,
);
computeMultiscattering(singleScatter: Node, multiScatter: Node, specularF90: Node): void;
diff --git a/types/three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.d.ts b/types/three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.d.ts
index 07c78fd57..9101caea1 100644
--- a/types/three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.d.ts
+++ b/types/three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.d.ts
@@ -32,6 +32,7 @@ export default class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
thicknessNode: ShaderNodeObject | null;
attenuationDistanceNode: ShaderNodeObject | null;
attenuationColorNode: ShaderNodeObject | null;
+ dispersionNode: ShaderNodeObject | null;
anisotropyNode: ShaderNodeObject | null;
@@ -78,4 +79,11 @@ export default class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
set transmission(value: number);
constructor(parameters?: MeshPhysicalNodeMaterialParameters);
+
+ get useClearcoat(): boolean;
+ get useIridescence(): boolean;
+ get useSheen(): boolean;
+ get useAnisotropy(): boolean;
+ get useTransmission(): boolean;
+ get useDispersion(): boolean;
}