Просмотр исходного кода

Added llms.txt, llms-full.txt and llms/build.js script. (#32673)

mrdoob 2 недель назад
Родитель
Сommit
b6d40aebc2
100 измененных файлов с 13231 добавлено и 0 удалено
  1. 0 0
      docs/TSL.md
  2. 2713 0
      docs/llms-full.txt
  3. 158 0
      docs/llms.txt
  4. 73 0
      docs/pages/AMFLoader.html.md
  5. 29 0
      docs/pages/AONode.html.md
  6. 37 0
      docs/pages/ARButton.html.md
  7. 97 0
      docs/pages/AfterImageNode.html.md
  8. 106 0
      docs/pages/AfterimagePass.html.md
  9. 44 0
      docs/pages/AmbientLight.html.md
  10. 21 0
      docs/pages/AmbientLightNode.html.md
  11. 79 0
      docs/pages/AmmoPhysics.html.md
  12. 69 0
      docs/pages/AnaglyphEffect.html.md
  13. 51 0
      docs/pages/AnaglyphPassNode.html.md
  14. 139 0
      docs/pages/AnalyticLightNode.html.md
  15. 127 0
      docs/pages/AnamorphicNode.html.md
  16. 337 0
      docs/pages/AnimationAction.html.md
  17. 197 0
      docs/pages/AnimationClip.html.md
  18. 101 0
      docs/pages/AnimationClipCreator.html.md
  19. 62 0
      docs/pages/AnimationLoader.html.md
  20. 133 0
      docs/pages/AnimationMixer.html.md
  21. 70 0
      docs/pages/AnimationObjectGroup.html.md
  22. 137 0
      docs/pages/AnimationUtils.html.md
  23. 59 0
      docs/pages/ArcCurve.html.md
  24. 307 0
      docs/pages/ArcballControls.html.md
  25. 41 0
      docs/pages/ArrayCamera.html.md
  26. 69 0
      docs/pages/ArrayElementNode.html.md
  27. 122 0
      docs/pages/ArrayNode.html.md
  28. 116 0
      docs/pages/ArrowHelper.html.md
  29. 124 0
      docs/pages/AsciiEffect.html.md
  30. 59 0
      docs/pages/AssignNode.html.md
  31. 75 0
      docs/pages/AtomicFunctionNode.html.md
  32. 57 0
      docs/pages/AttributeNode.html.md
  33. 383 0
      docs/pages/Audio.html.md
  34. 71 0
      docs/pages/AudioAnalyser.html.md
  35. 23 0
      docs/pages/AudioContext.html.md
  36. 89 0
      docs/pages/AudioListener.html.md
  37. 54 0
      docs/pages/AudioLoader.html.md
  38. 52 0
      docs/pages/AxesHelper.html.md
  39. 93 0
      docs/pages/BVHLoader.html.md
  40. 21 0
      docs/pages/BarrierNode.html.md
  41. 29 0
      docs/pages/BasicEnvironmentNode.html.md
  42. 27 0
      docs/pages/BasicLightMapNode.html.md
  43. 37 0
      docs/pages/BasicLightingModel.html.md
  44. 43 0
      docs/pages/BatchNode.html.md
  45. 388 0
      docs/pages/BatchedMesh.html.md
  46. 51 0
      docs/pages/BitcastNode.html.md
  47. 31 0
      docs/pages/BitcountNode.html.md
  48. 23 0
      docs/pages/BitonicSort_BitonicSort.html.md
  49. 146 0
      docs/pages/BloomNode.html.md
  50. 124 0
      docs/pages/BloomPass.html.md
  51. 145 0
      docs/pages/BokehPass.html.md
  52. 32 0
      docs/pages/Bone.html.md
  53. 55 0
      docs/pages/BooleanKeyframeTrack.html.md
  54. 267 0
      docs/pages/Box2.html.md
  55. 385 0
      docs/pages/Box3.html.md
  56. 46 0
      docs/pages/Box3Helper.html.md
  57. 78 0
      docs/pages/BoxGeometry.html.md
  58. 60 0
      docs/pages/BoxHelper.html.md
  59. 68 0
      docs/pages/BoxLineGeometry.html.md
  60. 433 0
      docs/pages/BufferAttribute.html.md
  61. 187 0
      docs/pages/BufferAttributeNode.html.md
  62. 411 0
      docs/pages/BufferGeometry.html.md
  63. 65 0
      docs/pages/BufferGeometryLoader.html.md
  64. 102 0
      docs/pages/BufferNode.html.md
  65. 47 0
      docs/pages/BuiltinNode.html.md
  66. 43 0
      docs/pages/BumpMapNode.html.md
  67. 53 0
      docs/pages/BundleGroup.html.md
  68. 45 0
      docs/pages/BypassNode.html.md
  69. 73 0
      docs/pages/CCDIKHelper.html.md
  70. 155 0
      docs/pages/CCDIKSolver.html.md
  71. 244 0
      docs/pages/CSM.html.md
  72. 96 0
      docs/pages/CSMFrustum.html.md
  73. 65 0
      docs/pages/CSMHelper.html.md
  74. 146 0
      docs/pages/CSMShadowNode.html.md
  75. 47 0
      docs/pages/CSS2DObject.html.md
  76. 84 0
      docs/pages/CSS2DRenderer.html.md
  77. 41 0
      docs/pages/CSS3DObject.html.md
  78. 82 0
      docs/pages/CSS3DRenderer.html.md
  79. 41 0
      docs/pages/CSS3DSprite.html.md
  80. 55 0
      docs/pages/Cache.html.md
  81. 61 0
      docs/pages/Camera.html.md
  82. 77 0
      docs/pages/CameraHelper.html.md
  83. 204 0
      docs/pages/CanvasTarget.html.md
  84. 77 0
      docs/pages/CanvasTexture.html.md
  85. 119 0
      docs/pages/Capsule.html.md
  86. 72 0
      docs/pages/CapsuleGeometry.html.md
  87. 103 0
      docs/pages/CatmullRomCurve3.html.md
  88. 87 0
      docs/pages/ChromaticAberrationNode.html.md
  89. 55 0
      docs/pages/CinquefoilKnot.html.md
  90. 66 0
      docs/pages/CircleGeometry.html.md
  91. 60 0
      docs/pages/ClearMaskPass.html.md
  92. 92 0
      docs/pages/ClearPass.html.md
  93. 47 0
      docs/pages/ClippingGroup.html.md
  94. 83 0
      docs/pages/ClippingNode.html.md
  95. 73 0
      docs/pages/Clock.html.md
  96. 89 0
      docs/pages/CodeNode.html.md
  97. 73 0
      docs/pages/ColladaLoader.html.md
  98. 554 0
      docs/pages/Color.html.md
  99. 53 0
      docs/pages/ColorConverter.html.md
  100. 41 0
      docs/pages/ColorKeyframeTrack.html.md

+ 0 - 0
wiki/TSL.md → docs/TSL.md


+ 2713 - 0
docs/llms-full.txt

@@ -0,0 +1,2713 @@
+# Three.js
+
+> Three.js is a cross-browser JavaScript library for creating 3D graphics using WebGL and WebGPU.
+
+## Instructions for Large Language Models
+
+When generating Three.js code, follow these guidelines:
+
+### 1. Use Import Maps (Not Old CDN Patterns)
+
+WRONG - outdated pattern:
+```html
+<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
+```
+
+CORRECT - modern pattern (always use latest version):
+```html
+<script type="importmap">
+{
+  "imports": {
+    "three": "https://cdn.jsdelivr.net/npm/three@0.182.0/build/three.module.js",
+    "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.182.0/examples/jsm/"
+  }
+}
+</script>
+<script type="module">
+import * as THREE from 'three';
+import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+</script>
+```
+
+### 2. Choosing Between WebGLRenderer and WebGPURenderer
+
+Three.js maintains both renderers:
+
+**Use WebGLRenderer** (default, mature):
+- Maximum browser compatibility
+- Well-established, many years of development
+- Most examples and tutorials use this
+
+```js
+import * as THREE from 'three';
+const renderer = new THREE.WebGLRenderer();
+```
+
+**Use WebGPURenderer** when you need:
+- Custom shaders/materials using TSL (Three.js Shading Language)
+- Compute shaders
+- Advanced node-based materials
+
+```js
+import * as THREE from 'three/webgpu';
+const renderer = new THREE.WebGPURenderer();
+await renderer.init();
+```
+
+### 3. TSL (Three.js Shading Language)
+
+When using WebGPURenderer, use TSL instead of raw GLSL for custom materials:
+
+```js
+import { texture, uv, color } from 'three/tsl';
+
+const material = new THREE.MeshStandardNodeMaterial();
+material.colorNode = texture( myTexture ).mul( color( 0xff0000 ) );
+```
+
+TSL benefits:
+- Works with both WebGL and WebGPU backends
+- No string manipulation or onBeforeCompile hacks
+- Type-safe, composable shader nodes
+- Automatic optimization
+
+### 4. NodeMaterial Classes (for WebGPU/TSL)
+
+When using TSL, use node-based materials:
+- MeshBasicNodeMaterial
+- MeshStandardNodeMaterial
+- MeshPhysicalNodeMaterial
+- LineBasicNodeMaterial
+- SpriteNodeMaterial
+
+---
+
+## Complete Code Examples
+
+### Basic Scene with WebGLRenderer
+
+```html
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>Three.js Basic Scene</title>
+  <style>
+    body { margin: 0; }
+  </style>
+</head>
+<body>
+<script type="importmap">
+{
+  "imports": {
+    "three": "https://cdn.jsdelivr.net/npm/three@0.182.0/build/three.module.js",
+    "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.182.0/examples/jsm/"
+  }
+}
+</script>
+<script type="module">
+import * as THREE from 'three';
+import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+
+// Scene
+const scene = new THREE.Scene();
+
+// Camera
+const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
+camera.position.z = 5;
+
+// Renderer
+const renderer = new THREE.WebGLRenderer( { antialias: true } );
+renderer.setSize( window.innerWidth, window.innerHeight );
+renderer.setPixelRatio( window.devicePixelRatio );
+document.body.appendChild( renderer.domElement );
+
+// Controls
+const controls = new OrbitControls( camera, renderer.domElement );
+
+// Lighting
+const ambientLight = new THREE.AmbientLight( 0x404040 );
+scene.add( ambientLight );
+
+const directionalLight = new THREE.DirectionalLight( 0xffffff, 1 );
+directionalLight.position.set( 5, 5, 5 );
+scene.add( directionalLight );
+
+// Mesh
+const geometry = new THREE.BoxGeometry( 1, 1, 1 );
+const material = new THREE.MeshStandardMaterial( { color: 0x00ff00 } );
+const cube = new THREE.Mesh( geometry, material );
+scene.add( cube );
+
+// Handle resize
+window.addEventListener( 'resize', () => {
+  camera.aspect = window.innerWidth / window.innerHeight;
+  camera.updateProjectionMatrix();
+  renderer.setSize( window.innerWidth, window.innerHeight );
+} );
+
+// Animation loop
+function animate() {
+  cube.rotation.x += 0.01;
+  cube.rotation.y += 0.01;
+  controls.update();
+  renderer.render( scene, camera );
+}
+renderer.setAnimationLoop( animate );
+</script>
+</body>
+</html>
+```
+
+### Basic Scene with WebGPURenderer and TSL
+
+```html
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>Three.js WebGPU Scene</title>
+  <style>
+    body { margin: 0; }
+  </style>
+</head>
+<body>
+<script type="importmap">
+{
+  "imports": {
+    "three": "https://cdn.jsdelivr.net/npm/three@0.182.0/build/three.webgpu.js",
+    "three/tsl": "https://cdn.jsdelivr.net/npm/three@0.182.0/build/three.tsl.js",
+    "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.182.0/examples/jsm/"
+  }
+}
+</script>
+<script type="module">
+import * as THREE from 'three';
+import { color, positionLocal, sin, time } from 'three/tsl';
+import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+
+// Scene
+const scene = new THREE.Scene();
+
+// Camera
+const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
+camera.position.z = 5;
+
+// Renderer
+const renderer = new THREE.WebGPURenderer( { antialias: true } );
+renderer.setSize( window.innerWidth, window.innerHeight );
+renderer.setPixelRatio( window.devicePixelRatio );
+document.body.appendChild( renderer.domElement );
+
+await renderer.init();
+
+// Controls
+const controls = new OrbitControls( camera, renderer.domElement );
+
+// Lighting
+const ambientLight = new THREE.AmbientLight( 0x404040 );
+scene.add( ambientLight );
+
+const directionalLight = new THREE.DirectionalLight( 0xffffff, 1 );
+directionalLight.position.set( 5, 5, 5 );
+scene.add( directionalLight );
+
+// Custom TSL material
+const material = new THREE.MeshStandardNodeMaterial();
+material.colorNode = color( 0x00ff00 ).mul( sin( time ).mul( 0.5 ).add( 0.5 ) );
+material.positionNode = positionLocal.add( sin( time.add( positionLocal.y ) ).mul( 0.1 ) );
+
+// Mesh
+const geometry = new THREE.BoxGeometry( 1, 1, 1 );
+const cube = new THREE.Mesh( geometry, material );
+scene.add( cube );
+
+// Handle resize
+window.addEventListener( 'resize', () => {
+  camera.aspect = window.innerWidth / window.innerHeight;
+  camera.updateProjectionMatrix();
+  renderer.setSize( window.innerWidth, window.innerHeight );
+} );
+
+// Animation loop
+function animate() {
+  cube.rotation.x += 0.01;
+  cube.rotation.y += 0.01;
+  controls.update();
+  renderer.render( scene, camera );
+}
+renderer.setAnimationLoop( animate );
+</script>
+</body>
+</html>
+```
+
+### Loading a GLTF Model
+
+```js
+import * as THREE from 'three';
+import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
+
+const loader = new GLTFLoader();
+
+loader.load(
+  'model.glb',
+  ( gltf ) => {
+    scene.add( gltf.scene );
+  },
+  ( progress ) => {
+    console.log( ( progress.loaded / progress.total * 100 ) + '% loaded' );
+  },
+  ( error ) => {
+    console.error( 'Error loading model:', error );
+  }
+);
+```
+
+---
+
+# TSL (Three.js Shading Language) - Complete Reference
+
+## TSL Specification
+
+An Approach to Productive and Maintainable Shader Creation.
+
+- [Introduction](#introduction)
+  - [Why TSL?](#why-tsl)
+  - [Example](#example)
+  - [Architecture](#architecture)
+- [Learning TSL](#learning-tsl)
+- [Constants and explicit conversions](#constants-and-explicit-conversions)
+- [Conversions](#conversions)
+- [Uniform](#uniform)
+  - [onUpdate](#uniformonupdate)
+- [Swizzle](#swizzle)
+- [Operators](#operators)
+- [Function](#function)
+- [Variables](#variables)
+- [Array](#array)
+  - [Uniform](#array-uniform)
+- [Varying](#varying)
+- [Conditional](#conditional)
+  - [If-else](#if-else)
+  - [Switch-case](#switch-case)
+  - [Ternary](#ternary)
+- [Loop](#loop)
+- [Math](#math)
+- [Method chaining](#method-chaining)
+- [Texture](#texture)
+- [Attributes](#attributes)
+- [Position](#position)
+- [Normal](#normal)
+- [Tangent](#tangent)
+- [Bitangent](#bitangent)
+- [Camera](#camera)
+- [Model](#model)
+- [Screen](#screen)
+- [Viewport](#viewport)
+- [Blend Modes](#blend-modes)
+- [Reflect](#reflect)
+- [UV Utils](#uv-utils)
+- [Interpolation](#interpolation)
+- [Random](#random)
+- [Rotate](#rotate)
+- [Oscillator](#oscillator)
+- [Timer](#timer)
+- [Packing](#packing)
+- [Render Pipeline](#render-pipeline)
+  - [Multiple Render Targets](#multiple-render-targets-mrt)
+  - [Post-Processing](#post-processing)
+  - [Render Pass](#render-pass)
+  - [Compute](#compute)
+- [Storage](#storage)
+- [Struct](#struct)
+- [Flow Control](#flow-control)
+- [Fog](#fog)
+- [Color Adjustments](#color-adjustments)
+- [Utilities](#utilities)
+- [NodeMaterial](#nodematerial)
+  - [LineDashedNodeMaterial](#linedashednodematerial)
+  - [MeshPhongNodeMaterial](#meshphongnodematerial)
+  - [MeshStandardNodeMaterial](#meshstandardnodematerial)
+    - [MeshPhysicalNodeMaterial](#meshphysicalnodematerial)
+  - [SpriteNodeMaterial](#spritenodematerial)
+- [Transitioning common GLSL properties to TSL](#transitioning-common-glsl-properties-to-tsl)
+
+## Introduction
+
+### Why TSL?
+
+Creating shaders has always been an advanced step for most developers; many game developers have never created GLSL code from scratch. The shader graph solution adopted today by the industry has allowed developers more focused on dynamics to create the necessary graphic effects to meet the demands of their projects.
+
+The aim of the project is to create an easy-to-use environment for shader creation. Even if for this we need to create complexity behind it, this happened initially with `Renderer` and now with the `TSL`.
+
+Other benefits that TSL brings besides simplifying shading creation are keeping the `renderer agnostic`, while all the complexity of a material can be imported into different modules and use `tree shaking` without breaking during the process.
+
+### Example
+
+A `detail map` makes things look more real in games. It adds tiny details like cracks or bumps to surfaces. In this example we will scale uv to improve details when seen up close and multiply with a base texture.
+
+#### Old
+
+This is how we would achieve that using `.onBeforeCompile()`:
+
+```js
+const material = new THREE.MeshStandardMaterial();
+material.map = colorMap;
+material.onBeforeCompile = ( shader ) => {
+
+	shader.uniforms.detailMap = { value: detailMap };
+
+	let token = '#define STANDARD';
+
+	let insert = /* glsl */`
+		uniform sampler2D detailMap;
+	`;
+
+	shader.fragmentShader = shader.fragmentShader.replace( token, token + insert );
+
+	token = '#include <map_fragment>';
+
+	insert = /* glsl */`
+		diffuseColor *= texture2D( detailMap, vMapUv * 10.0 );
+	`;
+
+	shader.fragmentShader = shader.fragmentShader.replace( token, token + insert );
+
+};
+```
+
+Any simple change from this makes the code increasingly complicated using `.onBeforeCompile`, the result we have today in the community are countless types of parametric materials that do not communicate with each other, and that need to be updated periodically to be operating, limiting the creativity to create unique materials reusing modules in a simple way.
+
+#### New
+
+With `TSL` the code would look like this:
+
+```js
+import { texture, uv } from 'three/tsl';
+
+const detail = texture( detailMap, uv().mul( 10 ) );
+
+const material = new THREE.MeshStandardNodeMaterial();
+material.colorNode = texture( colorMap ).mul( detail );
+```
+
+`TSL` is also capable of encoding code into different outputs such as `WGSL`/`GLSL` - `WebGPU`/`WebGL`, in addition to optimizing the shader graph automatically and through codes that can be inserted within each `Node`. This allows the developer to focus on productivity and leave the graphical management part to the `Node System`.
+
+Another important feature of a graph shader is that we will no longer need to care about the sequence in which components are created, because the `Node System` will only declare and include it once.
+
+Let's say that you import `positionWorld` into your code, even if another component uses it, the calculations performed to obtain `position world` will only be performed once, as is the case with any other node such as: `normalWorld`, `modelPosition`, etc.
+
+### Architecture
+
+All `TSL` components are extended from `Node` class. The `Node` allows it to communicate with any other, value conversions can be automatic or manual, a `Node` can receive the output value expected by the parent `Node` and modify its own output snippet. It's possible to modulate them using `tree shaking` in the shader construction process, the `Node` will have important information such as `geometry`, `material`, `renderer` as well as the `backend`, which can influence the type and value of output.
+
+The main class responsible for creating the code is `NodeBuilder`. This class can be extended to any output programming language, so you can use TSL for a third language if you wish. Currently `NodeBuilder` has two extended classes, the `WGSLNodeBuilder` aimed at WebGPU and `GLSLNodeBuilder` aimed at WebGL2.
+
+The build process is based on three pillars: `setup`, `analyze` and `generate`.
+
+| | |
+| -- | -- |
+| `setup` | Use `TSL` to create a completely customized code for the `Node` output. The `Node` can use many others within itself, have countless inputs, but there will always be a single output. |
+| `analyze` | This proccess will check the `nodes` that were created in order to create useful information for `generate` the snippet, such as the need to create or not a cache/variable for optimizing a node. |
+| `generate` | An output of `string` will be returned from each `node`. Any node will also be able to create code in the flow of shader, supporting multiple lines. |
+
+`Node` also have a native update process invoked by the `update()` function, these events be called by `frame`, `render call` and `object draw`.
+
+It is also possible to serialize or deserialize a `Node` using `serialize()` and `deserialize()` functions.
+
+## Learning TSL
+
+TSL is a Node-based shader abstraction, written in JavaScript. TSL's functions are inspired by GLSL, but follow a very different concept. WGSL and GLSL are focused on creating GPU programs, in TSL this is one of the features.
+
+### Seamless Integration with JavaScript/TypeScript
+
+- Unified Code
+  - Write shader logic directly in JS/TS, eliminating the need to manipulate strings.
+  - Create and manipulate render objects just like any other JavaScript logic inside a TSL function.
+  - Advanced events to control a Node before and after the object is rendered.
+- JS Ecosystem
+  - Use native **import/export**, **NPM**, and integrate **JS/TS** components directly into your shader logic.
+- Typing
+  - Benefit from better type checking (especially with **TypeScript** and **[@three-types](https://github.com/three-types/three-ts-types)**), increasing code robustness.
+
+### Shader-Graph Inspired Structure
+
+- Focus on Intent
+  - Build materials by connecting nodes through: [positionWorld](#position), [normalWorld](#normal), [screenUV](#screen), [attribute()](#attributes), etc. 
+More declarative("what") vs. imperative("how").
+- Composition & High-Level Concepts
+  - Work with high-level concepts for Node Material like [colorNode](#basic), [roughnessNode](#standard), [metalnessNode](#standard), [positionNode](#basic), etc. This preserves the integrity of the lighting model while allowing customizations, helping to avoid mistakes from incorrect setups.
+- Keeping an eye on software exchange
+  - Modern 3D authoring software uses Shader-Graph based material composition to exchange between other software. TSL already has its own MaterialX integration.
+- Easier Migration
+  - Many functions are directly inspired by GLSL to smooth the learning curve for those with prior experience.
+
+### Rendering Manipulation
+
+- Control rendering steps and create new render-passes per individual TSL functions.
+  - Implement complex effects is easily with nodes using a single function call either in post-processing and in materials allowing the node itself to manage the rendering process as it needs.
+    - `gaussianBlur()`: Double render-pass gaussian blur node. It can be used in the material or in post-processing through a single function.
+  - Easy access to renderer buffers using TSL functions like: 
+    - `viewportSharedTexture()`: Accesses the beauty what has already been rendered, preserving the render-order.
+    - `viewportLinearDepth()`: Accesses the depth what has already been rendered, preserving the render-order.
+  - Integrated Compute Shaders
+    - Perform calculations on buffers using compute stage directly during an object's rendering.
+  - TSL allows dynamic manipulation of renderer functions, which makes it more customizable than intermediate languages ​​that would have to use flags in fixed pipelines for this.
+  - You just need to use the events of a Node for the renderer manipulations, without needing to modify the core.
+
+### Automatic Optimization and Workarounds
+
+- Your TSL code automatically benefits from optimizations and workarounds implemented in the Three.js compiler with each new version.
+  - Simplifications
+    - Automatic type conversions.
+    - Execute a block of code in vertex-stage and get it in fragment-stage just using `vertexStage( node )`.
+    - Automatically choose interpolation method for varyings depending on type.
+    - Don't worry about collisions of global variables internally when using Nodes.
+  - Polyfills
+    - e.g: `textureSample()` function in the vertex shader (not natively supported in WGSL) is correctly transpiled to work.
+    - e.g: Automatic correction for the `pow()` function, which didn't accept negative bases on Windows/DirectX using WGSL.
+  - Optimizations
+    - Repeated expressions: TSL can automatically create temporary variables to avoid redundant calculations.
+    - Automatic reuse of uniforms and attributes.
+    - Creating varying only if necessary. Otherwise they are replaced by simple variables.
+
+### Target audience
+  - Beginners users
+    - You only need one line to create your first custom shader.
+  - Advanced users
+    - Makes creating shaders simple but not limited. Example: https://www.youtube.com/watch?v=C2gDL9Qk_vo
+    - If you don't like fixed pipelines and low level, you'll love this.
+
+### Share everything
+
+#### TSL is based on Nodes, so don’t worry about sharing your **functions** and **uniforms** across materials and post-processing.
+
+```js
+// Shared the same uniform with various materials
+
+const sharedColor = uniform( new THREE.Color() );
+
+materialA.colorNode = sharedColor.div( 2 );
+materialB.colorNode = sharedColor.mul( .5 );
+materialC.colorNode = sharedColor.add( .5 );
+```
+
+#### Deferred Function: High level of customization, goodby **#defines**
+
+Access **material**, **geometry**, **object**, **camera**, **scene**, **renderer** and more directly from a TSL function. Function calls are only performed at the time of building the shader allowing you to customize the function according to the object's setup.
+
+```js
+// Returns an uniform of the material's custom color if it exists 
+
+const customColor = Fn( ( { material, geometry, object } ) => {
+
+	if ( material.userData.customColor !== undefined ) {
+
+		return uniform( material.userData.customColor );
+
+	}
+
+	return vec3( 0 );
+
+} );
+
+//
+
+material.colorNode = customColor();
+
+```
+
+#### Load a texture-based matrix inside a TSL function
+
+This can be used for any other JS and Three.js ecosystem needs. You can manipulate your assets according to the needs of a function. This can work for creating buffers, attributes, uniforms and any other JavaScript operation.
+
+```js
+let bayer16Texture = null;
+
+export const bayer16 = Fn( ( [ uv ] ) => {
+
+	if ( bayer16Texture === null ) {
+
+		const bayer16Base64 = 'data:image/png;base64,...==';
+
+		bayer16Texture = new TextureLoader().load( bayer16Base64 );
+
+	}
+
+	return textureLoad( bayer16Texture, ivec2( uv ).mod( int( 16 ) ) );
+
+} );
+
+//
+
+material.colorNode = bayer16( screenCoordinate );
+
+```
+
+#### The node architecture allows the creation of instances of custom attributes and buffers through simple functions.
+
+```js
+// Range values node example
+
+const randomColor = range( new THREE.Color( 0x000000 ), new THREE.Color( 0xFFFFFF ) );
+
+material.colorNode = randomColor;
+
+//...
+
+const mesh = new THREE.InstancedMesh( geometry, material, count );
+```
+
+#### TSL loves JavaScript
+
+TSL syntax follows JavaScript style because they are the same thing, so if you come from GLSL you can explore new possibilities.
+
+```js
+// A simple example of Function closure
+
+const mainTask = Fn( () => {
+
+	const task2 = Fn( ( [ a, b ] ) => {
+
+		return a.add( b ).mul( 0.5 );
+
+	} );
+
+
+	return task2( color( 0x00ff00 ), color( 0x0000ff ) );
+
+} );
+
+//
+
+material.colorNode = mainTask();
+```
+
+#### Simplification
+
+Double render-pass `gaussianBlur()` node. It can be used in the material or in post-processing through a single function. 
+
+```js
+// Applies a double render-pass gaussianBlur and then a grayscale filter before the object with the material is rendered.
+
+const myTexture = texture( map );
+
+material.colorNode = grayscale( gaussianBlur( myTexture, 4 ) );
+```
+
+Accesses what has already been rendered, preserving the render-order for easy refraction effects, avoiding multiple render-pass and manual sorts.
+
+```js
+// Leaving the back in grayscale.
+
+material.colorNode = grayscale( viewportSharedTexture( screenUV ) );
+material.transparent = true;
+```
+
+#### Extend the TSL
+
+You no longer need to create a Material for each desired effect, instead create Nodes. A Node can have access to the Material and can be used in many ways. Extend the TSL from Nodes and let the user use it in creative ways.
+
+A great example of this is [TSL-Textures](https://boytchev.github.io/tsl-textures/).
+
+```js
+import * as THREE from 'three';
+import { simplexNoise } from 'tsl-textures';
+
+material.colorNode = simplexNoise ( {
+	scale: 2,
+	balance: 0,
+	contrast: 0,
+	color: new THREE.Color(16777215),
+	background: new THREE.Color(0),
+	seed: 0
+} );
+
+```
+
+## Constants and explicit conversions
+
+Input functions can be used to create contants and do explicit conversions.
+> Conversions are also performed automatically if the output and input are of different types.
+
+| Name | Returns a constant or convertion of type: |
+| -- | -- |
+| `float( node\|number )` | `float` |
+| `int( node\|number )` | `int` |
+| `uint( node\|number )` | `uint` |
+| `bool( node\|value )` | `boolean` |
+| `color( node\|hex\|r,g,b )` | `color` |
+| `vec2( node\|Vector2\|x,y )` | `vec2` |
+| `vec3( node\|Vector3\|x,y,z )` | `vec3` |
+| `vec4( node\|Vector4\|x,y,z,w )` | `vec4` |
+| `mat2( node\|Matrix2\|a,b,c,d )` | `mat2` |
+| `mat3( node\|Matrix3\|a,b,c,d,e,f,g,h,i )` | `mat3` |
+| `mat4( node\|Matrix4\|a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p )` | `mat4` |
+| `ivec2( node\|x,y )` | `ivec2` |
+| `ivec3( node\|x,y,z )` | `ivec3` |
+| `ivec4( node\|x,y,z,w )` | `ivec4` |
+| `uvec2( node\|x,y )` | `uvec2` |
+| `uvec3( node\|x,y,z )` | `uvec3` |
+| `uvec4( node\|x,y,z,w )` | `uvec4` |
+| `bvec2( node\|x,y )` | `bvec2` |
+| `bvec3( node\|x,y,z )` | `bvec3` |
+| `bvec4( node\|x,y,z,w )` | `bvec4` |
+
+Example:
+
+```js
+import { color, vec2, positionWorld } from 'three/tsl';
+
+// constant
+material.colorNode = color( 0x0066ff );
+
+// conversion
+material.colorNode = vec2( positionWorld ); // result positionWorld.xy
+```
+
+## Conversions
+
+It is also possible to perform conversions using the `method chaining`:
+
+| Name | Returns a constant or conversion of type: |
+| -- | -- |
+| `.toFloat()` | `float` |
+| `.toInt()` | `int` |
+| `.toUint()` | `uint` |
+| `.toBool()` | `boolean` |
+| `.toColor()` | `color` |
+| `.toVec2()` | `vec2` |
+| `.toVec3()` | `vec3` |
+| `.toVec4()` | `vec4` |
+| `.toMat2()` | `mat2` |
+| `.toMat3()` | `mat3` |
+| `.toMat4()` | `mat4` |
+| | |
+| `.toIVec2()` | `ivec2` |
+| `.toIVec3()` | `ivec3` |
+| `.toIVec4()` | `ivec4` |
+| `.toUVec2()` | `uvec2` |
+| `.toUVec3()` | `uvec3` |
+| `.toUVec4()` | `uvec4` |
+| `.toBVec2()` | `bvec2` |
+| `.toBVec3()` | `bvec3` |
+| `.toBVec4()` | `bvec4` |
+
+Example:
+
+```js
+import { positionWorld } from 'three/tsl';
+
+// conversion
+material.colorNode = positionWorld.toVec2(); // result positionWorld.xy
+```
+
+## Uniform
+
+Uniforms are useful to update values of variables like colors, lighting, or transformations without having to recreate the shader program. They are the true variables from a GPU's point of view.
+
+| Name | Description |
+| -- | -- |
+| `uniform( boolean \| number \| Color \| Vector2 \| Vector3 \| Vector4 \| Matrix3 \| Matrix4, type = null )` | Dynamic values. |
+
+Example:
+
+```js
+const myColor = uniform( new THREE.Color( 0x0066FF ) );
+
+material.colorNode = myColor;
+```
+
+### `uniform.on*Update()`
+
+It is also possible to create update events on `uniforms`, which can be defined by the user:
+
+| Name | Description |
+| -- | -- |
+| `.onObjectUpdate( function )` | It will be updated every time an object like `Mesh` is rendered with this `node` in `Material`. |
+| `.onRenderUpdate( function )` | It will be updated once per render, common and shared materials, fog, tone mapping, etc. |
+| `.onFrameUpdate( function )` | It will be updated only once per frame, recommended for values ​​that will be updated only once per frame, regardless of when `render-pass` the frame has, cases like `time` for example. |
+
+Example:
+
+```js
+const posY = uniform( 0 ); // it's possible use uniform( 'float' )
+
+// or using event to be done automatically
+// { object } will be the current rendering object
+posY.onObjectUpdate( ( { object } ) => object.position.y );
+
+// you can also update manually using the .value property
+posY.value = object.position.y;
+
+material.colorNode = posY;
+```
+
+## Swizzle
+
+Swizzling is the technique that allows you to access, reorder, or duplicate the components of a vector using a specific notation within TSL. This is done by combining the identifiers:
+
+```js
+const original = vec3( 1.0, 2.0, 3.0 ); // (x, y, z)
+const swizzled = original.zyx; // swizzled = (3.0, 2.0, 1.0)
+```
+
+It's possible use `xyzw`, `rgba` or `stpq`.
+
+## Operators
+
+| Name | Description |
+| -- | -- |
+| `.add( node \| value, ... )` | Return the addition of two or more value. |
+| `.sub( node \| value )` | Return the subraction of two or more value. |
+| `.mul( node \| value )` | Return the multiplication of two or more value. |
+| `.div( node \| value )` | Return the division of two or more value. |
+| `.mod( node \| value )` | Computes the remainder of dividing the first node by the second. |
+| `.equal( node \| value )` | Checks if two nodes are equal. |
+| `.notEqual( node \| value )` | Checks if two nodes are not equal. |
+| `.lessThan( node \| value )` | Checks if the first node is less than the second. |
+| `.greaterThan( node \| value )` | Checks if the first node is greater than the second. |
+| `.lessThanEqual( node \| value )` | Checks if the first node is less than or equal to the second. |
+| `.greaterThanEqual( node \| value )` | Checks if the first node is greater than or equal to the second. |
+| `.and( node \| value )` | Performs logical AND on two nodes. |
+| `.or( node \| value )` | Performs logical OR on two nodes. |
+| `.not( node \| value )` | Performs logical NOT on a node. |
+| `.xor( node \| value )` | Performs logical XOR on two nodes. |
+| `.bitAnd( node \| value )` | Performs bitwise AND on two nodes. |
+| `.bitNot( node \| value )` | Performs bitwise NOT on a node. |
+| `.bitOr( node \| value )` | Performs bitwise OR on two nodes. |
+| `.bitXor( node \| value )` | Performs bitwise XOR on two nodes. |
+| `.shiftLeft( node \| value )` | Shifts a node to the left. |
+| `.shiftRight( node \| value )` | Shifts a node to the right. |
+| | |
+| `.assign( node \| value )` | Assign one or more value to a and return the same. |
+| `.addAssign( node \| value )` | Adds a value and assigns the result. |
+| `.subAssign( node \| value )` | Subtracts a value and assigns the result. |
+| `.mulAssign( node \| value )` | Multiplies a value and assigns the result. |
+| `.divAssign( node \| value )` | Divides a value and assigns the result. |
+
+```js
+const a = float( 1 );
+const b = float( 2 );
+
+const result = a.add( b ); // output: 3
+```
+
+## Function
+
+### `Fn( function, layout = null )`
+
+It is possible to use classic JS functions or a `Fn()` interface. The main difference is that `Fn()` creates a controllable environment, allowing the use of `stack` where you can use `assign` and `conditional`, while the classic function only allows inline approaches.
+
+Example:
+
+```js
+// tsl function
+const oscSine = Fn( ( [ t = time ] ) => {
+
+	return t.add( 0.75 ).mul( Math.PI * 2 ).sin().mul( 0.5 ).add( 0.5 );
+
+} );
+
+// inline function
+export const oscSine = ( t = time ) => t.add( 0.75 ).mul( Math.PI * 2 ).sin().mul( 0.5 ).add( 0.5 );
+```
+> Both above can be called with `oscSin( value )`.
+
+TSL allows the entry of parameters as object, this is useful in functions that have many optional arguments.
+
+Example:
+
+```js
+const oscSine = Fn( ( { timer = time } ) => {
+
+	return timer.add( 0.75 ).mul( Math.PI * 2 ).sin().mul( 0.5 ).add( 0.5 );
+
+} );
+
+const value = oscSine( { timer: value } );
+```
+
+Parameters as object also allows traditional calls as an array, enabling different types of usage.
+
+```js
+const col = Fn( ( { r, g, b } ) => {
+
+	return vec3( r, g, b );
+
+} );
+
+
+// Any of the options below will return a green color.
+
+material.colorNode = col( 0, 1, 0 ); // option 1
+material.colorNode = col( { r: 0, g: 1, b: 0 } ); // option 2
+```
+
+If you want to use an export function compatible with `tree shaking`, remember to use `/*@__PURE__*/`
+
+```js
+export const oscSawtooth = /*@__PURE__*/ Fn( ( [ timer = time ] ) => timer.fract() );
+```
+
+The second parameter of the function, if there are any parameters, will always be the first if there are none, and is dedicated to `NodeBuilder`. In `NodeBuilder` you can find out details about the current construction process and also obtain objects related to the shader construction, such as `material`, `geometry`, `object`, `camera`, etc.
+
+[See an example](#deferred-function-high-level-of-customization-goodby-defines)
+
+## Variables
+
+Functions used to declare variables.
+
+| Name | Description |
+| -- | -- |
+| `.toVar( node, name = null )` or `Var( node, name = null )` | Converts a node into a reusable variable in the shader. |
+| `.toConst( node, name = null )` or `Const( node, name = null )` | Converts a node into an inline constant. |
+| `property( type, name = null )` | Declares an property but does not assign an initial value. |
+
+The name is optional; if set to `null`, the node system will generate one automatically.  
+Creating a variable, constant, or property can help optimize the shader graph manually or assist in debugging.
+
+```js
+const uvScaled = uv().mul( 10 ).toVar();
+
+material.colorNode = texture( map, uvScaled );
+```
+
+***
+
+## Array
+
+The array() function in TSL allows creating constant or dynamic value arrays; there are many ways to create arrays in TSL.
+
+#### The standard way
+
+```js
+const colors = array( [
+	vec3( 1, 0, 0 ),
+	vec3( 0, 1, 0 ),
+	vec3( 0, 0, 1 )
+] );
+
+const greenColor = colors.element( 1 );
+
+// greenColor: vec3( 0, 1, 0 )
+```
+
+#### Fixed size
+
+```js
+const a = array( 'vec3', 2 );
+
+// a: [ vec3( 0, 0, 0 ), vec3( 0, 0, 0 ) ]
+```
+
+#### Fill with a default value
+
+```js
+const a = vec3( 0, 0, 1 ).toArray( 2 ); 
+
+// a: [ vec3( 0, 0, 1 ), vec3( 0, 0, 1 ) ]
+```
+
+#### Define a type explicitly
+
+```js
+const a = array( [ 0, 1, 2 ], 'uint' );
+const value = a.element( 1 );
+
+// value: 1u
+```
+
+### Array Uniform
+
+It is possible to use the same array logic for uniforms using Three.js native components or primitive values.
+
+```js
+const tintColors = uniformArray( [
+	new Color( 1, 0, 0 ),
+	new Color( 0, 1, 0 ),
+	new Color( 0, 0, 1 )
+], 'color' );
+
+const redColor = tintColors.element( 0 );
+```
+
+#### Accessing values
+
+To access the values you can use `a[ 1 ]` or `a.element( 1 )`. The difference is that `a[ 1 ]` only allows constant values, while `a.element( 1 )` allows the use of dynamic values such as `a.element( index )` where index is a node.
+
+### Array Storage
+
+It is possible to create arrays that can be used in compute shaders and storage operations.
+
+| Name | Description |
+| -- | -- |
+| `instancedArray( array, type )` | Creates an instanced buffer attribute array. |
+| `attributeArray( array, type )` | Creates a buffer attribute array. |
+
+## Varying
+
+Functions used to declare varying.
+
+| Name | Description |
+| -- | -- |
+| `vertexStage( node )` | Computes the node in the vertex stage. |
+| `varying( node, name = null )` | Computes the node in the vertex stage and passes interpolated values to the fragment shader. |
+| `varyingProperty( type, name = null )` | Declares an varying property but does not assign an initial value. |
+
+Let's suppose you want to optimize some calculation in the `vertex stage` but are using it in a slot like `material.colorNode`.
+
+For example:
+
+```js
+// multiplication will be executed in vertex stage
+const normalView = vertexStage( modelNormalMatrix.mul( normalLocal ) );
+
+// normalize will be computed in fragment stage while `normalView` is computed on vertex stage
+material.colorNode = normalView.normalize();
+```
+
+The first parameter of `vertexStage()` `modelNormalMatrix.mul( normalLocal )` will be computed in `vertex stage`, and the return from `vertexStage()` will be a `varying` as we are used in WGSL/GLSL, this can optimize extra calculations in the `fragment stage`. The second parameter of `varying()` allows you to add a custom name in code generation.
+
+If `varying()` is added only to `material.positionNode`, it will only return a simple variable and varying will not be created because `material.positionNode` is one of the only node material input that are computed at the vertex stage.
+
+## Conditional
+
+### If-else
+
+`If-else` conditionals can be used within `Fn()`. Conditionals in `TSL` are built using the `If` function:
+
+```js
+If( conditional, function )
+.ElseIf( conditional, function )
+.Else( function )
+```
+> Notice here the `i` in `If` is capitalized.
+
+Example:
+
+In this example below, we will limit the y position of the geometry to 10.
+
+```js
+const limitPosition = Fn( ( { position } ) => {
+
+	const limit = 10;
+
+	const result = vec3( position );
+
+	If( result.y.greaterThan( limit ), () => {
+
+		result.y = limit;
+
+	} );
+
+	return result;
+
+} );
+
+material.positionNode = limitPosition( { position: positionLocal } );
+```
+
+Example using `elseif`:
+
+```js
+const limitPosition = Fn( ( { position } ) => {
+
+	const limit = 10;
+
+	const result = vec3( position );
+
+	If( result.y.greaterThan( limit ), () => {
+
+		result.y = limit;
+
+	} ).ElseIf( result.y.lessThan( limit ), () => {
+
+		result.y = limit;
+
+	} );
+
+	return result;
+
+} );
+
+material.positionNode = limitPosition( { position: positionLocal } );
+```
+### Switch-Case
+
+A Switch-Case statement is an alternative way to express conditional logic compared to If-Else.
+
+```js
+const col = color();
+
+Switch( 0 )
+	.Case( 0, () => {
+
+		col.assign( color( 1, 0, 0 ) );
+
+	} ).Case( 1, () => {
+
+		col.assign( color( 0, 1, 0 ) );
+
+	} ).Case( 2, 3, () => {
+
+		col.assign( color( 0, 0, 1 ) );
+
+	} ).Default( () => {
+
+		col.assign( color( 1, 1, 1 ) );
+
+	} );
+```
+Notice that there are some rules when using this syntax which differentiate TSL from JavaScript:
+
+- There is no fallthrough support. So each `Case()` statement has an implicit break.
+- A `Case()` statement can hold multiple values (selectors) for testing. 
+
+### Ternary
+
+Different from `if-else`, a ternary conditional will return a value and can be used outside of `Fn()`.
+
+```js
+const result = select( value.greaterThan( 1 ), 1.0, value );
+```
+> Equivalent in JavaScript should be: `value > 1 ? 1.0 : value`
+
+## Loop
+
+This module offers a variety of ways to implement loops in TSL. In it's basic form it's:
+```js
+Loop( count, ( { i } ) => {
+
+} );
+```
+However, it is also possible to define a start and end ranges, data types and loop conditions:
+```js
+Loop( { start: int( 0 ), end: int( 10 ), type: 'int', condition: '<', name: 'i' }, ( { i } ) => {
+
+} );
+```
+Nested loops can be defined in a compacted form:
+```js
+Loop( 10, 5, ( { i, j } ) => {
+
+} );
+```
+Loops that should run backwards can be defined like so:
+```js
+Loop( { start: 10 }, () => {} );
+```
+It is possible to execute with boolean values, similar to the `while` syntax.
+```js
+const value = float( 0 );
+
+Loop( value.lessThan( 10 ), () => {
+
+	value.addAssign( 1 );
+
+} );
+```
+The module also provides `Break()` and `Continue()` TSL expression for loop control.
+
+## Math
+
+| Name | Description |
+| -- | -- |
+| `EPSILON` | A small value used to handle floating-point precision errors. |
+| `INFINITY` | Represent infinity. |
+| `PI` | The mathematical constant π (pi). |
+| `TWO_PI` | Two times π (2π). |
+| `HALF_PI` | Half of π (π/2). |
+| | |
+| `abs( x )` | Return the absolute value of the parameter. |
+| `acos( x )` | Return the arccosine of the parameter. |
+| `all( x )` | Return true if all components of x are true. |
+| `any( x )` | Return true if any component of x is true. |
+| `asin( x )` | Return the arcsine of the parameter. |
+| `atan( y, x )` | Return the arc-tangent of the parameters. |
+| `bitcast( x, y )` | Reinterpret the bits of a value as a different type. |
+| `cbrt( x )` | Return the cube root of the parameter. |
+| `ceil( x )` | Find the nearest integer that is greater than or equal to the parameter. |
+| `clamp( x, min, max )` | Constrain a value to lie between two further values. |
+| `cos( x )` | Return the cosine of the parameter. |
+| `cross( x, y )` | Calculate the cross product of two vectors. |
+| `dFdx( p )` | Return the partial derivative of an argument with respect to x. |
+| `dFdy( p )` | Return the partial derivative of an argument with respect to y. |
+| `degrees( radians )` | Convert a quantity in radians to degrees. |
+| `difference( x, y )` | Calculate the absolute difference between two values. |
+| `distance( x, y )` | Calculate the distance between two points. |
+| `dot( x, y )` | Calculate the dot product of two vectors. |
+| `equals( x, y )` | Return true if x equals y. |
+| `exp( x )` | Return the natural exponentiation of the parameter. |
+| `exp2( x )` | Return 2 raised to the power of the parameter. |
+| `faceforward( N, I, Nref )` | Return a vector pointing in the same direction as another. |
+| `floor( x )` | Find the nearest integer less than or equal to the parameter. |
+| `fract( x )` | Compute the fractional part of the argument. |
+| `fwidth( x )` | Return the sum of the absolute derivatives in x and y. |
+| `inverseSqrt( x )` | Return the inverse of the square root of the parameter. |
+| `length( x )` | Calculate the length of a vector. |
+| `lengthSq( x )` | Calculate the squared length of a vector. |
+| `log( x )` | Return the natural logarithm of the parameter. |
+| `log2( x )` | Return the base 2 logarithm of the parameter. |
+| `max( x, y )` | Return the greater of two values. |
+| `min( x, y )` | Return the lesser of two values. |
+| `mix( x, y, a )` | Linearly interpolate between two values. |
+| `negate( x )` | Negate the value of the parameter ( -x ). |
+| `normalize( x )` | Calculate the unit vector in the same direction as the original vector. |
+| `oneMinus( x )` | Return 1 minus the parameter. |
+| `pow( x, y )` | Return the value of the first parameter raised to the power of the second. |
+| `pow2( x )` | Return the square of the parameter. |
+| `pow3( x )` | Return the cube of the parameter. |
+| `pow4( x )` | Return the fourth power of the parameter. |
+| `radians( degrees )` | Convert a quantity in degrees to radians. |
+| `reciprocal( x )` | Return the reciprocal of the parameter (1/x). |
+| `reflect( I, N )` | Calculate the reflection direction for an incident vector. |
+| `refract( I, N, eta )` | Calculate the refraction direction for an incident vector. |
+| `round( x )` | Round the parameter to the nearest integer. |
+| `saturate( x )` | Constrain a value between 0 and 1. |
+| `sign( x )` | Extract the sign of the parameter. |
+| `sin( x )` | Return the sine of the parameter. |
+| `smoothstep( e0, e1, x )` | Perform Hermite interpolation between two values. |
+| `sqrt( x )` | Return the square root of the parameter. |
+| `step( edge, x )` | Generate a step function by comparing two values. |
+| `tan( x )` | Return the tangent of the parameter. |
+| `transformDirection( dir, matrix )` | Transform the direction of a vector by a matrix and then normalize the result. |
+| `trunc( x )` | Truncate the parameter, removing the fractional part. |
+
+```js
+const value = float( -1 );
+
+// It's possible use `value.abs()` too.
+const positiveValue = abs( value ); // output: 1
+```
+
+## Method chaining
+
+`Method chaining` will only be including operators, converters, math and some core functions. These functions, however, can be used on any `node`.
+
+Example:
+
+`oneMinus()` is a mathematical function like `abs()`, `sin()`. This example uses `.oneMinus()` as a built-in function in the class that returns a new node instead of classic C function like `oneMinus( texture( map ).rgb )`.
+
+```js
+// it will invert the texture color
+material.colorNode = texture( map ).rgb.oneMinus();
+```
+
+You can use mathematical operators on any node, e.g:
+
+```js
+const contrast = .5;
+const brightness = .5;
+
+material.colorNode = texture( map ).mul( contrast ).add( brightness );
+```
+
+## Texture
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `texture( texture, uv = uv(), level = null )` | Retrieves texels from a texture. | `vec4` |
+| `textureLoad( texture, uv, level = null )` | Fetches/loads texels without interpolation. | `vec4` |
+| `textureStore( texture, uv, value )` | Stores a value into a storage texture. | `void` |
+| `textureSize( texture, level = null )` | Returns the size of a texture. | `ivec2` |
+| `textureBicubic( textureNode, strength = null )` | Applies mipped bicubic texture filtering. | `vec4` |
+| `cubeTexture( texture, uvw = reflectVector, level = null )` | Retrieves texels from a cube texture. | `vec4` |
+| `texture3D( texture, uvw = null, level = null )` | Retrieves texels from a 3D texture. | `vec4` |
+| `triplanarTexture( textureX, textureY = null, textureZ = null, scale = float( 1 ), position = positionLocal, normal = normalLocal )` | Computes texture using triplanar mapping based on provided parameters. | `vec4` |
+
+## Attributes
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `attribute( name, type = null )` | Getting geometry attribute using name and type. | `any` |
+| `uv( index = 0 )` | UV attribute named `uv + index`. | `vec2` |
+| `vertexColor( index = 0 )` | Vertex color node for the specified index. | `color` |
+| `instanceIndex` | The index of the current instance. | `uint` |
+| `vertexIndex` | The index of a vertex within a mesh. | `uint` |
+| `drawIndex` | The draw index when using multi-draw. | `uint` |
+| `batch( batchMesh )` | Creates a batch node for BatchedMesh. | `BatchNode` |
+| `instance( instancedMesh )` | Creates an instance node for InstancedMesh. | `InstanceNode` |
+
+## Position
+
+The transformed term reflects the modifications applied by processes such as `skinning`, `morphing`, and similar techniques.
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `positionGeometry` | Position attribute of geometry. | `vec3` |
+| `positionLocal` | Transformed local position. | `vec3` |
+| `positionWorld` | Transformed world position. | `vec3` |
+| `positionWorldDirection` | Normalized world direction. | `vec3` |
+| `positionView` | View position. | `vec3` |
+| `positionViewDirection` | Normalized view direction. | `vec3` |
+
+## Normal
+
+The term transformed here also includes following the correct orientation of the face, so that the normals are inverted inside the geometry.
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `normalGeometry` | Normal attribute of geometry. | `vec3` |
+| `normalLocal` | Local variable for normal. | `vec3` |
+| `normalView` | Normalized transformed view normal. | `vec3` |
+| `normalViewGeometry` | Normalized view normal. | `vec3` |
+| `normalWorld` | Normalized transformed world normal. | `vec3` |
+| `normalWorldGeometry` | Normalized world normal. | `vec3` |
+
+## Tangent
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `tangentGeometry` | Tangent attribute of geometry. | `vec4` |
+| `tangentLocal` | Local variable for tangent. | `vec3` |
+| `tangentView` | Normalized transformed view tangent. | `vec3` |
+| `tangentWorld` | Normalized transformed world tangent. | `vec3` |
+
+### Bitangent
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `bitangentGeometry` | Normalized bitangent in geometry space. | `vec3` |
+| `bitangentLocal` | Normalized bitangent in local space. | `vec3` |
+| `bitangentView` | Normalized transformed bitangent in view space. | `vec3` |
+| `bitangentWorld` | Normalized transformed bitangent in world space. | `vec3` |
+
+## Camera
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `cameraNear` | Near plane distance of the camera. | `float` |
+| `cameraFar` | Far plane distance of the camera. | `float` |
+| `cameraProjectionMatrix` | Projection matrix of the camera. | `mat4` |
+| `cameraProjectionMatrixInverse` | Inverse projection matrix of the camera. | `mat4` |
+| `cameraViewMatrix` | View matrix of the camera. | `mat4` |
+| `cameraWorldMatrix` | World matrix of the camera. | `mat4` |
+| `cameraNormalMatrix` | Normal matrix of the camera. | `mat3` |
+| `cameraPosition` | World position of the camera. | `vec3` |
+
+## Model
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `modelDirection` | Direction of the model. | `vec3` |
+| `modelViewMatrix` | View-space matrix of the model. | `mat4` |
+| `modelNormalMatrix` | View-space matrix of the model. | `mat3` |
+| `modelWorldMatrix` | World-space matrix of the model. | `mat4` |
+| `modelPosition` | Position of the model. | `vec3` |
+| `modelScale` | Scale of the model. | `vec3` |
+| `modelViewPosition` | View-space position of the model. | `vec3` |
+| `modelWorldMatrixInverse` | Inverse world matrix of the model. | `mat4` |
+| | |
+| `highpModelViewMatrix` | View-space matrix of the model computed on CPU using 64-bit. | `mat4` |
+| `highpModelNormalViewMatrix` | View-space normal matrix of the model computed on CPU using 64-bit. | `mat3` |
+
+## Screen
+
+Screen nodes will return the values related to the current `frame buffer`, either normalized or in `physical pixel units` considering the current `Pixel Ratio`.
+
+| Variable | Description | Type |
+| -- | -- | -- |
+| `screenUV` | Returns the normalized frame buffer coordinate. | `vec2` |
+| `screenCoordinate` | Returns the frame buffer coordinate in physical pixel units. | `vec2` |
+| `screenSize` | Returns the frame buffer size in physical pixel units. | `vec2` |
+| `screenDPR` | Returns the device pixel ratio (DPR). | `float` |
+
+## Viewport
+
+`viewport` is influenced by the area defined in `renderer.setViewport()`, different of the values ​​defined in the renderer that are `logical pixel units`, it use `physical pixel units` considering the current `Pixel Ratio`.
+
+| Variable | Description | Type |
+| -- | -- | -- |
+| `viewportUV` | Returns the normalized viewport coordinate. | `vec2` |
+| `viewport` | Returns the viewport dimension in physical pixel units. | `vec4` |
+| `viewportCoordinate` | Returns the viewport coordinate in physical pixel units. | `vec2` |
+| `viewportSize` | Returns the viewport size in physical pixel units. | `vec2` |
+| `viewportSharedTexture( uvNode = screenUV, levelNode = null )` | Accesses what has already been rendered, preserving render-order. | `vec4` |
+| `viewportDepthTexture( uvNode = screenUV, levelNode = null )` | Returns the depth texture of the viewport. | `float` |
+| `viewportLinearDepth` | Returns the linear (orthographic) depth value of the current fragment. | `float` |
+| `viewportMipTexture( uvNode = screenUV, levelNode = null, framebufferTexture = null )` | Returns a viewport texture with mipmap generation enabled. | `vec4` |
+| `viewportSafeUV( uv = screenUV )` | Returns safe UV coordinates for refraction purposes. | `vec2` |
+
+## Blend Modes
+
+| Variable | Description | Type |
+| -- | -- | -- |
+| `blendBurn( a, b )` | Returns the burn blend mode. | `color` |
+| `blendDodge( a, b )` | Returns the dodge blend mode. | `color` |
+| `blendOverlay( a, b )` | Returns the overlay blend mode. | `color` |
+| `blendScreen( a, b )` | Returns the screen blend mode. | `color` |
+| `blendColor( a, b )` | Returns the (normal) color blend mode. | `color` |
+
+## Reflect
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `reflectView` | Computes reflection direction in view space. | `vec3` |
+| `reflectVector` | Transforms the reflection direction to world space. | `vec3` |
+
+## UV Utils
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `matcapUV` | UV coordinates for matcap texture. | `vec2` |
+| `rotateUV( uv, rotation, centerNode = vec2( 0.5 ) )` | Rotates UV coordinates around a center point. | `vec2` |
+| `spherizeUV( uv, strength, centerNode = vec2( 0.5 ) )` | Distorts UV coordinates with a spherical effect around a center point. | `vec2` |
+| `spritesheetUV( count, uv = uv(), frame = float( 0 ) )` | Computes UV coordinates for a sprite sheet based on the number of frames, UV coordinates, and frame index. | `vec2` |
+| `equirectUV( direction = positionWorldDirection )` | Computes UV coordinates for equirectangular mapping based on the direction vector. | `vec2` |
+
+```js
+import { texture, matcapUV } from 'three/tsl';
+
+const matcap = texture( matcapMap, matcapUV );
+```
+
+## Interpolation
+
+| Variable | Description | Type |
+| -- | -- | -- |
+| `remap( node, inLow, inHigh, outLow = float( 0 ), outHigh = float( 1 ) )` | Remaps a value from one range to another. | `any` |
+| `remapClamp( node, inLow, inHigh, outLow = float( 0 ), outHigh = float( 1 ) )` | Remaps a value from one range to another, with clamping. | `any` |
+
+## Random
+
+| Variable | Description | Type |
+| -- | -- | -- |
+| `hash( seed )` | Generates a hash value in the range [ 0, 1 ] from the given seed. | `float` |
+| `range( min, max )` | Generates a range `attribute` of values between min and max. Attribute randomization is useful when you want to randomize values ​​between instances and not between pixels. | `any` |
+
+## Rotate
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `rotate( position, rotation )` | Applies a rotation to the given position node. Depending on whether the position data are 2D or 3D, the rotation is expressed a single float value or an Euler value. | `vec2`, `vec3`
+
+## Oscillator
+
+| Variable | Description | Type |
+| -- | -- | -- |
+| `oscSine( timer = time )` | Generates a sine wave oscillation based on a timer. | `float` |
+| `oscSquare( timer = time )` | Generates a square wave oscillation based on a timer. | `float` |
+| `oscTriangle( timer = time )` | Generates a triangle wave oscillation based on a timer. | `float` |
+| `oscSawtooth( timer = time )` | Generates a sawtooth wave oscillation based on a timer. | `float` |
+
+## Timer
+
+| Variable | Description | Type |
+| -- | -- | -- |
+| `time` | Represents the elapsed time in seconds. | `float` |
+| `deltaTime` | Represents the delta time in seconds. | `float` |
+
+## Packing
+
+| Variable | Description | Type |
+| -- | -- | -- |
+| `directionToColor( value )` | Converts direction vector to color. | `color` |
+| `colorToDirection( value )` | Converts color to direction vector. | `vec3` |
+
+## Render Pipeline
+
+The `RenderPipeline` provides full control over the rendering process. It enables developers to build complex multi-pass rendering pipelines entirely in JavaScript, combining scene rendering, post-processing, and compute operations in a unified, composable workflow.
+
+#### Basic Usage
+
+```js
+import * as THREE from 'three/webgpu';
+import { pass } from 'three/tsl';
+
+// Create the render pipeline
+const renderPipeline = new THREE.RenderPipeline( renderer );
+
+// Create a scene pass
+const scenePass = pass( scene, camera );
+
+// Set the output
+renderPipeline.outputNode = scenePass;
+
+// In the animation loop
+function animate() {
+
+	renderPipeline.render();
+
+}
+```
+
+### Multiple Render Targets (MRT)
+
+MRT allows capturing multiple outputs from a single render pass. Instead of rendering the scene multiple times to get different data (color, normals, depth, velocity), MRT captures all of them in one draw call—significantly improving performance.
+
+#### Setting up MRT
+
+Use `setMRT()` with the `mrt()` function to define which outputs to capture:
+
+```js
+import { pass, mrt, output, normalView, velocity, directionToColor } from 'three/tsl';
+
+const scenePass = pass( scene, camera );
+
+scenePass.setMRT( mrt( {
+	output: output,                          // Final color output
+	normal: directionToColor( normalView ),  // View-space normals encoded as colors
+	velocity: velocity                       // Motion vectors for temporal effects
+} ) );
+```
+
+Each MRT entry accepts any TSL node, allowing you to customize outputs using formulas, encoders, or material accessors. For example, `directionToColor( normalView )` encodes view-space normals into RGB values. You can use any TSL function to transform, combine, or encode data before writing to the render target.
+
+Within a TSL function `Fn( ( { material, object } ) => { ... } )`, you have complete access to the current material and object being rendered, enabling full customization of outputs.
+
+#### Accessing MRT Buffers
+
+Each MRT output becomes available as a texture node via `getTextureNode()`:
+
+```js
+// Access individual buffers as texture nodes
+const colorTexture = scenePass.getTextureNode( 'output' );
+const normalTexture = scenePass.getTextureNode( 'normal' );
+const velocityTexture = scenePass.getTextureNode( 'velocity' );
+
+// Depth is always available, even without MRT
+const depthTexture = scenePass.getTextureNode( 'depth' );
+```
+
+These texture nodes can be sampled, transformed, and passed to post-processing effects or other passes.
+
+#### Optimizing MRT Textures
+
+You can access the textures to optimize memory usage and bandwidth. Using smaller data types reduces GPU memory transfers, which is critical for performance on bandwidth-limited devices:
+
+```js
+// Use 8-bit format for encoded normals, default is 16-bit
+const normalTexture = scenePass.getTexture( 'normal' );
+normalTexture.type = THREE.UnsignedByteType;
+```
+
+#### Dynamic Pipeline Updates
+
+The pipeline can be updated at runtime:
+
+```js
+if ( showNormals ) {
+
+	renderPipeline.outputNode = prePass;
+
+} else {
+
+	renderPipeline.outputNode = traaPass;
+
+}
+
+renderPipeline.needsUpdate = true;
+```
+
+### Post-Processing
+
+TSL utilities for post-processing effects. They can be used in materials or post-processing passes.
+
+| Name | Description |
+| -- | -- |
+| `afterImage( node, damp = 0.96 )` | Creates an after image effect. |
+| `anamorphic( node, threshold = 0.9, scale = 3, samples = 32 )` | Creates an anamorphic flare effect. |
+| `bloom( node, strength = 1, radius = 0, threshold = 0 )` | Creates a bloom effect. |
+| `boxBlur( textureNode, options = {} )` | Applies a box blur effect. |
+| `chromaticAberration( node, strength = 1.0, center = null, scale = 1.1 )` | Creates a chromatic aberration effect. |
+| `denoise( node, depthNode, normalNode, camera )` | Creates a denoise effect. |
+| `dof( node, viewZNode, focusDistance, focalLength, bokehScale )` | Creates a depth-of-field effect. |
+| `dotScreen( node, angle = 1.57, scale = 1 )` | Creates a dot-screen effect. |
+| `film( inputNode, intensityNode = null, uvNode = null )` | Creates a film grain effect. |
+| `fxaa( node )` | Creates a FXAA anti-aliasing effect. |
+| `gaussianBlur( node, directionNode, sigma, options = {} )` | Creates a gaussian blur effect. |
+| `grayscale( color )` | Converts color to grayscale. |
+| `hashBlur( textureNode, bluramount = float( 0.1 ), options = {} )` | Applies a hash blur effect. |
+| `lut3D( node, lut, size, intensity )` | Creates a LUT color grading effect. |
+| `motionBlur( inputNode, velocity, numSamples = int( 16 ) )` | Creates a motion blur effect. |
+| `outline( scene, camera, params )` | Creates an outline effect around selected objects. |
+| `rgbShift( node, amount = 0.005, angle = 0 )` | Creates an RGB shift effect. |
+| `sepia( color )` | Applies a sepia effect. |
+| `smaa( node )` | Creates a SMAA anti-aliasing effect. |
+| `sobel( node )` | Creates a sobel edge detection effect. |
+| `ssr( colorNode, depthNode, normalNode, metalnessNode, roughnessNode = null, camera = null )` | Creates screen space reflections. |
+| `ssgi( beautyNode, depthNode, normalNode, camera )` | Creates a SSGI effect. |
+| `ao( depthNode, normalNode, camera )` | Creates a Ground Truth Ambient Occlusion (GTAO) effect. |
+| `transition( nodeA, nodeB, mixTextureNode, mixRatio, threshold, useTexture )` | Creates a transition effect between two scenes. |
+| `traa( beautyNode, depthNode, velocityNode, camera )` | Creates a TRAA temporal anti-aliasing effect. |
+| `renderOutput( node, targetColorSpace, targetToneMapping )` | Apply the renderer output settings in the node. |
+
+Example:
+
+```js
+import { grayscale, pass } from 'three/tsl';
+import { gaussianBlur } from 'three/addons/tsl/display/GaussianBlurNode.js';
+
+// Post-processing
+const scenePass = pass( scene, camera );
+const output = scenePass.getTextureNode(); // default parameter is 'output'
+
+renderPipeline.outputNode = grayscale( gaussianBlur( output, 4 ) );
+```
+
+### Render Pass
+
+Functions for creating and managing render passes.
+
+| Name | Description |
+| -- | -- |
+| `pass( scene, camera, options = {} )` | Creates a pass node for rendering a scene. |
+| `mrt( outputNodes )` | Creates a Multiple Render Targets (MRT) node. |
+
+Example:
+
+```js
+import { pass, mrt, output, emissive } from 'three/tsl';
+
+const scenePass = pass( scene, camera );
+
+// Setup MRT
+scenePass.setMRT( mrt( {
+	output: output,
+	emissive: emissive
+} ) );
+
+const outputNode = scenePass.getTextureNode( 'output' );
+const emissiveNode = scenePass.getTextureNode( 'emissive' );
+```
+
+### Compute
+
+Compute shaders allow general-purpose GPU computations. TSL provides functions for creating and managing compute operations.
+
+| Name | Description |
+| -- | -- |
+| `compute( node, count = null, workgroupSize = [ 64 ] )` | Creates a compute node. |
+| `atomicAdd( node, value )` | Performs an atomic addition. |
+| `atomicSub( node, value )` | Performs an atomic subtraction. |
+| `atomicMax( node, value )` | Performs an atomic max operation. |
+| `atomicMin( node, value )` | Performs an atomic min operation. |
+| `atomicAnd( node, value )` | Performs an atomic AND operation. |
+| `atomicOr( node, value )` | Performs an atomic OR operation. |
+| `atomicXor( node, value )` | Performs an atomic XOR operation. |
+| `atomicStore( node, value )` | Stores a value atomically. |
+| `atomicLoad( node )` | Loads a value atomically. |
+| `workgroupBarrier()` | Creates a workgroup barrier. |
+| `storageBarrier()` | Creates a storage barrier. |
+| `textureBarrier()` | Creates a texture barrier. |
+| `barrier()` | Creates a memory barrier. |
+| `workgroupId` | The workgroup ID. |
+| `localId` | The local invocation ID within the workgroup. |
+| `globalId` | The global invocation ID. |
+| `numWorkgroups` | The number of workgroups. |
+| `subgroupSize` | The size of the subgroup. |
+
+Example:
+
+```js
+import { Fn, instancedArray, instanceIndex, deltaTime } from 'three/tsl';
+
+const count = 1000;
+const positionArray = instancedArray( count, 'vec3' );
+
+// create a compute function
+
+const computeShader = Fn( () => {
+
+	const position = positionArray.element( instanceIndex );
+
+	position.x.addAssign( deltaTime );
+
+} )().compute( count );
+
+//
+
+renderer.compute( computeShader );
+```
+
+## Storage
+
+Storage functions allow reading and writing to GPU buffers.
+
+| Name | Description |
+| -- | -- |
+| `storage( attribute, type, count )` | Creates a storage buffer. |
+| `storageTexture( texture )` | Creates a storage texture for read/write operations. |
+
+## Struct
+
+Structs allow you to create custom data types with multiple members. They can be used to organize related data in shaders, define structures for attributes and uniforms.
+
+| Name | Description |
+| -- | -- |
+| `struct( membersLayout, name = null )` | Creates a struct type with the specified member layout. |
+| `outputStruct( ...members )` | Creates an output struct node for returning multiple values. |
+
+Example:
+
+```js
+import { struct, vec3 } from 'three/tsl';
+
+// Define a custom struct
+const BoundingBox = struct( { min: 'vec3', max: 'vec3' } );
+
+// Create a new instance of the struct
+const bb = BoundingBox( vec3( 0 ), vec3( 1 ) ); // style 1
+const bb2 = BoundingBox( { min: vec3( 0 ), max: vec3( 1 ) } ); // style 2
+
+// Access the struct members
+const min = bb.get( 'min' );
+
+// Assign a new value to a member
+min.assign( vec3( -1, -1, -1 ) );
+```
+
+## Flow Control
+
+Functions for controlling shader flow.
+
+| Name | Description |
+| -- | -- |
+| `Discard()` | Discards the current fragment. |
+| `Return()` | Returns from the current function. |
+| `Break()` | Breaks out of a loop. |
+| `Continue()` | Continues to the next iteration of a loop. |
+
+Example:
+
+```js
+import { Fn, If, Discard, uv } from 'three/tsl';
+
+const customFragment = Fn( () => {
+
+	If( uv().x.lessThan( 0.5 ), () => {
+
+		Discard();
+
+	} );
+
+	return vec4( 1, 0, 0, 1 );
+
+} );
+
+material.colorNode = customFragment();
+```
+
+## Fog
+
+Functions for creating fog effects in the scene. Assign the fog node to `scene.fogNode`.
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `fog( color, factor )` | Creates a fog node with specified color and fog factor. | `FogNode` |
+| `rangeFogFactor( near, far )` | Creates a linear fog factor based on distance from camera. | `float` |
+| `densityFogFactor( density )` | Creates an exponential squared fog factor for denser fog. | `float` |
+
+Example:
+
+```js
+import { fog, rangeFogFactor, densityFogFactor, color } from 'three/tsl';
+
+// Linear fog (starts at 10 units, fully opaque at 100 units)
+scene.fogNode = fog( color( 0x000000 ), rangeFogFactor( 10, 100 ) );
+
+// Exponential fog (density-based)
+scene.fogNode = fog( color( 0xcccccc ), densityFogFactor( 0.02 ) );
+```
+
+## Color Adjustments
+
+Functions for adjusting and manipulating colors.
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `luminance( node )` | Calculates the luminance (perceived brightness) of a color. | `float` |
+| `saturation( node, adjustment = 1 )` | Adjusts the saturation of a color. Values > 1 increase saturation, < 1 decrease. | `color` |
+| `vibrance( node, adjustment = 1 )` | Selectively enhances less saturated colors while preserving already saturated ones. | `color` |
+| `hue( node, adjustment = 0 )` | Rotates the hue of a color. Value is in radians. | `color` |
+| `posterize( node, steps )` | Reduces the number of color levels, creating a poster-like effect. | `color` |
+
+Example:
+
+```js
+import { texture, saturation, hue, posterize } from 'three/tsl';
+
+// Increase saturation
+material.colorNode = saturation( texture( map ), 1.5 );
+
+// Rotate hue by 90 degrees
+material.colorNode = hue( texture( map ), Math.PI / 2 );
+
+// Posterize to 4 color levels
+material.colorNode = posterize( texture( map ), 4 );
+```
+
+## Utilities
+
+Utility functions for common shader tasks.
+
+| Name | Description | Type |
+| -- | -- | -- |
+| `billboarding( { position, horizontal, vertical } )` | Orients flat meshes always towards the camera. `position`: vertex positions in world space (default: `null`). `horizontal`: follow camera horizontally (default: `true`). `vertical`: follow camera vertically (default: `false`). | `vec3` |
+| `checker( coord )` | Creates a 2x2 checkerboard pattern. | `float` |
+
+Example:
+
+```js
+import { billboarding } from 'three/tsl';
+
+// Full billboarding (like particles) - faces camera in all directions
+material.vertexNode = billboarding();
+
+// Horizontal only (like trees) - rotates around Y axis only
+material.vertexNode = billboarding( { horizontal: true, vertical: false } );
+```
+
+## NodeMaterial
+
+Check below for more details about `NodeMaterial` inputs.
+
+#### Core
+
+| Name | Description | Type |
+|--|--|--|
+| `.fragmentNode` | Replaces the built-in material logic used in the fragment stage. | `vec4` |
+| `.vertexNode` | Replaces the built-in material logic used in the vertex stage. | `vec4` |
+| `.geometryNode` | Allows you to execute a TSL function to deal with Geometry. | `Fn()` |
+
+#### Basic
+
+| Name | Description | Reference | Type |
+|--|--|--|--|
+| `.colorNode` | Replace the logic of `material.color * material.map`. | `materialColor` | `vec4` |
+| `.depthNode` | Customize the `depth` output. | `depth` | `float` |
+| `.opacityNode` | Replace the logic of `material.opacity * material.alphaMap`. | `materialOpacity` | `float` |
+| `.alphaTestNode` | Sets a threshold to discard pixels with low opacity. | `materialAlphaTest` | `float` |
+| `.positionNode` | Represents the vertex positions in local-space. Replace the logic of `material.displacementMap * material.displacementScale + material.displacementBias`. | `positionLocal` | `vec3` |
+
+#### Lighting
+
+| Name | Description | Reference | Type |
+|--|--|--|--|
+| `.emissiveNode` | Replace the logic of `material.emissive * material.emissiveIntensity * material.emissiveMap`. | `materialEmissive` | `color` |
+| `.normalNode` | Represents the normals direction in view-space. Replace the logic of `material.normalMap * material.normalScale` and `material.bumpMap * material.bumpScale`. | `materialNormal` | `vec3` |
+| `.lightsNode` | Defines the lights and lighting model that will be used by the material. |  | `lights()` |
+| `.envNode` | Replace the logic of `material.envMap * material.envMapRotation * material.envMapIntensity`. |  | `color` |
+
+#### Backdrop
+
+| Name | Description | Type |
+|--|--|--|
+| `.backdropNode` | Set the current render color to be used before applying `Specular`, useful for `transmission` and `refraction` effects. | `color` |
+| `.backdropAlphaNode` | Define the alpha of `backdropNode`. | `float` |
+
+#### Shadows
+
+| Name | Description | Reference | Type |
+|--|--|--|--|
+| `.castShadowNode` | Control the `color` and `opacity` of the shadow that will be projected by the material. |  | `vec4` |
+| `.maskShadowNode` | Define a custom mask for the shadow. |  | `bool` |
+| `.receivedShadowNode` | Handle the shadow cast on the material. |  | `Fn()` |
+| `.receivedShadowPositionNode` | Define the shadow projection position in world-space. | `shadowPositionWorld` | `vec3` |
+| `.aoNode` | Replace the logic of `material.aoMap * aoMapIntensity`. | `materialAO` | `float` |
+
+#### Output
+
+| Name | Description | Reference | Type |
+|--|--|--|--|
+| `.maskNode` | Define the material's mask. Unlike opacity, it is discarded at the beginning of rendering, optimizing the process. |  | `bool` |
+| `.mrtNode` | Define a different MRT than the one defined in `pass()`. |  | `mrt()` |
+| `.outputNode` | Defines the material's final output. | `output` | `vec4` |
+
+## LineDashedNodeMaterial
+
+| Name | Description | Reference | Type |
+|--|--|--|--|
+| `.dashScaleNode` | Replace the logic of `material.scale`. | `materialLineScale` | `float` |
+| `.dashSizeNode` | Replace the logic of `material.dashSize`. | `materialLineDashSize` | `float` |
+| `.gapSizeNode` | Replace the logic of `material.gapSize`. | `materialLineGapSize` | `float` |
+| `.offsetNode` | Replace the logic of `material.dashOffset`. | `materialLineDashOffset` | `float` |
+
+## MeshPhongNodeMaterial
+
+| Name | Description | Reference | Type |
+|--|--|--|--|
+| `.shininessNode` | Replace the logic of `material.shininess`. | `materialShininess` | `float` |
+| `.specularNode` | Replace the logic of `material.specular`. | `materialSpecular` | `color` |
+
+## MeshStandardNodeMaterial
+
+| Name | Description | Reference | Type |
+|--|--|--|--|
+| `.metalnessNode` | Replace the logic of `material.metalness * material.metalnessMap`. | `materialMetalness` | `float` |
+| `.roughnessNode` | Replace the logic of `material.roughness * material.roughnessMap`. | `materialRoughness` | `float` |
+
+## MeshPhysicalNodeMaterial
+
+| Name | Description | Reference | Type |
+|--|--|--|--|
+| `.clearcoatNode` | Replace the logic of `material.clearcoat * material.clearcoatMap`. | `materialClearcoat` | `float` |
+| `.clearcoatRoughnessNode` | Replace the logic of `material.clearcoatRoughness * material.clearcoatRoughnessMap`. | `materialClearcoatRoughness` | `float` |
+| `.clearcoatNormalNode` | Replace the logic of `material.clearcoatNormalMap * material.clearcoatNormalMapScale`. | `materialClearcoatNormal` | `vec3` |
+| `.sheenNode` | Replace the logic of `material.sheenColor * material.sheenColorMap`. | `materialSheen` | `color` |
+| `.iridescenceNode` | Replace the logic of `material.iridescence`. | `materialIridescence` | `float` |
+| `.iridescenceIORNode` | Replace the logic of `material.iridescenceIOR`. | `materialIridescenceIOR` | `float` |
+| `.iridescenceThicknessNode` | Replace the logic of `material.iridescenceThicknessRange * material.iridescenceThicknessMap`. | `materialIridescenceThickness` | `float` |
+| `.specularIntensityNode` | Replace the logic of `material.specularIntensity * material.specularIntensityMap`. | `materialSpecularIntensity` | `float` |
+| `.specularColorNode` | Replace the logic of `material.specularColor * material.specularColorMap`. | `materialSpecularColor` | `color` |
+| `.iorNode` | Replace the logic of `material.ior`. | `materialIOR` | `float` |
+| `.transmissionNode` | Replace the logic of `material.transmission * material.transmissionMap`. | `materialTransmission` | `color` |
+| `.thicknessNode` | Replace the logic of `material.thickness * material.thicknessMap`. | `materialTransmission` | `float` |
+| `.attenuationDistanceNode` | Replace the logic of `material.attenuationDistance`. | `materialAttenuationDistance` | `float` |
+| `.attenuationColorNode` | Replace the logic of `material.attenuationColor`. | `materialAttenuationColor` | `color` |
+| `.dispersionNode` | Replace the logic of `material.dispersion`. | `materialDispersion` | `float` |
+| `.anisotropyNode` | Replace the logic of `material.anisotropy * material.anisotropyMap`. | `materialAnisotropy` | `vec2` |
+
+## SpriteNodeMaterial
+
+| Name | Description | Type |
+|--|--|--|
+| `.positionNode` | Defines the position. | `vec3` |
+| `.rotationNode` | Defines the rotation. | `float` |
+| `.scaleNode` | Defines the scale. | `vec2` |
+
+## Transitioning common GLSL properties to TSL
+
+| GLSL | TSL | Type |
+| -- | -- | -- |
+| `position` | `positionGeometry` | `vec3` |
+| `transformed` | `positionLocal` | `vec3` |
+| `transformedNormal` | `normalLocal` | `vec3` |
+| `vWorldPosition` | `positionWorld` | `vec3` |
+| `vColor` | `vertexColor()` | `vec3` |
+| `vUv` \| `uv` | `uv()` | `vec2` |
+| `vNormal` | `normalView` | `vec3` |
+| `viewMatrix` | `cameraViewMatrix` | `mat4` |
+| `modelMatrix` | `modelWorldMatrix` | `mat4` |
+| `modelViewMatrix` | `modelViewMatrix` | `mat4` |
+| `projectionMatrix` | `cameraProjectionMatrix` | `mat4` |
+| `diffuseColor` | `material.colorNode` | `vec4` |
+| `gl_FragColor` | `material.fragmentNode` | `vec4` |
+
+
+
+---
+
+## Available Documentation
+
+The following documentation pages are available in markdown format at `https://threejs.org/docs/pages/{Name}.html.md`:
+
+### Core
+
+- [ARButton](https://threejs.org/docs/pages/ARButton.html.md)
+- [AmmoPhysics](https://threejs.org/docs/pages/AmmoPhysics.html.md)
+- [BasicLightingModel](https://threejs.org/docs/pages/BasicLightingModel.html.md)
+- [BatchedMesh](https://threejs.org/docs/pages/BatchedMesh.html.md)
+- [BitonicSort_BitonicSort](https://threejs.org/docs/pages/BitonicSort_BitonicSort.html.md)
+- [Bone](https://threejs.org/docs/pages/Bone.html.md)
+- [BooleanKeyframeTrack](https://threejs.org/docs/pages/BooleanKeyframeTrack.html.md)
+- [BufferAttribute](https://threejs.org/docs/pages/BufferAttribute.html.md)
+- [BundleGroup](https://threejs.org/docs/pages/BundleGroup.html.md)
+- [CCDIKSolver](https://threejs.org/docs/pages/CCDIKSolver.html.md)
+- [CSM](https://threejs.org/docs/pages/CSM.html.md)
+- [CSMFrustum](https://threejs.org/docs/pages/CSMFrustum.html.md)
+- [CSS2DObject](https://threejs.org/docs/pages/CSS2DObject.html.md)
+- [CSS2DRenderer](https://threejs.org/docs/pages/CSS2DRenderer.html.md)
+- [CSS3DObject](https://threejs.org/docs/pages/CSS3DObject.html.md)
+- [CSS3DRenderer](https://threejs.org/docs/pages/CSS3DRenderer.html.md)
+- [CSS3DSprite](https://threejs.org/docs/pages/CSS3DSprite.html.md)
+- [Cache](https://threejs.org/docs/pages/Cache.html.md)
+- [CanvasTarget](https://threejs.org/docs/pages/CanvasTarget.html.md)
+- [Capsule](https://threejs.org/docs/pages/Capsule.html.md)
+- [CinquefoilKnot](https://threejs.org/docs/pages/CinquefoilKnot.html.md)
+- [ClippingGroup](https://threejs.org/docs/pages/ClippingGroup.html.md)
+- [Clock](https://threejs.org/docs/pages/Clock.html.md)
+- [ColorConverter](https://threejs.org/docs/pages/ColorConverter.html.md)
+- [ColorKeyframeTrack](https://threejs.org/docs/pages/ColorKeyframeTrack.html.md)
+- [ConvexHull](https://threejs.org/docs/pages/ConvexHull.html.md)
+- [ConvexObjectBreaker](https://threejs.org/docs/pages/ConvexObjectBreaker.html.md)
+- [CubeRenderTarget](https://threejs.org/docs/pages/CubeRenderTarget.html.md)
+- [CubicInterpolant](https://threejs.org/docs/pages/CubicInterpolant.html.md)
+- [Cylindrical](https://threejs.org/docs/pages/Cylindrical.html.md)
+- [DRACOExporter](https://threejs.org/docs/pages/DRACOExporter.html.md)
+- [DataUtils](https://threejs.org/docs/pages/DataUtils.html.md)
+- [DebugEnvironment](https://threejs.org/docs/pages/DebugEnvironment.html.md)
+- [DecoratedTorusKnot4a](https://threejs.org/docs/pages/DecoratedTorusKnot4a.html.md)
+- [DecoratedTorusKnot4b](https://threejs.org/docs/pages/DecoratedTorusKnot4b.html.md)
+- [DecoratedTorusKnot5a](https://threejs.org/docs/pages/DecoratedTorusKnot5a.html.md)
+- [DecoratedTorusKnot5c](https://threejs.org/docs/pages/DecoratedTorusKnot5c.html.md)
+- [DirectionalLightShadow](https://threejs.org/docs/pages/DirectionalLightShadow.html.md)
+- [DiscreteInterpolant](https://threejs.org/docs/pages/DiscreteInterpolant.html.md)
+- [Earcut](https://threejs.org/docs/pages/Earcut.html.md)
+- [EdgeSplitModifier](https://threejs.org/docs/pages/EdgeSplitModifier.html.md)
+- [EffectComposer](https://threejs.org/docs/pages/EffectComposer.html.md)
+- [EventDispatcher](https://threejs.org/docs/pages/EventDispatcher.html.md)
+- [FigureEightPolynomialKnot](https://threejs.org/docs/pages/FigureEightPolynomialKnot.html.md)
+- [Float16BufferAttribute](https://threejs.org/docs/pages/Float16BufferAttribute.html.md)
+- [Float32BufferAttribute](https://threejs.org/docs/pages/Float32BufferAttribute.html.md)
+- [Flow](https://threejs.org/docs/pages/Flow.html.md)
+- [Fog](https://threejs.org/docs/pages/Fog.html.md)
+- [FogExp2](https://threejs.org/docs/pages/FogExp2.html.md)
+- [Font](https://threejs.org/docs/pages/Font.html.md)
+- [FullScreenQuad](https://threejs.org/docs/pages/FullScreenQuad.html.md)
+- [GLBufferAttribute](https://threejs.org/docs/pages/GLBufferAttribute.html.md)
+- [GLSLNodeBuilder](https://threejs.org/docs/pages/GLSLNodeBuilder.html.md)
+- [GLSLNodeFunction](https://threejs.org/docs/pages/GLSLNodeFunction.html.md)
+- [GLSLNodeParser](https://threejs.org/docs/pages/GLSLNodeParser.html.md)
+- [GLTFExporter](https://threejs.org/docs/pages/GLTFExporter.html.md)
+- [GPUComputationRenderer](https://threejs.org/docs/pages/GPUComputationRenderer.html.md)
+- [GrannyKnot](https://threejs.org/docs/pages/GrannyKnot.html.md)
+- [GroundedSkybox](https://threejs.org/docs/pages/GroundedSkybox.html.md)
+- [Group](https://threejs.org/docs/pages/Group.html.md)
+- [Gyroscope](https://threejs.org/docs/pages/Gyroscope.html.md)
+- [HTMLMesh](https://threejs.org/docs/pages/HTMLMesh.html.md)
+- [ImageUtils](https://threejs.org/docs/pages/ImageUtils.html.md)
+- [ImprovedNoise](https://threejs.org/docs/pages/ImprovedNoise.html.md)
+- [IndirectStorageBufferAttribute](https://threejs.org/docs/pages/IndirectStorageBufferAttribute.html.md)
+- [Info](https://threejs.org/docs/pages/Info.html.md)
+- [InspectorBase](https://threejs.org/docs/pages/InspectorBase.html.md)
+- [InstancedBufferAttribute](https://threejs.org/docs/pages/InstancedBufferAttribute.html.md)
+- [InstancedFlow](https://threejs.org/docs/pages/InstancedFlow.html.md)
+- [InstancedInterleavedBuffer](https://threejs.org/docs/pages/InstancedInterleavedBuffer.html.md)
+- [InstancedMesh](https://threejs.org/docs/pages/InstancedMesh.html.md)
+- [Int16BufferAttribute](https://threejs.org/docs/pages/Int16BufferAttribute.html.md)
+- [Int32BufferAttribute](https://threejs.org/docs/pages/Int32BufferAttribute.html.md)
+- [Int8BufferAttribute](https://threejs.org/docs/pages/Int8BufferAttribute.html.md)
+- [InteractiveGroup](https://threejs.org/docs/pages/InteractiveGroup.html.md)
+- [InterleavedBuffer](https://threejs.org/docs/pages/InterleavedBuffer.html.md)
+- [InterleavedBufferAttribute](https://threejs.org/docs/pages/InterleavedBufferAttribute.html.md)
+- [Interpolant](https://threejs.org/docs/pages/Interpolant.html.md)
+- [JoltPhysics](https://threejs.org/docs/pages/JoltPhysics.html.md)
+- [KTX2Exporter](https://threejs.org/docs/pages/KTX2Exporter.html.md)
+- [KeyframeTrack](https://threejs.org/docs/pages/KeyframeTrack.html.md)
+- [LDrawUtils](https://threejs.org/docs/pages/LDrawUtils.html.md)
+- [LOD](https://threejs.org/docs/pages/LOD.html.md)
+- [Layers](https://threejs.org/docs/pages/Layers.html.md)
+- [Lensflare](https://threejs.org/docs/pages/Lensflare.html.md)
+- [LensflareElement](https://threejs.org/docs/pages/LensflareElement.html.md)
+- [LensflareMesh](https://threejs.org/docs/pages/LensflareMesh.html.md)
+- [LightProbe](https://threejs.org/docs/pages/LightProbe.html.md)
+- [LightProbeGenerator](https://threejs.org/docs/pages/LightProbeGenerator.html.md)
+- [LightShadow](https://threejs.org/docs/pages/LightShadow.html.md)
+- [LightingModel](https://threejs.org/docs/pages/LightingModel.html.md)
+- [Line](https://threejs.org/docs/pages/Line.html.md)
+- [Line2](https://threejs.org/docs/pages/Line2.html.md)
+- [Line3](https://threejs.org/docs/pages/Line3.html.md)
+- [LineLoop](https://threejs.org/docs/pages/LineLoop.html.md)
+- [LineSegments](https://threejs.org/docs/pages/LineSegments.html.md)
+- [LineSegments2](https://threejs.org/docs/pages/LineSegments2.html.md)
+- [LinearInterpolant](https://threejs.org/docs/pages/LinearInterpolant.html.md)
+- [LoaderUtils](https://threejs.org/docs/pages/LoaderUtils.html.md)
+- [LoadingManager](https://threejs.org/docs/pages/LoadingManager.html.md)
+- [Lut](https://threejs.org/docs/pages/Lut.html.md)
+- [MD2Character](https://threejs.org/docs/pages/MD2Character.html.md)
+- [MD2CharacterComplex](https://threejs.org/docs/pages/MD2CharacterComplex.html.md)
+- [MarchingCubes](https://threejs.org/docs/pages/MarchingCubes.html.md)
+- [MathUtils](https://threejs.org/docs/pages/MathUtils.html.md)
+- [Mesh](https://threejs.org/docs/pages/Mesh.html.md)
+- [MeshSurfaceSampler](https://threejs.org/docs/pages/MeshSurfaceSampler.html.md)
+- [MorphAnimMesh](https://threejs.org/docs/pages/MorphAnimMesh.html.md)
+- [MorphBlendMesh](https://threejs.org/docs/pages/MorphBlendMesh.html.md)
+- [NURBSSurface](https://threejs.org/docs/pages/NURBSSurface.html.md)
+- [NURBSVolume](https://threejs.org/docs/pages/NURBSVolume.html.md)
+- [NodeAttribute](https://threejs.org/docs/pages/NodeAttribute.html.md)
+- [NodeBuilder](https://threejs.org/docs/pages/NodeBuilder.html.md)
+- [NodeCache](https://threejs.org/docs/pages/NodeCache.html.md)
+- [NodeCode](https://threejs.org/docs/pages/NodeCode.html.md)
+- [NodeFrame](https://threejs.org/docs/pages/NodeFrame.html.md)
+- [NodeFunction](https://threejs.org/docs/pages/NodeFunction.html.md)
+- [NodeFunctionInput](https://threejs.org/docs/pages/NodeFunctionInput.html.md)
+- [NodeMaterialObserver](https://threejs.org/docs/pages/NodeMaterialObserver.html.md)
+- [NodeParser](https://threejs.org/docs/pages/NodeParser.html.md)
+- [NodeUniform](https://threejs.org/docs/pages/NodeUniform.html.md)
+- [NodeVar](https://threejs.org/docs/pages/NodeVar.html.md)
+- [NodeVarying](https://threejs.org/docs/pages/NodeVarying.html.md)
+- [NumberKeyframeTrack](https://threejs.org/docs/pages/NumberKeyframeTrack.html.md)
+- [OBB](https://threejs.org/docs/pages/OBB.html.md)
+- [OBJExporter](https://threejs.org/docs/pages/OBJExporter.html.md)
+- [Object3D](https://threejs.org/docs/pages/Object3D.html.md)
+- [Octree](https://threejs.org/docs/pages/Octree.html.md)
+- [OculusHandModel](https://threejs.org/docs/pages/OculusHandModel.html.md)
+- [OculusHandPointerModel](https://threejs.org/docs/pages/OculusHandPointerModel.html.md)
+- [PLYExporter](https://threejs.org/docs/pages/PLYExporter.html.md)
+- [PMREMGenerator](https://threejs.org/docs/pages/PMREMGenerator.html.md)
+- [Path](https://threejs.org/docs/pages/Path.html.md)
+- [PhongLightingModel](https://threejs.org/docs/pages/PhongLightingModel.html.md)
+- [PhysicalLightingModel](https://threejs.org/docs/pages/PhysicalLightingModel.html.md)
+- [PointLightShadow](https://threejs.org/docs/pages/PointLightShadow.html.md)
+- [Points](https://threejs.org/docs/pages/Points.html.md)
+- [PostProcessing](https://threejs.org/docs/pages/PostProcessing.html.md)
+- [ProgressiveLightMap](https://threejs.org/docs/pages/ProgressiveLightMap.html.md)
+- [Projector](https://threejs.org/docs/pages/Projector.html.md)
+- [PropertyBinding](https://threejs.org/docs/pages/PropertyBinding.html.md)
+- [PropertyMixer](https://threejs.org/docs/pages/PropertyMixer.html.md)
+- [QuadMesh](https://threejs.org/docs/pages/QuadMesh.html.md)
+- [RapierPhysics](https://threejs.org/docs/pages/RapierPhysics.html.md)
+- [RectAreaLightTexturesLib](https://threejs.org/docs/pages/RectAreaLightTexturesLib.html.md)
+- [RectAreaLightUniformsLib](https://threejs.org/docs/pages/RectAreaLightUniformsLib.html.md)
+- [Reflector](https://threejs.org/docs/pages/Reflector.html.md)
+- [Refractor](https://threejs.org/docs/pages/Refractor.html.md)
+- [RenderTarget](https://threejs.org/docs/pages/RenderTarget.html.md)
+- [RenderTarget3D](https://threejs.org/docs/pages/RenderTarget3D.html.md)
+- [Renderer](https://threejs.org/docs/pages/Renderer.html.md)
+- [Resources](https://threejs.org/docs/pages/Resources.html.md)
+- [RoomEnvironment](https://threejs.org/docs/pages/RoomEnvironment.html.md)
+- [SSSLightingModel](https://threejs.org/docs/pages/SSSLightingModel.html.md)
+- [STLExporter](https://threejs.org/docs/pages/STLExporter.html.md)
+- [SVGObject](https://threejs.org/docs/pages/SVGObject.html.md)
+- [SVGRenderer](https://threejs.org/docs/pages/SVGRenderer.html.md)
+- [Scene](https://threejs.org/docs/pages/Scene.html.md)
+- [SceneOptimizer](https://threejs.org/docs/pages/SceneOptimizer.html.md)
+- [SelectionBox](https://threejs.org/docs/pages/SelectionBox.html.md)
+- [ShadowMapViewer](https://threejs.org/docs/pages/ShadowMapViewer.html.md)
+- [ShadowMaskModel](https://threejs.org/docs/pages/ShadowMaskModel.html.md)
+- [ShadowMesh](https://threejs.org/docs/pages/ShadowMesh.html.md)
+- [Shape](https://threejs.org/docs/pages/Shape.html.md)
+- [ShapePath](https://threejs.org/docs/pages/ShapePath.html.md)
+- [ShapeUtils](https://threejs.org/docs/pages/ShapeUtils.html.md)
+- [SimplexNoise](https://threejs.org/docs/pages/SimplexNoise.html.md)
+- [SimplifyModifier](https://threejs.org/docs/pages/SimplifyModifier.html.md)
+- [Skeleton](https://threejs.org/docs/pages/Skeleton.html.md)
+- [SkinnedMesh](https://threejs.org/docs/pages/SkinnedMesh.html.md)
+- [Sky](https://threejs.org/docs/pages/Sky.html.md)
+- [SkyMesh](https://threejs.org/docs/pages/SkyMesh.html.md)
+- [Source](https://threejs.org/docs/pages/Source.html.md)
+- [Spherical](https://threejs.org/docs/pages/Spherical.html.md)
+- [SphericalHarmonics3](https://threejs.org/docs/pages/SphericalHarmonics3.html.md)
+- [SpotLightShadow](https://threejs.org/docs/pages/SpotLightShadow.html.md)
+- [Sprite](https://threejs.org/docs/pages/Sprite.html.md)
+- [StorageBufferAttribute](https://threejs.org/docs/pages/StorageBufferAttribute.html.md)
+- [StorageInstancedBufferAttribute](https://threejs.org/docs/pages/StorageInstancedBufferAttribute.html.md)
+- [StringKeyframeTrack](https://threejs.org/docs/pages/StringKeyframeTrack.html.md)
+- [TSL](https://threejs.org/docs/pages/TSL.html.md)
+- [Tab](https://threejs.org/docs/pages/Tab.html.md)
+- [TessellateModifier](https://threejs.org/docs/pages/TessellateModifier.html.md)
+- [TextureUtils](https://threejs.org/docs/pages/TextureUtils.html.md)
+- [TiledLighting](https://threejs.org/docs/pages/TiledLighting.html.md)
+- [Timer](https://threejs.org/docs/pages/Timer.html.md)
+- [TimestampQueryPool](https://threejs.org/docs/pages/TimestampQueryPool.html.md)
+- [ToonLightingModel](https://threejs.org/docs/pages/ToonLightingModel.html.md)
+- [TorusKnot](https://threejs.org/docs/pages/TorusKnot.html.md)
+- [Transpiler](https://threejs.org/docs/pages/Transpiler.html.md)
+- [TrefoilKnot](https://threejs.org/docs/pages/TrefoilKnot.html.md)
+- [TrefoilPolynomialKnot](https://threejs.org/docs/pages/TrefoilPolynomialKnot.html.md)
+- [TubePainter](https://threejs.org/docs/pages/TubePainter.html.md)
+- [USDZExporter](https://threejs.org/docs/pages/USDZExporter.html.md)
+- [Uint16BufferAttribute](https://threejs.org/docs/pages/Uint16BufferAttribute.html.md)
+- [Uint32BufferAttribute](https://threejs.org/docs/pages/Uint32BufferAttribute.html.md)
+- [Uint8BufferAttribute](https://threejs.org/docs/pages/Uint8BufferAttribute.html.md)
+- [Uint8ClampedBufferAttribute](https://threejs.org/docs/pages/Uint8ClampedBufferAttribute.html.md)
+- [Uniform](https://threejs.org/docs/pages/Uniform.html.md)
+- [UniformsGroup](https://threejs.org/docs/pages/UniformsGroup.html.md)
+- [VOXMesh](https://threejs.org/docs/pages/VOXMesh.html.md)
+- [VRButton](https://threejs.org/docs/pages/VRButton.html.md)
+- [Volume](https://threejs.org/docs/pages/Volume.html.md)
+- [VolumeSlice](https://threejs.org/docs/pages/VolumeSlice.html.md)
+- [VolumetricLightingModel](https://threejs.org/docs/pages/VolumetricLightingModel.html.md)
+- [WGSLNodeBuilder](https://threejs.org/docs/pages/WGSLNodeBuilder.html.md)
+- [WGSLNodeFunction](https://threejs.org/docs/pages/WGSLNodeFunction.html.md)
+- [WGSLNodeParser](https://threejs.org/docs/pages/WGSLNodeParser.html.md)
+- [Water](https://threejs.org/docs/pages/Water.html.md)
+- [WaterMesh](https://threejs.org/docs/pages/WaterMesh.html.md)
+- [WebGL](https://threejs.org/docs/pages/WebGL.html.md)
+- [WebGL3DRenderTarget](https://threejs.org/docs/pages/WebGL3DRenderTarget.html.md)
+- [WebGLArrayRenderTarget](https://threejs.org/docs/pages/WebGLArrayRenderTarget.html.md)
+- [WebGLCubeRenderTarget](https://threejs.org/docs/pages/WebGLCubeRenderTarget.html.md)
+- [WebGLRenderTarget](https://threejs.org/docs/pages/WebGLRenderTarget.html.md)
+- [WebGLRenderer](https://threejs.org/docs/pages/WebGLRenderer.html.md)
+- [WebGLTimestampQueryPool](https://threejs.org/docs/pages/WebGLTimestampQueryPool.html.md)
+- [WebGPU](https://threejs.org/docs/pages/WebGPU.html.md)
+- [WebGPURenderer](https://threejs.org/docs/pages/WebGPURenderer.html.md)
+- [WebGPUTimestampQueryPool](https://threejs.org/docs/pages/WebGPUTimestampQueryPool.html.md)
+- [Wireframe](https://threejs.org/docs/pages/Wireframe.html.md)
+- [WireframeGeometry2](https://threejs.org/docs/pages/WireframeGeometry2.html.md)
+- [WorkerPool](https://threejs.org/docs/pages/WorkerPool.html.md)
+
+### Cameras
+
+- [ArrayCamera](https://threejs.org/docs/pages/ArrayCamera.html.md)
+- [Camera](https://threejs.org/docs/pages/Camera.html.md)
+- [CubeCamera](https://threejs.org/docs/pages/CubeCamera.html.md)
+- [OrthographicCamera](https://threejs.org/docs/pages/OrthographicCamera.html.md)
+- [PerspectiveCamera](https://threejs.org/docs/pages/PerspectiveCamera.html.md)
+- [StereoCamera](https://threejs.org/docs/pages/StereoCamera.html.md)
+
+### Lights
+
+- [AmbientLight](https://threejs.org/docs/pages/AmbientLight.html.md)
+- [DirectionalLight](https://threejs.org/docs/pages/DirectionalLight.html.md)
+- [HemisphereLight](https://threejs.org/docs/pages/HemisphereLight.html.md)
+- [IESSpotLight](https://threejs.org/docs/pages/IESSpotLight.html.md)
+- [Light](https://threejs.org/docs/pages/Light.html.md)
+- [PointLight](https://threejs.org/docs/pages/PointLight.html.md)
+- [ProjectorLight](https://threejs.org/docs/pages/ProjectorLight.html.md)
+- [RectAreaLight](https://threejs.org/docs/pages/RectAreaLight.html.md)
+- [SpotLight](https://threejs.org/docs/pages/SpotLight.html.md)
+- [XREstimatedLight](https://threejs.org/docs/pages/XREstimatedLight.html.md)
+
+### Materials
+
+- [LDrawConditionalLineMaterial](https://threejs.org/docs/pages/LDrawConditionalLineMaterial.html.md)
+- [Line2NodeMaterial](https://threejs.org/docs/pages/Line2NodeMaterial.html.md)
+- [LineBasicMaterial](https://threejs.org/docs/pages/LineBasicMaterial.html.md)
+- [LineBasicNodeMaterial](https://threejs.org/docs/pages/LineBasicNodeMaterial.html.md)
+- [LineDashedMaterial](https://threejs.org/docs/pages/LineDashedMaterial.html.md)
+- [LineDashedNodeMaterial](https://threejs.org/docs/pages/LineDashedNodeMaterial.html.md)
+- [LineMaterial](https://threejs.org/docs/pages/LineMaterial.html.md)
+- [Material](https://threejs.org/docs/pages/Material.html.md)
+- [MeshBasicMaterial](https://threejs.org/docs/pages/MeshBasicMaterial.html.md)
+- [MeshBasicNodeMaterial](https://threejs.org/docs/pages/MeshBasicNodeMaterial.html.md)
+- [MeshDepthMaterial](https://threejs.org/docs/pages/MeshDepthMaterial.html.md)
+- [MeshDistanceMaterial](https://threejs.org/docs/pages/MeshDistanceMaterial.html.md)
+- [MeshLambertMaterial](https://threejs.org/docs/pages/MeshLambertMaterial.html.md)
+- [MeshLambertNodeMaterial](https://threejs.org/docs/pages/MeshLambertNodeMaterial.html.md)
+- [MeshMatcapMaterial](https://threejs.org/docs/pages/MeshMatcapMaterial.html.md)
+- [MeshMatcapNodeMaterial](https://threejs.org/docs/pages/MeshMatcapNodeMaterial.html.md)
+- [MeshNormalMaterial](https://threejs.org/docs/pages/MeshNormalMaterial.html.md)
+- [MeshNormalNodeMaterial](https://threejs.org/docs/pages/MeshNormalNodeMaterial.html.md)
+- [MeshPhongMaterial](https://threejs.org/docs/pages/MeshPhongMaterial.html.md)
+- [MeshPhongNodeMaterial](https://threejs.org/docs/pages/MeshPhongNodeMaterial.html.md)
+- [MeshPhysicalMaterial](https://threejs.org/docs/pages/MeshPhysicalMaterial.html.md)
+- [MeshPhysicalNodeMaterial](https://threejs.org/docs/pages/MeshPhysicalNodeMaterial.html.md)
+- [MeshPostProcessingMaterial](https://threejs.org/docs/pages/MeshPostProcessingMaterial.html.md)
+- [MeshSSSNodeMaterial](https://threejs.org/docs/pages/MeshSSSNodeMaterial.html.md)
+- [MeshStandardMaterial](https://threejs.org/docs/pages/MeshStandardMaterial.html.md)
+- [MeshStandardNodeMaterial](https://threejs.org/docs/pages/MeshStandardNodeMaterial.html.md)
+- [MeshToonMaterial](https://threejs.org/docs/pages/MeshToonMaterial.html.md)
+- [MeshToonNodeMaterial](https://threejs.org/docs/pages/MeshToonNodeMaterial.html.md)
+- [NodeMaterial](https://threejs.org/docs/pages/NodeMaterial.html.md)
+- [PointsMaterial](https://threejs.org/docs/pages/PointsMaterial.html.md)
+- [PointsNodeMaterial](https://threejs.org/docs/pages/PointsNodeMaterial.html.md)
+- [RawShaderMaterial](https://threejs.org/docs/pages/RawShaderMaterial.html.md)
+- [ShaderMaterial](https://threejs.org/docs/pages/ShaderMaterial.html.md)
+- [ShadowMaterial](https://threejs.org/docs/pages/ShadowMaterial.html.md)
+- [ShadowNodeMaterial](https://threejs.org/docs/pages/ShadowNodeMaterial.html.md)
+- [SpriteMaterial](https://threejs.org/docs/pages/SpriteMaterial.html.md)
+- [SpriteNodeMaterial](https://threejs.org/docs/pages/SpriteNodeMaterial.html.md)
+- [VolumeNodeMaterial](https://threejs.org/docs/pages/VolumeNodeMaterial.html.md)
+- [WoodNodeMaterial](https://threejs.org/docs/pages/WoodNodeMaterial.html.md)
+
+### Geometries
+
+- [BoxGeometry](https://threejs.org/docs/pages/BoxGeometry.html.md)
+- [BoxLineGeometry](https://threejs.org/docs/pages/BoxLineGeometry.html.md)
+- [BufferGeometry](https://threejs.org/docs/pages/BufferGeometry.html.md)
+- [CapsuleGeometry](https://threejs.org/docs/pages/CapsuleGeometry.html.md)
+- [CircleGeometry](https://threejs.org/docs/pages/CircleGeometry.html.md)
+- [ConeGeometry](https://threejs.org/docs/pages/ConeGeometry.html.md)
+- [ConvexGeometry](https://threejs.org/docs/pages/ConvexGeometry.html.md)
+- [CylinderGeometry](https://threejs.org/docs/pages/CylinderGeometry.html.md)
+- [DecalGeometry](https://threejs.org/docs/pages/DecalGeometry.html.md)
+- [DodecahedronGeometry](https://threejs.org/docs/pages/DodecahedronGeometry.html.md)
+- [EdgesGeometry](https://threejs.org/docs/pages/EdgesGeometry.html.md)
+- [ExtrudeGeometry](https://threejs.org/docs/pages/ExtrudeGeometry.html.md)
+- [IcosahedronGeometry](https://threejs.org/docs/pages/IcosahedronGeometry.html.md)
+- [InstancedBufferGeometry](https://threejs.org/docs/pages/InstancedBufferGeometry.html.md)
+- [LatheGeometry](https://threejs.org/docs/pages/LatheGeometry.html.md)
+- [LineGeometry](https://threejs.org/docs/pages/LineGeometry.html.md)
+- [LineSegmentsGeometry](https://threejs.org/docs/pages/LineSegmentsGeometry.html.md)
+- [OctahedronGeometry](https://threejs.org/docs/pages/OctahedronGeometry.html.md)
+- [ParametricGeometry](https://threejs.org/docs/pages/ParametricGeometry.html.md)
+- [PlaneGeometry](https://threejs.org/docs/pages/PlaneGeometry.html.md)
+- [PolyhedronGeometry](https://threejs.org/docs/pages/PolyhedronGeometry.html.md)
+- [RingGeometry](https://threejs.org/docs/pages/RingGeometry.html.md)
+- [RollerCoasterGeometry](https://threejs.org/docs/pages/RollerCoasterGeometry.html.md)
+- [RollerCoasterLiftersGeometry](https://threejs.org/docs/pages/RollerCoasterLiftersGeometry.html.md)
+- [RollerCoasterShadowGeometry](https://threejs.org/docs/pages/RollerCoasterShadowGeometry.html.md)
+- [RoundedBoxGeometry](https://threejs.org/docs/pages/RoundedBoxGeometry.html.md)
+- [ShapeGeometry](https://threejs.org/docs/pages/ShapeGeometry.html.md)
+- [SkyGeometry](https://threejs.org/docs/pages/SkyGeometry.html.md)
+- [SphereGeometry](https://threejs.org/docs/pages/SphereGeometry.html.md)
+- [TeapotGeometry](https://threejs.org/docs/pages/TeapotGeometry.html.md)
+- [TetrahedronGeometry](https://threejs.org/docs/pages/TetrahedronGeometry.html.md)
+- [TextGeometry](https://threejs.org/docs/pages/TextGeometry.html.md)
+- [TorusGeometry](https://threejs.org/docs/pages/TorusGeometry.html.md)
+- [TorusKnotGeometry](https://threejs.org/docs/pages/TorusKnotGeometry.html.md)
+- [TreesGeometry](https://threejs.org/docs/pages/TreesGeometry.html.md)
+- [TubeGeometry](https://threejs.org/docs/pages/TubeGeometry.html.md)
+- [WireframeGeometry](https://threejs.org/docs/pages/WireframeGeometry.html.md)
+
+### Textures
+
+- [CanvasTexture](https://threejs.org/docs/pages/CanvasTexture.html.md)
+- [CompressedArrayTexture](https://threejs.org/docs/pages/CompressedArrayTexture.html.md)
+- [CompressedCubeTexture](https://threejs.org/docs/pages/CompressedCubeTexture.html.md)
+- [CompressedTexture](https://threejs.org/docs/pages/CompressedTexture.html.md)
+- [CubeDepthTexture](https://threejs.org/docs/pages/CubeDepthTexture.html.md)
+- [CubeTexture](https://threejs.org/docs/pages/CubeTexture.html.md)
+- [Data3DTexture](https://threejs.org/docs/pages/Data3DTexture.html.md)
+- [DataArrayTexture](https://threejs.org/docs/pages/DataArrayTexture.html.md)
+- [DataTexture](https://threejs.org/docs/pages/DataTexture.html.md)
+- [DepthTexture](https://threejs.org/docs/pages/DepthTexture.html.md)
+- [ExternalTexture](https://threejs.org/docs/pages/ExternalTexture.html.md)
+- [FlakesTexture](https://threejs.org/docs/pages/FlakesTexture.html.md)
+- [FramebufferTexture](https://threejs.org/docs/pages/FramebufferTexture.html.md)
+- [Storage3DTexture](https://threejs.org/docs/pages/Storage3DTexture.html.md)
+- [StorageArrayTexture](https://threejs.org/docs/pages/StorageArrayTexture.html.md)
+- [StorageTexture](https://threejs.org/docs/pages/StorageTexture.html.md)
+- [Texture](https://threejs.org/docs/pages/Texture.html.md)
+- [VOXData3DTexture](https://threejs.org/docs/pages/VOXData3DTexture.html.md)
+- [VideoFrameTexture](https://threejs.org/docs/pages/VideoFrameTexture.html.md)
+- [VideoTexture](https://threejs.org/docs/pages/VideoTexture.html.md)
+
+### Loaders
+
+- [AMFLoader](https://threejs.org/docs/pages/AMFLoader.html.md)
+- [AnimationLoader](https://threejs.org/docs/pages/AnimationLoader.html.md)
+- [AudioLoader](https://threejs.org/docs/pages/AudioLoader.html.md)
+- [BVHLoader](https://threejs.org/docs/pages/BVHLoader.html.md)
+- [BufferGeometryLoader](https://threejs.org/docs/pages/BufferGeometryLoader.html.md)
+- [ColladaLoader](https://threejs.org/docs/pages/ColladaLoader.html.md)
+- [CompressedTextureLoader](https://threejs.org/docs/pages/CompressedTextureLoader.html.md)
+- [CubeTextureLoader](https://threejs.org/docs/pages/CubeTextureLoader.html.md)
+- [DDSLoader](https://threejs.org/docs/pages/DDSLoader.html.md)
+- [DRACOLoader](https://threejs.org/docs/pages/DRACOLoader.html.md)
+- [DataTextureLoader](https://threejs.org/docs/pages/DataTextureLoader.html.md)
+- [EXRLoader](https://threejs.org/docs/pages/EXRLoader.html.md)
+- [FBXLoader](https://threejs.org/docs/pages/FBXLoader.html.md)
+- [FileLoader](https://threejs.org/docs/pages/FileLoader.html.md)
+- [FontLoader](https://threejs.org/docs/pages/FontLoader.html.md)
+- [GCodeLoader](https://threejs.org/docs/pages/GCodeLoader.html.md)
+- [GLTFLoader](https://threejs.org/docs/pages/GLTFLoader.html.md)
+- [HDRCubeTextureLoader](https://threejs.org/docs/pages/HDRCubeTextureLoader.html.md)
+- [HDRLoader](https://threejs.org/docs/pages/HDRLoader.html.md)
+- [IESLoader](https://threejs.org/docs/pages/IESLoader.html.md)
+- [ImageBitmapLoader](https://threejs.org/docs/pages/ImageBitmapLoader.html.md)
+- [ImageLoader](https://threejs.org/docs/pages/ImageLoader.html.md)
+- [KMZLoader](https://threejs.org/docs/pages/KMZLoader.html.md)
+- [KTX2Loader](https://threejs.org/docs/pages/KTX2Loader.html.md)
+- [KTXLoader](https://threejs.org/docs/pages/KTXLoader.html.md)
+- [LDrawLoader](https://threejs.org/docs/pages/LDrawLoader.html.md)
+- [LUT3dlLoader](https://threejs.org/docs/pages/LUT3dlLoader.html.md)
+- [LUTCubeLoader](https://threejs.org/docs/pages/LUTCubeLoader.html.md)
+- [LUTImageLoader](https://threejs.org/docs/pages/LUTImageLoader.html.md)
+- [LWOLoader](https://threejs.org/docs/pages/LWOLoader.html.md)
+- [Loader](https://threejs.org/docs/pages/Loader.html.md)
+- [LottieLoader](https://threejs.org/docs/pages/LottieLoader.html.md)
+- [MD2Loader](https://threejs.org/docs/pages/MD2Loader.html.md)
+- [MDDLoader](https://threejs.org/docs/pages/MDDLoader.html.md)
+- [MTLLoader](https://threejs.org/docs/pages/MTLLoader.html.md)
+- [MaterialLoader](https://threejs.org/docs/pages/MaterialLoader.html.md)
+- [MaterialXLoader](https://threejs.org/docs/pages/MaterialXLoader.html.md)
+- [NRRDLoader](https://threejs.org/docs/pages/NRRDLoader.html.md)
+- [NodeLoader](https://threejs.org/docs/pages/NodeLoader.html.md)
+- [NodeMaterialLoader](https://threejs.org/docs/pages/NodeMaterialLoader.html.md)
+- [NodeObjectLoader](https://threejs.org/docs/pages/NodeObjectLoader.html.md)
+- [OBJLoader](https://threejs.org/docs/pages/OBJLoader.html.md)
+- [ObjectLoader](https://threejs.org/docs/pages/ObjectLoader.html.md)
+- [PCDLoader](https://threejs.org/docs/pages/PCDLoader.html.md)
+- [PDBLoader](https://threejs.org/docs/pages/PDBLoader.html.md)
+- [PLYLoader](https://threejs.org/docs/pages/PLYLoader.html.md)
+- [PVRLoader](https://threejs.org/docs/pages/PVRLoader.html.md)
+- [Rhino3dmLoader](https://threejs.org/docs/pages/Rhino3dmLoader.html.md)
+- [STLLoader](https://threejs.org/docs/pages/STLLoader.html.md)
+- [SVGLoader](https://threejs.org/docs/pages/SVGLoader.html.md)
+- [TDSLoader](https://threejs.org/docs/pages/TDSLoader.html.md)
+- [TGALoader](https://threejs.org/docs/pages/TGALoader.html.md)
+- [TIFFLoader](https://threejs.org/docs/pages/TIFFLoader.html.md)
+- [TTFLoader](https://threejs.org/docs/pages/TTFLoader.html.md)
+- [TextureLoader](https://threejs.org/docs/pages/TextureLoader.html.md)
+- [ThreeMFLoader](https://threejs.org/docs/pages/ThreeMFLoader.html.md)
+- [USDLoader](https://threejs.org/docs/pages/USDLoader.html.md)
+- [UltraHDRLoader](https://threejs.org/docs/pages/UltraHDRLoader.html.md)
+- [VOXLoader](https://threejs.org/docs/pages/VOXLoader.html.md)
+- [VRMLLoader](https://threejs.org/docs/pages/VRMLLoader.html.md)
+- [VTKLoader](https://threejs.org/docs/pages/VTKLoader.html.md)
+- [XYZLoader](https://threejs.org/docs/pages/XYZLoader.html.md)
+
+### Controls
+
+- [ArcballControls](https://threejs.org/docs/pages/ArcballControls.html.md)
+- [Controls](https://threejs.org/docs/pages/Controls.html.md)
+- [DragControls](https://threejs.org/docs/pages/DragControls.html.md)
+- [FirstPersonControls](https://threejs.org/docs/pages/FirstPersonControls.html.md)
+- [FlyControls](https://threejs.org/docs/pages/FlyControls.html.md)
+- [MapControls](https://threejs.org/docs/pages/MapControls.html.md)
+- [OrbitControls](https://threejs.org/docs/pages/OrbitControls.html.md)
+- [PointerLockControls](https://threejs.org/docs/pages/PointerLockControls.html.md)
+- [TrackballControls](https://threejs.org/docs/pages/TrackballControls.html.md)
+- [TransformControls](https://threejs.org/docs/pages/TransformControls.html.md)
+
+### Helpers
+
+- [ArrowHelper](https://threejs.org/docs/pages/ArrowHelper.html.md)
+- [AxesHelper](https://threejs.org/docs/pages/AxesHelper.html.md)
+- [Box3Helper](https://threejs.org/docs/pages/Box3Helper.html.md)
+- [BoxHelper](https://threejs.org/docs/pages/BoxHelper.html.md)
+- [CCDIKHelper](https://threejs.org/docs/pages/CCDIKHelper.html.md)
+- [CSMHelper](https://threejs.org/docs/pages/CSMHelper.html.md)
+- [CameraHelper](https://threejs.org/docs/pages/CameraHelper.html.md)
+- [DirectionalLightHelper](https://threejs.org/docs/pages/DirectionalLightHelper.html.md)
+- [GridHelper](https://threejs.org/docs/pages/GridHelper.html.md)
+- [HemisphereLightHelper](https://threejs.org/docs/pages/HemisphereLightHelper.html.md)
+- [LightProbeHelper](https://threejs.org/docs/pages/LightProbeHelper.html.md)
+- [OctreeHelper](https://threejs.org/docs/pages/OctreeHelper.html.md)
+- [PlaneHelper](https://threejs.org/docs/pages/PlaneHelper.html.md)
+- [PointLightHelper](https://threejs.org/docs/pages/PointLightHelper.html.md)
+- [PolarGridHelper](https://threejs.org/docs/pages/PolarGridHelper.html.md)
+- [PositionalAudioHelper](https://threejs.org/docs/pages/PositionalAudioHelper.html.md)
+- [RapierHelper](https://threejs.org/docs/pages/RapierHelper.html.md)
+- [RectAreaLightHelper](https://threejs.org/docs/pages/RectAreaLightHelper.html.md)
+- [SelectionHelper](https://threejs.org/docs/pages/SelectionHelper.html.md)
+- [SkeletonHelper](https://threejs.org/docs/pages/SkeletonHelper.html.md)
+- [SpotLightHelper](https://threejs.org/docs/pages/SpotLightHelper.html.md)
+- [TextureHelper](https://threejs.org/docs/pages/TextureHelper.html.md)
+- [TileShadowNodeHelper](https://threejs.org/docs/pages/TileShadowNodeHelper.html.md)
+- [VertexNormalsHelper](https://threejs.org/docs/pages/VertexNormalsHelper.html.md)
+- [VertexTangentsHelper](https://threejs.org/docs/pages/VertexTangentsHelper.html.md)
+- [ViewHelper](https://threejs.org/docs/pages/ViewHelper.html.md)
+
+### Animation
+
+- [AnimationAction](https://threejs.org/docs/pages/AnimationAction.html.md)
+- [AnimationClip](https://threejs.org/docs/pages/AnimationClip.html.md)
+- [AnimationClipCreator](https://threejs.org/docs/pages/AnimationClipCreator.html.md)
+- [AnimationMixer](https://threejs.org/docs/pages/AnimationMixer.html.md)
+- [AnimationObjectGroup](https://threejs.org/docs/pages/AnimationObjectGroup.html.md)
+- [AnimationUtils](https://threejs.org/docs/pages/AnimationUtils.html.md)
+
+### Audio
+
+- [Audio](https://threejs.org/docs/pages/Audio.html.md)
+- [AudioAnalyser](https://threejs.org/docs/pages/AudioAnalyser.html.md)
+- [AudioContext](https://threejs.org/docs/pages/AudioContext.html.md)
+- [AudioListener](https://threejs.org/docs/pages/AudioListener.html.md)
+- [PositionalAudio](https://threejs.org/docs/pages/PositionalAudio.html.md)
+
+### Math
+
+- [Box2](https://threejs.org/docs/pages/Box2.html.md)
+- [Box3](https://threejs.org/docs/pages/Box3.html.md)
+- [Color](https://threejs.org/docs/pages/Color.html.md)
+- [Euler](https://threejs.org/docs/pages/Euler.html.md)
+- [Frustum](https://threejs.org/docs/pages/Frustum.html.md)
+- [FrustumArray](https://threejs.org/docs/pages/FrustumArray.html.md)
+- [Matrix2](https://threejs.org/docs/pages/Matrix2.html.md)
+- [Matrix3](https://threejs.org/docs/pages/Matrix3.html.md)
+- [Matrix4](https://threejs.org/docs/pages/Matrix4.html.md)
+- [Plane](https://threejs.org/docs/pages/Plane.html.md)
+- [Quaternion](https://threejs.org/docs/pages/Quaternion.html.md)
+- [QuaternionKeyframeTrack](https://threejs.org/docs/pages/QuaternionKeyframeTrack.html.md)
+- [QuaternionLinearInterpolant](https://threejs.org/docs/pages/QuaternionLinearInterpolant.html.md)
+- [Ray](https://threejs.org/docs/pages/Ray.html.md)
+- [Raycaster](https://threejs.org/docs/pages/Raycaster.html.md)
+- [Sphere](https://threejs.org/docs/pages/Sphere.html.md)
+- [Triangle](https://threejs.org/docs/pages/Triangle.html.md)
+- [Vector2](https://threejs.org/docs/pages/Vector2.html.md)
+- [Vector3](https://threejs.org/docs/pages/Vector3.html.md)
+- [Vector4](https://threejs.org/docs/pages/Vector4.html.md)
+- [VectorKeyframeTrack](https://threejs.org/docs/pages/VectorKeyframeTrack.html.md)
+
+### Curves
+
+- [ArcCurve](https://threejs.org/docs/pages/ArcCurve.html.md)
+- [CatmullRomCurve3](https://threejs.org/docs/pages/CatmullRomCurve3.html.md)
+- [CubicBezierCurve](https://threejs.org/docs/pages/CubicBezierCurve.html.md)
+- [CubicBezierCurve3](https://threejs.org/docs/pages/CubicBezierCurve3.html.md)
+- [Curve](https://threejs.org/docs/pages/Curve.html.md)
+- [CurvePath](https://threejs.org/docs/pages/CurvePath.html.md)
+- [EllipseCurve](https://threejs.org/docs/pages/EllipseCurve.html.md)
+- [HeartCurve](https://threejs.org/docs/pages/HeartCurve.html.md)
+- [HelixCurve](https://threejs.org/docs/pages/HelixCurve.html.md)
+- [KnotCurve](https://threejs.org/docs/pages/KnotCurve.html.md)
+- [LineCurve](https://threejs.org/docs/pages/LineCurve.html.md)
+- [LineCurve3](https://threejs.org/docs/pages/LineCurve3.html.md)
+- [NURBSCurve](https://threejs.org/docs/pages/NURBSCurve.html.md)
+- [QuadraticBezierCurve](https://threejs.org/docs/pages/QuadraticBezierCurve.html.md)
+- [QuadraticBezierCurve3](https://threejs.org/docs/pages/QuadraticBezierCurve3.html.md)
+- [SplineCurve](https://threejs.org/docs/pages/SplineCurve.html.md)
+- [VivianiCurve](https://threejs.org/docs/pages/VivianiCurve.html.md)
+
+### Effects
+
+- [AnaglyphEffect](https://threejs.org/docs/pages/AnaglyphEffect.html.md)
+- [AsciiEffect](https://threejs.org/docs/pages/AsciiEffect.html.md)
+- [OutlineEffect](https://threejs.org/docs/pages/OutlineEffect.html.md)
+- [ParallaxBarrierEffect](https://threejs.org/docs/pages/ParallaxBarrierEffect.html.md)
+- [StereoEffect](https://threejs.org/docs/pages/StereoEffect.html.md)
+
+### Post-Processing
+
+- [AfterimagePass](https://threejs.org/docs/pages/AfterimagePass.html.md)
+- [AnaglyphPassNode](https://threejs.org/docs/pages/AnaglyphPassNode.html.md)
+- [BloomPass](https://threejs.org/docs/pages/BloomPass.html.md)
+- [BokehPass](https://threejs.org/docs/pages/BokehPass.html.md)
+- [ClearMaskPass](https://threejs.org/docs/pages/ClearMaskPass.html.md)
+- [ClearPass](https://threejs.org/docs/pages/ClearPass.html.md)
+- [CubeTexturePass](https://threejs.org/docs/pages/CubeTexturePass.html.md)
+- [DotScreenPass](https://threejs.org/docs/pages/DotScreenPass.html.md)
+- [FXAAPass](https://threejs.org/docs/pages/FXAAPass.html.md)
+- [FilmPass](https://threejs.org/docs/pages/FilmPass.html.md)
+- [GTAOPass](https://threejs.org/docs/pages/GTAOPass.html.md)
+- [GlitchPass](https://threejs.org/docs/pages/GlitchPass.html.md)
+- [HalftonePass](https://threejs.org/docs/pages/HalftonePass.html.md)
+- [LUTPass](https://threejs.org/docs/pages/LUTPass.html.md)
+- [MaskPass](https://threejs.org/docs/pages/MaskPass.html.md)
+- [OutlinePass](https://threejs.org/docs/pages/OutlinePass.html.md)
+- [OutputPass](https://threejs.org/docs/pages/OutputPass.html.md)
+- [ParallaxBarrierPassNode](https://threejs.org/docs/pages/ParallaxBarrierPassNode.html.md)
+- [Pass](https://threejs.org/docs/pages/Pass.html.md)
+- [PassNode](https://threejs.org/docs/pages/PassNode.html.md)
+- [PixelationPassNode](https://threejs.org/docs/pages/PixelationPassNode.html.md)
+- [ReflectorForSSRPass](https://threejs.org/docs/pages/ReflectorForSSRPass.html.md)
+- [RenderPass](https://threejs.org/docs/pages/RenderPass.html.md)
+- [RenderPixelatedPass](https://threejs.org/docs/pages/RenderPixelatedPass.html.md)
+- [RenderTransitionPass](https://threejs.org/docs/pages/RenderTransitionPass.html.md)
+- [SAOPass](https://threejs.org/docs/pages/SAOPass.html.md)
+- [SMAAPass](https://threejs.org/docs/pages/SMAAPass.html.md)
+- [SSAAPassNode](https://threejs.org/docs/pages/SSAAPassNode.html.md)
+- [SSAARenderPass](https://threejs.org/docs/pages/SSAARenderPass.html.md)
+- [SSAOPass](https://threejs.org/docs/pages/SSAOPass.html.md)
+- [SSRPass](https://threejs.org/docs/pages/SSRPass.html.md)
+- [SavePass](https://threejs.org/docs/pages/SavePass.html.md)
+- [ShaderPass](https://threejs.org/docs/pages/ShaderPass.html.md)
+- [StereoCompositePassNode](https://threejs.org/docs/pages/StereoCompositePassNode.html.md)
+- [StereoPassNode](https://threejs.org/docs/pages/StereoPassNode.html.md)
+- [TAARenderPass](https://threejs.org/docs/pages/TAARenderPass.html.md)
+- [TexturePass](https://threejs.org/docs/pages/TexturePass.html.md)
+- [ToonOutlinePassNode](https://threejs.org/docs/pages/ToonOutlinePassNode.html.md)
+- [UnrealBloomPass](https://threejs.org/docs/pages/UnrealBloomPass.html.md)
+
+### Nodes (TSL)
+
+- [AONode](https://threejs.org/docs/pages/AONode.html.md)
+- [AfterImageNode](https://threejs.org/docs/pages/AfterImageNode.html.md)
+- [AmbientLightNode](https://threejs.org/docs/pages/AmbientLightNode.html.md)
+- [AnalyticLightNode](https://threejs.org/docs/pages/AnalyticLightNode.html.md)
+- [AnamorphicNode](https://threejs.org/docs/pages/AnamorphicNode.html.md)
+- [ArrayElementNode](https://threejs.org/docs/pages/ArrayElementNode.html.md)
+- [ArrayNode](https://threejs.org/docs/pages/ArrayNode.html.md)
+- [AssignNode](https://threejs.org/docs/pages/AssignNode.html.md)
+- [AtomicFunctionNode](https://threejs.org/docs/pages/AtomicFunctionNode.html.md)
+- [AttributeNode](https://threejs.org/docs/pages/AttributeNode.html.md)
+- [BarrierNode](https://threejs.org/docs/pages/BarrierNode.html.md)
+- [BasicEnvironmentNode](https://threejs.org/docs/pages/BasicEnvironmentNode.html.md)
+- [BasicLightMapNode](https://threejs.org/docs/pages/BasicLightMapNode.html.md)
+- [BatchNode](https://threejs.org/docs/pages/BatchNode.html.md)
+- [BitcastNode](https://threejs.org/docs/pages/BitcastNode.html.md)
+- [BitcountNode](https://threejs.org/docs/pages/BitcountNode.html.md)
+- [BloomNode](https://threejs.org/docs/pages/BloomNode.html.md)
+- [BufferAttributeNode](https://threejs.org/docs/pages/BufferAttributeNode.html.md)
+- [BufferNode](https://threejs.org/docs/pages/BufferNode.html.md)
+- [BuiltinNode](https://threejs.org/docs/pages/BuiltinNode.html.md)
+- [BumpMapNode](https://threejs.org/docs/pages/BumpMapNode.html.md)
+- [BypassNode](https://threejs.org/docs/pages/BypassNode.html.md)
+- [CSMShadowNode](https://threejs.org/docs/pages/CSMShadowNode.html.md)
+- [ChromaticAberrationNode](https://threejs.org/docs/pages/ChromaticAberrationNode.html.md)
+- [ClippingNode](https://threejs.org/docs/pages/ClippingNode.html.md)
+- [CodeNode](https://threejs.org/docs/pages/CodeNode.html.md)
+- [ColorSpaceNode](https://threejs.org/docs/pages/ColorSpaceNode.html.md)
+- [ComputeBuiltinNode](https://threejs.org/docs/pages/ComputeBuiltinNode.html.md)
+- [ComputeNode](https://threejs.org/docs/pages/ComputeNode.html.md)
+- [ConditionalNode](https://threejs.org/docs/pages/ConditionalNode.html.md)
+- [ConstNode](https://threejs.org/docs/pages/ConstNode.html.md)
+- [ContextNode](https://threejs.org/docs/pages/ContextNode.html.md)
+- [ConvertNode](https://threejs.org/docs/pages/ConvertNode.html.md)
+- [CubeMapNode](https://threejs.org/docs/pages/CubeMapNode.html.md)
+- [CubeTextureNode](https://threejs.org/docs/pages/CubeTextureNode.html.md)
+- [DenoiseNode](https://threejs.org/docs/pages/DenoiseNode.html.md)
+- [DepthOfFieldNode](https://threejs.org/docs/pages/DepthOfFieldNode.html.md)
+- [DirectionalLightNode](https://threejs.org/docs/pages/DirectionalLightNode.html.md)
+- [DotScreenNode](https://threejs.org/docs/pages/DotScreenNode.html.md)
+- [EnvironmentNode](https://threejs.org/docs/pages/EnvironmentNode.html.md)
+- [EventNode](https://threejs.org/docs/pages/EventNode.html.md)
+- [ExpressionNode](https://threejs.org/docs/pages/ExpressionNode.html.md)
+- [FXAANode](https://threejs.org/docs/pages/FXAANode.html.md)
+- [FilmNode](https://threejs.org/docs/pages/FilmNode.html.md)
+- [FlipNode](https://threejs.org/docs/pages/FlipNode.html.md)
+- [FrontFacingNode](https://threejs.org/docs/pages/FrontFacingNode.html.md)
+- [FunctionCallNode](https://threejs.org/docs/pages/FunctionCallNode.html.md)
+- [FunctionNode](https://threejs.org/docs/pages/FunctionNode.html.md)
+- [FunctionOverloadingNode](https://threejs.org/docs/pages/FunctionOverloadingNode.html.md)
+- [GTAONode](https://threejs.org/docs/pages/GTAONode.html.md)
+- [GaussianBlurNode](https://threejs.org/docs/pages/GaussianBlurNode.html.md)
+- [HemisphereLightNode](https://threejs.org/docs/pages/HemisphereLightNode.html.md)
+- [IESSpotLightNode](https://threejs.org/docs/pages/IESSpotLightNode.html.md)
+- [IndexNode](https://threejs.org/docs/pages/IndexNode.html.md)
+- [InputNode](https://threejs.org/docs/pages/InputNode.html.md)
+- [InspectorNode](https://threejs.org/docs/pages/InspectorNode.html.md)
+- [InstanceNode](https://threejs.org/docs/pages/InstanceNode.html.md)
+- [InstancedMeshNode](https://threejs.org/docs/pages/InstancedMeshNode.html.md)
+- [IrradianceNode](https://threejs.org/docs/pages/IrradianceNode.html.md)
+- [IsolateNode](https://threejs.org/docs/pages/IsolateNode.html.md)
+- [JoinNode](https://threejs.org/docs/pages/JoinNode.html.md)
+- [LensflareNode](https://threejs.org/docs/pages/LensflareNode.html.md)
+- [LightProbeNode](https://threejs.org/docs/pages/LightProbeNode.html.md)
+- [LightingContextNode](https://threejs.org/docs/pages/LightingContextNode.html.md)
+- [LightingNode](https://threejs.org/docs/pages/LightingNode.html.md)
+- [LightsNode](https://threejs.org/docs/pages/LightsNode.html.md)
+- [LoopNode](https://threejs.org/docs/pages/LoopNode.html.md)
+- [Lut3DNode](https://threejs.org/docs/pages/Lut3DNode.html.md)
+- [MRTNode](https://threejs.org/docs/pages/MRTNode.html.md)
+- [MaterialNode](https://threejs.org/docs/pages/MaterialNode.html.md)
+- [MaterialReferenceNode](https://threejs.org/docs/pages/MaterialReferenceNode.html.md)
+- [MathNode](https://threejs.org/docs/pages/MathNode.html.md)
+- [MaxMipLevelNode](https://threejs.org/docs/pages/MaxMipLevelNode.html.md)
+- [MemberNode](https://threejs.org/docs/pages/MemberNode.html.md)
+- [ModelNode](https://threejs.org/docs/pages/ModelNode.html.md)
+- [MorphNode](https://threejs.org/docs/pages/MorphNode.html.md)
+- [Node](https://threejs.org/docs/pages/Node.html.md)
+- [NormalMapNode](https://threejs.org/docs/pages/NormalMapNode.html.md)
+- [Object3DNode](https://threejs.org/docs/pages/Object3DNode.html.md)
+- [OperatorNode](https://threejs.org/docs/pages/OperatorNode.html.md)
+- [OutlineNode](https://threejs.org/docs/pages/OutlineNode.html.md)
+- [OutputStructNode](https://threejs.org/docs/pages/OutputStructNode.html.md)
+- [PMREMNode](https://threejs.org/docs/pages/PMREMNode.html.md)
+- [PackFloatNode](https://threejs.org/docs/pages/PackFloatNode.html.md)
+- [ParameterNode](https://threejs.org/docs/pages/ParameterNode.html.md)
+- [PassMultipleTextureNode](https://threejs.org/docs/pages/PassMultipleTextureNode.html.md)
+- [PassTextureNode](https://threejs.org/docs/pages/PassTextureNode.html.md)
+- [PixelationNode](https://threejs.org/docs/pages/PixelationNode.html.md)
+- [PointLightNode](https://threejs.org/docs/pages/PointLightNode.html.md)
+- [PointShadowNode](https://threejs.org/docs/pages/PointShadowNode.html.md)
+- [PointUVNode](https://threejs.org/docs/pages/PointUVNode.html.md)
+- [PosterizeNode](https://threejs.org/docs/pages/PosterizeNode.html.md)
+- [ProjectorLightNode](https://threejs.org/docs/pages/ProjectorLightNode.html.md)
+- [PropertyNode](https://threejs.org/docs/pages/PropertyNode.html.md)
+- [RGBShiftNode](https://threejs.org/docs/pages/RGBShiftNode.html.md)
+- [RTTNode](https://threejs.org/docs/pages/RTTNode.html.md)
+- [RangeNode](https://threejs.org/docs/pages/RangeNode.html.md)
+- [RectAreaLightNode](https://threejs.org/docs/pages/RectAreaLightNode.html.md)
+- [ReferenceBaseNode](https://threejs.org/docs/pages/ReferenceBaseNode.html.md)
+- [ReferenceElementNode](https://threejs.org/docs/pages/ReferenceElementNode.html.md)
+- [ReferenceNode](https://threejs.org/docs/pages/ReferenceNode.html.md)
+- [ReflectorNode](https://threejs.org/docs/pages/ReflectorNode.html.md)
+- [RemapNode](https://threejs.org/docs/pages/RemapNode.html.md)
+- [RenderOutputNode](https://threejs.org/docs/pages/RenderOutputNode.html.md)
+- [RendererReferenceNode](https://threejs.org/docs/pages/RendererReferenceNode.html.md)
+- [RotateNode](https://threejs.org/docs/pages/RotateNode.html.md)
+- [SMAANode](https://threejs.org/docs/pages/SMAANode.html.md)
+- [SSGINode](https://threejs.org/docs/pages/SSGINode.html.md)
+- [SSRNode](https://threejs.org/docs/pages/SSRNode.html.md)
+- [SSSNode](https://threejs.org/docs/pages/SSSNode.html.md)
+- [SampleNode](https://threejs.org/docs/pages/SampleNode.html.md)
+- [SceneNode](https://threejs.org/docs/pages/SceneNode.html.md)
+- [ScreenNode](https://threejs.org/docs/pages/ScreenNode.html.md)
+- [ScriptableNode](https://threejs.org/docs/pages/ScriptableNode.html.md)
+- [ScriptableValueNode](https://threejs.org/docs/pages/ScriptableValueNode.html.md)
+- [SetNode](https://threejs.org/docs/pages/SetNode.html.md)
+- [ShadowBaseNode](https://threejs.org/docs/pages/ShadowBaseNode.html.md)
+- [ShadowNode](https://threejs.org/docs/pages/ShadowNode.html.md)
+- [SkinningNode](https://threejs.org/docs/pages/SkinningNode.html.md)
+- [SobelOperatorNode](https://threejs.org/docs/pages/SobelOperatorNode.html.md)
+- [SplitNode](https://threejs.org/docs/pages/SplitNode.html.md)
+- [SpotLightNode](https://threejs.org/docs/pages/SpotLightNode.html.md)
+- [SpriteSheetUVNode](https://threejs.org/docs/pages/SpriteSheetUVNode.html.md)
+- [StackNode](https://threejs.org/docs/pages/StackNode.html.md)
+- [StorageArrayElementNode](https://threejs.org/docs/pages/StorageArrayElementNode.html.md)
+- [StorageBufferNode](https://threejs.org/docs/pages/StorageBufferNode.html.md)
+- [StorageTextureNode](https://threejs.org/docs/pages/StorageTextureNode.html.md)
+- [StructNode](https://threejs.org/docs/pages/StructNode.html.md)
+- [StructTypeNode](https://threejs.org/docs/pages/StructTypeNode.html.md)
+- [SubBuildNode](https://threejs.org/docs/pages/SubBuildNode.html.md)
+- [SubgroupFunctionNode](https://threejs.org/docs/pages/SubgroupFunctionNode.html.md)
+- [TRAANode](https://threejs.org/docs/pages/TRAANode.html.md)
+- [TempNode](https://threejs.org/docs/pages/TempNode.html.md)
+- [Texture3DNode](https://threejs.org/docs/pages/Texture3DNode.html.md)
+- [TextureNode](https://threejs.org/docs/pages/TextureNode.html.md)
+- [TextureSizeNode](https://threejs.org/docs/pages/TextureSizeNode.html.md)
+- [TileShadowNode](https://threejs.org/docs/pages/TileShadowNode.html.md)
+- [TiledLightsNode](https://threejs.org/docs/pages/TiledLightsNode.html.md)
+- [ToneMappingNode](https://threejs.org/docs/pages/ToneMappingNode.html.md)
+- [TransitionNode](https://threejs.org/docs/pages/TransitionNode.html.md)
+- [UniformArrayElementNode](https://threejs.org/docs/pages/UniformArrayElementNode.html.md)
+- [UniformArrayNode](https://threejs.org/docs/pages/UniformArrayNode.html.md)
+- [UniformGroupNode](https://threejs.org/docs/pages/UniformGroupNode.html.md)
+- [UniformNode](https://threejs.org/docs/pages/UniformNode.html.md)
+- [UnpackFloatNode](https://threejs.org/docs/pages/UnpackFloatNode.html.md)
+- [UserDataNode](https://threejs.org/docs/pages/UserDataNode.html.md)
+- [VarNode](https://threejs.org/docs/pages/VarNode.html.md)
+- [VaryingNode](https://threejs.org/docs/pages/VaryingNode.html.md)
+- [VelocityNode](https://threejs.org/docs/pages/VelocityNode.html.md)
+- [VertexColorNode](https://threejs.org/docs/pages/VertexColorNode.html.md)
+- [ViewportDepthNode](https://threejs.org/docs/pages/ViewportDepthNode.html.md)
+- [ViewportDepthTextureNode](https://threejs.org/docs/pages/ViewportDepthTextureNode.html.md)
+- [ViewportSharedTextureNode](https://threejs.org/docs/pages/ViewportSharedTextureNode.html.md)
+- [ViewportTextureNode](https://threejs.org/docs/pages/ViewportTextureNode.html.md)
+- [WorkgroupInfoElementNode](https://threejs.org/docs/pages/WorkgroupInfoElementNode.html.md)
+- [WorkgroupInfoNode](https://threejs.org/docs/pages/WorkgroupInfoNode.html.md)
+
+### WebXR
+
+- [EXRExporter](https://threejs.org/docs/pages/EXRExporter.html.md)
+- [WebXRDepthSensing](https://threejs.org/docs/pages/WebXRDepthSensing.html.md)
+- [WebXRManager](https://threejs.org/docs/pages/WebXRManager.html.md)
+- [XRButton](https://threejs.org/docs/pages/XRButton.html.md)
+- [XRControllerModel](https://threejs.org/docs/pages/XRControllerModel.html.md)
+- [XRControllerModelFactory](https://threejs.org/docs/pages/XRControllerModelFactory.html.md)
+- [XRHandMeshModel](https://threejs.org/docs/pages/XRHandMeshModel.html.md)
+- [XRHandModel](https://threejs.org/docs/pages/XRHandModel.html.md)
+- [XRHandModelFactory](https://threejs.org/docs/pages/XRHandModelFactory.html.md)
+- [XRHandPrimitiveModel](https://threejs.org/docs/pages/XRHandPrimitiveModel.html.md)
+- [XRManager](https://threejs.org/docs/pages/XRManager.html.md)
+- [XRPlanes](https://threejs.org/docs/pages/XRPlanes.html.md)
+
+### Shader Modules
+
+- [module-ACESFilmicToneMappingShader](https://threejs.org/docs/pages/module-ACESFilmicToneMappingShader.html.md)
+- [module-AfterimageShader](https://threejs.org/docs/pages/module-AfterimageShader.html.md)
+- [module-BasicShader](https://threejs.org/docs/pages/module-BasicShader.html.md)
+- [module-Bayer](https://threejs.org/docs/pages/module-Bayer.html.md)
+- [module-BleachBypassShader](https://threejs.org/docs/pages/module-BleachBypassShader.html.md)
+- [module-BlendShader](https://threejs.org/docs/pages/module-BlendShader.html.md)
+- [module-BokehShader](https://threejs.org/docs/pages/module-BokehShader.html.md)
+- [module-BokehShader2](https://threejs.org/docs/pages/module-BokehShader2.html.md)
+- [module-BrightnessContrastShader](https://threejs.org/docs/pages/module-BrightnessContrastShader.html.md)
+- [module-BufferGeometryUtils](https://threejs.org/docs/pages/module-BufferGeometryUtils.html.md)
+- [module-CSMShader](https://threejs.org/docs/pages/module-CSMShader.html.md)
+- [module-CameraUtils](https://threejs.org/docs/pages/module-CameraUtils.html.md)
+- [module-ColorCorrectionShader](https://threejs.org/docs/pages/module-ColorCorrectionShader.html.md)
+- [module-ColorSpaces](https://threejs.org/docs/pages/module-ColorSpaces.html.md)
+- [module-ColorifyShader](https://threejs.org/docs/pages/module-ColorifyShader.html.md)
+- [module-ConvolutionShader](https://threejs.org/docs/pages/module-ConvolutionShader.html.md)
+- [module-CopyShader](https://threejs.org/docs/pages/module-CopyShader.html.md)
+- [module-DOFMipMapShader](https://threejs.org/docs/pages/module-DOFMipMapShader.html.md)
+- [module-DepthLimitedBlurShader](https://threejs.org/docs/pages/module-DepthLimitedBlurShader.html.md)
+- [module-DigitalGlitch](https://threejs.org/docs/pages/module-DigitalGlitch.html.md)
+- [module-DotScreenShader](https://threejs.org/docs/pages/module-DotScreenShader.html.md)
+- [module-ExposureShader](https://threejs.org/docs/pages/module-ExposureShader.html.md)
+- [module-FXAAShader](https://threejs.org/docs/pages/module-FXAAShader.html.md)
+- [module-FilmShader](https://threejs.org/docs/pages/module-FilmShader.html.md)
+- [module-FocusShader](https://threejs.org/docs/pages/module-FocusShader.html.md)
+- [module-FreiChenShader](https://threejs.org/docs/pages/module-FreiChenShader.html.md)
+- [module-GTAOShader](https://threejs.org/docs/pages/module-GTAOShader.html.md)
+- [module-GammaCorrectionShader](https://threejs.org/docs/pages/module-GammaCorrectionShader.html.md)
+- [module-GeometryCompressionUtils](https://threejs.org/docs/pages/module-GeometryCompressionUtils.html.md)
+- [module-GeometryUtils](https://threejs.org/docs/pages/module-GeometryUtils.html.md)
+- [module-GodRaysShader](https://threejs.org/docs/pages/module-GodRaysShader.html.md)
+- [module-HalftoneShader](https://threejs.org/docs/pages/module-HalftoneShader.html.md)
+- [module-HorizontalBlurShader](https://threejs.org/docs/pages/module-HorizontalBlurShader.html.md)
+- [module-HorizontalTiltShiftShader](https://threejs.org/docs/pages/module-HorizontalTiltShiftShader.html.md)
+- [module-HueSaturationShader](https://threejs.org/docs/pages/module-HueSaturationShader.html.md)
+- [module-Interpolations](https://threejs.org/docs/pages/module-Interpolations.html.md)
+- [module-KaleidoShader](https://threejs.org/docs/pages/module-KaleidoShader.html.md)
+- [module-LuminosityHighPassShader](https://threejs.org/docs/pages/module-LuminosityHighPassShader.html.md)
+- [module-LuminosityShader](https://threejs.org/docs/pages/module-LuminosityShader.html.md)
+- [module-MirrorShader](https://threejs.org/docs/pages/module-MirrorShader.html.md)
+- [module-NURBSUtils](https://threejs.org/docs/pages/module-NURBSUtils.html.md)
+- [module-NormalMapShader](https://threejs.org/docs/pages/module-NormalMapShader.html.md)
+- [module-OutputShader](https://threejs.org/docs/pages/module-OutputShader.html.md)
+- [module-ParametricFunctions](https://threejs.org/docs/pages/module-ParametricFunctions.html.md)
+- [module-PoissonDenoiseShader](https://threejs.org/docs/pages/module-PoissonDenoiseShader.html.md)
+- [module-RGBShiftShader](https://threejs.org/docs/pages/module-RGBShiftShader.html.md)
+- [module-Raymarching](https://threejs.org/docs/pages/module-Raymarching.html.md)
+- [module-SAOShader](https://threejs.org/docs/pages/module-SAOShader.html.md)
+- [module-SMAAShader](https://threejs.org/docs/pages/module-SMAAShader.html.md)
+- [module-SSAOShader](https://threejs.org/docs/pages/module-SSAOShader.html.md)
+- [module-SSRShader](https://threejs.org/docs/pages/module-SSRShader.html.md)
+- [module-SceneUtils](https://threejs.org/docs/pages/module-SceneUtils.html.md)
+- [module-SepiaShader](https://threejs.org/docs/pages/module-SepiaShader.html.md)
+- [module-SkeletonUtils](https://threejs.org/docs/pages/module-SkeletonUtils.html.md)
+- [module-SobelOperatorShader](https://threejs.org/docs/pages/module-SobelOperatorShader.html.md)
+- [module-SortUtils](https://threejs.org/docs/pages/module-SortUtils.html.md)
+- [module-SubsurfaceScatteringShader](https://threejs.org/docs/pages/module-SubsurfaceScatteringShader.html.md)
+- [module-Text2D](https://threejs.org/docs/pages/module-Text2D.html.md)
+- [module-TriangleBlurShader](https://threejs.org/docs/pages/module-TriangleBlurShader.html.md)
+- [module-UVsDebug](https://threejs.org/docs/pages/module-UVsDebug.html.md)
+- [module-UniformsUtils](https://threejs.org/docs/pages/module-UniformsUtils.html.md)
+- [module-UnpackDepthRGBAShader](https://threejs.org/docs/pages/module-UnpackDepthRGBAShader.html.md)
+- [module-VelocityShader](https://threejs.org/docs/pages/module-VelocityShader.html.md)
+- [module-VerticalBlurShader](https://threejs.org/docs/pages/module-VerticalBlurShader.html.md)
+- [module-VerticalTiltShiftShader](https://threejs.org/docs/pages/module-VerticalTiltShiftShader.html.md)
+- [module-VignetteShader](https://threejs.org/docs/pages/module-VignetteShader.html.md)
+- [module-VolumeShader](https://threejs.org/docs/pages/module-VolumeShader.html.md)
+- [module-WaterRefractionShader](https://threejs.org/docs/pages/module-WaterRefractionShader.html.md)
+- [module-WebGLTextureUtils](https://threejs.org/docs/pages/module-WebGLTextureUtils.html.md)
+- [module-WebGPUTextureUtils](https://threejs.org/docs/pages/module-WebGPUTextureUtils.html.md)

+ 158 - 0
docs/llms.txt

@@ -0,0 +1,158 @@
+# Three.js
+
+> Three.js is a cross-browser JavaScript library for creating 3D graphics using WebGL and WebGPU.
+
+## Instructions for Large Language Models
+
+When generating Three.js code, follow these guidelines:
+
+### 1. Use Import Maps (Not Old CDN Patterns)
+
+WRONG - outdated pattern:
+```html
+<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
+```
+
+CORRECT - modern pattern (always use latest version):
+```html
+<script type="importmap">
+{
+  "imports": {
+    "three": "https://cdn.jsdelivr.net/npm/three@0.182.0/build/three.module.js",
+    "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.182.0/examples/jsm/"
+  }
+}
+</script>
+<script type="module">
+import * as THREE from 'three';
+import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+</script>
+```
+
+### 2. Choosing Between WebGLRenderer and WebGPURenderer
+
+Three.js maintains both renderers:
+
+**Use WebGLRenderer** (default, mature):
+- Maximum browser compatibility
+- Well-established, many years of development
+- Most examples and tutorials use this
+
+```js
+import * as THREE from 'three';
+const renderer = new THREE.WebGLRenderer();
+```
+
+**Use WebGPURenderer** when you need:
+- Custom shaders/materials using TSL (Three.js Shading Language)
+- Compute shaders
+- Advanced node-based materials
+
+```js
+import * as THREE from 'three/webgpu';
+const renderer = new THREE.WebGPURenderer();
+await renderer.init();
+```
+
+### 3. TSL (Three.js Shading Language)
+
+When using WebGPURenderer, use TSL instead of raw GLSL for custom materials:
+
+```js
+import { texture, uv, color } from 'three/tsl';
+
+const material = new THREE.MeshStandardNodeMaterial();
+material.colorNode = texture( myTexture ).mul( color( 0xff0000 ) );
+```
+
+TSL benefits:
+- Works with both WebGL and WebGPU backends
+- No string manipulation or onBeforeCompile hacks
+- Type-safe, composable shader nodes
+- Automatic optimization
+
+### 4. NodeMaterial Classes (for WebGPU/TSL)
+
+When using TSL, use node-based materials:
+- MeshBasicNodeMaterial
+- MeshStandardNodeMaterial
+- MeshPhysicalNodeMaterial
+- LineBasicNodeMaterial
+- SpriteNodeMaterial
+
+## Getting Started
+
+- [Installation](https://threejs.org/manual/#en/installation)
+- [Creating a Scene](https://threejs.org/manual/#en/creating-a-scene)
+- [Fundamentals](https://threejs.org/manual/#en/fundamentals)
+- [Responsive Design](https://threejs.org/manual/#en/responsive)
+
+## Renderer Guides
+
+- [WebGPURenderer](https://threejs.org/manual/#en/webgpurenderer)
+
+## Core Concepts
+
+- [TSL Specification](https://threejs.org/docs/#api/en/nodes/TSL): Complete shader language reference
+- [Animation System](https://threejs.org/manual/#en/animation-system)
+- [Loading 3D Models](https://threejs.org/manual/#en/loading-3d-models)
+- [Scene Graph](https://threejs.org/manual/#en/scenegraph)
+- [Materials](https://threejs.org/manual/#en/materials)
+- [Textures](https://threejs.org/manual/#en/textures)
+- [Lights](https://threejs.org/manual/#en/lights)
+- [Cameras](https://threejs.org/manual/#en/cameras)
+- [Shadows](https://threejs.org/manual/#en/shadows)
+
+## Essential API
+
+### Core
+- [Object3D](https://threejs.org/docs/#api/en/core/Object3D)
+- [BufferGeometry](https://threejs.org/docs/#api/en/core/BufferGeometry)
+- [BufferAttribute](https://threejs.org/docs/#api/en/core/BufferAttribute)
+
+### Scenes
+- [Scene](https://threejs.org/docs/#api/en/scenes/Scene)
+
+### Cameras
+- [PerspectiveCamera](https://threejs.org/docs/#api/en/cameras/PerspectiveCamera)
+- [OrthographicCamera](https://threejs.org/docs/#api/en/cameras/OrthographicCamera)
+
+### Renderers
+- [WebGLRenderer](https://threejs.org/docs/#api/en/renderers/WebGLRenderer)
+- [WebGPURenderer](https://threejs.org/docs/#api/en/renderers/webgpu/WebGPURenderer)
+
+### Objects
+- [Mesh](https://threejs.org/docs/#api/en/objects/Mesh)
+- [InstancedMesh](https://threejs.org/docs/#api/en/objects/InstancedMesh)
+- [Group](https://threejs.org/docs/#api/en/objects/Group)
+
+### Materials
+- [MeshBasicMaterial](https://threejs.org/docs/#api/en/materials/MeshBasicMaterial)
+- [MeshStandardMaterial](https://threejs.org/docs/#api/en/materials/MeshStandardMaterial)
+- [MeshPhysicalMaterial](https://threejs.org/docs/#api/en/materials/MeshPhysicalMaterial)
+
+### Geometries
+- [BoxGeometry](https://threejs.org/docs/#api/en/geometries/BoxGeometry)
+- [SphereGeometry](https://threejs.org/docs/#api/en/geometries/SphereGeometry)
+- [PlaneGeometry](https://threejs.org/docs/#api/en/geometries/PlaneGeometry)
+
+### Lights
+- [AmbientLight](https://threejs.org/docs/#api/en/lights/AmbientLight)
+- [DirectionalLight](https://threejs.org/docs/#api/en/lights/DirectionalLight)
+- [PointLight](https://threejs.org/docs/#api/en/lights/PointLight)
+- [SpotLight](https://threejs.org/docs/#api/en/lights/SpotLight)
+
+### Loaders
+- [TextureLoader](https://threejs.org/docs/#api/en/loaders/TextureLoader)
+- [GLTFLoader](https://threejs.org/docs/#examples/en/loaders/GLTFLoader)
+
+### Controls
+- [OrbitControls](https://threejs.org/docs/#examples/en/controls/OrbitControls)
+- [TransformControls](https://threejs.org/docs/#examples/en/controls/TransformControls)
+
+### Math
+- [Vector2](https://threejs.org/docs/#api/en/math/Vector2)
+- [Vector3](https://threejs.org/docs/#api/en/math/Vector3)
+- [Matrix4](https://threejs.org/docs/#api/en/math/Matrix4)
+- [Quaternion](https://threejs.org/docs/#api/en/math/Quaternion)
+- [Color](https://threejs.org/docs/#api/en/math/Color)

+ 73 - 0
docs/pages/AMFLoader.html.md

@@ -0,0 +1,73 @@
+*Inheritance: Loader →*
+
+# AMFLoader
+
+A loader for the AMF format.
+
+The loader supports materials, color and ZIP compressed files. No constellation support (yet).
+
+## Code Example
+
+```js
+const loader = new AMFLoader();
+const object = await loader.loadAsync( './models/amf/rook.amf' );
+scene.add( object );
+```
+
+## Import
+
+AMFLoader is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { AMFLoader } from 'three/addons/loaders/AMFLoader.js';
+```
+
+## Constructor
+
+### new AMFLoader( manager : LoadingManager )
+
+Constructs a new AMF loader.
+
+**manager**
+
+The loading manager.
+
+## Methods
+
+### .load( url : string, onLoad : function, onProgress : onProgressCallback, onError : onErrorCallback )
+
+Starts loading from the given URL and passes the loaded AMF asset to the `onLoad()` callback.
+
+**url**
+
+The path/URL of the file to be loaded. This can also be a data URI.
+
+**onLoad**
+
+Executed when the loading process has been finished.
+
+**onProgress**
+
+Executed while the loading is in progress.
+
+**onError**
+
+Executed when errors occur.
+
+**Overrides:** [Loader#load](Loader.html#load)
+
+### .parse( data : ArrayBuffer ) : Group
+
+Parses the given AMF data and returns the resulting group.
+
+**data**
+
+The raw AMF asset data as an array buffer.
+
+**Overrides:** [Loader#parse](Loader.html#parse)
+
+**Returns:** A group representing the parsed asset.
+
+## Source
+
+[examples/jsm/loaders/AMFLoader.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/AMFLoader.js)

+ 29 - 0
docs/pages/AONode.html.md

@@ -0,0 +1,29 @@
+*Inheritance: EventDispatcher → Node → LightingNode →*
+
+# AONode
+
+A generic class that can be used by nodes which contribute ambient occlusion to the scene. E.g. an ambient occlusion map node can be used as input for this module. Used in [NodeMaterial](NodeMaterial.html).
+
+## Constructor
+
+### new AONode( aoNode : Node.<float> )
+
+Constructs a new AO node.
+
+**aoNode**
+
+The ambient occlusion node.
+
+Default is `null`.
+
+## Properties
+
+### .aoNode : Node.<float>
+
+The ambient occlusion node.
+
+Default is `null`.
+
+## Source
+
+[src/nodes/lighting/AONode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/lighting/AONode.js)

+ 37 - 0
docs/pages/ARButton.html.md

@@ -0,0 +1,37 @@
+# ARButton
+
+A utility class for creating a button that allows to initiate immersive AR sessions based on WebXR. The button can be created with a factory method and then appended ot the website's DOM.
+
+## Code Example
+
+```js
+document.body.appendChild( ARButton.createButton( renderer ) );
+```
+
+## Import
+
+ARButton is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { ARButton } from 'three/addons/webxr/ARButton.js';
+```
+
+## Static Methods
+
+### .createButton( renderer : WebGLRenderer | WebGPURenderer, sessionInit : XRSessionInit ) : HTMLElement
+
+Constructs a new AR button.
+
+**renderer**
+
+The renderer.
+
+**sessionInit**
+
+The a configuration object for the AR session.
+
+**Returns:** The button or an error message if `immersive-ar` isn't supported.
+
+## Source
+
+[examples/jsm/webxr/ARButton.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/webxr/ARButton.js)

+ 97 - 0
docs/pages/AfterImageNode.html.md

@@ -0,0 +1,97 @@
+*Inheritance: EventDispatcher → Node → TempNode →*
+
+# AfterImageNode
+
+Post processing node for creating an after image effect.
+
+## Import
+
+AfterImageNode is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { afterImage } from 'three/addons/tsl/display/AfterImageNode.js';
+```
+
+## Constructor
+
+### new AfterImageNode( textureNode : TextureNode, damp : Node.<float> )
+
+Constructs a new after image node.
+
+**textureNode**
+
+The texture node that represents the input of the effect.
+
+**damp**
+
+The damping intensity. A higher value means a stronger after image effect.
+
+Default is `0.96`.
+
+## Properties
+
+### .damp : Node.<float>
+
+How quickly the after-image fades. A higher value means the after-image persists longer, while a lower value means it fades faster. Should be in the range `[0, 1]`.
+
+### .textureNode : TextureNode
+
+The texture node that represents the input of the effect.
+
+### .updateBeforeType : string
+
+The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders its effect once per frame in `updateBefore()`.
+
+Default is `'frame'`.
+
+**Overrides:** [TempNode#updateBeforeType](TempNode.html#updateBeforeType)
+
+## Methods
+
+### .dispose()
+
+Frees internal resources. This method should be called when the effect is no longer required.
+
+**Overrides:** [TempNode#dispose](TempNode.html#dispose)
+
+### .getTextureNode() : PassTextureNode
+
+Returns the result of the effect as a texture node.
+
+**Returns:** A texture node that represents the result of the effect.
+
+### .setSize( width : number, height : number )
+
+Sets the size of the effect.
+
+**width**
+
+The width of the effect.
+
+**height**
+
+The height of the effect.
+
+### .setup( builder : NodeBuilder ) : PassTextureNode
+
+This method is used to setup the effect's TSL code.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [TempNode#setup](TempNode.html#setup)
+
+### .updateBefore( frame : NodeFrame )
+
+This method is used to render the effect once per frame.
+
+**frame**
+
+The current node frame.
+
+**Overrides:** [TempNode#updateBefore](TempNode.html#updateBefore)
+
+## Source
+
+[examples/jsm/tsl/display/AfterImageNode.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/tsl/display/AfterImageNode.js)

+ 106 - 0
docs/pages/AfterimagePass.html.md

@@ -0,0 +1,106 @@
+*Inheritance: Pass →*
+
+# AfterimagePass
+
+Pass for a basic after image effect.
+
+## Code Example
+
+```js
+const afterimagePass = new AfterimagePass( 0.9 );
+composer.addPass( afterimagePass );
+```
+
+## Import
+
+AfterimagePass is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { AfterimagePass } from 'three/addons/postprocessing/AfterimagePass.js';
+```
+
+## Constructor
+
+### new AfterimagePass( damp : number )
+
+Constructs a new after image pass.
+
+**damp**
+
+The damping intensity. A higher value means a stronger after image effect.
+
+Default is `0.96`.
+
+## Properties
+
+### .compFsMaterial : ShaderMaterial
+
+The composition material.
+
+### .copyFsMaterial : ShaderMaterial
+
+The copy material.
+
+### .damp : number
+
+The damping intensity, from 0.0 to 1.0. A higher value means a stronger after image effect.
+
+### .uniforms : Object
+
+The pass uniforms. Use this object if you want to update the `damp` value at runtime.
+
+```js
+pass.uniforms.damp.value = 0.9;
+```
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever the pass is no longer used in your app.
+
+**Overrides:** [Pass#dispose](Pass.html#dispose)
+
+### .render( renderer : WebGLRenderer, writeBuffer : WebGLRenderTarget, readBuffer : WebGLRenderTarget, deltaTime : number, maskActive : boolean )
+
+Performs the after image pass.
+
+**renderer**
+
+The renderer.
+
+**writeBuffer**
+
+The write buffer. This buffer is intended as the rendering destination for the pass.
+
+**readBuffer**
+
+The read buffer. The pass can access the result from the previous pass from this buffer.
+
+**deltaTime**
+
+The delta time in seconds.
+
+**maskActive**
+
+Whether masking is active or not.
+
+**Overrides:** [Pass#render](Pass.html#render)
+
+### .setSize( width : number, height : number )
+
+Sets the size of the pass.
+
+**width**
+
+The width to set.
+
+**height**
+
+The height to set.
+
+**Overrides:** [Pass#setSize](Pass.html#setSize)
+
+## Source
+
+[examples/jsm/postprocessing/AfterimagePass.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/postprocessing/AfterimagePass.js)

+ 44 - 0
docs/pages/AmbientLight.html.md

@@ -0,0 +1,44 @@
+*Inheritance: EventDispatcher → Object3D → Light →*
+
+# AmbientLight
+
+This light globally illuminates all objects in the scene equally.
+
+It cannot be used to cast shadows as it does not have a direction.
+
+## Code Example
+
+```js
+const light = new THREE.AmbientLight( 0x404040 ); // soft white light
+scene.add( light );
+```
+
+## Constructor
+
+### new AmbientLight( color : number | Color | string, intensity : number )
+
+Constructs a new ambient light.
+
+**color**
+
+The light's color.
+
+Default is `0xffffff`.
+
+**intensity**
+
+The light's strength/intensity.
+
+Default is `1`.
+
+## Properties
+
+### .isAmbientLight : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+## Source
+
+[src/lights/AmbientLight.js](https://github.com/mrdoob/three.js/blob/master/src/lights/AmbientLight.js)

+ 21 - 0
docs/pages/AmbientLightNode.html.md

@@ -0,0 +1,21 @@
+*Inheritance: EventDispatcher → Node → LightingNode → AnalyticLightNode →*
+
+# AmbientLightNode
+
+Module for representing ambient lights as nodes.
+
+## Constructor
+
+### new AmbientLightNode( light : AmbientLight )
+
+Constructs a new ambient light node.
+
+**light**
+
+The ambient light source.
+
+Default is `null`.
+
+## Source
+
+[src/nodes/lighting/AmbientLightNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/lighting/AmbientLightNode.js)

+ 79 - 0
docs/pages/AmmoPhysics.html.md

@@ -0,0 +1,79 @@
+# AmmoPhysics
+
+Can be used to include Ammo.js as a Physics engine into `three.js` apps. Make sure to include `ammo.wasm.js` first:
+
+It is then possible to initialize the API via:
+
+```js
+const physics = await AmmoPhysics();
+```
+
+## Code Example
+
+```js
+<script src="jsm/libs/ammo.wasm.js"></script>
+```
+
+## Import
+
+AmmoPhysics is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { AmmoPhysics } from 'three/addons/physics/AmmoPhysics.js';
+```
+
+## Methods
+
+### .addMesh( mesh : Mesh, mass : number, restitution : number )
+
+Adds the given mesh to this physics simulation.
+
+**mesh**
+
+The mesh to add.
+
+**mass**
+
+The mass in kg of the mesh.
+
+Default is `0`.
+
+**restitution**
+
+The restitution of the mesh, usually from 0 to 1. Represents how "bouncy" objects are when they collide with each other.
+
+Default is `0`.
+
+### .addScene( scene : Object3D )
+
+Adds the given scene to this physics simulation. Only meshes with a `physics` object in their [Object3D#userData](Object3D.html#userData) field will be honored. The object can be used to store the mass of the mesh. E.g.:
+
+```js
+box.userData.physics = { mass: 1 };
+```
+
+**scene**
+
+The scene or any type of 3D object to add.
+
+### .setMeshPosition( mesh : Mesh, position : Vector3, index : number )
+
+Set the position of the given mesh which is part of the physics simulation. Calling this method will reset the current simulated velocity of the mesh.
+
+**mesh**
+
+The mesh to update the position for.
+
+**position**
+
+The new position.
+
+**index**
+
+If the mesh is instanced, the index represents the instanced ID.
+
+Default is `0`.
+
+## Source
+
+[examples/jsm/physics/AmmoPhysics.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/physics/AmmoPhysics.js)

+ 69 - 0
docs/pages/AnaglyphEffect.html.md

@@ -0,0 +1,69 @@
+# AnaglyphEffect
+
+A class that creates an anaglyph effect.
+
+Note that this class can only be used with [WebGLRenderer](WebGLRenderer.html). When using [WebGPURenderer](WebGPURenderer.html), use [AnaglyphPassNode](AnaglyphPassNode.html).
+
+## Import
+
+AnaglyphEffect is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { AnaglyphEffect } from 'three/addons/effects/AnaglyphEffect.js';
+```
+
+## Constructor
+
+### new AnaglyphEffect( renderer : WebGLRenderer, width : number, height : number )
+
+Constructs a new anaglyph effect.
+
+**renderer**
+
+The renderer.
+
+**width**
+
+The width of the effect in physical pixels.
+
+Default is `512`.
+
+**height**
+
+The height of the effect in physical pixels.
+
+Default is `512`.
+
+## Methods
+
+### .dispose()
+
+Frees internal resources. This method should be called when the effect is no longer required.
+
+### .render( scene : Object3D, camera : Camera )
+
+When using this effect, this method should be called instead of the default [WebGLRenderer#render](WebGLRenderer.html#render).
+
+**scene**
+
+The scene to render.
+
+**camera**
+
+The camera.
+
+### .setSize( width : number, height : number )
+
+Resizes the effect.
+
+**width**
+
+The width of the effect in logical pixels.
+
+**height**
+
+The height of the effect in logical pixels.
+
+## Source
+
+[examples/jsm/effects/AnaglyphEffect.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/effects/AnaglyphEffect.js)

+ 51 - 0
docs/pages/AnaglyphPassNode.html.md

@@ -0,0 +1,51 @@
+*Inheritance: EventDispatcher → Node → TempNode → PassNode → StereoCompositePassNode →*
+
+# AnaglyphPassNode
+
+A render pass node that creates an anaglyph effect.
+
+## Import
+
+AnaglyphPassNode is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { anaglyphPass } from 'three/addons/tsl/display/AnaglyphPassNode.js';
+```
+
+## Constructor
+
+### new AnaglyphPassNode( scene : Scene, camera : Camera )
+
+Constructs a new anaglyph pass node.
+
+**scene**
+
+The scene to render.
+
+**camera**
+
+The camera to render the scene with.
+
+## Properties
+
+### .isAnaglyphPassNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+## Methods
+
+### .setup( builder : NodeBuilder ) : PassTextureNode
+
+This method is used to setup the effect's TSL code.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [StereoCompositePassNode#setup](StereoCompositePassNode.html#setup)
+
+## Source
+
+[examples/jsm/tsl/display/AnaglyphPassNode.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/tsl/display/AnaglyphPassNode.js)

+ 139 - 0
docs/pages/AnalyticLightNode.html.md

@@ -0,0 +1,139 @@
+*Inheritance: EventDispatcher → Node → LightingNode →*
+
+# AnalyticLightNode
+
+Base class for analytic light nodes.
+
+## Constructor
+
+### new AnalyticLightNode( light : Light )
+
+Constructs a new analytic light node.
+
+**light**
+
+The light source.
+
+Default is `null`.
+
+## Properties
+
+### .baseColorNode : Node
+
+This property is used to retain a reference to the original value of [AnalyticLightNode#colorNode](AnalyticLightNode.html#colorNode). The final color node is represented by a different node when using shadows.
+
+Default is `null`.
+
+### .color : Color
+
+The light's color value.
+
+### .colorNode : Node
+
+The light's color node. Points to `colorNode` of the light source, if set. Otherwise it creates a uniform node based on [AnalyticLightNode#color](AnalyticLightNode.html#color).
+
+### .isAnalyticLightNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .light : Light
+
+The light source.
+
+Default is `null`.
+
+### .shadowColorNode : Node
+
+Represents the light's shadow color.
+
+Default is `null`.
+
+### .shadowNode : ShadowNode
+
+Represents the light's shadow.
+
+Default is `null`.
+
+### .updateType : string
+
+Overwritten since analytic light nodes are updated once per frame.
+
+Default is `'frame'`.
+
+**Overrides:** [LightingNode#updateType](LightingNode.html#updateType)
+
+## Methods
+
+### .disposeShadow()
+
+Frees internal resources related to shadows.
+
+### .getLightVector( builder : NodeBuilder ) : Node.<vec3>
+
+Returns a node representing a direction vector which points from the current position in view space to the light's position in view space.
+
+**builder**
+
+The builder object used for setting up the light.
+
+**Returns:** The light vector node.
+
+### .setup( builder : NodeBuilder )
+
+Unlike most other nodes, lighting nodes do not return a output node in [Node#setup](Node.html#setup). The main purpose of lighting nodes is to configure the current [LightingModel](LightingModel.html) and/or invocate the respective interface methods.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [LightingNode#setup](LightingNode.html#setup)
+
+### .setupDirect( builder : NodeBuilder ) : Object | undefined (abstract)
+
+Sets up the direct lighting for the analytic light node.
+
+**builder**
+
+The builder object used for setting up the light.
+
+**Returns:** The direct light data (color and direction).
+
+### .setupDirectRectArea( builder : NodeBuilder ) : Object | undefined (abstract)
+
+Sets up the direct rect area lighting for the analytic light node.
+
+**builder**
+
+The builder object used for setting up the light.
+
+**Returns:** The direct rect area light data.
+
+### .setupShadow( builder : NodeBuilder )
+
+Setups the shadow for this light. This method is only executed if the light cast shadows and the current build object receives shadows. It incorporates shadows into the lighting computation.
+
+**builder**
+
+The current node builder.
+
+### .setupShadowNode() : ShadowNode
+
+Setups the shadow node for this light. The method exists so concrete light classes can setup different types of shadow nodes.
+
+**Returns:** The created shadow node.
+
+### .update( frame : NodeFrame )
+
+The update method is used to update light uniforms per frame. Potentially overwritten in concrete light nodes to update light specific uniforms.
+
+**frame**
+
+A reference to the current node frame.
+
+**Overrides:** [LightingNode#update](LightingNode.html#update)
+
+## Source
+
+[src/nodes/lighting/AnalyticLightNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/lighting/AnalyticLightNode.js)

+ 127 - 0
docs/pages/AnamorphicNode.html.md

@@ -0,0 +1,127 @@
+*Inheritance: EventDispatcher → Node → TempNode →*
+
+# AnamorphicNode
+
+Post processing node for adding an anamorphic flare effect.
+
+## Import
+
+AnamorphicNode is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { anamorphic } from 'three/addons/tsl/display/AnamorphicNode.js';
+```
+
+## Constructor
+
+### new AnamorphicNode( textureNode : TextureNode, thresholdNode : Node.<float>, scaleNode : Node.<float>, samples : number )
+
+Constructs a new anamorphic node.
+
+**textureNode**
+
+The texture node that represents the input of the effect.
+
+**thresholdNode**
+
+The threshold is one option to control the intensity and size of the effect.
+
+**scaleNode**
+
+Defines the vertical scale of the flares.
+
+**samples**
+
+More samples result in larger flares and a more expensive runtime behavior.
+
+## Properties
+
+### .colorNode : Node.<vec3>
+
+The color of the flares.
+
+### .resolution : Vector2
+
+The resolution scale.
+
+Default is `{(1,1)}`.
+
+**Deprecated:** Yes
+
+### .resolutionScale : number
+
+The resolution scale.
+
+### .samples : Node.<float>
+
+More samples result in larger flares and a more expensive runtime behavior.
+
+### .scaleNode : Node.<float>
+
+Defines the vertical scale of the flares.
+
+### .textureNode : TextureNode
+
+The texture node that represents the input of the effect.
+
+### .thresholdNode : Node.<float>
+
+The threshold is one option to control the intensity and size of the effect.
+
+### .updateBeforeType : string
+
+The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders its effect once per frame in `updateBefore()`.
+
+Default is `'frame'`.
+
+**Overrides:** [TempNode#updateBeforeType](TempNode.html#updateBeforeType)
+
+## Methods
+
+### .dispose()
+
+Frees internal resources. This method should be called when the effect is no longer required.
+
+**Overrides:** [TempNode#dispose](TempNode.html#dispose)
+
+### .getTextureNode() : PassTextureNode
+
+Returns the result of the effect as a texture node.
+
+**Returns:** A texture node that represents the result of the effect.
+
+### .setSize( width : number, height : number )
+
+Sets the size of the effect.
+
+**width**
+
+The width of the effect.
+
+**height**
+
+The height of the effect.
+
+### .setup( builder : NodeBuilder ) : PassTextureNode
+
+This method is used to setup the effect's TSL code.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [TempNode#setup](TempNode.html#setup)
+
+### .updateBefore( frame : NodeFrame )
+
+This method is used to render the effect once per frame.
+
+**frame**
+
+The current node frame.
+
+**Overrides:** [TempNode#updateBefore](TempNode.html#updateBefore)
+
+## Source
+
+[examples/jsm/tsl/display/AnamorphicNode.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/tsl/display/AnamorphicNode.js)

+ 337 - 0
docs/pages/AnimationAction.html.md

@@ -0,0 +1,337 @@
+# AnimationAction
+
+An instance of `AnimationAction` schedules the playback of an animation which is stored in [AnimationClip](AnimationClip.html).
+
+## Constructor
+
+### new AnimationAction( mixer : AnimationMixer, clip : AnimationClip, localRoot : Object3D, blendMode : NormalAnimationBlendMode | AdditiveAnimationBlendMode )
+
+Constructs a new animation action.
+
+**mixer**
+
+The mixer that is controlled by this action.
+
+**clip**
+
+The animation clip that holds the actual keyframes.
+
+**localRoot**
+
+The root object on which this action is performed.
+
+Default is `null`.
+
+**blendMode**
+
+The blend mode.
+
+## Properties
+
+### .blendMode : NormalAnimationBlendMode | AdditiveAnimationBlendMode
+
+Defines how the animation is blended/combined when two or more animations are simultaneously played.
+
+### .clampWhenFinished : boolean
+
+If set to true the animation will automatically be paused on its last frame.
+
+If set to false, [AnimationAction#enabled](AnimationAction.html#enabled) will automatically be switched to `false` when the last loop of the action has finished, so that this action has no further impact.
+
+Note: This member has no impact if the action is interrupted (it has only an effect if its last loop has really finished).
+
+Default is `false`.
+
+### .enabled : boolean
+
+If set to `false`, the action is disabled so it has no impact.
+
+When the action is re-enabled, the animation continues from its current time (setting `enabled` to `false` doesn't reset the action).
+
+Default is `true`.
+
+### .loop : LoopRepeat | LoopOnce | LoopPingPong
+
+The loop mode, set via [AnimationAction#setLoop](AnimationAction.html#setLoop).
+
+Default is `LoopRepeat`.
+
+### .paused : boolean
+
+If set to `true`, the playback of the action is paused.
+
+Default is `false`.
+
+### .repetitions : number
+
+The number of repetitions of the performed clip over the course of this action. Can be set via [AnimationAction#setLoop](AnimationAction.html#setLoop).
+
+Setting this number has no effect if [AnimationAction#loop](AnimationAction.html#loop) is set to `THREE:LoopOnce`.
+
+Default is `Infinity`.
+
+### .time : number
+
+The local time of this action (in seconds, starting with `0`).
+
+The value gets clamped or wrapped to `[0,clip.duration]` (according to the loop state).
+
+Default is `Infinity`.
+
+### .timeScale : number
+
+Scaling factor for the [AnimationAction#time](AnimationAction.html#time). A value of `0` causes the animation to pause. Negative values cause the animation to play backwards.
+
+Default is `1`.
+
+### .weight : number
+
+The degree of influence of this action (in the interval `[0, 1]`). Values between `0` (no impact) and `1` (full impact) can be used to blend between several actions.
+
+Default is `1`.
+
+### .zeroSlopeAtEnd : boolean
+
+Enables smooth interpolation without separate clips for start, loop and end.
+
+Default is `true`.
+
+### .zeroSlopeAtStart : boolean
+
+Enables smooth interpolation without separate clips for start, loop and end.
+
+Default is `true`.
+
+## Methods
+
+### .crossFadeFrom( fadeOutAction : AnimationAction, duration : number, warp : boolean ) : AnimationAction
+
+Causes this action to fade in and the given action to fade out, within the passed time interval.
+
+**fadeOutAction**
+
+The animation action to fade out.
+
+**duration**
+
+The duration of the fade.
+
+**warp**
+
+Whether warping should be used or not.
+
+Default is `false`.
+
+**Returns:** A reference to this animation action.
+
+### .crossFadeTo( fadeInAction : AnimationAction, duration : number, warp : boolean ) : AnimationAction
+
+Causes this action to fade out and the given action to fade in, within the passed time interval.
+
+**fadeInAction**
+
+The animation action to fade in.
+
+**duration**
+
+The duration of the fade.
+
+**warp**
+
+Whether warping should be used or not.
+
+Default is `false`.
+
+**Returns:** A reference to this animation action.
+
+### .fadeIn( duration : number ) : AnimationAction
+
+Fades the animation in by increasing its weight gradually from `0` to `1`, within the passed time interval.
+
+**duration**
+
+The duration of the fade.
+
+**Returns:** A reference to this animation action.
+
+### .fadeOut( duration : number ) : AnimationAction
+
+Fades the animation out by decreasing its weight gradually from `1` to `0`, within the passed time interval.
+
+**duration**
+
+The duration of the fade.
+
+**Returns:** A reference to this animation action.
+
+### .getClip() : AnimationClip
+
+Returns the animation clip of this animation action.
+
+**Returns:** The animation clip.
+
+### .getEffectiveTimeScale() : number
+
+Returns the effective time scale of this action.
+
+**Returns:** The effective time scale.
+
+### .getEffectiveWeight() : number
+
+Returns the effective weight of this action.
+
+**Returns:** The effective weight.
+
+### .getMixer() : AnimationMixer
+
+Returns the animation mixer of this animation action.
+
+**Returns:** The animation mixer.
+
+### .getRoot() : Object3D
+
+Returns the root object of this animation action.
+
+**Returns:** The root object.
+
+### .halt( duration : number ) : AnimationAction
+
+Decelerates this animation's speed to `0` within the passed time interval.
+
+**duration**
+
+The duration.
+
+**Returns:** A reference to this animation action.
+
+### .isRunning() : boolean
+
+Returns `true` if the animation is running.
+
+**Returns:** Whether the animation is running or not.
+
+### .isScheduled() : boolean
+
+Returns `true` when [AnimationAction#play](AnimationAction.html#play) has been called.
+
+**Returns:** Whether the animation is scheduled or not.
+
+### .play() : AnimationAction
+
+Starts the playback of the animation.
+
+**Returns:** A reference to this animation action.
+
+### .reset() : AnimationAction
+
+Resets the playback of the animation.
+
+**Returns:** A reference to this animation action.
+
+### .setDuration( duration : number ) : AnimationAction
+
+Sets the duration for a single loop of this action.
+
+**duration**
+
+The duration to set.
+
+**Returns:** A reference to this animation action.
+
+### .setEffectiveTimeScale( timeScale : number ) : AnimationAction
+
+Sets the effective time scale of this action.
+
+An action has no effect and thus an effective time scale of zero when the action is paused.
+
+**timeScale**
+
+The time scale to set.
+
+**Returns:** A reference to this animation action.
+
+### .setEffectiveWeight( weight : number ) : AnimationAction
+
+Sets the effective weight of this action.
+
+An action has no effect and thus an effective weight of zero when the action is disabled.
+
+**weight**
+
+The weight to set.
+
+**Returns:** A reference to this animation action.
+
+### .setLoop( mode : LoopRepeat | LoopOnce | LoopPingPong, repetitions : number ) : AnimationAction
+
+Configures the loop settings for this action.
+
+**mode**
+
+The loop mode.
+
+**repetitions**
+
+The number of repetitions.
+
+**Returns:** A reference to this animation action.
+
+### .startAt( time : number ) : AnimationAction
+
+Defines the time when the animation should start.
+
+**time**
+
+The start time in seconds.
+
+**Returns:** A reference to this animation action.
+
+### .stop() : AnimationAction
+
+Stops the playback of the animation.
+
+**Returns:** A reference to this animation action.
+
+### .stopFading() : AnimationAction
+
+Stops any fading which is applied to this action.
+
+**Returns:** A reference to this animation action.
+
+### .stopWarping() : AnimationAction
+
+Stops any scheduled warping which is applied to this action.
+
+**Returns:** A reference to this animation action.
+
+### .syncWith( action : AnimationAction ) : AnimationAction
+
+Synchronizes this action with the passed other action.
+
+**action**
+
+The action to sync with.
+
+**Returns:** A reference to this animation action.
+
+### .warp( startTimeScale : number, endTimeScale : number, duration : number ) : AnimationAction
+
+Changes the playback speed, within the passed time interval, by modifying [AnimationAction#timeScale](AnimationAction.html#timeScale) gradually from `startTimeScale` to `endTimeScale`.
+
+**startTimeScale**
+
+The start time scale.
+
+**endTimeScale**
+
+The end time scale.
+
+**duration**
+
+The duration.
+
+**Returns:** A reference to this animation action.
+
+## Source
+
+[src/animation/AnimationAction.js](https://github.com/mrdoob/three.js/blob/master/src/animation/AnimationAction.js)

+ 197 - 0
docs/pages/AnimationClip.html.md

@@ -0,0 +1,197 @@
+# AnimationClip
+
+A reusable set of keyframe tracks which represent an animation.
+
+## Constructor
+
+### new AnimationClip( name : string, duration : number, tracks : Array.<KeyframeTrack>, blendMode : NormalAnimationBlendMode | AdditiveAnimationBlendMode )
+
+Constructs a new animation clip.
+
+Note: Instead of instantiating an AnimationClip directly with the constructor, you can use the static interface of this class for creating clips. In most cases though, animation clips will automatically be created by loaders when importing animated 3D assets.
+
+**name**
+
+The clip's name.
+
+Default is `''`.
+
+**duration**
+
+The clip's duration in seconds. If a negative value is passed, the duration will be calculated from the passed keyframes.
+
+Default is `-1`.
+
+**tracks**
+
+An array of keyframe tracks.
+
+**blendMode**
+
+Defines how the animation is blended/combined when two or more animations are simultaneously played.
+
+Default is `NormalAnimationBlendMode`.
+
+## Properties
+
+### .blendMode : NormalAnimationBlendMode | AdditiveAnimationBlendMode
+
+Defines how the animation is blended/combined when two or more animations are simultaneously played.
+
+### .duration : number
+
+The clip's duration in seconds.
+
+### .name : string
+
+The clip's name.
+
+### .tracks : Array.<KeyframeTrack>
+
+An array of keyframe tracks.
+
+### .userData : Object
+
+An object that can be used to store custom data about the animation clip. It should not hold references to functions as these will not be cloned.
+
+### .uuid : string (readonly)
+
+The UUID of the animation clip.
+
+## Methods
+
+### .clone() : AnimationClip
+
+Returns a new animation clip with copied values from this instance.
+
+**Returns:** A clone of this instance.
+
+### .optimize() : AnimationClip
+
+Optimizes each track by removing equivalent sequential keys (which are common in morph target sequences).
+
+**Returns:** A reference to this animation clip.
+
+### .resetDuration() : AnimationClip
+
+Sets the duration of this clip to the duration of its longest keyframe track.
+
+**Returns:** A reference to this animation clip.
+
+### .toJSON() : Object
+
+Serializes this animation clip into JSON.
+
+**Returns:** The JSON object.
+
+### .trim() : AnimationClip
+
+Trims all tracks to the clip's duration.
+
+**Returns:** A reference to this animation clip.
+
+### .validate() : boolean
+
+Performs minimal validation on each track in the clip. Returns `true` if all tracks are valid.
+
+**Returns:** Whether the clip's keyframes are valid or not.
+
+## Static Methods
+
+### .CreateClipsFromMorphTargetSequences( morphTargets : Array.<Object>, fps : number, noLoop : boolean ) : Array.<AnimationClip>
+
+Returns an array of new AnimationClips created from the morph target sequences of a geometry, trying to sort morph target names into animation-group-based patterns like "Walk\_001, Walk\_002, Run\_001, Run\_002...".
+
+See [MD2Loader#parse](MD2Loader.html#parse) as an example for how the method should be used.
+
+**morphTargets**
+
+A sequence of morph targets.
+
+**fps**
+
+The Frames-Per-Second value.
+
+**noLoop**
+
+Whether the clip should be no loop or not.
+
+**Returns:** An array of new animation clips.
+
+### .CreateFromMorphTargetSequence( name : string, morphTargetSequence : Array.<Object>, fps : number, noLoop : boolean ) : AnimationClip
+
+Returns a new animation clip from the passed morph targets array of a geometry, taking a name and the number of frames per second.
+
+Note: The fps parameter is required, but the animation speed can be overridden via [AnimationAction#setDuration](AnimationAction.html#setDuration).
+
+**name**
+
+The name of the animation clip.
+
+**morphTargetSequence**
+
+A sequence of morph targets.
+
+**fps**
+
+The Frames-Per-Second value.
+
+**noLoop**
+
+Whether the clip should be no loop or not.
+
+**Returns:** The new animation clip.
+
+### .findByName( objectOrClipArray : Array.<AnimationClip> | Object3D, name : string ) : AnimationClip
+
+Searches for an animation clip by name, taking as its first parameter either an array of clips, or a mesh or geometry that contains an array named "animations" property.
+
+**objectOrClipArray**
+
+The array or object to search through.
+
+**name**
+
+The name to search for.
+
+**Returns:** The found animation clip. Returns `null` if no clip has been found.
+
+### .parse( json : Object ) : AnimationClip
+
+Factory method for creating an animation clip from the given JSON.
+
+**json**
+
+The serialized animation clip.
+
+**Returns:** The new animation clip.
+
+### .parseAnimation( animation : Object, bones : Array.<Bones> ) : AnimationClip
+
+Parses the `animation.hierarchy` format and returns a new animation clip.
+
+**animation**
+
+A serialized animation clip as JSON.
+
+**bones**
+
+An array of bones.
+
+**Deprecated:** since r175.
+
+**Returns:** The new animation clip.
+
+### .toJSON( clip : AnimationClip ) : Object
+
+Serializes the given animation clip into JSON.
+
+**clip**
+
+The animation clip to serialize.
+
+**Returns:** The JSON object.
+
+## Source
+
+[src/animation/AnimationClip.js](https://github.com/mrdoob/three.js/blob/master/src/animation/AnimationClip.js)

+ 101 - 0
docs/pages/AnimationClipCreator.html.md

@@ -0,0 +1,101 @@
+# AnimationClipCreator
+
+A utility class with factory methods for creating basic animation clips.
+
+## Import
+
+AnimationClipCreator is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { AnimationClipCreator } from 'three/addons/animation/AnimationClipCreator.js';
+```
+
+## Static Methods
+
+### .CreateMaterialColorAnimation( duration : number, colors : Array.<Color> ) : AnimationClip
+
+Creates an animation clip that animates the `color` property of a 3D object's material.
+
+**duration**
+
+The duration of the animation.
+
+**colors**
+
+An array of colors that should be sequentially animated.
+
+**Returns:** The created animation clip.
+
+### .CreatePulsationAnimation( duration : number, pulseScale : number ) : AnimationClip
+
+Creates an animation clip that scales a 3D object in a pulse pattern in the given period.
+
+**duration**
+
+The duration of the animation.
+
+**pulseScale**
+
+The scale of the pulse.
+
+**Returns:** The created animation clip.
+
+### .CreateRotationAnimation( period : number, axis : 'x' | 'y' | 'z' ) : AnimationClip
+
+Creates an animation clip that rotates a 3D object 360 degrees in the given period of time around the given axis.
+
+**period**
+
+The duration of the animation.
+
+**axis**
+
+The axis of rotation.
+
+Default is `'x'`.
+
+**Returns:** The created animation clip.
+
+### .CreateScaleAxisAnimation( period : number, axis : 'x' | 'y' | 'z' ) : AnimationClip
+
+Creates an animation clip that scales a 3D object from `0` to `1` in the given period of time along the given axis.
+
+**period**
+
+The duration of the animation.
+
+**axis**
+
+The axis to scale the 3D object along.
+
+Default is `'x'`.
+
+**Returns:** The created animation clip.
+
+### .CreateShakeAnimation( duration : number, shakeScale : Vector3 ) : AnimationClip
+
+Creates an animation clip that translates a 3D object in a shake pattern in the given period.
+
+**duration**
+
+The duration of the animation.
+
+**shakeScale**
+
+The scale of the shake.
+
+**Returns:** The created animation clip.
+
+### .CreateVisibilityAnimation( duration : number ) : AnimationClip
+
+Creates an animation clip that toggles the visibility of a 3D object.
+
+**duration**
+
+The duration of the animation.
+
+**Returns:** The created animation clip.
+
+## Source
+
+[examples/jsm/animation/AnimationClipCreator.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/animation/AnimationClipCreator.js)

+ 62 - 0
docs/pages/AnimationLoader.html.md

@@ -0,0 +1,62 @@
+*Inheritance: Loader →*
+
+# AnimationLoader
+
+Class for loading animation clips in the JSON format. The files are internally loaded via [FileLoader](FileLoader.html).
+
+## Code Example
+
+```js
+const loader = new THREE.AnimationLoader();
+const animations = await loader.loadAsync( 'animations/animation.js' );
+```
+
+## Constructor
+
+### new AnimationLoader( manager : LoadingManager )
+
+Constructs a new animation loader.
+
+**manager**
+
+The loading manager.
+
+## Methods
+
+### .load( url : string, onLoad : function, onProgress : onProgressCallback, onError : onErrorCallback )
+
+Starts loading from the given URL and pass the loaded animations as an array holding instances of [AnimationClip](AnimationClip.html) to the `onLoad()` callback.
+
+**url**
+
+The path/URL of the file to be loaded. This can also be a data URI.
+
+**onLoad**
+
+Executed when the loading process has been finished.
+
+**onProgress**
+
+Executed while the loading is in progress.
+
+**onError**
+
+Executed when errors occur.
+
+**Overrides:** [Loader#load](Loader.html#load)
+
+### .parse( json : Object ) : Array.<AnimationClip>
+
+Parses the given JSON object and returns an array of animation clips.
+
+**json**
+
+The serialized animation clips.
+
+**Overrides:** [Loader#parse](Loader.html#parse)
+
+**Returns:** The parsed animation clips.
+
+## Source
+
+[src/loaders/AnimationLoader.js](https://github.com/mrdoob/three.js/blob/master/src/loaders/AnimationLoader.js)

+ 133 - 0
docs/pages/AnimationMixer.html.md

@@ -0,0 +1,133 @@
+# AnimationMixer
+
+`AnimationMixer` is a player for animations on a particular object in the scene. When multiple objects in the scene are animated independently, one `AnimationMixer` may be used for each object.
+
+## Constructor
+
+### new AnimationMixer( root : Object3D )
+
+Constructs a new animation mixer.
+
+**root**
+
+The object whose animations shall be played by this mixer.
+
+## Properties
+
+### .time : number
+
+The global mixer time (in seconds; starting with `0` on the mixer's creation).
+
+Default is `0`.
+
+### .timeScale : number
+
+A scaling factor for the global time.
+
+Note: Setting this member to `0` and later back to `1` is a possibility to pause/unpause all actions that are controlled by this mixer.
+
+Default is `1`.
+
+## Methods
+
+### .clipAction( clip : AnimationClip | string, optionalRoot : Object3D, blendMode : NormalAnimationBlendMode | AdditiveAnimationBlendMode ) : AnimationAction
+
+Returns an instance of [AnimationAction](AnimationAction.html) for the passed clip.
+
+If an action fitting the clip and root parameters doesn't yet exist, it will be created by this method. Calling this method several times with the same clip and root parameters always returns the same action.
+
+**clip**
+
+An animation clip or alternatively the name of the animation clip.
+
+**optionalRoot**
+
+An alternative root object.
+
+**blendMode**
+
+The blend mode.
+
+**Returns:** The animation action.
+
+### .existingAction( clip : AnimationClip | string, optionalRoot : Object3D ) : AnimationAction
+
+Returns an existing animation action for the passed clip.
+
+**clip**
+
+An animation clip or alternatively the name of the animation clip.
+
+**optionalRoot**
+
+An alternative root object.
+
+**Returns:** The animation action. Returns `null` if no action was found.
+
+### .getRoot() : Object3D
+
+Returns this mixer's root object.
+
+**Returns:** The mixer's root object.
+
+### .setTime( time : number ) : AnimationMixer
+
+Sets the global mixer to a specific time and updates the animation accordingly.
+
+This is useful when you need to jump to an exact time in an animation. The input parameter will be scaled by [AnimationMixer#timeScale](AnimationMixer.html#timeScale)
+
+**time**
+
+The time to set in seconds.
+
+**Returns:** A reference to this animation mixer.
+
+### .stopAllAction() : AnimationMixer
+
+Deactivates all previously scheduled actions on this mixer.
+
+**Returns:** A reference to this animation mixer.
+
+### .uncacheAction( clip : AnimationClip | string, optionalRoot : Object3D )
+
+Deallocates all memory resources for an action. The action is identified by the given clip and an optional root object. Before using this method make sure to call [AnimationAction#stop](AnimationAction.html#stop) to deactivate the action.
+
+**clip**
+
+An animation clip or alternatively the name of the animation clip.
+
+**optionalRoot**
+
+An alternative root object.
+
+### .uncacheClip( clip : AnimationClip )
+
+Deallocates all memory resources for a clip. Before using this method make sure to call [AnimationAction#stop](AnimationAction.html#stop) for all related actions.
+
+**clip**
+
+The clip to uncache.
+
+### .uncacheRoot( root : Object3D )
+
+Deallocates all memory resources for a root object. Before using this method make sure to call [AnimationAction#stop](AnimationAction.html#stop) for all related actions or alternatively [AnimationMixer#stopAllAction](AnimationMixer.html#stopAllAction) when the mixer operates on a single root.
+
+**root**
+
+The root object to uncache.
+
+### .update( deltaTime : number ) : AnimationMixer
+
+Advances the global mixer time and updates the animation.
+
+This is usually done in the render loop by passing the delta time from [Clock](Clock.html) or [Timer](Timer.html).
+
+**deltaTime**
+
+The delta time in seconds.
+
+**Returns:** A reference to this animation mixer.
+
+## Source
+
+[src/animation/AnimationMixer.js](https://github.com/mrdoob/three.js/blob/master/src/animation/AnimationMixer.js)

+ 70 - 0
docs/pages/AnimationObjectGroup.html.md

@@ -0,0 +1,70 @@
+# AnimationObjectGroup
+
+A group of objects that receives a shared animation state.
+
+Usage:
+
+*   Add objects you would otherwise pass as 'root' to the constructor or the .clipAction method of AnimationMixer.
+*   Instead pass this object as 'root'.
+*   You can also add and remove objects later when the mixer is running.
+
+Note:
+
+*   Objects of this class appear as one object to the mixer, so cache control of the individual objects must be done on the group.
+
+Limitation:
+
+*   The animated properties must be compatible among the all objects in the group.
+*   A single property can either be controlled through a target group or directly, but not both.
+
+## Constructor
+
+### new AnimationObjectGroup( …arguments : Object3D )
+
+Constructs a new animation group.
+
+**arguments**
+
+An arbitrary number of 3D objects that share the same animation state.
+
+## Properties
+
+### .isAnimationObjectGroup : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .uuid : string (readonly)
+
+The UUID of the 3D object.
+
+## Methods
+
+### .add( …arguments : Object3D )
+
+Adds an arbitrary number of objects to this animation group.
+
+**arguments**
+
+The 3D objects to add.
+
+### .remove( …arguments : Object3D )
+
+Removes an arbitrary number of objects to this animation group
+
+**arguments**
+
+The 3D objects to remove.
+
+### .uncache( …arguments : Object3D )
+
+Deallocates all memory resources for the passed 3D objects of this animation group.
+
+**arguments**
+
+The 3D objects to uncache.
+
+## Source
+
+[src/animation/AnimationObjectGroup.js](https://github.com/mrdoob/three.js/blob/master/src/animation/AnimationObjectGroup.js)

+ 137 - 0
docs/pages/AnimationUtils.html.md

@@ -0,0 +1,137 @@
+# AnimationUtils
+
+A class with various methods to assist with animations.
+
+## Static Methods
+
+### .convertArray( array : TypedArray | Array, type : TypedArray.constructor ) : TypedArray
+
+Converts an array to a specific type
+
+**array**
+
+The array to convert.
+
+**type**
+
+The constructor of a type array.
+
+**Returns:** The converted array
+
+### .flattenJSON( jsonKeys : Array.<number>, times : Array.<number>, values : Array.<number>, valuePropertyName : string )
+
+Used for parsing AOS keyframe formats.
+
+**jsonKeys**
+
+A list of JSON keyframes.
+
+**times**
+
+This array will be filled with keyframe times by this method.
+
+**values**
+
+This array will be filled with keyframe values by this method.
+
+**valuePropertyName**
+
+The name of the property to use.
+
+### .getKeyframeOrder( times : Array.<number> ) : Array.<number>
+
+Returns an array by which times and values can be sorted.
+
+**times**
+
+The keyframe time values.
+
+**Returns:** The array.
+
+### .isTypedArray( object : any ) : boolean
+
+Returns `true` if the given object is a typed array.
+
+**object**
+
+The object to check.
+
+**Returns:** Whether the given object is a typed array.
+
+### .makeClipAdditive( targetClip : AnimationClip, referenceFrame : number, referenceClip : AnimationClip, fps : number ) : AnimationClip
+
+Converts the keyframes of the given animation clip to an additive format.
+
+**targetClip**
+
+The clip to make additive.
+
+**referenceFrame**
+
+The reference frame.
+
+Default is `0`.
+
+**referenceClip**
+
+The reference clip.
+
+Default is `targetClip`.
+
+**fps**
+
+The FPS.
+
+Default is `30`.
+
+**Returns:** The updated clip which is now additive.
+
+### .sortedArray( values : Array.<number>, stride : number, order : Array.<number> ) : Array.<number>
+
+Sorts the given array by the previously computed order via `getKeyframeOrder()`.
+
+**values**
+
+The values to sort.
+
+**stride**
+
+The stride.
+
+**order**
+
+The sort order.
+
+**Returns:** The sorted values.
+
+### .subclip( sourceClip : AnimationClip, name : string, startFrame : number, endFrame : number, fps : number ) : AnimationClip
+
+Creates a new clip, containing only the segment of the original clip between the given frames.
+
+**sourceClip**
+
+The values to sort.
+
+**name**
+
+The name of the clip.
+
+**startFrame**
+
+The start frame.
+
+**endFrame**
+
+The end frame.
+
+**fps**
+
+The FPS.
+
+Default is `30`.
+
+**Returns:** The new sub clip.
+
+## Source
+
+[src/animation/AnimationUtils.js](https://github.com/mrdoob/three.js/blob/master/src/animation/AnimationUtils.js)

+ 59 - 0
docs/pages/ArcCurve.html.md

@@ -0,0 +1,59 @@
+*Inheritance: Curve → EllipseCurve →*
+
+# ArcCurve
+
+A curve representing an arc.
+
+## Constructor
+
+### new ArcCurve( aX : number, aY : number, aRadius : number, aStartAngle : number, aEndAngle : number, aClockwise : boolean )
+
+Constructs a new arc curve.
+
+**aX**
+
+The X center of the ellipse.
+
+Default is `0`.
+
+**aY**
+
+The Y center of the ellipse.
+
+Default is `0`.
+
+**aRadius**
+
+The radius of the ellipse in the x direction.
+
+Default is `1`.
+
+**aStartAngle**
+
+The start angle of the curve in radians starting from the positive X axis.
+
+Default is `0`.
+
+**aEndAngle**
+
+The end angle of the curve in radians starting from the positive X axis.
+
+Default is `Math.PI*2`.
+
+**aClockwise**
+
+Whether the ellipse is drawn clockwise or not.
+
+Default is `false`.
+
+## Properties
+
+### .isArcCurve : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+## Source
+
+[src/extras/curves/ArcCurve.js](https://github.com/mrdoob/three.js/blob/master/src/extras/curves/ArcCurve.js)

+ 307 - 0
docs/pages/ArcballControls.html.md

@@ -0,0 +1,307 @@
+*Inheritance: EventDispatcher → Controls →*
+
+# ArcballControls
+
+Arcball controls allow the camera to be controlled by a virtual trackball with full touch support and advanced navigation functionality. Cursor/finger positions and movements are mapped over a virtual trackball surface represented by a gizmo and mapped in intuitive and consistent camera movements. Dragging cursor/fingers will cause camera to orbit around the center of the trackball in a conservative way (returning to the starting point will make the camera return to its starting orientation).
+
+In addition to supporting pan, zoom and pinch gestures, Arcball controls provide focus< functionality with a double click/tap for intuitively moving the object's point of interest in the center of the virtual trackball. Focus allows a much better inspection and navigation in complex environment. Moreover Arcball controls allow FOV manipulation (in a vertigo-style method) and z-rotation. Saving and restoring of Camera State is supported also through clipboard (use ctrl+c and ctrl+v shortcuts for copy and paste the state).
+
+Unlike [OrbitControls](OrbitControls.html) and [TrackballControls](TrackballControls.html), `ArcballControls` doesn't require `update()` to be called externally in an animation loop when animations are on.
+
+## Import
+
+ArcballControls is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { ArcballControls } from 'three/addons/controls/ArcballControls.js';
+```
+
+## Constructor
+
+### new ArcballControls( camera : Camera, domElement : HTMLElement, scene : Scene )
+
+Constructs a new controls instance.
+
+**camera**
+
+The camera to be controlled. The camera must not be a child of another object, unless that object is the scene itself.
+
+**domElement**
+
+The HTML element used for event listeners.
+
+Default is `null`.
+
+**scene**
+
+The scene rendered by the camera. If not given, gizmos cannot be shown.
+
+Default is `null`.
+
+## Properties
+
+### .adjustNearFar : boolean
+
+If set to `true`, the camera's near and far values will be adjusted every time zoom is performed trying to maintain the same visible portion given by initial near and far values. Only works with perspective cameras.
+
+Default is `false`.
+
+### .cursorZoom : boolean
+
+Set to `true` to make zoom become cursor centered.
+
+Default is `false`.
+
+### .dampingFactor : number
+
+The damping inertia used if 'enableAnimations`is set to`true\`.
+
+Default is `25`.
+
+### .enableAnimations : boolean
+
+Set to `true` to enable animations for rotation (damping) and focus operation.
+
+Default is `true`.
+
+### .enableFocus : boolean
+
+Enable or disable camera focusing on double-tap (or click) operations.
+
+Default is `true`.
+
+### .enableGizmos : boolean
+
+Enable or disable gizmos.
+
+Default is `true`.
+
+### .enableGrid : boolean
+
+If set to `true`, a grid will appear when panning operation is being performed (desktop interaction only).
+
+Default is `false`.
+
+### .enablePan : boolean
+
+Enable or disable camera panning.
+
+Default is `true`.
+
+### .enableRotate : boolean
+
+Enable or disable camera rotation.
+
+Default is `true`.
+
+### .enableZoom : boolean
+
+Enable or disable camera zoom.
+
+Default is `true`.
+
+### .focusAnimationTime : number
+
+Duration of focus animations in ms.
+
+Default is `500`.
+
+### .maxDistance : number
+
+How far you can dolly out. For perspective cameras only.
+
+Default is `Infinity`.
+
+### .maxFov : number
+
+The maximum FOV in degrees.
+
+Default is `90`.
+
+### .maxZoom : number
+
+How far you can zoom out. For orthographic cameras only.
+
+Default is `Infinity`.
+
+### .minDistance : number
+
+How far you can dolly in. For perspective cameras only.
+
+Default is `0`.
+
+### .minFov : number
+
+The minimum FOV in degrees.
+
+Default is `5`.
+
+### .minZoom : number
+
+How far you can zoom in. For orthographic cameras only.
+
+Default is `0`.
+
+### .mouseActions : Array.<Object>
+
+Holds the mouse actions of this controls. This property is maintained by the methods `setMouseAction()` and `unsetMouseAction()`.
+
+### .radiusFactor : number
+
+The size of the gizmo relative to the screen width and height.
+
+Default is `0.67`.
+
+### .rotateSpeed : number
+
+Speed of rotation.
+
+Default is `1`.
+
+### .scaleFactor : number
+
+The scaling factor used when performing zoom operation.
+
+Default is `1.1`.
+
+### .scene : Scene
+
+The scene rendered by the camera. If not given, gizmos cannot be shown.
+
+Default is `null`.
+
+### .target : Vector3
+
+The control's focus point.
+
+### .wMax : number
+
+Maximum angular velocity allowed on rotation animation start.
+
+Default is `20`.
+
+## Methods
+
+### .activateGizmos( isActive : boolean )
+
+Makes rotation gizmos more or less visible.
+
+**isActive**
+
+If set to `true`, gizmos are more visible.
+
+### .copyState()
+
+Copy the current state to clipboard (as a readable JSON text).
+
+### .disposeGrid()
+
+Removes the grid from the scene.
+
+### .getRaycaster() : Raycaster
+
+Returns the raycaster that is used for user interaction. This object is shared between all instances of `ArcballControls`.
+
+**Returns:** The internal raycaster.
+
+### .pasteState()
+
+Set the controls state from the clipboard, assumes that the clipboard stores a JSON text as saved from `copyState()`.
+
+### .reset()
+
+Resets the controls.
+
+### .saveState()
+
+Saves the current state of the control. This can later be recover with `reset()`.
+
+### .setCamera( camera : Camera )
+
+Sets the camera to be controlled. Must be called in order to set a new camera to be controlled.
+
+**camera**
+
+The camera to be controlled.
+
+### .setGizmosVisible( value : boolean )
+
+Sets gizmos visibility.
+
+**value**
+
+Value of gizmos visibility.
+
+### .setMouseAction( operation : 'PAN' | 'ROTATE' | 'ZOOM' | 'FOV', mouse : 0 | 1 | 2 | 'WHEEL', key : 'CTRL' | 'SHIFT' ) : boolean
+
+Set a new mouse action by specifying the operation to be performed and a mouse/key combination. In case of conflict, replaces the existing one.
+
+**operation**
+
+The operation to be performed ('PAN', 'ROTATE', 'ZOOM', 'FOV').
+
+**mouse**
+
+A mouse button (0, 1, 2) or 'WHEEL' for wheel notches.
+
+**key**
+
+The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed.
+
+Default is `null`.
+
+**Returns:** `true` if the mouse action has been successfully added, `false` otherwise.
+
+### .setTbRadius( value : number )
+
+Sets gizmos radius factor and redraws gizmos.
+
+**value**
+
+Value of radius factor.
+
+### .unsetMouseAction( mouse : 0 | 1 | 2 | 'WHEEL', key : 'CTRL' | 'SHIFT' ) : boolean
+
+Remove a mouse action by specifying its mouse/key combination.
+
+**mouse**
+
+A mouse button (0, 1, 2) or 'WHEEL' for wheel notches.
+
+**key**
+
+The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed.
+
+Default is `null`.
+
+**Returns:** `true` if the operation has been successfully removed, `false` otherwise.
+
+## Events
+
+### .change
+
+Fires when the camera has been transformed by the controls.
+
+##### Type:
+
+*   Object
+
+### .end
+
+Fires when an interaction has finished.
+
+##### Type:
+
+*   Object
+
+### .start
+
+Fires when an interaction was initiated.
+
+##### Type:
+
+*   Object
+
+## Source
+
+[examples/jsm/controls/ArcballControls.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/controls/ArcballControls.js)

+ 41 - 0
docs/pages/ArrayCamera.html.md

@@ -0,0 +1,41 @@
+*Inheritance: EventDispatcher → Object3D → Camera → PerspectiveCamera →*
+
+# ArrayCamera
+
+This type of camera can be used in order to efficiently render a scene with a predefined set of cameras. This is an important performance aspect for rendering VR scenes.
+
+An instance of `ArrayCamera` always has an array of sub cameras. It's mandatory to define for each sub camera the `viewport` property which determines the part of the viewport that is rendered with this camera.
+
+## Constructor
+
+### new ArrayCamera( array : Array.<PerspectiveCamera> )
+
+Constructs a new array camera.
+
+**array**
+
+An array of perspective sub cameras.
+
+Default is `[]`.
+
+## Properties
+
+### .cameras : Array.<PerspectiveCamera>
+
+An array of perspective sub cameras.
+
+### .isArrayCamera : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .isMultiViewCamera : boolean (readonly)
+
+Whether this camera is used with multiview rendering or not.
+
+Default is `false`.
+
+## Source
+
+[src/cameras/ArrayCamera.js](https://github.com/mrdoob/three.js/blob/master/src/cameras/ArrayCamera.js)

+ 69 - 0
docs/pages/ArrayElementNode.html.md

@@ -0,0 +1,69 @@
+*Inheritance: EventDispatcher → Node →*
+
+# ArrayElementNode
+
+Base class for representing element access on an array-like node data structures.
+
+## Constructor
+
+### new ArrayElementNode( node : Node, indexNode : Node )
+
+Constructs an array element node.
+
+**node**
+
+The array-like node.
+
+**indexNode**
+
+The index node that defines the element access.
+
+## Properties
+
+### .indexNode : Node
+
+The index node that defines the element access.
+
+### .isArrayElementNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .node : Node
+
+The array-like node.
+
+## Methods
+
+### .getMemberType( builder : NodeBuilder, name : string ) : string
+
+This method is overwritten since the member type is inferred from the array-like node.
+
+**builder**
+
+The current node builder.
+
+**name**
+
+The member name.
+
+**Overrides:** [Node#getMemberType](Node.html#getMemberType)
+
+**Returns:** The member type.
+
+### .getNodeType( builder : NodeBuilder ) : string
+
+This method is overwritten since the node type is inferred from the array-like node.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [Node#getNodeType](Node.html#getNodeType)
+
+**Returns:** The node type.
+
+## Source
+
+[src/nodes/utils/ArrayElementNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/utils/ArrayElementNode.js)

+ 122 - 0
docs/pages/ArrayNode.html.md

@@ -0,0 +1,122 @@
+*Inheritance: EventDispatcher → Node → TempNode →*
+
+# ArrayNode
+
+ArrayNode represents a collection of nodes, typically created using the [array](TSL.html#array) function.
+
+## Code Example
+
+```js
+const colors = array( [
+	vec3( 1, 0, 0 ),
+	vec3( 0, 1, 0 ),
+	vec3( 0, 0, 1 )
+] );
+const redColor = tintColors.element( 0 );
+```
+
+## Constructor
+
+### new ArrayNode( nodeType : string, count : number, values : Array.<Node> )
+
+Constructs a new array node.
+
+**nodeType**
+
+The data type of the elements.
+
+**count**
+
+Size of the array.
+
+**values**
+
+Array default values.
+
+Default is `null`.
+
+## Properties
+
+### .count : number
+
+Array size.
+
+### .isArrayNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .values : Array.<Node>
+
+Array default values.
+
+## Methods
+
+### .generate( builder : NodeBuilder ) : string
+
+This method builds the output node and returns the resulting array as a shader string.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [TempNode#generate](TempNode.html#generate)
+
+**Returns:** The generated shader string.
+
+### .getArrayCount( builder : NodeBuilder ) : number
+
+Returns the number of elements in the node array.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [TempNode#getArrayCount](TempNode.html#getArrayCount)
+
+**Returns:** The number of elements in the node array.
+
+### .getElementType( builder : NodeBuilder ) : string
+
+Returns the node's type.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [TempNode#getElementType](TempNode.html#getElementType)
+
+**Returns:** The type of the node.
+
+### .getMemberType( builder : NodeBuilder, name : string ) : string
+
+Returns the type of a member variable.
+
+**builder**
+
+The current node builder.
+
+**name**
+
+The name of the member variable.
+
+**Overrides:** [TempNode#getMemberType](TempNode.html#getMemberType)
+
+**Returns:** The type of the member variable.
+
+### .getNodeType( builder : NodeBuilder ) : string
+
+Returns the node's type.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [TempNode#getNodeType](TempNode.html#getNodeType)
+
+**Returns:** The type of the node.
+
+## Source
+
+[src/nodes/core/ArrayNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/core/ArrayNode.js)

+ 116 - 0
docs/pages/ArrowHelper.html.md

@@ -0,0 +1,116 @@
+*Inheritance: EventDispatcher → Object3D →*
+
+# ArrowHelper
+
+An 3D arrow object for visualizing directions.
+
+## Code Example
+
+```js
+const dir = new THREE.Vector3( 1, 2, 0 );
+//normalize the direction vector (convert to vector of length 1)
+dir.normalize();
+const origin = new THREE.Vector3( 0, 0, 0 );
+const length = 1;
+const hex = 0xffff00;
+const arrowHelper = new THREE.ArrowHelper( dir, origin, length, hex );
+scene.add( arrowHelper );
+```
+
+## Constructor
+
+### new ArrowHelper( dir : Vector3, origin : Vector3, length : number, color : number | Color | string, headLength : number, headWidth : number )
+
+Constructs a new arrow helper.
+
+**dir**
+
+The (normalized) direction vector.
+
+Default is `(0, 0, 1)`.
+
+**origin**
+
+Point at which the arrow starts.
+
+Default is `(0, 0, 0)`.
+
+**length**
+
+Length of the arrow in world units.
+
+Default is `1`.
+
+**color**
+
+Color of the arrow.
+
+Default is `0xffff00`.
+
+**headLength**
+
+The length of the head of the arrow.
+
+Default is `length*0.2`.
+
+**headWidth**
+
+The width of the head of the arrow.
+
+Default is `headLength*0.2`.
+
+## Properties
+
+### .cone : Mesh
+
+The cone part of the arrow helper.
+
+### .line : Line
+
+The line part of the arrow helper.
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+### .setColor( color : number | Color | string )
+
+Sets the color of the helper.
+
+**color**
+
+The color to set.
+
+### .setDirection( dir : Vector3 )
+
+Sets the direction of the helper.
+
+**dir**
+
+The normalized direction vector.
+
+### .setLength( length : number, headLength : number, headWidth : number )
+
+Sets the length of the helper.
+
+**length**
+
+Length of the arrow in world units.
+
+**headLength**
+
+The length of the head of the arrow.
+
+Default is `length*0.2`.
+
+**headWidth**
+
+The width of the head of the arrow.
+
+Default is `headLength*0.2`.
+
+## Source
+
+[src/helpers/ArrowHelper.js](https://github.com/mrdoob/three.js/blob/master/src/helpers/ArrowHelper.js)

+ 124 - 0
docs/pages/AsciiEffect.html.md

@@ -0,0 +1,124 @@
+# AsciiEffect
+
+A class that creates an ASCII effect.
+
+The ASCII generation is based on [jsascii](https://github.com/hassadee/jsascii/blob/master/jsascii.js).
+
+## Import
+
+AsciiEffect is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { AsciiEffect } from 'three/addons/effects/AsciiEffect.js';
+```
+
+## Constructor
+
+### new AsciiEffect( renderer : WebGLRenderer, charSet : string, options : AsciiEffect~Options )
+
+Constructs a new ASCII effect.
+
+**renderer**
+
+The renderer.
+
+**charSet**
+
+The char set.
+
+Default is `' .:-=+*#%@'`.
+
+**options**
+
+The configuration parameter.
+
+## Properties
+
+### .domElement : HTMLDivElement
+
+The DOM element of the effect. This element must be used instead of the default [WebGLRenderer#domElement](WebGLRenderer.html#domElement).
+
+## Methods
+
+### .render( scene : Object3D, camera : Camera )
+
+When using this effect, this method should be called instead of the default [WebGLRenderer#render](WebGLRenderer.html#render).
+
+**scene**
+
+The scene to render.
+
+**camera**
+
+The camera.
+
+### .setSize( w : number, h : number )
+
+Resizes the effect.
+
+**w**
+
+The width of the effect in logical pixels.
+
+**h**
+
+The height of the effect in logical pixels.
+
+## Type Definitions
+
+### .Options
+
+This type represents configuration settings of `AsciiEffect`.
+
+**resolution**  
+number
+
+A higher value leads to more details.
+
+Default is `0.15`.
+
+**scale**  
+number
+
+The scale of the effect.
+
+Default is `1`.
+
+**color**  
+boolean
+
+Whether colors should be enabled or not. Better quality but slows down rendering.
+
+Default is `false`.
+
+**alpha**  
+boolean
+
+Whether transparency should be enabled or not.
+
+Default is `false`.
+
+**block**  
+boolean
+
+Whether blocked characters should be enabled or not.
+
+Default is `false`.
+
+**invert**  
+boolean
+
+Whether colors should be inverted or not.
+
+Default is `false`.
+
+**strResolution**  
+'low' | 'medium' | 'high'
+
+The string resolution.
+
+Default is `'low'`.
+
+## Source
+
+[examples/jsm/effects/AsciiEffect.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/effects/AsciiEffect.js)

+ 59 - 0
docs/pages/AssignNode.html.md

@@ -0,0 +1,59 @@
+*Inheritance: EventDispatcher → Node → TempNode →*
+
+# AssignNode
+
+These node represents an assign operation. Meaning a node is assigned to another node.
+
+## Constructor
+
+### new AssignNode( targetNode : Node, sourceNode : Node )
+
+Constructs a new assign node.
+
+**targetNode**
+
+The target node.
+
+**sourceNode**
+
+The source type.
+
+## Properties
+
+### .isAssignNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .sourceNode : Node
+
+The source node.
+
+### .targetNode : Node
+
+The target node.
+
+## Methods
+
+### .hasDependencies() : boolean
+
+Whether this node is used more than once in context of other nodes. This method is overwritten since it always returns `false` (assigns are unique).
+
+**Overrides:** [TempNode#hasDependencies](TempNode.html#hasDependencies)
+
+**Returns:** A flag that indicates if there is more than one dependency to other nodes. Always `false`.
+
+### .needsSplitAssign( builder : NodeBuilder ) : boolean
+
+Whether a split is required when assigning source to target. This can happen when the component length of target and source data type does not match.
+
+**builder**
+
+The current node builder.
+
+**Returns:** Whether a split is required when assigning source to target.
+
+## Source
+
+[src/nodes/core/AssignNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/core/AssignNode.js)

+ 75 - 0
docs/pages/AtomicFunctionNode.html.md

@@ -0,0 +1,75 @@
+*Inheritance: EventDispatcher → Node →*
+
+# AtomicFunctionNode
+
+`AtomicFunctionNode` represents any function that can operate on atomic variable types within a shader. In an atomic function, any modification to an atomic variable will occur as an indivisible step with a defined order relative to other modifications. Accordingly, even if multiple atomic functions are modifying an atomic variable at once atomic operations will not interfere with each other.
+
+This node can only be used with a WebGPU backend.
+
+## Constructor
+
+### new AtomicFunctionNode( method : string, pointerNode : Node, valueNode : Node )
+
+Constructs a new atomic function node.
+
+**method**
+
+The signature of the atomic function to construct.
+
+**pointerNode**
+
+An atomic variable or element of an atomic buffer.
+
+**valueNode**
+
+The value that mutates the atomic variable.
+
+## Properties
+
+### .method : string
+
+The signature of the atomic function to construct.
+
+### .parents : boolean
+
+Creates a list of the parents for this node for detecting if the node needs to return a value.
+
+Default is `true`.
+
+**Overrides:** [Node#parents](Node.html#parents)
+
+### .pointerNode : Node
+
+An atomic variable or element of an atomic buffer.
+
+### .valueNode : Node
+
+A value that modifies the atomic variable.
+
+## Methods
+
+### .getInputType( builder : NodeBuilder ) : string
+
+Overwrites the default implementation to return the type of the pointer node.
+
+**builder**
+
+The current node builder.
+
+**Returns:** The input type.
+
+### .getNodeType( builder : NodeBuilder ) : string
+
+Overwritten since the node type is inferred from the input type.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [Node#getNodeType](Node.html#getNodeType)
+
+**Returns:** The node type.
+
+## Source
+
+[src/nodes/gpgpu/AtomicFunctionNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/gpgpu/AtomicFunctionNode.js)

+ 57 - 0
docs/pages/AttributeNode.html.md

@@ -0,0 +1,57 @@
+*Inheritance: EventDispatcher → Node →*
+
+# AttributeNode
+
+Base class for representing shader attributes as nodes.
+
+## Constructor
+
+### new AttributeNode( attributeName : string, nodeType : string )
+
+Constructs a new attribute node.
+
+**attributeName**
+
+The name of the attribute.
+
+**nodeType**
+
+The node type.
+
+Default is `null`.
+
+## Properties
+
+### .global : boolean
+
+`AttributeNode` sets this property to `true` by default.
+
+Default is `true`.
+
+**Overrides:** [Node#global](Node.html#global)
+
+## Methods
+
+### .getAttributeName( builder : NodeBuilder ) : string
+
+Returns the attribute name of this node. The method can be overwritten in derived classes if the final name must be computed analytically.
+
+**builder**
+
+The current node builder.
+
+**Returns:** The attribute name.
+
+### .setAttributeName( attributeName : string ) : AttributeNode
+
+Sets the attribute name to the given value. The method can be overwritten in derived classes if the final name must be computed analytically.
+
+**attributeName**
+
+The name of the attribute.
+
+**Returns:** A reference to this node.
+
+## Source
+
+[src/nodes/core/AttributeNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/core/AttributeNode.js)

+ 383 - 0
docs/pages/Audio.html.md

@@ -0,0 +1,383 @@
+*Inheritance: EventDispatcher → Object3D →*
+
+# Audio
+
+Represents a non-positional ( global ) audio object.
+
+This and related audio modules make use of the [Web Audio API](https://www.w3.org/TR/webaudio-1.1/).
+
+## Code Example
+
+```js
+// create an AudioListener and add it to the camera
+const listener = new THREE.AudioListener();
+camera.add( listener );
+// create a global audio source
+const sound = new THREE.Audio( listener );
+// load a sound and set it as the Audio object's buffer
+const audioLoader = new THREE.AudioLoader();
+audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
+	sound.setBuffer( buffer );
+	sound.setLoop( true );
+	sound.setVolume( 0.5 );
+	sound.play();
+});
+```
+
+## Constructor
+
+### new Audio( listener : AudioListener )
+
+Constructs a new audio.
+
+**listener**
+
+The global audio listener.
+
+## Properties
+
+### .autoplay : boolean
+
+Whether to start playback automatically or not.
+
+Default is `false`.
+
+### .buffer : AudioBuffer (readonly)
+
+A reference to an audio buffer.
+
+Defined via [Audio#setBuffer](Audio.html#setBuffer).
+
+Default is `null`.
+
+### .context : AudioContext (readonly)
+
+The audio context.
+
+### .detune : number (readonly)
+
+Modify pitch, measured in cents. +/- 100 is a semitone. +/- 1200 is an octave.
+
+Defined via [Audio#setDetune](Audio.html#setDetune).
+
+Default is `0`.
+
+### .duration : undefined | number
+
+Overrides the default duration of the audio.
+
+Default is `undefined`.
+
+### .filters : Array.<AudioNode> (readonly)
+
+Can be used to apply a variety of low-order filters to create more complex sound effects e.g. via `BiquadFilterNode`.
+
+The property is automatically set by [Audio#setFilters](Audio.html#setFilters).
+
+### .gain : GainNode (readonly)
+
+The gain node used for volume control.
+
+### .hasPlaybackControl : boolean (readonly)
+
+Indicates whether the audio playback can be controlled with method like [Audio#play](Audio.html#play) or [Audio#pause](Audio.html#pause).
+
+This flag will be automatically set when audio sources are defined.
+
+Default is `true`.
+
+### .isPlaying : boolean (readonly)
+
+Indicates whether the audio is playing or not.
+
+This flag will be automatically set when using [Audio#play](Audio.html#play), [Audio#pause](Audio.html#pause), [Audio#stop](Audio.html#stop).
+
+Default is `false`.
+
+### .listener : AudioListener (readonly)
+
+The global audio listener.
+
+### .loop : boolean (readonly)
+
+Whether the audio should loop or not.
+
+Defined via [Audio#setLoop](Audio.html#setLoop).
+
+Default is `false`.
+
+### .loopEnd : number
+
+Defines where in the audio buffer the replay should stop, in seconds.
+
+Default is `0`.
+
+### .loopStart : number
+
+Defines where in the audio buffer the replay should start, in seconds.
+
+Default is `0`.
+
+### .offset : number
+
+An offset to the time within the audio buffer the playback should begin, in seconds.
+
+Default is `0`.
+
+### .playbackRate : number (readonly)
+
+The playback speed.
+
+Defined via [Audio#setPlaybackRate](Audio.html#setPlaybackRate).
+
+Default is `1`.
+
+### .source : AudioNode (readonly)
+
+Holds a reference to the current audio source.
+
+The property is automatically by one of the `set*()` methods.
+
+Default is `null`.
+
+### .sourceType : 'empty' | 'audioNode' | 'mediaNode' | 'mediaStreamNode' | 'buffer' (readonly)
+
+Defines the source type.
+
+The property is automatically set by one of the `set*()` methods.
+
+Default is `'empty'`.
+
+## Methods
+
+### .connect() : Audio
+
+Connects to the audio source. This is used internally on initialisation and when setting / removing filters.
+
+**Returns:** A reference to this instance.
+
+### .disconnect() : Audio | undefined
+
+Disconnects to the audio source. This is used internally on initialisation and when setting / removing filters.
+
+**Returns:** A reference to this instance.
+
+### .getDetune() : number
+
+Returns the detuning of oscillation in cents.
+
+**Returns:** The detuning of oscillation in cents.
+
+### .getFilter() : AudioNode | undefined
+
+Returns the first filter in the list of filters.
+
+**Returns:** The first filter in the list of filters.
+
+### .getFilters() : Array.<AudioNode>
+
+Returns the current set filters.
+
+**Returns:** The list of filters.
+
+### .getLoop() : boolean
+
+Returns the loop flag.
+
+Can only be used with compatible audio sources that allow playback control.
+
+**Returns:** Whether the audio should loop or not.
+
+### .getOutput() : GainNode
+
+Returns the output audio node.
+
+**Returns:** The output node.
+
+### .getPlaybackRate() : number
+
+Returns the current playback rate.
+
+**Returns:** The playback rate.
+
+### .getVolume() : number
+
+Returns the volume.
+
+**Returns:** The volume.
+
+### .onEnded()
+
+Automatically called when playback finished.
+
+### .pause() : Audio | undefined
+
+Pauses the playback of the audio.
+
+Can only be used with compatible audio sources that allow playback control.
+
+**Returns:** A reference to this instance.
+
+### .play( delay : number ) : Audio | undefined
+
+Starts the playback of the audio.
+
+Can only be used with compatible audio sources that allow playback control.
+
+**delay**
+
+The delay, in seconds, at which the audio should start playing.
+
+Default is `0`.
+
+**Returns:** A reference to this instance.
+
+### .setBuffer( audioBuffer : AudioBuffer ) : Audio
+
+Sets the given audio buffer as the source of this instance.
+
+[Audio#sourceType](Audio.html#sourceType) is set to `buffer` and [Audio#hasPlaybackControl](Audio.html#hasPlaybackControl) to `true`.
+
+**audioBuffer**
+
+The audio buffer.
+
+**Returns:** A reference to this instance.
+
+### .setDetune( value : number ) : Audio
+
+Defines the detuning of oscillation in cents.
+
+**value**
+
+The detuning of oscillation in cents.
+
+**Returns:** A reference to this instance.
+
+### .setFilter( filter : AudioNode ) : Audio
+
+Applies a single filter node to the audio.
+
+**filter**
+
+The filter to set.
+
+**Returns:** A reference to this instance.
+
+### .setFilters( value : Array.<AudioNode> ) : Audio
+
+Sets an array of filters and connects them with the audio source.
+
+**value**
+
+A list of filters.
+
+**Returns:** A reference to this instance.
+
+### .setLoop( value : boolean ) : Audio | undefined
+
+Sets the loop flag.
+
+Can only be used with compatible audio sources that allow playback control.
+
+**value**
+
+Whether the audio should loop or not.
+
+**Returns:** A reference to this instance.
+
+### .setLoopEnd( value : number ) : Audio
+
+Sets the loop end value which defines where in the audio buffer the replay should stop, in seconds.
+
+**value**
+
+The loop end value.
+
+**Returns:** A reference to this instance.
+
+### .setLoopStart( value : number ) : Audio
+
+Sets the loop start value which defines where in the audio buffer the replay should start, in seconds.
+
+**value**
+
+The loop start value.
+
+**Returns:** A reference to this instance.
+
+### .setMediaElementSource( mediaElement : HTMLMediaElement ) : Audio
+
+Sets the given media element as the source of this instance.
+
+[Audio#sourceType](Audio.html#sourceType) is set to `mediaNode` and [Audio#hasPlaybackControl](Audio.html#hasPlaybackControl) to `false`.
+
+**mediaElement**
+
+The media element.
+
+**Returns:** A reference to this instance.
+
+### .setMediaStreamSource( mediaStream : MediaStream ) : Audio
+
+Sets the given media stream as the source of this instance.
+
+[Audio#sourceType](Audio.html#sourceType) is set to `mediaStreamNode` and [Audio#hasPlaybackControl](Audio.html#hasPlaybackControl) to `false`.
+
+**mediaStream**
+
+The media stream.
+
+**Returns:** A reference to this instance.
+
+### .setNodeSource( audioNode : AudioNode ) : Audio
+
+Sets the given audio node as the source of this instance.
+
+[Audio#sourceType](Audio.html#sourceType) is set to `audioNode` and [Audio#hasPlaybackControl](Audio.html#hasPlaybackControl) to `false`.
+
+**audioNode**
+
+The audio node like an instance of `OscillatorNode`.
+
+**Returns:** A reference to this instance.
+
+### .setPlaybackRate( value : number ) : Audio | undefined
+
+Sets the playback rate.
+
+Can only be used with compatible audio sources that allow playback control.
+
+**value**
+
+The playback rate to set.
+
+**Returns:** A reference to this instance.
+
+### .setVolume( value : number ) : Audio
+
+Sets the volume.
+
+**value**
+
+The volume to set.
+
+**Returns:** A reference to this instance.
+
+### .stop( delay : number ) : Audio | undefined
+
+Stops the playback of the audio.
+
+Can only be used with compatible audio sources that allow playback control.
+
+**delay**
+
+The delay, in seconds, at which the audio should stop playing.
+
+Default is `0`.
+
+**Returns:** A reference to this instance.
+
+## Source
+
+[src/audio/Audio.js](https://github.com/mrdoob/three.js/blob/master/src/audio/Audio.js)

+ 71 - 0
docs/pages/AudioAnalyser.html.md

@@ -0,0 +1,71 @@
+# AudioAnalyser
+
+This class can be used to analyse audio data.
+
+## Code Example
+
+```js
+// create an AudioListener and add it to the camera
+const listener = new THREE.AudioListener();
+camera.add( listener );
+// create an Audio source
+const sound = new THREE.Audio( listener );
+// load a sound and set it as the Audio object's buffer
+const audioLoader = new THREE.AudioLoader();
+audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
+	sound.setBuffer( buffer );
+	sound.setLoop(true);
+	sound.setVolume(0.5);
+	sound.play();
+});
+// create an AudioAnalyser, passing in the sound and desired fftSize
+const analyser = new THREE.AudioAnalyser( sound, 32 );
+// get the average frequency of the sound
+const data = analyser.getAverageFrequency();
+```
+
+## Constructor
+
+### new AudioAnalyser( audio : Audio, fftSize : number )
+
+Constructs a new audio analyzer.
+
+**audio**
+
+The audio to analyze.
+
+**fftSize**
+
+The window size in samples that is used when performing a Fast Fourier Transform (FFT) to get frequency domain data.
+
+Default is `2048`.
+
+## Properties
+
+### .analyser : AnalyserNode
+
+The global audio listener.
+
+### .data : Uint8Array
+
+Holds the analyzed data.
+
+## Methods
+
+### .getAverageFrequency() : number
+
+Returns the average of the frequencies returned by [AudioAnalyser#getFrequencyData](AudioAnalyser.html#getFrequencyData).
+
+**Returns:** The average frequency.
+
+### .getFrequencyData() : Uint8Array
+
+Returns an array with frequency data of the audio.
+
+Each item in the array represents the decibel value for a specific frequency. The frequencies are spread linearly from 0 to 1/2 of the sample rate. For example, for 48000 sample rate, the last item of the array will represent the decibel value for 24000 Hz.
+
+**Returns:** The frequency data.
+
+## Source
+
+[src/audio/AudioAnalyser.js](https://github.com/mrdoob/three.js/blob/master/src/audio/AudioAnalyser.js)

+ 23 - 0
docs/pages/AudioContext.html.md

@@ -0,0 +1,23 @@
+# AudioContext
+
+Manages the global audio context in the engine.
+
+## Static Methods
+
+### .getContext() : AudioContext
+
+Returns the global native audio context.
+
+**Returns:** The native audio context.
+
+### .setContext( value : AudioContext )
+
+Allows to set the global native audio context from outside.
+
+**value**
+
+The native context to set.
+
+## Source
+
+[src/audio/AudioContext.js](https://github.com/mrdoob/three.js/blob/master/src/audio/AudioContext.js)

+ 89 - 0
docs/pages/AudioListener.html.md

@@ -0,0 +1,89 @@
+*Inheritance: EventDispatcher → Object3D →*
+
+# AudioListener
+
+The class represents a virtual listener of the all positional and non-positional audio effects in the scene. A three.js application usually creates a single listener. It is a mandatory constructor parameter for audios entities like [Audio](Audio.html) and [PositionalAudio](PositionalAudio.html).
+
+In most cases, the listener object is a child of the camera. So the 3D transformation of the camera represents the 3D transformation of the listener.
+
+## Constructor
+
+### new AudioListener()
+
+Constructs a new audio listener.
+
+## Properties
+
+### .context : AudioContext (readonly)
+
+The native audio context.
+
+### .filter : AudioNode (readonly)
+
+An optional filter.
+
+Defined via [AudioListener#setFilter](AudioListener.html#setFilter).
+
+Default is `null`.
+
+### .gain : GainNode (readonly)
+
+The gain node used for volume control.
+
+### .timeDelta : number (readonly)
+
+Time delta values required for `linearRampToValueAtTime()` usage.
+
+Default is `0`.
+
+## Methods
+
+### .getFilter() : AudioNode
+
+Returns the current set filter.
+
+**Returns:** The filter.
+
+### .getInput() : GainNode
+
+Returns the listener's input node.
+
+This method is used by other audio nodes to connect to this listener.
+
+**Returns:** The input node.
+
+### .getMasterVolume() : number
+
+Returns the applications master volume.
+
+**Returns:** The master volume.
+
+### .removeFilter() : AudioListener
+
+Removes the current filter from this listener.
+
+**Returns:** A reference to this listener.
+
+### .setFilter( value : AudioNode ) : AudioListener
+
+Sets the given filter to this listener.
+
+**value**
+
+The filter to set.
+
+**Returns:** A reference to this listener.
+
+### .setMasterVolume( value : number ) : AudioListener
+
+Sets the applications master volume. This volume setting affects all audio nodes in the scene.
+
+**value**
+
+The master volume to set.
+
+**Returns:** A reference to this listener.
+
+## Source
+
+[src/audio/AudioListener.js](https://github.com/mrdoob/three.js/blob/master/src/audio/AudioListener.js)

+ 54 - 0
docs/pages/AudioLoader.html.md

@@ -0,0 +1,54 @@
+*Inheritance: Loader →*
+
+# AudioLoader
+
+Class for loading audio buffers. Audios are internally loaded via [FileLoader](FileLoader.html).
+
+## Code Example
+
+```js
+const audioListener = new THREE.AudioListener();
+const ambientSound = new THREE.Audio( audioListener );
+const loader = new THREE.AudioLoader();
+const audioBuffer = await loader.loadAsync( 'audio/ambient_ocean.ogg' );
+ambientSound.setBuffer( audioBuffer );
+ambientSound.play();
+```
+
+## Constructor
+
+### new AudioLoader( manager : LoadingManager )
+
+Constructs a new audio loader.
+
+**manager**
+
+The loading manager.
+
+## Methods
+
+### .load( url : string, onLoad : function, onProgress : onProgressCallback, onError : onErrorCallback )
+
+Starts loading from the given URL and passes the loaded audio buffer to the `onLoad()` callback.
+
+**url**
+
+The path/URL of the file to be loaded. This can also be a data URI.
+
+**onLoad**
+
+Executed when the loading process has been finished.
+
+**onProgress**
+
+Executed while the loading is in progress.
+
+**onError**
+
+Executed when errors occur.
+
+**Overrides:** [Loader#load](Loader.html#load)
+
+## Source
+
+[src/loaders/AudioLoader.js](https://github.com/mrdoob/three.js/blob/master/src/loaders/AudioLoader.js)

+ 52 - 0
docs/pages/AxesHelper.html.md

@@ -0,0 +1,52 @@
+*Inheritance: EventDispatcher → Object3D → Line → LineSegments →*
+
+# AxesHelper
+
+An axis object to visualize the 3 axes in a simple way. The X axis is red. The Y axis is green. The Z axis is blue.
+
+## Code Example
+
+```js
+const axesHelper = new THREE.AxesHelper( 5 );
+scene.add( axesHelper );
+```
+
+## Constructor
+
+### new AxesHelper( size : number )
+
+Constructs a new axes helper.
+
+**size**
+
+Size of the lines representing the axes.
+
+Default is `1`.
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+### .setColors( xAxisColor : number | Color | string, yAxisColor : number | Color | string, zAxisColor : number | Color | string ) : AxesHelper
+
+Defines the colors of the axes helper.
+
+**xAxisColor**
+
+The color for the x axis.
+
+**yAxisColor**
+
+The color for the y axis.
+
+**zAxisColor**
+
+The color for the z axis.
+
+**Returns:** A reference to this axes helper.
+
+## Source
+
+[src/helpers/AxesHelper.js](https://github.com/mrdoob/three.js/blob/master/src/helpers/AxesHelper.js)

+ 93 - 0
docs/pages/BVHLoader.html.md

@@ -0,0 +1,93 @@
+*Inheritance: Loader →*
+
+# BVHLoader
+
+A loader for the BVH format.
+
+Imports BVH files and outputs a single [Skeleton](Skeleton.html) and [AnimationClip](AnimationClip.html). The loader only supports BVH files containing a single root right now.
+
+## Code Example
+
+```js
+const loader = new BVHLoader();
+const result = await loader.loadAsync( 'models/bvh/pirouette.bvh' );
+// visualize skeleton
+const skeletonHelper = new THREE.SkeletonHelper( result.skeleton.bones[ 0 ] );
+scene.add( result.skeleton.bones[ 0 ] );
+scene.add( skeletonHelper );
+// play animation clip
+mixer = new THREE.AnimationMixer( result.skeleton.bones[ 0 ] );
+mixer.clipAction( result.clip ).play();
+```
+
+## Import
+
+BVHLoader is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { BVHLoader } from 'three/addons/loaders/BVHLoader.js';
+```
+
+## Constructor
+
+### new BVHLoader( manager : LoadingManager )
+
+Constructs a new BVH loader.
+
+**manager**
+
+The loading manager.
+
+## Properties
+
+### .animateBonePositions : boolean
+
+Whether to animate bone positions or not.
+
+Default is `true`.
+
+### .animateBoneRotations : boolean
+
+Whether to animate bone rotations or not.
+
+Default is `true`.
+
+## Methods
+
+### .load( url : string, onLoad : function, onProgress : onProgressCallback, onError : onErrorCallback )
+
+Starts loading from the given URL and passes the loaded BVH asset to the `onLoad()` callback.
+
+**url**
+
+The path/URL of the file to be loaded. This can also be a data URI.
+
+**onLoad**
+
+Executed when the loading process has been finished.
+
+**onProgress**
+
+Executed while the loading is in progress.
+
+**onError**
+
+Executed when errors occur.
+
+**Overrides:** [Loader#load](Loader.html#load)
+
+### .parse( text : string ) : Object
+
+Parses the given BVH data and returns the resulting data.
+
+**text**
+
+The raw BVH data as a string.
+
+**Overrides:** [Loader#parse](Loader.html#parse)
+
+**Returns:** An object representing the parsed asset.
+
+## Source
+
+[examples/jsm/loaders/BVHLoader.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/BVHLoader.js)

+ 21 - 0
docs/pages/BarrierNode.html.md

@@ -0,0 +1,21 @@
+*Inheritance: EventDispatcher → Node →*
+
+# BarrierNode
+
+Represents a GPU control barrier that synchronizes compute operations within a given scope.
+
+This node can only be used with a WebGPU backend.
+
+## Constructor
+
+### new BarrierNode( scope : string )
+
+Constructs a new barrier node.
+
+**scope**
+
+The scope defines the behavior of the node.
+
+## Source
+
+[src/nodes/gpgpu/BarrierNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/gpgpu/BarrierNode.js)

+ 29 - 0
docs/pages/BasicEnvironmentNode.html.md

@@ -0,0 +1,29 @@
+*Inheritance: EventDispatcher → Node → LightingNode →*
+
+# BasicEnvironmentNode
+
+Represents a basic model for Image-based lighting (IBL). The environment is defined via environment maps in the equirectangular or cube map format. `BasicEnvironmentNode` is intended for non-PBR materials like [MeshBasicNodeMaterial](MeshBasicNodeMaterial.html) or [MeshPhongNodeMaterial](MeshPhongNodeMaterial.html).
+
+## Constructor
+
+### new BasicEnvironmentNode( envNode : Node )
+
+Constructs a new basic environment node.
+
+**envNode**
+
+A node representing the environment.
+
+Default is `null`.
+
+## Properties
+
+### .envNode : Node
+
+A node representing the environment.
+
+Default is `null`.
+
+## Source
+
+[src/nodes/lighting/BasicEnvironmentNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/lighting/BasicEnvironmentNode.js)

+ 27 - 0
docs/pages/BasicLightMapNode.html.md

@@ -0,0 +1,27 @@
+*Inheritance: EventDispatcher → Node → LightingNode →*
+
+# BasicLightMapNode
+
+A specific version of [IrradianceNode](IrradianceNode.html) that is only relevant for [MeshBasicNodeMaterial](MeshBasicNodeMaterial.html). Since the material is unlit, it requires a special scaling factor for the light map.
+
+## Constructor
+
+### new BasicLightMapNode( lightMapNode : Node.<vec3> )
+
+Constructs a new basic light map node.
+
+**lightMapNode**
+
+The light map node.
+
+Default is `null`.
+
+## Properties
+
+### .lightMapNode : Node.<vec3>
+
+The light map node.
+
+## Source
+
+[src/nodes/lighting/BasicLightMapNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/lighting/BasicLightMapNode.js)

+ 37 - 0
docs/pages/BasicLightingModel.html.md

@@ -0,0 +1,37 @@
+*Inheritance: LightingModel →*
+
+# BasicLightingModel
+
+Represents the lighting model for unlit materials. The only light contribution is baked indirect lighting modulated with ambient occlusion and the material's diffuse color. Environment mapping is supported. Used in [MeshBasicNodeMaterial](MeshBasicNodeMaterial.html).
+
+## Constructor
+
+### new BasicLightingModel()
+
+Constructs a new basic lighting model.
+
+## Methods
+
+### .finish( builder : NodeBuilder )
+
+Implements the environment mapping.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [LightingModel#finish](LightingModel.html#finish)
+
+### .indirect( builder : NodeBuilder )
+
+Implements the baked indirect lighting with its modulation.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [LightingModel#indirect](LightingModel.html#indirect)
+
+## Source
+
+[src/nodes/functions/BasicLightingModel.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/functions/BasicLightingModel.js)

+ 43 - 0
docs/pages/BatchNode.html.md

@@ -0,0 +1,43 @@
+*Inheritance: EventDispatcher → Node →*
+
+# BatchNode
+
+This node implements the vertex shader logic which is required when rendering 3D objects via batching. `BatchNode` must be used with instances of [BatchedMesh](BatchedMesh.html).
+
+## Constructor
+
+### new BatchNode( batchMesh : BatchedMesh )
+
+Constructs a new batch node.
+
+**batchMesh**
+
+A reference to batched mesh.
+
+## Properties
+
+### .batchMesh : BatchedMesh
+
+A reference to batched mesh.
+
+### .batchingIdNode : IndexNode
+
+The batching index node.
+
+Default is `null`.
+
+## Methods
+
+### .setup( builder : NodeBuilder )
+
+Setups the internal buffers and nodes and assigns the transformed vertex data to predefined node variables for accumulation. That follows the same patterns like with morph and skinning nodes.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [Node#setup](Node.html#setup)
+
+## Source
+
+[src/nodes/accessors/BatchNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/accessors/BatchNode.js)

+ 388 - 0
docs/pages/BatchedMesh.html.md

@@ -0,0 +1,388 @@
+*Inheritance: EventDispatcher → Object3D → Mesh →*
+
+# BatchedMesh
+
+A special version of a mesh with multi draw batch rendering support. Use this class if you have to render a large number of objects with the same material but with different geometries or world transformations. The usage of `BatchedMesh` will help you to reduce the number of draw calls and thus improve the overall rendering performance in your application.
+
+## Code Example
+
+```js
+const box = new THREE.BoxGeometry( 1, 1, 1 );
+const sphere = new THREE.SphereGeometry( 1, 12, 12 );
+const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
+// initialize and add geometries into the batched mesh
+const batchedMesh = new BatchedMesh( 10, 5000, 10000, material );
+const boxGeometryId = batchedMesh.addGeometry( box );
+const sphereGeometryId = batchedMesh.addGeometry( sphere );
+// create instances of those geometries
+const boxInstancedId1 = batchedMesh.addInstance( boxGeometryId );
+const boxInstancedId2 = batchedMesh.addInstance( boxGeometryId );
+const sphereInstancedId1 = batchedMesh.addInstance( sphereGeometryId );
+const sphereInstancedId2 = batchedMesh.addInstance( sphereGeometryId );
+// position the geometries
+batchedMesh.setMatrixAt( boxInstancedId1, boxMatrix1 );
+batchedMesh.setMatrixAt( boxInstancedId2, boxMatrix2 );
+batchedMesh.setMatrixAt( sphereInstancedId1, sphereMatrix1 );
+batchedMesh.setMatrixAt( sphereInstancedId2, sphereMatrix2 );
+scene.add( batchedMesh );
+```
+
+## Constructor
+
+### new BatchedMesh( maxInstanceCount : number, maxVertexCount : number, maxIndexCount : number, material : Material | Array.<Material> )
+
+Constructs a new batched mesh.
+
+**maxInstanceCount**
+
+The maximum number of individual instances planned to be added and rendered.
+
+**maxVertexCount**
+
+The maximum number of vertices to be used by all unique geometries.
+
+**maxIndexCount**
+
+The maximum number of indices to be used by all unique geometries
+
+Default is `maxVertexCount*2`.
+
+**material**
+
+The mesh material.
+
+## Properties
+
+### .boundingBox : Box3
+
+The bounding box of the batched mesh. Can be computed via [BatchedMesh#computeBoundingBox](BatchedMesh.html#computeBoundingBox).
+
+Default is `null`.
+
+### .boundingSphere : Sphere
+
+The bounding sphere of the batched mesh. Can be computed via [BatchedMesh#computeBoundingSphere](BatchedMesh.html#computeBoundingSphere).
+
+Default is `null`.
+
+### .customSort : function
+
+Takes a sort a function that is run before render. The function takes a list of instances to sort and a camera. The objects in the list include a "z" field to perform a depth-ordered sort with.
+
+Default is `null`.
+
+### .instanceCount : number (readonly)
+
+The instance count.
+
+### .isBatchedMesh : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .maxInstanceCount : number (readonly)
+
+The maximum number of individual instances that can be stored in the batch.
+
+### .perObjectFrustumCulled : boolean
+
+When set ot `true`, the individual objects of a batch are frustum culled.
+
+Default is `true`.
+
+### .sortObjects : boolean
+
+When set to `true`, the individual objects of a batch are sorted to improve overdraw-related artifacts. If the material is marked as "transparent" objects are rendered back to front and if not then they are rendered front to back.
+
+Default is `true`.
+
+### .unusedIndexCount : number (readonly)
+
+The number of unused indices.
+
+### .unusedVertexCount : number (readonly)
+
+The number of unused vertices.
+
+## Methods
+
+### .addGeometry( geometry : BufferGeometry, reservedVertexCount : number, reservedIndexCount : number ) : number
+
+Adds the given geometry to the batch and returns the associated geometry id referring to it to be used in other functions.
+
+**geometry**
+
+The geometry to add.
+
+**reservedVertexCount**
+
+Optional parameter specifying the amount of vertex buffer space to reserve for the added geometry. This is necessary if it is planned to set a new geometry at this index at a later time that is larger than the original geometry. Defaults to the length of the given geometry vertex buffer.
+
+Default is `-1`.
+
+**reservedIndexCount**
+
+Optional parameter specifying the amount of index buffer space to reserve for the added geometry. This is necessary if it is planned to set a new geometry at this index at a later time that is larger than the original geometry. Defaults to the length of the given geometry index buffer.
+
+Default is `-1`.
+
+**Returns:** The geometry ID.
+
+### .addInstance( geometryId : number ) : number
+
+Adds a new instance to the batch using the geometry of the given ID and returns a new id referring to the new instance to be used by other functions.
+
+**geometryId**
+
+The ID of a previously added geometry via [BatchedMesh#addGeometry](BatchedMesh.html#addGeometry).
+
+**Returns:** The instance ID.
+
+### .computeBoundingBox()
+
+Computes the bounding box, updating [BatchedMesh#boundingBox](BatchedMesh.html#boundingBox). Bounding boxes aren't computed by default. They need to be explicitly computed, otherwise they are `null`.
+
+### .computeBoundingSphere()
+
+Computes the bounding sphere, updating [BatchedMesh#boundingSphere](BatchedMesh.html#boundingSphere). Bounding spheres aren't computed by default. They need to be explicitly computed, otherwise they are `null`.
+
+### .deleteGeometry( geometryId : number ) : BatchedMesh
+
+Deletes the geometry defined by the given ID from this batch. Any instances referencing this geometry will also be removed as a side effect.
+
+**geometryId**
+
+The ID of the geometry to remove from the batch.
+
+**Returns:** A reference to this batched mesh.
+
+### .deleteInstance( instanceId : number ) : BatchedMesh
+
+Deletes an existing instance from the batch using the given ID.
+
+**instanceId**
+
+The ID of the instance to remove from the batch.
+
+**Returns:** A reference to this batched mesh.
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+### .getBoundingBoxAt( geometryId : number, target : Box3 ) : Box3
+
+Returns the bounding box for the given geometry.
+
+**geometryId**
+
+The ID of the geometry to return the bounding box for.
+
+**target**
+
+The target object that is used to store the method's result.
+
+**Returns:** The geometry's bounding box. Returns `null` if no geometry has been found for the given ID.
+
+### .getBoundingSphereAt( geometryId : number, target : Sphere ) : Sphere
+
+Returns the bounding sphere for the given geometry.
+
+**geometryId**
+
+The ID of the geometry to return the bounding sphere for.
+
+**target**
+
+The target object that is used to store the method's result.
+
+**Returns:** The geometry's bounding sphere. Returns `null` if no geometry has been found for the given ID.
+
+### .getColorAt( instanceId : number, color : Color ) : Color
+
+Returns the color of the defined instance.
+
+**instanceId**
+
+The ID of an instance to get the color of.
+
+**color**
+
+The target object that is used to store the method's result.
+
+**Returns:** The instance's color.
+
+### .getGeometryIdAt( instanceId : number ) : number
+
+Returns the geometry ID of the defined instance.
+
+**instanceId**
+
+The ID of an instance to get the geometry ID of.
+
+**Returns:** The instance's geometry ID.
+
+### .getGeometryRangeAt( geometryId : number, target : Object ) : Object
+
+Get the range representing the subset of triangles related to the attached geometry, indicating the starting offset and count, or `null` if invalid.
+
+**geometryId**
+
+The id of the geometry to get the range of.
+
+**target**
+
+The target object that is used to store the method's result.
+
+**Returns:** The result object with range data.
+
+### .getMatrixAt( instanceId : number, matrix : Matrix4 ) : Matrix4
+
+Returns the local transformation matrix of the defined instance.
+
+**instanceId**
+
+The ID of an instance to get the matrix of.
+
+**matrix**
+
+The target object that is used to store the method's result.
+
+**Returns:** The instance's local transformation matrix.
+
+### .getVisibleAt( instanceId : number ) : boolean
+
+Returns the visibility state of the defined instance.
+
+**instanceId**
+
+The ID of an instance to get the visibility state of.
+
+**Returns:** Whether the instance is visible or not.
+
+### .optimize() : BatchedMesh
+
+Repacks the sub geometries in BatchedMesh to remove any unused space remaining from previously deleted geometry, freeing up space to add new geometry.
+
+**Returns:** A reference to this batched mesh.
+
+### .setColorAt( instanceId : number, color : Color ) : BatchedMesh
+
+Sets the given color to the defined instance.
+
+**instanceId**
+
+The ID of an instance to set the color of.
+
+**color**
+
+The color to set the instance to.
+
+**Returns:** A reference to this batched mesh.
+
+### .setCustomSort( func : function ) : BatchedMesh
+
+Takes a sort a function that is run before render. The function takes a list of instances to sort and a camera. The objects in the list include a "z" field to perform a depth-ordered sort with.
+
+**func**
+
+The custom sort function.
+
+**Returns:** A reference to this batched mesh.
+
+### .setGeometryAt( geometryId : number, geometry : BufferGeometry ) : number
+
+Replaces the geometry at the given ID with the provided geometry. Throws an error if there is not enough space reserved for geometry. Calling this will change all instances that are rendering that geometry.
+
+**geometryId**
+
+The ID of the geometry that should be replaced with the given geometry.
+
+**geometry**
+
+The new geometry.
+
+**Returns:** The geometry ID.
+
+### .setGeometryIdAt( instanceId : number, geometryId : number ) : BatchedMesh
+
+Sets the geometry ID of the instance at the given index.
+
+**instanceId**
+
+The ID of the instance to set the geometry ID of.
+
+**geometryId**
+
+The geometry ID to be use by the instance.
+
+**Returns:** A reference to this batched mesh.
+
+### .setGeometrySize( maxVertexCount : number, maxIndexCount : number )
+
+Resizes the available space in the batch's vertex and index buffer attributes to the provided sizes. If the provided arguments shrink the geometry buffers but there is not enough unused space at the end of the geometry attributes then an error is thrown.
+
+**maxVertexCount**
+
+The maximum number of vertices to be used by all unique geometries to resize to.
+
+**maxIndexCount**
+
+The maximum number of indices to be used by all unique geometries to resize to.
+
+### .setInstanceCount( maxInstanceCount : number )
+
+Resizes the necessary buffers to support the provided number of instances. If the provided arguments shrink the number of instances but there are not enough unused Ids at the end of the list then an error is thrown.
+
+**maxInstanceCount**
+
+The max number of individual instances that can be added and rendered by the batch.
+
+### .setMatrixAt( instanceId : number, matrix : Matrix4 ) : BatchedMesh
+
+Sets the given local transformation matrix to the defined instance. Negatively scaled matrices are not supported.
+
+**instanceId**
+
+The ID of an instance to set the matrix of.
+
+**matrix**
+
+A 4x4 matrix representing the local transformation of a single instance.
+
+**Returns:** A reference to this batched mesh.
+
+### .setVisibleAt( instanceId : number, visible : boolean ) : BatchedMesh
+
+Sets the visibility of the instance.
+
+**instanceId**
+
+The id of the instance to set the visibility of.
+
+**visible**
+
+Whether the instance is visible or not.
+
+**Returns:** A reference to this batched mesh.
+
+### .validateGeometryId( geometryId : number )
+
+Validates the geometry defined by the given ID.
+
+**geometryId**
+
+The geometry to validate.
+
+### .validateInstanceId( instanceId : number )
+
+Validates the instance defined by the given ID.
+
+**instanceId**
+
+The instance to validate.
+
+## Source
+
+[src/objects/BatchedMesh.js](https://github.com/mrdoob/three.js/blob/master/src/objects/BatchedMesh.js)

+ 51 - 0
docs/pages/BitcastNode.html.md

@@ -0,0 +1,51 @@
+*Inheritance: EventDispatcher → Node → TempNode →*
+
+# BitcastNode
+
+This node represents an operation that reinterprets the bit representation of a value in one type as a value in another type.
+
+## Constructor
+
+### new BitcastNode( valueNode : Node, conversionType : string, inputType : string )
+
+Constructs a new bitcast node.
+
+**valueNode**
+
+The value to convert.
+
+**conversionType**
+
+The type to convert to.
+
+**inputType**
+
+The expected input data type of the bitcast operation.
+
+Default is `null`.
+
+## Properties
+
+### .conversionType : string
+
+The type the value will be converted to.
+
+### .inputType : string
+
+The expected input data type of the bitcast operation.
+
+Default is `null`.
+
+### .isBitcastNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .valueNode : Node
+
+The data to bitcast to a new type.
+
+## Source
+
+[src/nodes/math/BitcastNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/math/BitcastNode.js)

+ 31 - 0
docs/pages/BitcountNode.html.md

@@ -0,0 +1,31 @@
+*Inheritance: EventDispatcher → Node → TempNode → MathNode →*
+
+# BitcountNode
+
+This node represents an operation that counts the bits of a piece of shader data.
+
+## Constructor
+
+### new BitcountNode( method : 'countTrailingZeros' | 'countLeadingZeros' | 'countOneBits', aNode : Node )
+
+Constructs a new math node.
+
+**method**
+
+The method name.
+
+**aNode**
+
+The first input.
+
+## Properties
+
+### .isBitcountNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+## Source
+
+[src/nodes/math/BitcountNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/math/BitcountNode.js)

+ 23 - 0
docs/pages/BitonicSort_BitonicSort.html.md

@@ -0,0 +1,23 @@
+# BitonicSort
+
+### new BitonicSort( renderer : Renderer, dataBuffer : StorageBufferNode, options : Object )
+
+Constructs a new light probe helper.
+
+**renderer**
+
+The current scene's renderer.
+
+**dataBuffer**
+
+The data buffer to sort.
+
+**options**
+
+Options that modify the bitonic sort.
+
+Default is `{}`.
+
+## Source
+
+[examples/jsm/gpgpu/BitonicSort.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/gpgpu/BitonicSort.js)

+ 146 - 0
docs/pages/BloomNode.html.md

@@ -0,0 +1,146 @@
+*Inheritance: EventDispatcher → Node → TempNode →*
+
+# BloomNode
+
+Post processing node for creating a bloom effect.
+
+By default, the node affects the entire image. For a selective bloom, use the `emissive` material property to control which objects should contribute to bloom or not. This can be achieved via MRT.
+
+```js
+const postProcessing = new THREE.PostProcessing( renderer );
+const scenePass = pass( scene, camera );
+scenePass.setMRT( mrt( {
+	output,
+	emissive
+} ) );
+const scenePassColor = scenePass.getTextureNode( 'output' );
+const emissivePass = scenePass.getTextureNode( 'emissive' );
+const bloomPass = bloom( emissivePass );
+postProcessing.outputNode = scenePassColor.add( bloomPass );
+```
+
+## Code Example
+
+```js
+const postProcessing = new THREE.PostProcessing( renderer );
+const scenePass = pass( scene, camera );
+const scenePassColor = scenePass.getTextureNode( 'output' );
+const bloomPass = bloom( scenePassColor );
+postProcessing.outputNode = scenePassColor.add( bloomPass );
+```
+
+## Import
+
+BloomNode is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { bloom } from 'three/addons/tsl/display/BloomNode.js';
+```
+
+## Constructor
+
+### new BloomNode( inputNode : Node.<vec4>, strength : number, radius : number, threshold : number )
+
+Constructs a new bloom node.
+
+**inputNode**
+
+The node that represents the input of the effect.
+
+**strength**
+
+The strength of the bloom.
+
+Default is `1`.
+
+**radius**
+
+The radius of the bloom.
+
+Default is `0`.
+
+**threshold**
+
+The luminance threshold limits which bright areas contribute to the bloom effect.
+
+Default is `0`.
+
+## Properties
+
+### .inputNode : Node.<vec4>
+
+The node that represents the input of the effect.
+
+### .radius : UniformNode.<float>
+
+The radius of the bloom. Must be in the range `[0,1]`.
+
+### .smoothWidth : UniformNode.<float>
+
+Can be used to tweak the extracted luminance from the scene.
+
+### .strength : UniformNode.<float>
+
+The strength of the bloom.
+
+### .threshold : UniformNode.<float>
+
+The luminance threshold limits which bright areas contribute to the bloom effect.
+
+### .updateBeforeType : string
+
+The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders its effect once per frame in `updateBefore()`.
+
+Default is `'frame'`.
+
+**Overrides:** [TempNode#updateBeforeType](TempNode.html#updateBeforeType)
+
+## Methods
+
+### .dispose()
+
+Frees internal resources. This method should be called when the effect is no longer required.
+
+**Overrides:** [TempNode#dispose](TempNode.html#dispose)
+
+### .getTextureNode() : PassTextureNode
+
+Returns the result of the effect as a texture node.
+
+**Returns:** A texture node that represents the result of the effect.
+
+### .setSize( width : number, height : number )
+
+Sets the size of the effect.
+
+**width**
+
+The width of the effect.
+
+**height**
+
+The height of the effect.
+
+### .setup( builder : NodeBuilder ) : PassTextureNode
+
+This method is used to setup the effect's TSL code.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [TempNode#setup](TempNode.html#setup)
+
+### .updateBefore( frame : NodeFrame )
+
+This method is used to render the effect once per frame.
+
+**frame**
+
+The current node frame.
+
+**Overrides:** [TempNode#updateBefore](TempNode.html#updateBefore)
+
+## Source
+
+[examples/jsm/tsl/display/BloomNode.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/tsl/display/BloomNode.js)

+ 124 - 0
docs/pages/BloomPass.html.md

@@ -0,0 +1,124 @@
+*Inheritance: Pass →*
+
+# BloomPass
+
+A pass for a basic Bloom effect.
+
+[UnrealBloomPass](UnrealBloomPass.html) produces a more advanced Bloom but is also more expensive.
+
+## Code Example
+
+```js
+const effectBloom = new BloomPass( 0.75 );
+composer.addPass( effectBloom );
+```
+
+## Import
+
+BloomPass is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { BloomPass } from 'three/addons/postprocessing/BloomPass.js';
+```
+
+## Constructor
+
+### new BloomPass( strength : number, kernelSize : number, sigma : number )
+
+Constructs a new Bloom pass.
+
+**strength**
+
+The Bloom strength.
+
+Default is `1`.
+
+**kernelSize**
+
+The kernel size.
+
+Default is `25`.
+
+**sigma**
+
+The sigma.
+
+Default is `4`.
+
+## Properties
+
+### .combineUniforms : Object
+
+The combine pass uniforms.
+
+### .convolutionUniforms : Object
+
+The convolution pass uniforms.
+
+### .materialCombine : ShaderMaterial
+
+The combine pass material.
+
+### .materialConvolution : ShaderMaterial
+
+The convolution pass material.
+
+### .needsSwap : boolean
+
+Overwritten to disable the swap.
+
+Default is `false`.
+
+**Overrides:** [Pass#needsSwap](Pass.html#needsSwap)
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever the pass is no longer used in your app.
+
+**Overrides:** [Pass#dispose](Pass.html#dispose)
+
+### .render( renderer : WebGLRenderer, writeBuffer : WebGLRenderTarget, readBuffer : WebGLRenderTarget, deltaTime : number, maskActive : boolean )
+
+Performs the Bloom pass.
+
+**renderer**
+
+The renderer.
+
+**writeBuffer**
+
+The write buffer. This buffer is intended as the rendering destination for the pass.
+
+**readBuffer**
+
+The read buffer. The pass can access the result from the previous pass from this buffer.
+
+**deltaTime**
+
+The delta time in seconds.
+
+**maskActive**
+
+Whether masking is active or not.
+
+**Overrides:** [Pass#render](Pass.html#render)
+
+### .setSize( width : number, height : number )
+
+Sets the size of the pass.
+
+**width**
+
+The width to set.
+
+**height**
+
+The height to set.
+
+**Overrides:** [Pass#setSize](Pass.html#setSize)
+
+## Source
+
+[examples/jsm/postprocessing/BloomPass.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/postprocessing/BloomPass.js)

+ 145 - 0
docs/pages/BokehPass.html.md

@@ -0,0 +1,145 @@
+*Inheritance: Pass →*
+
+# BokehPass
+
+Pass for creating depth of field (DOF) effect.
+
+## Code Example
+
+```js
+const bokehPass = new BokehPass( scene, camera, {
+	focus: 500
+	aperture: 5,
+	maxblur: 0.01
+} );
+composer.addPass( bokehPass );
+```
+
+## Import
+
+BokehPass is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { BokehPass } from 'three/addons/postprocessing/BokehPass.js';
+```
+
+## Constructor
+
+### new BokehPass( scene : Scene, camera : Camera, params : BokehPass~Options )
+
+Constructs a new Bokeh pass.
+
+**scene**
+
+The scene to render the DOF for.
+
+**camera**
+
+The camera.
+
+**params**
+
+The pass options.
+
+## Properties
+
+### .camera : Camera
+
+The camera.
+
+### .materialBokeh : ShaderMaterial
+
+The pass bokeh material.
+
+### .scene : Scene
+
+The scene to render the DOF for.
+
+### .uniforms : Object
+
+The pass uniforms. Use this object if you want to update the `focus`, `aperture` or `maxblur` values at runtime.
+
+```js
+pass.uniforms.focus.value = focus;
+pass.uniforms.aperture.value = aperture;
+pass.uniforms.maxblur.value = maxblur;
+```
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever the pass is no longer used in your app.
+
+**Overrides:** [Pass#dispose](Pass.html#dispose)
+
+### .render( renderer : WebGLRenderer, writeBuffer : WebGLRenderTarget, readBuffer : WebGLRenderTarget, deltaTime : number, maskActive : boolean )
+
+Performs the Bokeh pass.
+
+**renderer**
+
+The renderer.
+
+**writeBuffer**
+
+The write buffer. This buffer is intended as the rendering destination for the pass.
+
+**readBuffer**
+
+The read buffer. The pass can access the result from the previous pass from this buffer.
+
+**deltaTime**
+
+The delta time in seconds.
+
+**maskActive**
+
+Whether masking is active or not.
+
+**Overrides:** [Pass#render](Pass.html#render)
+
+### .setSize( width : number, height : number )
+
+Sets the size of the pass.
+
+**width**
+
+The width to set.
+
+**height**
+
+The height to set.
+
+**Overrides:** [Pass#setSize](Pass.html#setSize)
+
+## Type Definitions
+
+### .Options
+
+Constructor options of `BokehPass`.
+
+**focus**  
+number
+
+Defines the effect's focus which is the distance along the camera's look direction in world units.
+
+Default is `1`.
+
+**aperture**  
+number
+
+Defines the effect's aperture.
+
+Default is `0.025`.
+
+**maxblur**  
+number
+
+Defines the effect's maximum blur.
+
+Default is `1`.
+
+## Source
+
+[examples/jsm/postprocessing/BokehPass.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/postprocessing/BokehPass.js)

+ 32 - 0
docs/pages/Bone.html.md

@@ -0,0 +1,32 @@
+*Inheritance: EventDispatcher → Object3D →*
+
+# Bone
+
+A bone which is part of a [Skeleton](Skeleton.html). The skeleton in turn is used by the [SkinnedMesh](SkinnedMesh.html).
+
+## Code Example
+
+```js
+const root = new THREE.Bone();
+const child = new THREE.Bone();
+root.add( child );
+child.position.y = 5;
+```
+
+## Constructor
+
+### new Bone()
+
+Constructs a new bone.
+
+## Properties
+
+### .isBone : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+## Source
+
+[src/objects/Bone.js](https://github.com/mrdoob/three.js/blob/master/src/objects/Bone.js)

+ 55 - 0
docs/pages/BooleanKeyframeTrack.html.md

@@ -0,0 +1,55 @@
+*Inheritance: KeyframeTrack →*
+
+# BooleanKeyframeTrack
+
+A track for boolean keyframe values.
+
+## Constructor
+
+### new BooleanKeyframeTrack( name : string, times : Array.<number>, values : Array.<boolean> )
+
+Constructs a new boolean keyframe track.
+
+This keyframe track type has no `interpolation` parameter because the interpolation is always discrete.
+
+**name**
+
+The keyframe track's name.
+
+**times**
+
+A list of keyframe times.
+
+**values**
+
+A list of keyframe values.
+
+## Properties
+
+### .DefaultInterpolation : InterpolateLinear | InterpolateDiscrete | InterpolateSmooth
+
+The default interpolation type of this keyframe track.
+
+Default is `InterpolateDiscrete`.
+
+**Overrides:** [KeyframeTrack#DefaultInterpolation](KeyframeTrack.html#DefaultInterpolation)
+
+### .ValueBufferType : TypedArray | Array
+
+The value buffer type of this keyframe track.
+
+Default is `Array.constructor`.
+
+**Overrides:** [KeyframeTrack#ValueBufferType](KeyframeTrack.html#ValueBufferType)
+
+### .ValueTypeName : string
+
+The value type name.
+
+Default is `'bool'`.
+
+**Overrides:** [KeyframeTrack#ValueTypeName](KeyframeTrack.html#ValueTypeName)
+
+## Source
+
+[src/animation/tracks/BooleanKeyframeTrack.js](https://github.com/mrdoob/three.js/blob/master/src/animation/tracks/BooleanKeyframeTrack.js)

+ 267 - 0
docs/pages/Box2.html.md

@@ -0,0 +1,267 @@
+# Box2
+
+Represents an axis-aligned bounding box (AABB) in 2D space.
+
+## Constructor
+
+### new Box2( min : Vector2, max : Vector2 )
+
+Constructs a new bounding box.
+
+**min**
+
+A vector representing the lower boundary of the box.
+
+Default is `(Infinity,Infinity)`.
+
+**max**
+
+A vector representing the upper boundary of the box.
+
+Default is `(-Infinity,-Infinity)`.
+
+## Properties
+
+### .isBox2 : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .max : Vector2
+
+The upper boundary of the box.
+
+### .min : Vector2
+
+The lower boundary of the box.
+
+## Methods
+
+### .clampPoint( point : Vector2, target : Vector2 ) : Vector2
+
+Clamps the given point within the bounds of this box.
+
+**point**
+
+The point to clamp.
+
+**target**
+
+The target vector that is used to store the method's result.
+
+**Returns:** The clamped point.
+
+### .clone() : Box2
+
+Returns a new box with copied values from this instance.
+
+**Returns:** A clone of this instance.
+
+### .containsBox( box : Box2 ) : boolean
+
+Returns `true` if this bounding box includes the entirety of the given bounding box. If this box and the given one are identical, this function also returns `true`.
+
+**box**
+
+The bounding box to test.
+
+**Returns:** Whether the bounding box contains the given bounding box or not.
+
+### .containsPoint( point : Vector2 ) : boolean
+
+Returns `true` if the given point lies within or on the boundaries of this box.
+
+**point**
+
+The point to test.
+
+**Returns:** Whether the bounding box contains the given point or not.
+
+### .copy( box : Box2 ) : Box2
+
+Copies the values of the given box to this instance.
+
+**box**
+
+The box to copy.
+
+**Returns:** A reference to this bounding box.
+
+### .distanceToPoint( point : Vector2 ) : number
+
+Returns the euclidean distance from any edge of this box to the specified point. If the given point lies inside of this box, the distance will be `0`.
+
+**point**
+
+The point to compute the distance to.
+
+**Returns:** The euclidean distance.
+
+### .equals( box : Box2 ) : boolean
+
+Returns `true` if this bounding box is equal with the given one.
+
+**box**
+
+The box to test for equality.
+
+**Returns:** Whether this bounding box is equal with the given one.
+
+### .expandByPoint( point : Vector2 ) : Box2
+
+Expands the boundaries of this box to include the given point.
+
+**point**
+
+The point that should be included by the bounding box.
+
+**Returns:** A reference to this bounding box.
+
+### .expandByScalar( scalar : number ) : Box2
+
+Expands each dimension of the box by the given scalar. If negative, the dimensions of the box will be contracted.
+
+**scalar**
+
+The scalar value that should expand the bounding box.
+
+**Returns:** A reference to this bounding box.
+
+### .expandByVector( vector : Vector2 ) : Box2
+
+Expands this box equilaterally by the given vector. The width of this box will be expanded by the x component of the vector in both directions. The height of this box will be expanded by the y component of the vector in both directions.
+
+**vector**
+
+The vector that should expand the bounding box.
+
+**Returns:** A reference to this bounding box.
+
+### .getCenter( target : Vector2 ) : Vector2
+
+Returns the center point of this box.
+
+**target**
+
+The target vector that is used to store the method's result.
+
+**Returns:** The center point.
+
+### .getParameter( point : Vector2, target : Vector2 ) : Vector2
+
+Returns a point as a proportion of this box's width and height.
+
+**point**
+
+A point in 2D space.
+
+**target**
+
+The target vector that is used to store the method's result.
+
+**Returns:** A point as a proportion of this box's width and height.
+
+### .getSize( target : Vector2 ) : Vector2
+
+Returns the dimensions of this box.
+
+**target**
+
+The target vector that is used to store the method's result.
+
+**Returns:** The size.
+
+### .intersect( box : Box2 ) : Box2
+
+Computes the intersection of this bounding box and the given one, setting the upper bound of this box to the lesser of the two boxes' upper bounds and the lower bound of this box to the greater of the two boxes' lower bounds. If there's no overlap, makes this box empty.
+
+**box**
+
+The bounding box to intersect with.
+
+**Returns:** A reference to this bounding box.
+
+### .intersectsBox( box : Box2 ) : boolean
+
+Returns `true` if the given bounding box intersects with this bounding box.
+
+**box**
+
+The bounding box to test.
+
+**Returns:** Whether the given bounding box intersects with this bounding box.
+
+### .isEmpty() : boolean
+
+Returns true if this box includes zero points within its bounds. Note that a box with equal lower and upper bounds still includes one point, the one both bounds share.
+
+**Returns:** Whether this box is empty or not.
+
+### .makeEmpty() : Box2
+
+Makes this box empty which means in encloses a zero space in 2D.
+
+**Returns:** A reference to this bounding box.
+
+### .set( min : Vector2, max : Vector2 ) : Box2
+
+Sets the lower and upper boundaries of this box. Please note that this method only copies the values from the given objects.
+
+**min**
+
+The lower boundary of the box.
+
+**max**
+
+The upper boundary of the box.
+
+**Returns:** A reference to this bounding box.
+
+### .setFromCenterAndSize( center : Vector2, size : Vector2 ) : Box2
+
+Centers this box on the given center vector and sets this box's width, height and depth to the given size values.
+
+**center**
+
+The center of the box.
+
+**size**
+
+The x and y dimensions of the box.
+
+**Returns:** A reference to this bounding box.
+
+### .setFromPoints( points : Array.<Vector2> ) : Box2
+
+Sets the upper and lower bounds of this box so it encloses the position data in the given array.
+
+**points**
+
+An array holding 2D position data as instances of [Vector2](Vector2.html).
+
+**Returns:** A reference to this bounding box.
+
+### .translate( offset : Vector2 ) : Box2
+
+Adds the given offset to both the upper and lower bounds of this bounding box, effectively moving it in 2D space.
+
+**offset**
+
+The offset that should be used to translate the bounding box.
+
+**Returns:** A reference to this bounding box.
+
+### .union( box : Box2 ) : Box2
+
+Computes the union of this box and another and the given one, setting the upper bound of this box to the greater of the two boxes' upper bounds and the lower bound of this box to the lesser of the two boxes' lower bounds.
+
+**box**
+
+The bounding box that will be unioned with this instance.
+
+**Returns:** A reference to this bounding box.
+
+## Source
+
+[src/math/Box2.js](https://github.com/mrdoob/three.js/blob/master/src/math/Box2.js)

+ 385 - 0
docs/pages/Box3.html.md

@@ -0,0 +1,385 @@
+# Box3
+
+Represents an axis-aligned bounding box (AABB) in 3D space.
+
+## Constructor
+
+### new Box3( min : Vector3, max : Vector3 )
+
+Constructs a new bounding box.
+
+**min**
+
+A vector representing the lower boundary of the box.
+
+Default is `(Infinity,Infinity,Infinity)`.
+
+**max**
+
+A vector representing the upper boundary of the box.
+
+Default is `(-Infinity,-Infinity,-Infinity)`.
+
+## Properties
+
+### .isBox3 : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .max : Vector3
+
+The upper boundary of the box.
+
+### .min : Vector3
+
+The lower boundary of the box.
+
+## Methods
+
+### .applyMatrix4( matrix : Matrix4 ) : Box3
+
+Transforms this bounding box by the given 4x4 transformation matrix.
+
+**matrix**
+
+The transformation matrix.
+
+**Returns:** A reference to this bounding box.
+
+### .clampPoint( point : Vector3, target : Vector3 ) : Vector3
+
+Clamps the given point within the bounds of this box.
+
+**point**
+
+The point to clamp.
+
+**target**
+
+The target vector that is used to store the method's result.
+
+**Returns:** The clamped point.
+
+### .clone() : Box3
+
+Returns a new box with copied values from this instance.
+
+**Returns:** A clone of this instance.
+
+### .containsBox( box : Box3 ) : boolean
+
+Returns `true` if this bounding box includes the entirety of the given bounding box. If this box and the given one are identical, this function also returns `true`.
+
+**box**
+
+The bounding box to test.
+
+**Returns:** Whether the bounding box contains the given bounding box or not.
+
+### .containsPoint( point : Vector3 ) : boolean
+
+Returns `true` if the given point lies within or on the boundaries of this box.
+
+**point**
+
+The point to test.
+
+**Returns:** Whether the bounding box contains the given point or not.
+
+### .copy( box : Box3 ) : Box3
+
+Copies the values of the given box to this instance.
+
+**box**
+
+The box to copy.
+
+**Returns:** A reference to this bounding box.
+
+### .distanceToPoint( point : Vector3 ) : number
+
+Returns the euclidean distance from any edge of this box to the specified point. If the given point lies inside of this box, the distance will be `0`.
+
+**point**
+
+The point to compute the distance to.
+
+**Returns:** The euclidean distance.
+
+### .equals( box : Box3 ) : boolean
+
+Returns `true` if this bounding box is equal with the given one.
+
+**box**
+
+The box to test for equality.
+
+**Returns:** Whether this bounding box is equal with the given one.
+
+### .expandByObject( object : Object3D, precise : boolean ) : Box3
+
+Expands the boundaries of this box to include the given 3D object and its children, accounting for the object's, and children's, world transforms. The function may result in a larger box than strictly necessary (unless the precise parameter is set to true).
+
+**object**
+
+The 3D object that should expand the bounding box.
+
+**precise**
+
+If set to `true`, the method expands the bounding box as little as necessary at the expense of more computation.
+
+Default is `false`.
+
+**Returns:** A reference to this bounding box.
+
+### .expandByPoint( point : Vector3 ) : Box3
+
+Expands the boundaries of this box to include the given point.
+
+**point**
+
+The point that should be included by the bounding box.
+
+**Returns:** A reference to this bounding box.
+
+### .expandByScalar( scalar : number ) : Box3
+
+Expands each dimension of the box by the given scalar. If negative, the dimensions of the box will be contracted.
+
+**scalar**
+
+The scalar value that should expand the bounding box.
+
+**Returns:** A reference to this bounding box.
+
+### .expandByVector( vector : Vector3 ) : Box3
+
+Expands this box equilaterally by the given vector. The width of this box will be expanded by the x component of the vector in both directions. The height of this box will be expanded by the y component of the vector in both directions. The depth of this box will be expanded by the z component of the vector in both directions.
+
+**vector**
+
+The vector that should expand the bounding box.
+
+**Returns:** A reference to this bounding box.
+
+### .fromJSON( json : Object ) : Box3
+
+Returns a serialized structure of the bounding box.
+
+**json**
+
+The serialized json to set the box from.
+
+**Returns:** A reference to this bounding box.
+
+### .getBoundingSphere( target : Sphere ) : Sphere
+
+Returns a bounding sphere that encloses this bounding box.
+
+**target**
+
+The target sphere that is used to store the method's result.
+
+**Returns:** The bounding sphere that encloses this bounding box.
+
+### .getCenter( target : Vector3 ) : Vector3
+
+Returns the center point of this box.
+
+**target**
+
+The target vector that is used to store the method's result.
+
+**Returns:** The center point.
+
+### .getParameter( point : Vector3, target : Vector3 ) : Vector3
+
+Returns a point as a proportion of this box's width, height and depth.
+
+**point**
+
+A point in 3D space.
+
+**target**
+
+The target vector that is used to store the method's result.
+
+**Returns:** A point as a proportion of this box's width, height and depth.
+
+### .getSize( target : Vector3 ) : Vector3
+
+Returns the dimensions of this box.
+
+**target**
+
+The target vector that is used to store the method's result.
+
+**Returns:** The size.
+
+### .intersect( box : Box3 ) : Box3
+
+Computes the intersection of this bounding box and the given one, setting the upper bound of this box to the lesser of the two boxes' upper bounds and the lower bound of this box to the greater of the two boxes' lower bounds. If there's no overlap, makes this box empty.
+
+**box**
+
+The bounding box to intersect with.
+
+**Returns:** A reference to this bounding box.
+
+### .intersectsBox( box : Box3 ) : boolean
+
+Returns `true` if the given bounding box intersects with this bounding box.
+
+**box**
+
+The bounding box to test.
+
+**Returns:** Whether the given bounding box intersects with this bounding box.
+
+### .intersectsPlane( plane : Plane ) : boolean
+
+Returns `true` if the given plane intersects with this bounding box.
+
+**plane**
+
+The plane to test.
+
+**Returns:** Whether the given plane intersects with this bounding box.
+
+### .intersectsSphere( sphere : Sphere ) : boolean
+
+Returns `true` if the given bounding sphere intersects with this bounding box.
+
+**sphere**
+
+The bounding sphere to test.
+
+**Returns:** Whether the given bounding sphere intersects with this bounding box.
+
+### .intersectsTriangle( triangle : Triangle ) : boolean
+
+Returns `true` if the given triangle intersects with this bounding box.
+
+**triangle**
+
+The triangle to test.
+
+**Returns:** Whether the given triangle intersects with this bounding box.
+
+### .isEmpty() : boolean
+
+Returns true if this box includes zero points within its bounds. Note that a box with equal lower and upper bounds still includes one point, the one both bounds share.
+
+**Returns:** Whether this box is empty or not.
+
+### .makeEmpty() : Box3
+
+Makes this box empty which means in encloses a zero space in 3D.
+
+**Returns:** A reference to this bounding box.
+
+### .set( min : Vector3, max : Vector3 ) : Box3
+
+Sets the lower and upper boundaries of this box. Please note that this method only copies the values from the given objects.
+
+**min**
+
+The lower boundary of the box.
+
+**max**
+
+The upper boundary of the box.
+
+**Returns:** A reference to this bounding box.
+
+### .setFromArray( array : Array.<number> ) : Box3
+
+Sets the upper and lower bounds of this box so it encloses the position data in the given array.
+
+**array**
+
+An array holding 3D position data.
+
+**Returns:** A reference to this bounding box.
+
+### .setFromBufferAttribute( attribute : BufferAttribute ) : Box3
+
+Sets the upper and lower bounds of this box so it encloses the position data in the given buffer attribute.
+
+**attribute**
+
+A buffer attribute holding 3D position data.
+
+**Returns:** A reference to this bounding box.
+
+### .setFromCenterAndSize( center : Vector3, size : Vector3 ) : Box3
+
+Centers this box on the given center vector and sets this box's width, height and depth to the given size values.
+
+**center**
+
+The center of the box.
+
+**size**
+
+The x, y and z dimensions of the box.
+
+**Returns:** A reference to this bounding box.
+
+### .setFromObject( object : Object3D, precise : boolean ) : Box3
+
+Computes the world-axis-aligned bounding box for the given 3D object (including its children), accounting for the object's, and children's, world transforms. The function may result in a larger box than strictly necessary.
+
+**object**
+
+The 3D object to compute the bounding box for.
+
+**precise**
+
+If set to `true`, the method computes the smallest world-axis-aligned bounding box at the expense of more computation.
+
+Default is `false`.
+
+**Returns:** A reference to this bounding box.
+
+### .setFromPoints( points : Array.<Vector3> ) : Box3
+
+Sets the upper and lower bounds of this box so it encloses the position data in the given array.
+
+**points**
+
+An array holding 3D position data as instances of [Vector3](Vector3.html).
+
+**Returns:** A reference to this bounding box.
+
+### .toJSON() : Object
+
+Returns a serialized structure of the bounding box.
+
+**Returns:** Serialized structure with fields representing the object state.
+
+### .translate( offset : Vector3 ) : Box3
+
+Adds the given offset to both the upper and lower bounds of this bounding box, effectively moving it in 3D space.
+
+**offset**
+
+The offset that should be used to translate the bounding box.
+
+**Returns:** A reference to this bounding box.
+
+### .union( box : Box3 ) : Box3
+
+Computes the union of this box and another and the given one, setting the upper bound of this box to the greater of the two boxes' upper bounds and the lower bound of this box to the lesser of the two boxes' lower bounds.
+
+**box**
+
+The bounding box that will be unioned with this instance.
+
+**Returns:** A reference to this bounding box.
+
+## Source
+
+[src/math/Box3.js](https://github.com/mrdoob/three.js/blob/master/src/math/Box3.js)

+ 46 - 0
docs/pages/Box3Helper.html.md

@@ -0,0 +1,46 @@
+*Inheritance: EventDispatcher → Object3D → Line → LineSegments →*
+
+# Box3Helper
+
+A helper object to visualize an instance of [Box3](Box3.html).
+
+## Code Example
+
+```js
+const box = new THREE.Box3();
+box.setFromCenterAndSize( new THREE.Vector3( 1, 1, 1 ), new THREE.Vector3( 2, 1, 3 ) );
+const helper = new THREE.Box3Helper( box, 0xffff00 );
+scene.add( helper )
+```
+
+## Constructor
+
+### new Box3Helper( box : Box3, color : number | Color | string )
+
+Constructs a new box3 helper.
+
+**box**
+
+The box to visualize.
+
+**color**
+
+The box's color.
+
+Default is `0xffff00`.
+
+## Properties
+
+### .box : Box3
+
+The box being visualized.
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+## Source
+
+[src/helpers/Box3Helper.js](https://github.com/mrdoob/three.js/blob/master/src/helpers/Box3Helper.js)

+ 78 - 0
docs/pages/BoxGeometry.html.md

@@ -0,0 +1,78 @@
+*Inheritance: EventDispatcher → BufferGeometry →*
+
+# BoxGeometry
+
+A geometry class for a rectangular cuboid with a given width, height, and depth. On creation, the cuboid is centred on the origin, with each edge parallel to one of the axes.
+
+## Code Example
+
+```js
+const geometry = new THREE.BoxGeometry( 1, 1, 1 );
+const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
+const cube = new THREE.Mesh( geometry, material );
+scene.add( cube );
+```
+
+## Constructor
+
+### new BoxGeometry( width : number, height : number, depth : number, widthSegments : number, heightSegments : number, depthSegments : number )
+
+Constructs a new box geometry.
+
+**width**
+
+The width. That is, the length of the edges parallel to the X axis.
+
+Default is `1`.
+
+**height**
+
+The height. That is, the length of the edges parallel to the Y axis.
+
+Default is `1`.
+
+**depth**
+
+The depth. That is, the length of the edges parallel to the Z axis.
+
+Default is `1`.
+
+**widthSegments**
+
+Number of segmented rectangular faces along the width of the sides.
+
+Default is `1`.
+
+**heightSegments**
+
+Number of segmented rectangular faces along the height of the sides.
+
+Default is `1`.
+
+**depthSegments**
+
+Number of segmented rectangular faces along the depth of the sides.
+
+Default is `1`.
+
+## Properties
+
+### .parameters : Object
+
+Holds the constructor parameters that have been used to generate the geometry. Any modification after instantiation does not change the geometry.
+
+## Static Methods
+
+### .fromJSON( data : Object ) : BoxGeometry
+
+Factory method for creating an instance of this class from the given JSON object.
+
+**data**
+
+A JSON object representing the serialized geometry.
+
+**Returns:** A new instance.
+
+## Source
+
+[src/geometries/BoxGeometry.js](https://github.com/mrdoob/three.js/blob/master/src/geometries/BoxGeometry.js)

+ 60 - 0
docs/pages/BoxHelper.html.md

@@ -0,0 +1,60 @@
+*Inheritance: EventDispatcher → Object3D → Line → LineSegments →*
+
+# BoxHelper
+
+Helper object to graphically show the world-axis-aligned bounding box around an object. The actual bounding box is handled with [Box3](Box3.html), this is just a visual helper for debugging. It can be automatically resized with [BoxHelper#update](BoxHelper.html#update) when the object it's created from is transformed. Note that the object must have a geometry for this to work, so it won't work with sprites.
+
+## Code Example
+
+```js
+const sphere = new THREE.SphereGeometry();
+const object = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( 0xff0000 ) );
+const box = new THREE.BoxHelper( object, 0xffff00 );
+scene.add( box );
+```
+
+## Constructor
+
+### new BoxHelper( object : Object3D, color : number | Color | string )
+
+Constructs a new box helper.
+
+**object**
+
+The 3D object to show the world-axis-aligned bounding box.
+
+**color**
+
+The box's color.
+
+Default is `0xffff00`.
+
+## Properties
+
+### .object : Object3D
+
+The 3D object being visualized.
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+### .setFromObject( object : Object3D ) : BoxHelper
+
+Updates the wireframe box for the passed object.
+
+**object**
+
+The 3D object to create the helper for.
+
+**Returns:** A reference to this instance.
+
+### .update()
+
+Updates the helper's geometry to match the dimensions of the object, including any children.
+
+## Source
+
+[src/helpers/BoxHelper.js](https://github.com/mrdoob/three.js/blob/master/src/helpers/BoxHelper.js)

+ 68 - 0
docs/pages/BoxLineGeometry.html.md

@@ -0,0 +1,68 @@
+*Inheritance: EventDispatcher → BufferGeometry →*
+
+# BoxLineGeometry
+
+A special type of box geometry intended for [LineSegments](LineSegments.html).
+
+## Code Example
+
+```js
+const geometry = new THREE.BoxLineGeometry();
+const material = new THREE.LineBasicMaterial( { color: 0x00ff00 } );
+const lines = new THREE.LineSegments( geometry, material );
+scene.add( lines );
+```
+
+## Import
+
+BoxLineGeometry is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { BoxLineGeometry } from 'three/addons/geometries/BoxLineGeometry.js';
+```
+
+## Constructor
+
+### new BoxLineGeometry( width : number, height : number, depth : number, widthSegments : number, heightSegments : number, depthSegments : number )
+
+Constructs a new box line geometry.
+
+**width**
+
+The width. That is, the length of the edges parallel to the X axis.
+
+Default is `1`.
+
+**height**
+
+The height. That is, the length of the edges parallel to the Y axis.
+
+Default is `1`.
+
+**depth**
+
+The depth. That is, the length of the edges parallel to the Z axis.
+
+Default is `1`.
+
+**widthSegments**
+
+Number of segmented rectangular sections along the width of the sides.
+
+Default is `1`.
+
+**heightSegments**
+
+Number of segmented rectangular sections along the height of the sides.
+
+Default is `1`.
+
+**depthSegments**
+
+Number of segmented rectangular sections along the depth of the sides.
+
+Default is `1`.
+
+## Source
+
+[examples/jsm/geometries/BoxLineGeometry.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/geometries/BoxLineGeometry.js)

+ 433 - 0
docs/pages/BufferAttribute.html.md

@@ -0,0 +1,433 @@
+# BufferAttribute
+
+This class stores data for an attribute (such as vertex positions, face indices, normals, colors, UVs, and any custom attributes ) associated with a geometry, which allows for more efficient passing of data to the GPU.
+
+When working with vector-like data, the `fromBufferAttribute( attribute, index )` helper methods on vector and color class might be helpful. E.g. [Vector3#fromBufferAttribute](Vector3.html#fromBufferAttribute).
+
+## Constructor
+
+### new BufferAttribute( array : TypedArray, itemSize : number, normalized : boolean )
+
+Constructs a new buffer attribute.
+
+**array**
+
+The array holding the attribute data.
+
+**itemSize**
+
+The item size.
+
+**normalized**
+
+Whether the data are normalized or not.
+
+Default is `false`.
+
+## Properties
+
+### .array : TypedArray
+
+The array holding the attribute data. It should have `itemSize * numVertices` elements, where `numVertices` is the number of vertices in the associated geometry.
+
+### .count : number (readonly)
+
+Represents the number of items this buffer attribute stores. It is internally computed by dividing the `array` length by the `itemSize`.
+
+### .gpuType : FloatType | IntType
+
+Configures the bound GPU type for use in shaders.
+
+Note: this only has an effect for integer arrays and is not configurable for float arrays. For lower precision float types, use `Float16BufferAttribute`.
+
+Default is `FloatType`.
+
+### .id : number (readonly)
+
+The ID of the buffer attribute.
+
+### .isBufferAttribute : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .itemSize : number
+
+The number of values of the array that should be associated with a particular vertex. For instance, if this attribute is storing a 3-component vector (such as a position, normal, or color), then the value should be `3`.
+
+### .name : string
+
+The name of the buffer attribute.
+
+### .needsUpdate : number
+
+Flag to indicate that this attribute has changed and should be re-sent to the GPU. Set this to `true` when you modify the value of the array.
+
+Default is `false`.
+
+### .normalized : boolean
+
+Applies to integer data only. Indicates how the underlying data in the buffer maps to the values in the GLSL code. For instance, if `array` is an instance of `UInt16Array`, and `normalized` is `true`, the values `0 - +65535` in the array data will be mapped to `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted to floats unmodified, i.e. `65535` becomes `65535.0f`.
+
+### .updateRanges : Array.<Object>
+
+This can be used to only update some components of stored vectors (for example, just the component related to color). Use the `addUpdateRange()` function to add ranges to this array.
+
+### .usage : StaticDrawUsage | DynamicDrawUsage | StreamDrawUsage | StaticReadUsage | DynamicReadUsage | StreamReadUsage | StaticCopyUsage | DynamicCopyUsage | StreamCopyUsage
+
+Defines the intended usage pattern of the data store for optimization purposes.
+
+Note: After the initial use of a buffer, its usage cannot be changed. Instead, instantiate a new one and set the desired usage before the next render.
+
+Default is `StaticDrawUsage`.
+
+### .version : number
+
+A version number, incremented every time the `needsUpdate` is set to `true`.
+
+## Methods
+
+### .addUpdateRange( start : number, count : number )
+
+Adds a range of data in the data array to be updated on the GPU.
+
+**start**
+
+Position at which to start update.
+
+**count**
+
+The number of components to update.
+
+### .applyMatrix3( m : Matrix3 ) : BufferAttribute
+
+Applies the given 3x3 matrix to the given attribute. Works with item size `2` and `3`.
+
+**m**
+
+The matrix to apply.
+
+**Returns:** A reference to this instance.
+
+### .applyMatrix4( m : Matrix4 ) : BufferAttribute
+
+Applies the given 4x4 matrix to the given attribute. Only works with item size `3`.
+
+**m**
+
+The matrix to apply.
+
+**Returns:** A reference to this instance.
+
+### .applyNormalMatrix( m : Matrix3 ) : BufferAttribute
+
+Applies the given 3x3 normal matrix to the given attribute. Only works with item size `3`.
+
+**m**
+
+The normal matrix to apply.
+
+**Returns:** A reference to this instance.
+
+### .clearUpdateRanges()
+
+Clears the update ranges.
+
+### .clone() : BufferAttribute
+
+Returns a new buffer attribute with copied values from this instance.
+
+**Returns:** A clone of this instance.
+
+### .copy( source : BufferAttribute ) : BufferAttribute
+
+Copies the values of the given buffer attribute to this instance.
+
+**source**
+
+The buffer attribute to copy.
+
+**Returns:** A reference to this instance.
+
+### .copyArray( array : TypedArray | Array ) : BufferAttribute
+
+Copies the given array data into this buffer attribute.
+
+**array**
+
+The array to copy.
+
+**Returns:** A reference to this instance.
+
+### .copyAt( index1 : number, attribute : BufferAttribute, index2 : number ) : BufferAttribute
+
+Copies a vector from the given buffer attribute to this one. The start and destination position in the attribute buffers are represented by the given indices.
+
+**index1**
+
+The destination index into this buffer attribute.
+
+**attribute**
+
+The buffer attribute to copy from.
+
+**index2**
+
+The source index into the given buffer attribute.
+
+**Returns:** A reference to this instance.
+
+### .getComponent( index : number, component : number ) : number
+
+Returns the given component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**component**
+
+The component index.
+
+**Returns:** The returned value.
+
+### .getW( index : number ) : number
+
+Returns the w component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**Returns:** The w component.
+
+### .getX( index : number ) : number
+
+Returns the x component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**Returns:** The x component.
+
+### .getY( index : number ) : number
+
+Returns the y component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**Returns:** The y component.
+
+### .getZ( index : number ) : number
+
+Returns the z component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**Returns:** The z component.
+
+### .onUpload( callback : function ) : BufferAttribute
+
+Sets the given callback function that is executed after the Renderer has transferred the attribute array data to the GPU. Can be used to perform clean-up operations after the upload when attribute data are not needed anymore on the CPU side.
+
+**callback**
+
+The `onUpload()` callback.
+
+**Returns:** A reference to this instance.
+
+### .onUploadCallback()
+
+A callback function that is executed after the renderer has transferred the attribute array data to the GPU.
+
+### .set( value : TypedArray | Array, offset : number ) : BufferAttribute
+
+Sets the given array data in the buffer attribute.
+
+**value**
+
+The array data to set.
+
+**offset**
+
+The offset in this buffer attribute's array.
+
+Default is `0`.
+
+**Returns:** A reference to this instance.
+
+### .setComponent( index : number, component : number, value : number ) : BufferAttribute
+
+Sets the given value to the given component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**component**
+
+The component index.
+
+**value**
+
+The value to set.
+
+**Returns:** A reference to this instance.
+
+### .setUsage( value : StaticDrawUsage | DynamicDrawUsage | StreamDrawUsage | StaticReadUsage | DynamicReadUsage | StreamReadUsage | StaticCopyUsage | DynamicCopyUsage | StreamCopyUsage ) : BufferAttribute
+
+Sets the usage of this buffer attribute.
+
+**value**
+
+The usage to set.
+
+**Returns:** A reference to this buffer attribute.
+
+### .setW( index : number, w : number ) : BufferAttribute
+
+Sets the w component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**w**
+
+The value to set.
+
+**Returns:** A reference to this instance.
+
+### .setX( index : number, x : number ) : BufferAttribute
+
+Sets the x component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**x**
+
+The value to set.
+
+**Returns:** A reference to this instance.
+
+### .setXY( index : number, x : number, y : number ) : BufferAttribute
+
+Sets the x and y component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**x**
+
+The value for the x component to set.
+
+**y**
+
+The value for the y component to set.
+
+**Returns:** A reference to this instance.
+
+### .setXYZ( index : number, x : number, y : number, z : number ) : BufferAttribute
+
+Sets the x, y and z component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**x**
+
+The value for the x component to set.
+
+**y**
+
+The value for the y component to set.
+
+**z**
+
+The value for the z component to set.
+
+**Returns:** A reference to this instance.
+
+### .setXYZW( index : number, x : number, y : number, z : number, w : number ) : BufferAttribute
+
+Sets the x, y, z and w component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**x**
+
+The value for the x component to set.
+
+**y**
+
+The value for the y component to set.
+
+**z**
+
+The value for the z component to set.
+
+**w**
+
+The value for the w component to set.
+
+**Returns:** A reference to this instance.
+
+### .setY( index : number, y : number ) : BufferAttribute
+
+Sets the y component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**y**
+
+The value to set.
+
+**Returns:** A reference to this instance.
+
+### .setZ( index : number, z : number ) : BufferAttribute
+
+Sets the z component of the vector at the given index.
+
+**index**
+
+The index into the buffer attribute.
+
+**z**
+
+The value to set.
+
+**Returns:** A reference to this instance.
+
+### .toJSON() : Object
+
+Serializes the buffer attribute into JSON.
+
+**Returns:** A JSON object representing the serialized buffer attribute.
+
+### .transformDirection( m : Matrix4 ) : BufferAttribute
+
+Applies the given 4x4 matrix to the given attribute. Only works with item size `3` and with direction vectors.
+
+**m**
+
+The matrix to apply.
+
+**Returns:** A reference to this instance.
+
+## Source
+
+[src/core/BufferAttribute.js](https://github.com/mrdoob/three.js/blob/master/src/core/BufferAttribute.js)

+ 187 - 0
docs/pages/BufferAttributeNode.html.md

@@ -0,0 +1,187 @@
+*Inheritance: EventDispatcher → Node → InputNode →*
+
+# BufferAttributeNode
+
+In earlier `three.js` versions it was only possible to define attribute data on geometry level. With `BufferAttributeNode`, it is also possible to do this on the node level.
+
+This new approach is especially interesting when geometry data are generated via compute shaders. The below line converts a storage buffer into an attribute node.
+
+```js
+material.positionNode = positionBuffer.toAttribute();
+```
+
+## Code Example
+
+```js
+const geometry = new THREE.PlaneGeometry();
+const positionAttribute = geometry.getAttribute( 'position' );
+const colors = [];
+for ( let i = 0; i < position.count; i ++ ) {
+	colors.push( 1, 0, 0 );
+}
+material.colorNode = bufferAttribute( new THREE.Float32BufferAttribute( colors, 3 ) );
+```
+
+## Constructor
+
+### new BufferAttributeNode( value : BufferAttribute | InterleavedBuffer | TypedArray, bufferType : string, bufferStride : number, bufferOffset : number )
+
+Constructs a new buffer attribute node.
+
+**value**
+
+The attribute data.
+
+**bufferType**
+
+The buffer type (e.g. `'vec3'`).
+
+Default is `null`.
+
+**bufferStride**
+
+The buffer stride.
+
+Default is `0`.
+
+**bufferOffset**
+
+The buffer offset.
+
+Default is `0`.
+
+## Properties
+
+### .attribute : BufferAttribute
+
+A reference to the buffer attribute.
+
+Default is `null`.
+
+### .bufferOffset : number
+
+The buffer offset.
+
+Default is `0`.
+
+### .bufferStride : number
+
+The buffer stride.
+
+Default is `0`.
+
+### .bufferType : string
+
+The buffer type (e.g. `'vec3'`).
+
+Default is `null`.
+
+### .global : boolean
+
+`BufferAttributeNode` sets this property to `true` by default.
+
+Default is `true`.
+
+**Overrides:** [InputNode#global](InputNode.html#global)
+
+### .instanced : boolean
+
+Whether the attribute is instanced or not.
+
+Default is `false`.
+
+### .isBufferNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .usage : number
+
+The usage property. Set this to `THREE.DynamicDrawUsage` via `.setUsage()`, if you are planning to update the attribute data per frame.
+
+Default is `StaticDrawUsage`.
+
+## Methods
+
+### .generate( builder : NodeBuilder ) : string
+
+Generates the code snippet of the buffer attribute node.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [InputNode#generate](InputNode.html#generate)
+
+**Returns:** The generated code snippet.
+
+### .getHash( builder : NodeBuilder ) : string
+
+This method is overwritten since the attribute data might be shared and thus the hash should be shared as well.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [InputNode#getHash](InputNode.html#getHash)
+
+**Returns:** The hash.
+
+### .getInputType( builder : NodeBuilder ) : string
+
+Overwrites the default implementation to return a fixed value `'bufferAttribute'`.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [InputNode#getInputType](InputNode.html#getInputType)
+
+**Returns:** The input type.
+
+### .getNodeType( builder : NodeBuilder ) : string
+
+This method is overwritten since the node type is inferred from the buffer attribute.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [InputNode#getNodeType](InputNode.html#getNodeType)
+
+**Returns:** The node type.
+
+### .setInstanced( value : boolean ) : BufferAttributeNode
+
+Sets the `instanced` property to the given value.
+
+**value**
+
+The value to set.
+
+**Returns:** A reference to this node.
+
+### .setUsage( value : number ) : BufferAttributeNode
+
+Sets the `usage` property to the given value.
+
+**value**
+
+The usage to set.
+
+**Returns:** A reference to this node.
+
+### .setup( builder : NodeBuilder )
+
+Depending on which value was passed to the node, `setup()` behaves differently. If no instance of `BufferAttribute` was passed, the method creates an internal attribute and configures it respectively.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [InputNode#setup](InputNode.html#setup)
+
+## Source
+
+[src/nodes/accessors/BufferAttributeNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/accessors/BufferAttributeNode.js)

+ 411 - 0
docs/pages/BufferGeometry.html.md

@@ -0,0 +1,411 @@
+*Inheritance: EventDispatcher →*
+
+# BufferGeometry
+
+A representation of mesh, line, or point geometry. Includes vertex positions, face indices, normals, colors, UVs, and custom attributes within buffers, reducing the cost of passing all this data to the GPU.
+
+## Code Example
+
+```js
+const geometry = new THREE.BufferGeometry();
+// create a simple square shape. We duplicate the top left and bottom right
+// vertices because each vertex needs to appear once per triangle.
+const vertices = new Float32Array( [
+	-1.0, -1.0,  1.0, // v0
+	 1.0, -1.0,  1.0, // v1
+	 1.0,  1.0,  1.0, // v2
+	 1.0,  1.0,  1.0, // v3
+	-1.0,  1.0,  1.0, // v4
+	-1.0, -1.0,  1.0  // v5
+] );
+// itemSize = 3 because there are 3 values (components) per vertex
+geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
+const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
+const mesh = new THREE.Mesh( geometry, material );
+```
+
+## Constructor
+
+### new BufferGeometry()
+
+Constructs a new geometry.
+
+## Properties
+
+### .attributes : Object.<string, (BufferAttribute|InterleavedBufferAttribute)>
+
+This dictionary has as id the name of the attribute to be set and as value the buffer attribute to set it to. Rather than accessing this property directly, use `setAttribute()` and `getAttribute()` to access attributes of this geometry.
+
+### .boundingBox : Box3
+
+Bounding box for the geometry which can be calculated with `computeBoundingBox()`.
+
+Default is `null`.
+
+### .boundingSphere : Sphere
+
+Bounding sphere for the geometry which can be calculated with `computeBoundingSphere()`.
+
+Default is `null`.
+
+### .drawRange : Object
+
+Determines the part of the geometry to render. This should not be set directly, instead use `setDrawRange()`.
+
+### .groups : Array.<Object>
+
+Split the geometry into groups, each of which will be rendered in a separate draw call. This allows an array of materials to be used with the geometry.
+
+Use `addGroup()` and `clearGroups()` to edit groups, rather than modifying this array directly.
+
+Every vertex and index must belong to exactly one group — groups must not share vertices or indices, and must not leave vertices or indices unused.
+
+### .id : number (readonly)
+
+The ID of the geometry.
+
+### .index : BufferAttribute
+
+Allows for vertices to be re-used across multiple triangles; this is called using "indexed triangles". Each triangle is associated with the indices of three vertices. This attribute therefore stores the index of each vertex for each triangular face. If this attribute is not set, the renderer assumes that each three contiguous positions represent a single triangle.
+
+Default is `null`.
+
+### .indirect : BufferAttribute
+
+A (storage) buffer attribute which was generated with a compute shader and now defines indirect draw calls.
+
+Can only be used with [WebGPURenderer](WebGPURenderer.html) and a WebGPU backend.
+
+Default is `null`.
+
+### .indirectOffset : number | Array.<number>
+
+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.
+
+Can only be used with [WebGPURenderer](WebGPURenderer.html) and a WebGPU backend.
+
+Default is `0`.
+
+### .isBufferGeometry : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .morphAttributes : Object
+
+This dictionary holds the morph targets of the geometry.
+
+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.
+
+### .morphTargetsRelative : boolean
+
+Used to control the morph target behavior; when set to `true`, the morph target data is treated as relative offsets, rather than as absolute positions/normals.
+
+Default is `false`.
+
+### .name : string
+
+The name of the geometry.
+
+### .userData : Object
+
+An object that can be used to store custom data about the geometry. It should not hold references to functions as these will not be cloned.
+
+### .uuid : string (readonly)
+
+The UUID of the geometry.
+
+## Methods
+
+### .addGroup( start : number, count : number, materialIndex : number )
+
+Adds a group to this geometry.
+
+**start**
+
+The first element in this draw call. That is the first vertex for non-indexed geometry, otherwise the first triangle index.
+
+**count**
+
+Specifies how many vertices (or indices) are part of this group.
+
+**materialIndex**
+
+The material array index to use.
+
+Default is `0`.
+
+### .applyMatrix4( matrix : Matrix4 ) : BufferGeometry
+
+Applies the given 4x4 transformation matrix to the geometry.
+
+**matrix**
+
+The matrix to apply.
+
+**Returns:** A reference to this instance.
+
+### .applyQuaternion( q : Quaternion ) : BufferGeometry
+
+Applies the rotation represented by the Quaternion to the geometry.
+
+**q**
+
+The Quaternion to apply.
+
+**Returns:** A reference to this instance.
+
+### .center() : BufferGeometry
+
+Center the geometry based on its bounding box.
+
+**Returns:** A reference to this instance.
+
+### .clearGroups()
+
+Clears all groups.
+
+### .clone() : BufferGeometry
+
+Returns a new geometry with copied values from this instance.
+
+**Returns:** A clone of this instance.
+
+### .computeBoundingBox()
+
+Computes the bounding box of the geometry, and updates the `boundingBox` member. The bounding box is not computed by the engine; it must be computed by your app. You may need to recompute the bounding box if the geometry vertices are modified.
+
+### .computeBoundingSphere()
+
+Computes the bounding sphere of the geometry, and updates the `boundingSphere` member. The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling. You may need to recompute the bounding sphere if the geometry vertices are modified.
+
+### .computeTangents()
+
+Calculates and adds a tangent attribute to this geometry.
+
+The computation is only supported for indexed geometries and if position, normal, and uv attributes are defined. When using a tangent space normal map, prefer the MikkTSpace algorithm provided by BufferGeometryUtils#computeMikkTSpaceTangents instead.
+
+### .computeVertexNormals()
+
+Computes vertex normals for the given vertex data. For indexed geometries, the method sets each vertex normal to be the average of the face normals of the faces that share that vertex. For non-indexed geometries, vertices are not shared, and the method sets each vertex normal to be the same as the face normal.
+
+### .copy( source : BufferGeometry ) : BufferGeometry
+
+Copies the values of the given geometry to this instance.
+
+**source**
+
+The geometry to copy.
+
+**Returns:** A reference to this instance.
+
+### .deleteAttribute( name : string ) : BufferGeometry
+
+Deletes the attribute for the given name.
+
+**name**
+
+The attribute name to delete.
+
+**Returns:** A reference to this instance.
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+##### Fires:
+
+*   BufferGeometry#event:dispose
+
+### .getAttribute( name : string ) : BufferAttribute | InterleavedBufferAttribute | undefined
+
+Returns the buffer attribute for the given name.
+
+**name**
+
+The attribute name.
+
+**Returns:** The buffer attribute. Returns `undefined` if not attribute has been found.
+
+### .getIndex() : BufferAttribute
+
+Returns the index of this geometry.
+
+**Returns:** The index. Returns `null` if no index is defined.
+
+### .getIndirect() : BufferAttribute
+
+Returns the indirect attribute of this geometry.
+
+**Returns:** The indirect attribute. Returns `null` if no indirect attribute is defined.
+
+### .hasAttribute( name : string ) : boolean
+
+Returns `true` if this geometry has an attribute for the given name.
+
+**name**
+
+The attribute name.
+
+**Returns:** Whether this geometry has an attribute for the given name or not.
+
+### .lookAt( vector : Vector3 ) : BufferGeometry
+
+Rotates the geometry to face a point in 3D space. This is typically done as a one time operation, and not during a loop. Use [Object3D#lookAt](Object3D.html#lookAt) for typical real-time mesh rotation.
+
+**vector**
+
+The target point.
+
+**Returns:** A reference to this instance.
+
+### .normalizeNormals()
+
+Ensures every normal vector in a geometry will have a magnitude of `1`. This will correct lighting on the geometry surfaces.
+
+### .rotateX( angle : number ) : BufferGeometry
+
+Rotates the geometry about the X axis. This is typically done as a one time operation, and not during a loop. Use [Object3D#rotation](Object3D.html#rotation) for typical real-time mesh rotation.
+
+**angle**
+
+The angle in radians.
+
+**Returns:** A reference to this instance.
+
+### .rotateY( angle : number ) : BufferGeometry
+
+Rotates the geometry about the Y axis. This is typically done as a one time operation, and not during a loop. Use [Object3D#rotation](Object3D.html#rotation) for typical real-time mesh rotation.
+
+**angle**
+
+The angle in radians.
+
+**Returns:** A reference to this instance.
+
+### .rotateZ( angle : number ) : BufferGeometry
+
+Rotates the geometry about the Z axis. This is typically done as a one time operation, and not during a loop. Use [Object3D#rotation](Object3D.html#rotation) for typical real-time mesh rotation.
+
+**angle**
+
+The angle in radians.
+
+**Returns:** A reference to this instance.
+
+### .scale( x : number, y : number, z : number ) : BufferGeometry
+
+Scales the geometry. This is typically done as a one time operation, and not during a loop. Use [Object3D#scale](Object3D.html#scale) for typical real-time mesh rotation.
+
+**x**
+
+The x scale.
+
+**y**
+
+The y scale.
+
+**z**
+
+The z scale.
+
+**Returns:** A reference to this instance.
+
+### .setAttribute( name : string, attribute : BufferAttribute | InterleavedBufferAttribute ) : BufferGeometry
+
+Sets the given attribute for the given name.
+
+**name**
+
+The attribute name.
+
+**attribute**
+
+The attribute to set.
+
+**Returns:** A reference to this instance.
+
+### .setDrawRange( start : number, count : number )
+
+Sets the draw range for this geometry.
+
+**start**
+
+The first vertex for non-indexed geometry, otherwise the first triangle index.
+
+**count**
+
+For non-indexed BufferGeometry, `count` is the number of vertices to render. For indexed BufferGeometry, `count` is the number of indices to render.
+
+### .setFromPoints( points : Array.<Vector2> | Array.<Vector3> ) : BufferGeometry
+
+Defines a geometry by creating a `position` attribute based on the given array of points. The array can hold 2D or 3D vectors. When using two-dimensional data, the `z` coordinate for all vertices is set to `0`.
+
+If the method is used with an existing `position` attribute, the vertex data are overwritten with the data from the array. The length of the array must match the vertex count.
+
+**points**
+
+The points.
+
+**Returns:** A reference to this instance.
+
+### .setIndex( index : Array.<number> | BufferAttribute ) : BufferGeometry
+
+Sets the given index to this geometry.
+
+**index**
+
+The index to set.
+
+**Returns:** A reference to this instance.
+
+### .setIndirect( indirect : BufferAttribute, indirectOffset : number | Array.<number> ) : BufferGeometry
+
+Sets the given indirect attribute to this geometry.
+
+**indirect**
+
+The attribute holding indirect draw calls.
+
+**indirectOffset**
+
+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.
+
+Default is `0`.
+
+**Returns:** A reference to this instance.
+
+### .toJSON() : Object
+
+Serializes the geometry into JSON.
+
+**Returns:** A JSON object representing the serialized geometry.
+
+### .toNonIndexed() : BufferGeometry
+
+Return a new non-index version of this indexed geometry. If the geometry is already non-indexed, the method is a NOOP.
+
+**Returns:** The non-indexed version of this indexed geometry.
+
+### .translate( x : number, y : number, z : number ) : BufferGeometry
+
+Translates the geometry. This is typically done as a one time operation, and not during a loop. Use [Object3D#position](Object3D.html#position) for typical real-time mesh rotation.
+
+**x**
+
+The x offset.
+
+**y**
+
+The y offset.
+
+**z**
+
+The z offset.
+
+**Returns:** A reference to this instance.
+
+## Source
+
+[src/core/BufferGeometry.js](https://github.com/mrdoob/three.js/blob/master/src/core/BufferGeometry.js)

+ 65 - 0
docs/pages/BufferGeometryLoader.html.md

@@ -0,0 +1,65 @@
+*Inheritance: Loader →*
+
+# BufferGeometryLoader
+
+Class for loading geometries. The files are internally loaded via [FileLoader](FileLoader.html).
+
+## Code Example
+
+```js
+const loader = new THREE.BufferGeometryLoader();
+const geometry = await loader.loadAsync( 'models/json/pressure.json' );
+const material = new THREE.MeshBasicMaterial( { color: 0xF5F5F5 } );
+const object = new THREE.Mesh( geometry, material );
+scene.add( object );
+```
+
+## Constructor
+
+### new BufferGeometryLoader( manager : LoadingManager )
+
+Constructs a new geometry loader.
+
+**manager**
+
+The loading manager.
+
+## Methods
+
+### .load( url : string, onLoad : function, onProgress : onProgressCallback, onError : onErrorCallback )
+
+Starts loading from the given URL and pass the loaded geometry to the `onLoad()` callback.
+
+**url**
+
+The path/URL of the file to be loaded. This can also be a data URI.
+
+**onLoad**
+
+Executed when the loading process has been finished.
+
+**onProgress**
+
+Executed while the loading is in progress.
+
+**onError**
+
+Executed when errors occur.
+
+**Overrides:** [Loader#load](Loader.html#load)
+
+### .parse( json : Object ) : BufferGeometry
+
+Parses the given JSON object and returns a geometry.
+
+**json**
+
+The serialized geometry.
+
+**Overrides:** [Loader#parse](Loader.html#parse)
+
+**Returns:** The parsed geometry.
+
+## Source
+
+[src/loaders/BufferGeometryLoader.js](https://github.com/mrdoob/three.js/blob/master/src/loaders/BufferGeometryLoader.js)

+ 102 - 0
docs/pages/BufferNode.html.md

@@ -0,0 +1,102 @@
+*Inheritance: EventDispatcher → Node → InputNode → UniformNode →*
+
+# BufferNode
+
+A special type of uniform node which represents array-like data as uniform buffers. The access usually happens via `element()` which returns an instance of [ArrayElementNode](ArrayElementNode.html). For example:
+
+In general, it is recommended to use the more managed [UniformArrayNode](UniformArrayNode.html) since it handles more input types and automatically cares about buffer paddings.
+
+## Code Example
+
+```js
+const bufferNode = buffer( array, 'mat4', count );
+const matrixNode = bufferNode.element( index ); // access a matrix from the buffer
+```
+
+## Constructor
+
+### new BufferNode( value : Array.<number>, bufferType : string, bufferCount : number )
+
+Constructs a new buffer node.
+
+**value**
+
+Array-like buffer data.
+
+**bufferType**
+
+The data type of the buffer.
+
+**bufferCount**
+
+The count of buffer elements.
+
+Default is `0`.
+
+## Properties
+
+### .bufferCount : number
+
+The uniform node that holds the value of the reference node.
+
+Default is `0`.
+
+### .bufferType : string
+
+The data type of the buffer.
+
+### .isBufferNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .updateRanges : Array.<{start: number, count: number}>
+
+An array of update ranges.
+
+## Methods
+
+### .addUpdateRange( start : number, count : number )
+
+Adds a range of data in the data array to be updated on the GPU.
+
+**start**
+
+Position at which to start update.
+
+**count**
+
+The number of components to update.
+
+### .clearUpdateRanges()
+
+Clears the update ranges.
+
+### .getElementType( builder : NodeBuilder ) : string
+
+The data type of the buffer elements.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [UniformNode#getElementType](UniformNode.html#getElementType)
+
+**Returns:** The element type.
+
+### .getInputType( builder : NodeBuilder ) : string
+
+Overwrites the default implementation to return a fixed value `'buffer'`.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [UniformNode#getInputType](UniformNode.html#getInputType)
+
+**Returns:** The input type.
+
+## Source
+
+[src/nodes/accessors/BufferNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/accessors/BufferNode.js)

+ 47 - 0
docs/pages/BuiltinNode.html.md

@@ -0,0 +1,47 @@
+*Inheritance: EventDispatcher → Node →*
+
+# BuiltinNode
+
+The node allows to set values for built-in shader variables. That is required for features like hardware-accelerated vertex clipping.
+
+## Constructor
+
+### new BuiltinNode( name : string )
+
+Constructs a new builtin node.
+
+**name**
+
+The name of the built-in shader variable.
+
+## Properties
+
+### .isBuiltinNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .name : string
+
+The name of the built-in shader variable.
+
+**Overrides:** [Node#name](Node.html#name)
+
+## Methods
+
+### .generate( builder : NodeBuilder ) : string
+
+Generates the code snippet of the builtin node.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [Node#generate](Node.html#generate)
+
+**Returns:** The generated code snippet.
+
+## Source
+
+[src/nodes/accessors/BuiltinNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/accessors/BuiltinNode.js)

+ 43 - 0
docs/pages/BumpMapNode.html.md

@@ -0,0 +1,43 @@
+*Inheritance: EventDispatcher → Node → TempNode →*
+
+# BumpMapNode
+
+This class can be used for applying bump maps to materials.
+
+## Code Example
+
+```js
+material.normalNode = bumpMap( texture( bumpTex ) );
+```
+
+## Constructor
+
+### new BumpMapNode( textureNode : Node.<float>, scaleNode : Node.<float> )
+
+Constructs a new bump map node.
+
+**textureNode**
+
+Represents the bump map data.
+
+**scaleNode**
+
+Controls the intensity of the bump effect.
+
+Default is `null`.
+
+## Properties
+
+### .scaleNode : Node.<float>
+
+Controls the intensity of the bump effect.
+
+Default is `null`.
+
+### .textureNode : Node.<float>
+
+Represents the bump map data.
+
+## Source
+
+[src/nodes/display/BumpMapNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/display/BumpMapNode.js)

+ 53 - 0
docs/pages/BundleGroup.html.md

@@ -0,0 +1,53 @@
+*Inheritance: EventDispatcher → Object3D → Group →*
+
+# BundleGroup
+
+A specialized group which enables applications access to the Render Bundle API of WebGPU. The group with all its descendant nodes are considered as one render bundle and processed as such by the renderer.
+
+This module is only fully supported by `WebGPURenderer` with a WebGPU backend. With a WebGL backend, the group can technically be rendered but without any performance improvements.
+
+## Constructor
+
+### new BundleGroup()
+
+Constructs a new bundle group.
+
+## Properties
+
+### .isBundleGroup : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .needsUpdate : boolean
+
+Set this property to `true` when the bundle group has changed.
+
+Default is `false`.
+
+### .static : boolean
+
+Whether the bundle is static or not. When set to `true`, the structure is assumed to be static and does not change. E.g. no new objects are added to the group
+
+If a change is required, an update can still be forced by setting the `needsUpdate` flag to `true`.
+
+Default is `true`.
+
+### .type : string (readonly)
+
+This property is only relevant for detecting types during serialization/deserialization. It should always match the class name.
+
+Default is `'BundleGroup'`.
+
+**Overrides:** [Group#type](Group.html#type)
+
+### .version : number (readonly)
+
+The bundle group's version.
+
+Default is `0`.
+
+## Source
+
+[src/renderers/common/BundleGroup.js](https://github.com/mrdoob/three.js/blob/master/src/renderers/common/BundleGroup.js)

+ 45 - 0
docs/pages/BypassNode.html.md

@@ -0,0 +1,45 @@
+*Inheritance: EventDispatcher → Node →*
+
+# BypassNode
+
+The class generates the code of a given node but returns another node in the output. This can be used to call a method or node that does not return a value, i.e. type `void` on an input where returning a value is required. Example:
+
+## Code Example
+
+```js
+material.colorNode = myColor.bypass( runVoidFn() )
+```
+
+## Constructor
+
+### new BypassNode( outputNode : Node, callNode : Node )
+
+Constructs a new bypass node.
+
+**outputNode**
+
+The output node.
+
+**callNode**
+
+The call node.
+
+## Properties
+
+### .callNode : Node
+
+The call node.
+
+### .isBypassNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .outputNode : Node
+
+The output node.
+
+## Source
+
+[src/nodes/core/BypassNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/core/BypassNode.js)

+ 73 - 0
docs/pages/CCDIKHelper.html.md

@@ -0,0 +1,73 @@
+*Inheritance: EventDispatcher → Object3D →*
+
+# CCDIKHelper
+
+Helper for visualizing IK bones.
+
+## Import
+
+CCDIKHelper is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CCDIKHelper } from 'three/addons/animation/CCDIKSolver.js';
+```
+
+## Constructor
+
+### new CCDIKHelper( mesh : SkinnedMesh, iks : Array.<CCDIKSolver~IK>, sphereSize : number )
+
+**mesh**
+
+The skinned mesh.
+
+**iks**
+
+The IK objects.
+
+Default is `[]`.
+
+**sphereSize**
+
+The sphere size.
+
+Default is `0.25`.
+
+## Properties
+
+### .effectorSphereMaterial : MeshBasicMaterial
+
+The material for the effector spheres.
+
+### .iks : Array.<CCDIKSolver~IK>
+
+The IK objects.
+
+### .lineMaterial : LineBasicMaterial
+
+A global line material.
+
+### .linkSphereMaterial : MeshBasicMaterial
+
+The material for the link spheres.
+
+### .root : SkinnedMesh
+
+The skinned mesh this helper refers to.
+
+### .sphereGeometry : SkinnedMesh
+
+The helpers sphere geometry.
+
+### .targetSphereMaterial : MeshBasicMaterial
+
+The material for the target spheres.
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+## Source
+
+[examples/jsm/animation/CCDIKSolver.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/animation/CCDIKSolver.js)

+ 155 - 0
docs/pages/CCDIKSolver.html.md

@@ -0,0 +1,155 @@
+# CCDIKSolver
+
+This class solves the Inverse Kinematics Problem with a [CCD Algorithm](https://web.archive.org/web/20221206080850/https://sites.google.com/site/auraliusproject/ccd-algorithm).
+
+`CCDIKSolver` is designed to work with instances of [SkinnedMesh](SkinnedMesh.html).
+
+## Import
+
+CCDIKSolver is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CCDIKSolver } from 'three/addons/animation/CCDIKSolver.js';
+```
+
+## Constructor
+
+### new CCDIKSolver( mesh : SkinnedMesh, iks : Array.<CCDIKSolver~IK> )
+
+**mesh**
+
+The skinned mesh.
+
+**iks**
+
+The IK objects.
+
+Default is `[]`.
+
+## Properties
+
+### .iks : SkinnedMesh
+
+The IK objects.
+
+### .mesh : SkinnedMesh
+
+The skinned mesh.
+
+## Methods
+
+### .createHelper( sphereSize : number ) : CCDIKHelper
+
+Creates a helper for visualizing the CCDIK.
+
+**sphereSize**
+
+The sphere size.
+
+**Returns:** The created helper.
+
+### .update( globalBlendFactor : number ) : CCDIKSolver
+
+Updates all IK bones by solving the CCD algorithm.
+
+**globalBlendFactor**
+
+Blend factor applied if an IK chain doesn't have its own .blendFactor.
+
+Default is `1.0`.
+
+**Returns:** A reference to this instance.
+
+### .updateOne( ik : CCDIKSolver~IK, overrideBlend : number ) : CCDIKSolver
+
+Updates one IK bone solving the CCD algorithm.
+
+**ik**
+
+The IK to update.
+
+**overrideBlend**
+
+If the IK object does not define `blendFactor`, this value is used.
+
+Default is `1.0`.
+
+**Returns:** A reference to this instance.
+
+## Type Definitions
+
+### .BoneLink
+
+This type represents bone links.
+
+**index**  
+number
+
+The index of a linked bone which refers to a bone in the `Skeleton.bones` array.
+
+**limitation**  
+number
+
+Rotation axis.
+
+**rotationMin**  
+number
+
+Rotation minimum limit.
+
+**rotationMax**  
+number
+
+Rotation maximum limit.
+
+**enabled**  
+boolean
+
+Whether the link is enabled or not.
+
+Default is `true`.
+
+### .IK
+
+This type represents IK configuration objects.
+
+**target**  
+number
+
+The target bone index which refers to a bone in the `Skeleton.bones` array.
+
+**effector**  
+number
+
+The effector bone index which refers to a bone in the `Skeleton.bones` array.
+
+**links**  
+Array.<[CCDIKSolver~BoneLink](CCDIKSolver.html#~BoneLink)\>
+
+An array of bone links.
+
+**iteration**  
+number
+
+Iteration number of calculation. Smaller is faster but less precise.
+
+Default is `1`.
+
+**minAngle**  
+number
+
+Minimum rotation angle in a step in radians.
+
+**maxAngle**  
+number
+
+Minimum rotation angle in a step in radians.
+
+**blendFactor**  
+number
+
+The blend factor.
+
+## Source
+
+[examples/jsm/animation/CCDIKSolver.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/animation/CCDIKSolver.js)

+ 244 - 0
docs/pages/CSM.html.md

@@ -0,0 +1,244 @@
+# CSM
+
+An implementation of Cascade Shadow Maps (CSM).
+
+This module can only be used with [WebGLRenderer](WebGLRenderer.html). When using [WebGPURenderer](WebGPURenderer.html), use [CSMShadowNode](CSMShadowNode.html) instead.
+
+## Import
+
+CSM is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CSM } from 'three/addons/csm/CSM.js';
+```
+
+## Constructor
+
+### new CSM( data : CSM~Data )
+
+Constructs a new CSM instance.
+
+**data**
+
+The CSM data.
+
+## Classes
+
+[CSM](CSM.html)
+
+## Properties
+
+### .breaks : Array.<number>
+
+An array of numbers in the range `[0,1]` the defines how the mainCSM frustum should be split up.
+
+### .camera : Camera
+
+The scene's camera.
+
+### .cascades : number
+
+The number of cascades.
+
+Default is `3`.
+
+### .customSplitsCallback : function
+
+Custom split callback when using `mode='custom'`.
+
+### .fade : boolean
+
+Whether to fade between cascades or not.
+
+Default is `false`.
+
+### .frustums : Array.<CSMFrustum>
+
+An array of frustums representing the cascades.
+
+### .lightDirection : Vector3
+
+The light direction.
+
+### .lightFar : number
+
+The light far value.
+
+Default is `2000`.
+
+### .lightIntensity : number
+
+The light intensity.
+
+Default is `3`.
+
+### .lightMargin : number
+
+The light margin.
+
+Default is `200`.
+
+### .lightNear : number
+
+The light near value.
+
+Default is `1`.
+
+### .lights : Array.<DirectionalLight>
+
+An array of directional lights which cast the shadows for the different cascades. There is one directional light for each cascade.
+
+### .mainFrustum : CSMFrustum
+
+The main frustum.
+
+### .maxFar : number
+
+The maximum far value.
+
+Default is `100000`.
+
+### .mode : 'practical' | 'uniform' | 'logarithmic' | 'custom'
+
+The frustum split mode.
+
+Default is `'practical'`.
+
+### .parent : Object3D
+
+The parent object, usually the scene.
+
+### .shaders : Map.<Material, Object>
+
+A Map holding enhanced material shaders.
+
+### .shadowBias : number
+
+The shadow bias.
+
+Default is `0.000001`.
+
+### .shadowMapSize : number
+
+The shadow map size.
+
+Default is `2048`.
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+### .remove()
+
+Applications must call this method when they remove the CSM usage from their scene.
+
+### .setupMaterial( material : Material )
+
+Applications must call this method for all materials that should be affected by CSM.
+
+**material**
+
+The material to setup for CSM support.
+
+### .update()
+
+Updates the CSM. This method must be called in your animation loop before calling `renderer.render()`.
+
+### .updateFrustums()
+
+Applications must call this method every time they change camera or CSM settings.
+
+## Type Definitions
+
+### .Data
+
+Constructor data of `CSM`.
+
+**camera**  
+[Camera](Camera.html)
+
+The scene's camera.
+
+**parent**  
+[Object3D](Object3D.html)
+
+The parent object, usually the scene.
+
+**cascades**  
+number
+
+The number of cascades.
+
+Default is `3`.
+
+**maxFar**  
+number
+
+The maximum far value.
+
+Default is `100000`.
+
+**mode**  
+'practical' | 'uniform' | 'logarithmic' | 'custom'
+
+The frustum split mode.
+
+Default is `'practical'`.
+
+**customSplitsCallback**  
+function
+
+Custom split callback when using `mode='custom'`.
+
+**shadowMapSize**  
+number
+
+The shadow map size.
+
+Default is `2048`.
+
+**shadowBias**  
+number
+
+The shadow bias.
+
+Default is `0.000001`.
+
+**lightDirection**  
+[Vector3](Vector3.html)
+
+The light direction.
+
+**lightIntensity**  
+number
+
+The light intensity.
+
+Default is `3`.
+
+**lightNear**  
+number
+
+The light near value.
+
+Default is `1`.
+
+**lightNear**  
+number
+
+The light far value.
+
+Default is `2000`.
+
+**lightMargin**  
+number
+
+The light margin.
+
+Default is `200`.
+
+## Source
+
+[examples/jsm/csm/CSM.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/csm/CSM.js)

+ 96 - 0
docs/pages/CSMFrustum.html.md

@@ -0,0 +1,96 @@
+# CSMFrustum
+
+Represents the frustum of a CSM instance.
+
+## Import
+
+CSMFrustum is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CSMFrustum } from 'three/addons/csm/CSMFrustum.js';
+```
+
+## Constructor
+
+### new CSMFrustum( data : CSMFrustum~Data )
+
+Constructs a new CSM frustum.
+
+**data**
+
+The CSM data.
+
+## Properties
+
+### .vertices : Object
+
+An object representing the vertices of the near and far plane in view space.
+
+### .zNear : number
+
+The zNear value. This value depends on whether the CSM is used with WebGL or WebGPU. Both API use different conventions for their projection matrices.
+
+## Methods
+
+### .setFromProjectionMatrix( projectionMatrix : Matrix4, maxFar : number ) : Object
+
+Setups this CSM frustum from the given projection matrix and max far value.
+
+**projectionMatrix**
+
+The projection matrix, usually of the scene's camera.
+
+**maxFar**
+
+The maximum far value.
+
+**Returns:** An object representing the vertices of the near and far plane in view space.
+
+### .split( breaks : Array.<number>, target : Array.<CSMFrustum> )
+
+Splits the CSM frustum by the given array. The new CSM frustum are pushed into the given target array.
+
+**breaks**
+
+An array of numbers in the range `[0,1]` the defines how the CSM frustum should be split up.
+
+**target**
+
+The target array that holds the new CSM frustums.
+
+### .toSpace( cameraMatrix : Matrix4, target : CSMFrustum )
+
+Transforms the given target CSM frustum into the different coordinate system defined by the given camera matrix.
+
+**cameraMatrix**
+
+The matrix that defines the new coordinate system.
+
+**target**
+
+The CSM to convert.
+
+## Type Definitions
+
+### .Data
+
+Constructor data of `CSMFrustum`.
+
+**webGL**  
+boolean
+
+Whether this CSM frustum is used with WebGL or WebGPU.
+
+**projectionMatrix**  
+[Matrix4](Matrix4.html)
+
+A projection matrix usually of the scene's camera.
+
+**maxFar**  
+number
+
+The maximum far value.
+
+## Source
+
+[examples/jsm/csm/CSMFrustum.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/csm/CSMFrustum.js)

+ 65 - 0
docs/pages/CSMHelper.html.md

@@ -0,0 +1,65 @@
+*Inheritance: EventDispatcher → Object3D → Group →*
+
+# CSMHelper
+
+A helper for visualizing the cascades of a CSM instance.
+
+## Import
+
+CSMHelper is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CSMHelper } from 'three/addons/csm/CSMHelper.js';
+```
+
+## Constructor
+
+### new CSMHelper( csm : CSM | CSMShadowNode )
+
+Constructs a new CSM helper.
+
+**csm**
+
+The CSM instance to visualize.
+
+## Properties
+
+### .csm : CSM | CSMShadowNode
+
+The CSM instance to visualize.
+
+### .displayFrustum : boolean
+
+Whether to display the CSM frustum or not.
+
+Default is `true`.
+
+### .displayPlanes : boolean
+
+Whether to display the cascade planes or not.
+
+Default is `true`.
+
+### .displayShadowBounds : boolean
+
+Whether to display the shadow bounds or not.
+
+Default is `true`.
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+### .update()
+
+Updates the helper. This method should be called in the app's animation loop.
+
+### .updateVisibility()
+
+This method must be called if one of the `display*` properties is changed at runtime.
+
+## Source
+
+[examples/jsm/csm/CSMHelper.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/csm/CSMHelper.js)

+ 146 - 0
docs/pages/CSMShadowNode.html.md

@@ -0,0 +1,146 @@
+*Inheritance: EventDispatcher → Node → ShadowBaseNode →*
+
+# CSMShadowNode
+
+An implementation of Cascade Shadow Maps (CSM).
+
+This module can only be used with [WebGPURenderer](WebGPURenderer.html). When using [WebGLRenderer](WebGLRenderer.html), use [CSM](CSM.html) instead.
+
+## Import
+
+CSMShadowNode is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CSMShadowNode } from 'three/addons/csm/CSMShadowNode.js';
+```
+
+## Constructor
+
+### new CSMShadowNode( light : DirectionalLight, data : CSMShadowNode~Data )
+
+Constructs a new CSM shadow node.
+
+**light**
+
+The CSM light.
+
+**data**
+
+The CSM data.
+
+Default is `{}`.
+
+## Properties
+
+### .breaks : Array.<number>
+
+An array of numbers in the range `[0,1]` the defines how the mainCSM frustum should be split up.
+
+### .camera : Camera
+
+The scene's camera.
+
+Default is `null`.
+
+### .cascades : number
+
+The number of cascades.
+
+Default is `3`.
+
+### .customSplitsCallback : function
+
+Custom split callback when using `mode='custom'`.
+
+### .fade : boolean
+
+Whether to fade between cascades or not.
+
+Default is `false`.
+
+### .frustums : Array.<CSMFrustum>
+
+An array of frustums representing the cascades.
+
+### .lightMargin : number
+
+The light margin.
+
+Default is `200`.
+
+### .lights : Array.<DirectionalLight>
+
+An array of directional lights which cast the shadows for the different cascades. There is one directional light for each cascade.
+
+### .mainFrustum : CSMFrustum
+
+The main frustum.
+
+Default is `null`.
+
+### .maxFar : number
+
+The maximum far value.
+
+Default is `100000`.
+
+### .mode : 'practical' | 'uniform' | 'logarithmic' | 'custom'
+
+The frustum split mode.
+
+Default is `'practical'`.
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+**Overrides:** [ShadowBaseNode#dispose](ShadowBaseNode.html#dispose)
+
+### .updateFrustums()
+
+Applications must call this method every time they change camera or CSM settings.
+
+## Type Definitions
+
+### .Data
+
+Constructor data of `CSMShadowNode`.
+
+**cascades**  
+number
+
+The number of cascades.
+
+Default is `3`.
+
+**maxFar**  
+number
+
+The maximum far value.
+
+Default is `100000`.
+
+**mode**  
+'practical' | 'uniform' | 'logarithmic' | 'custom'
+
+The frustum split mode.
+
+Default is `'practical'`.
+
+**customSplitsCallback**  
+function
+
+Custom split callback when using `mode='custom'`.
+
+**lightMargin**  
+number
+
+The light margin.
+
+Default is `200`.
+
+## Source
+
+[examples/jsm/csm/CSMShadowNode.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/csm/CSMShadowNode.js)

+ 47 - 0
docs/pages/CSS2DObject.html.md

@@ -0,0 +1,47 @@
+*Inheritance: EventDispatcher → Object3D →*
+
+# CSS2DObject
+
+The only type of 3D object that is supported by [CSS2DRenderer](CSS2DRenderer.html).
+
+## Import
+
+CSS2DObject is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js';
+```
+
+## Constructor
+
+### new CSS2DObject( element : HTMLElement )
+
+Constructs a new CSS2D object.
+
+**element**
+
+The DOM element.
+
+## Properties
+
+### .center : Vector2
+
+The 3D objects center point. `( 0, 0 )` is the lower left, `( 1, 1 )` is the top right.
+
+Default is `(0.5,0.5)`.
+
+### .element : HTMLElement (readonly)
+
+The DOM element which defines the appearance of this 3D object.
+
+Default is `true`.
+
+### .isCSS2DObject : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+## Source
+
+[examples/jsm/renderers/CSS2DRenderer.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/renderers/CSS2DRenderer.js)

+ 84 - 0
docs/pages/CSS2DRenderer.html.md

@@ -0,0 +1,84 @@
+# CSS2DRenderer
+
+This renderer is a simplified version of [CSS3DRenderer](CSS3DRenderer.html). The only transformation that is supported is translation.
+
+The renderer is very useful if you want to combine HTML based labels with 3D objects. Here too, the respective DOM elements are wrapped into an instance of [CSS2DObject](CSS2DObject.html) and added to the scene graph. All other types of renderable 3D objects (like meshes or point clouds) are ignored.
+
+`CSS2DRenderer` only supports 100% browser and display zoom.
+
+## Import
+
+CSS2DRenderer is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CSS2DRenderer } from 'three/addons/renderers/CSS2DRenderer.js';
+```
+
+## Constructor
+
+### new CSS2DRenderer( parameters : CSS2DRenderer~Parameters )
+
+Constructs a new CSS2D renderer.
+
+**parameters**
+
+The parameters.
+
+## Properties
+
+### .domElement : HTMLElement
+
+The DOM where the renderer appends its child-elements.
+
+### .sortObjects : boolean
+
+Controls whether the renderer assigns `z-index` values to CSS2DObject DOM elements. If set to `true`, z-index values are assigned first based on the `renderOrder` and secondly - the distance to the camera. If set to `false`, no z-index values are assigned.
+
+Default is `true`.
+
+## Methods
+
+### .getSize() : Object
+
+Returns an object containing the width and height of the renderer.
+
+**Returns:** The size of the renderer.
+
+### .render( scene : Object3D, camera : Camera )
+
+Renders the given scene using the given camera.
+
+**scene**
+
+A scene or any other type of 3D object.
+
+**camera**
+
+The camera.
+
+### .setSize( width : number, height : number )
+
+Resizes the renderer to the given width and height.
+
+**width**
+
+The width of the renderer.
+
+**height**
+
+The height of the renderer.
+
+## Type Definitions
+
+### .Parameters
+
+Constructor parameters of `CSS2DRenderer`.
+
+**element**  
+HTMLElement
+
+A DOM element where the renderer appends its child-elements. If not passed in here, a new div element will be created.
+
+## Source
+
+[examples/jsm/renderers/CSS2DRenderer.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/renderers/CSS2DRenderer.js)

+ 41 - 0
docs/pages/CSS3DObject.html.md

@@ -0,0 +1,41 @@
+*Inheritance: EventDispatcher → Object3D →*
+
+# CSS3DObject
+
+The base 3D object that is supported by [CSS3DRenderer](CSS3DRenderer.html).
+
+## Import
+
+CSS3DObject is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CSS3DObject } from 'three/addons/renderers/CSS3DRenderer.js';
+```
+
+## Constructor
+
+### new CSS3DObject( element : HTMLElement )
+
+Constructs a new CSS3D object.
+
+**element**
+
+The DOM element.
+
+## Properties
+
+### .element : HTMLElement (readonly)
+
+The DOM element which defines the appearance of this 3D object.
+
+Default is `true`.
+
+### .isCSS3DObject : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+## Source
+
+[examples/jsm/renderers/CSS3DRenderer.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/renderers/CSS3DRenderer.js)

+ 82 - 0
docs/pages/CSS3DRenderer.html.md

@@ -0,0 +1,82 @@
+# CSS3DRenderer
+
+This renderer can be used to apply hierarchical 3D transformations to DOM elements via the CSS3 [transform](https://www.w3schools.com/cssref/css3_pr_transform.asp) property. `CSS3DRenderer` is particularly interesting if you want to apply 3D effects to a website without canvas based rendering. It can also be used in order to combine DOM elements with WebGLcontent.
+
+There are, however, some important limitations:
+
+*   It's not possible to use the material system of _three.js_.
+*   It's also not possible to use geometries.
+*   The renderer only supports 100% browser and display zoom.
+
+So `CSS3DRenderer` is just focused on ordinary DOM elements. These elements are wrapped into special 3D objects ([CSS3DObject](CSS3DObject.html) or [CSS3DSprite](CSS3DSprite.html)) and then added to the scene graph.
+
+## Import
+
+CSS3DRenderer is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CSS3DRenderer } from 'three/addons/renderers/CSS3DRenderer.js';
+```
+
+## Constructor
+
+### new CSS3DRenderer( parameters : CSS3DRenderer~Parameters )
+
+Constructs a new CSS3D renderer.
+
+**parameters**
+
+The parameters.
+
+## Properties
+
+### .domElement : HTMLElement
+
+The DOM where the renderer appends its child-elements.
+
+## Methods
+
+### .getSize() : Object
+
+Returns an object containing the width and height of the renderer.
+
+**Returns:** The size of the renderer.
+
+### .render( scene : Object3D, camera : Camera )
+
+Renders the given scene using the given camera.
+
+**scene**
+
+A scene or any other type of 3D object.
+
+**camera**
+
+The camera.
+
+### .setSize( width : number, height : number )
+
+Resizes the renderer to the given width and height.
+
+**width**
+
+The width of the renderer.
+
+**height**
+
+The height of the renderer.
+
+## Type Definitions
+
+### .Parameters
+
+Constructor parameters of `CSS3DRenderer`.
+
+**element**  
+HTMLElement
+
+A DOM element where the renderer appends its child-elements. If not passed in here, a new div element will be created.
+
+## Source
+
+[examples/jsm/renderers/CSS3DRenderer.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/renderers/CSS3DRenderer.js)

+ 41 - 0
docs/pages/CSS3DSprite.html.md

@@ -0,0 +1,41 @@
+*Inheritance: EventDispatcher → Object3D → CSS3DObject →*
+
+# CSS3DSprite
+
+A specialized version of [CSS3DObject](CSS3DObject.html) that represents DOM elements as sprites.
+
+## Import
+
+CSS3DSprite is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CSS3DSprite } from 'three/addons/renderers/CSS3DRenderer.js';
+```
+
+## Constructor
+
+### new CSS3DSprite( element : HTMLElement )
+
+Constructs a new CSS3D sprite object.
+
+**element**
+
+The DOM element.
+
+## Properties
+
+### .isCSS3DSprite : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .rotation2D : number
+
+The sprite's rotation in radians.
+
+Default is `0`.
+
+## Source
+
+[examples/jsm/renderers/CSS3DRenderer.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/renderers/CSS3DRenderer.js)

+ 55 - 0
docs/pages/Cache.html.md

@@ -0,0 +1,55 @@
+# Cache
+
+A simple caching system, used internally by [FileLoader](FileLoader.html). To enable caching across all loaders that use [FileLoader](FileLoader.html), add `THREE.Cache.enabled = true.` once in your app.
+
+## Properties
+
+### .enabled : boolean
+
+Whether caching is enabled or not.
+
+Default is `false`.
+
+### .files : Object.<string, Object>
+
+A dictionary that holds cached files.
+
+## Static Methods
+
+### .add( key : string, file : Object )
+
+Adds a cache entry with a key to reference the file. If this key already holds a file, it is overwritten.
+
+**key**
+
+The key to reference the cached file.
+
+**file**
+
+The file to be cached.
+
+### .clear()
+
+Remove all values from the cache.
+
+### .get( key : string ) : Object | undefined
+
+Gets the cached value for the given key.
+
+**key**
+
+The key to reference the cached file.
+
+**Returns:** The cached file. If the key does not exist `undefined` is returned.
+
+### .remove( key : string )
+
+Removes the cached file associated with the given key.
+
+**key**
+
+The key to reference the cached file.
+
+## Source
+
+[src/loaders/Cache.js](https://github.com/mrdoob/three.js/blob/master/src/loaders/Cache.js)

+ 61 - 0
docs/pages/Camera.html.md

@@ -0,0 +1,61 @@
+*Inheritance: EventDispatcher → Object3D →*
+
+# Camera
+
+Abstract base class for cameras. This class should always be inherited when you build a new camera.
+
+## Constructor
+
+### new Camera() (abstract)
+
+Constructs a new camera.
+
+## Properties
+
+### .coordinateSystem : WebGLCoordinateSystem | WebGPUCoordinateSystem
+
+The coordinate system in which the camera is used.
+
+### .isCamera : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .matrixWorldInverse : Matrix4
+
+The inverse of the camera's world matrix.
+
+### .projectionMatrix : Matrix4
+
+The camera's projection matrix.
+
+### .projectionMatrixInverse : Matrix4
+
+The inverse of the camera's projection matrix.
+
+### .reversedDepth : boolean
+
+The flag that indicates whether the camera uses a reversed depth buffer.
+
+Default is `false`.
+
+## Methods
+
+### .getWorldDirection( target : Vector3 ) : Vector3
+
+Returns a vector representing the ("look") direction of the 3D object in world space.
+
+This method is overwritten since cameras have a different forward vector compared to other 3D objects. A camera looks down its local, negative z-axis by default.
+
+**target**
+
+The target vector the result is stored to.
+
+**Overrides:** [Object3D#getWorldDirection](Object3D.html#getWorldDirection)
+
+**Returns:** The 3D object's direction in world space.
+
+## Source
+
+[src/cameras/Camera.js](https://github.com/mrdoob/three.js/blob/master/src/cameras/Camera.js)

+ 77 - 0
docs/pages/CameraHelper.html.md

@@ -0,0 +1,77 @@
+*Inheritance: EventDispatcher → Object3D → Line → LineSegments →*
+
+# CameraHelper
+
+This helps with visualizing what a camera contains in its frustum. It visualizes the frustum of a camera using a line segments.
+
+Based on frustum visualization in [lightgl.js shadowmap example](https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html).
+
+`CameraHelper` must be a child of the scene.
+
+## Code Example
+
+```js
+const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
+const helper = new THREE.CameraHelper( camera );
+scene.add( helper );
+```
+
+## Constructor
+
+### new CameraHelper( camera : Camera )
+
+Constructs a new arrow helper.
+
+**camera**
+
+The camera to visualize.
+
+## Properties
+
+### .camera : Camera
+
+The camera being visualized.
+
+### .pointMap : Object.<string, Array.<number>>
+
+This contains the points used to visualize the camera.
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+### .setColors( frustum : Color, cone : Color, up : Color, target : Color, cross : Color ) : CameraHelper
+
+Defines the colors of the helper.
+
+**frustum**
+
+The frustum line color.
+
+**cone**
+
+The cone line color.
+
+**up**
+
+The up line color.
+
+**target**
+
+The target line color.
+
+**cross**
+
+The cross line color.
+
+**Returns:** A reference to this helper.
+
+### .update()
+
+Updates the helper based on the projection matrix of the camera.
+
+## Source
+
+[src/helpers/CameraHelper.js](https://github.com/mrdoob/three.js/blob/master/src/helpers/CameraHelper.js)

+ 204 - 0
docs/pages/CanvasTarget.html.md

@@ -0,0 +1,204 @@
+*Inheritance: EventDispatcher →*
+
+# CanvasTarget
+
+CanvasTarget is a class that represents the final output destination of the renderer.
+
+## Constructor
+
+### new CanvasTarget( domElement : HTMLCanvasElement | OffscreenCanvas )
+
+Constructs a new CanvasTarget.
+
+**domElement**
+
+The canvas element to render to.
+
+## Properties
+
+### .colorTexture : FramebufferTexture
+
+The color texture of the default framebuffer.
+
+### .depthTexture : DepthTexture
+
+The depth texture of the default framebuffer.
+
+### .domElement : HTMLCanvasElement | OffscreenCanvas
+
+A reference to the canvas element the renderer is drawing to. This value of this property will automatically be created by the renderer.
+
+## Methods
+
+### .dispose()
+
+Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
+
+##### Fires:
+
+*   RenderTarget#event:dispose
+
+### .getDrawingBufferSize( target : Vector2 ) : Vector2
+
+Returns the drawing buffer size in physical pixels. This method honors the pixel ratio.
+
+**target**
+
+The method writes the result in this target object.
+
+**Returns:** The drawing buffer size.
+
+### .getPixelRatio() : number
+
+Returns the pixel ratio.
+
+**Returns:** The pixel ratio.
+
+### .getScissor( target : Vector4 ) : Vector4
+
+Returns the scissor rectangle.
+
+**target**
+
+The method writes the result in this target object.
+
+**Returns:** The scissor rectangle.
+
+### .getScissorTest() : boolean
+
+Returns the scissor test value.
+
+**Returns:** Whether the scissor test should be enabled or not.
+
+### .getSize( target : Vector2 ) : Vector2
+
+Returns the renderer's size in logical pixels. This method does not honor the pixel ratio.
+
+**target**
+
+The method writes the result in this target object.
+
+**Returns:** The renderer's size in logical pixels.
+
+### .getViewport( target : Vector4 ) : Vector4
+
+Returns the viewport definition.
+
+**target**
+
+The method writes the result in this target object.
+
+**Returns:** The viewport definition.
+
+### .setDrawingBufferSize( width : number, height : number, pixelRatio : number )
+
+This method allows to define the drawing buffer size by specifying width, height and pixel ratio all at once. The size of the drawing buffer is computed with this formula:
+
+```js
+size.x = width * pixelRatio;
+size.y = height * pixelRatio;
+```
+
+**width**
+
+The width in logical pixels.
+
+**height**
+
+The height in logical pixels.
+
+**pixelRatio**
+
+The pixel ratio.
+
+### .setPixelRatio( value : number )
+
+Sets the given pixel ratio and resizes the canvas if necessary.
+
+**value**
+
+The pixel ratio.
+
+Default is `1`.
+
+### .setScissor( x : number | Vector4, y : number, width : number, height : number )
+
+Defines the scissor rectangle.
+
+**x**
+
+The horizontal coordinate for the lower left corner of the box in logical pixel unit. Instead of passing four arguments, the method also works with a single four-dimensional vector.
+
+**y**
+
+The vertical coordinate for the lower left corner of the box in logical pixel unit.
+
+**width**
+
+The width of the scissor box in logical pixel unit.
+
+**height**
+
+The height of the scissor box in logical pixel unit.
+
+### .setScissorTest( boolean : boolean )
+
+Defines the scissor test.
+
+**boolean**
+
+Whether the scissor test should be enabled or not.
+
+### .setSize( width : number, height : number, updateStyle : boolean )
+
+Sets the size of the renderer.
+
+**width**
+
+The width in logical pixels.
+
+**height**
+
+The height in logical pixels.
+
+**updateStyle**
+
+Whether to update the `style` attribute of the canvas or not.
+
+Default is `true`.
+
+### .setViewport( x : number | Vector4, y : number, width : number, height : number, minDepth : number, maxDepth : number )
+
+Defines the viewport.
+
+**x**
+
+The horizontal coordinate for the lower left corner of the viewport origin in logical pixel unit.
+
+**y**
+
+The vertical coordinate for the lower left corner of the viewport origin in logical pixel unit.
+
+**width**
+
+The width of the viewport in logical pixel unit.
+
+**height**
+
+The height of the viewport in logical pixel unit.
+
+**minDepth**
+
+The minimum depth value of the viewport. WebGPU only.
+
+Default is `0`.
+
+**maxDepth**
+
+The maximum depth value of the viewport. WebGPU only.
+
+Default is `1`.
+
+## Source
+
+[src/renderers/common/CanvasTarget.js](https://github.com/mrdoob/three.js/blob/master/src/renderers/common/CanvasTarget.js)

+ 77 - 0
docs/pages/CanvasTexture.html.md

@@ -0,0 +1,77 @@
+*Inheritance: EventDispatcher → Texture →*
+
+# CanvasTexture
+
+Creates a texture from a canvas element.
+
+This is almost the same as the base texture class, except that it sets [Texture#needsUpdate](Texture.html#needsUpdate) to `true` immediately since a canvas can directly be used for rendering.
+
+## Constructor
+
+### new CanvasTexture( canvas : HTMLCanvasElement, mapping : number, wrapS : number, wrapT : number, magFilter : number, minFilter : number, format : number, type : number, anisotropy : number )
+
+Constructs a new texture.
+
+**canvas**
+
+The HTML canvas element.
+
+**mapping**
+
+The texture mapping.
+
+Default is `Texture.DEFAULT_MAPPING`.
+
+**wrapS**
+
+The wrapS value.
+
+Default is `ClampToEdgeWrapping`.
+
+**wrapT**
+
+The wrapT value.
+
+Default is `ClampToEdgeWrapping`.
+
+**magFilter**
+
+The mag filter value.
+
+Default is `LinearFilter`.
+
+**minFilter**
+
+The min filter value.
+
+Default is `LinearMipmapLinearFilter`.
+
+**format**
+
+The texture format.
+
+Default is `RGBAFormat`.
+
+**type**
+
+The texture type.
+
+Default is `UnsignedByteType`.
+
+**anisotropy**
+
+The anisotropy value.
+
+Default is `Texture.DEFAULT_ANISOTROPY`.
+
+## Properties
+
+### .isCanvasTexture : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+## Source
+
+[src/textures/CanvasTexture.js](https://github.com/mrdoob/three.js/blob/master/src/textures/CanvasTexture.js)

+ 119 - 0
docs/pages/Capsule.html.md

@@ -0,0 +1,119 @@
+# Capsule
+
+A capsule is essentially a cylinder with hemispherical caps at both ends. It can be thought of as a swept sphere, where a sphere is moved along a line segment.
+
+Capsules are often used as bounding volumes (next to AABBs and bounding spheres).
+
+## Import
+
+Capsule is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { Capsule } from 'three/addons/math/Capsule.js';
+```
+
+## Constructor
+
+### new Capsule( start : Vector3, end : Vector3, radius : number )
+
+Constructs a new capsule.
+
+**start**
+
+The start vector.
+
+**end**
+
+The end vector.
+
+**radius**
+
+The capsule's radius.
+
+Default is `1`.
+
+## Properties
+
+### .end : Vector3
+
+The end vector.
+
+### .radius : number
+
+The capsule's radius.
+
+Default is `1`.
+
+### .start : Vector3
+
+The start vector.
+
+## Methods
+
+### .clone() : Capsule
+
+Returns a new capsule with copied values from this instance.
+
+**Returns:** A clone of this instance.
+
+### .copy( capsule : Capsule ) : Capsule
+
+Copies the values of the given capsule to this instance.
+
+**capsule**
+
+The capsule to copy.
+
+**Returns:** A reference to this capsule.
+
+### .getCenter( target : Vector3 ) : Vector3
+
+Returns the center point of this capsule.
+
+**target**
+
+The target vector that is used to store the method's result.
+
+**Returns:** The center point.
+
+### .intersectsBox( box : Box3 ) : boolean
+
+Returns `true` if the given bounding box intersects with this capsule.
+
+**box**
+
+The bounding box to test.
+
+**Returns:** Whether the given bounding box intersects with this capsule.
+
+### .set( start : Vector3, end : Vector3, radius : number ) : Capsule
+
+Sets the capsule components to the given values. Please note that this method only copies the values from the given objects.
+
+**start**
+
+The start vector.
+
+**end**
+
+The end vector
+
+**radius**
+
+The capsule's radius.
+
+**Returns:** A reference to this capsule.
+
+### .translate( v : Vector3 ) : Capsule
+
+Adds the given offset to this capsule, effectively moving it in 3D space.
+
+**v**
+
+The offset that should be used to translate the capsule.
+
+**Returns:** A reference to this capsule.
+
+## Source
+
+[examples/jsm/math/Capsule.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/math/Capsule.js)

+ 72 - 0
docs/pages/CapsuleGeometry.html.md

@@ -0,0 +1,72 @@
+*Inheritance: EventDispatcher → BufferGeometry →*
+
+# CapsuleGeometry
+
+A geometry class for representing a capsule.
+
+## Code Example
+
+```js
+const geometry = new THREE.CapsuleGeometry( 1, 1, 4, 8, 1 );
+const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
+const capsule = new THREE.Mesh( geometry, material );
+scene.add( capsule );
+```
+
+## Constructor
+
+### new CapsuleGeometry( radius : number, height : number, capSegments : number, radialSegments : number, heightSegments : number )
+
+Constructs a new capsule geometry.
+
+**radius**
+
+Radius of the capsule.
+
+Default is `1`.
+
+**height**
+
+Height of the middle section.
+
+Default is `1`.
+
+**capSegments**
+
+Number of curve segments used to build each cap.
+
+Default is `4`.
+
+**radialSegments**
+
+Number of segmented faces around the circumference of the capsule. Must be an integer >= 3.
+
+Default is `8`.
+
+**heightSegments**
+
+Number of rows of faces along the height of the middle section. Must be an integer >= 1.
+
+Default is `1`.
+
+## Properties
+
+### .parameters : Object
+
+Holds the constructor parameters that have been used to generate the geometry. Any modification after instantiation does not change the geometry.
+
+## Static Methods
+
+### .fromJSON( data : Object ) : CapsuleGeometry
+
+Factory method for creating an instance of this class from the given JSON object.
+
+**data**
+
+A JSON object representing the serialized geometry.
+
+**Returns:** A new instance.
+
+## Source
+
+[src/geometries/CapsuleGeometry.js](https://github.com/mrdoob/three.js/blob/master/src/geometries/CapsuleGeometry.js)

+ 103 - 0
docs/pages/CatmullRomCurve3.html.md

@@ -0,0 +1,103 @@
+*Inheritance: Curve →*
+
+# CatmullRomCurve3
+
+A curve representing a Catmull-Rom spline.
+
+## Code Example
+
+```js
+//Create a closed wavey loop
+const curve = new THREE.CatmullRomCurve3( [
+	new THREE.Vector3( -10, 0, 10 ),
+	new THREE.Vector3( -5, 5, 5 ),
+	new THREE.Vector3( 0, 0, 0 ),
+	new THREE.Vector3( 5, -5, 5 ),
+	new THREE.Vector3( 10, 0, 10 )
+] );
+const points = curve.getPoints( 50 );
+const geometry = new THREE.BufferGeometry().setFromPoints( points );
+const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
+// Create the final object to add to the scene
+const curveObject = new THREE.Line( geometry, material );
+```
+
+## Constructor
+
+### new CatmullRomCurve3( points : Array.<Vector3>, closed : boolean, curveType : 'centripetal' | 'chordal' | 'catmullrom', tension : number )
+
+Constructs a new Catmull-Rom curve.
+
+**points**
+
+An array of 3D points defining the curve.
+
+**closed**
+
+Whether the curve is closed or not.
+
+Default is `false`.
+
+**curveType**
+
+The curve type.
+
+Default is `'centripetal'`.
+
+**tension**
+
+Tension of the curve.
+
+Default is `0.5`.
+
+## Properties
+
+### .closed : boolean
+
+Whether the curve is closed or not.
+
+Default is `false`.
+
+### .curveType : 'centripetal' | 'chordal' | 'catmullrom'
+
+The curve type.
+
+Default is `'centripetal'`.
+
+### .isCatmullRomCurve3 : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .points : Array.<Vector3>
+
+An array of 3D points defining the curve.
+
+### .tension : number
+
+Tension of the curve.
+
+Default is `0.5`.
+
+## Methods
+
+### .getPoint( t : number, optionalTarget : Vector3 ) : Vector3
+
+Returns a point on the curve.
+
+**t**
+
+A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
+
+**optionalTarget**
+
+The optional target vector the result is written to.
+
+**Overrides:** [Curve#getPoint](Curve.html#getPoint)
+
+**Returns:** The position on the curve.
+
+## Source
+
+[src/extras/curves/CatmullRomCurve3.js](https://github.com/mrdoob/three.js/blob/master/src/extras/curves/CatmullRomCurve3.js)

+ 87 - 0
docs/pages/ChromaticAberrationNode.html.md

@@ -0,0 +1,87 @@
+*Inheritance: EventDispatcher → Node → TempNode →*
+
+# ChromaticAberrationNode
+
+Post processing node for applying chromatic aberration effect. This effect simulates the color fringing that occurs in real camera lenses by separating and offsetting the red, green, and blue channels.
+
+## Import
+
+ChromaticAberrationNode is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { chromaticAberration } from 'three/addons/tsl/display/ChromaticAberrationNode.js';
+```
+
+## Constructor
+
+### new ChromaticAberrationNode( textureNode : TextureNode, strengthNode : Node, centerNode : Node, scaleNode : Node )
+
+Constructs a new chromatic aberration node.
+
+**textureNode**
+
+The texture node that represents the input of the effect.
+
+**strengthNode**
+
+The strength of the chromatic aberration effect as a node.
+
+**centerNode**
+
+The center point of the effect as a node.
+
+**scaleNode**
+
+The scale factor for stepped scaling from center as a node.
+
+## Properties
+
+### .centerNode : Node
+
+A node holding the center point of the effect.
+
+### .scaleNode : Node
+
+A node holding the scale factor for stepped scaling.
+
+### .strengthNode : Node
+
+A node holding the strength of the effect.
+
+### .textureNode : texture
+
+The texture node that represents the input of the effect.
+
+### .updateBeforeType : string
+
+The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node updates its internal uniforms once per frame in `updateBefore()`.
+
+Default is `'frame'`.
+
+**Overrides:** [TempNode#updateBeforeType](TempNode.html#updateBeforeType)
+
+## Methods
+
+### .setup( builder : NodeBuilder ) : ShaderCallNodeInternal
+
+This method is used to setup the effect's TSL code.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [TempNode#setup](TempNode.html#setup)
+
+### .updateBefore( frame : NodeFrame )
+
+This method is used to update the effect's uniforms once per frame.
+
+**frame**
+
+The current node frame.
+
+**Overrides:** [TempNode#updateBefore](TempNode.html#updateBefore)
+
+## Source
+
+[examples/jsm/tsl/display/ChromaticAberrationNode.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/tsl/display/ChromaticAberrationNode.js)

+ 55 - 0
docs/pages/CinquefoilKnot.html.md

@@ -0,0 +1,55 @@
+*Inheritance: Curve →*
+
+# CinquefoilKnot
+
+A Cinquefoil Knot.
+
+## Import
+
+CinquefoilKnot is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { CinquefoilKnot } from 'three/addons/curves/CurveExtras.js';
+```
+
+## Constructor
+
+### new CinquefoilKnot( scale : number )
+
+Constructs a new Cinquefoil Knot.
+
+**scale**
+
+The curve's scale.
+
+Default is `10`.
+
+## Properties
+
+### .scale : number
+
+The curve's scale.
+
+Default is `10`.
+
+## Methods
+
+### .getPoint( t : number, optionalTarget : Vector3 ) : Vector3
+
+This method returns a vector in 3D space for the given interpolation factor.
+
+**t**
+
+A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
+
+**optionalTarget**
+
+The optional target vector the result is written to.
+
+**Overrides:** [Curve#getPoint](Curve.html#getPoint)
+
+**Returns:** The position on the curve.
+
+## Source
+
+[examples/jsm/curves/CurveExtras.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/curves/CurveExtras.js)

+ 66 - 0
docs/pages/CircleGeometry.html.md

@@ -0,0 +1,66 @@
+*Inheritance: EventDispatcher → BufferGeometry →*
+
+# CircleGeometry
+
+A simple shape of Euclidean geometry. It is constructed from a number of triangular segments that are oriented around a central point and extend as far out as a given radius. It is built counter-clockwise from a start angle and a given central angle. It can also be used to create regular polygons, where the number of segments determines the number of sides.
+
+## Code Example
+
+```js
+const geometry = new THREE.CircleGeometry( 5, 32 );
+const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
+const circle = new THREE.Mesh( geometry, material );
+scene.add( circle )
+```
+
+## Constructor
+
+### new CircleGeometry( radius : number, segments : number, thetaStart : number, thetaLength : number )
+
+Constructs a new circle geometry.
+
+**radius**
+
+Radius of the circle.
+
+Default is `1`.
+
+**segments**
+
+Number of segments (triangles), minimum = `3`.
+
+Default is `32`.
+
+**thetaStart**
+
+Start angle for first segment in radians.
+
+Default is `0`.
+
+**thetaLength**
+
+The central angle, often called theta, of the circular sector in radians. The default value results in a complete circle.
+
+Default is `Math.PI*2`.
+
+## Properties
+
+### .parameters : Object
+
+Holds the constructor parameters that have been used to generate the geometry. Any modification after instantiation does not change the geometry.
+
+## Static Methods
+
+### .fromJSON( data : Object ) : CircleGeometry
+
+Factory method for creating an instance of this class from the given JSON object.
+
+**data**
+
+A JSON object representing the serialized geometry.
+
+**Returns:** A new instance.
+
+## Source
+
+[src/geometries/CircleGeometry.js](https://github.com/mrdoob/three.js/blob/master/src/geometries/CircleGeometry.js)

+ 60 - 0
docs/pages/ClearMaskPass.html.md

@@ -0,0 +1,60 @@
+*Inheritance: Pass →*
+
+# ClearMaskPass
+
+This pass can be used to clear a mask previously defined with [MaskPass](MaskPass.html).
+
+## Code Example
+
+```js
+const clearPass = new ClearMaskPass();
+composer.addPass( clearPass );
+```
+
+## Constructor
+
+### new ClearMaskPass()
+
+Constructs a new clear mask pass.
+
+## Properties
+
+### .needsSwap : boolean
+
+Overwritten to disable the swap.
+
+Default is `false`.
+
+**Overrides:** [Pass#needsSwap](Pass.html#needsSwap)
+
+## Methods
+
+### .render( renderer : WebGLRenderer, writeBuffer : WebGLRenderTarget, readBuffer : WebGLRenderTarget, deltaTime : number, maskActive : boolean )
+
+Performs the clear of the currently defined mask.
+
+**renderer**
+
+The renderer.
+
+**writeBuffer**
+
+The write buffer. This buffer is intended as the rendering destination for the pass.
+
+**readBuffer**
+
+The read buffer. The pass can access the result from the previous pass from this buffer.
+
+**deltaTime**
+
+The delta time in seconds.
+
+**maskActive**
+
+Whether masking is active or not.
+
+**Overrides:** [Pass#render](Pass.html#render)
+
+## Source
+
+[examples/jsm/postprocessing/MaskPass.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/postprocessing/MaskPass.js)

+ 92 - 0
docs/pages/ClearPass.html.md

@@ -0,0 +1,92 @@
+*Inheritance: Pass →*
+
+# ClearPass
+
+This class can be used to force a clear operation for the current read or default framebuffer (when rendering to screen).
+
+## Code Example
+
+```js
+const clearPass = new ClearPass();
+composer.addPass( clearPass );
+```
+
+## Import
+
+ClearPass is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { ClearPass } from 'three/addons/postprocessing/ClearPass.js';
+```
+
+## Constructor
+
+### new ClearPass( clearColor : number | Color | string, clearAlpha : number )
+
+Constructs a new clear pass.
+
+**clearColor**
+
+The clear color.
+
+Default is `0x000000`.
+
+**clearAlpha**
+
+The clear alpha.
+
+Default is `0`.
+
+## Properties
+
+### .clearAlpha : number
+
+The clear alpha.
+
+Default is `0`.
+
+### .clearColor : number | Color | string
+
+The clear color.
+
+Default is `0x000000`.
+
+### .needsSwap : boolean
+
+Overwritten to disable the swap.
+
+Default is `false`.
+
+**Overrides:** [Pass#needsSwap](Pass.html#needsSwap)
+
+## Methods
+
+### .render( renderer : WebGLRenderer, writeBuffer : WebGLRenderTarget, readBuffer : WebGLRenderTarget, deltaTime : number, maskActive : boolean )
+
+Performs the clear operation. This affects the current read or the default framebuffer.
+
+**renderer**
+
+The renderer.
+
+**writeBuffer**
+
+The write buffer. This buffer is intended as the rendering destination for the pass.
+
+**readBuffer**
+
+The read buffer. The pass can access the result from the previous pass from this buffer.
+
+**deltaTime**
+
+The delta time in seconds.
+
+**maskActive**
+
+Whether masking is active or not.
+
+**Overrides:** [Pass#render](Pass.html#render)
+
+## Source
+
+[examples/jsm/postprocessing/ClearPass.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/postprocessing/ClearPass.js)

+ 47 - 0
docs/pages/ClippingGroup.html.md

@@ -0,0 +1,47 @@
+*Inheritance: EventDispatcher → Object3D → Group →*
+
+# ClippingGroup
+
+In earlier three.js versions, clipping was defined globally on the renderer or on material level. This special version of `THREE.Group` allows to encode the clipping state into the scene graph. Meaning if you create an instance of this group, all descendant 3D objects will be affected by the respective clipping planes.
+
+Note: `ClippingGroup` can only be used with `WebGPURenderer`.
+
+## Constructor
+
+### new ClippingGroup()
+
+Constructs a new clipping group.
+
+## Properties
+
+### .clipIntersection : boolean
+
+Whether the intersection of the clipping planes is used to clip objects, rather than their union.
+
+Default is `false`.
+
+### .clipShadows : boolean
+
+Whether shadows should be clipped or not.
+
+Default is `false`.
+
+### .clippingPlanes : Array.<Plane>
+
+An array with clipping planes.
+
+### .enabled : boolean
+
+Whether clipping should be enabled or not.
+
+Default is `true`.
+
+### .isClippingGroup : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+## Source
+
+[src/objects/ClippingGroup.js](https://github.com/mrdoob/three.js/blob/master/src/objects/ClippingGroup.js)

+ 83 - 0
docs/pages/ClippingNode.html.md

@@ -0,0 +1,83 @@
+*Inheritance: EventDispatcher → Node →*
+
+# ClippingNode
+
+This node is used in [NodeMaterial](NodeMaterial.html) to setup the clipping which can happen hardware-accelerated (if supported) and optionally use alpha-to-coverage for anti-aliasing clipped edges.
+
+## Constructor
+
+### new ClippingNode( scope : 'default' | 'hardware' | 'alphaToCoverage' )
+
+Constructs a new clipping node.
+
+**scope**
+
+The node's scope. Similar to other nodes, the selected scope influences the behavior of the node and what type of code is generated.
+
+Default is `'default'`.
+
+## Properties
+
+### .scope : 'default' | 'hardware' | 'alphaToCoverage'
+
+The node's scope. Similar to other nodes, the selected scope influences the behavior of the node and what type of code is generated.
+
+## Methods
+
+### .setup( builder : NodeBuilder ) : Node
+
+Setups the node depending on the selected scope.
+
+**builder**
+
+The current node builder.
+
+**Overrides:** [Node#setup](Node.html#setup)
+
+**Returns:** The result node.
+
+### .setupAlphaToCoverage( intersectionPlanes : Array.<Vector4>, unionPlanes : Array.<Vector4> ) : Node
+
+Setups alpha to coverage.
+
+**intersectionPlanes**
+
+The intersection planes.
+
+**unionPlanes**
+
+The union planes.
+
+**Returns:** The result node.
+
+### .setupDefault( intersectionPlanes : Array.<Vector4>, unionPlanes : Array.<Vector4> ) : Node
+
+Setups the default clipping.
+
+**intersectionPlanes**
+
+The intersection planes.
+
+**unionPlanes**
+
+The union planes.
+
+**Returns:** The result node.
+
+### .setupHardwareClipping( unionPlanes : Array.<Vector4>, builder : NodeBuilder ) : Node
+
+Setups hardware clipping.
+
+**unionPlanes**
+
+The union planes.
+
+**builder**
+
+The current node builder.
+
+**Returns:** The result node.
+
+## Source
+
+[src/nodes/accessors/ClippingNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/accessors/ClippingNode.js)

+ 73 - 0
docs/pages/Clock.html.md

@@ -0,0 +1,73 @@
+# Clock
+
+Class for keeping track of time.
+
+## Constructor
+
+### new Clock( autoStart : boolean )
+
+Constructs a new clock.
+
+**autoStart**
+
+Whether to automatically start the clock when `getDelta()` is called for the first time.
+
+Default is `true`.
+
+## Properties
+
+### .autoStart : boolean
+
+If set to `true`, the clock starts automatically when `getDelta()` is called for the first time.
+
+Default is `true`.
+
+### .elapsedTime : number
+
+Keeps track of the total time that the clock has been running.
+
+Default is `0`.
+
+### .oldTime : number
+
+Holds the time at which the clock's `start()`, `getElapsedTime()` or `getDelta()` methods were last called.
+
+Default is `0`.
+
+### .running : boolean
+
+Whether the clock is running or not.
+
+Default is `true`.
+
+### .startTime : number
+
+Holds the time at which the clock's `start()` method was last called.
+
+Default is `0`.
+
+## Methods
+
+### .getDelta() : number
+
+Returns the delta time in seconds.
+
+**Returns:** The delta time.
+
+### .getElapsedTime() : number
+
+Returns the elapsed time in seconds.
+
+**Returns:** The elapsed time.
+
+### .start()
+
+Starts the clock. When `autoStart` is set to `true`, the method is automatically called by the class.
+
+### .stop()
+
+Stops the clock.
+
+## Source
+
+[src/core/Clock.js](https://github.com/mrdoob/three.js/blob/master/src/core/Clock.js)

+ 89 - 0
docs/pages/CodeNode.html.md

@@ -0,0 +1,89 @@
+*Inheritance: EventDispatcher → Node →*
+
+# CodeNode
+
+This class represents native code sections. It is the base class for modules like [FunctionNode](FunctionNode.html) which allows to implement functions with native shader languages.
+
+## Constructor
+
+### new CodeNode( code : string, includes : Array.<Node>, language : 'js' | 'wgsl' | 'glsl' )
+
+Constructs a new code node.
+
+**code**
+
+The native code.
+
+Default is `''`.
+
+**includes**
+
+An array of includes.
+
+Default is `[]`.
+
+**language**
+
+The used language.
+
+Default is `''`.
+
+## Properties
+
+### .code : string
+
+The native code.
+
+Default is `''`.
+
+### .global : boolean
+
+This flag is used for global cache.
+
+Default is `true`.
+
+**Overrides:** [Node#global](Node.html#global)
+
+### .includes : Array.<Node>
+
+An array of includes
+
+Default is `[]`.
+
+### .isCodeNode : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .language : 'js' | 'wgsl' | 'glsl'
+
+The used language.
+
+Default is `''`.
+
+## Methods
+
+### .getIncludes( builder : NodeBuilder ) : Array.<Node>
+
+Returns the includes of this code node.
+
+**builder**
+
+The current node builder.
+
+**Returns:** The includes.
+
+### .setIncludes( includes : Array.<Node> ) : CodeNode
+
+Sets the includes of this code node.
+
+**includes**
+
+The includes to set.
+
+**Returns:** A reference to this node.
+
+## Source
+
+[src/nodes/code/CodeNode.js](https://github.com/mrdoob/three.js/blob/master/src/nodes/code/CodeNode.js)

+ 73 - 0
docs/pages/ColladaLoader.html.md

@@ -0,0 +1,73 @@
+*Inheritance: Loader →*
+
+# ColladaLoader
+
+A loader for the Collada format.
+
+The Collada format is very complex so this loader only supports a subset of what is defined in the [official specification](https://www.khronos.org/files/collada_spec_1_5.pdf).
+
+Assets with a Z-UP coordinate system are transformed it into Y-UP by a simple rotation. The vertex data are not converted.
+
+## Code Example
+
+```js
+const loader = new ColladaLoader();
+const result = await loader.loadAsync( './models/collada/elf/elf.dae' );
+scene.add( result.scene );
+```
+
+## Import
+
+ColladaLoader is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { ColladaLoader } from 'three/addons/loaders/ColladaLoader.js';
+```
+
+## Constructor
+
+### new ColladaLoader()
+
+## Methods
+
+### .load( url : string, onLoad : function, onProgress : onProgressCallback, onError : onErrorCallback )
+
+Starts loading from the given URL and passes the loaded Collada asset to the `onLoad()` callback.
+
+**url**
+
+The path/URL of the file to be loaded. This can also be a data URI.
+
+**onLoad**
+
+Executed when the loading process has been finished.
+
+**onProgress**
+
+Executed while the loading is in progress.
+
+**onError**
+
+Executed when errors occur.
+
+**Overrides:** [Loader#load](Loader.html#load)
+
+### .parse( text : string, path : string ) : Object
+
+Parses the given Collada data and returns a result object holding the parsed scene, an array of animation clips and kinematics.
+
+**text**
+
+The raw Collada data as a string.
+
+**path**
+
+The asset path.
+
+**Overrides:** [Loader#parse](Loader.html#parse)
+
+**Returns:** An object representing the parsed asset.
+
+## Source
+
+[examples/jsm/loaders/ColladaLoader.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/ColladaLoader.js)

+ 554 - 0
docs/pages/Color.html.md

@@ -0,0 +1,554 @@
+# Color
+
+A Color instance is represented by RGB components in the linear _working color space_, which defaults to `LinearSRGBColorSpace`. Inputs conventionally using `SRGBColorSpace` (such as hexadecimals and CSS strings) are converted to the working color space automatically.
+
+Source color spaces may be specified explicitly, to ensure correct conversions.
+
+```js
+// assumed already LinearSRGBColorSpace; no conversion
+const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5 );
+// converted explicitly from SRGBColorSpace to LinearSRGBColorSpace
+const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5, SRGBColorSpace );
+```
+
+If THREE.ColorManagement is disabled, no conversions occur. For details, see _Color management_. Iterating through a Color instance will yield its components (r, g, b) in the corresponding order. A Color can be initialised in any of the following ways:
+
+```js
+//empty constructor - will default white
+const color1 = new THREE.Color();
+//Hexadecimal color (recommended)
+const color2 = new THREE.Color( 0xff0000 );
+//RGB string
+const color3 = new THREE.Color("rgb(255, 0, 0)");
+const color4 = new THREE.Color("rgb(100%, 0%, 0%)");
+//X11 color name - all 140 color names are supported.
+//Note the lack of CamelCase in the name
+const color5 = new THREE.Color( 'skyblue' );
+//HSL string
+const color6 = new THREE.Color("hsl(0, 100%, 50%)");
+//Separate RGB values between 0 and 1
+const color7 = new THREE.Color( 1, 0, 0 );
+```
+
+## Code Example
+
+```js
+// converted automatically from SRGBColorSpace to LinearSRGBColorSpace
+const color = new THREE.Color().setHex( 0x112233 );
+```
+
+## Constructor
+
+### new Color( r : number | string | Color, g : number, b : number )
+
+Constructs a new color.
+
+Note that standard method of specifying color in three.js is with a hexadecimal triplet, and that method is used throughout the rest of the documentation.
+
+**r**
+
+The red component of the color. If `g` and `b` are not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.
+
+**g**
+
+The green component.
+
+**b**
+
+The blue component.
+
+## Properties
+
+### .b : number
+
+The blue component.
+
+Default is `1`.
+
+### .g : number
+
+The green component.
+
+Default is `1`.
+
+### .isColor : boolean (readonly)
+
+This flag can be used for type testing.
+
+Default is `true`.
+
+### .r : number
+
+The red component.
+
+Default is `1`.
+
+### .NAMES : Object
+
+A dictionary with X11 color names.
+
+Note that multiple words such as Dark Orange become the string 'darkorange'.
+
+## Methods
+
+### .add( color : Color ) : Color
+
+Adds the RGB values of the given color to the RGB values of this color.
+
+**color**
+
+The color to add.
+
+**Returns:** A reference to this color.
+
+### .addColors( color1 : Color, color2 : Color ) : Color
+
+Adds the RGB values of the given colors and stores the result in this instance.
+
+**color1**
+
+The first color.
+
+**color2**
+
+The second color.
+
+**Returns:** A reference to this color.
+
+### .addScalar( s : number ) : Color
+
+Adds the given scalar value to the RGB values of this color.
+
+**s**
+
+The scalar to add.
+
+**Returns:** A reference to this color.
+
+### .applyMatrix3( m : Matrix3 ) : Color
+
+Transforms this color with the given 3x3 matrix.
+
+**m**
+
+The matrix.
+
+**Returns:** A reference to this color.
+
+### .clone() : Color
+
+Returns a new color with copied values from this instance.
+
+**Returns:** A clone of this instance.
+
+### .convertLinearToSRGB() : Color
+
+Converts this color from `LinearSRGBColorSpace` to `SRGBColorSpace`.
+
+**Returns:** A reference to this color.
+
+### .convertSRGBToLinear() : Color
+
+Converts this color from `SRGBColorSpace` to `LinearSRGBColorSpace`.
+
+**Returns:** A reference to this color.
+
+### .copy( color : Color ) : Color
+
+Copies the values of the given color to this instance.
+
+**color**
+
+The color to copy.
+
+**Returns:** A reference to this color.
+
+### .copyLinearToSRGB( color : Color ) : Color
+
+Copies the given color into this color, and then converts this color from `LinearSRGBColorSpace` to `SRGBColorSpace`.
+
+**color**
+
+The color to copy/convert.
+
+**Returns:** A reference to this color.
+
+### .copySRGBToLinear( color : Color ) : Color
+
+Copies the given color into this color, and then converts this color from `SRGBColorSpace` to `LinearSRGBColorSpace`.
+
+**color**
+
+The color to copy/convert.
+
+**Returns:** A reference to this color.
+
+### .equals( c : Color ) : boolean
+
+Returns `true` if this color is equal with the given one.
+
+**c**
+
+The color to test for equality.
+
+**Returns:** Whether this bounding color is equal with the given one.
+
+### .fromArray( array : Array.<number>, offset : number ) : Color
+
+Sets this color's RGB components from the given array.
+
+**array**
+
+An array holding the RGB values.
+
+**offset**
+
+The offset into the array.
+
+Default is `0`.
+
+**Returns:** A reference to this color.
+
+### .fromBufferAttribute( attribute : BufferAttribute, index : number ) : Color
+
+Sets the components of this color from the given buffer attribute.
+
+**attribute**
+
+The buffer attribute holding color data.
+
+**index**
+
+The index into the attribute.
+
+**Returns:** A reference to this color.
+
+### .getHSL( target : Object, colorSpace : string ) : Object
+
+Converts the colors RGB values into the HSL format and stores them into the given target object.
+
+**target**
+
+The target object that is used to store the method's result.
+
+**colorSpace**
+
+The color space.
+
+Default is `ColorManagement.workingColorSpace`.
+
+**Returns:** The HSL representation of this color.
+
+### .getHex( colorSpace : string ) : number
+
+Returns the hexadecimal value of this color.
+
+**colorSpace**
+
+The color space.
+
+Default is `SRGBColorSpace`.
+
+**Returns:** The hexadecimal value.
+
+### .getHexString( colorSpace : string ) : string
+
+Returns the hexadecimal value of this color as a string (for example, 'FFFFFF').
+
+**colorSpace**
+
+The color space.
+
+Default is `SRGBColorSpace`.
+
+**Returns:** The hexadecimal value as a string.
+
+### .getRGB( target : Color, colorSpace : string ) : Color
+
+Returns the RGB values of this color and stores them into the given target object.
+
+**target**
+
+The target color that is used to store the method's result.
+
+**colorSpace**
+
+The color space.
+
+Default is `ColorManagement.workingColorSpace`.
+
+**Returns:** The RGB representation of this color.
+
+### .getStyle( colorSpace : string ) : string
+
+Returns the value of this color as a CSS style string. Example: `rgb(255,0,0)`.
+
+**colorSpace**
+
+The color space.
+
+Default is `SRGBColorSpace`.
+
+**Returns:** The CSS representation of this color.
+
+### .lerp( color : Color, alpha : number ) : Color
+
+Linearly interpolates this color's RGB values toward the RGB values of the given color. The alpha argument can be thought of as the ratio between the two colors, where `0.0` is this color and `1.0` is the first argument.
+
+**color**
+
+The color to converge on.
+
+**alpha**
+
+The interpolation factor in the closed interval `[0,1]`.
+
+**Returns:** A reference to this color.
+
+### .lerpColors( color1 : Color, color2 : Color, alpha : number ) : Color
+
+Linearly interpolates between the given colors and stores the result in this instance. The alpha argument can be thought of as the ratio between the two colors, where `0.0` is the first and `1.0` is the second color.
+
+**color1**
+
+The first color.
+
+**color2**
+
+The second color.
+
+**alpha**
+
+The interpolation factor in the closed interval `[0,1]`.
+
+**Returns:** A reference to this color.
+
+### .lerpHSL( color : Color, alpha : number ) : Color
+
+Linearly interpolates this color's HSL values toward the HSL values of the given color. It differs from [Color#lerp](Color.html#lerp) by not interpolating straight from one color to the other, but instead going through all the hues in between those two colors. The alpha argument can be thought of as the ratio between the two colors, where 0.0 is this color and 1.0 is the first argument.
+
+**color**
+
+The color to converge on.
+
+**alpha**
+
+The interpolation factor in the closed interval `[0,1]`.
+
+**Returns:** A reference to this color.
+
+### .multiply( color : Color ) : Color
+
+Multiplies the RGB values of the given color with the RGB values of this color.
+
+**color**
+
+The color to multiply.
+
+**Returns:** A reference to this color.
+
+### .multiplyScalar( s : number ) : Color
+
+Multiplies the given scalar value with the RGB values of this color.
+
+**s**
+
+The scalar to multiply.
+
+**Returns:** A reference to this color.
+
+### .offsetHSL( h : number, s : number, l : number ) : Color
+
+Adds the given HSL values to this color's values. Internally, this converts the color's RGB values to HSL, adds HSL and then converts the color back to RGB.
+
+**h**
+
+Hue value between `0.0` and `1.0`.
+
+**s**
+
+Saturation value between `0.0` and `1.0`.
+
+**l**
+
+Lightness value between `0.0` and `1.0`.
+
+**Returns:** A reference to this color.
+
+### .set( r : number | string | Color, g : number, b : number ) : Color
+
+Sets the colors's components from the given values.
+
+**r**
+
+The red component of the color. If `g` and `b` are not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.
+
+**g**
+
+The green component.
+
+**b**
+
+The blue component.
+
+**Returns:** A reference to this color.
+
+### .setColorName( style : string, colorSpace : string ) : Color
+
+Sets this color from a color name. Faster than [Color#setStyle](Color.html#setStyle) if you don't need the other CSS-style formats.
+
+For convenience, the list of names is exposed in `Color.NAMES` as a hash.
+
+```js
+Color.NAMES.aliceblue // returns 0xF0F8FF
+```
+
+**style**
+
+The color name.
+
+**colorSpace**
+
+The color space.
+
+Default is `SRGBColorSpace`.
+
+**Returns:** A reference to this color.
+
+### .setFromVector3( v : Vector3 ) : Color
+
+Sets the color's RGB components from the given 3D vector.
+
+**v**
+
+The vector to set.
+
+**Returns:** A reference to this color.
+
+### .setHSL( h : number, s : number, l : number, colorSpace : string ) : Color
+
+Sets this color from RGB values.
+
+**h**
+
+Hue value between `0.0` and `1.0`.
+
+**s**
+
+Saturation value between `0.0` and `1.0`.
+
+**l**
+
+Lightness value between `0.0` and `1.0`.
+
+**colorSpace**
+
+The color space.
+
+Default is `ColorManagement.workingColorSpace`.
+
+**Returns:** A reference to this color.
+
+### .setHex( hex : number, colorSpace : string ) : Color
+
+Sets this color from a hexadecimal value.
+
+**hex**
+
+The hexadecimal value.
+
+**colorSpace**
+
+The color space.
+
+Default is `SRGBColorSpace`.
+
+**Returns:** A reference to this color.
+
+### .setRGB( r : number, g : number, b : number, colorSpace : string ) : Color
+
+Sets this color from RGB values.
+
+**r**
+
+Red channel value between `0.0` and `1.0`.
+
+**g**
+
+Green channel value between `0.0` and `1.0`.
+
+**b**
+
+Blue channel value between `0.0` and `1.0`.
+
+**colorSpace**
+
+The color space.
+
+Default is `ColorManagement.workingColorSpace`.
+
+**Returns:** A reference to this color.
+
+### .setScalar( scalar : number ) : Color
+
+Sets the colors's components to the given scalar value.
+
+**scalar**
+
+The scalar value.
+
+**Returns:** A reference to this color.
+
+### .setStyle( style : string, colorSpace : string ) : Color
+
+Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`, `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or any [X11 color name](https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart) - all 140 color names are supported).
+
+**style**
+
+Color as a CSS-style string.
+
+**colorSpace**
+
+The color space.
+
+Default is `SRGBColorSpace`.
+
+**Returns:** A reference to this color.
+
+### .sub( color : Color ) : Color
+
+Subtracts the RGB values of the given color from the RGB values of this color.
+
+**color**
+
+The color to subtract.
+
+**Returns:** A reference to this color.
+
+### .toArray( array : Array.<number>, offset : number ) : Array.<number>
+
+Writes the RGB components of this color to the given array. If no array is provided, the method returns a new instance.
+
+**array**
+
+The target array holding the color components.
+
+Default is `[]`.
+
+**offset**
+
+Index of the first element in the array.
+
+Default is `0`.
+
+**Returns:** The color components.
+
+### .toJSON() : number
+
+This methods defines the serialization result of this class. Returns the color as a hexadecimal value.
+
+**Returns:** The hexadecimal value.
+
+## Source
+
+[src/math/Color.js](https://github.com/mrdoob/three.js/blob/master/src/math/Color.js)

+ 53 - 0
docs/pages/ColorConverter.html.md

@@ -0,0 +1,53 @@
+# ColorConverter
+
+A utility class with helper functions for color conversion.
+
+## Import
+
+ColorConverter is an addon, and must be imported explicitly, see [Installation#Addons](https://threejs.org/manual/#en/installation).
+
+```js
+import { ColorConverter } from 'three/addons/math/ColorConverter.js';
+```
+
+## Static Methods
+
+### .getHSV( color : Color, target : Object ) : Object
+
+Returns a HSV color representation of the given color object.
+
+**color**
+
+The color to get HSV values from.
+
+**target**
+
+The target object that is used to store the method's result.
+
+**Returns:** The HSV color.
+
+### .setHSV( color : Color, h : number, s : number, v : number ) : Color
+
+Sets the given HSV color definition to the given color object.
+
+**color**
+
+The color to set.
+
+**h**
+
+The hue.
+
+**s**
+
+The saturation.
+
+**v**
+
+The value.
+
+**Returns:** The update color.
+
+## Source
+
+[examples/jsm/math/ColorConverter.js](https://github.com/mrdoob/three.js/blob/master/examples/jsm/math/ColorConverter.js)

+ 41 - 0
docs/pages/ColorKeyframeTrack.html.md

@@ -0,0 +1,41 @@
+*Inheritance: KeyframeTrack →*
+
+# ColorKeyframeTrack
+
+A track for color keyframe values.
+
+## Constructor
+
+### new ColorKeyframeTrack( name : string, times : Array.<number>, values : Array.<number>, interpolation : InterpolateLinear | InterpolateDiscrete | InterpolateSmooth )
+
+Constructs a new color keyframe track.
+
+**name**
+
+The keyframe track's name.
+
+**times**
+
+A list of keyframe times.
+
+**values**
+
+A list of keyframe values.
+
+**interpolation**
+
+The interpolation type.
+
+## Properties
+
+### .ValueTypeName : string
+
+The value type name.
+
+Default is `'color'`.
+
+**Overrides:** [KeyframeTrack#ValueTypeName](KeyframeTrack.html#ValueTypeName)
+
+## Source
+
+[src/animation/tracks/ColorKeyframeTrack.js](https://github.com/mrdoob/three.js/blob/master/src/animation/tracks/ColorKeyframeTrack.js)

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

粤ICP备19079148号