https://github.com/mrdoob/three.js/wiki/Migration-Guide#185--186
https://github.com/mrdoob/three.js/milestone/99?closed=1
- Global
- AnimationObjectGroup
- Fix stale index bookkeeping in uncache() and unsubscribe_(). #34035 (@sean-kim05, @Mugen87)
- Backend
Renderer: AddresetState()function. #33877 (@pepperoni505, @Mugen87)
- Backends
- BatchedMesh
- Mark visibility dirty in setGeometryIdAt(). #34096 (@wrangelvid)
- BezierInterpolant
- Bindings
- BufferGeometry
- Core
- Frustum
- Geometries
- Delete the disposed geometry's own attributes. #33939 (@sashankaryal, @Mugen87)
- ImageBitmapLoader
- Fix regression in
load(). #34151 (@Mugen87) - Avoid mutating loader options. #34500 (@cuishuang, @Mugen87)
- Fix regression in
- KeyframeTrack
- Material
- MathUtils
- MeshPhysicalMaterial
- Object3D
- PMREMGenerator
- QuadMesh
- Ray
- New watertight intersectTriangle(). #33661 (@Mugen87)
- Handle empty spheres in intersectSphere(). #34016 (@sean-kim05)
- Renderer
- Don't use MSAA for fullscreen-passes. #33936 (@Mugen87)
- Fix operator-precedence bug. #33943 (@Mugen87)
- Fix computation of
_projScreenMatrix. #33947 (@Mugen87) - Clear inactive render lists. #33941 (@Mugen87)
- Warn when using removed PCFSoftShadowMap. 1b7d5f7 (@mrdoob, @claude)
- Remove remaining PCFSoftShadowMap code. #33987 (@mrdoob, @claude)
- Clarify PCFSoftShadowMap warning. 4d0de92 (@mrdoob, @claude)
- Use
WeakMapinInfo. #34045 (@Mugen87) - Simplify
_getFrameBufferTarget(). #34157 (@Mugen87) - Introduce
dispose()async. #34364 (@sunag)
- Renderers
- RenderTarget
- RenderTarget3D
- Shaders
- Fix multi-scattering energy compensation, remove BRDF_GGX_Multiscatter. #33983 (@mrdoob, @claude)
- Fix iridescence IBL multiscattering and transposed XYZ_TO_REC709. #33984 (@mrdoob, @claude)
- Improve energy conservation for diffuse and sheen lighting. #33985 (@mrdoob, @claude)
- Make comments more explicit. #34038 (@WestLangley)
- Add environment lighting support for retroreflective materials. #33995 (@mrdoob, @bhouston, @claude)
- Source
- src
- Remove deprecated code. #33886 (@linbingquan)
- Src
- Improve retroreflection nomenclature. #34079 (@WestLangley)
- Clean up. #34161 (@WestLangley)
- Clean up. #34272 (@WestLangley)
- SunLight
- TimestampQueryPool
- TorusGeometry
- Forward thetaStart and thetaLength in fromJSON(). #34034 (@sean-kim05, @Mugen87)
- Tour
- Vector3
- Clean up comments. #34037 (@WestLangley)
- WebGLAnimation
- Schedule next frame before the loop callback. #34448 (@aktanazat, @Mugen87)
- WebGLBackend
- Fix usage of
storeMultisampledDepthBuffer. #34142 (@Mugen87) - Add support for MinEquation and MaxEquation. #34146 (@tonybart1337)
- Make clear of default framebuffer more consistent. #34502 (@WilliamLiu-1997, @Mugen87)
- Fix usage of
- WebGLOutput
- WebGLRenderer
- Fix
clearLayerUpdates()call. #33989 (@Mugen87) - Tighten multi-scattering check. #34047 (@Mugen87)
- Fix color texture check for
BatchedMesh. #34056 (@Mugen87) - Optimize readRenderTargetPixels capability checks. #34183 (@dli7319, @Mugen87)
- Support Node Materials in
compile(). #34232 (@Mugen87) - Add SunLight with cascaded shadow maps. #34221 (@mrdoob, @claude)
- Make GL init more robust. #34299 (@Mugen87)
- Unbind PIXEL_PACK_BUFFER after async readback. #34321 (@TheBlek, @cursoragent)
- fix compileAsync() crashing when a tracked material is disposed mid-flight. #34378 (@kvvasuu, @Mugen87)
- Honor clipping in
compile(). #34507 (@Mugen87)
- Fix
- WebGLTextures
- WebGLTextureUtils
- WebGPU
- Allow read_write storage buffers and atomic ops in non-compute stages. #33626 (@SebastianBaltes, @claude)
- WebGPUAttributeUtils
- WebGPUBackend
- WebGPURenderer
- Use
UnfilterableFloatfor NORM16 textures. #33910 (@Mugen87) - Do not render shadow maps when precompile. #33924 (@Mugen87)
- Honor resolve flags in WebGPU backend. #33946 (@Mugen87)
- Fix stale occlusion queries. #33959 (@Mugen87)
- Make occlusion queries more robust. #33972 (@Mugen87)
- Add support for
TRANSIENT_ATTACHMENT. #33977 (@Mugen87) - Add missing
layerUpdatessupport toCompressedArrayTexture. #33996 (@Mugen87) - Support shared depth texture between multiple passes. #34042 (@sunag)
- Support dynamic swapping of the lighting system. #34050 (@sunag)
- Fix XR shadows. #34088 (@cabanier, @Mugen87)
- Introduce compileComputeAsync(). #32551 (@RenaudRohlinger)
- Fix native WebGPU XR camera selection. #34112 (@cabanier)
- Fix
copyTextureToBuffer()3D and array textures when using WebGL. #34129 (@Mugen87) - Fix transmission during WebXR rendering. #34114 (@cabanier)
- Enable MSAA for native XR layers. #34143 (@cabanier)
- Add MSAA support to WebXR WebGPU. #34120 (@cabanier)
- Support material blend color and alpha. #34154 (@Mugen87)
- Introduce refresh types for render objects. #34162 (@Mugen87)
- Add DirectRenderPipeline. #34166 (@cabanier, @Mugen87, @sunag)
- Fix draw offsets of
BatchedMesh. #34212 (@Mugen87) - Fix timestamp query limits. #34236 (@sunag)
- Refresh shared uniform buffers. #34283 (@cabanier, @Mugen87)
- Make cache key for bind groups more robust. #34288 (@Mugen87)
- Add clipping + stencil demo. #34325 (@Mugen87)
- Dispose render objects when the renderer is disposed. #34327 (@wcandillon, @Mugen87)
- Add missing material properties to state checks. #34406 (@Mugen87)
- Fix viewport regression with array cameras. #34424 (@Mugen87)
- Fix integer array texture bindings. #34422 (@WilliamLiu-1997, @Mugen87)
- Add
packed_4x8_integer_dot_productsupport. #34451 (@Mugen87)
- Use
- WebGPUUtils
- WebXR
Nodes
- Nodes
- Make node buffer binding labels deterministic. #34069 (@RenaudRohlinger)
- Add
renderer.debug.onNodeBuilderCreatedcallback. #34068 (@RenaudRohlinger) - Remove top-level side effects for better tree-shaking. #34332 (@mrdoob, @claude)
- Add
updateBeforeandupdateAftersupport for compute stage. #34401 (@sunag)
- Batch
- BitcountNode
- ContextNode
- DFGLUT
- GLSLNodeBuilder
- LightsNode
- Line2NodeMaterial
- MathNode
- MathUtils
- MeshPhysicalNodeMaterial
- ModelNode
- MRTNode
- NodeBuilder
- NodeFunction
- NodeManager
- NodeMaterial
- NodeMaterialObserver
- PMREMNode
- ReferenceElementNode
- RotateNode
- TSL Unit Tests - Fix rotate() 3D Euler-angle path rotating in the wrong direction. #34338 (@bhouston, @Mugen87)
- Add support for Euler Order. #34348 (@WestLangley)
- RTTNode
- ScreenNode
- ShadowNode
- Skinning
- StorageTextureNode
- Preserve integer store values. #34423 (@WilliamLiu-1997)
- SubgroupFunctionNode
- TextureNode
- ToonLightingModel
- TSL
- Respect texture format when sampling textures. #33875 (@sunag)
- Make
textureSize()more robust. #33925 (@Mugen87) - Inline transform of normal and tangent. #33938 (@WestLangley)
- Do not export
PMREMUtils. #33986 (@sunag) - Fixing rbmax / rbmin calculation of
getParallaxCorrectNormal(). #34007 (@Mugen87) - Fix update range clear bug in
Instance. #34022 (@explodi, @Mugen87) - Support individual
lightingperpass(). #34051 (@sunag) - Add
OnAfterObjectUpdate(). #34101 (@Mugen87) - Fix update of previous instance matrix data. #34107 (@Mugen87)
- Add
batchIndirectIndex. #34111 (@Mugen87) - Support primitive values in custom
structconstructors. #34113 (@sunag) - Build CodeNode includes as references. #34132 (@Ryan-G7, @Mugen87, @sunag)
- Remove export of 'append'. #34156 (@Methuselah96)
- Add
horizontalRotationoption tobillboarding(). #34197 (@sunag) - Add
4x8pack/unpack functions. #34263 (@Mugen87) - Update exports in Three.TSL. #34310 (@sunag)
- Honor type in
toAttribute(). #34347 (@Mugen87) - Add TSL GPU unit test coverage for LTC area lights, point light, SH irradiance, equirect/spritesheet UV, and post-processing utils. #34358 (@bhouston)
- Add warnings to GPGPU Nodes. #34291 (@cmhhelgeson)
- Add atomic workgroup array support. #34428 (@WilliamLiu-1997, @bhouston)
- Add missing clamp to
V_Neubelt(). #34449 (@Mugen87)
- UniformArrayNode
- WGSLNodeBuilder
- WGSLNodeFunction
Addons
- Addons
- 3DMLoader
- 3MFLoader
- AST
- BufferGeometryUtils
- Let
toTrianglesDrawMode()modify geometries in-place. #33878 (@Mugen87) - avoid vertex hash overflow at zero tolerance. #34390 (@hamedrabah, @Mugen87)
- Let
- CityGenerator
- CSS2DRenderer
- Support Rotation. #33474 (@WestLangley)
- FBXLoader
- FirstPersonControls
- GaussianSplatMesh
- Fix sort invalidation for transforms. #34233 (@gqfx, @Mugen87)
- Add support for per-mesh bounding box, frustum culling. #34254 (@gkjohnson)
- Inline splat data reads to improve bounding box generation performance. #34262 (@gkjohnson)
- Pack RGBA8 colors in storage buffers. #34255 (@gqfx)
- Add support for raycasting. #34284 (@gkjohnson, @bhouston)
- GaussianSplatPLYLoader
- PLYGaussianSplatLoader -> GaussianSplatPLYLoader. #34292 (@WestLangley)
- GaussianSplatUtils
- Global
- GLTFExporter
- GLTFGaussianSplatLoaderExtension
- GLTFLoader
- HTMLMesh
- Inspector
- Stop keyboard events from leaking into the app. 0696807 (@mrdoob, @claude)
- Add
debounce(). #33932 (@Mugen87) - resolve bare three imports in TSL graph loader. #33965 (@bhushan6)
- Fix
TSLGraphEditorraycasting and refactor primary pass retrieval. #34133 (@sunag) - Use absolute positioning and add alignment configuration. #34137 (@sunag)
- Add split screen, list grid mode and revisions. #34140 (@sunag)
- Fix split screen overlay alignment on sub-window canvases. #34203 (@sunag)
- Add Color Grading extension and improve lifecycle API. #34216 (@sunag)
- Optimize Timeline tab rendering with virtual scrolling. #34230 (@sunag)
- Polish split screen divider and select dark theme. #34318 (@sunag)
- Implement disposal support and improve split screen handling. #34383 (@sunag)
- Support nonce and CSP compliance. #34396 (@sunag)
- LightProbeGrid
- LightProbeGridWebGL
- MaterialXLoader
- Materialx upgrade. #33485 (@bhouston, @cursoragent, @sunag)
- OrbitControls
- PCDLoader
- PLYGaussianSplatLoader
- Rename
- GaussianSplatMesh -> GaussianSplat. #34306 (@WestLangley)
- Rhino3dmLoader
- SimplifyModifier
- Sky
- Sky/SkyMesh
- SkyscraperGenerator
- SPZLoader
- SunLight
- TrackballControls
- Transpiler
- TubePainter
- Properly transform normals. #34061 (@WestLangley)
- UnrealBloomPass
- USDLoader
- VolumeSlice
- WebGLXRFallback
- WebGPURenderer
- XRControllerModelFactory
Addons / Nodes
- TSL
- Add
softParticles(). #33887 (@Mugen87) - Support primitive values in
array(). #33929 (@sunag) - Introduce
OnBeforeRenderPipelineandOnAfterRenderPipelineand update context directly on material. #34025 (@sunag) - Fix angle bug in
hashBlur(). #34077 (@Mugen87) - Pass
stepSizetoRaymarchingBoxcallback. #34257 (@sunag)
- Add
- Addons
- BloomNode
- ClusteredLightsNode
- CSMShadowNode
- DenoiseNode
- DepthOfFieldNode
- DotScreenNode/RGBShiftNode
- DualKawaseBloomNode
- GTAONode
- Add Quadratic ray stepping, smooth sphere falloff. #33895 (@Mugen87)
- Improve code example. #33902 (@Mugen87)
- Clip-space ray marching and loop micro-optimizations. #33903 (@mrdoob, @Mugen87, @claude)
- Fix banding issue. #33919 (@marcofugaro, @Mugen87)
- Optimize code. #33930 (@Mugen87)
- Bake sample count into the shader. #33931 (@Mugen87)
- Dispose internal noise texture. #34369 (@204a, @Mugen87)
- Nodes
- OITPassNode
- PassNode
- SMAANode
- SSAAPassNode
- SSAONode
- SSRNode
- VXGINode
- WebGLNodesHandler
- Reuse collected lights and preparation data. #34219 (@hybridherbst)
- Fix error with
getCanvasTargetin WebGLRenderer. #34303 (@hybridherbst)
- WoodNodeMaterial
Docs
- Fix heading typo in CONTRIBUTING.md. 6cac812 (@mrdoob)
- Improve descriptions. #34027 (@Mugen87)
- Resolve reamining TODOs. #34029 (@Mugen87)
- Matrix4: Improve inline documentation. #34067 (@WestLangley)
- Fix typos and a wrong parameter name in JSDoc comments. #34169 (@xdroberto)
- fix broken TSL anchor links for roughnessNode and metalnessNode. #34170 (@latent-9)
- Drop JSDoc params the functions no longer take. #34226 (@darkdi)
- Drop three more JSDoc params in WGSLNodeBuilder. #34237 (@darkdi)
- Fix usage of
@classtag. #34244 (@Mugen87) - Fix broken cross-links to texture utils pages. #34271 (@FirmaSpring)
- Improve
BundleGroup. #34305 (@Mugen87) - Tour of TSL. #34085 (@sunag)
- IndexNode - Update JSDoc. #34413 (@cmhhelgeson, @Mugen87)
- LoopNode - Update JSDoc. #34415 (@cmhhelgeson, @Mugen87)
Manual
- Remove
i18n. #33997 (@Mugen87) - Add Addons section anchor. #34017 (@zackabrah)
- Add anchors to headings. #34020 (@zackabrah)
- Slowed down colourshift effect in scenegraph tutorial. #34048 (@chesterblack)
Examples
- Improve performance of clustered lights demo. #33901 (@Mugen87)
- webgl_postprocessing_pixel: Snap Objects to Pixel Grid. #33908 (@zalo, @claude)
- Add SSAO blur toggle in webgpu_postprocessing_ao. 70820b8 (@mrdoob, @claude)
- Optimise PNGs across the repo. #33882 (@Chubercik)
- Skip TRAA for SSAO in webgpu_postprocessing_ao. 84569eb (@mrdoob, @claude)
- Use FXAA in clustered light demo. #33935 (@Mugen87)
- Removed (wip) from webgpu. d51eb06 (@mrdoob)
- Clean up. #33981 (@WestLangley)
- Clean up. #33994 (@Mugen87)
- Refresh external links in /examples. #34001 (@bhouston)
- Clean up. #34010 (@Mugen87)
- Properly transform normal vectors. #34015 (@WestLangley)
- Clean up. #34026 (@Mugen87)
- More clean up. #34028 (@Mugen87)
- Properly transform normal. #34039 (@WestLangley)
- Add
webgpu_deferredexample. #34049 (@sunag) - Optimize backdrop water demo. #34086 (@Mugen87)
- Refined the
webgl_volume_perlinwith bisection based refinement. #34090 (@mmmovania, @Mugen87) - Refined the
webgpu_volume_perlinwith bisection based refinement. #34094 (@mmmovania, @Mugen87) - Update webgl_volume_perlin.html. be6469c (@Mugen87)
- Eliminate branch divergence in volume refinement loops. #34097 (@WestLangley)
- Clean up. #34148 (@Mugen87)
- Clean up. #34185 (@Mugen87)
- Change preset in backdrop area. #34195 (@Mugen87)
- Make example links clickable in title & info. #34207 (@bhouston, @Mugen87)
- Make material arrays demo more interesting. #34220 (@Mugen87)
- Optimize rain demo. #34229 (@Mugen87)
- Replace sun-like DirectionalLights with SunLight. #34228 (@mrdoob, @claude)
- Clean up. #34273 (@WestLangley)
- Update tags.json. 04008d6 (@Mugen87)
- Rename Gaussian Splat Example. #34293 (@WestLangley, @Mugen87)
- Update webgl_lightprobes_sponza screenshot for two sun cascades. 5c81184 (@mrdoob, @claude)
- Add post-processing volumetric fog example. #34319 (@sunag)
- Remove
ecsy. #34359 (@Mugen87) - Clean up. #34408 (@Mugen87)
- Update tags. #34411 (@Mugen87)
- Optimize glTF asset. #34435 (@Mugen87)
- Optimize glTF asset. #34436 (@Mugen87)
- Improve tags. #34472 (@Mugen87)
- Clean up tags. #34473 (@Mugen87)
- Add Sculptor addon. #33164 (@mrdoob, @claude)
- Improve fog scattering trees and performance. #34491 (@mrdoob)
- Refine custom fog terrain and resource handling. 511de1d (@mrdoob)
- Update custom fog screenshot. e0119d1 (@mrdoob)
- Use SunLight in WebGPU examples. #34476 (@mrdoob, @claude)
- Improve webgpu_materials_retroreflective. #33990 (@mrdoob, @claude)
Devtools
- Clean up, light count and 1.17. #34387 (@mrdoob, @claude)
- Object details, box highlight and 1.18. #34399 (@mrdoob, @claude)
Editor
- Don't use picker object with skeletons. #34062 (@Mugen87)
- Fix animation selection. #34322 (@Mugen87)
- Add group selection. #34144 (@Mugen87)
Tests
- Try to fix the webgpu async timeouts. #34225 (@pailhead, @claude)
- GPU-native unit tests for TSL. #34331 (@bhouston)
- fix lint error. #34345 (@linbingquan)
- Update screenshots. #34346 (@Mugen87)
- Add TSL GPU unit test coverage for math, packing, conversion, vector/matrix, logic/bitwise, color, tone mapping, and procedural helpers. #34349 (@bhouston, @Mugen87)
- Unit tests: import unbuilt source instead of build/ output. #34362 (@bhouston)
- Remove empty QUnit.module scaffolding. #34409 (@samuel7james)
- TSL Tests: Give each GPU unit test kernel its own random canary value. #34427 (@bhouston)
- Stabilize input and video screenshots. #34474 (@mrdoob)
Utils
- Dev: Improve
preview.js. #34407 (@Mugen87) - Support branches in changelog.js. f64ed0d (@mrdoob, @claude)
- Improve changelog.js. 16e1f03 (@mrdoob, @claude)
- Rename Tour of TSL to TSL Guide. #34457 (@mrdoob, @claude)
- Update TSL links in llms build. c4ffe02 (@mrdoob, @claude)
Build
- Deprecate CommonJS build. #33891 (@mrdoob, @claude)
- Remove minified builds. #33893 (@mrdoob, @claude)
CI