mrdoob/three.js
 Watch   
 Star   
 Fork   
2026-04-17 00:09:48
three.js

r184

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

  • Global
    • Update @rollup/plugin-terser to 1.0.0. 456f1696908c6ff169f19c1318ac8b8a87c38541 (@mrdoob, @claude)
    • Update ESLint to ECMA 2022. #33128 (@PoseidonEnergy)
    • Added HTMLTexture. #31233 (@mrdoob, @claude)
  • AnimationAction
    • Preserve interpolant settings on action creation. #33033 (@gigajuad, @Mugen87)
    • Fix timeScale reversal jump. #33035 (@Mugen87)
  • AudioLoader
    • Fix race condition with loading manager. #33378 (@Mugen87)
  • BatchedMesh
    • InstancedMesh, BatchedMesh: Fix getColorAt throwing an error when colors have not been set. #33079 (@gkjohnson)
    • Remove deprecated instancing render paths. #33234 (@Mugen87)
  • CatmullRomCurve3
    • Geometry corruption on 2-point curves. #33270 (@Necro-Rohan)
  • CubeRenderTarget
    • Restore generateMipmaps correctly. #33069 (@PoseidonEnergy)
  • DataTextureLoader
    • Fix log regression. #33148 (@Mugen87)
    • Move return in catch block to correct position. #33243 (@Om-Mishra09)
  • Dev
    • Fix vulnerabilities. #33141 (@Mugen87)
    • Execute npm audit fix. #33333 (@Mugen87)
  • GLSLNodeBuilder
    • Fix texelFetch lod type. #33399 (@Mugen87)
  • ImageBitmapLoader
    • Improve docs. #33379 (@Mugen87)
  • Inspector
    • Add Memory tab and improve Renderer.info. #33097 (@sunag)
  • InstancedMesh
    • add consistent return values to functions. #33059 (@gkjohnson)
  • LightProbeGrid
    • Add position-dependent diffuse Global Illumination. #33125 (@mrdoob, @Mugen87, @claude)
  • Line2NodeMaterial
    • Fix clone() losing worldUnits, dashed, and linewidth. #33236 (@cyphercodes)
  • Line3
    • Handle degenerate line in closestPointToPointParameter(). #33264 (@Necro-Rohan)
  • Loaders
    • Make return types in load() consistent. #33380 (@Mugen87)
  • MaterialLoader
    • Simplified bool check. #33066 (@PoseidonEnergy)
  • Math
    • Make use of Static initialization blocks. #33140 (@PoseidonEnergy)
  • MeshPhysicalMaterial
    • Fix Anisotropic regression. #33205 (@Mugen87)
  • NodeManager
    • Make delete() more robust. #33160 (@Mugen87)
  • NodeMaterialObserver
    • Avoid usage of Object.keys(). #33113 (@Mugen87)
    • Speed up material comparisons. #33198 (@Mugen87)
    • Speed up geometry comparisons. #33199 (@Mugen87)
  • NodeObjectLoader
    • Fix parseAsync(). #33377 (@Mugen87)
  • NodeUtils
    • Replace instanceof Array with Array.isArray(). #33262 (@Mridul012)
  • Object3D
    • Correctly copy pivot. #33163 (@PoseidonEnergy, @Mugen87)
  • ObjectLoader
    • Fix log regression. #33240 (@Om-Mishra09)
  • PassNode
    • Fix scissor and viewport setup. #33204 (@Mugen87)
  • Plane
    • Add clampToLine to intersectLine(). #33398 (@Mugen87)
  • Renderer
    • Make hasCompatibility() more predictable. #33087 (@Mugen87, @sunag)
  • Renderers
    • Make animation modules more robust. #33159 (@Mugen87)
    • Cache pixel storage parameters. #33227 (@Mugen87)
    • Support EXT_texture_norm16 formats. #33303 (@pohlt, @Mugen87)
  • RenderOutputNode
    • Fixes typos in RenderPipeline related docs. #33034 (@jwheare)
  • RenderPipeline
    • Fix sync with renderer.outputColorSpace and renderer.toneMapping. #33187 (@sunag)
  • RenderTarget
    • Preserve multiview in copy(). #33285 (@Kundan-CR7)
  • Shaders
    • Clean up. #33133 (@WestLangley)
  • ShadowNode
    • Add support for renderer.highPrecision. #33246 (@shotamatsuda, @sunag)
  • SkinnedMesh
    • Update "applyBoneTransform" to optionally take Vector4, support direction or position transformation. #33091 (@gkjohnson)
  • Source
    • Fix getSize() for VideoFrame. #33131 (@PoseidonEnergy)
  • Texture
    • Remove default setter parameter. #33129 (@PoseidonEnergy)
  • Textures
    • Improved HTMLTexture support. #33400 (@mrdoob, @claude)
  • Triangle
    • Simpler bool check in isFrontFacing(). #33071 (@PoseidonEnergy)
  • TSL
    • Fix array texture with no .depth() defined breaks shader compilation. #33096 (@sunag)
    • Improves compilation performance by 3.0x. #33120 (@sunag)
    • Fix two issues in StorageTextureNode. #33167 (@PoseidonEnergy)
    • add hyperbolic math nodes. #33233 (@thelazylamaGit)
    • Make global context available within compute nodes. #33231 (@shotamatsuda, @sunag)
    • Add global and local scope. #33302 (@sunag)
    • Add OnFrameUpdate and OnBeforeFrameUpdate. #33356 (@shotamatsuda)
  • UniformsGroup
    • Fix incorrect index in Vector4 dirty check. #33276 (@Mridul012)
  • UniformUtils
    • Fix deep-copy with array of uniforms. #33384 (@Mugen87)
  • ViewportDepthTextureNode
    • Fixes framebuffer caching with multiple references of different sizes. #32690 (@arodic)
  • WebGLOutput
    • Add DepthTexture to scene render target. c0553ae6966096947e2b84499e788c52503a5a2e (@mrdoob, @claude)
  • WebGLRenderer
    • Use working color space for render targets. #33036 (@Mugen87)
    • Add support for packed normal maps. #33055 (@castano)
    • Fix feedback loop regression. #33063 (@Mugen87)
    • Fix envMap and background rotation. #33077 (@WestLangley)
    • Fix active texture setting in copyTextureToTexture(). #33153 (@geekuillaume, @Mugen87)
    • Add NodeMaterial compatibility layer. #32851 (@gkjohnson, @sunag)
    • Improve reverse depth buffer logging. #33176 (@Mugen87)
    • Save/restore textureUnits on render state stack. #33217 (@SSopin)
    • Set depth mask when clearing depth. #33241 (@mlavik1)
    • Implement normal bias fallback. #33391 (@Mugen87)
  • WebGLTextures
    • Prevent flipping image bitmaps. #33073 (@Mugen87)
  • WebGLTimestampQueryPool
    • Fixed warning message. #33068 (@PoseidonEnergy)
  • WebGPUBackend
    • Reuse clear color instance. #33189 (@Mugen87)
    • Simplify code. #33388 (@Mugen87)
  • WebGPURenderer
    • Make compileAsync() truly non-blocking. #32984 (@RenaudRohlinger, @sunag)
    • Fix texture compare fallback for shadows. #33050 (@Mugen87)
    • Honor layerUpdates for array textures. #33072 (@ahaensler)
    • Improve compatibility test for reversed depth buffer. #33086 (@Mugen87)
    • Make device capabilities handling more consistent. #33094 (@Mugen87)
    • Add individual dispose for CanvasTarget caching. #33106 (@sunag)
    • Remove inline functions in rendering methods. #33108 (@PoseidonEnergy, @Mugen87)
    • Use node events to update the binding groups. #33047 (@sunag)
    • Fix WebXR sampling array-texture. #33132 (@sunag)
    • Simplification of the frame buffer cache for WebXR layers. #33154 (@sunag)
    • Support unfilterable float32 StorageTextures. #33155 (@sunag)
    • Use depth32float instead of depth24plus when using reversedDepthBuffer. #33184 (@PoseidonEnergy, @Mugen87)
    • Ensure render targets have consistent default depth values. #33191 (@Mugen87)
    • Add compute shader bounds check. #33186 (@marcofugaro, @sunag)
    • Refactor env map rotation. #33232 (@Mugen87)
    • Introduce Quad cache per RendeTarget texture. #33228 (@sunag)
    • Implement WEBGL_multi_draw fallback. #33238 (@Mugen87)
    • Fix texture issues. #33296 (@Mugen87)
    • Clean up. #33305 (@Mugen87)
    • Introduce ReadbackBuffer and reuse getArrayBufferAsync() buffers. #33300 (@sunag)
    • Fix WebGPU render bundle reuse across render contexts. #33335 (@RenaudRohlinger)
    • Adjust getArrayBufferAsync behavior, add support for partial readback. #33322 (@gkjohnson, @sunag)
  • WebGPUTextureUtils
    • Fix check layerUpdates property. #33075 (@sunag)
    • Fix copyTextureToBuffer() dispose buffer. #33366 (@sunag)
  • WebXRController
    • Add grip update event if enabled. #33118 (@danrossi, @Mugen87)
  • WGSLNodeBuilder
    • Fix varying indexes. #33229 (@sunag)
    • Fix textureDimensions() cache scope. #33312 (@sunag)
    • Add allowGlobalVariables. #33319 (@sunag)

Docs

  • Fix billboarding examples in TSL.md. #33056 (@jwheare)
  • Using the correct class type for NodeManager. #33067 (@PoseidonEnergy)
  • Fix typo in JSDoc. #33130 (@PoseidonEnergy)
  • Improve JSDoc. #33213 (@Mugen87)
  • Fix module links in search. #33255 (@Mugen87)
  • Fix typos in TessellateModifier and LineMaterial. #33272 (@Jadu07)
  • Update incorrect documentation for setMatrixAt. #33310 (@nopeless)
  • Improve JSDoc. 37a0863cc7ce723922c67feb9cca30cdb5d2a637 (@Mugen87)

Manual

  • Translate manual/zh/game.html to Chinese. #33123 (@DDDDD12138)
  • Remove reference to Matrix4.setRotationFromQuaternion(). #33320 (@Kodub)

Examples

  • Add sky to scene. #33037 (@Mugen87)
  • Fix colors in webgpu_custom_fog. #33057 (@Methuselah96)
  • Fix floor threshold in games_fps. #33053 (@Mugen87)
  • Improve watch demo. #33089 (@lo-th, @Mugen87)
  • Rename webxr_xr_sculpt to webxr_xr_marchingcubes. 3a0e75bae17144edc35220c77cdfde029101d939 (@mrdoob)
  • Improve MapControls demo. #33171 (@Mugen87)
  • Add SSGI Ball Pool demo. #33258 (@mrdoob, @claude)
  • Fix links missing target="_blank" in webgl_loader_3dtiles example. 11e6acb93e826c62deb1e18cc251f6812e889cac (@mrdoob, @claude)
  • Add volumetric clouds and atmosphere to webgl_loader_3dtiles. #33292 (@mrdoob, @claude)
  • fix ArcherRi01 model ext name. #33324 (@linbingquan)
  • Update versions for external libraries. #33362 (@gkjohnson)
  • Autoplay sintel video, remove Play overlay. f3fa844ba4ca59d4f1bef62daadcea720456de39 (@mrdoob, @claude)
  • Remove unused memorial.png texture. 6814f96375a7eba5946c808d898422c7c5edb5f0 (@mrdoob, @claude)
  • Add banking to roller coaster track and camera. 354fc4ec29c0a5b7c9f21909e57e6e0e5d053e81 (@mrdoob, @claude)
  • Fix lightprobes complex scene issues. 4cf573d9ab3442b663eed9a1639376138f4797b1 (@mrdoob, @claude)

Addons

  • Addons

    • Update export file. #33390 (@Mugen87)
  • ArcballControls

    • Controls reset touch-action to empty string instead of 'auto'. #33144 (@Kodub)
  • Bayer

    • Bayer node: fix web worker usage. #33279 (@pavel-mazhuga, @Mugen87)
  • BufferGeometryUtils

    • Fix two bugs. #33338 (@nameearly)
  • CCDIKSolver

    • Fix limitation handling. #33386 (@Mugen87)
  • CSMShadowNode

    • Fix error when disposed multiple times. #33202 (@shotamatsuda)
  • ChromaticAberrationNode

    • Remove unused _invSize uniform. cbf6fff0287c3d259a17af418a549f8598eb47ed (@Mugen87)
  • ColladaLoader

    • Add suport for polygons primitive. #33143 (@Mugen87)
    • Add support for instance_joint. #33293 (@Mugen87)
  • ColorUtils

    • Add setKelvin(). #33381 (@Nedunchezhiyan-M, @Mugen87)
  • EXRLoader

    • Support YCbCr and B44/A. #33212 (@Mugen87)
    • Fix channel rule matching. #33216 (@Mugen87)
    • Add multi-part and deep scanline support. #33218 (@Mugen87)
    • Put known headers into "skipped" section. #33248 (@Mugen87)
    • Remove buggy getBigInt64() fallback. #33387 (@Mugen87)
  • FBXLoader

    • Add skinning fixes. #33316 (@Mugen87)
    • Correct bind matrix. #33317 (@Mugen87)
    • Fix penumbra computation. #33321 (@Mugen87)
    • Fix rotation animations. #33323 (@Mugen87)
    • Fix opacity fallback. #33325 (@Mugen87)
    • Guard against orphaned animation curve nodes. #33327 (@digitalbreed)
    • Add coordinate system correction for Z-up. #33332 (@Mugen87)
    • Fix morph deltas. #33350 (@Mugen87)
  • FSR1Node

    • Add FSR 1 port for WebGPURenderer. #33339 (@Mugen87)
  • FirstPersonControls

    • Update interaction model. #33124 (@mrdoob, @claude)
    • Fix deprecated handleResize() message. f5d4b94ac51f1a4e552770a5de588fd2a016bef3 (@mrdoob, @claude)
  • GLSLDecoder

    • Replace deprecated substr() with slice(). #33260 (@Mridul012)
  • GLTFExporter

    • Add EXT_texture_webp support. #33117 (@BorisKourt)
    • Make attribute prefix more robust. #33357 (@Mugen87)
  • GLTFLoader

    • Fix morph target parsing. #33020 (@Mugen87)
    • Handle zero ior edge case. #33119 (@Mugen87)
  • GPUComputationRenderer

    • Call dispose() on variable's material. #33318 (@madisonrickert, @claude)
  • GodraysNode

    • Simplify shadow coord computation. #33162 (@Mugen87)
  • HDRLoader

    • Fix header parse logic. #33174 (@stack1ng)
  • Inspector

    • Use fixed mini-panel. #33070 (@sunag)
    • Introduce forceWebGL. #33074 (@sunag)
    • Introduce Timeline ( Commands Recorder ). #33078 (@sunag)
    • Add Capture Stack Trace for Settings. #33122 (@sunag)
    • Added string type support to parameters. #33156 (@sunag)
    • Introduce TSL Graph Addons. #33165 (@sunag)
    • Add export functionality to Inspector Timeline tab and enhance call detail logging. #33192 (@Makio64, @sunag)
    • Added Extension support and revisions. #33200 (@sunag)
    • Improvements. #33230 (@sunag)
    • Fix Tab.isActive. 33feff9e355cddabc3493533fb4ee9bc09091c6d (@sunag)
    • Replace deprecated substr() with slice(). #33267 (@Mridul012)
  • KTX2Loader

    • Support RGBA 16-bit unsigned normalized formats. #33245 (@donmccurdy, @Mugen87)
  • LDrawLoader

    • Fix incorrect normals on double sided faces. #33383 (@Mugen87)
  • OutlineNode

    • Support sprites. #33112 (@Mugen87)
    • Early out when nothing is selected. #33358 (@Mugen87)
  • Reflector

    • Support orthographic cameras. #33249 (@Mugen87)
    • Clean up. b4822a411ab883290e21f9f5251ed40a7815265c (@Mugen87)
  • SSGINode

    • Remove dead code. 4c1fe47d87c2869af064101fab856d3fa289cc68 (@mrdoob, @claude)
  • SVGLoader

    • Fix round stroke joins and caps when arcDivisions = 1. #33256 (@georgpukk, @Mugen87)
  • SVGRenderer

    • Fix performance regression. #33220 (@Mugen87)
  • Sky

    • Make sun disc optional. #33031 (@jwheare)
  • TAAUNode

    • Adding new node for TAA with Upsampling. #33368 (@Mugen87)
  • TRAANode

    • Improve docs. d2d9d4069320de51d2e7f36855375f4640578ecb (@Mugen87)
    • Add velocity node source. #32274 (@shotamatsuda)
    • Add support for reversed/logarithmic depth buffers and orthograhic cameras. #33364 (@shotamatsuda)
  • TSL

    • Improve dispose() of some FX addons. #33126 (@Mugen87)
  • TransformControls

    • Allow visibility control of plane gizmos. #33170 (@Mugen87)
  • USDCParser

    • handle empty array payload and validate offsets. 9a141d0f9c0528275a7f3ca3bf7745a5cca70de2 (@mrdoob)
  • USDComposer

    • recurse mesh children and skip GeomSubset nodes. db5f5e5496e7844736aecb012e039018c1e43b0f (@mrdoob)
    • avoid global displayOpacity on subset materials. 7f89d9b273ef32af1666fbd2b61c6dc4d5c39822 (@mrdoob)
    • add Camera prim parsing. 8d9c591c1c93a5c583a69e5ec6083d26b85a028d (@mrdoob)
    • Add light support. a158b85f4eff6f3fdfa4dfdaa01087fca9fabcf6 (@mrdoob, @claude)
    • Fix reference parsing. #33294 (@Mugen87)
    • Fix uv data for multi-material meshes. #33297 (@Mugen87)
  • USDLoader

    • Fix flat shading on meshes without normals. #33081 (@mrdoob, @claude)
    • Add support for geometric primitives (Cube, Sphere, Cylinder, Cone, Capsule). #33082 (@mrdoob, @claude)
    • Add support for MaterialX UsdPreviewSurface materials. #33083 (@mrdoob, @claude)
    • Add metersPerUnit support. #33084 (@mrdoob, @claude)
    • Fix skeleton skinning distortion. #33085 (@mrdoob, @claude)
  • VTKLoader

    • Deprecated loader. #33363 (@Mugen87)
  • WebGPURenderer

    • Introduce Dynamic Lights. #33042 (@RenaudRohlinger, @sunag)
  • WebXR

    • Added model caching to XRHandModelFactory. #33252 (@NssGourav, @Mugen87)
  • meshopt_decoder.module

    • Upgrade meshopt_decoder.module.js to 1.1.1. #33393 (@zeux)

Devtools

  • Added new DevTools. #30870 (@mrdoob, @Darkensses, @cesmoak, @claude, @github-advanced-security[bot])

Editor

  • add deterministic dropped-file finder for URL resolution. 52133860a3021871867a9f194e92062c5931e4e6 (@mrdoob)
  • Improve animation panel. #33110 (@Mugen87)
  • Add TextGeometry. #33253 (@Mugen87)

Tests

  • E2E: Replace SwiftShader with software Dawn (Lavapipe). #33346 (@mrdoob, @claude)
  • E2E: Tighten pixel diff tolerance and refresh screenshots. #33389 (@mrdoob, @claude)
  • E2E: Added webgpu_compute_sort_bitonic to exceptionList. 4a48e81fa8691027b7fdc8180a5df04cf6827410 (@mrdoob)
2026-02-18 20:18:54
three.js

r183

https://github.com/mrdoob/three.js/wiki/Migration-Guide#182--183 https://github.com/mrdoob/three.js/milestone/96?closed=1

  • Global
    • Remove deprecated code. #32569 (@Mugen87)
    • Replace eslint-plugin-import with eslint-plugin-import-x. #32651 (@mrdoob)
    • Removed eslint-plugin-import-x. #32653 (@mrdoob)
    • Bump lodash from 4.17.21 to 4.17.23. #32814 (@dependabot)
    • remove jshint remnants. #32885 (@ycw)
    • Update package.json. 4c280ff9c2599baba7afe262e434a1449d6f67d4 (@Mugen87)
    • Update package.json. 3332b33bea214d2033de83272ec56bd08dca4a00 (@Mugen87)
  • Animation
    • Add BezierInterpolant. #32829 (@mrdoob, @claude)
  • AnimationAction
    • Fixed typos in /src folder. #32629 (@mrdoob)
  • AnimationMixer
    • DEVTOOLS access to AnimationMixer + Loaders. #32616 (@marwie)
  • BatchedMesh
    • correctly set the nextIndexStart, nextVertexStart. #32744 (@gkjohnson)
    • Enable per-instance opacity. #32725 (@vanruesc, @gkjohnson)
    • Add support for wireframe materials. #32948 (@gkjohnson)
  • BindGroup
    • Remove bindingsReference. #32910 (@Mugen87)
  • Cache
    • Don't cache Blobs. #32989 (@Mugen87)
  • Camera
    • Exclude scale from view matrix. #32805 (@Mugen87)
  • Clock
    • Deprecated module. #32798 (@Mugen87)
  • Core
    • Add ReversedDepthFuncs dictionary. #32983 (@Mugen87)
  • GLSLNodeBuilder
    • Fix CubeDepthTexture sampler. #32857 (@Mugen87)
    • Fix array texture layer support for filtered sampling. #33008 (@RenaudRohlinger)
  • Helpers
    • Clarify the usage of update(). #32717 (@Mugen87)
  • InstanceNode
    • Support velocity. #32586 (@Mugen87)
    • Fix UBO size and attribute update. #32615 (@Mugen87)
  • Lighting
    • Refactor camera usage. #32557 (@sunag)
  • LightShadow
    • Introduce biasNode. #32811 (@Mugen87)
  • Line2NodeMaterial
    • Avoid performance degradation with viewportSharedTexture(). #32639 (@Mugen87, @sunag)
    • Rename useColor property to vertexColors. #32670 (@sunag)
  • Line3
    • Fix closest point in distanceSqToLine3(). #32878 (@Mugen87)
  • Matrix4
    • Cache determinant result in decompose(). #32658 (@mrdoob, @microsoftcopilot)
    • Optimize invert() calculation. #32657 (@mrdoob)
  • MeshLambertMaterial
    • Add support for scene.environment IBL. #32791 (@mrdoob, @claude)
  • MeshPhongMaterial
    • Add support for scene.environment IBL. #32795 (@mrdoob, @claude)
  • MeshPhysicalMaterial
    • Added clearcoat support for rect area lights. #32809 (@TobiasNoell)
  • MeshPhysicalNodeMaterial
    • Fix missing iorNode in MeshPhysicalNodeMaterial copy method. #32821 (@TobiasNoell)
  • NodeBuilder
    • Fix shared group detection. #32913 (@Mugen87)
    • Fix update nodes sequence. #32991 (@sunag)
  • NodeBuilders
    • Unifies uniform groups of different shader stages. #32534 (@sunag)
  • NodeMaterial
    • Add maskShadowNode. #32598 (@sunag)
    • Remove shadowPositionNode fallback to reduce CPU load. #32699 (@Mugen87)
  • NodeMaterialObeserver
    • Fix detection of replaced attribute/index. #32933 (@Mugen87)
  • Nodes
    • Update exports. #32783 (@Mugen87)
    • Fix PMREM cache. #32941 (@Mugen87)
  • Object3D
    • Document static, add support in copy() and JSON. #32679 (@Mugen87)
  • ObjectLoader
    • Wrap JSON.parse() in try/catch for consistent error handling. #32947 (@glowsenior)
  • Playground
    • Archived playground. #32771 (@mrdoob)
  • PMREM
    • Simplify GGX VNDF importance sampling. #32737 (@Mugen87)
  • RenderContext
    • Refactor context key. #32546 (@Mugen87)
  • Renderer
    • Rename shadowMap.color to shadowMap.colored. #32608 (@Mugen87)
    • Rename shadowMap.colored -> shadowMap.transmitted. #32611 (@sunag)
    • Shadow map improvements. #32705 (@Mugen87)
  • RenderObject
    • Fix ID assignment bug. #32700 (@Mugen87)
    • Update bundle reference at correct point. #32901 (@Mugen87)
  • RenderTarget
    • minor formatting. #32988 (@epreston)
  • ShadowFilterNode
    • Fix TSL warning in VSMShadowFilter. #32836 (@Mugen87)
  • ShadowMaterial
    • Respect "premultiplied alpha". #32550 (@gkjohnson)
  • SkinningNode
    • Fix tangent transformation. #32718 (@Mugen87)
  • SpriteSheetUVNode
    • Transform to TSL function and fix countNode access. #32693 (@gayanMatch)
  • StorageTextureNode
    • Add TSL read/write support. #32734 (@NateSmyth)
  • Test
    • Remove servez reference. adfc78595273c614f1e0557131644924a039c322 (@mrdoob)
  • Texture3DNode
    • Remove outdated setupUV(). #32630 (@Mugen87)
  • TextureNode
    • Use compareNode for Android if compareStepNode is not compatible. #32956 (@sunag)
  • TSL
    • Introduce clipSpace. #32594 (@sunag)
    • Introduce TSL.md (TSL Spec). #32601 (@sunag)
    • Remove exports for removed TSL methods. #32635 (@Methuselah96)
    • use raw data for DebugNode callback. #32638 (@linbingquan)
    • Add exponentialHeightFogFactor(). #32659 (@Mugen87)
    • Check if the stack has a valid output. #32669 (@sunag)
    • Fix positionView sub-build. #32691 (@sunag)
    • Revert positionWorld re-computation. #32710 (@sunag)
    • Fixing invalid GLSL using nested structures. #32724 (@sunag)
    • Move SceneNode to TSL functions. #32838 (@sunag)
    • Support switching StorageBufferAttribute when using storage(). #32847 (@sunag)
    • Force flat shading for geometries without normals for normal* nodes. #32848 (@sunag)
    • Avoid side effect of getTextureLevel() in normals. #32877 (@Mugen87)
    • Remove scriptable node. #32925 (@sunag)
    • Introduce StackTrace. #32914 (@sunag)
    • Add RenderPipeline for TSL Spec. #32928 (@sunag)
    • Add retroPassand example. #32930 (@sunag)
    • Remove ScriptableNodeResources export. #32945 (@Methuselah96)
    • Cache camera* uniform nodes. #32938 (@sunag)
    • Fix instancedArray() bufferCount property. #32977 (@sunag)
  • UniformGroups
    • Partially updates. #32558 (@sunag)
  • UniformsGroup
    • Add range cache and fix clear old update ranges. #32561 (@sunag)
  • ViewportDepthNode
    • Support reversed depth in viewZ functions. #33001 (@Mugen87)
  • ViewportTextureNode
    • Change update type to RENDER. #32664 (@Mugen87)
  • WebGLRenderer
    • Allow InstancedMesh provide a unique ID for WebGLBindingStates. #32556 (@OndrejSpanel)
    • Consider skinning / instancing when sorting objects. #28125 (@OndrejSpanel)
    • Fix shadow map uniform management. #32590 (@Mugen87)
    • Fix PCFSoftShadowMap check. #32593 (@Mugen87)
    • Ensure readback checks work on correct attachment state. #32506 (@andredsm)
    • Fix pointlight shadows with reversed depth buffer. #32749 (@Mugen87)
    • Fix remaining shadow issues with reversed depth. #32751 (@Mugen87)
    • Fix shadow bias with reversed depth buffer. #32770 (@Mugen87)
    • Unify cubemaps and cubeuvmaps into WebGLEnvironments. #32792 (@mrdoob, @claude)
    • Force flat shading for geometries without normals. #32831 (@mrdoob, @claude)
    • Only clear when bit mask is set. #33010 (@Philipp-M)
  • WebGLShadowMap
    • Fix wrong camera state. #32777 (@Mugen87)
  • WebGLState
    • Fix polygon offset with reversed depth buffer. #32832 (@Mugen87)
  • WebGPURenderer
    • Fix compileAsync() with target scenes. #32530 (@Mugen87)
    • Prevent translation of skybox. #32537 (@Mugen87)
    • Prevent undefined GPUShaderStage. #32539 (@verekia)
    • Fix shadow comparison on Adreno GPUs. #32548 (@sunag)
    • Introduce shadowMap.color. #32596 (@sunag)
    • Unify uniformGroup bindings across shader stages. #32602 (@sunag)
    • Add per-attachment MRT blending support. #32636 (@sunag)
    • Fix depth/stencil format out-of-sync bug. #32731 (@Mugen87)
    • Use @interpolate(flat, either) for all cases. #32761 (@greggman)
    • Rename Nodes to NodeManager. #32786 (@sunag)
    • Rename RenderPipeline to RenderObjectPipeline. #32785 (@sunag)
    • Rename PostProcessing to RenderPipeline. #32789 (@sunag)
    • Always request compatibility mode and upgrade to core. #32762 (@greggman, @Mugen87)
    • Optimize chain key array reset. #32833 (@Mugen87)
    • Fall back to default texture when texture creation fails. #32853 (@ycw)
    • Introduce initRenderTarget(). #32867 (@Mugen87)
    • Export CubeRenderTarget and use it in examples. #32871 (@Mugen87)
    • WebGL viewport / scissors not working correctly with PostProcessing. #32883 (@TobiasNoell)
    • Fix overrideMaterial node assignments. #32896 (@Mugen87)
    • Turn off antialiasing in compat mode. #32902 (@greggman)
    • Make wireframe update more flexible. #32908 (@Mugen87)
    • Make generateMipmap work in compatibility mode. #32906 (@greggman)
    • Fix flipY and cache key when generateMipmap. #32922 (@sunag)
    • Improve checks for uniform buffer limits. #32949 (@sunag)
    • Fix wireframe rendering for BatchedMesh. #32955 (@Mugen87)
    • Improve compatibilityMode support for MRT. #32973 (@sunag)
    • Add basic reversed depth buffer support. #32967 (@Mugen87)
    • Add shared BindGroup via hash. #32936 (@sunag)
    • Use all visibility for shared BindingGroup. #32997 (@sunag)
    • Minor improvements for shared BindingGroup. #32998 (@sunag)
    • Reversed depth buffer fixes. #33000 (@Mugen87)
    • Fix stencilBack not matching stencilFront in pipeline. #33002 (@jpt)
    • Remove outdated bind groups. #33011 (@Mugen87)
  • WebGPUTexturePassUtils
    • Cleanup generateMipmaps. #32915 (@greggman)
  • WGSLNodeBuilder
    • Fix array texture layer support for filtered sampling. #32990 (@RenaudRohlinger)
  • XRManager
    • Fix XR camera layers inheritance. #32626 (@wrangelvid)

Docs

  • Update URL in VignetteShader.js documentation. #32573 (@jwheare)
  • Update documentation for ImageBitmapLoader options. #32574 (@jwheare)
  • Improved search results. #32577 (@mrdoob)
  • Remove .is properties from search results. #32578 (@mrdoob)
  • Fix JSDoc Example. #32603 (@leannepepper)
  • worldToLocal typo. #32647 (@satelllte)
  • Update documentation to include KHR_meshopt_compression. #32661 (@donmccurdy)
  • improve JSDoc documentation in utils.js. #32743 (@Angel98518, @Daniel)
  • Update TorusGeometry with thetaStart and thetaLength. #32760 (@3dpk-interactive)
  • Improve documentation for edge cases in MathUtils functions. #32806 (@dive2tech, @Gittensor Miner, @Mugen87)
  • Prevent translators from aggressively translating parameter names. #32868 (@ycw)
  • KTX2Loader. Fix typo in TYPE_MAP. #32899 (@epreston)
  • Clarify auto update flags. #32909 (@Mugen87)
  • Add missing JSDoc. #32921 (@Mugen87)
  • Fix typo in JSDoc. #32946 (@glowsenior)
  • Added llms.txt, llms-full.txt and llms/build.js script. #32673 (@mrdoob)
  • Fix typo and link in Installation manual. #32972 (@pavan-sh)
  • utils : update probeAsync jsdoc. #32995 (@epreston)

Manual

  • Frame-rate independent cube rotation example. #32627 (@satelllte)
  • Update rendering-on-demand.html. 4bbae20d6759dd0bd160fede992dd5d82e0b8294 (@Mugen87)
  • Improve Chinese translation. #32804 (@guo-weijie)
  • Update WebGPU guide. #32846 (@Mugen87)
  • docs(zh): translate "Getting Started" manual pages into Chinese. #32996 (@DDDDD12138)
  • Add Physics page. #33004 (@Mugen87, @Walid Chtioui)
  • Replace the template literal with string concat in lights page. #33012 (@v-stamenova)

Examples

  • Cleanup examples. #32528 (@Methuselah96)
  • Add external example for Polyslice G-code slicer. #32502 (@jgphilpott, @microsoftcopilot, @Mugen87)
  • Remove material AO demo. #32579 (@Mugen87)
  • Update webgpu_shadowmap. #32610 (@sunag)
  • Add basic fog scattering demo. #32613 (@Mugen87)
  • Add shadow tag to webgpu_postprocessing_sss. e85890ebc870883c4147fefd472cb13542bc9e4b (@mrdoob)
  • Clean up. 15cbc8c6f2b104835082cf08dadfdd1a72fcf5b0 (@mrdoob)
  • Improved grid in webgpu_loader_materialx. 5cde3c7ec5af65456dfc1c29d3e592be6051400f (@mrdoob)
  • Cleanup examples. #32634 (@Methuselah96)
  • Improved examples. 0168a66eaebd0cd5a5ae5dc85ad20ed34b03827a (@mrdoob)
  • Added bloom to ocean examples. #32680 (@mrdoob)
  • Improved webgl_animation_keyframes. #32685 (@mrdoob)
  • Remove obsolete shadow bias from WebGPU demos. #32715 (@Mugen87)
  • Add missing UnrealBloomPass parameters. #32736 (@Methuselah96)
  • Add support for reversed depth to post processing modules. #32773 (@Mugen87)
  • Replace Clock with Timer. #32782 (@Mugen87)
  • Update Godrays demo. #32801 (@Mugen87)
  • Improved draco example and re-encode bunny.drc with 2.2 (cl7) reducing file size from 96KB to 47KB. 89c278c26286bfb223a2c82ec388b094b69d2a94 (@mrdoob)
  • Update webgpu_postprocessing_godrays.html. d167b69e3c0b7157ac96ca9eda3c5a0c351cfa2b (@Mugen87)
  • Various fixes for WebGPU compatibility mode. #32907 (@greggman)
  • Add Volumetric Lighting using TRAA. #32953 (@sunag)
  • Update webgpu_parallax_uv, and webgpu_cubemap_adjustments examples using .hdr file. #32976 (@sunag)
  • Scroll sidebar to selected example. #32980 (@sunag)
  • Clean up. #32994 (@Mugen87)
  • Improve birds compute demo. #33016 (@Mugen87)

Addons

  • Anaglyph

    • Rename screenDistance to planeDistance. #32943 (@Mugen87)
  • AnaglyphEffect

    • Use frameCorners() for physically-correct stereo. #32929 (@zalo, @claude)
  • CCDIKSolver

    • Fixed typos in /examples/jsm folder. #32631 (@mrdoob)
  • ColladaLoader

    • Split into modular files. #32796 (@mrdoob, @claude)
    • Improve animation support. #32830 (@mrdoob, @claude)
    • Apply falloff angle to spot lights. 17529114983185f1266b40e36933d306badfd5f5 (@mrdoob, @claude)
  • Exporters

    • Add Object3D.pivot support. #32769 (@mrdoob)
  • GCodeLoader

    • Add support for M82/M83 commands. #32687 (@Mugen87)
  • GLTFExporter

    • Fix skinIndex export for InterleavedBufferAttribute. #32607 (@querielo, @Mugen87)
  • GLTFExporter/GLTFLoader

    • Add Object3D.pivot support. #32774 (@mrdoob)
  • GLTFLoader

    • Fix empty groups when multiple scenes reference same nodes. #32567 (@YusakuNo1)
    • GLTFLoader and KTX2Loader: Add a sanity check for navigator.userAgent before using it. #32633 (@leonmetthez)
    • Implement support for KHR_meshopt_compression. #32163 (@zeux)
    • Add getMaterialExtension helper. #32748 (@mrdoob, @claude)
  • Global

    • Remove deprecated code. #32572 (@Mugen87)
    • Replace Clock with Timer. #32793 (@Mugen87)
  • HalftoneShader

    • Add diamond shape option. #32942 (@NateWr)
  • Inspector

    • Store parameters object+key. #32507 (@marwie)
    • Add "Copy All" button to Console tab. #32825 (@seantai, @sunag)
  • JoltPhysics

    • Fix dynamic import Vite warning. e796263ee25703290d920d958888061b799c7ded (@mrdoob)
  • KTX2Loader

    • Fix alpha for BC3 textures. #32772 (@donmccurdy)
  • LDrawConditionalLineNodeMaterial

    • fix import. #32861 (@gkjohnson)
  • LDrawLoader

    • De‑magic condition. #32886 (@ycw)
  • LensflareMesh

    • Fix DPR usage. #32625 (@Mugen87)
  • LineMaterial

    • Set needsupdate when changing worldUnits property. #32952 (@dsafa)
  • Loaders

    • Use named fflate imports and native TextDecoder. #32765 (@mrdoob)
  • Nodes

    • Removing unnecessary nodesObject. #33014 (@sunag)
  • Object3D

    • Added pivot property. #32745 (@mrdoob)
  • OrbitControls

    • Expose pan, rotate and dolly methods. #32810 (@TobiasNoell)
    • Add cursorStyle property. #32981 (@Mugen87)
  • PCDLoader

    • Fix label parsing. #32683 (@Mugen87)
  • RapierPhysics

    • Fix dynamic import Vite warning. #32565 (@mrdoob, @claude)
  • RoomEnvironment

    • Adjust scene position. #32646 (@mrdoob)
  • SSRNode

    • Performance optimizations. #32637 (@mrdoob)
    • Add distance-aware blur for roughness. #32834 (@mrdoob, @claude)
    • Use squared roughness for blur LOD and simplify pointPlaneDistance. #32993 (@mrdoob, @claude)
  • Sky/SkyMesh

    • Remove legacy gamma correction curve. #32677 (@mrdoob)
    • Added procedural clouds. #32682 (@mrdoob)
  • TSL

    • Improve retroPass and example. #32954 (@sunag)
  • USDAParser

    • Improve text parsing robustness. #32747 (@mrdoob, @claude)
  • USDAParser/USDComposer

    • Clean up. 3cd3e5b87e4a75aa14cf43958ddcaf9c6edebebc (@mrdoob)
  • USDCParser

    • Fixed scalar handling. 43166fcb2c5378a3cdd4c782175d0daf136a10d1 (@mrdoob)
  • USDComposer

    • Fix color space handling for material colors. 73636e35bfc1800f0242cbd0a5c488b184546943 (@mrdoob)
    • Clean up. e3f4523ed8d11e538cdbfbe573514a7fe01ed64a (@mrdoob)
    • Added primvars:displayOpacity support. 27f2f4eb5fbf78f42d0447a7b7f1879445b96111 (@mrdoob)
    • Fixed variant composition. 9a711cc1f452a917fe92eab3b4538fd34f45687a (@mrdoob)
    • Support variant overrides on ancestor prims. 96432fc0bd1a4a44afea6ebed27f65e9ed342c9e (@mrdoob)
  • USDLoader

    • Added USDC file support. #32704 (@mrdoob)
    • Refactored into USDComposer and added animation support. #32740 (@mrdoob)
    • Improve material and UV support. #32746 (@mrdoob)
    • Unify USD format handling and add .usd support. 5532147c692e1ec3c34e8d6455a598945011223e (@mrdoob)
    • Add OpenPBR Surface shader and polygon hole support. #32764 (@mrdoob)
    • Various bug fixes and improvements. #32766 (@mrdoob)
    • Performance improvements and external texture support. #32790 (@mrdoob, @claude)
    • Improve transform handling, skinning, and image loading. #32828 (@mrdoob, @claude)
    • Fix material binding lookup for variants. 43c8ff7e8966b1a359b104915290b8d4619e80cc (@mrdoob, @claude)
    • Apply UsdUVTexture scale to material colors. 585b578fb735485a95b651ff9d9e001601d3090f (@mrdoob, @claude)
  • UltraHDRLoader

    • Add support for ISO 21496-1 gainmap metadata. #32862 (@mrdoob)
  • VRMLLoader

    • Add camera support. #32580 (@Mugen87)
  • VTKLoader

    • Fix ReDoS vulnerability. #32622 (@mrdoob)
  • ViewHelper

    • Add location property for positioning. 22afab942a46cd9f6b7310e3c210a6a19655ca0d (@mrdoob, @claude)
  • Water

    • Use HalfFloatType for reflection render target. #32678 (@mrdoob)
  • Water/WaterMesh

    • Improve realism. #32681 (@mrdoob)
  • WaterMesh

    • Remove unneeded Lambert material. 40d7441aee16fc0bc0839ba597b2f7ec84324045 (@mrdoob)
  • WebGLRenderer

    • More fixes for reversed depth buffer. #32799 (@Mugen87)
  • WebGPURenderer

    • Add GodraysNode. #32888 (@Mugen87)
  • WebGPU_Display_StereoExample

    • Add new Anaglyph Techniques. #32905 (@zalo)
  • examples

    • jolt-physics@1.0.0. #32711 (@linbingquan)

Editor

  • Modernized ui.js. #32545 (@mrdoob)
  • use ES6 const/let for app.js. #32712 (@linbingquan)
  • Move render options from sidebar to menubar. #32727 (@mrdoob)
  • Replace FFmpeg with WebCodecs for video rendering. #32728 (@mrdoob)
  • Use parseAsync when rendering image. f02c6851af95be4d2ca655521a6928bd7e35d297 (@mrdoob)
  • Add Resources panel to Project sidebar. #32729 (@mrdoob)
  • UI css scope. #32714 (@linbingquan)
  • Enable logarithmic depth buffer. #32732 (@mrdoob)
  • Debounce Resources panel updates. 8084de7640e5b7794754f8bad3b53b9641840493 (@mrdoob)
  • Add default environment. #32752 (@mrdoob)
  • ESLint: migrate to flat config, note missing eqeqeq rule. #32754 (@ycw)
  • Simplify environment handling. #32757 (@mrdoob)
  • Clean up sw.js. d9b39f4ea88d1b87d91c7f1f6cb43c04670658cd (@mrdoob)
  • Improve service worker caching and activation. c36ae33e09de7cb788ad098c6778ac2b8d10249b (@mrdoob)
  • Add dialog for glTF import. #32784 (@Mugen87)
  • Improve geometry sidebar with interleaved and instanced support. 86c5b3e9afb9a910909f06e6086ffccb519cc7dc (@mrdoob, @claude)
  • Change default tone mapping to Neutral. ceda42c71f661585fa16282536695ef0c18e781f (@mrdoob, @claude)
  • Added WebGPURenderer support. #32842 (@mrdoob, @claude)
  • Improve UI layout. 293ed86238d8563af70a4ddab51067891c7188ee (@mrdoob, @claude)
  • Fix camera move error. #32843 (@linbingquan)
  • Clean up Viewport.Controls. a97401bca9c0bbacbb931aa0f8a446ad161c1ae2 (@mrdoob, @claude)
  • Add morph target support. #32844 (@Mugen87)
  • Fix canvas reference for video rendering. #32864 (@ycw)
  • Retain viewport color when rendering images/videos. #32866 (@Mugen87)
  • Deprecate ServiceWorker. 3ab79b8334a6c905f7ab54ef02ed3e82884aad6a (@mrdoob, @claude)
  • fix app publishing for project using WebGPURenderer. #32897 (@ycw)
  • Refine eslint config: limited exclusion and lint fixes. #32917 (@ycw)
  • Cleanup. #32965 (@linbingquan)
  • Add Animation panel. #32869 (@mrdoob, @claude)

Tests

  • Quaternion - Support extrapolation in slerp methods. #32541 (@WestLangley)
  • Puppeteer: Remove express dependency. #32649 (@mrdoob)
  • Removed rollup-plugin-filesize dependency. #32650 (@mrdoob)
  • Puppeteer: Replaced jimp with jpeg-js and pngjs. #32652 (@mrdoob, @claude)
  • Puppeteer: Removed pixelmatch dependency. #32656 (@mrdoob)

Utils

  • Replaced servez with custom server.js. #32654 (@mrdoob)
  • Replaced concurrently with custom preview.js. #32655 (@mrdoob)
  • Update utils/server.js to selfsigned 5.0.0. 5b5594a161c3c41f6e1fc9aa58e96949bbc5c2d8 (@mrdoob)
  • server.js: removed redundant call to path.normalize(). 7cc18054c7fa5e438b9a6cd648b1d4296282920d (@mrdoob)
  • server.js: simplified code. 7cd43e066a725ea6b2349e52911a01613a9cbeaa (@mrdoob)
  • Remove dev-ssl and preview-ssl. #32672 (@mrdoob)
  • utils/server.js: cross-platform isMain check. #32674 (@ycw)
  • Add changelog generator. #32781 (@mrdoob, @claude)
  • Fix loading of sites without .html extension. #32970 (@Mugen87)
  • build-llms: Clean up stale .md files before generating new ones. f45d6f94de70d6f8351a0e0a17628979718044dc (@mrdoob, @claude)
  • build-docs: Clean up stale .html files before generating new ones. ed98cc4aa1f5decd9b23f54aa5ca2865e95fa56a (@mrdoob, @claude)
  • Improve changelog.js. 2cc37c2bdab8318bdb14033bdbe6763b695d21b2 (@mrdoob, @claude)
  • Improve changelog.js. 8863cdbd3aa3f66df4c5e5385f717adaf8b06ada (@mrdoob, @claude)
2025-12-11 00:14:25
three.js

r182

https://github.com/mrdoob/three.js/wiki/Migration-Guide#181--182 https://github.com/mrdoob/three.js/milestone/95?closed=1

  • BatchedMesh
    • Fix index and attribute updates in optimize(). #32185 (@querielo)
  • BatchNode
    • Optimize generated shader code. #32203 (@Mugen87)
  • BufferGeometry
    • Add indirectOffset parameter for indirect drawing. #32392, #32413 (@holtsetio, @RenaudRohlinger)
  • ExtrudeGeometry
    • Honor closed property of CatmullRomCurve3. #32410 (@Mugen87)
  • InstanceNode
    • Add support for StorageInstancedBufferAttribute. #32240 (@RenaudRohlinger)
  • Light
    • Unify toJSON() implementations. #32414 (@Mugen87)
  • LightProbe
    • Remove fromJSON(). #32415 (@Mugen87)
  • Line2NodeMaterial
    • Align wide lines with WebGLRenderer version. #32234 (@Mugen87)
  • Material
    • Fix copy() to include allowOverride. #32269, ba1655cf3587349768665c442a4f7cc0ecd23759 (@crazylogic03, @Mugen87)
  • Matrix4
    • Optimize determinant() calculation. #32157 (@mrdoob)
  • MeshPhysicalMaterial
    • Fix iridescence energy conservation for mixed materials. #32309 (@mrdoob)
    • Improve Sheen energy conservation and analytic approximation. #32356, #32397 (@mrdoob)
  • MeshStandardMaterial
    • Fix furnace test energy loss for intermediate metalness values. #32190, #32201 (@mrdoob)
    • Improve physical accuracy. #32330 (@mrdoob)
  • NodeBuilder
    • Add missing vector types to generateConst(). #32162 (@cmhhelgeson)
    • Cache node attributes for vertex stage only. #32189 (@Mugen87)
    • Ignore events for shared context. #32492 (@sunag)
  • NormalMapNode
    • Add basic support for normal unpacking. #31695 (@castano)
  • PMREMGenerator
    • Improve GGX VNDF accuracy and match Blender roughness. #32311 (@mrdoob)
    • Reduce DFG LUT resolution to 16x16. #32358 (@mrdoob)
  • PointShadowNode
    • Refactor to use native cube depth texture. #32379 (@mrdoob)
  • PolyhedronGeometry
    • Fix typo in fromJSON(). #32475 (@Ayush123-e)
  • ShaderMaterial
    • Fix copy() to include missing properties. #32219 (@NssGourav)
  • Source
    • Guard reference to VideoFrame. #32301 (@Mugen87)
  • StructTypeNode
    • Fix memory length calculations. #32377 (@holtsetio)
  • TSL
    • Add renderer context node (global). #32295 (@sunag)
    • Check for undefined in uniform(). #32183 (@Mugen87)
    • Add texture3DLoad() and texture3DLevel(). #32171 (@RenaudRohlinger)
    • Add bitcount related functions. #31990 (@cmhhelgeson)
    • Add support for mat3 and mat4 using bufferAttribute(). #32204 (@sunag)
    • Do not auto-generate tangent attribute. #32220 (@Mugen87)
    • Pre-pass using global context. #32276, #32345 (@sunag)
    • Introduce float packing / unpacking intrinsics. #32329 (@Ne0nWinds)
    • Introduce builtinShadowContext() and builtinAOContext(). #32384, #32378 (@sunag, @querielo)
    • Renamed DFGApprox to DFGLUT. #32399 (@mrdoob)
    • Fix non-stack function call with loops. #32420 (@sunag)
    • Prevent memory leaks in ShadowNode. #32395 (@querielo)
  • Vector3
    • Clean up. #32363 (@MOHITKOURAV01)
  • WebGLRenderer
    • Support more EAC texture formats. #32308 (@castano)
    • Modernized shadow mapping. #32181, #32303, #32407, #32443 (@mrdoob)
    • Align transmission render target samples with canvas. #32444 (@mrdoob)
    • Remove SUPPORTS_VERTEX_TEXTURES. #32455 (@mrdoob)
    • Clean up setupRenderBufferStorage(). #32456 (@mrdoob)
    • Use Map for O(1) program lookup. #32463 (@mrdoob)
    • Move point light shadow logic from PointLightShadow. #32473 (@mrdoob)
  • WebGPURenderer
    • Support more EAC texture formats. #32308 (@castano)
    • Fix textured backgrounds with ortho cameras. #32313 (@Mugen87)
    • Improve StorageTexture3D support. #32150 (@RenaudRohlinger)
    • Optimize VSM shadow code. #32209 (@mrdoob)
    • Fix shadowing of error function. #32245 (@Methuselah96)
    • Improve cache bindings from node uniforms. #32244 (@sunag)
    • Set opaque blend mode for secondary MRT targets. #32265 (@sunag)
    • Add update ranges for bindings. #32248 (@sunag)
    • Buffer labeling adjustment. #32247 (@cmhhelgeson)
    • Relates MRT for RenderContext in obtaining a unique context. #32264 (@sunag)
    • Fix VSM shadow artifacts. #32327 (@mrdoob)
    • Fix point light shadows. #32365 (@mrdoob)
    • PCF shadow filtering with Vogel disk sampling and IGN. #32381, #32407 (@mrdoob)
    • Use correct cache for default cube textures. #32425 (@SE7EN2028)
    • Refine video texture warning. #32439 (@Mugen87)
    • Improve resource disposal. #32446 (@querielo)
    • Skip invalid frame of video textures. #32441 (@whatisor)
    • Improve Bind Group Layout cache system. #32451, #32249 (@cmhhelgeson, @Mugen87)

Docs

  • Clean up. d70adae523c1b3c67defbe9fdf3a69c153cbd454, 9e94632cb90fc22f0b32f1461d625439b9db47e8, 72f91e3cf64eee7f392c8b15bddbc36bc56247d5 (@Mugen87)
  • Add missing @private annotation. #32165 (@Mugen87)
  • Fix external links. #32161 (@mrdoob)
  • Fix ShadowNode JSDoc. #32166 (@Mugen87)
  • Improved search with category matching. #32164 (@mrdoob)
  • Fix JSDoc of inspector. #32192 (@Mugen87)
  • Remove unused parameter from BatchedMesh.optimize(). #32186 (@querielo)
  • Improve ShaderMaterial.fog. #32224 (@Mugen87)
  • Fix return type in compileAsync(). #32205 (@querielo)
  • Fix options of PMREMGenerator. #32285 (@ycw)
  • Improve SkyMesh. #32289 (@jwheare)
  • Open panel on mobile when no page is selected. #32261 (@mrdoob)
  • Fix typo in MaterialLoader. #32316 (@michael-erskine)
  • Replace [name] in docstring. #32332 (@ycw)
  • Update default anisotropy value in Texture. #32346 (@thibka)
  • Fix restitution param desc in physics addons. #32341 (@SollyBunny)
  • Fix typo in DecalGeometry. #32366 (@rotu)
  • Improve Bloom radius description. #32450 (@Mugen87)
  • Fix Renderer WebGPU convention. #32457 (@sunag)
  • Fixed typo in BufferGeometry. #32477 (@Magnus1X)

Manual

  • Update OffscreenCanvas support details. #32184 (@aganders3)
  • Fix formatting in prerequisites.html. #32217 (@Mugen87)
  • Add guide about Post-Processing with WebGPURenderer. #32279 (@Mugen87)
  • Add guide about WebGPURenderer. #32260 (@Mugen87)

Examples

  • Add radial blur demo. #32297 (@Mugen87)
  • Fix chromatic aberration type usage of caustics example. #32169 (@sunag)
  • Improve BPCEM demo. #32172 (@Mugen87)
  • Fix thumbnail of backdrop demo. #32178 (@Mugen87)
  • Simplify render bundle demo. #32215 (@Mugen87)
  • Cleanup stats-gl. #32242 (@RenaudRohlinger)
  • Improve ray marching in volume rendering examples. #32235 (@mrdoob)
  • Move webgpu_struct_drawindirect to TSL. #32222 (@cmhhelgeson)
  • Add WebGPU Contact Shadows. #32262 (@querielo)
  • Renamed “external” tag to “community”. #32232 (@mrdoob)
  • Open panel on mobile when no example is selected. #32261 (@mrdoob)
  • Update credit link in webgl_animation_skinning_ik. #32259 (@abernier)
  • Add model selector to glTF loader examples. #32364, 1296afb199e2420f322bd5d45701fd686cfe2f38, #32406 (@mrdoob)
  • Made shadows soft in webgl_shadowmap_pointlights. 56838ce12c409fdf24992932839490d7ab58877f (@mrdoob)
  • Added webgpu_shadowmap_pointlight example. 3b0c9cd4760c0b75f3fa4ce1ac5f882e37f68fd3, 645e0898bdbf6992cbd24c016e6a539d68181873 (@mrdoob)
  • Migrate royal_esplanade examples to UltraHDRLoader. #32380 (@mrdoob)
  • Use real-world scale in stereo demo. #32403 (@Mugen87)
  • Fix WebGPU water simulation on mobile GPUs. #32411 (@mrdoob)
  • Update Compute Fluid to use IndirectStorageBuffer. #32176 (@cmhhelgeson)
  • Update webgl_loader_texture_ktx example with new formats. #32448 (@castano)
  • Improved RectAreaLight examples. #32493 (@mrdoob)
  • Unify import path for WebGPU related classes. #32494 (@Mugen87)

Addons

  • AmmoPhysics

    • Support restitution. #32347 (@SollyBunny)
  • BloomNode

    • Implement disposal of materials to prevent memory leaks. #32452 (@querielo)
  • Controls

    • Fix stuck state when releasing mouse outside window. #32323 (@mrdoob)
  • CSM

    • Reuse origin vector. #32331 (@Mugen87)
  • Inspector

    • Fix Viewer aspect ratio. #32194 (@sunag)
    • Fix slider dimensions. #32177 (@Mugen87)
    • Improve UX. #32197, a6ca2537932e47510b2542990f6033d9f794454a (@sunag)
    • Add window/panel boundary constraints. #32208 (@sunag)
    • Mini-panel for parameters. #32257 (@sunag)
    • Fix value update of number and checkbox elements. #32355 (@Mugen87)
    • Fix cube depth texture error. #32412 (@sunag)
    • Update checkmark internal box size. 7ad089e773167ed7a7da33dc13ee7fd05280bc36 (@sunag)
    • Add warn if the inspected node outside of frame scope. #32458 (@sunag)
  • MapControls

    • Improve panning accuracy. #32324 (@mrdoob)
  • Octree

    • Add Box3 interface. #32343, 6e006b29964ff6facb832690d3e38918d8434b64 (@Mugen87, @mrdoob)
  • Physics

    • Add errors when trying to use getShape() for unsupported geometry types. #32372 (@SollyBunny)
  • PixelationPassNode

    • Fix zero normal processing. #32159 (@Mugen87)
  • SkyMesh

    • Add isSkyMesh flag and deprecate isSky. #32263 (@querielo)
  • SSRNode

    • Ensure boolean value for isPerspectiveCamera uniform. #32218 (@FarazzShaikh)
  • SVGLoader

    • Add stylesheet jsName vs svgName fix. #32119 (@jhlggit)
  • SVGRenderer

    • Add depth sorting for Sprites and SVGObjects. #32212 (@mrdoob)
    • Add near/far plane clipping support. #32210 (@mrdoob)
  • TRAANode

    • Improve motion factor and disocclusion. #32296 (@shotamatsuda)
    • Replace MSAA sample pattern with Halton sequence. #32319 (@shotamatsuda)
    • Reduce smearing. #32322 (@shotamatsuda)
  • TSL Transpiler

    • Support struct definitions and declarations. #32300 (@Ne0nWinds)
    • Fix Fn layout generation when generating a function with no input parameters. #32272 (@Ne0nWinds)
  • UltraHDRLoader

    • Fix incorrect alpha channel values. #32464 (@mrdoob)
    • Improve parsing performance. #32468, 4b110fe4c39799672f1d1de51fc013d5f2930989, d7f67fafff6eaa4871963b14baeff060f2f13102 (@mrdoob)
  • VOXLoader

    • Added scene graph support. #32488 (@mrdoob)
    • Implemented greedy meshing. #32489 (@mrdoob)
    • Accept version 200 files. #32490 (@mrdoob)
    • Replace VOXMesh and VOXData3DTexture classes with functions. #32491 (@mrdoob)

Editor

  • Save and restore controls state. #32408 (@mrdoob)
  • Scale PointLightHelper based on camera distance. b7c9099db9d7e6a959d2bf46b2e5fb807e91dbcf (@mrdoob)
  • Cycle through overlapping objects on click. c745aee7c0b5297a986818235d2f2ffae029223c (@mrdoob)
  • Scale down touchscreen zoom speed #32454 (@TylerSelden)

Tests

  • Removed todo()s. #32483 (@mrdoob)
2025-10-31 18:39:26
three.js

r181

https://github.com/mrdoob/three.js/wiki/Migration-Guide#180--181 https://github.com/mrdoob/three.js/milestone/94?closed=1

  • Global
    • Use internal log, warn and error functions instead of the system ones. #31790 (@sunag)
  • Earcut
    • Updated to latest version. #31956 (@tonybart1337)
  • InstanceNode
    • Honor updateRanges. #31816 (@Mugen87)
  • LoadingManager
    • Lazily instantiate abort controller. #32120 (@NuroDev)
  • MeshMatcapMaterial
    • Support wireframe. #31917 (@WestLangley)
  • NodeBuilder
    • Add hints in comments. #32004 (@cmhhelgeson)
  • NodeFrame
    • Simplify caching. #31896 (@cmhhelgeson)
  • NodeMaterial
    • Fix alpha discard. #31927 (@Mugen87)
    • Honor aoNode in clone(). #32084 (@querielo)
  • PassNode
    • Ensure clear of internal render target. #31993 (@Mugen87)
  • PhysicalLightingModel
    • Fix Favg assignment. #32094 (@sunag)
  • PMREMGenerator
    • Implement GGX VNDF importance sampling. #32114, #32134, #32148, #32154 (@mrdoob)
  • Quaternion
    • Rewrite slerp() and slerpFlat(). #31875 (@WestLangley)
  • RenderTarget
    • Fix resize of 3D textures. #31854 (@Mugen87)
  • Sampler
    • Don't set _texture to null. #31874 (@Mugen87)
  • ShadowNode
    • Fix shadows in first frame. #32021 (@Mugen87)
  • TextureNode
    • Manage y-flip as a uniform. #31929 (@Mugen87, @sunag)
  • TSL
    • Clone PassMultipleTextureNode with offsetNode. #31849 (@shotamatsuda)
    • Fix onDispose listener not being removed in Sampler. #31868 (@shotamatsuda)
    • Minor fixes. #31808 (@Mugen87)
    • Fix coordinate types for load() on 3D texture nodes. #31775 (@shotamatsuda)
    • Add member type support for layout function parameter. #31838 (@sunag)
    • Fix conditional cache and introduce isolate(). #31973, 594893f13ea9f252a2e918d2c3755878157220cb (@sunag)
    • Forces assignment of a function call if a loop is detected. #31974 (@sunag)
    • Fix auto type conversion for layout parameters. #32059 (@sunag)
    • Resolve some name collision. #32032 (@sunag)
    • Move Interleaved Gradient Noise into PostProcessingUtils. #32074 (@Mugen87)
    • Fix recursive cache key. #32070 (@sunag)
    • Fix size computations in FX/RTT nodes. #32077 (@Mugen87)
    • Ensure nodeProxyIntent always sets intent: true. #32092 (@querielo)
    • Refactor positionViewDirection to handle orthographic camera cases. #32088 (@querielo)
    • Fix overloadingFn return type. #32112 (@sunag)
    • Add active stack and improve "node block" support. #32109 (@sunag)
    • Assign stack for nodes after remove stack. #32137 (@sunag)
    • Add OnBefore* events. #32144, 1d9c5a0859ac357488443d62b44ed2c457915fc1 (@sunag)
    • Fix get element through an output Fn value. #32143 (@sunag)
  • VideoTexture
    • Reset internal state rVFCId on dispose. #32082 (@ycw)
  • WebGLRenderer
    • Fix WebXR Depth Sensing. #31831 (@cabanier)
    • Use DFG LUT instead of analytical approximation. #32054, 9b0d0937c75eab4d46f5f66b3e0c18bcb1f8c07b, 5e3cd6c52b3151a7243a0dd639334c7ce4d9c320, 361853114a24b7df70df907d3f38d1997a24b34d, e225530224722d9df1e392dbfcffc7dbdbe46a4a (@mrdoob)
    • Clean up. 39b05002504a06b6a58a07570b0a6231f9390417 (@mrdoob)
    • Remove WebGL 1.0 compatibility code. #32071, 62e6f436cec8bae9a55f47f7fca16629ea0eb679 (@mrdoob)
    • Add multi-scattering energy compensation for direct lighting. #32072 (@mrdoob)
    • Improve rough reflection mixing for IBL. #32102 (@mrdoob)
  • WebGPURenderer
    • Guard reference to VideoFrame. #31864 (@Mugen87)
    • Prevent dispose of default textures. #31860 (@Mugen87)
    • Fix renderer not being garbage collected. #31798 (@shotamatsuda)
    • Properly delete compute node bindings in dispose(). #31832 (@cmhhelgeson)
    • Properly delete bind groups when render objects are disposed. #31879 (@cmhhelgeson)
    • Align copyTextureToTexture() with WebGLRenderer. #31810 (@shotamatsuda)
    • Fix shadow's alphaTest if used material.map. #31803 (@sunag)
    • Add cache for shadow nodes. #31880 (@sunag)
    • Decouple samplers from textures. #31899 (@Mugen87)
    • Introduce Inspector. #31869, #31928, #31958, #31963, #31962, #31982, #31997, #32003, #32007 (@sunag)
    • Fix rendering morphed meshes. #31904 (@Mugen87)
    • Skip resolving anti-aliasing twice. #31743, #31924 (@sunag)
    • Introduce CanvasTarget. #31919 (@sunag)
    • Make Render Bundle work with MRT. #31906 (@Berthur)
    • Fix tone mapping mode detect. #31957 (@sunag)
    • Fix binding sampler update. #31971 (@sunag)
    • Fix logs in WebGL backend. #31978 (@Mugen87)
    • Fix compressed texture feature detection for WebGL backend. #31980 (@Mugen87)
    • Adjustments and Polyfill in GLSLNodeBuilder. #31999 (@cmhhelgeson)
    • Fix functions with struct layouts cannot resolve struct types. #32000 (@shotamatsuda)
    • Allow manual mipmap creation with StorageTexture. #31983, #32039 (@RenaudRohlinger)
    • Deprecate renderAsync(), computeAsync() and related async methods. #32022, #32026, #32029, #32033, #32042, #32063 (@Mugen87, @sunag)
    • Remove waitForGPU(). #32024 (@Mugen87)
    • Fix transmission flicker. #32043 (@Mugen87)
    • Add multi-scattering energy compensation for direct lighting. #32089 (@mrdoob)
    • Improve rough reflection mixing for IBL. #32108 (@mrdoob)
    • Fix material transparent assignment. #32110 (@sunag)
    • Enable dynamic shadowMap type switching. #32105 (@querielo)
    • Introduce dispatchWorkgroupsIndirect #31488 (@Spiri0)
    • Improve shader validation #32130 (@sunag)
    • Fix dispose RenderTarget textures. #32131 (@sunag)
    • Fix types for indirect compute and modify example to show usage. #32129 (@TheBlek)
    • Improve cache key verification. #32138 (@sunag)
  • XRManager
    • Reset XRWebGLBinding on session end. #31835 (@harryhjsh)

Docs

  • Document animation loop parameter. #31853 (@Mugen87)
  • Add PLYLoader page. #31848 (@mmjinglin163)
  • Improve AnimationClip page. #31915 (@kang-git)
  • Improve Chinese translation. #31806, #31817, #31828, #32041 (@mmjinglin163, @pangda9527)
  • Improve JSDoc. #31822, #31819, #32017 (@s-rigaud)
  • Update link to packLDrawModel script extension. #31938 (@jjohnson5253)
  • Improve translation accuracy and consistency. #31960 (@puxiao)
  • Added redirects for old docs URL. #31986 (@mrdoob)
  • Reduce folder size of new docs. #31992 (@mrdoob)
  • Updated templates with old design. #32002 (@mrdoob)
  • Generate old docs system and design. #32036, 28dcaf5f9db3326dc40eb98d377b48e72afbf771, 64d3d974170722d303d49b77b48d7e466da2608d, ed360e81958bbebd4a4c0bf4ae254dc884aa5593, a02ba14525946ce991a6a119449b7ea9c04f358e, 4b510dfb7df38ac8aa1e0a7f64a2b3550dbc7615, 1ef293278f707f7f715c0313772bc86d10d3216c, a4777982c4b1c1ba3106fd59a10393172bfd63cb (@mrdoob)
  • New Docs: Add translation disable flags. #32048 (@mrdoob)
  • Add type annotations for dispatch size in ComputeNode. #32068 (@shotamatsuda)
  • Improve GLTFLoader page. #32096 (@marwie)
  • Removed legacy docs. #32117
  • Added new docs generated with JSDocs. #32118, 96fe466f8edce6e90f7c48a6fe252a2b22f7b667 (@mrdoob)
  • Update JSDoc links for better readability. #32132 (@marwie)
  • Fixed properties layout. #32156 (@mrdoob)

Manual

  • Don’t open external URLs in iFrame. #31856 (@xjh22222228)
  • Manual: Improve Responsive guide. #31942 (@davcri)

Examples

  • Clean up. #31830, #31829, #31823, #31855, #31843, #31811, #31842, #31844, #31824, #31898, #31887, #31914, #32011, #32018, #32051, #32057 (@WestLangley, @s-rigaud, @Methuselah96, @Mugen87)
  • Use instancing in webgpu_compute_birds example. #31766 (@cmhhelgeson)
  • Add WebGPU HDR example. #31893 (@RenaudRohlinger)
  • Update with the new style and inspector. #31907, #31951, #31954, #31964, #31976, #31984, #31995, #32060 (@sunag, @Mugen87)
  • Set OrthographicCamera near plane >= 0. #31912 (@WestLangley)
  • Use globalId in compute water demo, update IndexNode comments. #31941 (@cmhhelgeson)
  • Add shadow intensity to spotlight examples. #31972 (@WestLangley)
  • Don’t use property() for creating variables. #32028 (@shotamatsuda)
  • Improve webgl_watch example. b61441df2e92a487f3063cd44cc614be8bbd9a4a (@mrdoob)
  • Improve webgl_postprocessing_unreal_bloom example. 2cff1474de2e0037c12bc46c1d9d472f14b04637 (@mrdoob)
  • Apply camera constraint immediately in WebGPU bloom demo. #32081 (@ycw)
  • Fix output control in SSS demo. #32083 (@ycw)
  • Add bloom strength to webgl_postprocessing_unreal_bloom_selective. #32125 (@querielo)
  • Visualize normal as color in webgpu_postprocessing_ao. #32141, #32153 (@ycw, @sunag)

Addons

  • AfterImageNode

    • Fix swap. #32140 (@Mugen87)
  • AsciiEffect

    • Remove noise from black texture. #31858 (@s-rigaud)
  • BitonicSort

    • Add new bitonic sort addon. #31852, #31949 (@cmhhelgeson)
  • CSS2DRenderer

    • Add sortObjects. #31946 (@Konseyy)
  • CSSRenderer

    • Ensure element exists when execute remove. #31905 (@xiaoliyooo)
  • DRACOLoader

    • Implement data alignment for WebGPU. #31991 (@donmccurdy)
  • FontLoader

    • Add text direction. #31683, #32078 (@Rikahei)
  • GlitchPass

    • Fix heightMap member name. #32047 (@joey8angelo)
  • GTAONode

    • Optimize render target format. #31883 (@Mugen87)
    • Add basic support for temporal filtering. #32076 (@Mugen87)
  • HTMLMesh

    • Fix dimensions of canvas drawing. #31931 (@pvtech-adam)
  • KTX2Loader

    • Fix ETC1S/UASTC prioritization. #31871 (@zeux)
    • Honor setRequestHeader(). #32115 (@LR17)
  • MaterialXLoader

    • Use ImageBitmapLoader to prevent blocking. 154e14558021d0aae2770eafb621741ac25680e4, bca53e60926c4afb05c6d16672c00554d9c8bbde (@mrdoob)
  • ProgressiveLightMap

    • Make normals mandatory. #31825 (@Mugen87)
  • SelectionBox

    • Add support for BatchedMesh. #32052 (@sunjiang0018)
  • SSGINode

    • New node for screen-space global illumination. #31839, #31865, #31867, #31863, #31873, #31881, #31890, #31882 (@Mugen87, @zalo)
  • SSSNode

    • Add new node for Screen-Space Shadows. #32050 (@Mugen87)
  • SVGLoader

    • Make node transform parsing more robust. #31985 (@Mugen87)
  • TRAANode

    • Reduce Ghosting/Smearing. #31895 (@zalo)
    • Make depth copy more robust. #31908 (@Mugen87)
    • Add adaptive blend weights. #32139 (@Mugen87)
  • TSL Transpiler

    • Fix immutable to dynamic parameter conversion and shadertoy example. #31996 (@sunag)
  • TubePainter

    • Improved generated geometry and added caps. #32025 (@mrdoob)
    • Fixed end caps and removed object allocations. #32030, 21009ebc442a3566e76ba0f4d9b8b19a5c910c7d (@mrdoob)
  • UnrealBloomPass

    • Backported blur improvements. 057d341afde09e38c59037e39fc81198b241258d (@mrdoob)
  • USDZExporter

    • Improve material prop types and setup. #32008 (@mkeblx)
  • ViewHelper

    • Add OffscreenCanvas support. #32128, f957f0b2adada81cb7c1de6fe34a79ead0026a93, babe7f2cc2946b87cdf5e6958fb660bc8ba5d8a3 (@Mugen87)
  • WaterMesh

    • Fix incorrect resolution scale assignment. #32056 (@jonsmithers)
  • XRHandModelFactory

    • Fix inverted hand models. #31634 (@jorodi)

Tests

  • Remove obsolete material callbacks. #31876 (@codyjasonbennett)
  • Improved E2E robustness. #32091, #32090, b3dde01ebb2509893dc41a9d29bd6dfba1794731, 3a987fad398939a7b6a2c4e9b7d2dd5df99ffa50 (@mrdoob)

Editor

  • Fix material reference in SetMaterialRangeCommand. #32080 (@ycw)

Node Editor

  • Fix usage of timerLocal. #31889 (@Mugen87)
2025-09-03 19:47:06
three.js

r180

https://github.com/mrdoob/three.js/wiki/Migration-Guide#179--180 https://github.com/mrdoob/three.js/milestone/93?closed=1

  • Global
    • Clean up. #31719, #31564, #31671, #31732, #31734, #31726 (@Methuselah96, @WestLangley, @s-rigaud)
    • Remove deprecated code. #31632, #31555 (@Mugen87)
  • AnimationClip
    • Add userData and honor in glTF loader and exporter. #31586 (@repalash)
  • Bindings
    • Fix caching of texture bindings. #31755 (@Mugen87)
  • ClippingNode
    • Move uniforms into render group. #31716 (@Mugen87)
  • ExternalTexture
    • Support copy(), clone(). #31731 (@donmccurdy)
  • GLSLNodeBuilder
    • Fix texelFetch*() code generation with depth textures. #31760 (@shotamatsuda)
    • Fix texture() code generation for depth texture. #31770 (@shotamatsuda)
  • Material
    • Add missing map properties to toJSON(). #31578 (@Mugen87)
  • NodeBuilderState
    • Fix type of bindingsReference in createBindings(). #31678 (@cmhhelgeson)
  • PointsNodeMaterial
    • Fix scaling bugs. #31627, #31707 (@WestLangley)
    • Fix broken point primitive rendering. #31702 (@Mugen87)
    • Improve JSDoc. #31703 (@Mugen87, @WestLangley)
  • Renderer
    • Make dispose() more robust. #31681 (@Mugen87)
  • RenderObject
    • Honor sampler data in material cache key. #31633 (@Mugen87)
    • Fix cache key for instanced meshes. #31783 (@Mugen87)
  • Sampler
    • Fix dispose. #31751 (@Mugen87)
  • Sprite
    • Improve JSDoc. #31642 (@cmhhelgeson)
  • SpriteNodeMaterial
    • Honor sizeAttenuation for perspective camera only. #31628 (@WestLangley)
  • TSL
    • Add texture offset feature. #31715 (@shotamatsuda)
    • Refine pow2/3/4 and remove polyfill for Windows. #31720 (@shotamatsuda)
    • Improve camera array support and introduce cameraViewport. #31615 (@RenaudRohlinger)
    • Replace Proxy approach with prototypes. #31691 (@sunag)
    • Fix update type of screenDPR. #31706 (@Mugen87)
    • Fix type propagation in members. #31699 (@sunag)
    • Fix member type in function layout. #31609 (@sunag)
    • Fixed persistent reference of the first stack. #31717 (@sunag)
    • Uniformly implement resolution scale. #31697 (@Mugen87)
    • Fix performance of viewportTexture(). #31591, #31599 (@sunag, @Mugen87)
    • Add SubgroupFunctionNode with compute reduction demo. #31378 (@cmhhelgeson)
    • Introduce uniformFlow(). #31531 (@cmhhelgeson)
    • Fix instance buffer size in instance(). #31608 (@ahaensler)
    • Fix missing getMemberType() in context(). #31601 (@sunag)
    • Use dynamic parameters eval for Fn(). #31592 (@sunag)
    • Improve error message for operators with void values. #31593 (@sunag)
    • Improve warnings. #31562 (@sunag)
    • Add AA-samples parameter to reflector-node. #31542 (@NoxDawnsong)
    • Improve Fn() warning if not invoked. #31552 (@sunag)
    • Fix assignment to swizzled for var intent. #31647 (@sunag)
    • Show an error message if no stack defined for assign operation. #31756 (@sunag)
    • Fix bitcast type resolver. #31746 (@cmhhelgeson)
    • Fix primitive vector conversion, vec* with ivec*. #31793 (@sunag)
  • WebGLBackend
    • Fix manual clear with MSAA render targets. #31705 (@Mugen87)
    • Cache WebGL buffer when updating UBOs. #31684 (@Mugen87)
    • Honor layerUpdates for array textures. #31582 (@ahaensler)
  • WebGPUBackend
    • Remove redundant dispose handlers. #31603 (@Mugen87)
    • Align frontFace and cullMode values to WebGL backend. #31769 (@Mugen87)
  • WebGPURenderer
    • Fix broken worker support. #31607 (@Mugen87)
    • Fix rgb9e5ufloat usage and rg11b10ufloat constant value. #31698 (@Mugen87)
    • Add HDR support. #29573 (@RenaudRohlinger, @donmccurdy)
    • Support ExternalTexture with GPUTexture #31653 (@donmccurdy)
    • Fix rendering into mips. #31645 (@Mugen87)
    • Add support for manual mipmaps for regular textures. #31637 (@Mugen87)
    • Add support for manual mipmaps for cube textures. #31639 (@Mugen87)
    • Add warning when video textures with invalid color spaces are used. #31569 (@ycw)
    • Fix MSAA using mipmap levels. #31544 (@NoxDawnsong)
    • Add missing rgba8unorm-srgb to WebGPUTextureUtils. #31655 (@Mugen87)
    • Add support for BC4 and BC5 texture compression. #31737 (@Mugen87)
    • Fix Texture.onUpdate() call. #31752 (@Berthur)
    • Fix timestamp query conflict. #31762 (@sunag)
    • Align frontFace and cullMode setup. #31784, #31769 (@sunag, @Mugen87)
  • WebGPUTextureUtils
    • Fix readback buffer size. #31765 (@Mugen87, @greggman)
  • XRManager
    • Lazily initialise XRWebGLBinding in XR managers. #31648 (@harryhjsh)
    • Fix typo in getBinding JSDoc. #31656 (@vincentfretin)

Docs

  • Improve JSDoc. #31733, #31742, #31754, #31773 (@s-rigaud, @Mugen87)
  • Improve Chinese translation. #31616 (@IanDingMing)
  • Improve WebXRManager page. #31657 (@harryhjsh)

Manual

  • Improve Chinese translation. #31635, #31574, #31575, #31589, #31590 (@HappyColour, @yuangang123)
  • Fix missing href parameters for manual/#xx/lights. #31763 (@Rikahei)
  • Fix double open hyperlink by open in new tab. #31780 (@Rikahei)

Examples

  • Clean up. #31725, #31700, #31696, #31643, #31623, #31651, #31736, #31738 (@Methuselah96, @linbingquan, @Mugen87, @WestLangley)
  • Add webgpu_multiple_elements example. #31724, #31782 (@sunag)
  • Add WebGPU KTX2 test demo. #31714 (@Mugen87)
  • Add reflector resolutionScale to webgl_mirror example. #31692 (@WestLangley)
  • Add GLTF progressive example. #31625 (@marwie)
  • Add WebGPU check to some compute demos. #31685 (@Mugen87)
  • Improve comments in webgpu_custom_fog_background example. #31626 (@WestLangley)
  • Fix webgpu_compute_particles_fluid GUI. #31570 (@ycw)
  • Rename reversed depth buffer example. #31563 (@WestLangley)
  • Align webgpu_camera with WebGL demo. #31594 (@WestLangley)
  • Add TSL Procedural Wood Material. #31640, #31786 (@SeeleyLogan, @bhouston)
  • Add KHR animation pointer example page. #31761 (@marwie)

Addons

  • DepthOfFieldNode

    • New implementation. #31547, #31554 (@Mugen87)
  • DragControls

    • Fix firing events when actions are disabled. #31612 (@ahaensler)
  • FirstPersonControls

    • Fix dispose not release listener. #31606 (@314159265358x)
  • GLTFExporter

    • Make getToBlobPromise() more robust. #31598 (@boggan)
  • GTAONode

    • Add comments to TSL. #31676 (@Mugen87)
  • KTX2Loader

    • Fix WebGPU feature detection. #31721 (@Mugen87)
    • Add VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT. #31689 (@hybridherbst)
    • Support generateMipmaps=true. #31621 (@donmccurdy)
    • Support RGB9E5. #31611 (@donmccurdy)
    • Support R11G11B10 in loader and renderers. #31613 (@donmccurdy)
    • Support for BC4, BC5. #31713 (@donmccurdy)
    • Add PVRTC1 RGBA support. #31771 (@donmccurdy)
  • RGBELoader

    • Rename to HDRLoader. #31604 (@mrdoob)
  • RGBMLoader

    • Removal. #31566 (@mrdoob)
  • ShadowMapViewerGPU

    • Fix DepthTexture usage. #31673 (@sunag)
  • SSRPass

    • Add resolutionScale. #31629 (@Mugen87)
  • SSRNode

    • Use linear filtering and half float for reflection buffer. #31646 (@Mugen87)
    • Improve performance and add quality setting. #31576 (@Mugen87)
    • Add blurred mipmaps and honor roughness for ssr(). #31649, #3166 (@Mugen87, @sunag)
  • TSL

    • Add boxBlur(). #31556 (@Mugen87)
    • Align API of blur filters and deprecated premultipliedGaussianBlur(). #31557, #31559, #31741 (@Mugen87, @sunag, @s-rigaud)
  • TSL Transpiler

    • Add grouped precedence levels. #31581 (@sunag)
    • Remove the need for toVar(). #31580 (@sunag)
    • Fix addition of Before for non ++ or . #31579 (@sunag)

Tests

  • Run addons unit tests. #31664 (@mkeblx)
  • Add an USDZ E2E test. #31662 (@mkeblx)
2025-08-01 15:55:09
three.js

r179

https://github.com/mrdoob/three.js/wiki/Migration-Guide#178--179 https://github.com/mrdoob/three.js/milestone/92?closed=1

  • Global
    • Optimize CI workflow by eliminating redundant setup steps. #31383 (@souhailaS)
  • BatchedMesh
    • Fix setInstanceCount(). #31458 (@andreas-hilti)
  • PassNode
    • Add compileAsync(). #31501 (@Mugen87)
    • Provide viewport and scissor API. #31390, #31428 (@Mugen87)
  • ProjectorLight
    • Fix back-projection. #31473, #31474 (@Mugen87)
  • Line2NodeMaterial
    • Remove unused lineWidth property. #31401 (@Jenychen1996)
  • Line3
    • Add method for computing closest squared distance between line segments. #31384 (@TheBlek, @Mugen87)
  • Loader
    • Add abort(). #31276 (@Mugen87, @gkjohnson)
  • MaterialXNodes
    • Improved MaterialX import support to align with Blender's MaterialX exporter. #31439 (@bhouston, @sunag)
  • Matrix4
    • Rewrite makeOrthographic() for clarity. #31451 (@WestLangley)
  • NodeMaterial
    • Make sure fog is applied only once. #31463 (@Mugen87)
  • NodeMaterialObserver
    • Add checking the lights. #31440 (@sunag)
  • NodeUtils
    • Ignore private sub properties in getNodeChildren(). #31523 (@Mugen87, @sunag)
  • Renderer
    • Make info log evaluation more robust. #31438 (@Mugen87)
  • SkeletonHelper
    • Add setColors(). #31484 (@lukehorvat)
  • StorageTexture
    • Add .setSize(). #31502 (@sunag)
  • Timer
    • Move into core. #31385 (@Mugen87)
  • TSL
    • Double-check on the parents of the atomic functions to prevent errors. #31509 (@sunag)
    • Add load() function to texture(). #31510 (@sunag)
    • Introduce boolean for uniform(). #31507 (@sunag)
    • Sequential object as parameters for Fn( { .. } ). #31498 (@sunag)
    • Rename label() to setName(). #31490 (@Mugen87)
    • Add debug() for the stack when running outside the code flow. #31486 (@sunag)
    • Introduce automatic use of toVar() to assign(). #31459 (@sunag)
    • Introduce computeKernel(). #31402 (@Spiri0, @sunag)
    • Fix pass() build during sample() call using Mesh. #31431 (@sunag)
    • viewportTexture() cache FramebufferTexture according to RenderTarget. #31343 (@sunag)
    • Introduce events. #31514 (@sunag)
  • VideoTexture
    • Cancel rVFC on Dispose. #31375 (@ycw)
  • WebGLRenderer
    • Improve reversed depth buffer support. #31508, #31495, #31499, #31496, #31500, #31464, #31481, #31466, #31370, #31391, #31426, #31410, #31405, #31407, #31512 (@WestLangley, @CodyJasonBennett, @sunag)
    • Support MRT for 2d array textures. #31476 (@mrxz)
  • WebGPUBackend
    • Remove obsolete argument from getDrawingBufferSize(). #31460 (@Mugen87)
    • Fix manual clear() regression. #31388 (@Mugen87)
  • WebGPURenderer
    • Improve and fix texture bindings manager. #31497 (@sunag)
    • SampledTexture extends of Sampler for bindings. #31494 (@sunag)
    • Persistent video texture approach. #31416, #31425, #31423 (@sunag, @Mugen87)
    • Avoid hardcoding color spaces. #31519 (@Mugen87)
  • WebGPUUtils
    • Ensure sample count is valid. #31352 (@ycw)
  • WebXRManager
    • Set glBinding separately from layer creation. #31443 (@mikeskydev)
    • Disable left eye layer for right eye camera and vice versa. #31437 (@mrxz)

Docs

  • Clean up. #31447, #31450 (@s-rigaud)
  • Add KTX2Exporter page. #31441 (@mkeblx)
  • Add USDZExporter page #31417 (@mkeblx)
  • Improve AnimationClip page. #31415 (@Mugen87)
  • Improve KeyframeTrack page. #31373 (@floriandotorg)
  • Improve Texture page. #31477 (@agargaro)
  • Improve Korean translation. #31344 (@sonwonjae)
  • Improve JSDoc. #31475, #31380, #31341, #31529 (@powah, @Mugen87, @WestLangley)

Examples

  • Clean up. #31504, #31483, #31485, #31412, #31411, #31379 (@Mugen87, @WestLangley, @linbingquan)
  • Improved webgpu_reflection example. #31409, #31372 (@mrdoob, @Mugen87)
  • Add webgpu_postprocessing_dof_basic. #31445 (@Mugen87)
  • Upgrade meshopt_decoder.module.js to 0.22. #31449 (@zeux)
  • Switch to OrbitControls in webgl_shadowmap example. #31406 (@WestLangley)
  • Improve AA approach in WebGPU water demo. #31354 (@Mugen87)
  • Use onLoad() in webgpu_materials. #31362 (@andyleiserson)
  • Add webgpu_compute_texture_3d example. #31337 (@RenaudRohlinger)
  • Rename import from three to three/webgpu in WebGPU demos. #31518 (@sunag)
  • Add GUI to webgpu_loader_materialx example. #31530 (@WestLangley)

Addons

  • EXRLoader

    • Added lossyDctChannelDecode. #31482 (@mrdoob)
    • Introduces output-format API. #31511 (@sciecode)
    • Set color space to linear-sRGB. #31525 (@WestLangley)
  • FBXLoader

    • Fix vertex color check. #31420 (@Mugen87)
  • GTAOPass

    • Improve cache performance. #31454 (@querielo)
    • Exclude Line2 objects from AO calculation #31422 (@wyc001122)
  • HTMLMesh

    • Add support for email and password inputs. #31345 (@HuangLinBao)
  • LensflareMesh

    • Use colorNode instead of fragmentNode. #31433 (@Mugen87)
  • LightProbeGenerator

    • Support FloatType in fromCubeRenderTarget(). #31349 (@Mugen87)
  • OutlinePass

    • Exclude Line2 objects from outline computation. #31503 (@pwlviolet)
  • RapierPhysics

    • Support RoundedBoxGeometry. #31351 (@linbingquan)
  • RoomEnvironment

    • Set emissiveIntensity instead. #31348 (@WestLangley)
  • RoundedBoxGeometry

    • Add type, parameters and toJSON(). #31340 (@vis-prime)
  • SSAOPass

    • Improve cache performance. #31453 (@querielo)
  • TRAANode

    • New TRAA implementation. #31421 (@Mugen87, @sunag)
  • TTFLoader

    • Fix when TTF has different unicode assign to same glyph index. #31386 (@Rikahei)
  • TSL Transpiler

    • Fix operator precedence of GLSLDecoder. #31515 (@sunag)
  • USDZExporter

    • Add option for onlyVisible. #31489 (@mkeblx)
    • Export scene hierarchy. #31448 (@mkeblx)
    • Use object names #31442, #31444 (@mkeblx)
    • Refactor to use two stages. #31400 (@mkeblx)

Tests

  • Clean up Frustum tests. #31456 (@WestLangley)
  • Add test for USDZExporter. #31435 (@mkeblx)

Editor

  • Fix crash when geometry lacks position attribute. #31334 (@AlexRynas)
  • Add support for EXR files. 01d3c943f0452ff856b4bdd162f4c86bd67dc2ee (@mrdoob)
  • Load image loaders only when needed. 2f3dd3822cb270b422dae55153f69dfffd08ff85 (@mrdoob)
2025-06-30 21:37:14
three.js

r178

https://github.com/mrdoob/three.js/wiki/Migration-Guide#r177--r178 https://github.com/mrdoob/three.js/milestone/91?closed=1

  • Global
    • Remove deprecated code. #31254 (@Mugen87)
    • Correct the blending formulas in all renderers. #31246 (@WestLangley)
    • Upgrade monaco-editor. #31300 (@linbingquan)
    • Initial support for Float16Array in renderers. #31305 (@Mugen87)
  • Clock
    • Inline performance.now(). #31295 (@linbingquan)
  • Frustum
    • Honor sprite offset in intersectsSprite(). #31307 (@Mugen87)
  • GLBufferAttribute
    • Add normalized property. #31268 (@Rtwo-Dtwo)
  • ImageLoader
    • Optimize caching. #31258 (@Mugen87)
  • Loader
    • Use unique cache keys per loader type. #31315, ac07a8accb1228707e694a221d9ed8ab71d694f6, ee327fd8e13ae7d6e5fbcd6506a4006405aa5232 (@Mugen87, @mrdoob)
  • NodeBuilder
    • Fix interpolation specifier. #31222 (@cmhhelgeson)
  • NodeMaterial
    • Honor material.premultipliedAlpha in the shader. #31166 (@WestLangley)
  • Quaternion
    • Update epsilon in setFromUnitVectors(). #31302 (@Mugen87)
  • RenderObject
    • Check attributes version of the geometry. #31227 (@sunag)
  • SampleNode
    • Remove PURE annotation. #31293 (@Mugen87)
  • TSL
    • Fix Fn as parameter. #31214 (@sunag)
    • Introduce sample(). #31287 (@sunag)
    • Introduce textureBicubicLevel(). #31288 (@sunag)
    • Move TriplanarTexturesNode to triplanarTextures() Fn. #31285 (@sunag)
    • Move EquirectUVNode to equirectUV() Fn. #31283 (@sunag)
    • Move MatcapUVNode to matcapUV Fn constant. #31284 (@sunag)
    • Remove transformed* prefix. #31271 (@sunag)
    • Fix convertToTexture() auto resize. #31277 (@sunag)
    • Fix outgoingLight redeclaration. #31266 (@sunag)
    • Introduce Chromatic Aberration. #31236 (@pashaydev)
    • Fix inconsistent chaining for step() (Parameter order). #31241 (@sunag)
    • Rename premult to premultiplyAlpha. #31240 (@sunag)
    • Introduce tangentViewFrame and bitangentViewFrame. #31282 (@sunag)
    • Use node.nodeType instead of safeGetNodeType(). #31328 (@sunag)
  • WebGLPrograms
    • Don't use flat shading with enabled wireframe. #31242 (@Mugen87)
    • Fix cache key with gradient maps. #31292 (@Mugen87)
  • WebGLRenderer
    • Correctly restore render target during transmission pass. #31320 (@Mugen87)
  • WebGPUConstants
    • Add missing features. #31323 (@cmhhelgeson)
  • WebGPURenderer
    • Use correct invalidation array in WebGL backend. #31255 (@cabanier)
    • Make MSAA with MRT work with WebGL backend. #31228 (@Mugen87)
    • Honor depth/stencil in blitFramebuffer(). #31219 (@Mugen87)
    • Add Storage3DTexture and StorageArrayTexture. #31175, #31327 (@Spiri0, @sunag)
  • XRManager
    • Silence opaque framebuffer warning. #31201 (@cabanier)
  • XRRenderTarget
    • Clean up. #31210 (@Mugen87)

Docs

  • Improve JSDoc. #31261, #31224, #31317 (@linbingquan, @SamJB123)

Manual

  • Open external links in new tab. #31273 (@Mugen87)
  • Fix code typo in scene graph page. #31289 (@MeirArani)
  • Improve French translation. #31252 (@AlexandreGagne10)
  • Fix links to homepage. #31301 (@Mugen87)

Examples

  • Clean up. #31265, #31303 (@zeevick10, @Methuselah96)
  • Improve water demo. #31291 (@Mugen87)
  • Add BatchedMesh LOD and BVH example page. #31239 (@agargaro)
  • Merge geometry demos. #31253 (@Mugen87)
  • Fix GUI colors in webgpu_compute_cloth example. #31232 (@WestLangley)
  • Fix instancedArray() usage of webgpu_compute_birds. #31230 (@sunag)
  • Fix texture path of webgpu_sandbox. #31217 (@sunag)
  • Merge OBJ demos. #31216 (@Mugen87)
  • Add new path demo. #31209 (@Mugen87)
  • Add webgpu_reflection_roughness. #31294, c06fa765243ce8379b539d73e6690914bec2039a (@sunag)
  • Improve lottie example. #31321 (@linbingquan)
  • Add window resize event to webgl_geometry_extrude_shapes. #31324 (@linbingquan)

Addons

  • ArcballControls

    • Add passive: false for wheel event. #31259 (@juji)
  • FBXLoader

    • Gracefully handle missing color data. #31248 (@Mugen87)
  • RapierPhysics

    • Add removeMesh(). #31296, #31298 (@linbingquan)
  • RoundedBoxGeometry

    • Fix parameters of the parent class. #31319 (@linbingquan)
  • TransformControls

    • Make gizmo colors configurable. #31262 (@Mugen87)
  • TSL Transpiler

    • Add support for switch statements. #31272 (@cmhhelgeson)
    • Fix unary negate after arithmetic operator. #31297 (@sunag)
    • Add simplified Fn() layout. #31299 (@sunag)
    • Introduce Linker and improvements. #31314 (@sunag)
    • Introduce WGSLEncoder. #31329 (@sunag)

Editor

  • Fix typo in comment. #31264 (@vtjl10)
2025-05-31 01:30:20
three.js

r177

https://github.com/mrdoob/three.js/wiki/Migration-Guide#r176--r177 https://github.com/mrdoob/three.js/milestone/90?closed=1

  • Global
    • Increase version of Object/Scene format. #31096 (@repalash)
    • Fix exports in src/three.tsl.js. #31109 (@ycw)
  • AudioListener
    • Set the proper up-direction. #31054 (@WestLangley)
  • Box3
    • Add toJSON() and fromJSON() methods. #31028 (@gkjohnson)
  • ColorManagement
    • Improve Nomenclature. #31152 (@WestLangley)
  • HemisphereLightNode
    • Change normalView to normalWorld. #31074 (@vitro-mod)
  • ImageBitmapLoader
    • Make error handling more robust. #31088 (@Mugen87)
  • LightsNode
    • Fix castShadow regression. #31106 (@Mugen87)
  • MaterialNode
    • Fix dashOffset with LineDashedMaterial. #31008 (@Mugen87)
  • Mesh
    • Add count property. #31091 (@sunag)
  • NodeMaterial
    • Cleanup alphaTest. #31147 (@sunag)
    • Introduce maskNode and improve shapeCircle(). #31127 (@sunag)
    • Execute setupVertex() if vertexNode is defined. #31136 (@sunag)
  • NodeMaterialObserver
    • Fix missing intensity uniform updates. #31120 (@Mugen87)
  • PMREMGenerator
    • Fix usage with PMREMNode. #31001 (@Mugen87)
  • ShadowMaskModel
    • Fix usage with non shadow casting light. #31081 (@Mugen87)
  • ShadowNode
    • Fix VSM with point lights. #31103 (@Mugen87)
    • Clean up. #31104 (@Mugen87)
  • Sphere
    • Add toJSON() and fromJSON() methods. #31028 (@gkjohnson)
  • SpotLightNode
    • Add custom attenuation using spotLight.attenuationNode. #31013 (@sunag)
  • SpotLightShadow
    • Introduce aspect property. #31020 (@sunag)
  • Sprite
    • Add count property. #31091 (@sunag)
  • StorageBufferNode
    • Add getMemberType(). #31139 (@HongchengZhao)
  • Texture
    • Add setValues(). #31087 (@CodyJasonBennett)
    • Texture: Introduce width, height, depth. #31025 (@sunag)
    • Add updateRanges. #30998 (@CodyJasonBennett)
  • TSL
    • Improve build stages #31156 (@sunag)
    • Ensure memory alignment for struct(). #31151 (@sunag)
    • Fix mat2 boundary size. #31162 (@sunag)
    • Ensure 4 byte alignment for instancedArray() and attributeArray(). #31146 (@sunag)
    • Add premult() and unpremult(). #31114 (@sunag)
    • Fix reflector() clear texture and stop update if bounce is false. #31110 (@sunag)
    • Add hashBlur() options {repeats,mask,premultipliedAlpha}. #31115 (@sunag)
    • Fix getBitangent(). #31059 (@Mugen87)
    • Fix lightShadowMatrix() if renderer.shadowMap.enabled is false. #31024 (@sunag)
    • Fix .toVarying() analyze for optimization. #31090 (@sunag)
    • Fix auto-cache if using multiple conditionals. #31076 (@sunag)
    • Introduce namespace. #31168 (@sunag)
    • Fix object-as-parameter checking for Fn(). #31176 (@sunag)
  • WebGPURenderer
    • Honor Texture.premultiplyAlpha in WebGPU backend. #31157 (@Mugen87)
    • Fix generate mipmaps when using copyFramebufferToTexture() in WebGPU backend. #31163 (@sunag)
    • Apply color management changes from #26644. #31142 (@Mugen87)
    • Fix runtime errors introduced by texture array refactor. #31108, #31099 (@cabanier)
    • Rename XRResetState() to _resetXRState(). #31105 (@cabanier)
    • Introduce ProjectorLight. #31022 (@sunag)
    • Array-Based RenderTarget Refactor. #30959 (@RenaudRohlinger)
    • Cache pipeline per render/compute pass. #31066 (@Mugen87)
    • Optimize WebXR render path. #31134, #31189 (@cabanier)
    • Fix blend factor nomenclature. #31188 (@WestLangley)
  • WGSLNodeBuilder
    • Fix use of sampler for vertex stage. #31052 (@sunag)
  • XRManager
    • Fix layer color correction. #31124 (@cabanier)

Docs

  • Clean up. #31046 (@Mugen87)
  • Improve LoaderUtils page. #31082 (@ycw)
  • Improve SkeletonHelper JSDoc. #31113 (@upisfree)
  • Improve XRManager JSDoc. #31101 (@Mugen87)

Manual

  • Fix primitives page. #30997 (@Mugen87)

Examples

  • Clean up. #31130, #31138, #31030, #31107 (@WestLangley, @linbingquan, @ycw)
  • Add webgpu_compute_particles_fluid. #31148, #31159 (@holtsetio)
  • Add webgpu_compute_cloth. #31123 (@holtsetio)
  • Improve noise.png. #31137 (@Mugen87)
  • Improve webgpu_compute_particles. #31092 (@mrdoob)
  • Add webgpu_reflection_blurred. #31116, #31118 (@sunag)
  • Add textured assets to webgl_loader_fbx. #31117 (@tatsuya-ogawa)
  • Integrate lookAt() into the rotateTowards() demo. #31063 (@Mugen87)
  • Fix memory leak in FBX demo. #31068 (@Mugen87)
  • Make dynamic instancing demo more interesting. #31058 (@Mugen87)
  • WebGPU Compute Water Adjustment. #30985, #31011 (@cmhhelgeson, @sunag)
  • Update shadow opacity in webgpu_shadowmap_opacity. #30984 (@sunag)
  • Cleanup webgl_reverse_depth_buffer. #30989 (@CodyJasonBennett)
  • Fix shadows in physics instancing demos. #30988 (@Mugen87)
  • Fix webgpu_water GUI. #31014 (@sunag)
  • Add resize event listener for physics_rapier_instancing. #31012 (@linbingquan)
  • Clean up XR examples browser notices. #31053 (@mkeblx)
  • Make point lights demo more interesting. #31040 (@Mugen87)
  • Remove webgl_geometry_dynamic. #31047 (@Mugen87)
  • Make tone mapping demos more interesting. #31045 (@Mugen87)
  • Make layers example a bit more interesting. #31036 (@Mugen87)
  • Add GUI to normal and bump map demo. #31077 (@Mugen87)
  • Fix memory leak in SVG demo. #31170 (@Mugen87)

Addons

  • AfterimagePass

    • Add damp accessor. #31035 (@neilrackett)
  • ArcballControls

    • Fix state data for reset. #31184 (@Mugen87)
  • CSMShadowNode

    • Fix toggle of castShadow. #31186 (@Mugen87)
  • FBXLoader

    • Improve error handling. #31017 (@Mugen87)
    • Use getHandler() for custom texture loaders. #31032 (@tatsuya-ogawa)
    • Add webp MIME type. #31098 (@Altrozero)
  • FXAAPass

    • Add pass class for FXAA post processing shader. #31044 (@neilrackett)
  • GLTFExporter

    • Push nodes parent-first instead of child-first. #31125 (@aaronfranke)
  • GLTFLoader

    • Clone node associations. #31051 (@nkrajina)
  • HTMLMesh

    • Add support for input of type text and number in VR. #31160 (@vincentfretin)
  • KTX2Loader

    • Support ETC2, BCn, and ASTC 4x4 sRGB. #31155 (@donmccurdy)
  • LDrawLoader

    • Don't clear already-loaded materials onload. #31150 (@Floppy)
    • Improve docs. #31153 (@Mugen87)
  • LineMaterial

    • Fix clipping planes. #31144 (@rtortajada)
  • Octree

    • Improve configurability. #31097 (@Mugen87)
  • PCDLoader

    • Parse header without TextDecoder. #31069 (@F-loat)
    • Implement data type dependent binary parsing. #31061 (@F-loat)
  • PeppersGhostEffect

    • Remove addon. #31037 (@Mugen87)
  • SkyMesh

    • Improve varyings declaration. #31133 (@sunag)
  • USDZExporter

    • Fix object indentation level. #31126 (@mkeblx)
    • Fix JSDoc to match default value. #31119 (@mkeblx)

Editor

  • Fix minor bugs. #31050 (@Mugen87)
2025-04-23 16:58:30
three.js

r176

https://github.com/mrdoob/three.js/wiki/Migration-Guide#r175--r176 https://github.com/mrdoob/three.js/milestone/89?closed=1

  • Global
    • Remove legacy code. #30821 (@Mugen87)
    • Remove Luminance and LuminanceAlpha format. #30934 (@gkjohnson)
  • ArrowHelper
    • Replace cylinder with cone geometry. #30867 (@shlomnissan)
  • Animation
    • Fix ReferenceError in non-broswer environment. #30835 (@chirsz-ever)
  • Background
    • Make sure background nodes can be disposed of. #30938 (@Mugen87)
  • BatchedMesh
    • Fix toJSON(), ObjectLoader integration. #30965 (@gkjohnson)
  • CapsuleGeometry
    • Add heightSegments parameter. #30868 (@mkeblx)
    • Change length param to height, fix UVs. #30915 (@mkeblx)
  • ExtrudeGeometry
    • Fix regression introduced with last release. #30822 (@mlasala45)
  • LightsNode
    • Honor spotlight maps in cache key. #30940 (@Mugen87)
  • NodeMaterial
    • Fix alpha of vertex-color. #30974 (@sunag)
  • NodeMaterialObserver
    • Force refresh when rendering velocity. #30840 (@Mugen87)
  • RenderTarget
    • Fix depth texture assignment regression. #30921 (@Spiri0)
  • ShadowNode
    • Inherit camera.layers only if shadow.camera.layers is not set. #30877 (@RenaudRohlinger)
  • TSL
    • Don't flip normals when using flat shading. #30823 (@Mugen87, @sunag)
    • Fix frontFacing when using material.flatShading. #30828 (@sunag)
    • Add dFdx and dFdy warnings. #30831 (@sunag)
    • Show shader stage in debug() message. #30833 (@sunag)
    • Fix blur() on Framebuffer. #30845 (@RenaudRohlinger)
    • Fix bitangent* when using material.flatShading. #30837 (@sunag)
    • Fix instance() optional parameter. #30848 (@sunag)
    • Introduce varying.setInterpolation(). #30582 (@cmhhelgeson, @sunag)
    • Fix optional Fn parameters. #30884 (@sunag)
    • Fix texture() matrix sync. #30893 (@sunag)
    • Fix early-z rejection. #30891 (@sunag)
    • Add increment() and decrement() and fix unsual for() expression syntax for transpiler. #30912 (@Mugen87, @sunag)
    • Fix dispose() when using reflector(). #30933 (@Mugen87)
    • Fix and improve bvec operators. #30922 (@sunag)
    • Fix debug() changes the compiled code. #30944 (@sunag)
    • Add switch/case. #30935 (@Mugen87)
    • Add expression support for loop( { update: ... } ). #30947 (@sunag)
    • Add Stack() and .toStack(). #30956 (@sunag)
    • Cache getShadowRenderObjectFunction(). #30969 (@sunag)
    • Fixes the return value of atomic* nodes. #30971 (@sunag)
    • Auto-cache atomic* nodes. #30972 (@sunag)
    • Fix denoise() sampler texture. #30975 (@sunag)
    • Improve debug() callback changing to ( builder, code ) signature. #30976 (@sunag)
  • VelocityNode
    • Fix initial value of previous model matrix. #30839 (@Mugen87)
  • WebGLRenderer
    • Fix binding __webglFramebuffer when mipmaps are used. #30746 (@haxiomic)
    • Support alphaToCoverage with shadows. #30871 (@Mugen87)
  • WebGPURenderer
    • Introduce Shadow Map Array. #30830 (@RenaudRohlinger)
    • Introduce compatibilityMode. #30854, #30869, #30875 (@sunag)
    • Disable draw call when object.count = 0. #30881 (@cmhhelgeson)
    • Make material.transparent behave as in WebGLRenderer. #30862 (@rkreis-v)
    • Add Multiview support. (@cabanier)
    • Introduce renderer.highPrecision. #30970 (@sunag)
  • WGSLNodeBuilder
    • Improve isCustomStruct() checking. #30525 (@Spiri0)
  • XRManager
    • Request reference space for both layers and non layers. #30902 (@danrossi)

Docs

  • Clean up. #30888, #30927, #30978 (@rizzler329842, @notgod6, @arcs-)
  • Simplify JSDoc output directory. #30815 (@Mugen87)
  • Fix typos and types. #30843, #30874, #30880, #30879 (@s-rigaud)
  • Improve SkinningNode. #30852 (@Mugen87)
  • JSDoc: Add import section for addons. #30853, #30860 (@Mugen87)
  • Improve Chinese translation. #30887 (@linzhou559)

Examples

  • Clean up. #30820, #30979 (@Mugen87, @Methuselah96)
  • Added additional Rapier physics examples. #30818 (@NikLever)
  • Fix AR hit-test. #30866 (@mkeblx)
  • Use InstancedMesh in webgl_clipping_advanced. 2cb9218b049b93c0b412e4b1e73ab340bf87e6ba (@mrdoob)
  • Fix WebXR Haptics example when entering VR from Oculus Browser button. #30859 (@arturitu)
  • Add external "3d tiles" globe example. #30883, #30907 (@gkjohnson)
  • Use post-processing and improve description in reverse depth buffer demo. #30941 (@CodyJasonBennett)
  • Add webgpu_caustics example and shadow revisions. #30962 (@sunag)
  • Call ImageBitmap.close() in webgl_loader_imagebitmap. #30977 (@Mugen87)

Addons

  • Global

    • Fix SSAA/TRAA state reset. #30838 (@Mugen87)
    • Clean up. #30917, #30918, #30953 (@satelllte, @Mugen87)
  • AfterImageNode

    • Fix usage of multiple nodes. #30834 (@Makio64)
  • GLTFLoader

    • Remove support detection for WebP and AVIF. #30864 (@Mugen87)
  • IFFParser

    • Fix missing Debbuger attribute declarations #30946 (@s-rigaud)
  • ImprovedNoise

    • Use MathUtils.lerp(). #30905 (@satelllte)
  • LottieLoader

    • Deprecated loader, inline library usage. #30896 (@Mugen87)
  • MD2CharacterComplex

    • Fix frontDeceleration attribute name. #30817 (@s-rigaud)
  • OutlinePass

    • Fix using with BatchedMesh. #30952 (@luigidenora)
  • PointerLockControls

    • Constant for mouse sensitivity #30966 (@satelllte)
  • RapierPhysics

    • Add heightfield support. #30906 (@andytriboletti)
  • RoomEnvironment

    • Use InstancedMesh. df3b15e5f4a35aa083138d71965b1352f4102685 (@mrdoob)
  • TileShadowNode

    • Fix shadow manual update. #30863 (@RenaudRohlinger)
  • TSLTranspiler

    • Add valid !=. #30890 (@s-rigaud)
    • Fix typo. 2edea69e6e6bb213198a9864034824b856aa9c09 (@sunag)
  • Water2Mesh

    • Fix missing material.transparent=true. #30892 (@sunag)

Editor

  • Fix selection box update when reparenting objects in hierarchy. #30904 (@lixinde)
2025-03-28 14:05:58
three.js

r175

https://github.com/mrdoob/three.js/wiki/Migration-Guide#r174--r175 https://github.com/mrdoob/three.js/milestone/88?closed=1

  • Global
    • Remove deprecated code. #30621 (@Mugen87)
  • AnalyticLightNode
    • Fix call of setupShadowNode(). #30713 (@s-rigaud)
  • AnimationClip
    • Deprecate parseAnimation(). #30625 (@Mugen87)
  • ArrayElementNode
    • Optimize indexes. #30741 (@sunag)
  • AtomicFunctionNode
    • Add inline support. #30732 (@sunag)
  • Attributes
    • Fix null check. #30694 (@Mugen87)
  • Backend
    • Move trackTimestamp to parent class. #30714 (@s-rigaud)
  • BufferGeometry
    • Fix clone index data copy. #30680 (@s-rigaud)
  • Controls
    • Require element in connect(). #30772 (@mrdoob)
  • Earcut
    • Copy mapbox/earcut file into core libs. #30756 (@gkjohnson)
  • ExtrudeGeometry
    • Automatically clean shape data. #30750 (@mlasala45)
  • FileLoader
    • Avoid undefined for members. #30622 (@Mugen87)
  • ImageUtils
    • Add optional type parameter to getDataURL(). #30751 (@Mugen87)
  • Material
    • Add allowOverride. #30753 (@Mugen87)
  • MorphNode
    • Improve performance. #30742 (@sunag)
  • NodeBuilder
    • Add abstract reference for buildFunctionCode(). #30712 (@s-rigaud)
  • NodeMaterial
    • Add support for compute() integrated into the material. #30768 (@sunag)
  • OperatorNode
    • Fix notEqual() redundant bool conversion. #30740 (@sunag)
  • Renderer
    • Disallow render target resizing while in XR. #30738 (@cabanier)
  • ShadowMaskModel
    • Fix signatures. #30764 (@Mugen87)
  • TextureNode
    • Add blur() check and warning. #30722 (@sunag)
  • TSL
    • Simplify expression output. #30691 (@RenaudRohlinger)
    • Add samplerComparison. #30734 (@sunag)
    • Fix equal() inconsistent. #30777 (@sunag)
    • Allow max()/min() to take an arbitrary number of arguments. #30780 (@sunag)
    • Avoid name collisions. #30785 (@sunag)
    • Improve warnings. #30783 (@sunag)
    • Deprecated modInt() and minor fixes. #30790, #30796 (@sunag)
    • Add debug(). #30797 (@sunag)
    • Add while to Loop(). #30807 (@sunag)
    • Simplified Fn() layout. #30810 (@sunag)
    • Improve vec* checks and warnings. #30811 (@sunag)
  • WebGLBackend
    • Bring back 3D functionality for copyTextureToTexture(). #30584, #30644 (@zonkypop, @Mugen87)
  • WebGLRenderer
    • Refactor setRenderTargetTextures(). #30628 (@cabanier)
    • Fixed readRenderTargetPixelsAsync() readability check. #30672 (@greyb1t)
    • Fix reference to drawingBufferColorSpace. #30707 (@s-rigaud)
    • Fix setReversed() so reverseDepthBuffer: true works. #30809 (@haxiomic, @CodyJasonBennett)
  • WebGPUAttributeUtils
    • Use correct buffer offset for updateRanges. #30617 (@zonkypop)
    • Add int8/uint8 patch. #30749 (@sunag)
  • WebGPUBackend
    • Make copyTextureToTexture() work with 3D textures. #30618 (@zonkypop)
  • WebGPUConstants
    • Fix name of RG11B10UFloat. #30717 (@s-rigaud)
  • WebGPURenderer
    • Fix texture view caching and dispose event stacking #30647 (@RenaudRohlinger)
    • Honor material.outputNode if used with MRT. #30659 (@sunag)
    • RenderBundle support transparent objects. #30689 (@RenaudRohlinger)
    • RenderBundle use correct LightsNode. #30700 (@RenaudRohlinger)
    • Revisions for release. #30803 (@sunag)
  • WebGPUTextureUtils
    • Fix reference for BC4RSnorm. #30678 (@s-rigaud)
  • XRManager
    • Fix up AA for WebXR and use multisample extension only when needed. #30724 (@cabanier)
    • Add more integrated support for WebXR Layers. #30730 (@cabanier)

Manual

  • Move guides from old docs to manual. #30736, 49f25c6e5ee731e1daf0c3978bd59cda62f76c74 (@Mugen87, @mrdoob)

Docs

  • Add more JSDoc. #30620, #30624, #30629, #30631, #30633, #30638, #30641, #30642, #30646, #30649, #30651, #30656, #30658, #30662, #30675, #30686, #30692, #30702, #30705, #30719, #30727, #30733, #30752, #30793 (@Mugen87)
  • Fix typings and typos. #30626, #30632, #30664, #30665, #30677, #30711, #30723, #30721, #30776, #30789, #30791 (@s-rigaud, @omahs)
  • Improve Chinese translation. #30683 (@kang-git)

Examples

  • Clean up. #30798, #30799 (@s-rigaud)
  • Cleanup volumetric lighting examples. #30660 (@sunag)
  • Improve webgpu_compute_geometry example. #30699 (@cmhhelgeson)
  • Avoid relying on implicit event parameter. #30792 (@s-rigaud)
  • Add new examples. #30695 (@lo-th)

Addons

  • AMFLoader

    • Fix materialId reference. #30668 (@s-rigaud)
  • AnimationClipCreator

    • Default to empty string for clip name. #30666 (@s-rigaud)
  • AsciiEffect

    • Avoid useless split operations. #30667 (@s-rigaud)
    • Fix values types. #30710 (@s-rigaud)
  • CSMShader

    • Add missing getPointShadow() argument. #30771 (@brentyi)
  • EXRLoader

    • Fix string comparison. #30709 (@s-rigaud)
  • GLTFExporter

    • Delete invalid and outdated fallback. #30744 (@Bajdzis)
  • GLTFLoader

    • Fix bad reference to PATH_PROPERTIES. #30669 (@s-rigaud)
  • LDrawLoader

    • Wrong call to parseModel(). #30670 (@s-rigaud)
    • Fix error message. #30801 (@s-rigaud
  • LUTImageLoader

    • Harmonize ctor. #30720 (@Mugen87)
  • LWOLoader

    • Fix method calls. #30802 (@s-rigaud)
  • MD2Loader

    • Clip creation requires additional argument. #30671 (@s-rigaud)
  • OculusHandModel

    • Fix reference to path attribute. #30679 (@s-rigaud)
  • ProgressiveLightMapGPU

    • Disclove potpack hidden behavior. #30716 (@s-rigaud)
  • PointerLockControls

    • Add unadjustedMovementoption to lock(). #30687 (@james090500)
  • USDZExporter

    • Reuse instantiated material for buildXform(). #30661 (@zphr)
  • USDZLoader

    • Fix Blob options. #30708 (@s-rigaud)
  • ViewHelper

    • Adjust viewport position for WebGPU renderer. #30735 (@Child-qjj)
  • VolumeSlice

    • Comment out broken code path. #30715 (@s-rigaud)

Editor

  • Fix publish. #30690 (@Mugen87)
  • Improve Chinese translation. #30787 (@linbingquan)
  • Add color space options for background textures. #30794 (@Mugen87)