r185
r185
View on GitHubView PackagePublished: Jun 25, 2026

Release Notes

https://github.com/mrdoob/three.js/wiki/Migration-Guide#184--185 https://github.com/mrdoob/three.js/milestone/98?closed=1

  • Global
    • Remove deprecated code. #33407 (@Mugen87)
    • Update package-lock.json. #33563 (@Mugen87)
    • Harmonize errors. #33588 (@Mugen87)
    • Update Three.WebGPU.js. ebd2a765edd45f419f3e530c5d24c83d2567af4f (@Mugen87)
    • Update package-lock.json. bea0fa775817a8b1a25656ce0396e67580557f02 (@Mugen87)
  • AnimationAction
    • Fix time warping bug. #33617 (@Mugen87)
  • BezierInterpolant
    • Refactor inTangents/outTangents. #33515 (@Mugen87)
  • Bindings
    • TSL Compute: Fix needsUpdate. #33530 (@thelazylamaGit)
  • Box3
    • Improve docs. #33633 (@Mugen87)
  • BufferGeometry
    • Fix attribute count mismatch in computeVertexNormals() and computeTangents(). #33520 (@Mugen87)
    • Support Transformed Geometry when Serializing. #33641 (@WestLangley, @Mugen87)
  • CI
    • Improve permissions. #33466 (@Mugen87)
  • ClippingContext
    • Fix stale viewMatrix with multiple cameras. #33578 (@Mugen87)
  • ColorAdjustment
    • Add max() for outputs. #33854 (@sunag)
  • common.glsl
    • WebGLRenderer Shaders: introduce transformNormalByInverseViewMatrix(). #33351 (@WestLangley, @Mugen87)
    • Update inverseTransformDirection definition for clarity. #33431 (@WestLangley)
  • FrustumArray
    • Optimize frustum computations. #33804 (@Mugen87)
  • HTMLTexture
    • Support new WICG HTML-in-Canvas API signatures. #33788 (@ewewraw)
    • Annotate Chrome versions for each API code path. ff95cea91e31f5333ecb7c69edd6d1864ba626f8 (@mrdoob, @claude)
  • IESSpotLight
    • Make sure IES texture can be exchanged. #33502 (@dswhy)
  • Inspector
    • Fix FPS counter freeze when WebGLBackend query is unavailable. #33755 (@sunag)
  • InstanceNode
    • Sync update ranges in updateBefore. #33615 (@thejustinwalsh, @Mugen87)
  • Line2NodeMaterial
    • Refactoring, use native node material hooks. #33689 (@sunag)
    • Fix the warn on cache-key, keep it in set lineColorNode. a219a9deed6798ec7d333433c69c46d44cd1905f (@sunag)
  • LoadingManager
    • Loaders, Editor: Improve handling of assets with unicode characters. #33301 (@Mugen87)
  • Material
    • Fixed setValues() to honor Euler and Vector2 types. #33476 (@FE-kang, @Mugen87)
  • MaterialLoader
    • Add registerMaterial() and Material.fromJSON(). #33714 (@Mugen87)
  • Matrix3
    • deprecate .scale(), .rotate(), and .translate(). #33757 (@WestLangley)
  • Matrix4
    • Introduce faster version of determinant(). #33814 (@Mugen87)
    • Use determinant3x3() where appropriate. #33820 (@WestLangley)
    • Rename determinant3x3() to determinantAffine(). #33823 (@Mugen87)
  • Morph
    • Fix individual morphTargetInfluences per object. #33772 (@sunag)
  • NodeBuilder
    • Fast-path getDataFromNode when no sub-build is active. #33656 (@mrdoob)
    • Use .nodes as Set instead of Array. #33664 (@sunag)
    • Use .sequentialNodes as Set instead of Array. #33703 (@mrdoob)
    • Make registerDeclaration() more robust. #33869 (@Mugen87)
  • NodeMaterial
    • Dynamically copy properties in copy(). #33775 (@sunag)
  • NodeMaterialObserver
    • Fix default version value of textures. #33422 (@Mugen87)
    • Reuse lightsData cache entry per frame. #33425 (@RenaudRohlinger, @claude)
    • Fix environment rotation and intensity checks. #33764 (@Mugen87)
  • Nodes
    • Fix toConst() usage in Camera. #33831 (@Mugen87)
  • NodeUniformBuffer
    • Fix byteLength to follow overridden buffer getter. #33469 (@RenaudRohlinger)
  • NodeUtils
    • Update getAlignmentFromType to use 4-byte elements and add bool type. #33546 (@sunag)
  • npm
    • Exclude examples/fonts from the published package. #33744 (@mrdoob, @claude)
  • Object3D
    • Honor matrixWorldNeedsUpdate in updateWorldMatrix(). #33746 (@Mugen87)
  • ObjectLoader
    • Allow ObjectLoader to use custom loading managers in sync'd image loads. #33669 (@SeanCurtis-TRI)
  • PassNode
    • Fix implicit depth texture creation when depthBuffer: false. #33410 (@thelazylamaGit, @Mugen87)
  • PMREMGenerator
    • Avoid unnecessary depth buffers in render targets. #33585 (@shotamatsuda)
    • Apply await renderer.init() policy. #33587 (@Mugen87)
  • PMREMNode
    • Fix dispose of internal PMREMs. #33849 (@Mugen87)
  • PointShadowNode
    • Fix shadows with logarithmic depth buffer. #33584 (@Mugen87)
  • Raycaster
    • Fix setFromCamera() with ortho cameras. #33568 (@Mugen87)
  • Renderer
    • Export missing classes. #33623 (@pepperoni505)
    • Ensure valid camera state in compileAsync(). #33668 (@Mugen87)
    • Fix light invalidation by nested render calls. #33737 (@Mugen87)
    • Fix compileAsync(). #33784 (@Mugen87)
    • Improve render list processing of render bundles. #33811 (@Mugen87)
    • Merge update ranges if possible. #33813 (@Mugen87)
    • Fully support InstancedMesh with render bundles. #33839 (@Mugen87)
    • Improve texture check in _getShadowNodes(). #33845 (@sunag)
  • Renderers
    • Clean up logs. #33508 (@Mugen87)
    • Fix sort of render lists with reversed depth buffer. #33700 (@Mugen87)
    • Disable bump mapping for wireframe rendering. #33777 (@mrdoob, @claude)
  • RenderList
    • Fix occlusionQueryCount. #33765 (@Mugen87)
  • RenderObject
    • Guard against undefined geometry attribute in getAttributes(). #33460 (@RenaudRohlinger)
    • Properly compare interleaved buffer attributes. #33558 (@Mugen87)
    • Drop redundant morph target check. #33771 (@Mugen87)
    • Optimize getKeys(). #33805 (@Mugen87)
    • Fix handling of side. #33860 (@Mugen87)
  • RTTNode
    • Introduce setResolutioScale() and updates. #33606 (@sunag)
  • ShaderLib
    • Fix formatting of main function declaration. #33696 (@pohlt)
  • Shaders
    • Update nomenclature. #33727 (@WestLangley)
    • Add deprecation note. #33729 (@WestLangley)
  • ShadowFilterNode
    • Use textureGatherCompare in PCFSoftShadowFilter. #33534 (@RenaudRohlinger, @claude, @shotamatsuda)
  • ShadowNode
    • Fix shadow viewer inspect and introduce equirectDirection. #33752 (@sunag)
  • SphereGeometry
    • Make pole vertices more robust. #33652 (@Mugen87)
  • Src
    • Clean up. #33590 (@WestLangley)
  • StackNode
    • Fix outputNode flow propagation. #33405 (@sunag)
  • StereoCamera
    • Fix matrix computation. #33731 (@Mugen87)
  • StorageTextureNode
    • Bypass UV matrix transforms. #33545 (@thelazylamaGit)
    • Set referenceNode & add .store() function. #33544 (@thelazylamaGit)
  • TSL
    • Remove string, arrayBuffer definitions. #33430 (@sunag)
    • Fix setName() for attributes. #33432 (@sunag)
    • Introduce storageTexture3D. #33443 (@shotamatsuda)
    • Make not() on vector produce component-wise logical not. #33442 (@shotamatsuda)
    • Fix redundant min/max calls being generated. #33441 (@shotamatsuda)
    • Fix stack node sequence. #33402 (@sunag)
    • Cache function nodes per renderer's backend. #33517 (@sunag)
    • Add support for textureGather and textureGatherCompare. #33475 (@shotamatsuda, @sunag)
    • Make sure structs are built when compiling functions. #33524 (@Mugen87, @sunag)
    • Introduce nodeProxyConstructor. #33542 (@sunag)
    • Remove modInt export from Three.TSL.js. #33628 (@Methuselah96)
    • Add missing StorageTexture3DNode exports. #33630 (@Methuselah96)
    • Migrate vertex accessor classes to TSL Fn. #33674 (@sunag)
    • Fix varying code sequence in vertex stage. #33709 (@sunag)
    • Align packing nomenclature with packing.glsl.js. #33715 (@WestLangley, @sunag)
    • Introduce ambientOcclusion property. #33728 (@sunag)
    • Fix direction and normal transform methods. #33725 (@Mugen87)
    • Rename directionToFaceDirection -> negateOnBackSide. #33753 (@sunag)
    • Introduce override context. #33807 (@sunag)
    • Use RGBA for batching color. #33866 (@Mugen87)
  • UniformsGroup
    • Pool per-uniform update-range objects. #33427 (@RenaudRohlinger, @claude)
  • WebGLOutput
    • Handle antialias. #33446 (@mrdoob)
  • WebGLRenderer
    • Fix stale scratch framebuffers after context restore. #33533 (@vizerb, @Mugen87)
    • reset statistics (info.reset) before shadowMap.render. #33688 (@ldaoust01)
    • Improve lookups of shader stages. #33829 (@Mugen87)
    • Always bind position to location 0. #33841 (@Mugen87)
    • Fix normal maps with DoubleSide+ flat shading. #33859 (@Mugen87)
    • Fix normal maps with BackSide and vertex tangents. #33861 (@Mugen87)
  • WebGLTextureUtils
    • fix copyTextureToTexture() usage inside updateBefore(). #33736 (@marcofugaro, @Mugen87)
  • WebGLUniformsGroups
    • Optimize UBO updates to avoid GC churn. #33704 (@mrdoob, @claude)
  • WebGPUBackend
    • toggle comment causing import to appear in build. #33449 (@daigofuji)
  • WebGPUBindingUtils
    • Guard updateBinding() against destroyed GPU buffer. #33461 (@RenaudRohlinger, @Mugen87)
  • WebGPUPipelineUtils
    • reset shared render-pipeline descriptor before suspending in the async path. #33794 (@hsheth2, @Mugen87)
  • WebGPURenderer
    • Honor layerUpdates for compressed array textures. #33417 (@RenaudRohlinger, @sunag)
    • Ensure valid render pipelines when using depthBias. #33471 (@Mugen87)
    • Support all BPTC formats. #33482 (@Mugen87)
    • Surface uncaptured GPU errors and WGSL diagnostics. #33418 (@RenaudRohlinger, @claude, @sunag)
    • Restore framebuffer after clear. #33512 (@Mugen87)
    • Make structs work in vertex shader with WebGL. #33509 (@Mugen87)
    • Fix texture disposal for render targets. #33511 (@Mugen87)
    • Honor the Compositor Contract. #33457 (@WestLangley, @Mugen87)
    • Optimize submit() calls. #33513 (@Mugen87)
    • Support rendering to texture arrays. #33507 (@cabanier, @Mugen87, @elalish, @renovate[bot], @ycw)
    • Introduce descriptor classes and caching. #33525 (@Mugen87)
    • Fix mipmap filter mode. #33527 (@XorTdsc)
    • More descriptor usage. #33529 (@Mugen87)
    • Improve support for output types. #33299 (@sunag)
    • Add support for WebXR with WebGPU. #33583 (@cabanier)
    • Manage hardwareClipping on builder level. #33681 (@Mugen87)
    • Fix dispose of override material render objects. #33682 (@Mugen87)
    • Fix stale texture references in bindings. #33680 (@Mugen87)
    • Refactor material lighting setup. #33702 (@sunag)
    • Fix unsupported texture sample counts. #33722 (@sunag)
    • add lighting.enabled. #33721 (@sunag)
    • Fix getShaderAsync() render context retrieval. #33733 (@sunag)
    • Add WGSL polyfill for inverse(). #33745 (@Mugen87)
    • Fix displacement-map shadows. #33774 (@sunag)
    • Track frontFaceCW in needsRenderUpdate. #33780 (@LLiJJing)
    • Correctly honor 4-byte stride alignment. #33787 (@Mugen87)
    • Minor performance fixes. #33802 (@Mugen87)
    • Fully support ExternalTexture. #33816 (@Mugen87)
    • Scope sampler caching to bindings to prevent sampler collision on shared. #33847 (@sunag)
    • Improve Sampler disposal. #33850 (@Mugen87)
  • WebGPUUtils
    • Cache preferred canvas format. #33800 (@Mugen87)
  • XRManager
    • Use foveateBoundTexture() to enable foveation. #33484 (@cabanier)

Docs

  • Improve displacementMap JSDoc. #33453 (@Mugen87)
  • Document minimum texture sizes of PMREMGenerator. #33465 (@Mugen87)
  • Fix JSDoc. #33569 (@Mugen87)
  • Fix code example generation. #33586 (@Mugen87)
  • Fix typo in ARButton docstring. #33608 (@Carifio24)
  • Add color space notes. #33636 (@Mugen87)
  • Correct lightMap description. #33642 (@WestLangley)
  • Fix typos in JSDoc. #33713 (@hanityx)
  • Update TSL.md. 522bc18d8beaf8a145bc69f4c261108071d827fb (@Mugen87)
  • Fix Safari scrolling to anchors. #33719 (@shotamatsuda)
  • Update nomenclature. #33742 (@WestLangley)
  • NodeMaterial.setupOutput and TSL positionLocal. #33791 (@cmhhelgeson)
  • Update TSL.md. 67e7b21040c4224014a637f706c279ce548e98d6 (@sunag)
  • Update TSL.md. 5402547a11f7239473e9085c3dcf724f7aa953ce (@sunag)
  • Fix JSDoc type expressions for docs build. 1b4637dd8530a76dafc5565d49dc62b76982a82b (@mrdoob, @claude)

Manual

  • Fix links in material table. #33487 (@Mugen87)
  • Improve Installation guide. #33599 (@Mugen87)
  • Update nomenclature. #33723 (@WestLangley)
  • Fix link navigation. #33858 (@Mugen87)

Examples

  • Update webgl_loader_svg.html. 27867588d172f90bca9ee93ed3faf4de775a4f6f (@Mugen87)
  • Explicitly set clear color in WebGPU demos. #33452 (@gkjohnson)
  • Clean up. #33470 (@Mugen87)
  • Make wave speed frame rate independent in webgl_shaders_ocean. #33492 (@unrealsid, @Mugen87)
  • Fix final alpha issues. #33496 (@gkjohnson)
  • Update webgl_loader_ifc to use web-ifc directly. #33491 (@agviegas, @claude)
  • Clean up. #33505 (@Mugen87)
  • Add webgpu_furnace_test.html. #33516 (@WestLangley)
  • Added GUI to Furnace Tests. #33523 (@WestLangley)
  • Improve GUI in webgpu_lines_fat.html. #33498 (@WestLangley)
  • Improve GUI in webgl_lines_fat.html. #33538 (@WestLangley)
  • Add Open Graph Protocol fields. #33543 (@Mugen87)
  • Update tags.json. 82181ef0af3f2fbe0e275663b0fc7f287aff2fbd (@Mugen87)
  • Improve webgpu anamorphic, rtt and bloom. #33600 (@sunag)
  • Remove "setDecoderPath" in non-gltf path examples. #33604 (@gkjohnson)
  • Add TSL function for grounded skyboxes. #33611 (@Mugen87)
  • Add nanite-style rasterizer. #33605 (@sunag)
  • Update webgpu_compute_nanite-style.html. 76d1eba5eadada3c25ff8cb0657b8ed23e8aeff1 (@Mugen87)
  • Improve WebGPU AO example. #33631 (@marcofugaro)
  • Improve AO scale. #33637 (@Mugen87)
  • Cleanup webgpu_postprocessing_ssaa. #33653 (@Methuselah96)
  • Optimize and shade smooth Tennyson Bust model. #33655 (@marcofugaro)
  • webgpu_lights_clustered firefly-style HDR sprites. #33660 (@mrdoob)
  • Update CDN dependencies. #33677 (@mrdoob, @claude)
  • Improved face alignment in webgl_morphtargets_webcam. #33690 (@mrdoob, @claude)
  • Add webgpu_skinning_instancing_individual. #33644 (@RenaudRohlinger, @sunag)
  • Migrate examples to new DRACOLoader url config. #33724 (@gkjohnson)
  • Fix Animation Speed label of webgpu_compute_nanite-style. 607fc7dc268e47b94eccc66121224d87a33c5c91 (@sunag)
  • Subset MPLUSRounded1c font in webgl_geometry_text_stroke. #33743 (@mrdoob, @claude)
  • Add TileCreasedNormalsPlugin. #33767 (@mrdoob, @claude)
  • Add inspector to the ball pool example. 195e328825d0bbe237355ee0ab433f60af4f29b9 (@mrdoob, @claude)
  • Add LoftGeometry addon and example. #33776 (@mrdoob, @claude)
  • Rename webgpu_compute_nanite-style to webgpu_compute_rasterizer. 4c83d5e32dc8ef3f46d4024689a752eeb7df4561 (@mrdoob, @claude)
  • Clean up webgpu_compute_rasterizer. 60e798e6c40007d01f7a1392be4f761338a54166 (@mrdoob, @claude)
  • Remove ammo.js examples. #33786 (@mrdoob, @claude)
  • Use CDN version of Ammo.js. #33799 (@Mugen87)
  • Rework webgpu_lights_clustered. #33803 (@mrdoob, @claude)
  • Example: Fix and optimize snow compute demo. #33833 (@Mugen87, @sunag)
  • Add volumetric fire, enhances the VolumetricLightingModel. #33848 (@sunag)
  • Update misc_exporter_gltf_normals.html. 70ea716718752e84fa3223b73d5bd875ceac8a1e (@Mugen87)
  • Add procedural city generator. #33817 (@mrdoob, @claude)
  • Improve webgpu_custom_fog with terrain and forest generators. #33873 (@mrdoob, @claude)
  • Improve webgpu_custom_fog_scattering. #33825 (@mrdoob, @claude)
  • Add webgpu_compute_rasterizer_ibl. #33783 (@mrdoob, @claude, @sunag)
  • Use FirstPersonControls in webgpu_compute_rasterizer. aace2e8bab4ade32dd76af3d5e05b464d20f1a39 (@mrdoob, @claude)

Addons

  • Addons

    • Removed TiledLighting. #33751 (@sunag)
  • ArcballControls

    • Document correct usage of adjustNearFar. #33479 (@Mugen87)
    • Fix swapped X/Y gizmo ring orientations. #33536 (@raeraex2)
  • AsciiEffect

    • Add escapeHTML(). #33567 (@Mugen87)
  • BufferGeometryUtils

    • Optimize toCreasedNormals(). #33768 (@mrdoob, @claude)
  • CSMShadowNode

    • Add support for reversed depth buffer. #33506 (@shotamatsuda)
    • Fix inconsistency in frustum split. #33510 (@shotamatsuda)
  • ClusteredLightsNode

    • Fix point light distance attenuation. #33679 (@mrdoob, @claude)
    • keep castShadow point lights on the material-lights path. #33792 (@hsheth2)
    • include clustered lights in getLights(). #33793 (@hsheth2)
  • DRACOExporter

    • Removed bundled encoders in favor of CDN. #33789 (@mrdoob, @claude)
  • DRACOLoader

    • Use relative file urls by default. #33564 (@gkjohnson)
    • Deprecate "setDecoderConfig" function. #33602 (@gkjohnson)
    • Add exported urls for GLTF decoder. #33691 (@gkjohnson)
  • DataTextureLoader

    • Add createDataTexture(). #33705 (@Mugen87)
  • EXRLoader

    • Fix out-of-bounds read on partial scanline blocks. #33620 (@Mugen87)
  • FXAANode

    • Refactor ApplyFXAA(). #33708 (@Mugen87)
  • FirstPersonControls

    • Damping, separate move sources, release fix, E/Q keys. #33874 (@mrdoob, @claude)
  • GLTFExporter

    • Improve multi-scene animation support. #33748 (@Mugen87)
    • Fix export of normal maps. #33837 (@Mugen87)
  • GTAONode

    • Cosine-weighted integration with per-slice normal projection. #33654 (@marcofugaro)
  • ImportanceSampledEnvironment

    • Spatiotemporal Denoiser for SSR. #33843 (@0beqz)
  • Inspector

    • Added scope for styles. #33456 (@sunag)
    • Added storage settings and info feature. #33571 (@sunag)
    • Add unread warning and error notification badges. #33732 (@sunag)
    • Migrate Graph to Canvas & add FPS graph to toggle button. #33756 (@sunag)
    • Improved Viewer, Timeline. #33750 (@sunag)
    • Fix slider using step() after define the value. #33806 (@sunag)
    • Improve state preservation, layout sizing and add CPU/GPU graph metrics. #33808 (@sunag)
    • Inline extensions configuration and remove extensions.json. #33812 (@sunag)
    • Improve mobile compatibility. #33819 (@sunag)
    • Improve folder renaming, color/select value updates, and visibility controls. #33853 (@sunag)
    • Add overdraw render mode. #33870 (@mrdoob, @claude)
    • Group duplicate console messages and allow detached tab panels to remain visible. #33864 (@sunag)
    • Fix Timeline resize. c1889da3c4fe9f3828fa90786d6a8772252ba966 (@sunag)
  • KTX2Loader

    • Use relative file urls by default. #33603 (@gkjohnson)
    • Fix regression in rgba16 unorm support. #33662 (@donmccurdy)
    • Disable etc1 on Chrome Mesa (Linux). #33697 (@arpu, @Mugen87, @donmccurdy, @mrdoob)
  • LWOLoader

    • Deprecate loader. #33621 (@Mugen87)
  • LightProbeGrid

    • Improve docs. #33426 (@Mugen87)
    • Avoid redundant matrixWorld updates during bake. #33489 (@mrdoob, @claude)
    • Add indirect bounces option to bake(). #33657 (@mrdoob)
  • LineMaterial

    • Fix trimSegment() with reversed depth buffer. #33572 (@Mugen87)
    • Trim line distances. #33607 (@Mugen87)
  • LineSegment2

    • Don't raycast without a valid resolution. #33872 (@Mugen87)
  • LoftGeometry

    • Fix UVs for non-uniform sections. #33815 (@mrdoob)
  • MaterialXLoader

    • Avoid compiling unused BSDF lobes. #33712 (@mrdoob, @claude)
  • Matrix3

    • Remove remaining usage of translate() and scale(). #33754 (@Mugen87)
  • MikkTSpace

    • Add dispose(), cache promise. #33501 (@Shane-oo, @Mugen87)
  • PLYExporter

    • Honor data types of buffer attributes. #33625 (@Mugen87)
    • Support custom attributes. #33627 (@Mugen87)
  • PLYLoader

    • Honor PLY data types when creating buffer attributes. #33622 (@Mugen87)
  • PixelationPassNode

    • Fix examples to avoid fading alpha. #33450 (@gkjohnson)
  • RapierPhysics

    • Add applyImpulse(). #33459 (@Mugen87)
  • Reflector

    • Make getReflectionCamera() public. #33556 (@Mugen87)
  • SSAAPassNode

    • Make clear color handling more consistent. #33478 (@Mugen87)
  • SSGINode

    • Use a half float render target. #33769 (@mrdoob, @claude)
    • Optimize code. #33782 (@Mugen87)
    • Reduce bandwidth with RG11B10. #33822 (@Mugen87)
  • SVGLoader

    • Honor scale in strokeWidth. #33411 (@Mugen87)
    • Improve createShapes(). #33415 (@Mugen87)
    • Add material helpers. #33424 (@Mugen87)
    • Basic gradients support. #33436 (@Mugen87)
    • Make stroke generation more robust. #33438 (@Mugen87)
  • ShapePath

    • Update toShapes(). #33503 (@Mugen87)
  • TransformControls

    • Add viewport support. #33451 (@Mugen87)
    • Fix edge case transforms. #27719 (@AlaricBaraou, @Mugen87)
    • Allow visibility control of rotation gizmos. #33562 (@Mugen87)
  • USDAParser

    • Infer the elementSize of missing skeletal joint attributes. #33596 (@bigbigbiglazycat, @Mugen87)
    • Fix inline-brace prim definitions being silently dropped. #33773 (@wheresoli)
  • USDLoader

    • Preserve USDA animation timing metadata. #33560 (@mkeblx, @mrdoob)
    • Fix texture paths in standalone USD files. #33610 (@Mugen87)
  • USDZExporter

    • Support mimeType setting via Texture.userData. #33579 (@Mugen87)
    • Fix opacity regression. #33580 (@Mugen87)
    • Add animation support. #33589 (@Mugen87)
    • Improve usability. #33597 (@Mugen87)
    • Add multi-material support. #33598 (@Mugen87)
    • Basic normal scale support. #33851 (@Mugen87)
  • USDZLoader

    • Reorder quaternion components in USDA quatf[] array parsing. #33577 (@bigbigbiglazycat, @Mugen87)
    • Preserve attribute connections when a direct value follows. #33581 (@Mugen87)
    • Add onLoad() and onError() to parse(). #33582 (@Mugen87)
  • VRMLLoader

    • Allow multi-line strings. #33616 (@Mugen87)
  • VolumeShader

    • Support perspective cameras. #33493 (@Mugen87)
    • Improve apply_colormap(). #33867 (@Mugen87)
  • Water2Mesh

    • Simplify flowMap setup. #33540 (@Mugen87)
  • WebGPURenderer

    • Added ClusteredLighting (Forward+ clustered) shading. #33406 (@mrdoob, @claude, @sunag)
    • Add fallback for XR with WebGPU. #33497 (@cabanier, @Mugen87, @elalish, @renovate[bot], @ycw)
  • lottie_canvas.module

    • LottieLoader, TTFLoader: Removed bundled libs in favor of CDN. #33798 (@mrdoob, @claude)

Devtools

  • Make hierarchy collapsible. #33645 (@Mugen87)
  • Resolve linter issues. #33646 (@Mugen87)
  • Remove empty scenes. #33647 (@Mugen87)
  • Bump version to 1.16. 4e3822704a4ddca670beaa4f5f779ead0437762b (@mrdoob)
  • clean up. #33879 (@linbingquan)

Editor

  • Remove legacy JSON format Worker code. #33423 (@sebastiondev)
  • Improve SVG setup. #33447 (@Mugen87)
  • Make light targets editable. #33541 (@Mugen87)
  • Fix ListboxItem text content. #33648 (@Mugen87)
  • Add texture parameters dialog. #33651 (@Mugen87)
  • Fix name conflict during glTF export. #33699 (@Mugen87)
  • Rework auto-completion in script editor. #33711 (@Mugen87)
  • Fix collision detection in arkanoid demo. #33718 (@Mugen87)
  • Update arkanoid.app.json. 716b6448c37c77de9a0ec6a7f0368d34eb7b0c48 (@Mugen87)
  • Add support for orthographic cameras. #33701 (@Mugen87)
  • Fix outliner regression. #33735 (@Mugen87)
  • Make size of vertex normals helper configurable. #33790 (@Mugen87)

Tests

  • Add unit test for custom interpolant. #33480 (@Mugen87)
  • Run unittests in browser with Puppeteer. #33550 (@catalin-enache, @Mugen87)
  • Update CatmullRomCurve3.tests.js. 6b719702fbc30f1fc3d6448420601d409df883f8 (@Mugen87)
  • E2E: Update screenshot. #33635 (@Mugen87)
  • E2E: Fix WebGPU Device Lost errors. #33650 (@shotamatsuda)
  • test/e2e: fix Buffer handling for Node.js 23+. #33672 (@WestLangley)
  • E2E: Print elapsed seconds. #33726 (@shotamatsuda)

Utils

  • Improved changelog.js. d718472ad975a38a86bbc63b859f3b2286dc3a53 (@mrdoob, @claude)