Download Latest Version r187 source code.zip (378.8 MB) Google Add to Preferred Sources
Home / r187
Name Modified Size InfoDownloads / Week
Parent folder
r187 source code.tar.gz < 12 hours ago 374.8 MB
r187 source code.zip < 12 hours ago 378.8 MB
README.md < 12 hours ago 36.0 kB
Totals: 3 Items   753.7 MB 0

https://github.com/mrdoob/three.js/wiki/Migration-Guide#186--187 https://github.com/mrdoob/three.js/milestone/100?closed=1

  • Global
  • Remove code deprecated in r177. [#34517] (@linbingquan, @Mugen87)
  • AnimationUtils
  • Fix cubic spline additive reference sampling. [#34860] (@gjija)
  • Backend
  • Keep occlusion query results per camera. [#35066] (@arodic, @claude)
  • BatchedMesh
  • Clarify geometry compatibility requirements. [#34675] (@MikeFernandez-Pro, @Mugen87)
  • Fix sort corruption. [#34828] (@Mugen87)
  • Make shadows more node compatible. [#34829] (@Mugen87)
  • Fix draw ranges after setGeometrySize(). [#34983] (@MikeFernandez-Pro)
  • Fix memory leak of previous matrix data. [#35272] (@Mugen87)
  • Bindings
  • Avoid recreating initial texture bind groups. [#34657] (@mrdoob)
  • Avoid cache key allocations in _update(). [#35120] (@Snuble-bot, @Mugen87, @claude)
  • Avoid cache key collision with similar IDs. [#35226] (@Mugen87)
  • Box3
  • Use BatchedMesh bounds in precise mode. [#34863] (@gjija)
  • BufferAttribute
  • (Interleaved)BufferAttribute: Optimize normalized data access. [#34992] (@zeux)
  • BufferGeometry
  • Finalize tangents once per vertex. [#34624] (@mrdoob)
  • Color
  • Accept negative hues and decimal percentages in setStyle(). [#34849] (@ewraj)
  • ColorManagement
  • Fix order of color space conversion matrix. [#34952] (@michaelcrosato, @claude)
  • CompressedTexture
  • Default mipmaps to an empty array. [#35081] (@arodic, @Mugen87, @claude)
  • Core
  • Make copy() methods more robust. [#34691] (@Mugen87)
  • Fix reversed depth function mapping. [#35264] (@WilliamLiu-1997)
  • Curves
  • Invalidate cached lengths when copying or deserializing. [#35118] (@dewanshshekhar, @Mugen87)
  • EdgesGeometry
  • Use a Map for edge lookups. [#34805] (@sarojpahi)
  • FramebufferTexture
  • Fix source copy. [#34636] (@Mugen87)
  • Geometries
  • Add missing delete. [#34648] (@Mugen87)
  • Inspector
  • Auto-render non-texture nodes in the Viewer and fix toInspector() registration. [#35253] (@sunag)
  • InterleavedBuffer
  • Fix clone() and toJSON() of views into a shared array buffer. [#34755] (@vincentfretin, @claude)
  • KeyframeTrack
  • Fix shift() ignoring tangent data. [#34951] (@kwy404)
  • LatheGeometry
  • Normalize the normal of the last point. [#35153] (@spokodev)
  • LightProbe
  • Fix JSON round trips. [#34859] (@gjija, @Mugen87)
  • LightShadow
  • Clean up. [#35213] (@Mugen87)
  • Line
  • Line, Points: Copy morph targets in copy(). [#35147] (@Enesuygurs)
  • Line3
  • Fix closest point for degenerate segments in distanceSqToLine3(). [#34673] (@kwy404)
  • Math
  • Improve tree-shaking of unused classes. [#34619] (@mrdoob)
  • MeshPhysicalMaterial
  • Add EON rough diffuse BRDF. [#34379] (@Ryan-G7, @Mugen87)
  • Add iridescence thickness min/max properties. [#35039] (@Mugen87)
  • Object3D
  • Honor pivot when decomposing local matrices. [#34811] (@gjija, @mrdoob)
  • ObjectLoader
  • Fix loading of BatchedMesh available ids. [#34652] (@gjija, @Mugen87)
  • Restore SpotLight.map. [#35128] (@HEOJUNFO, @claude)
  • PMREM
  • Restore minimal roughness, improve roughness ramp. [#34645] (@Mugen87)
  • PMREMGenerator
  • Replace the CubeUV atlas with cube render targets. [#34585] (@mrdoob, @claude)
  • RenderContexts
  • Simplify comment. [121e62] (@Mugen87)
  • Add the camera type to the state key. [#35123] (@arodic, @claude, @sunag)
  • Renderer
  • Fix edge cases in dispose(). [#34765] (@Mugen87)
  • Improve canvas target disposal. [#34969] (@Mugen87)
  • Track the source material in override passes. [#35232] (@mrdoob)
  • Renderers
  • Fix polygon offset with reveresed depth buffer. [#34606] (@Mugen87)
  • Preallocate wireframe indices. [#34621] (@mrdoob)
  • Fix blit region in copyTextureToTexture(). [#35167] (@batuhansalkim)
  • Ignore logarithmic depth buffer when reversed depth buffer is enabled. [#35276] (@mrdoob, @claude)
  • RendererUtils
  • Preserve additional renderer state. [#35233] (@kemchenj)
  • RenderObject
  • Use hashArray() in getDynamicCacheKey(). [#34553] (@Mugen87)
  • Fix dispose listener for geometries. [#34605] (@Mugen87)
  • Detect missing color change for instanced meshes. [#34752] (@Mugen87)
  • Add uv channel to material cache key. [#34773] (@Mugen87)
  • Exclude deprecated iridescenceThicknessRange. [2b7c79] (@Mugen87)
  • Fix handling of blending and combine. [#35113] (@a411919924, @Mugen87, @claude)
  • RenderObjects
  • Improve geometry check. [#34799] (@Mugen87)
  • RenderTarget
  • Give each attachment its own TextureSource. [#34970] (@ycw, @Mugen87)
  • Shadows
  • Fix point light shadow seams. [#35267] (@mrdoob, @Mugen87)
  • Skeleton
  • Take ownership of previous data. [#34976] (@Mugen87)
  • SkinnedMesh
  • Avoid iterator spread in applyBoneTransform(). [#34810] (@sarojpahi)
  • Sprite
  • Serialize center. [#35162] (@mkantautas)
  • StorageBufferAttribute
  • Add support for disposing storage buffer attributes. [#34664] (@gkjohnson)
  • Fix feedback on disposal. [#34666] (@gkjohnson, @Mugen87)
  • Texture
  • Add mipmapsAutoUpdate. [#34630] (@Mugen87)
  • Textures
  • Return generation key in updateTexture(). [#34659] (@Mugen87)
  • TextureSource
  • Never write undefined into the target vector in getSize(). [#34615] (@madisonrickert, @Mugen87, @claude)
  • Triangle
  • Fix closestPointToPoint() returning NaN when a equals b. [#34695] (@kwy404, @Mugen87)
  • WebGLBackend
  • Fix single-layer array render targets. [#34510] (@WilliamLiu-1997, @Mugen87)
  • Clear caches in dispose(). [#34602] (@Mugen87)
  • Improve dispose(). [#34688] (@Mugen87)
  • Fix clear() with a disabled color write mask. [#34729] (@drakeo338, @Mugen87)
  • Fix FloatType depth textures with MSAA. [#34768] (@WilliamLiu-1997)
  • Fix MSAA with default depth textures. [#34927] (@WilliamLiu-1997)
  • Use correct depth texture for clear. [#34928] (@Mugen87)
  • Move transforms and attributes to ComputePipeline. [#35009] (@Mugen87)
  • WebGLProgram
  • Remove unreachable shader chunk alias fallback. [ce84e0] (@mrdoob)
  • WebGLPrograms
  • Remove undefined morphAttributeCount cache-key field. [eb955c] (@mrdoob)
  • Fix material.precision leaking into other materials. [#34818] (@mrdoob)
  • WebGLRenderer
  • Only apply pixel ratio to the canvas in setViewport() and setScissor(). [#34460] (@mrdoob, @claude)
  • Support FrustumArray. [#34275] (@Mugen87)
  • Improve geometry disposal. [#34529] (@Mugen87)
  • Improve texture disposal. [#34530] (@Mugen87)
  • Reuse binding points for uniform groups. [#34669] (@gkjohnson)
  • Align shadow camera layer handling to WebGPURenderer. [#34670] (@Mugen87)
  • Correctly init default depth textures. [#34687] (@Mugen87)
  • Add getProgramVariant(). [#34739] (@Mugen87)
  • Support needsDepthTexture in setEffects(). [#34858] (@mrdoob)
  • Fix PCF shadow bias with reversed depth. [#34892] (@WilliamLiu-1997)
  • Moveframe increament before project. [#35103] (@Mugen87)
  • Fix color morphing regression. [#35140] (@Mugen87)
  • Fix instanced attributes viewing a buffer attribute. [#35227] (@sunag)
  • WebGLState
  • Reset blending cache in setMRTBlending(). [#34990] (@yujiaxu-ops, @Mugen87, @claude)
  • WebGLTextures
  • Fix point light shadow disposal. [#34522] (@Mugen87)
  • Don't invalidate depth for DRAW_FRAMEBUFFER. [#35155] (@Mugen87)
  • WebGLTextureUtils
  • Fix copyTextureToBuffer() with red, RG and integer formats. [#34852] (@mrdoob)
  • Fix source layer detection in copyTextureToTexture(). [#35111] (@HEOJUNFO, @claude)
  • WebGLUniformsGroups
  • Fix uniforms with array values. [#34889] (@mrdoob)
  • Fix std140 layout of arrays of uniforms. [#34890] (@mrdoob)
  • WebGPUBackend
  • Skip generateMipmaps when the framebuffer copy dest has no mip chain. [#34582] (@204a)
  • Fix widening of uint16 indices in standard use case. [#34734] (@cmhhelgeson, @Mugen87)
  • Fix ArrayCamera depth clear value with reversed depth. [#34804] (@mrdoob, @claude)
  • Recreate array camera layer descriptors when the depth texture changes. [#34850] (@mrdoob)
  • Fix copyFramebufferToTexture() outside of render passes. [#35133] (@mrdoob, @Mugen87)
  • WebGPUBindingUtils
  • Select depth aspect for sampled depth textures. [#34584] (@WilliamLiu-1997)
  • WebGPURenderer
  • Fix render target texture dispose crash. [#34496] (@Mugen87)
  • Textures never removes dispose listeners. [#34368] (@wcandillon, @Mugen87, @claude)
  • Align dispose() for geometries. [#34516] (@Mugen87)
  • Ensure valid state in compileAsync(). [#34506] (@Mugen87)
  • Properly delete shader programs. [#34601] (@Mugen87)
  • Refactor node attribute disposal. [#34603] (@Mugen87)
  • Improve VAO caching and disposal. [#34610] (@Mugen87)
  • Replace "addLight" with "lightNode" reference. [#34622] (@gkjohnson)
  • Unify handling of interleaved attributes. [#34690] (@Mugen87)
  • Derive viewport and stencil flags from render context. [#34692] (@Mugen87)
  • Introduce ProxyNodeMaterial. [#34684] (@sunag)
  • Refactor render cache key. [#34726] (@Mugen87)
  • Reset timestampWrites with disabled trackTimestamp. [#34760] (@Mugen87)
  • Add missing DEPTH32F_STENCIL8, fix default depth texture. [#34803] (@Mugen87)
  • Support depth-only render targets. [#34782] (@mrdoob, @Mugen87, @claude)
  • Release previous pipeline and programs when switching to cached ones. [#34821] (@mrdoob)
  • Add _updateDispatchSize(). [#34871] (@Mugen87)
  • Clear texture update ranges after upload. [#34919] (@MikeFernandez-Pro, @Mugen87)
  • Throw an error if "count" and "dispatchSize" are used together. [#34813] (@gkjohnson, @sunag)
  • Fix scissorTest check. [#35000] (@Mugen87)
  • Always bind struct storage buffers as arrays. [#34807] (@gkjohnson)
  • Compile pipelines in parallel in compileAsync(). [#34816] (@sunag)
  • Fix shader reuse for instanced meshes. [#34872] (@EdoardoLuciani, @mrdoob, @sunag)
  • Preserve material side in compileAsync(). [#35016] (@mrdoob)
  • Share node builds across call depths. [#35014] (@mrdoob, @Mugen87)
  • Support dispose() for all buffer attributes. [#34685] (@sunag)
  • Support uncompressed data in compressed textures. [#35082] (@arodic, @Mugen87, @claude)
  • Support CompressedCubeTexture. [#35083] (@arodic, @Mugen87, @claude)
  • Share builds between instanced meshes with referenceAttribute(). [#35007] (@mrdoob, @sunag)
  • Fix output camera initialization when starting in XR. [#35126] (@salmanmkc, @Mugen87)
  • Fix disposed geometries with static objects and bundles. [#35105] (@sunag, @Mugen87)
  • Fixed disposed PMREM. [#35185] (@Mugen87)
  • Cull ArrayCamera draws per sub-camera. [#35164] (@bhouston, @Mugen87, @claude)
  • Merge consecutive BatchedMesh draws that share a geometry range. [#35259] (@MikeFernandez-Pro, @Mugen87)
  • Rename ProxyNodeMaterial -> NodeMaterialInstance. [#35269] (@sunag)
  • Start the internal animation loop on first use. [#35278] (@mrdoob, @claude)
  • Don't start the animation loop in setAnimationLoop( null ). [#35279] (@mrdoob, @claude)
  • WebGPUTextureUtils
  • Fix getColorBuffer() cache check. [#34826] (@mrdoob)
  • Fix row padding in copyTextureToBuffer(). [#34851] (@mrdoob)
  • WebXRController
  • Use quaternion when decomposing pose matrices. [#34817] (@mrdoob)

Nodes

  • Nodes
  • Make build more efficient. [#34531] (@Mugen87)
  • Unify temporary node caching in Node. [#34607] (@sunag)
  • Use named MathUtils imports. [#34625] (@mrdoob)
  • Delegate variable statements to NodeBuilder. [#34617] (@sunag)
  • Fix lightViewPosition() with ArrayCamera. [#34912] (@bhouston, @claude)
  • AttributeNode
  • Allow the context to provide attribute values. [#35054] (@sunag)
  • BasicEnvironmentNode
  • Limit env map rotation to envNode. [#34570] (@Mugen87)
  • Batch
  • Only update the previous matrices texture when the matrices change. [#35057] (@HEOJUNFO, @Mugen87, @claude)
  • Recreate the previous matrices texture when the instance count changes. [#35075] (@HEOJUNFO, @Mugen87, @claude)
  • BitcountNode
  • Return the input type for zero in the WebGL fallback. [#35217] (@HEOJUNFO, @claude)
  • BumpMapNode
  • Add normalNode parameter. [#35101] (@MikeFernandez-Pro)
  • Camera
  • Isolate ArrayCamera uniforms across shader builders. [#34916] (@bhouston)
  • ClippingNode
  • Fix clipping with ArrayCamera. [#35096] (@bhouston, @Mugen87)
  • EnvironmentNode
  • Resolve environment textures before rendering. [#35036] (@sunag)
  • getParallaxCorrectNormal
  • Keep axis-aligned directions finite. [#35049] (@bhouston, @Mugen87)
  • GLSLNodeBuilder
  • Fix buffer name collisions between stages. [#35012] (@mrdoob)
  • Fix generateTextureLevel() with depth textures. [#35136] (@Mugen87)
  • Fix uniform block lookups in shared bind groups. [#35222] (@mrdoob, @claude)
  • LightProbeNode
  • Update light probe uniforms in the render group. [#35060] (@arodic, @claude)
  • LightsNode
  • Honor light version for shadow casting lights. [#34949] (@Mugen87)
  • Fix cache key of shadow casting lights before the first build. [#35019] (@mrdoob)
  • MaterialNode
  • Fix clearcoat roughness texture channel. [#34564] (@hybridherbst)
  • Node
  • Cache node overrides per context. [#35050] (@sunag)
  • NodeBuilder
  • Move shared bind groups cache into Bindings. [#34707] (@Mugen87)
  • Remove getSharedDataFromNode(). [#34857] (@mrdoob)
  • NodeMangager
  • Fix stack trace in async builds. [#34727] (@Mugen87)
  • NodeMaterial
  • Fix copy(). [#34766] (@Mugen87)
  • Add emissiveNode to lambert, phong and toon materials. [#35059] (@MikeFernandez-Pro)
  • NodeMaterialObserver
  • Force full refresh when the output target changes. [#34968] (@arodic)
  • Force full refresh with custom fog and environment nodes. [#34996] (@arodic)
  • Clean up. [c5e506] (@Mugen87)
  • Add missing material properties. [#35022] (@Mugen87)
  • Track texture uv transforms. [#35062] (@arodic, @Mugen87, @claude)
  • Improve output target ceck. [#35156] (@Mugen87)
  • Revert fogNode and environmentNode tracking. [#35221] (@Mugen87)
  • NodeSampler
  • Fix clone(). [#35094] (@Mugen87)
  • NodeStorageBuffer
  • Fix stale attribute references. [#34939] (@WilliamLiu-1997)
  • NodeUniformBuffer
  • Fix stale attribute references. [#34941] (@Mugen87)
  • NodeUtils
  • Add mergeContext() to merge override nodes of nested contexts. [#35108] (@sunag)
  • OverrideContextNode
  • Add shaderStage parameter to overrideNodes(). [#35109] (@sunag)
  • PassNode
  • Compile with the render configuration in compileAsync(). [#35168] (@sunag)
  • PhysicalLightingModel
  • Fix specular intensity in direct lighting. [#34764] (@EdoardoLuciani)
  • PointShadowNode
  • Adhere CubeCamera conventions. [#34899] (@Mugen87)
  • Loop over shadow filter taps. [#35186] (@bhouston)
  • RangeNode
  • Use hash() instead of per-object buffers. [#34897] (@mrdoob)
  • Make random values independent of node creation order. [#34920] (@sunag, @mrdoob)
  • RectAreaLightNode
  • Fix lighting with ArrayCamera. [#35095] (@bhouston, @Mugen87)
  • ReflectorNode
  • Fix reflection with view offset. [#34917] (@scottcampbelldata)
  • Fix bounces: false with multiple cameras. [#34977] (@arodic)
  • RenderOutputNode
  • Make premultipliedAlpha optional. [#34948] (@Mugen87)
  • RTTNode
  • Keep the renderer's clear color. [#34855] (@HEOJUNFO, @Mugen87, @claude)
  • ShadowBaseNode
  • Remove unused velocity flag. [#34854] (@mrdoob)
  • ShadowFilterNode
  • WebGLRenderer, WebGPURenderer: Fix PCF radius for non-square shadow maps. [#35018] (@mrdoob)
  • Create the PCF shadow uniforms once per shadow. [#35047] (@sunag)
  • ShadowNode
  • Render shadows with needsUpdate only once. [#34794] (@mrdoob, @claude)
  • Fix shadows with reverse depth in first frame. [#34801] (@Mugen87)
  • Update shadows at least once. [#35093] (@Mugen87)
  • Avoid redundant scene matrix updates. [#35203] (@mrdoob)
  • SpriteNodeMaterial
  • Use the center of the rendered sprite. [#35064] (@arodic, @claude)
  • StorageBufferNode
  • Better support mat2 with WebGL. [#34595] (@Mugen87)
  • TextureNode
  • Simplify and optimize uniforms. [#34552] (@Mugen87)
  • Propagate comparison sampling to the shared binding. [#34555] (@dswhy, @Mugen87)
  • Detect filter and type changes. [#34556] (@Mugen87)
  • Allow for non-mergeable uniforms. [#34450] (@Mirei3D)
  • Fix int/float arithmetic regression. [#34898] (@Mugen87)
  • Add getTextureGradient() context to provide analytic uv gradients. [#35121] (@sunag)
  • ToneMappingFunctions
  • Fix ACES Filmic fit denominator. [#35110] (@HEOJUNFO, @claude)
  • TSL
  • Fix attributeArray() buffer count usage. [#34591] (@Mugen87)
  • Fix scalar constant caching. [#34618] (@mrdoob)
  • Enable caching for reused type conversions. [#34633] (@sunag)
  • Use local declarations for cached values and variable intents. [#34637] (@sunag)
  • Share and vectorize bicubic filter calculations. [#34655] (@mrdoob)
  • Share dielectric scattering in indirect lighting. [#34656] (@mrdoob, @Mugen87)
  • Fix per-component select(). [#34425] (@bhouston, @sunag)
  • Fix scope and reuse of function calls containing loops. [#34643] (@sunag)
  • Share EON directional albedo in indirect lighting. [#34660] (@mrdoob, @Mugen87)
  • Add type promotion in operators and math functions. [#33695] (@shotamatsuda, @sunag)
  • Fix getViewPosition() with WebGL reversed depth. [#34724] (@WilliamLiu-1997)
  • Add function layout to IBLSheenBRDF. [#34824] (@mrdoob, @claude)
  • Simplify function layouts and add layouts to pure functions. [#34843] (@sunag)
  • Optimize function layouts with include deduplication and default parameters. [#34848] (@sunag)
  • Make nodes their own variable intents and improve build performance. [#34815] (@sunag)
  • Fix external variables being generated twice when used in a branch. [#35067] (@sunag)
  • Add color morphing. [#35141] (@Mugen87, @sunag)
  • Fix parameter length of quadBroadcast(). [#35218] (@HEOJUNFO, @Mugen87, @claude)
  • Build before() nodes only in the setup stage. [#35245] (@sunag)
  • TSLCore
  • Move the swizzle cache to a WeakMap. [#35251] (@sunag)
  • UniformArrayNode
  • Fix mat2 usage in WebGL. [#34587] (@Mugen87)
  • ViewportDepthNode
  • Rename getProjectionDepth() to projectionDepth(). [#35230] (@Mugen87)
  • WGSLNodeBuilder
  • Add Directives to Fragment Stage and Update NodeBuilder. [#34513] (@cmhhelgeson, @Mugen87)
  • Support gather() with multisampled textures. [#34609] (@RenaudRohlinger, @claude)
  • Honor read-write storage textures in the fragment stage. [#34923] (@HEOJUNFO, @Mugen87, @claude)
  • Fix grad() with unfilterable textures. [#35169] (@sunag)

Addons

  • Addons
  • Avoid unnecessary regex backtracking. [#35184] (@mrdoob)
  • 3DMLoader
  • Fix authentication and custom header forwarding to internal asset loaders. [#35024] (@bhouston)
  • BitonicSort
  • Dispatch a complete sort in one compute pass. [#35275] (@subashc2023)
  • BufferGeometryUtils
  • Validate morph attributes in mergeGeometries(). [#34532] (@cuishuang)
  • Support interleaved data in mergeVertices(). [#34665] (@Mugen87)
  • Match tangent precision to quantized normals in computeMikkTSpaceTangents(). [#34714] (@mrdoob, @Mugen87, @claude)
  • Fix deinterleaveGeometry() with morph attributes. [#34827] (@MikeFernandez-Pro)
  • Add remapAttribute(). [#34945] (@bhouston)
  • Preserve morphTargetsRelative in mergeGeometries(). [#35177] (@HEOJUNFO, @Mugen87)
  • Fix group count of Infinity in mergeGroups(). [#35258] (@shan3520, @Mugen87)
  • CCDIKSolver
  • Improve clamp. [#35023] (@Mugen87)
  • ClusteredLighting
  • Add spot lights and WebGL2 fallback support. [#34978] (@sunag)
  • ColladaLoader
  • Fix n-gon attribute triangulation. [#34862] (@gjija, @Mugen87)
  • Fix sRGB to linear conversion of vertex colors. [#35129] (@HEOJUNFO, @claude)
  • ColorConverter
  • Fix HSV conversion at black and white boundaries. [#34806] (@dhairyajangir)
  • CSMShader
  • Sync lights_fragment_begin with the core chunk. [#35248] (@subashc2023)
  • DDSLoader
  • Align data length computation to DirectXTex. [#34908] (@Mugen87)
  • DRACOLoader
  • Fix loop bound when repacking unaligned attributes. [#35037] (@cherenkov, @claude)
  • EXRExporter
  • Fix zip partial block. [#34964] (@richardmonette)
  • Add RLE compression. [#34972] (@richardmonette)
  • Add PIZ compression. [#34979] (@richardmonette)
  • Add textureIndex option for MRT render targets. [#35207] (@repalash)
  • EXRLoader
  • Remove duplicate half-float decoder. [#34574] (@bhouston)
  • Use lookup table for DWA linear conversion. [#34573] (@bhouston)
  • GCodeLoader
  • Fix extrusion detection in relative mode. [#34895] (@scottcampbelldata, @Mugen87)
  • Fix parsing of files with CRLF line endings. [#35171] (@L4XB, @Mugen87)
  • GLTFExporter
  • Fix orthographic camera xmag and ymag. [#35215] (@HEOJUNFO, @Mugen87, @claude)
  • GLTFLoader
  • Fix GLTF loader credential forwarding to buffers and bitmap textures. [#35025] (@bhouston)
  • Parse embedded KTX2 images without a Blob. [#35193] (@Construkted-Reality, @Mugen87, @claude)
  • GTAOPass
  • Remove combined depth and normal texture support. [#34836] (@bhouston, @Mugen87)
  • Fix external buffer handling. [#34831] (@bhouston)
  • IESLoader
  • Apply photometric factors linearly instead of squaring candela. [#34554] (@dswhy)
  • IESLoader, IESSpotLight: Add support for 2D & symmetric profiles. [#34626] (@gkjohnson)
  • Inspector
  • Remove Circular Dependency. [#34592] (@cmhhelgeson)
  • Fix CPU time double counting and FPS with skipped frames. [#35070] (@sunag)
  • Fix number input drag interfering with text selection. [#35117] (@MikeFernandez-Pro)
  • Truncate long parameter labels. [#35206] (@MikeFernandez-Pro)
  • Fix overdraw render mode. [#35255] (@sunag)
  • Fix mini panel checkbox and collapsed folder spacing. [#35252] (@sunag)
  • Fix color grading exports and add example. [#35257] (@sunag)
  • Fix GPU time display and triangle count for indirect draws. [#35256] (@sunag)
  • JXLLoader
  • Add native HDR image loading. [#35015] (@bhouston, @Mugen87)
  • KTXLoader
  • Fix mipmap size read. [#34905] (@Mugen87)
  • Correctly round down mips. [#34906] (@Mugen87)
  • LDrawLoader
  • Optimize smoothNormals() by fixing quadratic time complexity. [#35200] (@AvaLovelace1)
  • Fix null conditional edge material for unknown colours. [#35219] (@3a632062, @claude)
  • LightMapper
  • Diffuse light baker, works with Light Probe and VXGI. [#34991] (@bhouston)
  • Clean up demo, add VGXI gather function. [#35183] (@Mugen87)
  • LightProbeGrid
  • Batch probe capture with ArrayCamera for ~4x faster bakes. [#34909] (@bhouston, @claude)
  • Project SH in row blocks. [#35150] (@bhouston, @claude)
  • Faster multi-bounce (and default examples to use multi-bounce). [#35145] (@bhouston, @Mugen87)
  • Place probes at the center of their cells. [#35265] (@mrdoob)
  • Only sample the last grid that contains the fragment. [#34798] (@mrdoob, @Mugen87, @claude)
  • LightProbeGridWebGL
  • Extend from Light. [#34744] (@Mugen87)
  • LineMaterial
  • Fix world-unit extrusion with orthographic cameras. [#34540] (@diarmidmackenzie, @Mugen87)
  • Fix depth shifting. [#35139] (@Mugen87)
  • Loaders
  • Add priority and HTTP cache controls. [#34936] (@bhouston, @Mugen87)
  • Lut
  • Read the end colors of a color map in linear space. [#35181] (@L4XB, @Mugen87)
  • LUT3dlLoader
  • Prevent invalid bit depth values. [#34903] (@Mugen87)
  • LUTCubeLoader
  • Fix domain regex. [#34900] (@Mugen87)
  • MaterialXDocument
  • Clean MaterialX loader + compiler. [#34523] (@bhouston)
  • MaterialXLoader bug fix: Support handlers that resolve with a Texture. [#34575] (@bhouston, @Mugen87)
  • MaterialXLoader bug fix: consistent and correct nodedef defaults. [#34593] (@bhouston)
  • MaterialXLoader
  • Only resolve loading promises when all sub-resources are loaded. [#34439] (@bhouston)
  • Support displacement nodes (both scalar and vector). [#34576] (@bhouston)
  • Match output-less separate2/3/4 behaviour with MaterialX. [#34835] (@hybridherbst)
  • Add setNodeResolver(). [#34832] (@hybridherbst)
  • Support hsvadjust, facingratio and triplanarprojection. [#34986] (@hybridherbst)
  • Support surface_unlit. [#34987] (@hybridherbst)
  • Support nodes implemented by node graphs. [#34988] (@hybridherbst)
  • Forward texture request configuration. [#35026] (@bhouston)
  • MikkTSpace
  • Replace WASM with JavaScript. [#34623] (@mrdoob)
  • Speed up tangent generation. [#34713] (@mrdoob, @claude)
  • NRRDLoader
  • Fix parsing of the last header field. [#35178] (@HEOJUNFO, @Mugen87)
  • NURBSCurve
  • Fix clone(). [#34542] (@Dev-next-gen)
  • OBB
  • Fix plane distance sign in intersection tests. [#35195] (@Shubham-Padkonde, @Mugen87)
  • Fix applyMatrix4() with rotated boxes and negative determinants. [#35261] (@Enesuygurs, @Mugen87)
  • OBJExporter
  • Support export of vertex colors in meshes. [#35131] (@shan3520)
  • Fix export of indexed lines. [#35154] (@nk-batman21, @Mugen87)
  • OBJLoader
  • Parse l and p statements correctly. [#35006] (@shan3520, @Mugen87)
  • Octree
  • Preserve configured subdivision limits. [#34814] (@dhairyajangir)
  • Fix sphere collisions at triangle edges. [#35196] (@Shubham-Padkonde, @Mugen87)
  • Project box contacts toward the triangle plane. [#35197] (@Shubham-Padkonde, @Mugen87)
  • Correct line segment to line segment closest point calculation. [#35216] (@shan3520)
  • OrbitControls
  • Reset state when the one-finger touch action is disabled. [#34651] (@gjija)
  • Fix zoomToCursor when dollying with the mouse. [#34856] (@mrdoob)
  • Move away from getRootNode(). [#34973] (@Mugen87)
  • PCDLoader
  • Respect COUNT when locating ASCII fields. [#34809] (@dhairyajangir, @Mugen87)
  • Allow more separation styles. [#34901] (@Mugen87)
  • PDBLoader
  • Fix coordinate field slices. [#34896] (@scottcampbelldata, @Mugen87)
  • PLYExporter
  • Skip Points without position attributes. [#34762] (@somasoil, @Mugen87)
  • Fix export of quantized attributes. [#35192] (@nk-batman21, @Mugen87)
  • PLYLoader
  • Fix colors, tex coords and indices for quads. [#34649] (@Mugen87)
  • Move custom data parsing. [#34911] (@Mugen87)
  • PVRLoader
  • Fix mips size computation. [#34910] (@Mugen87)
  • RapierPhysics
  • Update Rapier to 0.21.0 and use jsDelivr CDN. [#35223] (@linbingquan)
  • Reflector/ReflectorNode
  • Better handle asymetric projections. [#34929] (@Mugen87)
  • SceneUtils
  • Keep normalized in createMeshesFromMultiMaterialMesh(). [#35224] (@mmporong, @Mugen87)
  • STLLoader
  • Fix COLOR= parsing. [#34902] (@Mugen87)
  • SVGLoader
  • Fix stylesheet parsing. [#34775] (@Mugen87)
  • Improve path parsing. [#35005] (@Mugen87)
  • Support href in use elements. [#35165] (@nk-batman21, @Mugen87)
  • SVGRenderer
  • Use the target of directional lights for the light direction. [#35208] (@repalash)
  • TGALoader
  • Fix color palette index. [#34907] (@Mugen87)
  • TSL
  • More usage of EPSILON. [#35063] (@Mugen87)
  • unwrapUVs
  • Real-time generator of UV atlases for lightmap and normal baking. [#34944] (@bhouston, @Mugen87)
  • USDAParser
  • Avoid per-character string building in preprocessing. [#35020] (@cherenkov)
  • Keep time samples at negative time codes. [#35172] (@L4XB, @Mugen87)
  • Keep comment markers inside strings and asset paths. [#35182] (@L4XB, @Mugen87)
  • USDComposer
  • Correct the color space setting in to be linear sRGB. [#34644] (@Jeggery)
  • USDLoader
  • USDLoader bug: Load texture images through ImageLoader. [#35010] (@bhouston)
  • VXGI
  • Mitigate light bleeding. [#35160] (@Mugen87)
  • VXGIVolume
  • Improve disposal. [#34933] (@Mugen87)
  • WebGPURenderer
  • Introduce StandardDrawingPipeline, MeshletDrawingPipeline and VisibilityBufferDrawingPipeline. [#35191] (@sunag)
  • XREstimatedLight
  • Remove session listeners in dispose(). [#35106] (@salmanmkc, @Mugen87)

Addons / Nodes

  • TSL
  • Add lens dirt TSL function. [#34715] (@Mugen87)
  • Add isBackgroundDepth() and use it in post processing nodes. [#34792] (@mrdoob, @claude)
  • Remove redundant nodeObject() calls. [#34841] (@sunag)
  • ClusteredLightsNode
  • Improve dispose() and code structure. [#34930] (@Mugen87)
  • Preserve shader cache keys on first use. [#35271] (@sunag)
  • DynamicLightsNode
  • Refactor to restore lost support. [#34774] (@Mugen87)
  • Identify batched lights by their class. [#35004] (@yujiaxu-ops, @Mugen87, @claude)
  • GTAONode
  • Fix false self-occlusion on distant slanted surfaces. [#34718] (@EdoardoLuciani, @Mugen87)
  • Fix view direction for orthographic cameras. [#35073] (@martincollignon, @Mugen87, @claude)
  • lensDirt
  • Clean up. [f9cb76] (@Mugen87)
  • LightProbeGrid
  • Add a small margin to the bounds test. [#35268] (@mrdoob)
  • MaterialXLoader
  • Return 0 instead of NaN from burn and dodge. [#34834] (@hybridherbst)
  • Vector and color noise now use one noise per channel. [#34833] (@hybridherbst)
  • Add randomfloat and randomcolor. [#34866] (@hybridherbst)
  • OutlineNode
  • Outline Nodes: Honor positionNode, improve dispose(). [#34759] (@Mugen87)
  • PassNode/TAA
  • Improve depth support. [#34802] (@Mugen87)
  • PixelationPassNode
  • Simplify Code. [#34543] (@cmhhelgeson, @Mugen87)
  • SoftParticles
  • Fix shader compilation with the WebGL backend. [#35249] (@subashc2023)
  • SpecularHelpers
  • Fix the GGX tangent frame at the poles. [#35237] (@bhouston)
  • SSGINode
  • Support resolution scale, add getProjectionDepth(). [#35229] (@Mugen87)
  • SSRNode
  • Default to the full GGX sampling lobe. [#35243] (@bhouston)
  • Validate ray bounds and refined hits. [#35238] (@bhouston, @Mugen87)
  • Fix refinement regression. [#35266] (@Mugen87)
  • Clip traversal to the viewport and refine coarse hits. [#35240] (@bhouston)
  • Support material F0 and F90 in stochastic reflections. [#35242] (@bhouston)
  • TAAUNode
  • TAA Nodes: Register inputs ahead of consumers. [#34565] (@Mugen87)
  • TemporalReprojectNode
  • Update the depth pass before the node. [#34823] (@mrdoob, @claude)
  • Match the history depth type to the scene depth. [#34793] (@mrdoob, @Mugen87, @claude)
  • TileShadowNode
  • Support reversed depth buffer. [#34784] (@mrdoob, @claude)
  • Honor shadow camera layers. [#34785] (@mrdoob, @claude)
  • Add depthType option. [#34786] (@mrdoob, @claude)
  • Use a depth-only render target. [#34783] (@mrdoob, @claude)
  • Sample only the tile that covers the fragment. [#34787] (@mrdoob, @claude)
  • TRAANode
  • Fix previous-depth texture leak. [#34873] (@EdoardoLuciani)
  • WebGLNodesHandler
  • Use the WebGL PMREM generator. [#34628] (@mrdoob)
  • Add missing fogDensity uniform. [#35250] (@subashc2023)
  • WebGPURenderer
  • Init render target textures differently. [#35204] (@Mugen87)

Docs

  • Line3: Fix at() return description. [#34545] (@Hugohong258)
  • TSL Guide: Fix parameter highlighting with parentheses in descriptions, plus edge case workaround. [#34577] (@ycw)
  • Add a Static Properties subsection to improve discoverability. [#34642] (@ycw)
  • Raycaster: Document batchId in Intersection. [#34674] (@MikeFernandez-Pro)
  • BatchedMesh: Clarify when to recompute bounding volumes. [#34699] (@MikeFernandez-Pro, @Mugen87)
  • Fix incorrect @default values. [#34700] (@ZainnQureshii, @claude)
  • Fix JSDoc for TextureLoader.load to indicate optional callbacks. [#34730] (@ycw)
  • Opt embedded tweets out of personalization. [#34795] (@ycw)
  • LightUtils: Fix Documenation. [#34845] (@cmhhelgeson)
  • BatchedMesh: Fix getGeometryRangeAt() description. [#34847] (@MikeFernandez-Pro)
  • Fix typo in Object3D.js documentation. [f2a1c2] (@mrdoob)
  • DirectRenderPipeline: Document MSAA restriction. [#34954] (@Mugen87)
  • NodeMaterial: Clarify positionNode with instancing. [#34981] (@MikeFernandez-Pro)
  • SkyMesh: Improve docs. [#34989] (@Mugen87)
  • InspectorBase: fix renderer types in JSDoc. [#35027] (@kercre123)
  • Fix incorrect default values in JSDoc. [#35034] (@ihsandeniz)
  • SpriteNodeMaterial: Correct positionNode type in docs. [#35071] (@SachchitNesarikar)
  • Fix typo in ExtrudeGeometry section. [#35180] (@andayers06)
  • Fix callback parameters of Object3D and Interpolant. [#35231] (@mmporong, @claude)
  • TSL Guide: Update for r187. [#35254] (@sunag)
  • Fix minor issue in BokehPass inline documentation code sample. [#35274] (@cool-user1481)

Manual

  • Improve update guide. [#34867] (@Mugen87)
  • Fix broken links in WebXR and textures pages. [#34958] (@SatvikMishra08)
  • Clarify replacing geometries when buffers outgrow capacity. [#35104] (@xlb3055, @Mugen87)
  • Add three-player-controller to libraries and plugins. [#35234] (@hh-hang)

Examples

  • Clean up. [#34518] (@Mugen87)
  • Clean up. [#34539] (@Mugen87)
  • Remove iOS iframe auto-resize workaround. [#34546] (@paulmasson)
  • Clean up. [#34547] (@Mugen87)
  • Only use SunLight in larger scenes. [#34586] (@Mugen87)
  • Fix MaterialX shader precompilation. [d8d1c9] (@mrdoob)
  • Skip MaterialX double-pass precompilation. [1b437f] (@mrdoob)
  • Update path tracer to latest WebGPU version. [#34704] (@gkjohnson)
  • Use Inspector in webgpu_renderer_pathtracer.html. [#34708] (@ycw)
  • Add webgpu_tsl_occlusion_dither. [#34710] (@MikeFernandez-Pro)
  • Remove redundant lil-gui CSS from webgpu_renderer_pathtracer.html. [#34731] (@ycw)
  • Update fflate to 0.8.3. [#34737] (@brennanmceachran, @claude)
  • Clean up. [#34740] (@Mugen87)
  • Clean Up. [#34839] (@cmhhelgeson, @Mugen87)
  • Clean Up 2. [#34840] (@cmhhelgeson)
  • Linting. [#34925] (@cmhhelgeson, @Mugen87)
  • Fix Readback in Reduce Example. [#34924] (@cmhhelgeson, @Mugen87)
  • Clean up. [#34984] (@Mugen87)
  • Fix hover highlight of first instance in webgl_batch_lod_bvh. [#34998] (@MikeFernandez-Pro)
  • Add VDB loader community example. [#35043] (@richardmonette)
  • Fix wireform transform not matching on CSG example. [#35152] (@ctkerns)
  • Replace MRT scan asset. [#35158] (@Mugen87)
  • Clean up. [#35188] (@Mugen87)
  • Move point light uniforms to renderGroup in webgpu_volume_fire. [#35198] (@MikeFernandez-Pro)
  • Switch Physics engine in ball pool demo. [#35209] (@Mugen87)
  • Improve shadows in lightprobes_complex. [8c211c] (@mrdoob, @claude)
  • Rename webgpu_gpudriven_* to webgpu_meshlets_*. [#35282] (@mrdoob, @claude)

Devtools

  • Lights, persistent helpers, previews without a renderer and 1.19. [#35220] (@mrdoob, @claude)

Editor

  • Add missing sidebar/project/camera locale. [#34512] (@ycw)
  • Fix editor lint warnings. [#34515] (@ycw)
  • Better IDB perf metrics and error handling. [#34514] (@ycw, @Mugen87)
  • Add zh/ja/ko/fa/fr translations for perspective/orthographic camera shortcuts. [#34796] (@linbingquan)

Tests

  • Add lint rule to prevent import from /build in tests. [#34541] (@bhouston)
  • Add TSL code generation reference tests. [#34631] (@sunag)
  • Report size: Always format sizes in kB. [227e7b] (@mrdoob, @claude)
  • Consolidate TSL unit tests. [#34918] (@bhouston)
  • Simplify TSL case names and reference parsing. [#35056] (@sunag)
  • Restart browser after a timeout. [#35098] (@bhouston)
  • Retry examples after a timeout. [#35146] (@bhouston)
  • Retry completely black screenshot mismatches. [#35166] (@bhouston)

Build

  • Make three/tsl tree-shakeable. [#34533] (@monken)

CI

  • Report size: Measure full builds as self-contained bundles. [#34777] (@mrdoob, @claude)
  • Fix broken link to Node.js get help. [#35151] (@ctkerns)
Source: README.md, updated 2026-10-30