Mr.doob 4 месяцев назад
Родитель
Сommit
5f6b118f43
100 измененных файлов с 2974 добавлено и 1167 удалено
  1. 323 197
      build/three.cjs
  2. 333 198
      build/three.core.js
  3. 0 0
      build/three.core.min.js
  4. 0 0
      build/three.module.js
  5. 0 0
      build/three.module.min.js
  6. 14 2
      build/three.tsl.js
  7. 0 0
      build/three.tsl.min.js
  8. 0 0
      build/three.webgpu.js
  9. 0 0
      build/three.webgpu.min.js
  10. 0 0
      build/three.webgpu.nodes.js
  11. 0 0
      build/three.webgpu.nodes.min.js
  12. 39 4
      docs/index.html
  13. 10 1
      docs/pages/AmmoPhysics.html
  14. 0 12
      docs/pages/AnaglyphPassNode.html
  15. 6 0
      docs/pages/AnalyticLightNode.html
  16. 32 0
      docs/pages/ArrayElementNode.html
  17. 32 0
      docs/pages/ArrayNode.html
  18. 2 14
      docs/pages/BatchedMesh.html
  19. 65 0
      docs/pages/BitcountNode.html
  20. 1 27
      docs/pages/BloomNode.html
  21. 1 1
      docs/pages/BooleanKeyframeTrack.html
  22. 19 2
      docs/pages/BufferGeometry.html
  23. 38 0
      docs/pages/BufferNode.html
  24. 1 1
      docs/pages/ColorKeyframeTrack.html
  25. 16 0
      docs/pages/ContextNode.html
  26. 143 0
      docs/pages/CubeDepthTexture.html
  27. 1 1
      docs/pages/CubeTextureNode.html
  28. 1 1
      docs/pages/DecalGeometry.html
  29. 42 0
      docs/pages/GLSLNodeBuilder.html
  30. 1 1
      docs/pages/GTAONode.html
  31. 14 2
      docs/pages/InstanceNode.html
  32. 1 1
      docs/pages/JoltPhysics.html
  33. 1 1
      docs/pages/KeyframeTrack.html
  34. 28 1
      docs/pages/LDrawLoader.html
  35. 0 22
      docs/pages/LightProbe.html
  36. 0 2
      docs/pages/LightShadow.html
  37. 1 1
      docs/pages/Line.html
  38. 1 1
      docs/pages/MaterialLoader.html
  39. 1 1
      docs/pages/Mesh.html
  40. 21 0
      docs/pages/NodeBuilder.html
  41. 7 0
      docs/pages/NodeMaterial.html
  42. 7 0
      docs/pages/NormalMapNode.html
  43. 1 1
      docs/pages/NumberKeyframeTrack.html
  44. 78 0
      docs/pages/Octree.html
  45. 7 0
      docs/pages/OutputPass.html
  46. 0 45
      docs/pages/PCDLoader.html
  47. 1 1
      docs/pages/PMREMGenerator.html
  48. 74 0
      docs/pages/PackFloatNode.html
  49. 26 0
      docs/pages/PassNode.html
  50. 14 0
      docs/pages/PhysicalLightingModel.html
  51. 0 6
      docs/pages/PixelationNode.html
  52. 1 1
      docs/pages/PointLightHelper.html
  53. 0 31
      docs/pages/PointLightShadow.html
  54. 30 9
      docs/pages/PointShadowNode.html
  55. 1 1
      docs/pages/Points.html
  56. 1 1
      docs/pages/QuaternionKeyframeTrack.html
  57. 1 1
      docs/pages/RapierPhysics.html
  58. 2 2
      docs/pages/Raycaster.html
  59. 7 0
      docs/pages/RenderPass.html
  60. 44 122
      docs/pages/Renderer.html
  61. 0 24
      docs/pages/SSGINode.html
  62. 1 13
      docs/pages/SSSNode.html
  63. 0 7
      docs/pages/ScreenNode.html
  64. 11 1
      docs/pages/ShaderMaterial.html
  65. 8 0
      docs/pages/Skeleton.html
  66. 12 2
      docs/pages/SkyMesh.html
  67. 1 1
      docs/pages/Sphere.html
  68. 31 1
      docs/pages/StackNode.html
  69. 0 31
      docs/pages/StereoCompositePassNode.html
  70. 0 14
      docs/pages/StorageBufferNode.html
  71. 1 1
      docs/pages/StringKeyframeTrack.html
  72. 1 1
      docs/pages/SubgroupFunctionNode.html
  73. 30 0
      docs/pages/TRAANode.html
  74. 506 68
      docs/pages/TSL.html
  75. 88 0
      docs/pages/Tab.html
  76. 1 1
      docs/pages/Texture.html
  77. 0 21
      docs/pages/UniformsGroup.html
  78. 74 0
      docs/pages/UnpackFloatNode.html
  79. 1 1
      docs/pages/UnrealBloomPass.html
  80. 5 10
      docs/pages/VOXLoader.html
  81. 21 0
      docs/pages/VarNode.html
  82. 1 1
      docs/pages/VectorKeyframeTrack.html
  83. 42 0
      docs/pages/WGSLNodeBuilder.html
  84. 29 12
      docs/pages/WebGLRenderer.html
  85. 2 2
      docs/pages/WebGPURenderer.html
  86. 0 7
      docs/pages/XRManager.html
  87. 184 80
      docs/pages/global.html
  88. 1 1
      docs/pages/module-UnpackDepthRGBAShader.html
  89. 340 124
      docs/search.json
  90. 33 0
      editor/js/Editor.js
  91. 16 1
      editor/js/EditorControls.js
  92. 4 14
      editor/js/Loader.js
  93. 1 1
      editor/js/Script.js
  94. 27 5
      editor/js/Selector.js
  95. 1 1
      editor/js/Sidebar.Material.js
  96. 1 1
      editor/js/Sidebar.Object.js
  97. 1 2
      editor/js/Sidebar.Project.Renderer.js
  98. 2 0
      editor/js/Viewport.js
  99. 2 2
      editor/sw.js
  100. 5 1
      examples/files.json

Разница между файлами не показана из-за своего большого размера
+ 323 - 197
build/three.cjs


Разница между файлами не показана из-за своего большого размера
+ 333 - 198
build/three.core.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/three.core.min.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/three.module.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/three.module.min.js


Разница между файлами не показана из-за своего большого размера
+ 14 - 2
build/three.tsl.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/three.tsl.min.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/three.webgpu.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/three.webgpu.min.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/three.webgpu.nodes.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
build/three.webgpu.nodes.min.js


+ 39 - 4
docs/index.html

@@ -302,6 +302,7 @@
 						<li><a href="BasicLightingModel.html">BasicLightingModel</a></li>
 						<li><a href="BatchNode.html">BatchNode</a></li>
 						<li><a href="BitcastNode.html">BitcastNode</a></li>
+						<li><a href="BitcountNode.html">BitcountNode</a></li>
 						<li><a href="BufferAttributeNode.html">BufferAttributeNode</a></li>
 						<li><a href="BufferNode.html">BufferNode</a></li>
 						<li><a href="BuiltinNode.html">BuiltinNode</a></li>
@@ -370,6 +371,7 @@
 						<li><a href="OperatorNode.html">OperatorNode</a></li>
 						<li><a href="OutputStructNode.html">OutputStructNode</a></li>
 						<li><a href="PMREMNode.html">PMREMNode</a></li>
+						<li><a href="PackFloatNode.html">PackFloatNode</a></li>
 						<li><a href="ParameterNode.html">ParameterNode</a></li>
 						<li><a href="PassMultipleTextureNode.html">PassMultipleTextureNode</a></li>
 						<li><a href="PassNode.html">PassNode</a></li>
@@ -426,6 +428,7 @@
 						<li><a href="UniformArrayNode.html">UniformArrayNode</a></li>
 						<li><a href="UniformGroupNode.html">UniformGroupNode</a></li>
 						<li><a href="UniformNode.html">UniformNode</a></li>
+						<li><a href="UnpackFloatNode.html">UnpackFloatNode</a></li>
 						<li><a href="UserDataNode.html">UserDataNode</a></li>
 						<li><a href="VarNode.html">VarNode</a></li>
 						<li><a href="VaryingNode.html">VaryingNode</a></li>
@@ -502,6 +505,7 @@
 						<li><a href="CompressedArrayTexture.html">CompressedArrayTexture</a></li>
 						<li><a href="CompressedCubeTexture.html">CompressedCubeTexture</a></li>
 						<li><a href="CompressedTexture.html">CompressedTexture</a></li>
+						<li><a href="CubeDepthTexture.html">CubeDepthTexture</a></li>
 						<li><a href="CubeTexture.html">CubeTexture</a></li>
 						<li><a href="Data3DTexture.html">Data3DTexture</a></li>
 						<li><a href="DataArrayTexture.html">DataArrayTexture</a></li>
@@ -618,6 +622,10 @@
 						<li><a href="VertexTangentsHelper.html">VertexTangentsHelper</a></li>
 						<li><a href="ViewHelper.html">ViewHelper</a></li>
 					</ul>
+					<h3>Inspector</h3>
+					<ul>
+						<li><a href="Tab.html">Tab</a></li>
+					</ul>
 					<h3>Interactive</h3>
 					<ul>
 						<li><a href="HTMLMesh.html">HTMLMesh</a></li>
@@ -690,9 +698,7 @@
 						<li><a href="ThreeMFLoader.html">ThreeMFLoader</a></li>
 						<li><a href="USDLoader.html">USDLoader</a></li>
 						<li><a href="UltraHDRLoader.html">UltraHDRLoader</a></li>
-						<li><a href="VOXData3DTexture.html">VOXData3DTexture</a></li>
 						<li><a href="VOXLoader.html">VOXLoader</a></li>
-						<li><a href="VOXMesh.html">VOXMesh</a></li>
 						<li><a href="VRMLLoader.html">VRMLLoader</a></li>
 						<li><a href="VTKLoader.html">VTKLoader</a></li>
 						<li><a href="XYZLoader.html">XYZLoader</a></li>
@@ -1028,6 +1034,8 @@
 						<li><a href="TSL.html#buffer">buffer</a></li>
 						<li><a href="TSL.html#bufferAttribute">bufferAttribute</a></li>
 						<li><a href="TSL.html#builtin">builtin</a></li>
+						<li><a href="TSL.html#builtinAOContext">builtinAOContext</a></li>
+						<li><a href="TSL.html#builtinShadowContext">builtinShadowContext</a></li>
 						<li><a href="TSL.html#bumpMap">bumpMap</a></li>
 						<li><a href="TSL.html#burn">burn</a></li>
 						<li><a href="TSL.html#bypass">bypass</a></li>
@@ -1066,6 +1074,9 @@
 						<li><a href="TSL.html#convertColorSpace">convertColorSpace</a></li>
 						<li><a href="TSL.html#convertToTexture">convertToTexture</a></li>
 						<li><a href="TSL.html#cos">cos</a></li>
+						<li><a href="TSL.html#countLeadingZeros">countLeadingZeros</a></li>
+						<li><a href="TSL.html#countOneBits">countOneBits</a></li>
+						<li><a href="TSL.html#countTrailingZeros">countTrailingZeros</a></li>
 						<li><a href="TSL.html#createVar">createVar</a></li>
 						<li><a href="TSL.html#cross">cross</a></li>
 						<li><a href="TSL.html#cubeMapNode">cubeMapNode</a></li>
@@ -1088,6 +1099,7 @@
 						<li><a href="TSL.html#determinant">determinant</a></li>
 						<li><a href="TSL.html#difference">difference</a></li>
 						<li><a href="TSL.html#diffuseColor">diffuseColor</a></li>
+						<li><a href="TSL.html#diffuseContribution">diffuseContribution</a></li>
 						<li><a href="TSL.html#directionToColor">directionToColor</a></li>
 						<li><a href="TSL.html#directionToFaceDirection">directionToFaceDirection</a></li>
 						<li><a href="TSL.html#dispersion">dispersion</a></li>
@@ -1280,6 +1292,9 @@
 						<li><a href="TSL.html#outputStruct">outputStruct</a></li>
 						<li><a href="TSL.html#overlay">overlay</a></li>
 						<li><a href="TSL.html#overloadingFn">overloadingFn</a></li>
+						<li><a href="TSL.html#packHalf2x16">packHalf2x16</a></li>
+						<li><a href="TSL.html#packSnorm2x16">packSnorm2x16</a></li>
+						<li><a href="TSL.html#packUnorm2x16">packUnorm2x16</a></li>
 						<li><a href="TSL.html#parabola">parabola</a></li>
 						<li><a href="TSL.html#parallaxBarrierPass">parallaxBarrierPass</a></li>
 						<li><a href="TSL.html#parallaxDirection">parallaxDirection</a></li>
@@ -1313,6 +1328,7 @@
 						<li><a href="TSL.html#quadSwapDiagonal">quadSwapDiagonal</a></li>
 						<li><a href="TSL.html#quadSwapX">quadSwapX</a></li>
 						<li><a href="TSL.html#quadSwapY">quadSwapY</a></li>
+						<li><a href="TSL.html#radialBlur">radialBlur</a></li>
 						<li><a href="TSL.html#radians">radians</a></li>
 						<li><a href="TSL.html#rand">rand</a></li>
 						<li><a href="TSL.html#range">range</a></li>
@@ -1334,6 +1350,7 @@
 						<li><a href="TSL.html#renderGroup">renderGroup</a></li>
 						<li><a href="TSL.html#renderOutput">renderOutput</a></li>
 						<li><a href="TSL.html#rendererReference">rendererReference</a></li>
+						<li><a href="TSL.html#replaceDefaultUV">replaceDefaultUV</a></li>
 						<li><a href="TSL.html#rgbShift">rgbShift</a></li>
 						<li><a href="TSL.html#rotate">rotate</a></li>
 						<li><a href="TSL.html#rotateUV">rotateUV</a></li>
@@ -1374,6 +1391,7 @@
 						<li><a href="TSL.html#smoothstepElement">smoothstepElement</a></li>
 						<li><a href="TSL.html#sobel">sobel</a></li>
 						<li><a href="TSL.html#specularColor">specularColor</a></li>
+						<li><a href="TSL.html#specularColorBlended">specularColorBlended</a></li>
 						<li><a href="TSL.html#specularF90">specularF90</a></li>
 						<li><a href="TSL.html#spherizeUV">spherizeUV</a></li>
 						<li><a href="TSL.html#spritesheetUV">spritesheetUV</a></li>
@@ -1425,6 +1443,8 @@
 						<li><a href="TSL.html#tangentWorld">tangentWorld</a></li>
 						<li><a href="TSL.html#texture">texture</a></li>
 						<li><a href="TSL.html#texture3D">texture3D</a></li>
+						<li><a href="TSL.html#texture3DLevel">texture3DLevel</a></li>
+						<li><a href="TSL.html#texture3DLoad">texture3DLoad</a></li>
 						<li><a href="TSL.html#textureBarrier">textureBarrier</a></li>
 						<li><a href="TSL.html#textureBase">textureBase</a></li>
 						<li><a href="TSL.html#textureBicubic">textureBicubic</a></li>
@@ -1459,6 +1479,10 @@
 						<li><a href="TSL.html#uniformFlow">uniformFlow</a></li>
 						<li><a href="TSL.html#uniformGroup">uniformGroup</a></li>
 						<li><a href="TSL.html#uniformTexture">uniformTexture</a></li>
+						<li><a href="TSL.html#unpackHalf2x16">unpackHalf2x16</a></li>
+						<li><a href="TSL.html#unpackNormal">unpackNormal</a></li>
+						<li><a href="TSL.html#unpackSnorm2x16">unpackSnorm2x16</a></li>
+						<li><a href="TSL.html#unpackUnorm2x16">unpackUnorm2x16</a></li>
 						<li><a href="TSL.html#unpremultiplyAlpha">unpremultiplyAlpha</a></li>
 						<li><a href="TSL.html#userData">userData</a></li>
 						<li><a href="TSL.html#uv">uv</a></li>
@@ -1482,6 +1506,7 @@
 						<li><a href="TSL.html#viewportSize">viewportSize</a></li>
 						<li><a href="TSL.html#viewportTexture">viewportTexture</a></li>
 						<li><a href="TSL.html#viewportUV">viewportUV</a></li>
+						<li><a href="TSL.html#vogelDiskSample">vogelDiskSample</a></li>
 						<li><a href="TSL.html#wgsl">wgsl</a></li>
 						<li><a href="TSL.html#workgroupArray">workgroupArray</a></li>
 						<li><a href="TSL.html#workgroupBarrier">workgroupBarrier</a></li>
@@ -1591,6 +1616,7 @@
 						<li><a href="global.html#NeverStencilFunc">NeverStencilFunc</a></li>
 						<li><a href="global.html#NoBlending">NoBlending</a></li>
 						<li><a href="global.html#NoColorSpace">NoColorSpace</a></li>
+						<li><a href="global.html#NoNormalPacking">NoNormalPacking</a></li>
 						<li><a href="global.html#NoToneMapping">NoToneMapping</a></li>
 						<li><a href="global.html#NodeAccess">NodeAccess</a></li>
 						<li><a href="global.html#NodeShaderStage">NodeShaderStage</a></li>
@@ -1598,6 +1624,8 @@
 						<li><a href="global.html#NodeUpdateType">NodeUpdateType</a></li>
 						<li><a href="global.html#NormalAnimationBlendMode">NormalAnimationBlendMode</a></li>
 						<li><a href="global.html#NormalBlending">NormalBlending</a></li>
+						<li><a href="global.html#NormalGAPacking">NormalGAPacking</a></li>
+						<li><a href="global.html#NormalRGPacking">NormalRGPacking</a></li>
 						<li><a href="global.html#NotEqualCompare">NotEqualCompare</a></li>
 						<li><a href="global.html#NotEqualDepth">NotEqualDepth</a></li>
 						<li><a href="global.html#NotEqualStencilFunc">NotEqualStencilFunc</a></li>
@@ -1617,8 +1645,11 @@
 						<li><a href="global.html#PCFShadowMap">PCFShadowMap</a></li>
 						<li><a href="global.html#PCFSoftShadowFilter">PCFSoftShadowFilter</a></li>
 						<li><a href="global.html#PCFSoftShadowMap">PCFSoftShadowMap</a></li>
+						<li><a href="global.html#PointShadowFilter">PointShadowFilter</a></li>
+						<li><a href="global.html#R11_EAC_Format">R11_EAC_Format</a></li>
 						<li><a href="global.html#RED_GREEN_RGTC2_Format">RED_GREEN_RGTC2_Format</a></li>
 						<li><a href="global.html#RED_RGTC1_Format">RED_RGTC1_Format</a></li>
+						<li><a href="global.html#RG11_EAC_Format">RG11_EAC_Format</a></li>
 						<li><a href="global.html#RGBADepthPacking">RGBADepthPacking</a></li>
 						<li><a href="global.html#RGBAFormat">RGBAFormat</a></li>
 						<li><a href="global.html#RGBAIntegerFormat">RGBAIntegerFormat</a></li>
@@ -1662,8 +1693,10 @@
 						<li><a href="global.html#RepeatWrapping">RepeatWrapping</a></li>
 						<li><a href="global.html#ReplaceStencilOp">ReplaceStencilOp</a></li>
 						<li><a href="global.html#ReverseSubtractEquation">ReverseSubtractEquation</a></li>
+						<li><a href="global.html#SIGNED_R11_EAC_Format">SIGNED_R11_EAC_Format</a></li>
 						<li><a href="global.html#SIGNED_RED_GREEN_RGTC2_Format">SIGNED_RED_GREEN_RGTC2_Format</a></li>
 						<li><a href="global.html#SIGNED_RED_RGTC1_Format">SIGNED_RED_RGTC1_Format</a></li>
+						<li><a href="global.html#SIGNED_RG11_EAC_Format">SIGNED_RG11_EAC_Format</a></li>
 						<li><a href="global.html#SRGBColorSpace">SRGBColorSpace</a></li>
 						<li><a href="global.html#SRGBTransfer">SRGBTransfer</a></li>
 						<li><a href="global.html#SRGB_TO_LINEAR">SRGB_TO_LINEAR</a></li>
@@ -1697,8 +1730,6 @@
 						<li><a href="global.html#UnsignedShort5551Type">UnsignedShort5551Type</a></li>
 						<li><a href="global.html#UnsignedShortType">UnsignedShortType</a></li>
 						<li><a href="global.html#VK_FORMAT_MAP">VK_FORMAT_MAP</a></li>
-						<li><a href="global.html#VSMPassHorizontal">VSMPassHorizontal</a></li>
-						<li><a href="global.html#VSMPassVertical">VSMPassVertical</a></li>
 						<li><a href="global.html#VSMShadowFilter">VSMShadowFilter</a></li>
 						<li><a href="global.html#VSMShadowMap">VSMShadowMap</a></li>
 						<li><a href="global.html#WebGLCoordinateSystem">WebGLCoordinateSystem</a></li>
@@ -1708,6 +1739,8 @@
 						<li><a href="global.html#ZeroFactor">ZeroFactor</a></li>
 						<li><a href="global.html#ZeroSlopeEnding">ZeroSlopeEnding</a></li>
 						<li><a href="global.html#ZeroStencilOp">ZeroStencilOp</a></li>
+						<li><a href="global.html#buildData3DTexture">buildData3DTexture</a></li>
+						<li><a href="global.html#buildMesh">buildMesh</a></li>
 						<li><a href="global.html#ceilPowerOfTwo">ceilPowerOfTwo</a></li>
 						<li><a href="global.html#contain">contain</a></li>
 						<li><a href="global.html#convertArray">convertArray</a></li>
@@ -1716,6 +1749,7 @@
 						<li><a href="global.html#damp">damp</a></li>
 						<li><a href="global.html#degToRad">degToRad</a></li>
 						<li><a href="global.html#denormalize">denormalize</a></li>
+						<li><a href="global.html#disposeShadowMaterial">disposeShadowMaterial</a></li>
 						<li><a href="global.html#euclideanModulo">euclideanModulo</a></li>
 						<li><a href="global.html#fill">fill</a></li>
 						<li><a href="global.html#flattenJSON">flattenJSON</a></li>
@@ -1751,6 +1785,7 @@
 						<li><a href="global.html#seededRandom">seededRandom</a></li>
 						<li><a href="global.html#setProjectionFromUnion">setProjectionFromUnion</a></li>
 						<li><a href="global.html#setQuaternionFromProperEuler">setQuaternionFromProperEuler</a></li>
+						<li><a href="global.html#shadowRenderObjectFunction">shadowRenderObjectFunction</a></li>
 						<li><a href="global.html#smootherstep">smootherstep</a></li>
 						<li><a href="global.html#sortedArray">sortedArray</a></li>
 						<li><a href="global.html#subclip">subclip</a></li>

+ 10 - 1
docs/pages/AmmoPhysics.html

@@ -30,7 +30,7 @@
 					</div>
 				</div>
 				<h2 class="subsection-title">Methods</h2>
-					<h3 class="name name-method" id="addMesh" translate="no">.<a href="#addMesh">addMesh</a><span class="signature">( mesh : <span class="param-type"><a href="Mesh.html">Mesh</a></span>, mass : <span class="param-type">number</span> )</span> </h3>
+					<h3 class="name name-method" id="addMesh" translate="no">.<a href="#addMesh">addMesh</a><span class="signature">( mesh : <span class="param-type"><a href="Mesh.html">Mesh</a></span>, mass : <span class="param-type">number</span>, restitution : <span class="param-type">number</span> )</span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>Adds the given mesh to this physics simulation.</p>
@@ -54,6 +54,15 @@
 										<p>Default is <code>0</code>.</p>
 									</td>
 								</tr>
+								<tr>
+									<td class="name">
+										<strong>restitution</strong>
+									</td>
+									<td class="description last">
+										<p>The restitution of the mesh, usually from 0 to 1. Represents how &quot;bouncy&quot; objects are when they collide with each other.</p>
+										<p>Default is <code>0</code>.</p>
+									</td>
+								</tr>
 							</tbody>
 						</table>
 					</div>

+ 0 - 12
docs/pages/AnaglyphPassNode.html

@@ -49,18 +49,6 @@
 					</div>
 				</div>
 				<h2 class="subsection-title">Properties</h2>
-				<div class="member">
-					<h3 class="name" id="_colorMatrixLeft" translate="no">.<a href="#_colorMatrixLeft">_colorMatrixLeft</a><span class="type-signature"> : <a href="UniformNode.html">UniformNode</a>.&lt;mat3></span> </h3>
-					<div class="description">
-						<p>Color matrix node for the left eye.</p>
-					</div>
-				</div>
-				<div class="member">
-					<h3 class="name" id="_colorMatrixRight" translate="no">.<a href="#_colorMatrixRight">_colorMatrixRight</a><span class="type-signature"> : <a href="UniformNode.html">UniformNode</a>.&lt;mat3></span> </h3>
-					<div class="description">
-						<p>Color matrix node for the right eye.</p>
-					</div>
-				</div>
 				<div class="member">
 					<h3 class="name" id="isAnaglyphPassNode" translate="no">.<a href="#isAnaglyphPassNode">isAnaglyphPassNode</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
 					<div class="description">

+ 6 - 0
docs/pages/AnalyticLightNode.html

@@ -100,6 +100,12 @@ once per frame.</p>
 						</dl>
 				</div>
 				<h2 class="subsection-title">Methods</h2>
+					<h3 class="name name-method" id="disposeShadow" translate="no">.<a href="#disposeShadow">disposeShadow</a><span class="signature">()</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Frees internal resources related to shadows.</p>
+						</div>
+					</div>
 					<h3 class="name name-method" id="getLightVector" translate="no">.<a href="#getLightVector">getLightVector</a><span class="signature">( builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;vec3></span> </h3>
 					<div class="method">
 						<div class="description">

+ 32 - 0
docs/pages/ArrayElementNode.html

@@ -67,6 +67,38 @@ node data structures.</p></div>
 					</div>
 				</div>
 				<h2 class="subsection-title">Methods</h2>
+					<h3 class="name name-method" id="getMemberType" translate="no">.<a href="#getMemberType">getMemberType</a><span class="signature">( builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span>, name : <span class="param-type">string</span> )</span><span class="type-signature"> : string</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>This method is overwritten since the member type is inferred from the array-like node.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>builder</strong>
+									</td>
+									<td class="description last">
+										<p>The current node builder.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>name</strong>
+									</td>
+									<td class="description last">
+										<p>The member name.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-overrides"><strong>Overrides:</strong> <a href="Node.html#getMemberType">Node#getMemberType</a></dt>
+						</dl>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The member type.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="getNodeType" translate="no">.<a href="#getNodeType">getNodeType</a><span class="signature">( builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span> )</span><span class="type-signature"> : string</span> </h3>
 					<div class="method">
 						<div class="description">

+ 32 - 0
docs/pages/ArrayNode.html

@@ -155,6 +155,38 @@ const redColor = tintColors.element( 0 );
 							<dt class="tag-returns"><strong>Returns:</strong> The type of the node.</dt>
 						</dl>
 					</div>
+					<h3 class="name name-method" id="getMemberType" translate="no">.<a href="#getMemberType">getMemberType</a><span class="signature">( builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span>, name : <span class="param-type">string</span> )</span><span class="type-signature"> : string</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Returns the type of a member variable.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>builder</strong>
+									</td>
+									<td class="description last">
+										<p>The current node builder.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>name</strong>
+									</td>
+									<td class="description last">
+										<p>The name of the member variable.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-overrides"><strong>Overrides:</strong> <a href="TempNode.html#getMemberType">TempNode#getMemberType</a></dt>
+						</dl>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The type of the member variable.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="getNodeType" translate="no">.<a href="#getNodeType">getNodeType</a><span class="signature">( builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span> )</span><span class="type-signature"> : string</span> </h3>
 					<div class="method">
 						<div class="description">

+ 2 - 14
docs/pages/BatchedMesh.html

@@ -480,24 +480,12 @@ indicating the starting offset and count, or <code>null</code> if invalid.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> Whether the instance is visible or not.</dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="optimize" translate="no">.<a href="#optimize">optimize</a><span class="signature">( instanceId : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="BatchedMesh.html">BatchedMesh</a></span> </h3>
+					<h3 class="name name-method" id="optimize" translate="no">.<a href="#optimize">optimize</a><span class="signature">()</span><span class="type-signature"> : <a href="BatchedMesh.html">BatchedMesh</a></span> </h3>
 					<div class="method">
 						<div class="description">
-							<p>Repacks the sub geometries in [name] to remove any unused space remaining from
+							<p>Repacks the sub geometries in BatchedMesh to remove any unused space remaining from
 previously deleted geometry, freeing up space to add new geometry.</p>
 						</div>
-						<table class="params">
-							<tbody>
-								<tr>
-									<td class="name">
-										<strong>instanceId</strong>
-									</td>
-									<td class="description last">
-										<p>The ID of the instance to remove from the batch.</p>
-									</td>
-								</tr>
-							</tbody>
-						</table>
 						<dl class="details">
 							<dt class="tag-returns"><strong>Returns:</strong> A reference to this batched mesh.</dt>
 						</dl>

+ 65 - 0
docs/pages/BitcountNode.html

@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="utf-8">
+	<title>BitcountNode - Three.js Docs</title>
+	<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+	<script src="../scripts/highlight.min.js"></script>
+	<link type="text/css" rel="stylesheet" href="../styles/highlight-three.css">
+	<link type="text/css" rel="stylesheet" href="../styles/page.css">
+</head>
+<body>
+		<p class="inheritance" translate="no"><a href="EventDispatcher.html">EventDispatcher</a> → <a href="Node.html">Node</a> → <a href="TempNode.html">TempNode</a> → <a href="MathNode.html">MathNode</a> → </p>
+	<h1 translate="no">BitcountNode</h1>
+		<section>
+			<header>
+				<div class="class-description"><p>This node represents an operation that counts the bits of a piece of shader data.</p></div>
+			</header>
+			<article>
+				<div class="container-overview">
+					<h2>Constructor</h2>
+					<h3 class="name name-method" id="BitcountNode" translate="no">new <a href="#BitcountNode">BitcountNode</a><span class="signature">( method : <span class="param-type">'countTrailingZeros' | 'countLeadingZeros' | 'countOneBits'</span>, aNode : <span class="param-type"><a href="Node.html">Node</a></span> )</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Constructs a new math node.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>method</strong>
+									</td>
+									<td class="description last">
+										<p>The method name.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>aNode</strong>
+									</td>
+									<td class="description last">
+										<p>The first input.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<h2 class="subsection-title">Properties</h2>
+				<div class="member">
+					<h3 class="name" id="isBitcountNode" translate="no">.<a href="#isBitcountNode">isBitcountNode</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
+					<div class="description">
+						<p>This flag can be used for type testing.</p>
+						<p>Default is <code>true</code>.</p>
+					</div>
+				</div>
+				<h2 class="subsection-title">Source</h2>
+				<p>
+					<a href="https://github.com/mrdoob/three.js/blob/master/src/nodes/math/BitcountNode.js" translate="no" target="_blank" rel="noopener">src/nodes/math/BitcountNode.js</a>
+				</p>
+			</article>
+		</section>
+<script src="../scripts/linenumber.js"></script>
+<script src="../scripts/page.js"></script>
+</body>
+</html>

+ 1 - 27
docs/pages/BloomNode.html

@@ -98,7 +98,7 @@ postProcessing.outputNode = scenePassColor.add( bloomPass );
 				<div class="member">
 					<h3 class="name" id="radius" translate="no">.<a href="#radius">radius</a><span class="type-signature"> : <a href="UniformNode.html">UniformNode</a>.&lt;float></span> </h3>
 					<div class="description">
-						<p>The radius of the bloom.</p>
+						<p>The radius of the bloom. Must be in the range <code>[0,1]</code>.</p>
 					</div>
 				</div>
 				<div class="member">
@@ -131,32 +131,6 @@ its effect once per frame in <code>updateBefore()</code>.</p>
 						</dl>
 				</div>
 				<h2 class="subsection-title">Methods</h2>
-					<h3 class="name name-method" id="_getSeparableBlurMaterial" translate="no">.<a href="#_getSeparableBlurMaterial">_getSeparableBlurMaterial</a><span class="signature">( builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span>, kernelRadius : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="NodeMaterial.html">NodeMaterial</a></span> </h3>
-					<div class="method">
-						<div class="description">
-							<p>Create a separable blur material for the given kernel radius.</p>
-						</div>
-						<table class="params">
-							<tbody>
-								<tr>
-									<td class="name">
-										<strong>builder</strong>
-									</td>
-									<td class="description last">
-										<p>The current node builder.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>kernelRadius</strong>
-									</td>
-									<td class="description last">
-										<p>The kernel radius.</p>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-					</div>
 					<h3 class="name name-method" id="dispose" translate="no">.<a href="#dispose">dispose</a><span class="signature">()</span> </h3>
 					<div class="method">
 						<div class="description">

+ 1 - 1
docs/pages/BooleanKeyframeTrack.html

@@ -77,7 +77,7 @@ interpolation is always discrete.</p>
 						</dl>
 				</div>
 				<div class="member">
-					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : String</span> </h3>
+					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">
 						<p>The value type name.</p>
 						<p>Default is <code>'bool'</code>.</p>

+ 19 - 2
docs/pages/BufferGeometry.html

@@ -110,6 +110,14 @@ now defines indirect draw calls.</p>
 						<p>Default is <code>null</code>.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="indirectOffset" translate="no">.<a href="#indirectOffset">indirectOffset</a><span class="type-signature"> : number | Array.&lt;number></span> </h3>
+					<div class="description">
+						<p>The offset, in bytes, into the indirect drawing buffer where the value data begins. If an array is provided, multiple indirect draw calls will be made for each offset.</p>
+<p>Can only be used with <a href="WebGPURenderer.html">WebGPURenderer</a> and a WebGPU backend.</p>
+						<p>Default is <code>0</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="isBufferGeometry" translate="no">.<a href="#isBufferGeometry">isBufferGeometry</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
 					<div class="description">
@@ -122,7 +130,7 @@ now defines indirect draw calls.</p>
 					<div class="description">
 						<p>This dictionary holds the morph targets of the geometry.</p>
 <p>Note: Once the geometry has been rendered, the morph attribute data cannot
-be changed. You will have to call `dispose()?, and create a new geometry instance.</p>
+be changed. You will have to call <code>dispose()</code>, and create a new geometry instance.</p>
 					</div>
 				</div>
 				<div class="member">
@@ -644,7 +652,7 @@ data from the array. The length of the array must match the vertex count.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> A reference to this instance.</dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="setIndirect" translate="no">.<a href="#setIndirect">setIndirect</a><span class="signature">( indirect : <span class="param-type"><a href="BufferAttribute.html">BufferAttribute</a></span> )</span><span class="type-signature"> : <a href="BufferGeometry.html">BufferGeometry</a></span> </h3>
+					<h3 class="name name-method" id="setIndirect" translate="no">.<a href="#setIndirect">setIndirect</a><span class="signature">( indirect : <span class="param-type"><a href="BufferAttribute.html">BufferAttribute</a></span>, indirectOffset : <span class="param-type">number | Array.&lt;number></span> )</span><span class="type-signature"> : <a href="BufferGeometry.html">BufferGeometry</a></span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>Sets the given indirect attribute to this geometry.</p>
@@ -659,6 +667,15 @@ data from the array. The length of the array must match the vertex count.</p>
 										<p>The attribute holding indirect draw calls.</p>
 									</td>
 								</tr>
+								<tr>
+									<td class="name">
+										<strong>indirectOffset</strong>
+									</td>
+									<td class="description last">
+										<p>The offset, in bytes, into the indirect drawing buffer where the value data begins. If an array is provided, multiple indirect draw calls will be made for each offset.</p>
+										<p>Default is <code>0</code>.</p>
+									</td>
+								</tr>
 							</tbody>
 						</table>
 						<dl class="details">

+ 38 - 0
docs/pages/BufferNode.html

@@ -83,7 +83,45 @@ const matrixNode = bufferNode.element( index ); // access a matrix from the buff
 						<p>Default is <code>true</code>.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="updateRanges" translate="no">.<a href="#updateRanges">updateRanges</a><span class="type-signature"> : Array.&lt;{start: number, count: number}></span> </h3>
+					<div class="description">
+						<p>An array of update ranges.</p>
+					</div>
+				</div>
 				<h2 class="subsection-title">Methods</h2>
+					<h3 class="name name-method" id="addUpdateRange" translate="no">.<a href="#addUpdateRange">addUpdateRange</a><span class="signature">( start : <span class="param-type">number</span>, count : <span class="param-type">number</span> )</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Adds a range of data in the data array to be updated on the GPU.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>start</strong>
+									</td>
+									<td class="description last">
+										<p>Position at which to start update.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>count</strong>
+									</td>
+									<td class="description last">
+										<p>The number of components to update.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<h3 class="name name-method" id="clearUpdateRanges" translate="no">.<a href="#clearUpdateRanges">clearUpdateRanges</a><span class="signature">()</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Clears the update ranges.</p>
+						</div>
+					</div>
 					<h3 class="name name-method" id="getElementType" translate="no">.<a href="#getElementType">getElementType</a><span class="signature">( builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span> )</span><span class="type-signature"> : string</span> </h3>
 					<div class="method">
 						<div class="description">

+ 1 - 1
docs/pages/ColorKeyframeTrack.html

@@ -63,7 +63,7 @@
 				</div>
 				<h2 class="subsection-title">Properties</h2>
 				<div class="member">
-					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : String</span> </h3>
+					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">
 						<p>The value type name.</p>
 						<p>Default is <code>'color'</code>.</p>

+ 16 - 0
docs/pages/ContextNode.html

@@ -18,6 +18,12 @@
 this node allows the modify the context. A typical use case is to overwrite <code>getUV()</code> e.g.:</p></div>
 				<h2>Code Example</h2>
 				<div translate="no"><pre><code class="language-js">node.context( { getUV: () => customCoord } );
+\// or
+material.contextNode = context( { getUV: () => customCoord } );
+\// or
+renderer.contextNode = context( { getUV: () => customCoord } );
+\// or
+scenePass.contextNode = context( { getUV: () => customCoord } );
 </code></pre></div>
 			</header>
 			<article>
@@ -36,6 +42,7 @@ this node allows the modify the context. A typical use case is to overwrite <cod
 									</td>
 									<td class="description last">
 										<p>The node whose context should be modified.</p>
+										<p>Default is <code>null</code>.</p>
 									</td>
 								</tr>
 								<tr>
@@ -73,6 +80,15 @@ this node allows the modify the context. A typical use case is to overwrite <cod
 					</div>
 				</div>
 				<h2 class="subsection-title">Methods</h2>
+					<h3 class="name name-method" id="getFlowContextData" translate="no">.<a href="#getFlowContextData">getFlowContextData</a><span class="signature">()</span><span class="type-signature"> : Object</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Gathers the context data from all parent context nodes.</p>
+						</div>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The gathered context data.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="getMemberType" translate="no">.<a href="#getMemberType">getMemberType</a><span class="signature">( builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span>, name : <span class="param-type">string</span> )</span><span class="type-signature"> : string</span> </h3>
 					<div class="method">
 						<div class="description">

+ 143 - 0
docs/pages/CubeDepthTexture.html

@@ -0,0 +1,143 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="utf-8">
+	<title>CubeDepthTexture - Three.js Docs</title>
+	<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+	<script src="../scripts/highlight.min.js"></script>
+	<link type="text/css" rel="stylesheet" href="../styles/highlight-three.css">
+	<link type="text/css" rel="stylesheet" href="../styles/page.css">
+</head>
+<body>
+		<p class="inheritance" translate="no"><a href="EventDispatcher.html">EventDispatcher</a> → <a href="Texture.html">Texture</a> → <a href="DepthTexture.html">DepthTexture</a> → </p>
+	<h1 translate="no">CubeDepthTexture</h1>
+		<section>
+			<header>
+				<div class="class-description"><p>This class can be used to automatically save the depth information of a
+cube rendering into a cube texture with depth format. Used for PointLight shadows.</p></div>
+			</header>
+			<article>
+				<div class="container-overview">
+					<h2>Constructor</h2>
+					<h3 class="name name-method" id="CubeDepthTexture" translate="no">new <a href="#CubeDepthTexture">CubeDepthTexture</a><span class="signature">( size : <span class="param-type">number</span>, type : <span class="param-type">number</span>, mapping : <span class="param-type">number</span>, wrapS : <span class="param-type">number</span>, wrapT : <span class="param-type">number</span>, magFilter : <span class="param-type">number</span>, minFilter : <span class="param-type">number</span>, anisotropy : <span class="param-type">number</span>, format : <span class="param-type">number</span> )</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Constructs a new cube depth texture.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>size</strong>
+									</td>
+									<td class="description last">
+										<p>The size (width and height) of each cube face.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>type</strong>
+									</td>
+									<td class="description last">
+										<p>The texture type.</p>
+										<p>Default is <code>UnsignedIntType</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>mapping</strong>
+									</td>
+									<td class="description last">
+										<p>The texture mapping.</p>
+										<p>Default is <code>CubeReflectionMapping</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>wrapS</strong>
+									</td>
+									<td class="description last">
+										<p>The wrapS value.</p>
+										<p>Default is <code>ClampToEdgeWrapping</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>wrapT</strong>
+									</td>
+									<td class="description last">
+										<p>The wrapT value.</p>
+										<p>Default is <code>ClampToEdgeWrapping</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>magFilter</strong>
+									</td>
+									<td class="description last">
+										<p>The mag filter value.</p>
+										<p>Default is <code>NearestFilter</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>minFilter</strong>
+									</td>
+									<td class="description last">
+										<p>The min filter value.</p>
+										<p>Default is <code>NearestFilter</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>anisotropy</strong>
+									</td>
+									<td class="description last">
+										<p>The anisotropy value.</p>
+										<p>Default is <code>Texture.DEFAULT_ANISOTROPY</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>format</strong>
+									</td>
+									<td class="description last">
+										<p>The texture format.</p>
+										<p>Default is <code>DepthFormat</code>.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<h2 class="subsection-title">Properties</h2>
+				<div class="member">
+					<h3 class="name" id="images" translate="no">.<a href="#images">images</a><span class="type-signature"> : Array.&lt;Image></span> </h3>
+					<div class="description">
+						<p>Alias for <a href="CubeDepthTexture.html#image">CubeDepthTexture#image</a>.</p>
+					</div>
+				</div>
+				<div class="member">
+					<h3 class="name" id="isCubeDepthTexture" translate="no">.<a href="#isCubeDepthTexture">isCubeDepthTexture</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
+					<div class="description">
+						<p>This flag can be used for type testing.</p>
+						<p>Default is <code>true</code>.</p>
+					</div>
+				</div>
+				<div class="member">
+					<h3 class="name" id="isCubeTexture" translate="no">.<a href="#isCubeTexture">isCubeTexture</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
+					<div class="description">
+						<p>Set to true for cube texture handling in WebGLTextures.</p>
+						<p>Default is <code>true</code>.</p>
+					</div>
+				</div>
+				<h2 class="subsection-title">Source</h2>
+				<p>
+					<a href="https://github.com/mrdoob/three.js/blob/master/src/textures/CubeDepthTexture.js" translate="no" target="_blank" rel="noopener">src/textures/CubeDepthTexture.js</a>
+				</p>
+			</article>
+		</section>
+<script src="../scripts/linenumber.js"></script>
+<script src="../scripts/page.js"></script>
+</body>
+</html>

+ 1 - 1
docs/pages/CubeTextureNode.html

@@ -120,7 +120,7 @@
 					<h3 class="name name-method" id="getInputType" translate="no">.<a href="#getInputType">getInputType</a><span class="signature">( builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span> )</span><span class="type-signature"> : string</span> </h3>
 					<div class="method">
 						<div class="description">
-							<p>Overwrites the default implementation to return a fixed value <code>'cubeTexture'</code>.</p>
+							<p>Overwrites the default implementation to return the appropriate cube texture type.</p>
 						</div>
 						<table class="params">
 							<tbody>

+ 1 - 1
docs/pages/DecalGeometry.html

@@ -67,7 +67,7 @@ scene.add( mesh );
 										<strong>size</strong>
 									</td>
 									<td class="description last">
-										<p>Tje scale of the decal projector.</p>
+										<p>The scale of the decal projector.</p>
 									</td>
 								</tr>
 							</tbody>

+ 42 - 0
docs/pages/GLSLNodeBuilder.html

@@ -633,6 +633,48 @@ against a reference value.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> The GLSL snippet that defines the enabled extensions.</dt>
 						</dl>
 					</div>
+					<h3 class="name name-method" id="getFloatPackingMethod" translate="no">.<a href="#getFloatPackingMethod">getFloatPackingMethod</a><span class="signature">( encoding : <span class="param-type">string</span> )</span><span class="type-signature"> : string</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Returns the float packing method name for a given numeric encoding.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>encoding</strong>
+									</td>
+									<td class="description last">
+										<p>The numeric encoding that describes how the float values are mapped to the integer range.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The resolved GLSL float packing method name.</dt>
+						</dl>
+					</div>
+					<h3 class="name name-method" id="getFloatUnpackingMethod" translate="no">.<a href="#getFloatUnpackingMethod">getFloatUnpackingMethod</a><span class="signature">( encoding : <span class="param-type">string</span> )</span><span class="type-signature"> : string</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Returns the float unpacking method name for a given numeric encoding.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>encoding</strong>
+									</td>
+									<td class="description last">
+										<p>The numeric encoding that describes how the integer values are mapped to the float range.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The resolved GLSL float unpacking method name.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="getFragCoord" translate="no">.<a href="#getFragCoord">getFragCoord</a><span class="signature">()</span><span class="type-signature"> : string</span> </h3>
 					<div class="method">
 						<div class="description">

+ 1 - 1
docs/pages/GTAONode.html

@@ -14,7 +14,7 @@
 		<section>
 			<header>
 				<div class="class-description"><p>Post processing node for applying Ground Truth Ambient Occlusion (GTAO) to a scene.</p>
-<p>Reference: <a href="https://www.activision.com/cdn/research/Practical_Real_Time_Strategies_for_Accurate_Indirect_Occlusion_NEW%2520VERSION_COLOR.pdf" target="_blank" rel="noopener">https://www.activision.com/cdn/research/Practical_Real_Time_Strategies_for_Accurate_Indirect_Occlusion_NEW%20VERSION_COLOR.pdf</a>.</p></div>
+<p>Reference: <a href="https://www.activision.com/cdn/research/Practical_Real_Time_Strategies_for_Accurate_Indirect_Occlusion_NEW%20VERSION_COLOR.pdf" target="_blank" rel="noopener">Practical Real-Time Strategies for Accurate Indirect Occlusion</a>.</p></div>
 				<h2>Code Example</h2>
 				<div translate="no"><pre><code class="language-js">const postProcessing = new THREE.PostProcessing( renderer );
 const scenePass = pass( scene, camera );

+ 14 - 2
docs/pages/InstanceNode.html

@@ -21,7 +21,7 @@ data.</p></div>
 			<article>
 				<div class="container-overview">
 					<h2>Constructor</h2>
-					<h3 class="name name-method" id="InstanceNode" translate="no">new <a href="#InstanceNode">InstanceNode</a><span class="signature">( count : <span class="param-type">number</span>, instanceMatrix : <span class="param-type"><a href="InstancedBufferAttribute.html">InstancedBufferAttribute</a></span>, instanceColor : <span class="param-type"><a href="InstancedBufferAttribute.html">InstancedBufferAttribute</a></span> )</span> </h3>
+					<h3 class="name name-method" id="InstanceNode" translate="no">new <a href="#InstanceNode">InstanceNode</a><span class="signature">( count : <span class="param-type">number</span>, instanceMatrix : <span class="param-type"><a href="InstancedBufferAttribute.html">InstancedBufferAttribute</a> | <a href="StorageInstancedBufferAttribute.html">StorageInstancedBufferAttribute</a></span>, instanceColor : <span class="param-type"><a href="InstancedBufferAttribute.html">InstancedBufferAttribute</a> | <a href="StorageInstancedBufferAttribute.html">StorageInstancedBufferAttribute</a></span> )</span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>Constructs a new instance node.</p>
@@ -101,6 +101,18 @@ data.</p></div>
 						<p>The node that represents the instance matrix data.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="isStorageColor" translate="no">.<a href="#isStorageColor">isStorageColor</a><span class="type-signature"> : boolean</span> </h3>
+					<div class="description">
+						<p>Tracks whether the color data is provided via a storage buffer.</p>
+					</div>
+				</div>
+				<div class="member">
+					<h3 class="name" id="isStorageMatrix" translate="no">.<a href="#isStorageMatrix">isStorageMatrix</a><span class="type-signature"> : boolean</span> </h3>
+					<div class="description">
+						<p>Tracks whether the matrix data is provided via a storage buffer.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="updateType" translate="no">.<a href="#updateType">updateType</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">
@@ -139,7 +151,7 @@ like with morph and skinning nodes.</p>
 					<h3 class="name name-method" id="update" translate="no">.<a href="#update">update</a><span class="signature">( frame : <span class="param-type"><a href="NodeFrame.html">NodeFrame</a></span> )</span> </h3>
 					<div class="method">
 						<div class="description">
-							<p>Checks if the internal buffers required an update.</p>
+							<p>Checks if the internal buffers require an update.</p>
 						</div>
 						<table class="params">
 							<tbody>

+ 1 - 1
docs/pages/JoltPhysics.html

@@ -58,7 +58,7 @@ to use the component with an active Internet connection.</p></div>
 										<strong>restitution</strong>
 									</td>
 									<td class="description last">
-										<p>The restitution/friction of the mesh.</p>
+										<p>The restitution of the mesh, usually from 0 to 1. Represents how &quot;bouncy&quot; objects are when they collide with each other.</p>
 										<p>Default is <code>0</code>.</p>
 									</td>
 								</tr>

+ 1 - 1
docs/pages/KeyframeTrack.html

@@ -85,7 +85,7 @@ of an object.</p></div>
 					</div>
 				</div>
 				<div class="member">
-					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : String</span> </h3>
+					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">
 						<p>The value type name.</p>
 						<p>Default is <code>''</code>.</p>

+ 28 - 1
docs/pages/LDrawLoader.html

@@ -14,7 +14,34 @@
 		<section>
 			<header>
 				<div class="class-description"><p>A loader for the LDraw format.</p>
-<p>[LDraw](https://ldraw.org/} (LEGO Draw) is an <a href="https://ldraw.org/article/218.html)" target="_blank" rel="noopener">open format specification</a> from 'three/addons/loaders/LDrawLoader.js';</code></pre>
+<p>[LDraw](https://ldraw.org/} (LEGO Draw) is an <a href="https://ldraw.org/article/218.html" target="_blank" rel="noopener">open format specification</a>
+for describing LEGO and other construction set 3D models.</p>
+<p>An LDraw asset (a text file usually with extension .ldr, .dat or .txt) can describe just a single construction
+piece, or an entire model. In the case of a model the LDraw file can reference other LDraw files, which are
+loaded from a library path set with <code>setPartsLibraryPath</code>. You usually download the LDraw official parts library,
+extract to a folder and point setPartsLibraryPath to it.</p>
+<p>Library parts will be loaded by trial and error in subfolders 'parts', 'p' and 'models'. These file accesses
+are not optimal for web environment, so a script tool has been made to pack an LDraw file with all its dependencies
+into a single file, which loads much faster. See section 'Packing LDraw models'. The LDrawLoader example loads
+several packed files. The official parts library is not included due to its large size.</p>
+<p><code>LDrawLoader</code> supports the following extensions:</p>
+<ul>
+<li>!COLOUR: Color and surface finish declarations.</li>
+<li>BFC: Back Face Culling specification.</li>
+<li>!CATEGORY: Model/part category declarations.</li>
+<li>!KEYWORDS: Model/part keywords declarations.</li>
+</ul></div>
+				<h2>Code Example</h2>
+				<div translate="no"><pre><code class="language-js">const loader = new LDrawLoader();
+loader.setConditionalLineMaterial( LDrawConditionalLineMaterial ); // the type of line material depends on the used renderer
+const object = await loader.loadAsync( 'models/ldraw/officialLibrary/models/car.ldr_Packed.mpd' );
+scene.add( object );
+</code></pre></div>
+			</header>
+			<article>
+				<h2 class="subsection-title">Import</h2>
+				<p><span translate="no">LDrawLoader</span> is an addon, and must be imported explicitly, see <a href="https://threejs.org/manual/#en/installation" target="_blank" rel="noopener">Installation#Addons</a>.</p>
+				<pre><code class="language-js">import { LDrawLoader } from 'three/addons/loaders/LDrawLoader.js';</code></pre>
 				<div class="container-overview">
 					<h2>Constructor</h2>
 					<h3 class="name name-method" id="LDrawLoader" translate="no">new <a href="#LDrawLoader">LDrawLoader</a><span class="signature">( manager : <span class="param-type"><a href="LoadingManager.html">LoadingManager</a></span> )</span> </h3>

+ 0 - 22
docs/pages/LightProbe.html

@@ -72,28 +72,6 @@ irradiance environment map.</p></div>
 						<p>A light probe uses spherical harmonics to encode lighting information.</p>
 					</div>
 				</div>
-				<h2 class="subsection-title">Methods</h2>
-					<h3 class="name name-method" id="fromJSON" translate="no">.<a href="#fromJSON">fromJSON</a><span class="signature">( json : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="LightProbe.html">LightProbe</a></span> </h3>
-					<div class="method">
-						<div class="description">
-							<p>Deserializes the light prove from the given JSON.</p>
-						</div>
-						<table class="params">
-							<tbody>
-								<tr>
-									<td class="name">
-										<strong>json</strong>
-									</td>
-									<td class="description last">
-										<p>The JSON holding the serialized light probe.</p>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-						<dl class="details">
-							<dt class="tag-returns"><strong>Returns:</strong> A reference to this light probe.</dt>
-						</dl>
-					</div>
 				<h2 class="subsection-title">Source</h2>
 				<p>
 					<a href="https://github.com/mrdoob/three.js/blob/master/src/lights/LightProbe.js" translate="no" target="_blank" rel="noopener">src/lights/LightProbe.js</a>

+ 0 - 2
docs/pages/LightShadow.html

@@ -142,8 +142,6 @@ geometry at a shallow angle. The cost is that shadows may appear distorted.</p>
 High values will cause unwanted banding effects in the shadows - a greater
 map size will allow for a higher value to be used here before these effects
 become visible.</p>
-<p>The property has no effect when the shadow map type is <code>PCFSoftShadowMap</code> and
-and it is recommended to increase softness by decreasing the shadow map size instead.</p>
 <p>The property has no effect when the shadow map type is <code>BasicShadowMap</code>.</p>
 						<p>Default is <code>1</code>.</p>
 					</div>

+ 1 - 1
docs/pages/Line.html

@@ -78,7 +78,7 @@ scene.add( line );
 					</div>
 				</div>
 				<div class="member">
-					<h3 class="name" id="morphTargetDictionary" translate="no">.<a href="#morphTargetDictionary">morphTargetDictionary</a><span class="type-signature"> : Object.&lt;String, number> | undefined</span> </h3>
+					<h3 class="name" id="morphTargetDictionary" translate="no">.<a href="#morphTargetDictionary">morphTargetDictionary</a><span class="type-signature"> : Object.&lt;string, number> | undefined</span> </h3>
 					<div class="description">
 						<p>A dictionary representing the morph targets in the geometry. The key is the
 morph targets name, the value its attribute index. This member is <code>undefined</code>

+ 1 - 1
docs/pages/MaterialLoader.html

@@ -13,7 +13,7 @@
 	<h1 translate="no">MaterialLoader</h1>
 		<section>
 			<header>
-				<div class="class-description"><p>Class for loading geometries. The files are internally
+				<div class="class-description"><p>Class for loading materials. The files are internally
 loaded via <a href="FileLoader.html">FileLoader</a>.</p>
 <p>This loader does not support node materials. Use <a href="NodeMaterialLoader.html">NodeMaterialLoader</a> instead.</p></div>
 				<h2>Code Example</h2>

+ 1 - 1
docs/pages/Mesh.html

@@ -81,7 +81,7 @@ Can only be used with <a href="WebGPURenderer.html">WebGPURenderer</a>.</p>
 					</div>
 				</div>
 				<div class="member">
-					<h3 class="name" id="morphTargetDictionary" translate="no">.<a href="#morphTargetDictionary">morphTargetDictionary</a><span class="type-signature"> : Object.&lt;String, number> | undefined</span> </h3>
+					<h3 class="name" id="morphTargetDictionary" translate="no">.<a href="#morphTargetDictionary">morphTargetDictionary</a><span class="type-signature"> : Object.&lt;string, number> | undefined</span> </h3>
 					<div class="description">
 						<p>A dictionary representing the morph targets in the geometry. The key is the
 morph targets name, the value its attribute index. This member is <code>undefined</code>

+ 21 - 0
docs/pages/NodeBuilder.html

@@ -1992,6 +1992,27 @@ This is necessary since the renderer cache can reuse shaders generated in one ma
 							<dt class="tag-returns"><strong>Returns:</strong> The builder's current context without material.</dt>
 						</dl>
 					</div>
+					<h3 class="name name-method" id="getSharedDataFromNode" translate="no">.<a href="#getSharedDataFromNode">getSharedDataFromNode</a><span class="signature">( node : <span class="param-type"><a href="Node.html">Node</a></span> )</span><span class="type-signature"> : Object</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Returns shared data object for the given node.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>node</strong>
+									</td>
+									<td class="description last">
+										<p>The node to get shared data from.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The shared data.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="getSignature" translate="no">.<a href="#getSignature">getSignature</a><span class="signature">()</span><span class="type-signature"> : string</span> </h3>
 					<div class="method">
 						<div class="description">

+ 7 - 0
docs/pages/NodeMaterial.html

@@ -113,6 +113,13 @@ values instead, use <a href="TSL.html#materialColor">materialColor</a>.</p>
 						<p>Default is <code>null</code>.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="contextNode" translate="no">.<a href="#contextNode">contextNode</a><span class="type-signature"> : <a href="ContextNode.html">ContextNode</a></span> </h3>
+					<div class="description">
+						<p>This node can be used as a global context management component for this material.</p>
+						<p>Default is <code>null</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="depthNode" translate="no">.<a href="#depthNode">depthNode</a><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;float></span> </h3>
 					<div class="description">

+ 7 - 0
docs/pages/NormalMapNode.html

@@ -70,6 +70,13 @@
 						<p>Default is <code>null</code>.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="unpackNormalMode" translate="no">.<a href="#unpackNormalMode">unpackNormalMode</a><span class="type-signature"> : string</span> </h3>
+					<div class="description">
+						<p>Controls how to unpack the sampled normal map values.</p>
+						<p>Default is <code>NoNormalPacking</code>.</p>
+					</div>
+				</div>
 				<h2 class="subsection-title">Source</h2>
 				<p>
 					<a href="https://github.com/mrdoob/three.js/blob/master/src/nodes/display/NormalMapNode.js" translate="no" target="_blank" rel="noopener">src/nodes/display/NormalMapNode.js</a>

+ 1 - 1
docs/pages/NumberKeyframeTrack.html

@@ -63,7 +63,7 @@
 				</div>
 				<h2 class="subsection-title">Properties</h2>
 				<div class="member">
-					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : String</span> </h3>
+					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">
 						<p>The value type name.</p>
 						<p>Default is <code>'number'</code>.</p>

+ 78 - 0
docs/pages/Octree.html

@@ -106,6 +106,28 @@ the bounds of the Octree.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> A reference to this Octree.</dt>
 						</dl>
 					</div>
+					<h3 class="name name-method" id="boxIntersect" translate="no">.<a href="#boxIntersect">boxIntersect</a><span class="signature">( box : <span class="param-type"><a href="Box3.html">Box3</a></span> )</span><span class="type-signature"> : Object | boolean</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Performs a bounding box intersection test with this Octree.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>box</strong>
+									</td>
+									<td class="description last">
+										<p>The bounding box to test.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The intersection object. If no intersection
+is detected, the method returns <code>false</code>.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="build" translate="no">.<a href="#build">build</a><span class="signature">()</span><span class="type-signature"> : <a href="Octree.html">Octree</a></span> </h3>
 					<div class="method">
 						<div class="description">
@@ -176,6 +198,32 @@ is detected, the method returns <code>false</code>.</dt>
 							<dt class="tag-returns"><strong>Returns:</strong> A reference to this Octree.</dt>
 						</dl>
 					</div>
+					<h3 class="name name-method" id="getBoxTriangles" translate="no">.<a href="#getBoxTriangles">getBoxTriangles</a><span class="signature">( box : <span class="param-type"><a href="Box3.html">Box3</a></span>, triangles : <span class="param-type">Array.&lt;<a href="Triangle.html">Triangle</a>></span> )</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Computes the triangles that potentially intersect with the given bounding box.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>box</strong>
+									</td>
+									<td class="description last">
+										<p>The bounding box.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>triangles</strong>
+									</td>
+									<td class="description last">
+										<p>The target array that holds the triangles.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
 					<h3 class="name name-method" id="getCapsuleTriangles" translate="no">.<a href="#getCapsuleTriangles">getCapsuleTriangles</a><span class="signature">( capsule : <span class="param-type"><a href="Capsule.html">Capsule</a></span>, triangles : <span class="param-type">Array.&lt;<a href="Triangle.html">Triangle</a>></span> )</span> </h3>
 					<div class="method">
 						<div class="description">
@@ -320,6 +368,36 @@ building the Octree.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> A reference to this Octree.</dt>
 						</dl>
 					</div>
+					<h3 class="name name-method" id="triangleBoxIntersect" translate="no">.<a href="#triangleBoxIntersect">triangleBoxIntersect</a><span class="signature">( box : <span class="param-type"><a href="Box3.html">Box3</a></span>, triangle : <span class="param-type"><a href="Triangle.html">Triangle</a></span> )</span><span class="type-signature"> : Object | false</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Computes the intersection between the given bounding box and triangle.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>box</strong>
+									</td>
+									<td class="description last">
+										<p>The bounding box to test.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>triangle</strong>
+									</td>
+									<td class="description last">
+										<p>The triangle to test.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The intersection object. If no intersection
+is detected, the method returns <code>false</code>.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="triangleCapsuleIntersect" translate="no">.<a href="#triangleCapsuleIntersect">triangleCapsuleIntersect</a><span class="signature">( capsule : <span class="param-type"><a href="Capsule.html">Capsule</a></span>, triangle : <span class="param-type"><a href="Triangle.html">Triangle</a></span> )</span><span class="type-signature"> : Object | false</span> </h3>
 					<div class="method">
 						<div class="description">

+ 7 - 0
docs/pages/OutputPass.html

@@ -37,6 +37,13 @@ composer.addPass( outputPass );
 					</div>
 				</div>
 				<h2 class="subsection-title">Properties</h2>
+				<div class="member">
+					<h3 class="name" id="isOutputPass" translate="no">.<a href="#isOutputPass">isOutputPass</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
+					<div class="description">
+						<p>This flag indicates that this is an output pass.</p>
+						<p>Default is <code>true</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="material" translate="no">.<a href="#material">material</a><span class="type-signature"> : <a href="RawShaderMaterial.html">RawShaderMaterial</a></span> </h3>
 					<div class="description">

+ 0 - 45
docs/pages/PCDLoader.html

@@ -64,51 +64,6 @@ scene.add( points );
 					</div>
 				</div>
 				<h2 class="subsection-title">Methods</h2>
-					<h3 class="name name-method" id="_getDataView" translate="no">.<a href="#_getDataView">_getDataView</a><span class="signature">( dataview : <span class="param-type">DataView</span>, offset : <span class="param-type">number</span>, type : <span class="param-type">'F' | 'U' | 'I'</span>, size : <span class="param-type">number</span> )</span><span class="type-signature"> : number</span> </h3>
-					<div class="method">
-						<div class="description">
-							<p>Get dataview value by field type and size.</p>
-						</div>
-						<table class="params">
-							<tbody>
-								<tr>
-									<td class="name">
-										<strong>dataview</strong>
-									</td>
-									<td class="description last">
-										<p>The DataView to read from.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>offset</strong>
-									</td>
-									<td class="description last">
-										<p>The offset to start reading from.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>type</strong>
-									</td>
-									<td class="description last">
-										<p>Field type.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>size</strong>
-									</td>
-									<td class="description last">
-										<p>Field size.</p>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-						<dl class="details">
-							<dt class="tag-returns"><strong>Returns:</strong> Field value.</dt>
-						</dl>
-					</div>
 					<h3 class="name name-method" id="load" translate="no">.<a href="#load">load</a><span class="signature">( url : <span class="param-type">string</span>, onLoad : <span class="param-type">function</span>, onProgress : <span class="param-type"><a href="global.html#onProgressCallback">onProgressCallback</a></span>, onError : <span class="param-type"><a href="global.html#onErrorCallback">onErrorCallback</a></span> )</span> </h3>
 					<div class="method">
 						<div class="description">

+ 1 - 1
docs/pages/PMREMGenerator.html

@@ -200,7 +200,7 @@ and far planes ensure the scene is rendered in its entirety.</p>
 								</tr>
 								<tr>
 									<td class="name">
-										<strong>renderTarget</strong>
+										<strong>position</strong>
 									</td>
 									<td class="description last">
 										<p>The position of the internal cube camera that renders the scene.</p>

+ 74 - 0
docs/pages/PackFloatNode.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="utf-8">
+	<title>PackFloatNode - Three.js Docs</title>
+	<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+	<script src="../scripts/highlight.min.js"></script>
+	<link type="text/css" rel="stylesheet" href="../styles/highlight-three.css">
+	<link type="text/css" rel="stylesheet" href="../styles/page.css">
+</head>
+<body>
+		<p class="inheritance" translate="no"><a href="EventDispatcher.html">EventDispatcher</a> → <a href="Node.html">Node</a> → <a href="TempNode.html">TempNode</a> → </p>
+	<h1 translate="no">PackFloatNode</h1>
+		<section>
+			<header>
+				<div class="class-description"><p>This node represents an operation that packs floating-point values of a vector into an unsigned 32-bit integer</p></div>
+			</header>
+			<article>
+				<div class="container-overview">
+					<h2>Constructor</h2>
+					<h3 class="name name-method" id="PackFloatNode" translate="no">new <a href="#PackFloatNode">PackFloatNode</a><span class="signature">( encoding : <span class="param-type">'snorm' | 'unorm' | 'float16'</span>, vectorNode : <span class="param-type"><a href="Node.html">Node</a></span> )</span> </h3>
+					<div class="method">
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>encoding</strong>
+									</td>
+									<td class="description last">
+										<p>The numeric encoding that describes how the float values are mapped to the integer range.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>vectorNode</strong>
+									</td>
+									<td class="description last">
+										<p>The vector node to be packed</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<h2 class="subsection-title">Properties</h2>
+				<div class="member">
+					<h3 class="name" id="encoding" translate="no">.<a href="#encoding">encoding</a><span class="type-signature"> : string</span> </h3>
+					<div class="description">
+						<p>The numeric encoding.</p>
+					</div>
+				</div>
+				<div class="member">
+					<h3 class="name" id="isPackFloatNode" translate="no">.<a href="#isPackFloatNode">isPackFloatNode</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
+					<div class="description">
+						<p>This flag can be used for type testing.</p>
+						<p>Default is <code>true</code>.</p>
+					</div>
+				</div>
+				<div class="member">
+					<h3 class="name" id="vectorNode" translate="no">.<a href="#vectorNode">vectorNode</a><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="description">
+						<p>The vector to be packed.</p>
+					</div>
+				</div>
+				<h2 class="subsection-title">Source</h2>
+				<p>
+					<a href="https://github.com/mrdoob/three.js/blob/master/src/nodes/math/PackFloatNode.js" translate="no" target="_blank" rel="noopener">src/nodes/math/PackFloatNode.js</a>
+				</p>
+			</article>
+		</section>
+<script src="../scripts/linenumber.js"></script>
+<script src="../scripts/page.js"></script>
+</body>
+</html>

+ 26 - 0
docs/pages/PassNode.html

@@ -75,6 +75,12 @@ postProcessing.outputNode = scenePass;
 						<p>A reference to the camera.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="contextNode" translate="no">.<a href="#contextNode">contextNode</a><span class="type-signature"> : <a href="ContextNode.html">ContextNode</a> | null</span> </h3>
+					<div class="description">
+						<p>An optional global context for the pass.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="global" translate="no">.<a href="#global">global</a><span class="type-signature"> : boolean</span> </h3>
 					<div class="description">
@@ -92,12 +98,25 @@ postProcessing.outputNode = scenePass;
 						<p>Default is <code>true</code>.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="opaque" translate="no">.<a href="#opaque">opaque</a><span class="type-signature"> : boolean</span> </h3>
+					<div class="description">
+						<p>Whether the pass is opaque.</p>
+						<p>Default is <code>true</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="options" translate="no">.<a href="#options">options</a><span class="type-signature"> : Object</span> </h3>
 					<div class="description">
 						<p>Options for the internal render target.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="overrideMaterial" translate="no">.<a href="#overrideMaterial">overrideMaterial</a><span class="type-signature"> : <a href="Material.html">Material</a> | null</span> </h3>
+					<div class="description">
+						<p>An optional override material for the pass.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="renderTarget" translate="no">.<a href="#renderTarget">renderTarget</a><span class="type-signature"> : <a href="RenderTarget.html">RenderTarget</a></span> </h3>
 					<div class="description">
@@ -116,6 +135,13 @@ postProcessing.outputNode = scenePass;
 						<p>The scope of the pass. The scope determines whether the node outputs color or depth.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="transparent" translate="no">.<a href="#transparent">transparent</a><span class="type-signature"> : boolean</span> </h3>
+					<div class="description">
+						<p>Whether the pass is transparent.</p>
+						<p>Default is <code>false</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="updateBeforeType" translate="no">.<a href="#updateBeforeType">updateBeforeType</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">

+ 14 - 0
docs/pages/PhysicalLightingModel.html

@@ -140,6 +140,20 @@
 						<p>Default is <code>null</code>.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="iridescenceF0Dielectric" translate="no">.<a href="#iridescenceF0Dielectric">iridescenceF0Dielectric</a><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="description">
+						<p>The iridescence F0 dielectric.</p>
+						<p>Default is <code>null</code>.</p>
+					</div>
+				</div>
+				<div class="member">
+					<h3 class="name" id="iridescenceF0Metallic" translate="no">.<a href="#iridescenceF0Metallic">iridescenceF0Metallic</a><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="description">
+						<p>The iridescence F0 metallic.</p>
+						<p>Default is <code>null</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="iridescenceFresnel" translate="no">.<a href="#iridescenceFresnel">iridescenceFresnel</a><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
 					<div class="description">

+ 0 - 6
docs/pages/PixelationNode.html

@@ -78,12 +78,6 @@
 					</div>
 				</div>
 				<h2 class="subsection-title">Properties</h2>
-				<div class="member">
-					<h3 class="name" id="_resolution" translate="no">.<a href="#_resolution">_resolution</a><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;vec4></span> </h3>
-					<div class="description">
-						<p>Uniform node that represents the resolution.</p>
-					</div>
-				</div>
 				<div class="member">
 					<h3 class="name" id="depthEdgeStrength" translate="no">.<a href="#depthEdgeStrength">depthEdgeStrength</a><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;float></span> </h3>
 					<div class="description">

+ 1 - 1
docs/pages/PointLightHelper.html

@@ -73,7 +73,7 @@ If not set, the helper will take the color of the light.</p>
 					</div>
 				</div>
 				<div class="member">
-					<h3 class="name" id="light" translate="no">.<a href="#light">light</a><span class="type-signature"> : <a href="HemisphereLight.html">HemisphereLight</a></span> </h3>
+					<h3 class="name" id="light" translate="no">.<a href="#light">light</a><span class="type-signature"> : <a href="PointLight.html">PointLight</a></span> </h3>
 					<div class="description">
 						<p>The light being visualized.</p>
 					</div>

+ 0 - 31
docs/pages/PointLightShadow.html

@@ -33,37 +33,6 @@
 						<p>Default is <code>true</code>.</p>
 					</div>
 				</div>
-				<h2 class="subsection-title">Methods</h2>
-					<h3 class="name name-method" id="updateMatrices" translate="no">.<a href="#updateMatrices">updateMatrices</a><span class="signature">( light : <span class="param-type"><a href="Light.html">Light</a></span>, viewportIndex : <span class="param-type">number</span> )</span> </h3>
-					<div class="method">
-						<div class="description">
-							<p>Update the matrices for the camera and shadow, used internally by the renderer.</p>
-						</div>
-						<table class="params">
-							<tbody>
-								<tr>
-									<td class="name">
-										<strong>light</strong>
-									</td>
-									<td class="description last">
-										<p>The light for which the shadow is being rendered.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>viewportIndex</strong>
-									</td>
-									<td class="description last">
-										<p>The viewport index.</p>
-										<p>Default is <code>0</code>.</p>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-						<dl class="details">
-							<dt class="tag-overrides"><strong>Overrides:</strong> <a href="LightShadow.html#updateMatrices">LightShadow#updateMatrices</a></dt>
-						</dl>
-					</div>
 				<h2 class="subsection-title">Source</h2>
 				<p>
 					<a href="https://github.com/mrdoob/three.js/blob/master/src/lights/PointLightShadow.js" translate="no" target="_blank" rel="noopener">src/lights/PointLightShadow.js</a>

+ 30 - 9
docs/pages/PointShadowNode.html

@@ -94,6 +94,35 @@ rendering code.</p>
 							<dt class="tag-overrides"><strong>Overrides:</strong> <a href="ShadowNode.html#renderShadow">ShadowNode#renderShadow</a></dt>
 						</dl>
 					</div>
+					<h3 class="name name-method" id="setupRenderTarget" translate="no">.<a href="#setupRenderTarget">setupRenderTarget</a><span class="signature">( shadow : <span class="param-type"><a href="LightShadow.html">LightShadow</a></span>, builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span> )</span><span class="type-signature"> : Object</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Overwrites the default implementation to create a CubeRenderTarget with CubeDepthTexture.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>shadow</strong>
+									</td>
+									<td class="description last">
+										<p>The light shadow object.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>builder</strong>
+									</td>
+									<td class="description last">
+										<p>A reference to the current node builder.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> An object containing the shadow map and depth texture.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="setupShadowCoord" translate="no">.<a href="#setupShadowCoord">setupShadowCoord</a><span class="signature">( builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span>, shadowPosition : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec3></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;vec3></span> </h3>
 					<div class="method">
 						<div class="description">
@@ -158,20 +187,12 @@ shadow filter functions.</p>
 										<p>This function defines the filtering type of the shadow map e.g. PCF.</p>
 									</td>
 								</tr>
-								<tr>
-									<td class="name">
-										<strong>shadowTexture</strong>
-									</td>
-									<td class="description last">
-										<p>A reference to the shadow map's texture.</p>
-									</td>
-								</tr>
 								<tr>
 									<td class="name">
 										<strong>depthTexture</strong>
 									</td>
 									<td class="description last">
-										<p>A reference to the shadow map's texture data.</p>
+										<p>A reference to the shadow map's depth texture.</p>
 									</td>
 								</tr>
 								<tr>

+ 1 - 1
docs/pages/Points.html

@@ -67,7 +67,7 @@
 					</div>
 				</div>
 				<div class="member">
-					<h3 class="name" id="morphTargetDictionary" translate="no">.<a href="#morphTargetDictionary">morphTargetDictionary</a><span class="type-signature"> : Object.&lt;String, number> | undefined</span> </h3>
+					<h3 class="name" id="morphTargetDictionary" translate="no">.<a href="#morphTargetDictionary">morphTargetDictionary</a><span class="type-signature"> : Object.&lt;string, number> | undefined</span> </h3>
 					<div class="description">
 						<p>A dictionary representing the morph targets in the geometry. The key is the
 morph targets name, the value its attribute index. This member is <code>undefined</code>

+ 1 - 1
docs/pages/QuaternionKeyframeTrack.html

@@ -63,7 +63,7 @@
 				</div>
 				<h2 class="subsection-title">Properties</h2>
 				<div class="member">
-					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : String</span> </h3>
+					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">
 						<p>The value type name.</p>
 						<p>Default is <code>'quaternion'</code>.</p>

+ 1 - 1
docs/pages/RapierPhysics.html

@@ -139,7 +139,7 @@ to use the component with an active Internet connection.</p></div>
 										<strong>restitution</strong>
 									</td>
 									<td class="description last">
-										<p>The restitution/friction of the mesh.</p>
+										<p>The restitution of the mesh, usually from 0 to 1. Represents how &quot;bouncy&quot; objects are when they collide with each other.</p>
 										<p>Default is <code>0</code>.</p>
 									</td>
 								</tr>

+ 2 - 2
docs/pages/Raycaster.html

@@ -77,7 +77,7 @@ is set when calling <code>setFromCamera()</code>.</p>
 				<div class="member">
 					<h3 class="name" id="far" translate="no">.<a href="#far">far</a><span class="type-signature"> : number</span> </h3>
 					<div class="description">
-						<p>All results returned are further away than near. Near can't be negative.</p>
+						<p>All results returned are closer than far. Far can't be lower than near.</p>
 						<p>Default is <code>Infinity</code>.</p>
 					</div>
 				</div>
@@ -375,7 +375,7 @@ intersection to the nearest point on the ray. For other objects it will be <code
 		</tr>
 		<tr>
 				<td class="name">
-					<strong>uv1</strong>
+					<strong>normal</strong>
 						<br>
 <span class="param-type"><a href="Vector3.html">Vector3</a></span>
 				</td>

+ 7 - 0
docs/pages/RenderPass.html

@@ -119,6 +119,13 @@ for all objects in the scene.</p>
 						<p>Default is <code>false</code>.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="isRenderPass" translate="no">.<a href="#isRenderPass">isRenderPass</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
+					<div class="description">
+						<p>This flag indicates that this pass renders the scene itself.</p>
+						<p>Default is <code>true</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="needsSwap" translate="no">.<a href="#needsSwap">needsSwap</a><span class="type-signature"> : boolean</span> </h3>
 					<div class="description">

+ 44 - 122
docs/pages/Renderer.html

@@ -91,6 +91,27 @@ should clear the stencil buffer.</p>
 						<p>A reference to the current backend.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="contextNode" translate="no">.<a href="#contextNode">contextNode</a><span class="type-signature"> : <a href="ContextNode.html">ContextNode</a></span> </h3>
+					<div class="description">
+						<p>A global context node that stores override nodes for specific transformations or calculations.
+These nodes can be used to replace default behavior in the rendering pipeline.</p>
+					</div>
+<table class="props">
+	<tbody>
+		<tr>
+				<td class="name">
+					<strong>value</strong>
+						<br>
+<span class="param-type">Object</span>
+				</td>
+			<td class="description last">
+				<p>The context value object.</p>
+			</td>
+		</tr>
+	</tbody>
+</table>
+				</div>
 				<div class="member">
 					<h3 class="name" id="coordinateSystem" translate="no">.<a href="#coordinateSystem">coordinateSystem</a><span class="type-signature"> : number</span> <span class="type-signature">(readonly) </span></h3>
 					<div class="description">
@@ -171,9 +192,9 @@ and the rendering process. Useful for debugging and monitoring.</p>
 					</div>
 				</div>
 				<div class="member">
-					<h3 class="name" id="inspector" translate="no">.<a href="#inspector">inspector</a> </h3>
+					<h3 class="name" id="inspector" translate="no">.<a href="#inspector">inspector</a><span class="type-signature"> : <a href="InspectorBase.html">InspectorBase</a></span> </h3>
 					<div class="description">
-						<p>Sets the inspector instance. The inspector can be any class that extends from <code>InspectorBase</code>.</p>
+						<p>The inspector instance. The inspector can be any class that extends from <code>InspectorBase</code>.</p>
 					</div>
 				</div>
 				<div class="member">
@@ -239,37 +260,6 @@ If this is the case, the renderer allocates an internal render target for that p
 						<p>Default is <code>SRGBColorSpace</code>.</p>
 					</div>
 				</div>
-				<div class="member">
-					<h3 class="name" id="overrideNodes" translate="no">.<a href="#overrideNodes">overrideNodes</a><span class="type-signature"> : Object</span> </h3>
-					<div class="description">
-						<p>Stores override nodes for specific transformations or calculations.
-These nodes can be used to replace default behavior in the rendering pipeline.</p>
-					</div>
-<table class="props">
-	<tbody>
-		<tr>
-				<td class="name">
-					<strong>modelViewMatrix</strong>
-						<br>
-<span class="param-type"><a href="Node.html">Node</a></span>
-				</td>
-			<td class="description last">
-				<p>An override node for the model-view matrix.</p>
-			</td>
-		</tr>
-		<tr>
-				<td class="name">
-					<strong>modelNormalViewMatrix</strong>
-						<br>
-<span class="param-type"><a href="Node.html">Node</a></span>
-				</td>
-			<td class="description last">
-				<p>An override node for the model normal view matrix.</p>
-			</td>
-		</tr>
-	</tbody>
-</table>
-				</div>
 				<div class="member">
 					<h3 class="name" id="samples" translate="no">.<a href="#samples">samples</a><span class="type-signature"> : number</span> </h3>
 					<div class="description">
@@ -329,86 +319,6 @@ e.g. manually determining each object's rendering order.</p>
 					</div>
 				</div>
 				<h2 class="subsection-title">Methods</h2>
-					<h3 class="name name-method" id="_getShadowNodes" translate="no">.<a href="#_getShadowNodes">_getShadowNodes</a><span class="signature">( material : <span class="param-type"><a href="Material.html">Material</a></span> )</span><span class="type-signature"> : Object</span> </h3>
-					<div class="method">
-						<div class="description">
-							<p>Retrieves shadow nodes for the given material. This is used to setup shadow passes.
-The result is cached per material and updated when the material's version changes.</p>
-						</div>
-						<table class="params">
-							<tbody>
-								<tr>
-									<td class="name">
-										<strong>material</strong>
-									</td>
-									<td class="description last">
-									</td>
-								</tr>
-							</tbody>
-						</table>
-						<dl class="details">
-							<dt class="tag-returns"><strong>Returns:</strong> <ul>
-<li>The shadow nodes for the material.</li>
-</ul></dt>
-						</dl>
-					</div>
-					<h3 class="name name-method" id="_projectObject" translate="no">.<a href="#_projectObject">_projectObject</a><span class="signature">( object : <span class="param-type"><a href="Object3D.html">Object3D</a></span>, camera : <span class="param-type"><a href="Camera.html">Camera</a></span>, groupOrder : <span class="param-type">number</span>, renderList : <span class="param-type"><a href="RenderList.html">RenderList</a></span>, clippingContext : <span class="param-type"><a href="ClippingContext.html">ClippingContext</a></span> )</span> </h3>
-					<div class="method">
-						<div class="description">
-							<p>Analyzes the given 3D object's hierarchy and builds render lists from the
-processed hierarchy.</p>
-						</div>
-						<table class="params">
-							<tbody>
-								<tr>
-									<td class="name">
-										<strong>object</strong>
-									</td>
-									<td class="description last">
-										<p>The 3D object to process (usually a scene).</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>camera</strong>
-									</td>
-									<td class="description last">
-										<p>The camera the object is rendered with.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>groupOrder</strong>
-									</td>
-									<td class="description last">
-										<p>The group order is derived from the <code>renderOrder</code> of groups and is used to group 3D objects within groups.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>renderList</strong>
-									</td>
-									<td class="description last">
-										<p>The current render list.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>clippingContext</strong>
-									</td>
-									<td class="description last">
-										<p>The current clipping context.</p>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-					</div>
-					<h3 class="name name-method" id="_resetXRState" translate="no">.<a href="#_resetXRState">_resetXRState</a><span class="signature">()</span> </h3>
-					<div class="method">
-						<div class="description">
-							<p>Resets the renderer to the initial state before WebXR started.</p>
-						</div>
-					</div>
 					<h3 class="name name-method" id="clear" translate="no">.<a href="#clear">clear</a><span class="signature">( color : <span class="param-type">boolean</span>, depth : <span class="param-type">boolean</span>, stencil : <span class="param-type">boolean</span> )</span> </h3>
 					<div class="method">
 						<div class="description">
@@ -580,7 +490,7 @@ processed hierarchy.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> A Promise that resolves when the compile has been finished.</dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="compileAsync" translate="no">.<a href="#compileAsync">compileAsync</a><span class="signature">( scene : <span class="param-type"><a href="Object3D.html">Object3D</a></span>, camera : <span class="param-type"><a href="Camera.html">Camera</a></span>, targetScene : <span class="param-type"><a href="Scene.html">Scene</a></span> )</span><span class="type-signature"> : Promise.&lt;(Array|undefined)></span> <span class="type-signature">(async) </span></h3>
+					<h3 class="name name-method" id="compileAsync" translate="no">.<a href="#compileAsync">compileAsync</a><span class="signature">( scene : <span class="param-type"><a href="Object3D.html">Object3D</a></span>, camera : <span class="param-type"><a href="Camera.html">Camera</a></span>, targetScene : <span class="param-type"><a href="Scene.html">Scene</a></span> )</span><span class="type-signature"> : Promise</span> <span class="type-signature">(async) </span></h3>
 					<div class="method">
 						<div class="description">
 							<p>Compiles all materials in the given scene. This can be useful to avoid a
@@ -897,10 +807,13 @@ from the GPU to the CPU in context of compute shaders.</p>
 					<h3 class="name name-method" id="getColorBufferType" translate="no">.<a href="#getColorBufferType">getColorBufferType</a><span class="signature">()</span><span class="type-signature"> : number</span> </h3>
 					<div class="method">
 						<div class="description">
-							<p>Returns the color buffer type.</p>
+							<p>Returns the output buffer type.</p>
 						</div>
 						<dl class="details">
-							<dt class="tag-returns"><strong>Returns:</strong> The color buffer type.</dt>
+							<dt class="important tag-deprecated"><strong>Deprecated:</strong> since r182. Use `.getOutputBufferType()` instead.</dt>
+						</dl>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The output buffer type.</dt>
 						</dl>
 					</div>
 					<h3 class="name name-method" id="getContext" translate="no">.<a href="#getContext">getContext</a><span class="signature">()</span><span class="type-signature"> : GPUCanvasContext | WebGL2RenderingContext</span> </h3>
@@ -951,6 +864,15 @@ from the GPU to the CPU in context of compute shaders.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> The maximum available anisotropy.</dt>
 						</dl>
 					</div>
+					<h3 class="name name-method" id="getOutputBufferType" translate="no">.<a href="#getOutputBufferType">getOutputBufferType</a><span class="signature">()</span><span class="type-signature"> : number</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Returns the output buffer type.</p>
+						</div>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The output buffer type.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="getOutputRenderTarget" translate="no">.<a href="#getOutputRenderTarget">getOutputRenderTarget</a><span class="signature">()</span><span class="type-signature"> : <a href="RenderTarget.html">RenderTarget</a></span> </h3>
 					<div class="method">
 						<div class="description">
@@ -1724,7 +1646,7 @@ Use <code>null</code> as the first argument to reset the state.</p>
 										<strong>x</strong>
 									</td>
 									<td class="description last">
-										<p>The horizontal coordinate for the lower left corner of the box in logical pixel unit.
+										<p>The horizontal coordinate for the upper left corner of the box in logical pixel unit.
 Instead of passing four arguments, the method also works with a single four-dimensional vector.</p>
 									</td>
 								</tr>
@@ -1733,7 +1655,7 @@ Instead of passing four arguments, the method also works with a single four-dime
 										<strong>y</strong>
 									</td>
 									<td class="description last">
-										<p>The vertical coordinate for the lower left corner of the box in logical pixel unit.</p>
+										<p>The vertical coordinate for the upper left corner of the box in logical pixel unit.</p>
 									</td>
 								</tr>
 								<tr>
@@ -1839,7 +1761,7 @@ Pass <code>null</code> to use the default sort.</p>
 										<strong>x</strong>
 									</td>
 									<td class="description last">
-										<p>The horizontal coordinate for the lower left corner of the viewport origin in logical pixel unit.</p>
+										<p>The horizontal coordinate for the upper left corner of the viewport origin in logical pixel unit.</p>
 									</td>
 								</tr>
 								<tr>
@@ -1847,7 +1769,7 @@ Pass <code>null</code> to use the default sort.</p>
 										<strong>y</strong>
 									</td>
 									<td class="description last">
-										<p>The vertical coordinate for the lower left corner of the viewport origin  in logical pixel unit.</p>
+										<p>The vertical coordinate for the upper left corner of the viewport origin  in logical pixel unit.</p>
 									</td>
 								</tr>
 								<tr>
@@ -1988,12 +1910,12 @@ to overwrite the default.</p>
 		</tr>
 		<tr>
 				<td class="name">
-					<strong>colorBufferType</strong>
+					<strong>outputBufferType</strong>
 						<br>
 <span class="param-type">number</span>
 				</td>
 			<td class="description last">
-				<p>Defines the type of color buffers. The default <code>HalfFloatType</code> is recommend for best
+				<p>Defines the type of output buffers. The default <code>HalfFloatType</code> is recommend for best
 quality. To save memory and bandwidth, <code>UnsignedByteType</code> might be used. This will reduce rendering quality though.</p>
 						<p>Default is <code>HalfFloatType</code>.</p>
 			</td>

+ 0 - 24
docs/pages/SSGINode.html

@@ -88,30 +88,6 @@ count then to mitigate the performance lost.</p>
 					</div>
 				</div>
 				<h2 class="subsection-title">Properties</h2>
-				<div class="member">
-					<h3 class="name" id="_halfProjScale" translate="no">.<a href="#_halfProjScale">_halfProjScale</a><span class="type-signature"> : <a href="UniformNode.html">UniformNode</a>.&lt;vec2></span> </h3>
-					<div class="description">
-						<p>Used to compute the effective step radius when viewSpaceSampling is <code>false</code>.</p>
-					</div>
-				</div>
-				<div class="member">
-					<h3 class="name" id="_resolution" translate="no">.<a href="#_resolution">_resolution</a><span class="type-signature"> : <a href="UniformNode.html">UniformNode</a>.&lt;vec2></span> </h3>
-					<div class="description">
-						<p>The resolution of the effect.</p>
-					</div>
-				</div>
-				<div class="member">
-					<h3 class="name" id="_temporalDirection" translate="no">.<a href="#_temporalDirection">_temporalDirection</a><span class="type-signature"> : <a href="UniformNode.html">UniformNode</a>.&lt;float></span> </h3>
-					<div class="description">
-						<p>Temporal direction that influences the rotation angle for each slice.</p>
-					</div>
-				</div>
-				<div class="member">
-					<h3 class="name" id="_temporalOffset" translate="no">.<a href="#_temporalOffset">_temporalOffset</a><span class="type-signature"> : <a href="UniformNode.html">UniformNode</a>.&lt;float></span> </h3>
-					<div class="description">
-						<p>Temporal offset added to the initial ray step.</p>
-					</div>
-				</div>
 				<div class="member">
 					<h3 class="name" id="aoIntensity" translate="no">.<a href="#aoIntensity">aoIntensity</a><span class="type-signature"> : <a href="UniformNode.html">UniformNode</a>.&lt;float></span> </h3>
 					<div class="description">

+ 1 - 13
docs/pages/SSSNode.html

@@ -83,18 +83,6 @@ const sssBlur = boxBlur( sssPass.r, { size: 2, separation: 1 } ); // optional bl
 					</div>
 				</div>
 				<h2 class="subsection-title">Properties</h2>
-				<div class="member">
-					<h3 class="name" id="_frameId" translate="no">.<a href="#_frameId">_frameId</a><span class="type-signature"> : <a href="UniformNode.html">UniformNode</a>.&lt;uint></span> </h3>
-					<div class="description">
-						<p>The frame ID use when temporal filtering is enabled.</p>
-					</div>
-				</div>
-				<div class="member">
-					<h3 class="name" id="_temporalOffset" translate="no">.<a href="#_temporalOffset">_temporalOffset</a><span class="type-signature"> : <a href="UniformNode.html">UniformNode</a>.&lt;float></span> </h3>
-					<div class="description">
-						<p>Temporal offset added to the initial ray step.</p>
-					</div>
-				</div>
 				<div class="member">
 					<h3 class="name" id="depthNode" translate="no">.<a href="#depthNode">depthNode</a><span class="type-signature"> : <a href="TextureNode.html">TextureNode</a></span> </h3>
 					<div class="description">
@@ -135,7 +123,7 @@ the effect is computed in half-resolution.</p>
 					<h3 class="name" id="shadowIntensity" translate="no">.<a href="#shadowIntensity">shadowIntensity</a><span class="type-signature"> : <a href="UniformNode.html">UniformNode</a>.&lt;float></span> </h3>
 					<div class="description">
 						<p>Shadow intensity. Must be in the range <code>[0, 1]</code>.</p>
-						<p>Default is <code>0.5</code>.</p>
+						<p>Default is <code>1.0</code>.</p>
 					</div>
 				</div>
 				<div class="member">

+ 0 - 7
docs/pages/ScreenNode.html

@@ -40,13 +40,6 @@ resolution or viewport data as well as fragment or uv coordinates.</p></div>
 					</div>
 				</div>
 				<h2 class="subsection-title">Properties</h2>
-				<div class="member">
-					<h3 class="name" id="_output" translate="no">.<a href="#_output">_output</a><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
-					<div class="description">
-						<p>This output node.</p>
-						<p>Default is <code>null</code>.</p>
-					</div>
-				</div>
 				<div class="member">
 					<h3 class="name" id="isViewportNode" translate="no">.<a href="#isViewportNode">isViewportNode</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
 					<div class="description">

+ 11 - 1
docs/pages/ShaderMaterial.html

@@ -122,8 +122,18 @@ yields another directive.</p>
 				<div class="member">
 					<h3 class="name" id="fog" translate="no">.<a href="#fog">fog</a><span class="type-signature"> : boolean</span> </h3>
 					<div class="description">
-						<p>Define whether the material color is affected by global fog settings; <code>true</code>
+						<p>Defines whether the material color is affected by global fog settings; <code>true</code>
 to pass fog uniforms to the shader.</p>
+<p>Setting this property to <code>true</code> requires the definition of fog uniforms. It is
+recommended to use <code>UniformsUtils.merge()</code> to combine the custom shader uniforms
+with predefined fog uniforms.</p>
+<pre><code class="language-js">const material = new ShaderMaterial( {
+    uniforms: UniformsUtils.merge( [ UniformsLib[ 'fog' ], shaderUniforms ] );
+    vertexShader: vertexShader,
+    fragmentShader: fragmentShader,
+    fog: true
+} );
+</code></pre>
 						<p>Default is <code>false</code>.</p>
 					</div>
 				</div>

+ 8 - 0
docs/pages/Skeleton.html

@@ -88,6 +88,14 @@ in the vertex shader.</p>
 						<p>An array of bones defining the skeleton.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="previousBoneMatrices" translate="no">.<a href="#previousBoneMatrices">previousBoneMatrices</a><span class="type-signature"> : Float32Array</span> </h3>
+					<div class="description">
+						<p>An array buffer holding the bone data of the previous frame.
+Required for computing velocity. Maintained in <a href="SkinningNode.html">SkinningNode</a>.</p>
+						<p>Default is <code>null</code>.</p>
+					</div>
+				</div>
 				<h2 class="subsection-title">Methods</h2>
 					<h3 class="name name-method" id="calculateInverses" translate="no">.<a href="#calculateInverses">calculateInverses</a><span class="signature">()</span> </h3>
 					<div class="method">

+ 12 - 2
docs/pages/SkyMesh.html

@@ -15,8 +15,8 @@
 			<header>
 				<div class="class-description"><p>Represents a skydome for scene backgrounds. Based on <a href="https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight" target="_blank" rel="noopener">A Practical Analytic Model for Daylight</a>
 aka The Preetham Model, the de facto standard for analytical skydomes.</p>
-<p>Note that this class can only be used with <a href="WebGLRenderer.html">WebGLRenderer</a>.
-When using <a href="WebGPURenderer.html">WebGPURenderer</a>, use <a href="SkyMesh.html">SkyMesh</a>.</p>
+<p>Note that this class can only be used with <a href="WebGPURenderer.html">WebGPURenderer</a>.
+When using <a href="WebGLRenderer.html">WebGLRenderer</a>, use <a href="Sky.html">Sky</a>.</p>
 <p>More references:</p>
 <ul>
 <li><a href="http://simonwallner.at/project/atmospheric-scattering/" target="_blank" rel="noopener">http://simonwallner.at/project/atmospheric-scattering/</a></li>
@@ -44,6 +44,16 @@ scene.add( sky );
 				<h2 class="subsection-title">Properties</h2>
 				<div class="member">
 					<h3 class="name" id="isSky" translate="no">.<a href="#isSky">isSky</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
+					<div class="description">
+						<p>This flag can be used for type testing.</p>
+						<p>Default is <code>true</code>.</p>
+					</div>
+						<dl class="details">
+							<dt class="important tag-deprecated"><strong>Deprecated:</strong> Use isSkyMesh instead.</dt>
+						</dl>
+				</div>
+				<div class="member">
+					<h3 class="name" id="isSkyMesh" translate="no">.<a href="#isSkyMesh">isSkyMesh</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
 					<div class="description">
 						<p>This flag can be used for type testing.</p>
 						<p>Default is <code>true</code>.</p>

+ 1 - 1
docs/pages/Sphere.html

@@ -237,7 +237,7 @@ be negative.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> A reference to this sphere.</dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="fromJSON" translate="no">.<a href="#fromJSON">fromJSON</a><span class="signature">( json : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="Box3.html">Box3</a></span> </h3>
+					<h3 class="name name-method" id="fromJSON" translate="no">.<a href="#fromJSON">fromJSON</a><span class="signature">( json : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="Sphere.html">Sphere</a></span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>Returns a serialized structure of the bounding sphere.</p>

+ 31 - 1
docs/pages/StackNode.html

@@ -219,11 +219,41 @@ The last parameter must be the callback method that should be executed in the <c
 							<dt class="tag-returns"><strong>Returns:</strong> A reference to this stack node.</dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="addToStack" translate="no">.<a href="#addToStack">addToStack</a><span class="signature">( node : <span class="param-type"><a href="Node.html">Node</a></span> )</span><span class="type-signature"> : <a href="StackNode.html">StackNode</a></span> </h3>
+					<h3 class="name name-method" id="addToStack" translate="no">.<a href="#addToStack">addToStack</a><span class="signature">( node : <span class="param-type"><a href="Node.html">Node</a></span>, index : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="StackNode.html">StackNode</a></span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>Adds a node to this stack.</p>
 						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>node</strong>
+									</td>
+									<td class="description last">
+										<p>The node to add.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>index</strong>
+									</td>
+									<td class="description last">
+										<p>The index where the node should be added.</p>
+										<p>Default is <code>this.nodes.length</code>.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> A reference to this stack node.</dt>
+						</dl>
+					</div>
+					<h3 class="name name-method" id="addToStackBefore" translate="no">.<a href="#addToStackBefore">addToStackBefore</a><span class="signature">( node : <span class="param-type"><a href="Node.html">Node</a></span> )</span><span class="type-signature"> : <a href="StackNode.html">StackNode</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Adds a node to the stack before the current node.</p>
+						</div>
 						<table class="params">
 							<tbody>
 								<tr>

+ 0 - 31
docs/pages/StereoCompositePassNode.html

@@ -53,37 +53,6 @@ anaglyph or parallax barrier.</p></div>
 					</div>
 				</div>
 				<h2 class="subsection-title">Properties</h2>
-				<div class="member">
-					<h3 class="name" id="_mapLeft" translate="no">.<a href="#_mapLeft">_mapLeft</a><span class="type-signature"> : <a href="TextureNode.html">TextureNode</a></span> </h3>
-					<div class="description">
-						<p>A texture node representing the left's eye view.</p>
-					</div>
-				</div>
-				<div class="member">
-					<h3 class="name" id="_mapRight" translate="no">.<a href="#_mapRight">_mapRight</a><span class="type-signature"> : <a href="TextureNode.html">TextureNode</a></span> </h3>
-					<div class="description">
-						<p>A texture node representing the right's eye view.</p>
-					</div>
-				</div>
-				<div class="member">
-					<h3 class="name" id="_material" translate="no">.<a href="#_material">_material</a><span class="type-signature"> : <a href="NodeMaterial.html">NodeMaterial</a></span> </h3>
-					<div class="description">
-						<p>The node material that implements the composite. All
-derived effect passes must provide an instance for rendering.</p>
-					</div>
-				</div>
-				<div class="member">
-					<h3 class="name" id="_renderTargetL" translate="no">.<a href="#_renderTargetL">_renderTargetL</a><span class="type-signature"> : <a href="RenderTarget.html">RenderTarget</a></span> </h3>
-					<div class="description">
-						<p>The render target for rendering the left eye's view.</p>
-					</div>
-				</div>
-				<div class="member">
-					<h3 class="name" id="_renderTargetR" translate="no">.<a href="#_renderTargetR">_renderTargetR</a><span class="type-signature"> : <a href="RenderTarget.html">RenderTarget</a></span> </h3>
-					<div class="description">
-						<p>The render target for rendering the right eye's view.</p>
-					</div>
-				</div>
 				<div class="member">
 					<h3 class="name" id="isStereoCompositePassNode" translate="no">.<a href="#isStereoCompositePassNode">isStereoCompositePassNode</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
 					<div class="description">

+ 0 - 14
docs/pages/StorageBufferNode.html

@@ -73,20 +73,6 @@ renderer.computeAsync( computeInit );
 					</div>
 				</div>
 				<h2 class="subsection-title">Properties</h2>
-				<div class="member">
-					<h3 class="name" id="_attribute" translate="no">.<a href="#_attribute">_attribute</a><span class="type-signature"> : <a href="BufferAttributeNode.html">BufferAttributeNode</a></span> </h3>
-					<div class="description">
-						<p>A reference to the internal buffer attribute node.</p>
-						<p>Default is <code>null</code>.</p>
-					</div>
-				</div>
-				<div class="member">
-					<h3 class="name" id="_varying" translate="no">.<a href="#_varying">_varying</a><span class="type-signature"> : <a href="VaryingNode.html">VaryingNode</a></span> </h3>
-					<div class="description">
-						<p>A reference to the internal varying node.</p>
-						<p>Default is <code>null</code>.</p>
-					</div>
-				</div>
 				<div class="member">
 					<h3 class="name" id="access" translate="no">.<a href="#access">access</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">

+ 1 - 1
docs/pages/StringKeyframeTrack.html

@@ -77,7 +77,7 @@ interpolation is always discrete.</p>
 						</dl>
 				</div>
 				<div class="member">
-					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : String</span> </h3>
+					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">
 						<p>The value type name.</p>
 						<p>Default is <code>'string'</code>.</p>

+ 1 - 1
docs/pages/SubgroupFunctionNode.html

@@ -75,7 +75,7 @@ other graphics APIs, subgroup functions are also referred to as wave intrinsics
 					</div>
 				</div>
 				<div class="member">
-					<h3 class="name" id="method" translate="no">.<a href="#method">method</a><span class="type-signature"> : String</span> </h3>
+					<h3 class="name" id="method" translate="no">.<a href="#method">method</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">
 						<p>The subgroup/wave intrinsic method to construct.</p>
 					</div>

+ 30 - 0
docs/pages/TRAANode.html

@@ -88,6 +88,21 @@
 						<p>A node that represents the scene's velocity.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="depthThreshold" translate="no">.<a href="#depthThreshold">depthThreshold</a><span class="type-signature"> : number</span> </h3>
+					<div class="description">
+						<p>When the difference between the current and previous depth goes above this threshold,
+the history is considered invalid.</p>
+						<p>Default is <code>0.0005</code>.</p>
+					</div>
+				</div>
+				<div class="member">
+					<h3 class="name" id="edgeDepthDiff" translate="no">.<a href="#edgeDepthDiff">edgeDepthDiff</a><span class="type-signature"> : number</span> </h3>
+					<div class="description">
+						<p>The depth difference within the 3×3 neighborhood to consider a pixel as an edge.</p>
+						<p>Default is <code>0.001</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="isTRAANode" translate="no">.<a href="#isTRAANode">isTRAANode</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
 					<div class="description">
@@ -95,6 +110,13 @@
 						<p>Default is <code>true</code>.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="maxVelocityLength" translate="no">.<a href="#maxVelocityLength">maxVelocityLength</a><span class="type-signature"> : number</span> </h3>
+					<div class="description">
+						<p>The history becomes invalid as the pixel length of the velocity approaches this value.</p>
+						<p>Default is <code>128</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="updateBeforeType" translate="no">.<a href="#updateBeforeType">updateBeforeType</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">
@@ -106,6 +128,14 @@ its effect once per frame in <code>updateBefore()</code>.</p>
 							<dt class="tag-overrides"><strong>Overrides:</strong> <a href="TempNode.html#updateBeforeType">TempNode#updateBeforeType</a></dt>
 						</dl>
 				</div>
+				<div class="member">
+					<h3 class="name" id="useSubpixelCorrection" translate="no">.<a href="#useSubpixelCorrection">useSubpixelCorrection</a><span class="type-signature"> : boolean</span> </h3>
+					<div class="description">
+						<p>Whether to decrease the weight on the current frame when the velocity is more subpixel.
+This reduces blurriness under motion, but can introduce a square pattern artifact.</p>
+						<p>Default is <code>true</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="velocityNode" translate="no">.<a href="#velocityNode">velocityNode</a><span class="type-signature"> : <a href="TextureNode.html">TextureNode</a></span> </h3>
 					<div class="description">

+ 506 - 68
docs/pages/TSL.html

@@ -250,6 +250,12 @@ Complements the tangentViewFrame for constructing the tangent space basis.</p>
 						<p>TSL object that represents the shader variable <code>DiffuseColor</code>.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="diffuseContribution" translate="no">.<a href="#diffuseContribution">diffuseContribution</a><span class="type-signature"> : <a href="PropertyNode.html">PropertyNode</a>.&lt;vec3></span> <span class="type-signature">(constant) </span></h3>
+					<div class="description">
+						<p>TSL object that represents the shader variable <code>DiffuseContribution</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="directionToFaceDirection" translate="no">.<a href="#directionToFaceDirection">directionToFaceDirection</a> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
@@ -936,6 +942,12 @@ Used in context of <a href="VelocityNode.html">VelocityNode</a> for rendering mo
 						<p>TSL object that represents the shader variable <code>SpecularColor</code>.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="specularColorBlended" translate="no">.<a href="#specularColorBlended">specularColorBlended</a><span class="type-signature"> : <a href="PropertyNode.html">PropertyNode</a>.&lt;color></span> <span class="type-signature">(constant) </span></h3>
+					<div class="description">
+						<p>TSL object that represents the shader variable <code>SpecularColorBlended</code>.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="specularF90" translate="no">.<a href="#specularF90">specularF90</a><span class="type-signature"> : <a href="PropertyNode.html">PropertyNode</a>.&lt;float></span> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
@@ -2659,7 +2671,7 @@ kernels won't perform well. Use Gaussian instead if you need a more high-quality
 							</tbody>
 						</table>
 					</div>
-					<h3 class="name name-method" id="bufferAttribute" translate="no">.<a href="#bufferAttribute">bufferAttribute</a><span class="signature">( array : <span class="param-type"><a href="BufferAttribute.html">BufferAttribute</a> | <a href="InterleavedBuffer.html">InterleavedBuffer</a> | TypedArray</span>, type : <span class="param-type">string</span>, stride : <span class="param-type">number</span>, offset : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="BufferAttributeNode.html">BufferAttributeNode</a></span> </h3>
+					<h3 class="name name-method" id="bufferAttribute" translate="no">.<a href="#bufferAttribute">bufferAttribute</a><span class="signature">( array : <span class="param-type"><a href="BufferAttribute.html">BufferAttribute</a> | <a href="InterleavedBuffer.html">InterleavedBuffer</a> | TypedArray</span>, type : <span class="param-type">string</span>, stride : <span class="param-type">number</span>, offset : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="BufferAttributeNode.html">BufferAttributeNode</a> | <a href="Node.html">Node</a></span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>TSL function for creating a buffer attribute node.</p>
@@ -2722,6 +2734,68 @@ kernels won't perform well. Use Gaussian instead if you need a more high-quality
 							</tbody>
 						</table>
 					</div>
+					<h3 class="name name-method" id="builtinAOContext" translate="no">.<a href="#builtinAOContext">builtinAOContext</a><span class="signature">( aoNode : <span class="param-type"><a href="Node.html">Node</a></span>, node : <span class="param-type"><a href="Node.html">Node</a></span> )</span><span class="type-signature"> : <a href="ContextNode.html">ContextNode</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>TSL function for defining a built-in ambient occlusion context for a given node.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>aoNode</strong>
+									</td>
+									<td class="description last">
+										<p>The ambient occlusion value node to apply.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>node</strong>
+									</td>
+									<td class="description last">
+										<p>The node whose context should be modified.</p>
+										<p>Default is <code>null</code>.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<h3 class="name name-method" id="builtinShadowContext" translate="no">.<a href="#builtinShadowContext">builtinShadowContext</a><span class="signature">( shadowNode : <span class="param-type"><a href="ShadowNode.html">ShadowNode</a></span>, light : <span class="param-type"><a href="Light.html">Light</a></span>, node : <span class="param-type"><a href="Node.html">Node</a></span> )</span><span class="type-signature"> : <a href="ContextNode.html">ContextNode</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>TSL function for defining a built-in shadow context for a given node.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>shadowNode</strong>
+									</td>
+									<td class="description last">
+										<p>The shadow node representing the light's shadow.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>light</strong>
+									</td>
+									<td class="description last">
+										<p>The light associated with the shadow.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>node</strong>
+									</td>
+									<td class="description last">
+										<p>The node whose context should be modified.</p>
+										<p>Default is <code>null</code>.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
 					<h3 class="name name-method" id="bumpMap" translate="no">.<a href="#bumpMap">bumpMap</a><span class="signature">( textureNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;float></span>, scaleNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;float></span> )</span><span class="type-signature"> : <a href="BumpMapNode.html">BumpMapNode</a></span> </h3>
 					<div class="method">
 						<div class="description">
@@ -3315,7 +3389,7 @@ or AgX Log), and will return output in the same space. Output may require clampi
 							</tbody>
 						</table>
 					</div>
-					<h3 class="name name-method" id="context" translate="no">.<a href="#context">context</a><span class="signature">( node : <span class="param-type"><a href="Node.html">Node</a></span>, value : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="ContextNode.html">ContextNode</a></span> </h3>
+					<h3 class="name name-method" id="context" translate="no">.<a href="#context">context</a><span class="signature">( nodeOrValue : <span class="param-type"><a href="Node.html">Node</a> | Object</span>, value : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="ContextNode.html">ContextNode</a></span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>TSL function for creating a context node.</p>
@@ -3324,10 +3398,11 @@ or AgX Log), and will return output in the same space. Output may require clampi
 							<tbody>
 								<tr>
 									<td class="name">
-										<strong>node</strong>
+										<strong>nodeOrValue</strong>
 									</td>
 									<td class="description last">
-										<p>The node whose context should be modified.</p>
+										<p>The node whose context should be modified or the modified context data.</p>
+										<p>Default is <code>{}</code>.</p>
 									</td>
 								</tr>
 								<tr>
@@ -3439,6 +3514,52 @@ or AgX Log), and will return output in the same space. Output may require clampi
 							</tbody>
 						</table>
 					</div>
+					<h3 class="name name-method" id="countLeadingZeros" translate="no">.<a href="#countLeadingZeros">countLeadingZeros</a><span class="signature">( x : <span class="param-type"><a href="Node.html">Node</a> | number</span> )</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Finds the number of consecutive 0 bits starting from the most significant bit of the input value.</p>
+<p>Can only be used with <a href="WebGPURenderer.html">WebGPURenderer</a> and a WebGPU backend.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>x</strong>
+									</td>
+									<td class="description last">
+										<p>The input value.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<h3 class="name name-method" id="countOneBits" translate="no">.<a href="#countOneBits">countOneBits</a><span class="signature">()</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Finds the number of '1' bits set in the input value</p>
+<p>Can only be used with <a href="WebGPURenderer.html">WebGPURenderer</a> and a WebGPU backend.</p>
+						</div>
+					</div>
+					<h3 class="name name-method" id="countTrailingZeros" translate="no">.<a href="#countTrailingZeros">countTrailingZeros</a><span class="signature">( x : <span class="param-type"><a href="Node.html">Node</a> | number</span> )</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Finds the number of consecutive 0 bits from the least significant bit of the input value,
+which is also the index of the least significant bit of the input value.</p>
+<p>Can only be used with <a href="WebGPURenderer.html">WebGPURenderer</a> and a WebGPU backend.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>x</strong>
+									</td>
+									<td class="description last">
+										<p>The input value.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
 					<h3 class="name name-method" id="createVar" translate="no">.<a href="#createVar">createVar</a><span class="signature">( node : <span class="param-type"><a href="Node.html">Node</a></span>, name : <span class="param-type">string</span> )</span><span class="type-signature"> : <a href="VarNode.html">VarNode</a></span> </h3>
 					<div class="method">
 						<div class="description">
@@ -4109,7 +4230,7 @@ densening fog farther from the camera.</p>
 							</tbody>
 						</table>
 					</div>
-					<h3 class="name name-method" id="dynamicBufferAttribute" translate="no">.<a href="#dynamicBufferAttribute">dynamicBufferAttribute</a><span class="signature">( array : <span class="param-type"><a href="BufferAttribute.html">BufferAttribute</a> | <a href="InterleavedBuffer.html">InterleavedBuffer</a> | TypedArray</span>, type : <span class="param-type">string</span>, stride : <span class="param-type">number</span>, offset : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="BufferAttributeNode.html">BufferAttributeNode</a></span> </h3>
+					<h3 class="name name-method" id="dynamicBufferAttribute" translate="no">.<a href="#dynamicBufferAttribute">dynamicBufferAttribute</a><span class="signature">( array : <span class="param-type"><a href="BufferAttribute.html">BufferAttribute</a> | <a href="InterleavedBuffer.html">InterleavedBuffer</a> | TypedArray</span>, type : <span class="param-type">string</span>, stride : <span class="param-type">number</span>, offset : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="BufferAttributeNode.html">BufferAttributeNode</a> | <a href="Node.html">Node</a></span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>TSL function for creating a buffer attribute node but with dynamic draw usage.
@@ -4733,7 +4854,7 @@ using the linear shadow distance.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> The shadow material associated with the given light.</dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="getShadowRenderObjectFunction" translate="no">.<a href="#getShadowRenderObjectFunction">getShadowRenderObjectFunction</a><span class="signature">( renderer : <span class="param-type"><a href="Renderer.html">Renderer</a></span>, shadow : <span class="param-type"><a href="LightShadow.html">LightShadow</a></span>, shadowType : <span class="param-type">number</span>, useVelocity : <span class="param-type">boolean</span>, object : <span class="param-type"><a href="Object3D.html">Object3D</a></span>, scene : <span class="param-type"><a href="Scene.html">Scene</a></span>, _camera : <span class="param-type"><a href="Camera.html">Camera</a></span>, geometry : <span class="param-type"><a href="BufferGeometry.html">BufferGeometry</a></span>, material : <span class="param-type"><a href="Material.html">Material</a></span>, group : <span class="param-type"><a href="Group.html">Group</a></span>, &hellip;params : <span class="param-type"><a href="global.html#any">any</a></span> )</span><span class="type-signature"> : function</span> </h3>
+					<h3 class="name name-method" id="getShadowRenderObjectFunction" translate="no">.<a href="#getShadowRenderObjectFunction">getShadowRenderObjectFunction</a><span class="signature">( renderer : <span class="param-type"><a href="Renderer.html">Renderer</a></span>, shadow : <span class="param-type"><a href="LightShadow.html">LightShadow</a></span>, shadowType : <span class="param-type">number</span>, useVelocity : <span class="param-type">boolean</span> )</span><span class="type-signature"> : <a href="global.html#shadowRenderObjectFunction">shadowRenderObjectFunction</a></span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>Creates a function to render shadow objects in a scene.</p>
@@ -4772,67 +4893,10 @@ using the linear shadow distance.</p>
 										<p>Whether to use velocity data for rendering.</p>
 									</td>
 								</tr>
-								<tr>
-									<td class="name">
-										<strong>object</strong>
-									</td>
-									<td class="description last">
-										<p>The 3D object to render.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>scene</strong>
-									</td>
-									<td class="description last">
-										<p>The scene containing the object.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>_camera</strong>
-									</td>
-									<td class="description last">
-										<p>The camera used for rendering.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>geometry</strong>
-									</td>
-									<td class="description last">
-										<p>The geometry of the object.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>material</strong>
-									</td>
-									<td class="description last">
-										<p>The material of the object.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>group</strong>
-									</td>
-									<td class="description last">
-										<p>The group the object belongs to.</p>
-									</td>
-								</tr>
-								<tr>
-									<td class="name">
-										<strong>params</strong>
-									</td>
-									<td class="description last">
-										<p>Additional parameters for rendering.</p>
-									</td>
-								</tr>
 							</tbody>
 						</table>
 						<dl class="details">
-							<dt class="tag-returns"><strong>Returns:</strong> A function that renders shadow objects.</p>
-<p>The returned function has the following parameters:</dt>
+							<dt class="tag-returns"><strong>Returns:</strong> A function that renders shadow objects.</dt>
 						</dl>
 					</div>
 					<h3 class="name name-method" id="getViewPosition" translate="no">.<a href="#getViewPosition">getViewPosition</a><span class="signature">( screenPosition : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec2></span>, depth : <span class="param-type"><a href="Node.html">Node</a>.&lt;float></span>, projectionMatrixInverse : <span class="param-type"><a href="Node.html">Node</a>.&lt;mat4></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;vec3></span> </h3>
@@ -5172,7 +5236,7 @@ Compared to Gaussian blur, hash blur requires just a single pass.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> The inspector node.</dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="instance" translate="no">.<a href="#instance">instance</a><span class="signature">( count : <span class="param-type">number</span>, instanceMatrix : <span class="param-type"><a href="InstancedBufferAttribute.html">InstancedBufferAttribute</a></span>, instanceColor : <span class="param-type"><a href="InstancedBufferAttribute.html">InstancedBufferAttribute</a></span> )</span><span class="type-signature"> : <a href="InstanceNode.html">InstanceNode</a></span> </h3>
+					<h3 class="name name-method" id="instance" translate="no">.<a href="#instance">instance</a><span class="signature">( count : <span class="param-type">number</span>, instanceMatrix : <span class="param-type"><a href="InstancedBufferAttribute.html">InstancedBufferAttribute</a> | <a href="StorageInstancedBufferAttribute.html">StorageInstancedBufferAttribute</a></span>, instanceColor : <span class="param-type"><a href="InstancedBufferAttribute.html">InstancedBufferAttribute</a> | <a href="StorageInstancedBufferAttribute.html">StorageInstancedBufferAttribute</a></span> )</span><span class="type-signature"> : <a href="InstanceNode.html">InstanceNode</a></span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>TSL function for creating an instance node.</p>
@@ -5233,7 +5297,7 @@ Compared to Gaussian blur, hash blur requires just a single pass.</p>
 							</tbody>
 						</table>
 					</div>
-					<h3 class="name name-method" id="instancedBufferAttribute" translate="no">.<a href="#instancedBufferAttribute">instancedBufferAttribute</a><span class="signature">( array : <span class="param-type"><a href="BufferAttribute.html">BufferAttribute</a> | <a href="InterleavedBuffer.html">InterleavedBuffer</a> | TypedArray</span>, type : <span class="param-type">string</span>, stride : <span class="param-type">number</span>, offset : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="BufferAttributeNode.html">BufferAttributeNode</a></span> </h3>
+					<h3 class="name name-method" id="instancedBufferAttribute" translate="no">.<a href="#instancedBufferAttribute">instancedBufferAttribute</a><span class="signature">( array : <span class="param-type"><a href="BufferAttribute.html">BufferAttribute</a> | <a href="InterleavedBuffer.html">InterleavedBuffer</a> | TypedArray</span>, type : <span class="param-type">string</span>, stride : <span class="param-type">number</span>, offset : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="BufferAttributeNode.html">BufferAttributeNode</a> | <a href="Node.html">Node</a></span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>TSL function for creating a buffer attribute node but with enabled instancing</p>
@@ -5278,7 +5342,7 @@ Compared to Gaussian blur, hash blur requires just a single pass.</p>
 							</tbody>
 						</table>
 					</div>
-					<h3 class="name name-method" id="instancedDynamicBufferAttribute" translate="no">.<a href="#instancedDynamicBufferAttribute">instancedDynamicBufferAttribute</a><span class="signature">( array : <span class="param-type"><a href="BufferAttribute.html">BufferAttribute</a> | <a href="InterleavedBuffer.html">InterleavedBuffer</a> | TypedArray</span>, type : <span class="param-type">string</span>, stride : <span class="param-type">number</span>, offset : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="BufferAttributeNode.html">BufferAttributeNode</a></span> </h3>
+					<h3 class="name name-method" id="instancedDynamicBufferAttribute" translate="no">.<a href="#instancedDynamicBufferAttribute">instancedDynamicBufferAttribute</a><span class="signature">( array : <span class="param-type"><a href="BufferAttribute.html">BufferAttribute</a> | <a href="InterleavedBuffer.html">InterleavedBuffer</a> | TypedArray</span>, type : <span class="param-type">string</span>, stride : <span class="param-type">number</span>, offset : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="BufferAttributeNode.html">BufferAttributeNode</a> | <a href="Node.html">Node</a></span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>TSL function for creating a buffer attribute node but with dynamic draw usage and enabled instancing</p>
@@ -6869,6 +6933,62 @@ When no material is set, the node refers to the material of the current rendered
 							</tbody>
 						</table>
 					</div>
+					<h3 class="name name-method" id="packHalf2x16" translate="no">.<a href="#packHalf2x16">packHalf2x16</a><span class="signature">( value : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec2></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Converts each component of the vec2 to 16-bit floating-point values. The results are packed into a single unsigned integer.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>value</strong>
+									</td>
+									<td class="description last">
+										<p>The 2-component vector to be packed</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<h3 class="name name-method" id="packSnorm2x16" translate="no">.<a href="#packSnorm2x16">packSnorm2x16</a><span class="signature">( value : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec2></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Converts each component of the normalized float to 16-bit integer values. The results are packed into a single unsigned integer.
+round(clamp(c, -1, +1) * 32767.0)</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>value</strong>
+									</td>
+									<td class="description last">
+										<p>The 2-component vector to be packed</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<h3 class="name name-method" id="packUnorm2x16" translate="no">.<a href="#packUnorm2x16">packUnorm2x16</a><span class="signature">( value : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec2></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Converts each component of the normalized float to 16-bit integer values. The results are packed into a single unsigned integer.
+round(clamp(c, 0, +1) * 65535.0)</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>value</strong>
+									</td>
+									<td class="description last">
+										<p>The 2-component vector to be packed</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
 					<h3 class="name name-method" id="parabola" translate="no">.<a href="#parabola">parabola</a><span class="signature">( x : <span class="param-type"><a href="Node.html">Node</a>.&lt;float></span>, k : <span class="param-type"><a href="Node.html">Node</a>.&lt;float></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;float></span> </h3>
 					<div class="method">
 						<div class="description">
@@ -7512,6 +7632,89 @@ rendering for certain operations, such as compositing and image processing.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> The value received from the swap operation.</dt>
 						</dl>
 					</div>
+					<h3 class="name name-method" id="radialBlur" translate="no">.<a href="#radialBlur">radialBlur</a><span class="signature">( textureNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec4></span>, options : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;vec4></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>This TSL function blurs an image in a circular pattern, radiating from a configurable center point in screen space.</p>
+<p>Radial blurs can be used for different kind of effects like producing simple faked lighting effects also known as
+&quot;light shafts&quot;. The major limitation of this specific usage is the center point can only be defined in 2D so the
+effect does not honor the depth of 3D objects. Consequently, it is not intended for physically correct lit scenes.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>textureNode</strong>
+									</td>
+									<td class="description last">
+										<p>The texture node that should be blurred.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>options</strong>
+									</td>
+									<td class="description last">
+										<p>Additional options for the radial blur effect.</p>
+										<p>Default is <code>{}</code>.</p>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>center</strong>
+									</td>
+									<td class="description last">
+										<p>The center of the light in screen uvs.</p>
+										<p>Default is <code>vec2(0.5, 0.5)</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>weight</strong>
+									</td>
+									<td class="description last">
+										<p>Base weight factor for each sample in the range <code>[0,1]</code>.</p>
+										<p>Default is <code>float(0.9)</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>decay</strong>
+									</td>
+									<td class="description last">
+										<p>Decreases the weight factor so each iteration adds less to the sum. Must be in the range <code>[0,1]</code>.
+If you increase the sample count, you have to increase this option as well to avoid a darking effect.</p>
+										<p>Default is <code>float(0.95)</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>count</strong>
+									</td>
+									<td class="description last">
+										<p>The number if iterations. Should be in the range <code>[16,64]</code>.</p>
+										<p>Default is <code>int(32)</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>exposure</strong>
+									</td>
+									<td class="description last">
+										<p>Exposure control of the blur.</p>
+										<p>Default is <code>float(5)</code>.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The blurred texture node.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="radians" translate="no">.<a href="#radians">radians</a><span class="signature">( x : <span class="param-type"><a href="Node.html">Node</a> | number</span> )</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
 					<div class="method">
 						<div class="description">
@@ -8163,6 +8366,42 @@ the node refers to the renderer of the current state.</p>
 							</tbody>
 						</table>
 					</div>
+					<h3 class="name name-method" id="replaceDefaultUV" translate="no">.<a href="#replaceDefaultUV">replaceDefaultUV</a><span class="signature">( callback : <span class="param-type">function</span>, node : <span class="param-type"><a href="Node.html">Node</a></span> )</span><span class="type-signature"> : <a href="ContextNode.html">ContextNode</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Replaces the default UV coordinates used in texture lookups.</p>
+<pre><code class="language-js">material.contextNode = replaceDefaultUV( ( textureNode ) => {
+	// ...
+	return customUVCoordinates;
+} );
+</code></pre>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>callback</strong>
+									</td>
+									<td class="description last">
+										<p>A callback that receives the texture node
+and must return the new uv coordinates.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>node</strong>
+									</td>
+									<td class="description last">
+										<p>An optional node to which the context will be applied.</p>
+										<p>Default is <code>null</code>.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> A context node that replaces the default UV coordinates.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="rgbShift" translate="no">.<a href="#rgbShift">rgbShift</a><span class="signature">( node : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec4></span>, amount : <span class="param-type">number</span>, angle : <span class="param-type">number</span> )</span><span class="type-signature"> : <a href="RGBShiftNode.html">RGBShiftNode</a></span> </h3>
 					<div class="method">
 						<div class="description">
@@ -10025,7 +10264,7 @@ among active invocations in the subgroup.</p>
 							</tbody>
 						</table>
 					</div>
-					<h3 class="name name-method" id="texture3D" translate="no">.<a href="#texture3D">texture3D</a><span class="signature">( value : <span class="param-type"><a href="Data3DTexture.html">Data3DTexture</a></span>, uvNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;(vec2|vec3)></span>, levelNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;int></span> )</span><span class="type-signature"> : <a href="Texture3DNode.html">Texture3DNode</a></span> </h3>
+					<h3 class="name name-method" id="texture3D" translate="no">.<a href="#texture3D">texture3D</a><span class="signature">( value : <span class="param-type"><a href="Data3DTexture.html">Data3DTexture</a></span>, uvNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec3></span>, levelNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;int></span> )</span><span class="type-signature"> : <a href="Texture3DNode.html">Texture3DNode</a></span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>TSL function for creating a 3D texture node.</p>
@@ -10061,6 +10300,89 @@ among active invocations in the subgroup.</p>
 							</tbody>
 						</table>
 					</div>
+					<h3 class="name name-method" id="texture3DLevel" translate="no">.<a href="#texture3DLevel">texture3DLevel</a><span class="signature">( value : <span class="param-type"><a href="Texture.html">Texture</a> | <a href="TextureNode.html">TextureNode</a></span>, uvNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec3></span>, levelNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;int></span> )</span><span class="type-signature"> : <a href="TextureNode.html">TextureNode</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>TSL function for creating a texture node that fetches/loads texels without interpolation.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>value</strong>
+									</td>
+									<td class="description last">
+										<p>The texture.</p>
+										<p>Default is <code>EmptyTexture</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>uvNode</strong>
+									</td>
+									<td class="description last">
+										<p>The uv node.</p>
+										<p>Default is <code>null</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>levelNode</strong>
+									</td>
+									<td class="description last">
+										<p>The level node.</p>
+										<p>Default is <code>null</code>.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<h3 class="name name-method" id="texture3DLoad" translate="no">.<a href="#texture3DLoad">texture3DLoad</a><span class="signature">( value : <span class="param-type"><a href="Texture.html">Texture</a> | <a href="TextureNode.html">TextureNode</a></span>, uvNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec3></span>, levelNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;int></span>, biasNode : <span class="param-type"><a href="Node.html">Node</a>.&lt;float></span> )</span><span class="type-signature"> : <a href="TextureNode.html">TextureNode</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>TSL function for creating a texture node that fetches/loads texels without interpolation.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>value</strong>
+									</td>
+									<td class="description last">
+										<p>The texture.</p>
+										<p>Default is <code>EmptyTexture</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>uvNode</strong>
+									</td>
+									<td class="description last">
+										<p>The uv node.</p>
+										<p>Default is <code>null</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>levelNode</strong>
+									</td>
+									<td class="description last">
+										<p>The level node.</p>
+										<p>Default is <code>null</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>biasNode</strong>
+									</td>
+									<td class="description last">
+										<p>The bias node.</p>
+										<p>Default is <code>null</code>.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
 					<h3 class="name name-method" id="textureBarrier" translate="no">.<a href="#textureBarrier">textureBarrier</a><span class="signature">()</span><span class="type-signature"> : <a href="BarrierNode.html">BarrierNode</a></span> </h3>
 					<div class="method">
 						<div class="description">
@@ -10927,6 +11249,82 @@ to complete before the barrier can be passed.</p>
 							</tbody>
 						</table>
 					</div>
+					<h3 class="name name-method" id="unpackHalf2x16" translate="no">.<a href="#unpackHalf2x16">unpackHalf2x16</a><span class="signature">( value : <span class="param-type"><a href="Node.html">Node</a>.&lt;uint></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Unpacks a 32-bit unsigned integer into two 16-bit values, interpreted as 16-bit floating-point numbers. Returns a vec2 with both values.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>value</strong>
+									</td>
+									<td class="description last">
+										<p>The unsigned integer to be unpacked</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<h3 class="name name-method" id="unpackNormal" translate="no">.<a href="#unpackNormal">unpackNormal</a><span class="signature">( xy : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec2></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;vec3></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Unpacks a tangent space normal, reconstructing the Z component by projecting the X,Y coordinates onto the hemisphere.
+The X,Y coordinates are expected to be in the [-1, 1] range.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>xy</strong>
+									</td>
+									<td class="description last">
+										<p>The X,Y coordinates of the normal.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The resulting normal.</dt>
+						</dl>
+					</div>
+					<h3 class="name name-method" id="unpackSnorm2x16" translate="no">.<a href="#unpackSnorm2x16">unpackSnorm2x16</a><span class="signature">( value : <span class="param-type"><a href="Node.html">Node</a>.&lt;uint></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Unpacks a 32-bit unsigned integer into two 16-bit values, interpreted as normalized signed integers. Returns a vec2 with both values.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>value</strong>
+									</td>
+									<td class="description last">
+										<p>The unsigned integer to be unpacked</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<h3 class="name name-method" id="unpackUnorm2x16" translate="no">.<a href="#unpackUnorm2x16">unpackUnorm2x16</a><span class="signature">( value : <span class="param-type"><a href="Node.html">Node</a>.&lt;uint></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Unpacks a 32-bit unsigned integer into two 16-bit values, interpreted as normalized unsigned integers. Returns a vec2 with both values.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>value</strong>
+									</td>
+									<td class="description last">
+										<p>The unsigned integer to be unpacked</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
 					<h3 class="name name-method" id="unpremultiplyAlpha" translate="no">.<a href="#unpremultiplyAlpha">unpremultiplyAlpha</a><span class="signature">( color : <span class="param-type"><a href="Node.html">Node</a>.&lt;vec4></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;vec4></span> </h3>
 					<div class="method">
 						<div class="description">
@@ -11388,6 +11786,46 @@ which is incorrect.</p>
 							</tbody>
 						</table>
 					</div>
+					<h3 class="name name-method" id="vogelDiskSample" translate="no">.<a href="#vogelDiskSample">vogelDiskSample</a><span class="signature">( sampleIndex : <span class="param-type"><a href="Node.html">Node</a>.&lt;int></span>, samplesCount : <span class="param-type"><a href="Node.html">Node</a>.&lt;int></span>, phi : <span class="param-type"><a href="Node.html">Node</a>.&lt;float></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;vec2></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Vogel disk sampling for uniform circular distribution.</p>
+<p>This function generates sample points distributed uniformly on a disk using the golden angle,
+resulting in an efficient low-discrepancy sequence for sampling. The rotation parameter (phi)
+allows randomizing the pattern per-pixel when combined with IGN.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>sampleIndex</strong>
+									</td>
+									<td class="description last">
+										<p>The index of the current sample (0-based).</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>samplesCount</strong>
+									</td>
+									<td class="description last">
+										<p>The total number of samples.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>phi</strong>
+									</td>
+									<td class="description last">
+										<p>Rotation angle in radians (typically from IGN * 2π).</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> A 2D point on the unit disk.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="wgsl" translate="no">.<a href="#wgsl">wgsl</a><span class="signature">( src : <span class="param-type">string</span>, includes : <span class="param-type">Array.&lt;<a href="Node.html">Node</a>></span> )</span><span class="type-signature"> : <a href="CodeNode.html">CodeNode</a></span> </h3>
 					<div class="method">
 						<div class="description">

+ 88 - 0
docs/pages/Tab.html

@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="utf-8">
+	<title>Tab - Three.js Docs</title>
+	<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+	<script src="../scripts/highlight.min.js"></script>
+	<link type="text/css" rel="stylesheet" href="../styles/highlight-three.css">
+	<link type="text/css" rel="stylesheet" href="../styles/page.css">
+</head>
+<body>
+	<h1 translate="no">Tab</h1>
+		<section>
+			<header>
+				<div class="class-description"><p>Tab class</p></div>
+			</header>
+			<article>
+				<div class="container-overview">
+					<h2>Constructor</h2>
+					<h3 class="name name-method" id="Tab" translate="no">new <a href="#Tab">Tab</a><span class="signature">( title : <span class="param-type">string</span>, options : <span class="param-type">Object</span> )</span> </h3>
+					<div class="method">
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>title</strong>
+									</td>
+									<td class="description last">
+										<p>The title of the tab</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>options</strong>
+									</td>
+									<td class="description last">
+										<p>Options for the tab</p>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>allowDetach</strong>
+									</td>
+									<td class="description last">
+										<p>Whether the tab can be detached into a separate window</p>
+										<p>Default is <code>true</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>builtin</strong>
+									</td>
+									<td class="description last">
+										<p>Whether the tab should appear in the profiler-toggle button</p>
+										<p>Default is <code>false</code>.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>icon</strong>
+									</td>
+									<td class="description last">
+										<p>SVG icon HTML for the builtin button</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<h2 class="subsection-title">Classes</h2>
+				<dl>
+					<dt><a href="Tab.html">Tab</a></dt>
+					<dd></dd>
+				</dl>
+				<h2 class="subsection-title">Source</h2>
+				<p>
+					<a href="https://github.com/mrdoob/three.js/blob/master/examples/jsm/inspector/ui/Tab.js" translate="no" target="_blank" rel="noopener">examples/jsm/inspector/ui/Tab.js</a>
+				</p>
+			</article>
+		</section>
+<script src="../scripts/linenumber.js"></script>
+<script src="../scripts/page.js"></script>
+</body>
+</html>

+ 1 - 1
docs/pages/Texture.html

@@ -129,7 +129,7 @@ cannot be changed. Instead, call <a href="Texture.html#dispose">Texture#dispose<
 highest density of texels. By default, this value is <code>1</code>. A higher value
 gives a less blurry result than a basic mipmap, at the cost of more
 texture samples being used.</p>
-						<p>Default is <code>0</code>.</p>
+						<p>Default is <code>Texture.DEFAULT_ANISOTROPY</code>.</p>
 					</div>
 				</div>
 				<div class="member">

+ 0 - 21
docs/pages/UniformsGroup.html

@@ -103,27 +103,6 @@ in <a href="WebGLRenderer.html">WebGLRenderer</a>.</p></div>
 					</div>
 				</div>
 				<h2 class="subsection-title">Methods</h2>
-					<h3 class="name name-method" id="_getBufferForType" translate="no">.<a href="#_getBufferForType">_getBufferForType</a><span class="signature">( type : <span class="param-type">string</span> )</span><span class="type-signature"> : TypedArray</span> </h3>
-					<div class="method">
-						<div class="description">
-							<p>Returns a typed array that matches the given data type.</p>
-						</div>
-						<table class="params">
-							<tbody>
-								<tr>
-									<td class="name">
-										<strong>type</strong>
-									</td>
-									<td class="description last">
-										<p>The data type.</p>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-						<dl class="details">
-							<dt class="tag-returns"><strong>Returns:</strong> The typed array.</dt>
-						</dl>
-					</div>
 					<h3 class="name name-method" id="add" translate="no">.<a href="#add">add</a><span class="signature">( uniform : <span class="param-type"><a href="Uniform.html">Uniform</a></span> )</span><span class="type-signature"> : <a href="UniformsGroup.html">UniformsGroup</a></span> </h3>
 					<div class="method">
 						<div class="description">

+ 74 - 0
docs/pages/UnpackFloatNode.html

@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="utf-8">
+	<title>UnpackFloatNode - Three.js Docs</title>
+	<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+	<script src="../scripts/highlight.min.js"></script>
+	<link type="text/css" rel="stylesheet" href="../styles/highlight-three.css">
+	<link type="text/css" rel="stylesheet" href="../styles/page.css">
+</head>
+<body>
+		<p class="inheritance" translate="no"><a href="EventDispatcher.html">EventDispatcher</a> → <a href="Node.html">Node</a> → <a href="TempNode.html">TempNode</a> → </p>
+	<h1 translate="no">UnpackFloatNode</h1>
+		<section>
+			<header>
+				<div class="class-description"><p>This node represents an operation that unpacks values from a 32-bit unsigned integer, reinterpreting the results as a floating-point vector</p></div>
+			</header>
+			<article>
+				<div class="container-overview">
+					<h2>Constructor</h2>
+					<h3 class="name name-method" id="UnpackFloatNode" translate="no">new <a href="#UnpackFloatNode">UnpackFloatNode</a><span class="signature">( encoding : <span class="param-type">'snorm' | 'unorm' | 'float16'</span>, uintNode : <span class="param-type"><a href="Node.html">Node</a></span> )</span> </h3>
+					<div class="method">
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>encoding</strong>
+									</td>
+									<td class="description last">
+										<p>The numeric encoding that describes how the integer values are mapped to the float range</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>uintNode</strong>
+									</td>
+									<td class="description last">
+										<p>The uint node to be unpacked</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+				</div>
+				<h2 class="subsection-title">Properties</h2>
+				<div class="member">
+					<h3 class="name" id="encoding" translate="no">.<a href="#encoding">encoding</a><span class="type-signature"> : string</span> </h3>
+					<div class="description">
+						<p>The numeric encoding.</p>
+					</div>
+				</div>
+				<div class="member">
+					<h3 class="name" id="isUnpackFloatNode" translate="no">.<a href="#isUnpackFloatNode">isUnpackFloatNode</a><span class="type-signature"> : boolean</span> <span class="type-signature">(readonly) </span></h3>
+					<div class="description">
+						<p>This flag can be used for type testing.</p>
+						<p>Default is <code>true</code>.</p>
+					</div>
+				</div>
+				<div class="member">
+					<h3 class="name" id="uintNode" translate="no">.<a href="#uintNode">uintNode</a><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<div class="description">
+						<p>The unsigned integer to be unpacked.</p>
+					</div>
+				</div>
+				<h2 class="subsection-title">Source</h2>
+				<p>
+					<a href="https://github.com/mrdoob/three.js/blob/master/src/nodes/math/UnpackFloatNode.js" translate="no" target="_blank" rel="noopener">src/nodes/math/UnpackFloatNode.js</a>
+				</p>
+			</article>
+		</section>
+<script src="../scripts/linenumber.js"></script>
+<script src="../scripts/page.js"></script>
+</body>
+</html>

+ 1 - 1
docs/pages/UnrealBloomPass.html

@@ -99,7 +99,7 @@ composer.addPass( bloomPass );
 				<div class="member">
 					<h3 class="name" id="radius" translate="no">.<a href="#radius">radius</a><span class="type-signature"> : number</span> </h3>
 					<div class="description">
-						<p>The Bloom radius.</p>
+						<p>The Bloom radius. Must be in the range <code>[0,1]</code>.</p>
 					</div>
 				</div>
 				<div class="member">

+ 5 - 10
docs/pages/VOXLoader.html

@@ -16,13 +16,8 @@
 				<div class="class-description"><p>A loader for the VOX format.</p></div>
 				<h2>Code Example</h2>
 				<div translate="no"><pre><code class="language-js">const loader = new VOXLoader();
-const chunks = await loader.loadAsync( 'models/vox/monu10.vox' );
-for ( let i = 0; i &lt; chunks.length; i ++ ) {
-	const chunk = chunks[ i ];
-	const mesh = new VOXMesh( chunk );
-	mesh.scale.setScalar( 0.0015 );
-	scene.add( mesh );
-}
+const result = await loader.loadAsync( 'models/vox/monu10.vox' );
+scene.add( result.scene.children[ 0 ] );
 </code></pre></div>
 			</header>
 			<article>
@@ -82,10 +77,10 @@ to the <code>onLoad()</code> callback.</p>
 							<dt class="tag-overrides"><strong>Overrides:</strong> <a href="Loader.html#load">Loader#load</a></dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="parse" translate="no">.<a href="#parse">parse</a><span class="signature">( buffer : <span class="param-type">ArrayBuffer</span> )</span><span class="type-signature"> : Array.&lt;Object></span> </h3>
+					<h3 class="name name-method" id="parse" translate="no">.<a href="#parse">parse</a><span class="signature">( buffer : <span class="param-type">ArrayBuffer</span> )</span><span class="type-signature"> : Object</span> </h3>
 					<div class="method">
 						<div class="description">
-							<p>Parses the given VOX data and returns the resulting chunks.</p>
+							<p>Parses the given VOX data and returns the result object.</p>
 						</div>
 						<table class="params">
 							<tbody>
@@ -103,7 +98,7 @@ to the <code>onLoad()</code> callback.</p>
 							<dt class="tag-overrides"><strong>Overrides:</strong> <a href="Loader.html#parse">Loader#parse</a></dt>
 						</dl>
 						<dl class="details">
-							<dt class="tag-returns"><strong>Returns:</strong> The parsed chunks.</dt>
+							<dt class="tag-returns"><strong>Returns:</strong> The parsed VOX data with properties: chunks, scene.</dt>
 						</dl>
 					</div>
 				<h2 class="subsection-title">Source</h2>

+ 21 - 0
docs/pages/VarNode.html

@@ -128,6 +128,27 @@ the node system auto-generates one.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> The intent flag.</dt>
 						</dl>
 					</div>
+					<h3 class="name name-method" id="isIntent" translate="no">.<a href="#isIntent">isIntent</a><span class="signature">( builder : <span class="param-type"><a href="NodeBuilder.html">NodeBuilder</a></span> )</span><span class="type-signature"> : boolean</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Checks if this node is used for intent.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>builder</strong>
+									</td>
+									<td class="description last">
+										<p>The node builder.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> Whether this node is used for intent.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="setIntent" translate="no">.<a href="#setIntent">setIntent</a><span class="signature">( value : <span class="param-type">boolean</span> )</span><span class="type-signature"> : <a href="VarNode.html">VarNode</a></span> </h3>
 					<div class="method">
 						<div class="description">

+ 1 - 1
docs/pages/VectorKeyframeTrack.html

@@ -63,7 +63,7 @@
 				</div>
 				<h2 class="subsection-title">Properties</h2>
 				<div class="member">
-					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : String</span> </h3>
+					<h3 class="name" id="ValueTypeName" translate="no">.<a href="#ValueTypeName">ValueTypeName</a><span class="type-signature"> : string</span> </h3>
 					<div class="description">
 						<p>The value type name.</p>
 						<p>Default is <code>'vector'</code>.</p>

+ 42 - 0
docs/pages/WGSLNodeBuilder.html

@@ -1013,6 +1013,48 @@ defined in the WGSL source.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> Null.</dt>
 						</dl>
 					</div>
+					<h3 class="name name-method" id="getFloatPackingMethod" translate="no">.<a href="#getFloatPackingMethod">getFloatPackingMethod</a><span class="signature">( encoding : <span class="param-type">string</span> )</span><span class="type-signature"> : string</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Returns the float packing method name for a given numeric encoding.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>encoding</strong>
+									</td>
+									<td class="description last">
+										<p>The numeric encoding that describes how the float values are mapped to the integer range.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The resolve WGSL float packing method name.</dt>
+						</dl>
+					</div>
+					<h3 class="name name-method" id="getFloatUnpackingMethod" translate="no">.<a href="#getFloatUnpackingMethod">getFloatUnpackingMethod</a><span class="signature">( encoding : <span class="param-type">string</span> )</span><span class="type-signature"> : string</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Returns the float unpacking method name for a given numeric encoding.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>encoding</strong>
+									</td>
+									<td class="description last">
+										<p>The numeric encoding that describes how the integer values are mapped to the float range.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The resolve WGSL float unpacking method name.</dt>
+						</dl>
+					</div>
 					<h3 class="name name-method" id="getFragCoord" translate="no">.<a href="#getFragCoord">getFragCoord</a><span class="signature">()</span><span class="type-signature"> : string</span> </h3>
 					<div class="method">
 						<div class="description">

+ 29 - 12
docs/pages/WebGLRenderer.html

@@ -1022,6 +1022,24 @@ size.y = height * pixelRatio;
 							</tbody>
 						</table>
 					</div>
+					<h3 class="name name-method" id="setEffects" translate="no">.<a href="#setEffects">setEffects</a><span class="signature">( effects : <span class="param-type">Array</span> )</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Sets the post-processing effects to be applied after rendering.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>effects</strong>
+									</td>
+									<td class="description last">
+										<p>An array of post-processing effects.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
 					<h3 class="name name-method" id="setOpaqueSort" translate="no">.<a href="#setOpaqueSort">setOpaqueSort</a><span class="signature">( method : <span class="param-type">function</span> )</span> </h3>
 					<div class="method">
 						<div class="description">
@@ -1408,16 +1426,6 @@ Or alternatively a four-component vector specifying all the parameters of the vi
 and the rendering context supports <code>EXT_clip_control</code>.</p>
 			</td>
 		</tr>
-		<tr>
-				<td class="name">
-					<strong>vertexTextures</strong>
-						<br>
-<span class="param-type">boolean</span>
-				</td>
-			<td class="description last">
-				<p><code>true</code> if vertex textures can be used.</p>
-			</td>
-		</tr>
 	</tbody>
 </table>
 				</div>
@@ -1734,6 +1742,17 @@ This is a more faster and accurate version than logarithmic depth buffer.</p>
 						<p>Default is <code>false</code>.</p>
 			</td>
 		</tr>
+		<tr>
+				<td class="name">
+					<strong>outputBufferType</strong>
+						<br>
+<span class="param-type">number</span>
+				</td>
+			<td class="description last">
+				<p>Defines the type of the output buffer. Use <code>HalfFloatType</code> for HDR rendering with tone mapping and post-processing support.</p>
+						<p>Default is <code>UnsignedByteType</code>.</p>
+			</td>
+		</tr>
 	</tbody>
 </table>
 				</div>
@@ -1787,8 +1806,6 @@ will be updated in the next <code>render</code> call.</p>
 |
 <span class="param-type"><a href="global.html#PCFShadowMap">PCFShadowMap</a></span>
 |
-<span class="param-type"><a href="global.html#PCFSoftShadowMap">PCFSoftShadowMap</a></span>
-|
 <span class="param-type"><a href="global.html#VSMShadowMap">VSMShadowMap</a></span>
 				</td>
 			<td class="description last">

+ 2 - 2
docs/pages/WebGPURenderer.html

@@ -165,12 +165,12 @@ standard node library for type mapping.</p>
 		</tr>
 		<tr>
 				<td class="name">
-					<strong>colorBufferType</strong>
+					<strong>outputBufferType</strong>
 						<br>
 <span class="param-type">number</span>
 				</td>
 			<td class="description last">
-				<p>Defines the type of color buffers. The default <code>HalfFloatType</code> is recommend for best
+				<p>Defines the type of output buffers. The default <code>HalfFloatType</code> is recommend for best
 quality. To save memory and bandwidth, <code>UnsignedByteType</code> might be used. This will reduce rendering quality though.</p>
 						<p>Default is <code>HalfFloatType</code>.</p>
 			</td>

+ 0 - 7
docs/pages/XRManager.html

@@ -49,13 +49,6 @@ manage XR sessions with <code>WebGPURenderer</code>.</p>
 					</div>
 				</div>
 				<h2 class="subsection-title">Properties</h2>
-				<div class="member">
-					<h3 class="name" id="_sessionUsesLayers" translate="no">.<a href="#_sessionUsesLayers">_sessionUsesLayers</a><span class="type-signature"> : boolean</span> </h3>
-					<div class="description">
-						<p>Whether the XR session uses layers.</p>
-						<p>Default is <code>false</code>.</p>
-					</div>
-				</div>
 				<div class="member">
 					<h3 class="name" id="cameraAutoUpdate" translate="no">.<a href="#cameraAutoUpdate">cameraAutoUpdate</a><span class="type-signature"> : boolean</span> </h3>
 					<div class="description">

+ 184 - 80
docs/pages/global.html

@@ -93,7 +93,7 @@ each other to build complex performances from smaller re-usable assets.</p>
 				<div class="member">
 					<h3 class="name" id="BasicDepthPacking" translate="no">.<a href="#BasicDepthPacking">BasicDepthPacking</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
-						<p>Basic depth packing.</p>
+						<p>The depth value is inverted (1.0 - z) for visualization purposes.</p>
 					</div>
 				</div>
 				<div class="member">
@@ -191,7 +191,7 @@ each other to build complex performances from smaller re-usable assets.</p>
 					<h3 class="name" id="DATA" translate="no">.<a href="#DATA">DATA</a> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
 						<p>Precomputed DFG LUT for Image-Based Lighting
-Resolution: 32x32
+Resolution: 16x16
 Samples: 4096 per texel
 Format: RG16F (2 half floats per texel: scale, bias)</p>
 					</div>
@@ -646,6 +646,12 @@ alpha transparency.</p>
 						<p>No color space.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="NoNormalPacking" translate="no">.<a href="#NoNormalPacking">NoNormalPacking</a><span class="type-signature"> : string</span> <span class="type-signature">(constant) </span></h3>
+					<div class="description">
+						<p>No normal map packing.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="NoToneMapping" translate="no">.<a href="#NoToneMapping">NoToneMapping</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
@@ -884,6 +890,18 @@ alpha transparency.</p>
 						<p>The default blending.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="NormalGAPacking" translate="no">.<a href="#NormalGAPacking">NormalGAPacking</a><span class="type-signature"> : string</span> <span class="type-signature">(constant) </span></h3>
+					<div class="description">
+						<p>Normal GA packing.</p>
+					</div>
+				</div>
+				<div class="member">
+					<h3 class="name" id="NormalRGPacking" translate="no">.<a href="#NormalRGPacking">NormalRGPacking</a><span class="type-signature"> : string</span> <span class="type-signature">(constant) </span></h3>
+					<div class="description">
+						<p>Normal RG packing.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="NotEqualCompare" translate="no">.<a href="#NotEqualCompare">NotEqualCompare</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
@@ -991,6 +1009,12 @@ alpha transparency.</p>
 better soft shadows especially when using low-resolution shadow maps.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="R11_EAC_Format" translate="no">.<a href="#R11_EAC_Format">R11_EAC_Format</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
+					<div class="description">
+						<p>EAC R11 UNORM format.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="RED_GREEN_RGTC2_Format" translate="no">.<a href="#RED_GREEN_RGTC2_Format">RED_GREEN_RGTC2_Format</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
@@ -1003,10 +1027,16 @@ better soft shadows especially when using low-resolution shadow maps.</p>
 						<p>RGTC1 Red format.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="RG11_EAC_Format" translate="no">.<a href="#RG11_EAC_Format">RG11_EAC_Format</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
+					<div class="description">
+						<p>EAC RG11 UNORM format.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="RGBADepthPacking" translate="no">.<a href="#RGBADepthPacking">RGBADepthPacking</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
-						<p>A depth value is packed into 32 bit RGBA.</p>
+						<p>The depth value is packed into 32 bit RGBA.</p>
 					</div>
 				</div>
 				<div class="member">
@@ -1151,7 +1181,7 @@ compression in how the alpha compression is done.</p>
 				<div class="member">
 					<h3 class="name" id="RGBDepthPacking" translate="no">.<a href="#RGBDepthPacking">RGBDepthPacking</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
-						<p>A depth value is packed into 24 bit RGB.</p>
+						<p>The depth value is packed into 24 bit RGB.</p>
 					</div>
 				</div>
 				<div class="member">
@@ -1211,7 +1241,7 @@ compression in how the alpha compression is done.</p>
 				<div class="member">
 					<h3 class="name" id="RGDepthPacking" translate="no">.<a href="#RGDepthPacking">RGDepthPacking</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
-						<p>A depth value is packed into 16 bit RG.</p>
+						<p>The depth value is packed into 16 bit RG.</p>
 					</div>
 				</div>
 				<div class="member">
@@ -1262,6 +1292,12 @@ compression in how the alpha compression is done.</p>
 						<p>A <code>destination - source</code> blending equation.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="SIGNED_R11_EAC_Format" translate="no">.<a href="#SIGNED_R11_EAC_Format">SIGNED_R11_EAC_Format</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
+					<div class="description">
+						<p>EAC R11 SNORM format.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="SIGNED_RED_GREEN_RGTC2_Format" translate="no">.<a href="#SIGNED_RED_GREEN_RGTC2_Format">SIGNED_RED_GREEN_RGTC2_Format</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
@@ -1274,6 +1310,12 @@ compression in how the alpha compression is done.</p>
 						<p>RGTC1 Signed Red format.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="SIGNED_RG11_EAC_Format" translate="no">.<a href="#SIGNED_RG11_EAC_Format">SIGNED_RG11_EAC_Format</a><span class="type-signature"> : number</span> <span class="type-signature">(constant) </span></h3>
+					<div class="description">
+						<p>EAC RG11 SNORM format.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="SRGBColorSpace" translate="no">.<a href="#SRGBColorSpace">SRGBColorSpace</a><span class="type-signature"> : string</span> <span class="type-signature">(constant) </span></h3>
 					<div class="description">
@@ -1537,6 +1579,12 @@ When using VSMShadowMap all shadow receivers will also cast shadows.</p>
 						<p>Sets the stencil buffer value to <code>0</code>.</p>
 					</div>
 				</div>
+				<div class="member">
+					<h3 class="name" id="disposeShadowMaterial" translate="no">.<a href="#disposeShadowMaterial">disposeShadowMaterial</a> <span class="type-signature">(constant) </span></h3>
+					<div class="description">
+						<p>Disposes the shadow material for the given light source.</p>
+					</div>
+				</div>
 				<div class="member">
 					<h3 class="name" id="viewportResolution" translate="no">.<a href="#viewportResolution">viewportResolution</a> <span class="type-signature">(constant) </span></h3>
 						<dl class="details">
@@ -1589,7 +1637,10 @@ with a binary <code>[0,1]</code> result.</p>
 					<h3 class="name name-method" id="PCFShadowFilter" translate="no">.<a href="#PCFShadowFilter">PCFShadowFilter</a><span class="signature">( inputs : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;float></span> </h3>
 					<div class="method">
 						<div class="description">
-							<p>A shadow filtering function performing PCF filtering.</p>
+							<p>A shadow filtering function performing PCF filtering with Vogel disk sampling and IGN.</p>
+<p>Uses 5 samples distributed via Vogel disk pattern, rotated per-pixel using Interleaved
+Gradient Noise (IGN) to break up banding artifacts. Combined with hardware PCF (4-tap
+filtering per sample), this effectively provides 20 filtered taps with better distribution.</p>
 						</div>
 						<table class="params">
 							<tbody>
@@ -1684,31 +1735,12 @@ with a binary <code>[0,1]</code> result.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> The filtering result.</dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="Stack" translate="no">.<a href="#Stack">Stack</a><span class="signature">( node : <span class="param-type"><a href="Node.html">Node</a></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
+					<h3 class="name name-method" id="PointShadowFilter" translate="no">.<a href="#PointShadowFilter">PointShadowFilter</a><span class="signature">( inputs : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;float></span> </h3>
 					<div class="method">
 						<div class="description">
-							<p>Add the given node to the current stack.</p>
-						</div>
-						<table class="params">
-							<tbody>
-								<tr>
-									<td class="name">
-										<strong>node</strong>
-									</td>
-									<td class="description last">
-										<p>The node to add.</p>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-						<dl class="details">
-							<dt class="tag-returns"><strong>Returns:</strong> The node that was added to the stack.</dt>
-						</dl>
-					</div>
-					<h3 class="name name-method" id="VSMPassHorizontal" translate="no">.<a href="#VSMPassHorizontal">VSMPassHorizontal</a><span class="signature">( inputs : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;vec2></span> </h3>
-					<div class="method">
-						<div class="description">
-							<p>Represents the shader code for the second VSM render pass.</p>
+							<p>A shadow filtering function for point lights using Vogel disk sampling and IGN.</p>
+<p>Uses 5 samples distributed via Vogel disk pattern in tangent space around the
+sample direction, rotated per-pixel using Interleaved Gradient Noise (IGN).</p>
 						</div>
 						<table class="params">
 							<tbody>
@@ -1722,34 +1754,34 @@ with a binary <code>[0,1]</code> result.</p>
 							<tbody>
 								<tr>
 									<td class="name">
-										<strong>samples</strong>
+										<strong>depthTexture</strong>
 									</td>
 									<td class="description last">
-										<p>The number of samples</p>
+										<p>A reference to the shadow cube map.</p>
 									</td>
 								</tr>
 								<tr>
 									<td class="name">
-										<strong>radius</strong>
+										<strong>bd3D</strong>
 									</td>
 									<td class="description last">
-										<p>The radius.</p>
+										<p>The normalized direction from light to fragment.</p>
 									</td>
 								</tr>
 								<tr>
 									<td class="name">
-										<strong>size</strong>
+										<strong>dp</strong>
 									</td>
 									<td class="description last">
-										<p>The size.</p>
+										<p>The depth value to compare against.</p>
 									</td>
 								</tr>
 								<tr>
 									<td class="name">
-										<strong>shadowPass</strong>
+										<strong>shadow</strong>
 									</td>
 									<td class="description last">
-										<p>The result of the first VSM render pass.</p>
+										<p>The light shadow.</p>
 									</td>
 								</tr>
 							</tbody>
@@ -1759,54 +1791,59 @@ with a binary <code>[0,1]</code> result.</p>
 							</tbody>
 						</table>
 						<dl class="details">
-							<dt class="tag-returns"><strong>Returns:</strong> The VSM output.</dt>
+							<dt class="tag-returns"><strong>Returns:</strong> The filtering result.</dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="VSMPassVertical" translate="no">.<a href="#VSMPassVertical">VSMPassVertical</a><span class="signature">( inputs : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;vec2></span> </h3>
+					<h3 class="name name-method" id="Stack" translate="no">.<a href="#Stack">Stack</a><span class="signature">( node : <span class="param-type"><a href="Node.html">Node</a></span> )</span><span class="type-signature"> : <a href="Node.html">Node</a></span> </h3>
 					<div class="method">
 						<div class="description">
-							<p>Represents the shader code for the first VSM render pass.</p>
+							<p>Add the given node to the current stack.</p>
 						</div>
 						<table class="params">
 							<tbody>
 								<tr>
 									<td class="name">
-										<strong>inputs</strong>
-									</td>
-									<td class="description last">
-										<p>The input parameter object.</p>
-						<table class="params">
-							<tbody>
-								<tr>
-									<td class="name">
-										<strong>samples</strong>
+										<strong>node</strong>
 									</td>
 									<td class="description last">
-										<p>The number of samples</p>
+										<p>The node to add.</p>
 									</td>
 								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The node that was added to the stack.</dt>
+						</dl>
+					</div>
+					<h3 class="name name-method" id="VSMShadowFilter" translate="no">.<a href="#VSMShadowFilter">VSMShadowFilter</a><span class="signature">( inputs : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;float></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>A shadow filtering function performing VSM filtering.</p>
+						</div>
+						<table class="params">
+							<tbody>
 								<tr>
 									<td class="name">
-										<strong>radius</strong>
+										<strong>inputs</strong>
 									</td>
 									<td class="description last">
-										<p>The radius.</p>
-									</td>
-								</tr>
+										<p>The input parameter object.</p>
+						<table class="params">
+							<tbody>
 								<tr>
 									<td class="name">
-										<strong>size</strong>
+										<strong>depthTexture</strong>
 									</td>
 									<td class="description last">
-										<p>The size.</p>
+										<p>A reference to the shadow map's texture data.</p>
 									</td>
 								</tr>
 								<tr>
 									<td class="name">
-										<strong>shadowPass</strong>
+										<strong>shadowCoord</strong>
 									</td>
 									<td class="description last">
-										<p>A reference to the render target's depth data.</p>
+										<p>The shadow coordinates.</p>
 									</td>
 								</tr>
 							</tbody>
@@ -1816,48 +1853,49 @@ with a binary <code>[0,1]</code> result.</p>
 							</tbody>
 						</table>
 						<dl class="details">
-							<dt class="tag-returns"><strong>Returns:</strong> The VSM output.</dt>
+							<dt class="tag-returns"><strong>Returns:</strong> The filtering result.</dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="VSMShadowFilter" translate="no">.<a href="#VSMShadowFilter">VSMShadowFilter</a><span class="signature">( inputs : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="Node.html">Node</a>.&lt;float></span> </h3>
+					<h3 class="name name-method" id="buildData3DTexture" translate="no">.<a href="#buildData3DTexture">buildData3DTexture</a><span class="signature">( chunk : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="Data3DTexture.html">Data3DTexture</a></span> </h3>
 					<div class="method">
 						<div class="description">
-							<p>A shadow filtering function performing VSM filtering.</p>
+							<p>Builds a 3D texture from a VOX chunk.</p>
 						</div>
 						<table class="params">
 							<tbody>
 								<tr>
 									<td class="name">
-										<strong>inputs</strong>
+										<strong>chunk</strong>
 									</td>
 									<td class="description last">
-										<p>The input parameter object.</p>
-						<table class="params">
-							<tbody>
-								<tr>
-									<td class="name">
-										<strong>depthTexture</strong>
-									</td>
-									<td class="description last">
-										<p>A reference to the shadow map's texture data.</p>
+										<p>A VOX chunk loaded via <a href="VOXLoader.html">VOXLoader</a>.</p>
 									</td>
 								</tr>
+							</tbody>
+						</table>
+						<dl class="details">
+							<dt class="tag-returns"><strong>Returns:</strong> The generated 3D texture.</dt>
+						</dl>
+					</div>
+					<h3 class="name name-method" id="buildMesh" translate="no">.<a href="#buildMesh">buildMesh</a><span class="signature">( chunk : <span class="param-type">Object</span> )</span><span class="type-signature"> : <a href="Mesh.html">Mesh</a></span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Builds a mesh from a VOX chunk.</p>
+						</div>
+						<table class="params">
+							<tbody>
 								<tr>
 									<td class="name">
-										<strong>shadowCoord</strong>
+										<strong>chunk</strong>
 									</td>
 									<td class="description last">
-										<p>The shadow coordinates.</p>
-									</td>
-								</tr>
-							</tbody>
-						</table>
+										<p>A VOX chunk loaded via <a href="VOXLoader.html">VOXLoader</a>.</p>
 									</td>
 								</tr>
 							</tbody>
 						</table>
 						<dl class="details">
-							<dt class="tag-returns"><strong>Returns:</strong> The filtering result.</dt>
+							<dt class="tag-returns"><strong>Returns:</strong> The generated mesh.</dt>
 						</dl>
 					</div>
 					<h3 class="name name-method" id="ceilPowerOfTwo" translate="no">.<a href="#ceilPowerOfTwo">ceilPowerOfTwo</a><span class="signature">( value : <span class="param-type">number</span> )</span><span class="type-signature"> : number</span> </h3>
@@ -2723,7 +2761,7 @@ between the start and end point.</p>
 							<dt class="tag-returns"><strong>Returns:</strong> Whether the given number is a power of two or not.</dt>
 						</dl>
 					</div>
-					<h3 class="name name-method" id="isTypedArray" translate="no">.<a href="#isTypedArray">isTypedArray</a><span class="signature">( object : <span class="param-type"><a href="global.html#any">any</a></span> )</span><span class="type-signature"> : boolean</span> </h3>
+					<h3 class="name name-method" id="isTypedArray" translate="no">.<a href="#isTypedArray">isTypedArray</a><span class="signature">( array : <span class="param-type"><a href="global.html#any">any</a></span> )</span><span class="type-signature"> : boolean</span> </h3>
 					<div class="method">
 						<div class="description">
 							<p>Returns <code>true</code> if the given object is a typed array.</p>
@@ -2732,7 +2770,7 @@ between the start and end point.</p>
 							<tbody>
 								<tr>
 									<td class="name">
-										<strong>object</strong>
+										<strong>array</strong>
 									</td>
 									<td class="description last">
 										<p>The object to check.</p>
@@ -3184,6 +3222,72 @@ rotation by angle <code>a</code> is applied first, then by angle <code>b</code>,
 							</tbody>
 						</table>
 					</div>
+					<h3 class="name name-method" id="shadowRenderObjectFunction" translate="no">.<a href="#shadowRenderObjectFunction">shadowRenderObjectFunction</a><span class="signature">( object : <span class="param-type"><a href="Object3D.html">Object3D</a></span>, scene : <span class="param-type"><a href="Scene.html">Scene</a></span>, _camera : <span class="param-type"><a href="Camera.html">Camera</a></span>, geometry : <span class="param-type"><a href="BufferGeometry.html">BufferGeometry</a></span>, material : <span class="param-type"><a href="Material.html">Material</a></span>, group : <span class="param-type"><a href="Group.html">Group</a></span>, &hellip;params : <span class="param-type"><a href="global.html#any">any</a></span> )</span> </h3>
+					<div class="method">
+						<div class="description">
+							<p>Shadow Render Object Function.</p>
+						</div>
+						<table class="params">
+							<tbody>
+								<tr>
+									<td class="name">
+										<strong>object</strong>
+									</td>
+									<td class="description last">
+										<p>The 3D object to render.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>scene</strong>
+									</td>
+									<td class="description last">
+										<p>The scene containing the object.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>_camera</strong>
+									</td>
+									<td class="description last">
+										<p>The camera used for rendering.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>geometry</strong>
+									</td>
+									<td class="description last">
+										<p>The geometry of the object.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>material</strong>
+									</td>
+									<td class="description last">
+										<p>The material of the object.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>group</strong>
+									</td>
+									<td class="description last">
+										<p>The group the object belongs to.</p>
+									</td>
+								</tr>
+								<tr>
+									<td class="name">
+										<strong>params</strong>
+									</td>
+									<td class="description last">
+										<p>Additional parameters for rendering.</p>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
 					<h3 class="name name-method" id="smootherstep" translate="no">.<a href="#smootherstep">smootherstep</a><span class="signature">( x : <span class="param-type">number</span>, min : <span class="param-type">number</span>, max : <span class="param-type">number</span> )</span><span class="type-signature"> : number</span> </h3>
 					<div class="method">
 						<div class="description">

+ 1 - 1
docs/pages/module-UnpackDepthRGBAShader.html

@@ -23,7 +23,7 @@
 				<div class="member">
 					<h3 class="name" id="~UnpackDepthRGBAShader" translate="no">.<a href="#~UnpackDepthRGBAShader">UnpackDepthRGBAShader</a><span class="type-signature"> : <a href="ShaderMaterial.html#~Shader">ShaderMaterial~Shader</a></span> <span class="type-signature">(inner, constant) </span></h3>
 					<div class="description">
-						<p>Unpack RGBA depth shader that shows RGBA encoded depth as monochrome color.</p>
+						<p>Depth visualization shader that shows depth values as monochrome color.</p>
 					</div>
 				</div>
 				<h2 class="subsection-title">Source</h2>

Разница между файлами не показана из-за своего большого размера
+ 340 - 124
docs/search.json


+ 33 - 0
editor/js/Editor.js

@@ -396,6 +396,32 @@ Editor.prototype = {
 
 					helper = new THREE.PointLightHelper( object, 1 );
 
+					helper.matrix = new THREE.Matrix4();
+					helper.matrixAutoUpdate = true;
+
+					const light = object;
+					const editor = this;
+
+					helper.updateMatrixWorld = function () {
+
+						light.getWorldPosition( this.position );
+
+						const distance = editor.viewportCamera.position.distanceTo( this.position );
+						this.scale.setScalar( distance / 30 );
+
+						this.updateMatrix();
+						this.matrixWorld.copy( this.matrix );
+
+						const children = this.children;
+
+						for ( let i = 0, l = children.length; i < l; i ++ ) {
+
+							children[ i ].updateMatrixWorld();
+
+						}
+
+					};
+
 				} else if ( object.isDirectionalLight ) {
 
 					helper = new THREE.DirectionalLightHelper( object, 1 );
@@ -647,6 +673,12 @@ Editor.prototype = {
 		delete this.cameras[ existingUuid ]; // remove old entry [existingUuid, this.camera]
 		this.cameras[ incomingUuid ] = this.camera; // add new entry [incomingUuid, this.camera]
 
+		if ( json.controls !== undefined ) {
+
+			this.controls.fromJSON( json.controls );
+
+		}
+
 		this.signals.cameraResetted.dispatch();
 
 		this.history.fromJSON( json.history );
@@ -705,6 +737,7 @@ Editor.prototype = {
 				toneMappingExposure: this.config.getKey( 'project/renderer/toneMappingExposure' )
 			},
 			camera: this.viewportCamera.toJSON(),
+			controls: this.controls.toJSON(),
 			scene: this.scene.toJSON(),
 			scripts: this.scripts,
 			history: this.history.toJSON(),

+ 16 - 1
editor/js/EditorControls.js

@@ -364,7 +364,8 @@ class EditorControls extends THREE.EventDispatcher {
 
 					touches[ 0 ].set( event.pageX, event.pageY, 0 ).divideScalar( window.devicePixelRatio );
 					touches[ 1 ].set( position.x, position.y, 0 ).divideScalar( window.devicePixelRatio );
-					var distance = touches[ 0 ].distanceTo( touches[ 1 ] );
+					// Divide by 10 to offset inherent over-sensitivity (https://github.com/mrdoob/three.js/issues/32442)
+					var distance = touches[ 0 ].distanceTo( touches[ 1 ] ) / 10;
 					scope.zoom( delta.set( 0, 0, prevDistance - distance ) );
 					prevDistance = distance;
 
@@ -445,6 +446,20 @@ class EditorControls extends THREE.EventDispatcher {
 
 	}
 
+	fromJSON( json ) {
+
+		if ( json.center !== undefined ) this.center.fromArray( json.center );
+
+	}
+
+	toJSON() {
+
+		return {
+			center: this.center.toArray()
+		};
+
+	}
+
 }
 
 export { EditorControls };

+ 4 - 14
editor/js/Loader.js

@@ -675,23 +675,13 @@ function Loader( editor ) {
 
 					const contents = event.target.result;
 
-					const { VOXLoader, VOXMesh } = await import( 'three/addons/loaders/VOXLoader.js' );
+					const { VOXLoader } = await import( 'three/addons/loaders/VOXLoader.js' );
 
-					const chunks = new VOXLoader().parse( contents );
+					const { scene } = new VOXLoader().parse( contents );
 
-					const group = new THREE.Group();
-					group.name = filename;
-
-					for ( let i = 0; i < chunks.length; i ++ ) {
-
-						const chunk = chunks[ i ];
+					scene.name = filename;
 
-						const mesh = new VOXMesh( chunk );
-						group.add( mesh );
-
-					}
-
-					editor.execute( new AddObjectCommand( editor, group ) );
+					editor.execute( new AddObjectCommand( editor, scene ) );
 
 				}, false );
 				reader.readAsArrayBuffer( file );

+ 1 - 1
editor/js/Script.js

@@ -486,7 +486,7 @@ function Script( editor ) {
 
 	} );
 
-	signals.materialChanged.add( function ( object, slot ) {
+	signals.materialChanged.add( function ( object/*, slot */ ) {
 
 		if ( object !== currentObject ) return;
 

+ 27 - 5
editor/js/Selector.js

@@ -18,17 +18,39 @@ class Selector {
 
 			if ( intersects.length > 0 ) {
 
-				const object = intersects[ 0 ].object;
+				// Resolve helpers to their actual objects
 
-				if ( object.userData.object !== undefined ) {
+				const objects = [];
 
-					// helper
+				for ( let i = 0; i < intersects.length; i ++ ) {
 
-					this.select( object.userData.object );
+					let object = intersects[ i ].object;
+
+					if ( object.userData.object !== undefined ) {
+
+						object = object.userData.object;
+
+					}
+
+					if ( objects.indexOf( object ) === - 1 ) {
+
+						objects.push( object );
+
+					}
+
+				}
+
+				// Cycle through objects if the first one is already selected
+
+				const index = objects.indexOf( editor.selected );
+
+				if ( index !== - 1 && index < objects.length - 1 ) {
+
+					this.select( objects[ index + 1 ] );
 
 				} else {
 
-					this.select( object );
+					this.select( objects[ 0 ] );
 
 				}
 

+ 1 - 1
editor/js/Sidebar.Material.js

@@ -439,7 +439,7 @@ function SidebarMaterial( editor ) {
 			output = JSON.stringify( output, null, '\t' );
 			output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
 
-		} catch ( e ) {
+		} catch ( error ) {
 
 			output = JSON.stringify( output );
 

+ 1 - 1
editor/js/Sidebar.Object.js

@@ -415,7 +415,7 @@ function SidebarObject( editor ) {
 			output = JSON.stringify( output, null, '\t' );
 			output = output.replace( /[\n\t]+([\d\.e\-\[\]]+)/g, '$1' );
 
-		} catch ( e ) {
+		} catch ( error ) {
 
 			output = JSON.stringify( output );
 

+ 1 - 2
editor/js/Sidebar.Project.Renderer.js

@@ -37,8 +37,7 @@ function SidebarProjectRenderer( editor ) {
 	const shadowTypeSelect = new UISelect().setOptions( {
 		0: 'Basic',
 		1: 'PCF',
-		2: 'PCF Soft',
-		//	3: 'VSM'
+		3: 'VSM'
 	} ).setWidth( '125px' ).onChange( updateShadows );
 	shadowTypeSelect.setValue( config.getKey( 'project/renderer/shadowType' ) );
 	shadowsRow.add( shadowTypeSelect );

+ 2 - 0
editor/js/Viewport.js

@@ -283,6 +283,8 @@ function Viewport( editor ) {
 	} );
 	viewHelper.center = controls.center;
 
+	editor.controls = controls;
+
 	// signals
 
 	signals.editorCleared.add( function () {

+ 2 - 2
editor/sw.js

@@ -239,7 +239,7 @@ self.addEventListener( 'install', async function () {
 
 			await cache.add( asset );
 
-		} catch {
+		} catch ( error ) {
 
 			console.warn( '[SW] Couldn\'t cache:', asset );
 
@@ -284,7 +284,7 @@ async function networkFirst( request ) {
 
 		return response;
 
-	} catch {
+	} catch ( error ) {
 
 		const cachedResponse = await caches.match( request );
 

+ 5 - 1
examples/files.json

@@ -414,13 +414,14 @@
 		"webgpu_postprocessing_difference",
 		"webgpu_postprocessing_dof",
 		"webgpu_postprocessing_dof_basic",
-		"webgpu_postprocessing_pixel",
 		"webgpu_postprocessing_fxaa",
 		"webgpu_postprocessing_lensflare",
 		"webgpu_postprocessing_masking",
 		"webgpu_postprocessing_ca",
 		"webgpu_postprocessing_motion_blur",
 		"webgpu_postprocessing_outline",
+		"webgpu_postprocessing_pixel",
+		"webgpu_postprocessing_radial_blur",
 		"webgpu_postprocessing_smaa",
 		"webgpu_postprocessing_sobel",
 		"webgpu_postprocessing_ssaa",
@@ -439,10 +440,12 @@
 		"webgpu_rtt",
 		"webgpu_sandbox",
 		"webgpu_shadertoy",
+		"webgpu_shadow_contact",
 		"webgpu_shadowmap",
 		"webgpu_shadowmap_array",
 		"webgpu_shadowmap_csm",
 		"webgpu_shadowmap_opacity",
+		"webgpu_shadowmap_pointlight",
 		"webgpu_shadowmap_progressive",
 		"webgpu_shadowmap_vsm",
 		"webgpu_skinning",
@@ -452,6 +455,7 @@
 		"webgpu_sprites",
 		"webgpu_storage_buffer",
 		"webgpu_struct_drawindirect",
+		"webgpu_test_memory",
 		"webgpu_texturegrad",
 		"webgpu_textures_2d-array",
 		"webgpu_textures_2d-array_compressed",

Некоторые файлы не были показаны из-за большого количества измененных файлов

粤ICP备19079148号