Three.js r184

r184
Added 9
  • Add HTMLTexture
  • Add position-dependent diffuse Global Illumination with LightProbeGrid
  • Add support for EXT_texture_norm16 formats in renderers
  • Add hyperbolic math nodes to TSL
  • Add OnFrameUpdate and OnBeforeFrameUpdate to TSL
  • Add global and local scope to TSL
Changed 7
  • Update @rollup/plugin-terser to 1.0.0
  • Update ESLint to ECMA 2022
  • Improve HTMLTexture support
  • Update applyBoneTransform in SkinnedMesh to optionally take Vector4 and support direction or position transformation
  • Improve compilation performance in TSL by 3.0x
  • Make WebGPURenderer compileAsync() truly non-blocking
  • Cache pixel storage parameters in renderers
Fixed 4
  • Fix timeScale reversal jump in AnimationAction
  • Fix race condition with loading manager in AudioLoader
  • Fix getColorAt throwing an error when colors have not been set in InstancedMesh and BatchedMesh
  • Fix geometry corruption on 2-point curves in CatmullRomCurve3

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)
View original

Upgraded? How did it go?

Discussion