浏览代码

Merge branch 'dev' into dev_azimuth_limits

WestLangley 5 年之前
父节点
当前提交
73c70e9373
共有 100 个文件被更改,包括 2660 次插入1569 次删除
  1. 83 11
      .github/CONTRIBUTING.md
  2. 1 1
      .github/ISSUE_TEMPLATE.md
  3. 10 38
      .github/workflows/ci.yml
  4. 15 2
      .gitignore
  5. 0 7
      .npmignore
  6. 76 0
      CODE_OF_CONDUCT.md
  7. 8 0
      README.md
  8. 238 195
      build/three.js
  9. 447 549
      build/three.min.js
  10. 320 305
      build/three.module.js
  11. 13 16
      docs/api/en/cameras/CubeCamera.html
  12. 0 1
      docs/api/en/constants/Renderer.html
  13. 0 5
      docs/api/en/constants/Textures.html
  14. 2 2
      docs/api/en/core/InstancedBufferGeometry.html
  15. 17 3
      docs/api/en/core/InterleavedBuffer.html
  16. 5 0
      docs/api/en/core/InterleavedBufferAttribute.html
  17. 2 2
      docs/api/en/extras/core/Curve.html
  18. 3 1
      docs/api/en/extras/curves/CatmullRomCurve3.html
  19. 81 5
      docs/api/en/extras/objects/ImmediateRenderObject.html
  20. 70 0
      docs/api/en/lights/LightProbe.html
  21. 0 10
      docs/api/en/loaders/FileLoader.html
  22. 12 0
      docs/api/en/loaders/Loader.html
  23. 0 1
      docs/api/en/loaders/ObjectLoader.html
  24. 2 0
      docs/api/en/materials/LineBasicMaterial.html
  25. 1 1
      docs/api/en/materials/Material.html
  26. 1 1
      docs/api/en/math/Box3.html
  27. 8 0
      docs/api/en/math/Color.html
  28. 1 4
      docs/api/en/math/Matrix4.html
  29. 1 1
      docs/api/en/math/Ray.html
  30. 138 0
      docs/api/en/math/SphericalHarmonics3.html
  31. 16 0
      docs/api/en/objects/Line.html
  32. 48 0
      docs/api/en/renderers/WebGL1Renderer.html
  33. 3 8
      docs/api/en/renderers/WebGLRenderer.html
  34. 2 2
      docs/api/en/scenes/Scene.html
  35. 94 0
      docs/api/en/textures/DataTexture2DArray.html
  36. 10 8
      docs/api/zh/cameras/CubeCamera.html
  37. 0 1
      docs/api/zh/constants/Renderer.html
  38. 0 4
      docs/api/zh/constants/Textures.html
  39. 2 2
      docs/api/zh/core/InstancedBufferGeometry.html
  40. 18 4
      docs/api/zh/core/InterleavedBuffer.html
  41. 5 0
      docs/api/zh/core/InterleavedBufferAttribute.html
  42. 2 2
      docs/api/zh/extras/core/Curve.html
  43. 2 0
      docs/api/zh/extras/curves/CatmullRomCurve3.html
  44. 80 5
      docs/api/zh/extras/objects/ImmediateRenderObject.html
  45. 70 0
      docs/api/zh/lights/LightProbe.html
  46. 0 1
      docs/api/zh/loaders/ObjectLoader.html
  47. 2 0
      docs/api/zh/materials/LineBasicMaterial.html
  48. 1 1
      docs/api/zh/materials/Material.html
  49. 8 0
      docs/api/zh/math/Color.html
  50. 0 2
      docs/api/zh/math/Matrix4.html
  51. 1 1
      docs/api/zh/math/Ray.html
  52. 138 0
      docs/api/zh/math/SphericalHarmonics3.html
  53. 16 0
      docs/api/zh/objects/Line.html
  54. 48 0
      docs/api/zh/renderers/WebGL1Renderer.html
  55. 2 7
      docs/api/zh/renderers/WebGLRenderer.html
  56. 94 0
      docs/api/zh/textures/DataTexture2DArray.html
  57. 16 0
      docs/examples/en/controls/OrbitControls.html
  58. 10 0
      docs/examples/en/controls/PointerLockControls.html
  59. 46 0
      docs/examples/en/lights/LightProbeGenerator.html
  60. 1 1
      docs/examples/en/utils/SceneUtils.html
  61. 16 0
      docs/examples/zh/controls/OrbitControls.html
  62. 10 0
      docs/examples/zh/controls/PointerLockControls.html
  63. 46 0
      docs/examples/zh/lights/LightProbeGenerator.html
  64. 8 1
      docs/examples/zh/utils/SceneUtils.html
  65. 3 3
      docs/index.html
  66. 16 2
      docs/list.js
  67. 1 1
      docs/manual/en/introduction/Creating-a-scene.html
  68. 9 0
      docs/manual/en/introduction/How-to-run-things-locally.html
  69. 0 127
      docs/manual/en/introduction/How-to-use-WebGL2.html
  70. 1 1
      docs/manual/en/introduction/How-to-use-post-processing.html
  71. 2 2
      docs/manual/en/introduction/Import-via-modules.html
  72. 1 10
      docs/manual/en/introduction/Loading-3D-models.html
  73. 1 1
      docs/manual/zh/introduction/Creating-a-scene.html
  74. 16 0
      docs/manual/zh/introduction/How-to-run-things-locally.html
  75. 0 125
      docs/manual/zh/introduction/How-to-use-WebGL2.html
  76. 4 4
      docs/manual/zh/introduction/Import-via-modules.html
  77. 2 10
      docs/manual/zh/introduction/Loading-3D-models.html
  78. 16 2
      docs/scenes/material-browser.html
  79. 42 31
      editor/css/main.css
  80. 2 2
      editor/docs/Implementing additional commands for undo-redo.md
  81. 16 0
      editor/images/rotate.svg
  82. 60 0
      editor/images/scale.svg
  83. 46 0
      editor/images/translate.svg
  84. 2 2
      editor/js/Command.js
  85. 2 3
      editor/js/Config.js
  86. 7 3
      editor/js/Editor.js
  87. 2 2
      editor/js/EditorControls.js
  88. 2 2
      editor/js/History.js
  89. 3 3
      editor/js/Loader.js
  90. 2 2
      editor/js/Menubar.Add.js
  91. 2 2
      editor/js/Menubar.Edit.js
  92. 2 2
      editor/js/Menubar.Examples.js
  93. 2 2
      editor/js/Menubar.File.js
  94. 14 2
      editor/js/Menubar.Help.js
  95. 2 2
      editor/js/Menubar.Play.js
  96. 2 2
      editor/js/Menubar.Status.js
  97. 2 2
      editor/js/Menubar.View.js
  98. 2 2
      editor/js/Menubar.js
  99. 2 2
      editor/js/Script.js
  100. 2 2
      editor/js/Sidebar.Animation.js

+ 83 - 11
.github/CONTRIBUTING.md

@@ -1,7 +1,7 @@
 
 
 # Help
 # Help
-#### The issues section is for bug reports and feature requests only. If you need help, please use the [forum](http://discourse.threejs.org/) or [stackoverflow](http://stackoverflow.com/questions/tagged/three.js).
----
+The issues section is for bug reports and feature requests only. If you need help, please use the [forum](http://discourse.threejs.org/) or [stackoverflow](http://stackoverflow.com/questions/tagged/three.js).
+
 # Bugs
 # Bugs
 #### Before reporting a bug
 #### Before reporting a bug
 
 
@@ -17,13 +17,85 @@
 4. Provide a small test-case (http://jsfiddle.net). [Here is a fiddle](https://jsfiddle.net/3foLr7sn/) you can edit that runs the current version. [And here is a fiddle](https://jsfiddle.net/qgu17w5o/) that uses the dev branch. If a test-case is not possible, provide a link to a live version of your application.
 4. Provide a small test-case (http://jsfiddle.net). [Here is a fiddle](https://jsfiddle.net/3foLr7sn/) you can edit that runs the current version. [And here is a fiddle](https://jsfiddle.net/qgu17w5o/) that uses the dev branch. If a test-case is not possible, provide a link to a live version of your application.
 5. If helpful, include a screenshot. Annotate the screenshot for clarity.
 5. If helpful, include a screenshot. Annotate the screenshot for clarity.
 
 
----
 # Contribution
 # Contribution
-#### How to contribute to three.js
-
-1. Make sure you have a GitHub account.
-2. Fork the repository on GitHub.
-3. Check the [Contribution Guidelines](https://github.com/mrdoob/three.js/wiki/How-to-contribute-to-three.js).
-4. Make changes to your clone of the repository.
-5. If your changes leads to a change in examples, make a new screenshot with `npm run make-screenshot <example_name>`.
-6. Submit a pull request. Don't include build files in the PR.
+#### Introduction
+
+It is assumed that you know a little about node.js and git. If not, [here's some help to get started
+with git](https://help.github.com/en/github/using-git) and [here’s some help to get started with node.js.](https://nodejs.org/en/docs/guides/getting-started-guide/)
+
+* Install [Node.js](https://nodejs.org/)
+* Install [Git](https://git-scm.com/)
+* [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) three.js 
+* Open your OS’s terminal
+* Change into the directory you’d like
+* Clone your forked repo
+
+        git clone https://github.com/[yourgithubname]/three.js.git
+* Go into the three.js directory.
+        
+        cd ./three.js
+* Install the dependencies
+
+        npm install
+
+#### Next Steps
+
+As per the npm standard, ‘start’ is the place to begin the package.
+
+    npm start
+
+This script will start a local server similar to three.js, but instead will be hosted on your local
+machine. Browse to http://localhost:8080/ to check it out. It also automatically creates the
+‘build/three.js’ and ‘build/three.module.js’ scripts anytime there is a change within your three.js
+directory.
+
+The next most important script runs all the appropriate testing.
+        
+        npm test
+
+The linting is there to keep a consistent code-style across the all of the code and the testing is
+there to help catch bugs and check that the code behaves as expected. It is important that
+neither of these steps comes up with any errors due to your changes.
+* If you’d like the linter to fix any errors that it can change, make the following addition to the “test-lint” script.
+        
+        {
+        ...
+        "test-lint": "eslint src --ext js --ext ts --fix && tsc -p utils/build/tsconfig.lint.json"
+        ...
+        }
+
+If you’d like to make a minified version of the build files i.e. ‘build/three.min.js’ run:
+        
+    npm run-script build-closure
+
+#### Making changes
+
+When you’ve decided to make changes, start with the following:
+* Update your local repo
+        
+        git pull https://github.com/mrdoob/three.js.git
+        git push
+* Make a new branch from the dev branch
+        
+        git checkout dev
+        git branch [mychangesbranch]
+        git checkout [mychangesbranch]
+* Add your changes to your commit.
+* Push the changes to your forked repo.
+* Open a Pull Request (PR)
+
+Important notes:
+* Don't include any build files to your commit.
+* Not all new features will need a new example. Simpler features could be incorporated into an existing example. Bigger features may be asked to add an example demonstrating the feature.
+* Making changes may require changes to the documentation. If so, please make a new PR for the appropriate doc changes. To update the Chinese docs, simply copy the English to begin with.
+* it's good to also add an example and screenshot for it, for showing how it's used and for end-to-end testing.
+* If you modify existing code, run relevant examples to check they didn't break and there wasn't performance regress.
+* If you add some assets for the examples (models, textures, sounds, etc), make sure they have a proper license allowing for their use here, less restrictive the better. It is unlikely for large assets to be accepted.
+* If some issue is relevant to patch / feature, please mention it with hash (e.g. #2774) in a commit message to get cross-reference in GitHub.
+* If you modify files in examples/js directory, then don't perform any changes in the examples/jsm, JavaScript modules are auto-generated via running ‘node utils/modularize.js’.
+* If end-to-end test failed in Travis and you are sure that all is correct, make a new screenshots with npm run make-screenshot <example_1_name> ... <example_N_name> .
+* Watch out for Closure compiler warnings when building the libs, there should not be any.
+* Once done with a patch / feature do not add more commits to a feature branch
+* Create separate branches per patch or feature.
+
+This project is currently contributed to mostly via everyone's spare time. Please keep that in mind as it may take some time for the appropriate feedback to get to you. If you are unsure about adding a new feature, it might be better to ask first to see whether other people think it's a good idea.

+ 1 - 1
.github/ISSUE_TEMPLATE.md

@@ -17,7 +17,7 @@ Please also include a live example if possible. You can start from these templat
 ##### Three.js version
 ##### Three.js version
 
 
 - [ ] Dev
 - [ ] Dev
-- [ ] r116
+- [ ] r117
 - [ ] ...
 - [ ] ...
 
 
 ##### Browser
 ##### Browser

+ 10 - 38
.github/workflows/ci.yml

@@ -23,15 +23,7 @@ jobs:
       - name: Install node
       - name: Install node
         uses: actions/setup-node@v1
         uses: actions/setup-node@v1
         with:
         with:
-          node-version: '10.x'
-      - name: Restore cache
-        uses: actions/cache@v1
-        env:
-          cache-name: cache-node-modules
-        with:
-          path: ~/.npm
-          key: ${{ runner.os }}-ci-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
-          restore-keys: ${{ runner.os }}-ci-${{ env.cache-name }}-
+          node-version: 10
       - name: Install packages
       - name: Install packages
         run: npm ci
         run: npm ci
 
 
@@ -47,17 +39,11 @@ jobs:
       - name: Install node
       - name: Install node
         uses: actions/setup-node@v1
         uses: actions/setup-node@v1
         with:
         with:
-          node-version: '10.x'
-      - name: Restore cache
-        uses: actions/cache@v1
-        env:
-          cache-name: cache-node-modules
-        with:
-          path: ~/.npm
-          key: ${{ runner.os }}-ci-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
-          restore-keys: ${{ runner.os }}-ci-${{ env.cache-name }}-
+          node-version: 10
       - name: Install packages
       - name: Install packages
-        run: npm ci && npm run build-test
+        run: npm ci && npm ci --prefix test
+      - name: Build
+        run: npm run build
 
 
       - name: === Unit testing ===
       - name: === Unit testing ===
         run: npm run test-unit
         run: npm run test-unit
@@ -77,17 +63,11 @@ jobs:
       - name: Install node
       - name: Install node
         uses: actions/setup-node@v1
         uses: actions/setup-node@v1
         with:
         with:
-          node-version: '10.x'
-      - name: Restore cache
-        uses: actions/cache@v1
-        env:
-          cache-name: cache-node-modules
-        with:
-          path: ~/.npm
-          key: ${{ runner.os }}-ci-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
-          restore-keys: ${{ runner.os }}-ci-${{ env.cache-name }}-
+          node-version: 10
       - name: Install packages
       - name: Install packages
-        run: npm ci && sudo apt-get install xvfb && npm run build
+        run: npm ci && npm ci --prefix test && sudo apt-get install xvfb
+      - name: Build
+        run: npm run build
 
 
       - name: === E2E testing ===
       - name: === E2E testing ===
         run: xvfb-run --auto-servernum npm run test-e2e
         run: xvfb-run --auto-servernum npm run test-e2e
@@ -101,15 +81,7 @@ jobs:
       - name: Install node
       - name: Install node
         uses: actions/setup-node@v1
         uses: actions/setup-node@v1
         with:
         with:
-          node-version: '10.x'
-      - name: Restore cache
-        uses: actions/cache@v1
-        env:
-          cache-name: cache-node-modules
-        with:
-          path: ~/.npm
-          key: ${{ runner.os }}-ci-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
-          restore-keys: ${{ runner.os }}-ci-${{ env.cache-name }}-
+          node-version: 10
       - name: Install packages
       - name: Install packages
         run: npm ci
         run: npm ci
 
 

+ 15 - 2
.gitignore

@@ -1,10 +1,23 @@
 .DS_Store
 .DS_Store
 *.swp
 *.swp
 .project
 .project
-node_modules
 .idea/
 .idea/
 .vscode/
 .vscode/
 npm-debug.log
 npm-debug.log
 .jshintrc
 .jshintrc
 .vs/
 .vs/
-test/unit/three.*.unit.js
+
+# The command'npm install --prefix test' adds files in the test folder (https://docs.npmjs.com/configuring-npm/folders.html#executables).
+# There are 2 kinds of files, those without extension and those with cmd extension.
+# To ignore files without a extension, following procedure is nessecary:
+# - ignore all files in the test folder
+# - unignore all files in subdirectories of the test folder
+# - unignore all files with an extension in the test folder
+test/*
+!test/*/
+!test/*.*
+test/*.cmd
+test/unit/build
+
+
+**/node_modules

+ 0 - 7
.npmignore

@@ -1,7 +0,0 @@
-examples/*
-!examples/js/
-test/
-utils/
-docs/
-editor/
-.DS_Store

+ 76 - 0
CODE_OF_CONDUCT.md

@@ -0,0 +1,76 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, sex characteristics, gender identity and expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at [email protected]. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see
+https://www.contributor-covenant.org/faq

+ 8 - 0
README.md

@@ -66,6 +66,14 @@ function animate() {
 
 
 If everything went well, you should see [this](https://jsfiddle.net/8kubjpL5/).
 If everything went well, you should see [this](https://jsfiddle.net/8kubjpL5/).
 
 
+### Cloning this repository ###
+
+Cloning the repo with all its history results in a ~2GB download. If you don't need the whole history you can use the `depth` parameter to significantly reduce download size.
+
+```sh
+git clone --depth=1 https://github.com/mrdoob/three.js.git
+```
+
 ### Change log ###
 ### Change log ###
 
 
 [Releases](https://github.com/mrdoob/three.js/releases)
 [Releases](https://github.com/mrdoob/three.js/releases)

文件差异内容过多而无法显示
+ 238 - 195
build/three.js


文件差异内容过多而无法显示
+ 447 - 549
build/three.min.js


文件差异内容过多而无法显示
+ 320 - 305
build/three.module.js


+ 13 - 16
docs/api/en/cameras/CubeCamera.html

@@ -16,12 +16,16 @@
 
 
 		<h2>Code Example</h2>
 		<h2>Code Example</h2>
 
 
-		<code>// Create cube camera
-		var cubeCamera = new THREE.CubeCamera( 1, 100000, 128 );
+		<code>
+		// Create cube render target
+		var cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 128, { format: THREE.RGBFormat, generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } );
+
+		// Create cube camera
+		var cubeCamera = new THREE.CubeCamera( 1, 100000, cubeRenderTarget );
 		scene.add( cubeCamera );
 		scene.add( cubeCamera );
 
 
 		// Create car
 		// Create car
-		var chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeCamera.renderTarget.texture } );
+		var chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeRenderTarget.texture } );
 		var car = new Mesh( carGeometry, chromeMaterial );
 		var car = new Mesh( carGeometry, chromeMaterial );
 		scene.add( car );
 		scene.add( car );
 
 
@@ -45,36 +49,29 @@
 		<h2>Constructor</h2>
 		<h2>Constructor</h2>
 
 
 
 
-		<h3>[name]( [param:Number near], [param:Number far], [param:Number cubeResolution], [param:Object options] )</h3>
+		<h3>[name]( [param:Number near], [param:Number far], [param:WebGLCubeRenderTarget renderTarget] )</h3>
 		<p>
 		<p>
 		near -- The near clipping distance. <br />
 		near -- The near clipping distance. <br />
-		far -- The far clipping distance <br />
-		cubeResolution -- Sets the length of the cube's edges. <br />
-		options - (optional) object that holds texture parameters passed to the auto-generated WebGLCubeRenderTarget.
-		If not specified, the options default to:
-		<code>
-		{ format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter }
-		</code>
-
+		far -- The far clipping distance. <br />
+		renderTarget -- The destination cube render target.
 		</p>
 		</p>
+
 		<p>
 		<p>
 		Constructs a CubeCamera that contains 6 [page:PerspectiveCamera PerspectiveCameras] that
 		Constructs a CubeCamera that contains 6 [page:PerspectiveCamera PerspectiveCameras] that
 		render to a [page:WebGLCubeRenderTarget].
 		render to a [page:WebGLCubeRenderTarget].
 		</p>
 		</p>
 
 
-
 		<h2>Properties</h2>
 		<h2>Properties</h2>
 		<p>See the base [page:Object3D] class for common properties.</p>
 		<p>See the base [page:Object3D] class for common properties.</p>
 
 
 		<h3>[property:WebGLCubeRenderTarget renderTarget]</h3>
 		<h3>[property:WebGLCubeRenderTarget renderTarget]</h3>
 		<p>
 		<p>
-		The cube texture that gets generated.
+		The destination cube render target.
 		</p>
 		</p>
 
 
 		<h2>Methods</h2>
 		<h2>Methods</h2>
 		<p>See the base [page:Object3D] class for common methods.</p>
 		<p>See the base [page:Object3D] class for common methods.</p>
 
 
-
 		<h3>[method:null update]( [param:WebGLRenderer renderer], [param:Scene scene] )</h3>
 		<h3>[method:null update]( [param:WebGLRenderer renderer], [param:Scene scene] )</h3>
 		<p>
 		<p>
 		renderer -- The current WebGL renderer <br />
 		renderer -- The current WebGL renderer <br />
@@ -86,7 +83,7 @@
 
 
 		<h3>[method:null clear]( [param:WebGLRenderer renderer], [param:Boolean color], [param:Boolean depth], [param:Boolean stencil] )</h3>
 		<h3>[method:null clear]( [param:WebGLRenderer renderer], [param:Boolean color], [param:Boolean depth], [param:Boolean stencil] )</h3>
 		<p>
 		<p>
-		Call this to clear the [page:CubeCamera.renderTarget renderTarget] color, depth, and/or stencil buffers.
+		Call this to clear the renderTarget's color, depth, and/or stencil buffers.
 		The color buffer is set to the renderer's current clear color. Arguments default to *true*.
 		The color buffer is set to the renderer's current clear color. Arguments default to *true*.
 		</p>
 		</p>
 
 

+ 0 - 1
docs/api/en/constants/Renderer.html

@@ -55,7 +55,6 @@
 		THREE.NoToneMapping
 		THREE.NoToneMapping
 		THREE.LinearToneMapping
 		THREE.LinearToneMapping
 		THREE.ReinhardToneMapping
 		THREE.ReinhardToneMapping
-		THREE.Uncharted2ToneMapping
 		THREE.CineonToneMapping
 		THREE.CineonToneMapping
 		THREE.ACESFilmicToneMapping
 		THREE.ACESFilmicToneMapping
 		</code>
 		</code>

+ 0 - 5
docs/api/en/constants/Textures.html

@@ -17,7 +17,6 @@
 		THREE.CubeRefractionMapping
 		THREE.CubeRefractionMapping
 		THREE.EquirectangularReflectionMapping
 		THREE.EquirectangularReflectionMapping
 		THREE.EquirectangularRefractionMapping
 		THREE.EquirectangularRefractionMapping
-		THREE.SphericalReflectionMapping
 		THREE.CubeUVReflectionMapping
 		THREE.CubeUVReflectionMapping
 		THREE.CubeUVRefractionMapping
 		THREE.CubeUVRefractionMapping
 		</code>
 		</code>
@@ -38,10 +37,6 @@
 		vertical axis, with the top and bottom edges of the image corresponding to the north and south poles
 		vertical axis, with the top and bottom edges of the image corresponding to the north and south poles
 		of a mapped sphere.<br /><br />
 		of a mapped sphere.<br /><br />
 
 
-		[page:Constant SphericalReflectionMapping] is for use with a spherical reflection map such as may be obtained
-		by cropping a photograph of a mirrored ball.  Sphere maps will be rendered "facing" the camera, irrespective
-		of the position of the camera relative to the cubemapped object or surface.<br /><br />
-
 		See the [example:webgl_materials_envmaps materials / envmaps] example.
 		See the [example:webgl_materials_envmaps materials / envmaps] example.
 		</p>
 		</p>
 
 

+ 2 - 2
docs/api/en/core/InstancedBufferGeometry.html

@@ -24,9 +24,9 @@
 		<h2>Properties</h2>
 		<h2>Properties</h2>
 		<p>See [page:BufferGeometry] for inherited properties.</p>
 		<p>See [page:BufferGeometry] for inherited properties.</p>
 
 
-		<h3>[property:Number maxInstancedCount]</h3>
+		<h3>[property:Number instanceCount]</h3>
 		<p>
 		<p>
-			Default is *undefined*.
+			Default is *Infinity*.
 		</p>
 		</p>
 
 
 		<h2>Methods</h2>
 		<h2>Methods</h2>

+ 17 - 3
docs/api/en/core/InterleavedBuffer.html

@@ -59,6 +59,11 @@
 		Default is *-1*.
 		Default is *-1*.
 		</p>
 		</p>
 
 
+		<h3>[property:String uuid]</h3>
+		<p>
+		[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this instance. This gets automatically assigned, so this shouldn't be edited.
+		</p>
+
 		<h3>[property:Integer version]</h3>
 		<h3>[property:Integer version]</h3>
 		<p>
 		<p>
 		A version number, incremented every time the needsUpdate property is set to true.
 		A version number, incremented every time the needsUpdate property is set to true.
@@ -93,13 +98,22 @@
 			Stores multiple values in the buffer, reading input values from a specified array.
 			Stores multiple values in the buffer, reading input values from a specified array.
 		</p>
 		</p>
 
 
-		<h3>[method:InterleavedBuffer clone]() </h3>
+		<h3>[method:InterleavedBuffer clone]( [param:Object data] ) </h3>
 		<p>
 		<p>
+			data - This object holds shared array buffers required for properly cloning geometries with interleaved attributes.<br/><br />
+
 			Creates a clone of this [name].
 			Creates a clone of this [name].
 		</p>
 		</p>
 
 
-		<h3>[method:BufferAttribute setUsage] ( [param:Usage value] ) </h3>
-		<p>Set [page:BufferAttribute.usage usage] to value.</p>
+		<h3>[method:InterleavedBuffer setUsage] ( [param:Usage value] ) </h3>
+		<p>Set [page:InterleavedBuffer.usage usage] to value.</p>
+
+		<h3>[method:InterleavedBuffer toJSON]( [param:Object data] ) </h3>
+		<p>
+			data - This object holds shared array buffers required for properly serializing geometries with interleaved attributes.<br/><br />
+
+			Serializes this [name].
+		</p>
 
 
 		<h2>Source</h2>
 		<h2>Source</h2>
 
 

+ 5 - 0
docs/api/en/core/InterleavedBufferAttribute.html

@@ -45,6 +45,11 @@
 			How many values make up each item.
 			How many values make up each item.
 		</p>
 		</p>
 
 
+		<h3>[property:String name]</h3>
+		<p>
+		Optional name for this attribute instance. Default is an empty string.
+		</p>
+
 		<h3>[property:Integer offset]</h3>
 		<h3>[property:Integer offset]</h3>
 		<p>
 		<p>
 			The offset in the underlying array buffer where an item starts.
 			The offset in the underlying array buffer where an item starts.

+ 2 - 2
docs/api/en/extras/core/Curve.html

@@ -79,7 +79,7 @@
 			using [page:.getPoint].
 			using [page:.getPoint].
 		 </p>
 		 </p>
 
 
-		<h3>[method:Vector getTangent]( [param:Float t, [param:Vector optionalTarget] ] )</h3>
+		<h3>[method:Vector getTangent]( [param:Float t], [param:Vector optionalTarget] )</h3>
 		<p>
 		<p>
 			[page:Float t] - A position on the curve. Must be in the range [ 0, 1 ]. <br>
 			[page:Float t] - A position on the curve. Must be in the range [ 0, 1 ]. <br>
 			[page:Vector optionalTarget] — (optional) If specified, the result will be copied into this Vector,
 			[page:Vector optionalTarget] — (optional) If specified, the result will be copied into this Vector,
@@ -90,7 +90,7 @@
 			which seems to give a reasonable approximation.
 			which seems to give a reasonable approximation.
 		</p>
 		</p>
 
 
-		<h3>[method:Vector getTangentAt]( [param:Float u, [param:Vector optionalTarget] ] )</h3>
+		<h3>[method:Vector getTangentAt]( [param:Float u], [param:Vector optionalTarget] )</h3>
 		<p>
 		<p>
 			[page:Float u] - A position on the curve according to the arc length. Must be in the range [ 0, 1 ]. <br>
 			[page:Float u] - A position on the curve according to the arc length. Must be in the range [ 0, 1 ]. <br>
 			[page:Vector optionalTarget] — (optional) If specified, the result will be copied into this Vector,
 			[page:Vector optionalTarget] — (optional) If specified, the result will be copied into this Vector,

+ 3 - 1
docs/api/en/extras/curves/CatmullRomCurve3.html

@@ -66,12 +66,14 @@
 		<p>Possible values are *centripetal*, *chordal* and *catmullrom*.</p>
 		<p>Possible values are *centripetal*, *chordal* and *catmullrom*.</p>
 
 
 		<h3>[property:float tension]</h3>
 		<h3>[property:float tension]</h3>
-		<p>When [page:.type] is *catmullrom*, defines catmullrom's tension.</p>
+		<p>When [page:.curveType] is *catmullrom*, defines catmullrom's tension.</p>
 
 
 
 
 		<h2>Methods</h2>
 		<h2>Methods</h2>
 		<p>See the base [page:Curve] class for common methods.</p>
 		<p>See the base [page:Curve] class for common methods.</p>
 
 
+		<h2>Source</h2>
+
 		<p>
 		<p>
 			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 		</p>
 		</p>

+ 81 - 5
docs/api/en/extras/objects/ImmediateRenderObject.html

@@ -12,27 +12,103 @@
 
 
 		<h1>[name]</h1>
 		<h1>[name]</h1>
 
 
-		<p class="desc">base class for immediate rendering objects.</p>
+		<p class="desc">
+			This experimental class provides a fast code path for rendering meshes with frequently updated
+			geometry data. When the renderer encounters an instance of [name], it only takes care about
+			the most primitive rendering operations (e.g. binding vertex attributes, determining correct shader
+			program or perfoming the actual draw call). Features like view frustum culling, wireframe rendering
+			or using multiple materials are not supported. Besides [name] can only be used to render triangles.
+		</p>
+
+		<p class="desc">
+			[name] does not work with instances of [page:BufferGeometry] or [page:Geometry]. The
+			raw geometry data have to be maintained as properties of the [name].
+		</p>
+
+		<p class="desc">
+			Using [name] makes only sense if you are updating your geometry data per frame. You can then
+			benefit of a faster code path compared to the default mesh redering logic.
+		</p>
 
 
+		<h2>Examples</h2>
+		<p>
+			[example:webgl_marchingcubes Marching Cubes]
+		</p>
 
 
 		<h2>Constructor</h2>
 		<h2>Constructor</h2>
 
 
 
 
-		<h3>[name]()</h3>
+		<h3>[name]( [param:Material material] )</h3>
 		<p>
 		<p>
-		This creates a new [name].
+		[page:Material material] — The material of the [name].
 		</p>
 		</p>
 
 
+		<h2>Properties</h2>
+		<p>See the base [page:Object3D] class for common properties.</p>
+
+		<h3>[property:Boolean material]</h3>
+		<p>
+			The material of the [name]. Assigning multiple materials is not supported.
+		</p>
+
+		<h3>[property:Boolean hasPositions]</h3>
+		<p>
+			Whether position data are defined or not. Default is *false*.
+		</p>
+
+		<h3>[property:Boolean hasNormals]</h3>
+		<p>
+			Whether normal data are defined or not. Default is *false*.
+		</p>
+
+		<h3>[property:Boolean hasColors]</h3>
+		<p>
+			Whether color data are defined or not. Default is *false*.
+		</p>
+
+		<h3>[property:Boolean hasUvs]</h3>
+		<p>
+			Whether texture coordinates are defined or not. Default is *false*.
+		</p>
+
+		<h3>[property:Float32Array positionArray]</h3>
+		<p>
+			The buffer holding position data. Default is *null*.
+		</p>
+
+		<h3>[property:Float32Array normalArray]</h3>
+		<p>
+			The buffer holding normal data. Default is *null*.
+		</p>
+
+		<h3>[property:Float32Array colorArray]</h3>
+		<p>
+			The buffer holding color data. Default is *null*.
+		</p>
+
+		<h3>[property:Float32Array uvArray]</h3>
+		<p>
+			The buffer holding texture coordinates. Default is *null*.
+		</p>
+
+		<h3>[property:Integer count]</h3>
+		<p>
+			The number of primitives to be rendered. Default is *0*.
+			This property will be set to *0* after each rendering so you usually
+			set it in the implementatio of [page:.render]().
+		</p>
 
 
 		<h2>Methods</h2>
 		<h2>Methods</h2>
 
 
+		<p>See the base [page:Object3D] class for common methods.</p>
 
 
 		<h3>[method:null render]([param:Function renderCallback])</h3>
 		<h3>[method:null render]([param:Function renderCallback])</h3>
 		<p>
 		<p>
-		renderCallback -- A function to render the generated object.
+		renderCallback -- A function to render the generated geometry data.
 		</p>
 		</p>
 		<p>
 		<p>
-		This function needs to be overridden to start the creation of the object and should call renderCallback when finished.
+		This method needs to be implemented by the deriving class of [name]. You normally want to implement the
+		vertex buffer update logic and execute *renderCallback* at the end of your implementation.
 		</p>
 		</p>
 
 
 		<h2>Source</h2>
 		<h2>Source</h2>

+ 70 - 0
docs/api/en/lights/LightProbe.html

@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr; [page:Light] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			Light probes are an alternative way of adding light to a 3D scene. Unlike classical light sources (e.g. directional,
+			point or spot lights), light probes do not emit light. Instead they store information about light passing through
+			3D space. During rendering, the light that hits a 3D object is approximated by using the data from the light probe.
+		</p>
+
+		<p class="desc">
+			Light probes are usually created from (radiance) environment maps. The class [page:LightProbeGenerator] can
+			be used to create light probes from instances of [page:CubeTexture] or [page:WebGLCubeRenderTarget].
+			However, light estimation data could also be provided in other forms e.g. by WebXR. This enables the rendering
+			of augmented reality content that reacts to real world lighting.
+		</p>
+
+		<p class="desc">
+			The current probe implementation in three.js supports so-called diffuse light probes. This type of light probe
+			is functionally equivalent to an irradiance environment map.
+		</p>
+
+		<h2>Examples</h2>
+		<p>
+			[example:webgl_lightprobe WebGL / light probe ]<br />
+			[example:webgl_lightprobe_cubecamera WebGL / light probe / cube camera ]
+		</p>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [param:SphericalHarmonics3 sh], [param:Float intensity] )</h3>
+		<p>
+		[page:SphericalHarmonics3 sh] - (optional) An instance of [page:SphericalHarmonics3].<br />
+		[page:Float intensity] - (optional) Numeric value of the light probe's intensity. Default is 1.<br /><br />
+
+		Creates a new [name].
+		</p>
+
+		<h2>Properties</h2>
+		<p>
+				See the base [page:Light Light] class for common properties. The [page:Light.color color] property is currently
+				not evaluated and thus has no effect.
+		</p>
+
+		<h3>[property:SphericalHarmonics3 sh]</h3>
+		<p>
+			A light probe uses spherical harmonics to encode lighting information.
+		</p>
+
+		<h2>Methods</h2>
+		<p>
+				See the base [page:Light Light] class for common methods.
+		</p>
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 0 - 10
docs/api/en/loaders/FileLoader.html

@@ -69,9 +69,6 @@
 			See [page:.setMimeType]. Default is *undefined*.
 			See [page:.setMimeType]. Default is *undefined*.
 		</p>
 		</p>
 
 
-		<h3>[property:Object requestHeader]</h3>
-		<p>The [link:https://developer.mozilla.org/en-US/docs/Glossary/Request_header request header] used in HTTP request. See [page:.setRequestHeader]. Default is *undefined*.</p>
-
 		<h3>[property:String responseType]</h3>
 		<h3>[property:String responseType]</h3>
 		<p>The expected response type. See [page:.setResponseType]. Default is *undefined*.</p>
 		<p>The expected response type. See [page:.setResponseType]. Default is *undefined*.</p>
 
 
@@ -102,13 +99,6 @@
 			of the file being loaded. Note that in many cases this will be determined automatically, so by default it is *undefined*.
 			of the file being loaded. Note that in many cases this will be determined automatically, so by default it is *undefined*.
 		</p>
 		</p>
 
 
-		<h3>[method:FileLoader setRequestHeader]( [param:Object requestHeader] )</h3>
-		<p>
-			[page:object requestHeader] - key: The name of the header whose value is to be set. value: The value to set as the body of the header.<br /><br />
-
-			Set the [link:https://developer.mozilla.org/en-US/docs/Glossary/Request_header request header] used in HTTP request.
-		</p>
-
 		<h3>[method:FileLoader setResponseType]( [param:String responseType] )</h3>
 		<h3>[method:FileLoader setResponseType]( [param:String responseType] )</h3>
 		<p>
 		<p>
 			Change the response type. Valid values are:<br />
 			Change the response type. Valid values are:<br />

+ 12 - 0
docs/api/en/loaders/Loader.html

@@ -50,6 +50,11 @@
 			Default is the empty string.
 			Default is the empty string.
 		</p>
 		</p>
 
 
+		<h3>[property:Object requestHeader]</h3>
+		<p>
+			The [link:https://developer.mozilla.org/en-US/docs/Glossary/Request_header request header] used in HTTP request. See [page:.setRequestHeader]. Default is empty object.
+		</p>
+
 		<h2>Methods</h2>
 		<h2>Methods</h2>
 
 
 		<h3>[method:void load]()</h3>
 		<h3>[method:void load]()</h3>
@@ -89,6 +94,13 @@
 			[page:String resourcePath] — Set the base path for dependent resources like textures.
 			[page:String resourcePath] — Set the base path for dependent resources like textures.
 		</p>
 		</p>
 
 
+		<h3>[method:Loader setRequestHeader]( [param:Object requestHeader] )</h3>
+		<p>
+			[page:object requestHeader] - key: The name of the header whose value is to be set. value: The value to set as the body of the header.<br /><br />
+
+			Set the [link:https://developer.mozilla.org/en-US/docs/Glossary/Request_header request header] used in HTTP request.
+		</p>
+
 		<h2>Source</h2>
 		<h2>Source</h2>
 
 
 		<p>
 		<p>

+ 0 - 1
docs/api/en/loaders/ObjectLoader.html

@@ -55,7 +55,6 @@
 		<h2>Examples</h2>
 		<h2>Examples</h2>
 
 
 		<p>
 		<p>
-			[example:webgl_loader_json_claraio WebGL / loader / json / claraio]<br />
 			[example:webgl_materials_lightmap WebGL / materials / lightmap]
 			[example:webgl_materials_lightmap WebGL / materials / lightmap]
 		</p>
 		</p>
 
 

+ 2 - 0
docs/api/en/materials/LineBasicMaterial.html

@@ -88,6 +88,8 @@
 			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
 			property and it is ignored by the [page:WebGLRenderer WebGL] renderer.
 		</p>
 		</p>
 
 
+		<h3>[property:Boolean morphTargets]</h3>
+		<p>Define whether the material uses morphTargets. Default is false.</p>
 
 
 		<h2>Methods</h2>
 		<h2>Methods</h2>
 		<p>See the base [page:Material] class for common methods.</p>
 		<p>See the base [page:Material] class for common methods.</p>

+ 1 - 1
docs/api/en/materials/Material.html

@@ -211,7 +211,7 @@
 		<h3>[property:Boolean premultipliedAlpha]</h3>
 		<h3>[property:Boolean premultipliedAlpha]</h3>
 		<p>
 		<p>
 		Whether to premultiply the alpha (transparency) value.
 		Whether to premultiply the alpha (transparency) value.
-		See [Example:webgl_materials_transparency WebGL / Materials / Transparency] for an example of the difference.
+		See [Example:webgl_materials_physical_transparency WebGL / Materials / Physical / Transparency] for an example of the difference.
 		Default is *false*.
 		Default is *false*.
 		</p>
 		</p>
 
 

+ 1 - 1
docs/api/en/math/Box3.html

@@ -42,7 +42,7 @@
 		[page:Vector3 min] - (optional) [page:Vector3] representing the lower (x, y, z) boundary of the box.
 		[page:Vector3 min] - (optional) [page:Vector3] representing the lower (x, y, z) boundary of the box.
 		Default is ( + Infinity, + Infinity, + Infinity ).<br>
 		Default is ( + Infinity, + Infinity, + Infinity ).<br>
 
 
-		[page:Vector3 max] - (optional) [page:Vector3] representing the lower upper (x, y, z) boundary of the box.
+		[page:Vector3 max] - (optional) [page:Vector3] representing the upper (x, y, z) boundary of the box.
 		Default is ( - Infinity, - Infinity, - Infinity ).<br /><br />
 		Default is ( - Infinity, - Infinity, - Infinity ).<br /><br />
 
 
 		Creates a [name] bounded by min and max.
 		Creates a [name] bounded by min and max.

+ 8 - 0
docs/api/en/math/Color.html

@@ -179,6 +179,14 @@ var color = new THREE.Color( 1, 0, 0 );
 		Sets this color's components based on an array formatted like [ [page:Float r], [page:Float g], [page:Float b] ].
 		Sets this color's components based on an array formatted like [ [page:Float r], [page:Float g], [page:Float b] ].
 		</p>
 		</p>
 
 
+		<h3>[method:this fromBufferAttribute]( [param:BufferAttribute attribute], [param:Integer index] )</h3>
+		<p>
+		[page:BufferAttribute attribute] - the source attribute.<br />
+		[page:Integer index] - index in the attribute.<br /><br />
+
+		Sets this color's components from the [page:BufferAttribute attribute].
+		</p>
+
 		<h3>[method:Integer getHex]()</h3>
 		<h3>[method:Integer getHex]()</h3>
 		<p>Returns the hexadecimal value of this color.</p>
 		<p>Returns the hexadecimal value of this color.</p>
 
 

+ 1 - 4
docs/api/en/math/Matrix4.html

@@ -125,10 +125,7 @@ m.elements = [ 11, 21, 31, 41,
 		<h3>[method:this compose]( [param:Vector3 position], [param:Quaternion quaternion], [param:Vector3 scale] )</h3>
 		<h3>[method:this compose]( [param:Vector3 position], [param:Quaternion quaternion], [param:Vector3 scale] )</h3>
 		<p>
 		<p>
 		Sets this matrix to the transformation composed of [page:Vector3 position],
 		Sets this matrix to the transformation composed of [page:Vector3 position],
-		[page:Quaternion quaternion] and [page:Vector3 scale]. Internally this calls
-		[page:.makeRotationFromQuaternion makeRotationFromQuaternion]( [page:Quaternion quaternion] )
-		followed by [page:.scale scale]( [page:Vector3 scale] ), then finally
-		[page:.setPosition setPosition]( [page:Vector3 position] ).
+		[page:Quaternion quaternion] and [page:Vector3 scale].
 		</p>
 		</p>
 
 
 		<h3>[method:this copy]( [param:Matrix4 m] )</h3>
 		<h3>[method:this copy]( [param:Matrix4 m] )</h3>

+ 1 - 1
docs/api/en/math/Ray.html

@@ -118,7 +118,7 @@
 		<p>
 		<p>
 		[page:Ray ray] - the [page:Ray] to compare to.<br /><br />
 		[page:Ray ray] - the [page:Ray] to compare to.<br /><br />
 
 
-		Returns true if this and the other [page:Ray ray] have equal [page:.offset offset]
+		Returns true if this and the other [page:Ray ray] have equal [page:.origin origin]
 		 and [page:.direction direction].
 		 and [page:.direction direction].
 		</p>
 		</p>
 
 

+ 138 - 0
docs/api/en/math/SphericalHarmonics3.html

@@ -0,0 +1,138 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">Represents a third-order spherical harmonics (SH). Light probes use this class to encode lighting information.</p>
+
+		<h2>Constructor</h2>
+		<h3>[name]()</h3>
+		<p>
+		Creates a new instance of [name].
+		</p>
+
+		<h2>Properties</h2>
+
+		<h3>[property:Array coefficients]</h3>
+		<p>An array holding the (9) SH coefficients. A single coefficient is represented as an instance of [page:Vector3].</p>
+
+		<h2>Methods</h2>
+
+		<h3>[method:SphericalHarmonics3 add]( [param:SphericalHarmonics3 sh] )</h3>
+		<p>
+			[page:SphericalHarmonics3 sh] - The SH to add.<br /><br />
+
+			Adds the given SH to this instance.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 addScaledSH]( [param:SphericalHarmonics3 sh], [param:Number scale] )</h3>
+		<p>
+			[page:SphericalHarmonics3 sh] - The SH to add.<br />
+			[page:Number scale] - The scale factor.<br /><br />
+
+			A convenience method for performing [page:.add]() and [page:.scale]() at once.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 clone]()</h3>
+		<p>
+			Returns a new instance of [name] with equal coefficients.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 copy]( [param:SphericalHarmonics3 sh] )</h3>
+		<p>
+			[page:SphericalHarmonics3 sh] - The SH to copy.<br /><br />
+
+			Copies the given SH to this instance.
+		</p>
+
+		<h3>[method:Boolean equals]( [param:SphericalHarmonics3 sh] )</h3>
+		<p>
+			[page:SphericalHarmonics3 sh] - The SH to compare with.<br /><br />
+
+			Returns true if the given SH and this instance have equal coefficients.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 fromArray]( [param:Array array], [param:Number offset] )</h3>
+		<p>
+			[page:Array array] - The array holding the numbers of the SH coefficients.<br />
+			[page:Number offset] - (optional) The array offset.<br /><br />
+
+			Sets the coefficients of this instance from the given array.
+		</p>
+
+		<h3>[method:Vector3 getAt]( [param:Vector3 normal], [param:Vector3 target] )</h3>
+		<p>
+			[page:Vector3 normal] - The normal vector (assumed to be unit length).<br />
+			[page:Vector3 target] - The result vector.<br /><br />
+
+			Returns the radiance in the direction of the given normal.
+		</p>
+
+		<h3>[method:Vector3 getIrradianceAt]( [param:Vector3 normal], [param:Vector3 target] )</h3>
+		<p>
+			[page:Vector3 normal] - The normal vector (assumed to be unit length).<br />
+			[page:Vector3 target] - The result vector.<br /><br />
+
+			Returns the irradiance (radiance convolved with cosine lobe) in the direction of the given normal.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 lerp]( [param:SphericalHarmonics3 sh], [param:Number alpha] )</h3>
+		<p>
+			[page:SphericalHarmonics3 sh] - The SH to interpolate with.<br />
+			[page:Number alpha] - The alpha factor.<br /><br />
+
+			Linear interpolates between the given SH and this instance by the given alpha factor.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 scale]( [param:Number scale] )</h3>
+		<p>
+			[page:Number sh] - The scale factor.<br /><br />
+
+			Scales this SH by the given scale factor.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 set]( [param:Array coefficients] )</h3>
+		<p>
+			[page:Array coefficients] - An array of SH coefficients.<br /><br />
+
+			Sets the given SH coefficients to this instance.
+		</p>
+
+		<h3>[method:Array toArray]( [param:Array array], [param:Number offset] )</h3>
+		<p>
+			[page:Array array] - (optional) The target array.<br />
+			[page:Number offset] - (optional) The array offset.<br /><br />
+
+			Returns an array with the coefficients, or copies them into the provided array. The coefficients
+			are represented as numbers.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 zero]()</h3>
+		<p>
+			Sets all SH coefficients to 0.
+		</p>
+
+		<h2>Static Methods</h2>
+
+		<h3>[method:void getBasisAt]( [param:Vector3 normal], [param:Array shBasis] )</h3>
+		<p>
+			[page:Vector3 normal] - The normal vector (assumed to be unit length).<br />
+			[page:Array shBasis] - The resulting SH basis.<br /><br />
+
+			Computes the SH basis for the given normal vector.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 16 - 0
docs/api/en/objects/Line.html

@@ -60,6 +60,17 @@
 		<h3>[property:Material material]</h3>
 		<h3>[property:Material material]</h3>
 		<p>Material for the line.</p>
 		<p>Material for the line.</p>
 
 
+		<h3>[property:Array morphTargetInfluences]</h3>
+		<p>
+		An array of weights typically from 0-1 that specify how much of the morph is applied.
+		Undefined by default, but reset to a blank array by [page:.updateMorphTargets]().
+		</p>
+
+		<h3>[property:Object morphTargetDictionary]</h3>
+		<p>
+		A dictionary of morphTargets based on the morphTarget.name property.
+		Undefined by default, but rebuilt [page:.updateMorphTargets]().
+		</p>
 
 
 		<h2>Methods</h2>
 		<h2>Methods</h2>
 		<p>See the base [page:Object3D] class for common methods.</p>
 		<p>See the base [page:Object3D] class for common methods.</p>
@@ -80,6 +91,11 @@
 		Returns a clone of this Line object and its descendants.
 		Returns a clone of this Line object and its descendants.
 		</p>
 		</p>
 
 
+		<h3>[method:null updateMorphTargets]()</h3>
+		<p>
+		Updates the morphTargets to have no influence on the object. Resets the
+		[page:.morphTargetInfluences] and [page:.morphTargetDictionary] properties.
+		</p>
 
 
 		<h2>Source</h2>
 		<h2>Source</h2>
 
 

+ 48 - 0
docs/api/en/renderers/WebGL1Renderer.html

@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:WebGLRenderer] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+		Since r118 [page:WebGLRenderer] automatically uses a WebGL 2 rendering context. When upgrading an existing project to
+		=> r118, applications might break because of two reasons:
+
+		<ul>
+			<li>Custom shader code needs to be GLSL 3.0 conform.</li>
+			<li>WebGL 1 extension checks have to be changed.</li>
+		</ul>
+
+		If you can't afford the time to upgrade your code but still want to use the latest version, you can use [name]. This
+		version of the renderer will enforce a WebGL 1 rendering context.
+		</p>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [param:Object parameters] )</h3>
+		<p>
+		Creates a new [name].
+		</p>
+
+		<h2>Properties</h2>
+		<p>See the base [page:WebGLRenderer] class for common properties.</p>
+
+
+		<h2>Methods</h2>
+		<p>See the base [page:WebGLRenderer] class for common methods.</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 3 - 8
docs/api/en/renderers/WebGLRenderer.html

@@ -275,11 +275,6 @@
 		Exposure level of tone mapping. Default is *1*.
 		Exposure level of tone mapping. Default is *1*.
 		</p>
 		</p>
 
 
-		<h3>[property:Number toneMappingWhitePoint]</h3>
-		<p>
-		Tone mapping white point. Default is *1*.
-		</p>
-
 		<h3>[property:WebXRManager xr]</h3>
 		<h3>[property:WebXRManager xr]</h3>
 		<p>
 		<p>
 		Provides access to the WebXR related [page:WebXRManager interface] of the renderer.
 		Provides access to the WebXR related [page:WebXRManager interface] of the renderer.
@@ -303,7 +298,7 @@
 		<h3>[method:null clearStencil]( )</h3>
 		<h3>[method:null clearStencil]( )</h3>
 		<p>Clear the stencil buffers. Equivalent to calling [page:WebGLRenderer.clear .clear]( false, false, true ).</p>
 		<p>Clear the stencil buffers. Equivalent to calling [page:WebGLRenderer.clear .clear]( false, false, true ).</p>
 
 
-		<h3>[method:null compile]( [param:Scene scene], [param:Camera camera] )</h3>
+		<h3>[method:null compile]( [param:Object3D scene], [param:Camera camera] )</h3>
 		<p>Compiles all materials in the scene with the camera. This is useful to precompile shaders before the first rendering.</p>
 		<p>Compiles all materials in the scene with the camera. This is useful to precompile shaders before the first rendering.</p>
 
 
 		<h3>[method:null copyFramebufferToTexture]( [param:Vector2 position], [param:Texture texture], [param:Number level] )</h3>
 		<h3>[method:null copyFramebufferToTexture]( [param:Vector2 position], [param:Texture texture], [param:Number level] )</h3>
@@ -409,9 +404,9 @@
 		<p>For reading out a [page:WebGLCubeRenderTarget WebGLCubeRenderTarget] use the optional parameter activeCubeFaceIndex to determine which face should be read.</p>
 		<p>For reading out a [page:WebGLCubeRenderTarget WebGLCubeRenderTarget] use the optional parameter activeCubeFaceIndex to determine which face should be read.</p>
 
 
 
 
-		<h3>[method:null render]( [param:Scene scene], [param:Camera camera] )</h3>
+		<h3>[method:null render]( [param:Object3D scene], [param:Camera camera] )</h3>
 		<p>
 		<p>
-			Render a [page:Scene scene] using a [page:Camera camera].<br />
+			Render a [page:Scene scene] or another type of [page:Object3D object] using a [page:Camera camera].<br />
 
 
 			The render is done to a previously specified [page:WebGLRenderTarget renderTarget] set by calling [page:WebGLRenderer.setRenderTarget .setRenderTarget] or to the canvas as usual.<br />
 			The render is done to a previously specified [page:WebGLRenderTarget renderTarget] set by calling [page:WebGLRenderer.setRenderTarget .setRenderTarget] or to the canvas as usual.<br />
 
 

+ 2 - 2
docs/api/en/scenes/Scene.html

@@ -39,7 +39,7 @@
 		<h3>[property:Texture environment]</h3>
 		<h3>[property:Texture environment]</h3>
 		<p>
 		<p>
 		If not null, this texture is set as the environment map for all physical materials in the scene.
 		If not null, this texture is set as the environment map for all physical materials in the scene.
-		However, it's not possible to overwrite an existing texture assigned to [page:MeshStandardMaterial.envmap]. Default is null.
+		However, it's not possible to overwrite an existing texture assigned to [page:MeshStandardMaterial.envMap]. Default is null.
 		</p>
 		</p>
 
 
 		<h3>[property:Fog fog]</h3>
 		<h3>[property:Fog fog]</h3>
@@ -57,7 +57,7 @@
 		Clears scene related data internally cached by [page:WebGLRenderer].
 		Clears scene related data internally cached by [page:WebGLRenderer].
 		</p>
 		</p>
 
 
-		<h3>[method:Object toJSON]</h3>
+		<h3>[method:Object toJSON]( [param:Object meta] )</h3>
 		<p>
 		<p>
 		meta -- object containing metadata such as textures or images for the scene.<br />
 		meta -- object containing metadata such as textures or images for the scene.<br />
 		Convert the scene to three.js [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].
 		Convert the scene to three.js [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].

+ 94 - 0
docs/api/en/textures/DataTexture2DArray.html

@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Texture] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">Creates an array of textures directly from raw data, width and height and depth.</p>
+
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( data, width, height, depth )</h3>
+		<p>
+			The data argument must be an [link:https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView ArrayBufferView].
+			The properties inherited from [page:Texture] are the default, except magFilter and minFilter default to THREE.NearestFilter. The properties flipY and generateMipmaps are intially set to false.
+		</p>
+		<p>
+			The interpretation of the data depends on type and format:
+			If the type is THREE.UnsignedByteType, a Uint8Array will be useful for addressing the texel data.
+			If the format is THREE.RGBAFormat, data needs four values for one texel; Red, Green, Blue and Alpha (typically the opacity). Similarly, THREE.RGBFormat specifies a format where only three values are used for each texel.<br />
+
+			For the packed types, THREE.UnsignedShort4444Type, THREE.UnsignedShort5551Type or THREE.UnsignedShort565Type, all color components of one texel can be addressed as bitfields within an integer element of a Uint16Array.<br />
+
+			In order to use the types THREE.FloatType and THREE.HalfFloatType, the WebGL implementation must support the respective extensions OES_texture_float and OES_texture_half_float. In order to use THREE.LinearFilter for component-wise, bilinear interpolation of the texels based on these types, the WebGL extensions OES_texture_float_linear or OES_texture_half_float_linear must also be present.
+		</p>
+
+		<h2>Code Example</h2>
+
+		<p>This creates a [name] where each texture has a different color.</p>
+
+		<code>
+		// create a buffer with color data
+
+		var size = width * height;
+		var data = new Uint8Array( 3 * size * depth );
+
+
+		for ( var i = 0; i < depth; i ++ ) {
+
+			var color = new THREE.Color( Math.random(), Math.random(), Math.random() );
+			var r = Math.floor( color.r * 255 );
+			var g = Math.floor( color.g * 255 );
+			var b = Math.floor( color.b * 255 );
+
+			for ( var j = 0; j < size; j ++ ) {
+
+				var stride = ( i * size + j ) * 3;
+
+				data[ stride ] = r;
+				data[ stride + 1 ] = g;
+				data[ stride + 2 ] = b;
+
+			}
+		}
+
+		// used the buffer to create a [name]
+
+		var texture = new THREE.DataTexture2DArray( data, width, height, depth );
+		texture.format = THREE.RGBFormat;
+		texture.type = THREE.UnsignedByteType;
+		</code>
+
+		<h2>Properties</h2>
+
+		<p>
+		See the base [page:Texture Texture] class for common properties.
+		</p>
+
+		<h3>[property:Image image]</h3>
+		<p>
+		Overridden with a record type holding data, width and height and depth.
+		</p>
+
+		<h2>Methods</h2>
+
+		<p>
+		See the base [page:Texture Texture] class for common methods.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 10 - 8
docs/api/zh/cameras/CubeCamera.html

@@ -17,12 +17,16 @@
 
 
 		<h2>代码示例</h2>
 		<h2>代码示例</h2>
 
 
-		<code>// Create cube camera
-		var cubeCamera = new THREE.CubeCamera( 1, 100000, 128 );
+		<code>
+		// Create cube render target
+		var cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 128, { format: THREE.RGBFormat, generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } );
+
+		// Create cube camera
+		var cubeCamera = new THREE.CubeCamera( 1, 100000, cubeRenderTarget );
 		scene.add( cubeCamera );
 		scene.add( cubeCamera );
 
 
 		// Create car
 		// Create car
-		var chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeCamera.renderTarget.texture } );
+		var chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeRenderTarget.texture } );
 		var car = new Mesh( carGeometry, chromeMaterial );
 		var car = new Mesh( carGeometry, chromeMaterial );
 		scene.add( car );
 		scene.add( car );
 
 
@@ -40,7 +44,6 @@
 
 
 		<p>
 		<p>
 			[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]<br />
 			[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]<br />
-			[example:webgl_materials_cubemap_dynamic2 materials / cubemap / dynamic2 ]<br />
 			[example:webgl_shading_physical shading / physical ]
 			[example:webgl_shading_physical shading / physical ]
 		</p>
 		</p>
 
 
@@ -48,12 +51,12 @@
 
 
 
 
 
 
-		<h3>[name]( [param:Number near], [param:Number far], [param:Number cubeResolution] )</h3>
+		<h3>[name]( [param:Number near], [param:Number far], [param:WebGLCubeRenderTarget renderTarget] )</h3>
 		<p>
 		<p>
 
 
 		near -- 近剪切面的距离<br />
 		near -- 近剪切面的距离<br />
 		far -- 远剪切面的距离<br />
 		far -- 远剪切面的距离<br />
-		cubeResolution -- 设置立方体边缘的长度
+		renderTarget -- The destination cube render target.
 		</p>
 		</p>
 		<p>
 		<p>
 			构造一个包含6个[page:PerspectiveCamera PerspectiveCameras](透视摄像机)的立方摄像机,并将其拍摄的场景渲染到一个[page:WebGLCubeRenderTarget]上。
 			构造一个包含6个[page:PerspectiveCamera PerspectiveCameras](透视摄像机)的立方摄像机,并将其拍摄的场景渲染到一个[page:WebGLCubeRenderTarget]上。
@@ -66,8 +69,7 @@
 
 
 		<h3>[property:WebGLCubeRenderTarget renderTarget]</h3>
 		<h3>[property:WebGLCubeRenderTarget renderTarget]</h3>
 		<p>
 		<p>
-			生成的立方体纹理<br>
-			(译注:生成的立方体纹理保存在其中的.texture对象中,可作为贴图赋值给其他材质)
+			The destination cube render target.
 		</p>
 		</p>
 
 
 		<h2>方法</h2>
 		<h2>方法</h2>

+ 0 - 1
docs/api/zh/constants/Renderer.html

@@ -55,7 +55,6 @@
 		THREE.NoToneMapping
 		THREE.NoToneMapping
 		THREE.LinearToneMapping
 		THREE.LinearToneMapping
 		THREE.ReinhardToneMapping
 		THREE.ReinhardToneMapping
-		THREE.Uncharted2ToneMapping
 		THREE.CineonToneMapping
 		THREE.CineonToneMapping
 		</code>
 		</code>
 		<p>
 		<p>

+ 0 - 4
docs/api/zh/constants/Textures.html

@@ -19,7 +19,6 @@
 		THREE.CubeRefractionMapping
 		THREE.CubeRefractionMapping
 		THREE.EquirectangularReflectionMapping
 		THREE.EquirectangularReflectionMapping
 		THREE.EquirectangularRefractionMapping
 		THREE.EquirectangularRefractionMapping
-		THREE.SphericalReflectionMapping
 		THREE.CubeUVReflectionMapping
 		THREE.CubeUVReflectionMapping
 		THREE.CubeUVRefractionMapping
 		THREE.CubeUVRefractionMapping
 		</code>
 		</code>
@@ -38,9 +37,6 @@
 		用于等距圆柱投影的环境贴图,也被叫做经纬线映射贴图。等距圆柱投影贴图表示沿着其水平中线360°的视角,以及沿着其垂直轴向180°的视角。贴图顶部和底部的边缘分别对应于它所映射的球体的北极和南极。
 		用于等距圆柱投影的环境贴图,也被叫做经纬线映射贴图。等距圆柱投影贴图表示沿着其水平中线360°的视角,以及沿着其垂直轴向180°的视角。贴图顶部和底部的边缘分别对应于它所映射的球体的北极和南极。
 		<br /><br />
 		<br /><br />
 
 
-		[page:Constant SphericalReflectionMapping] 用球形反射贴图,例如它可以通过剪裁镜面球的照片来获得。
-		无论摄像机相对于立方贴图对象或者表面的位置时怎样的,球形贴图被渲染时将会“面朝”摄像机。<br /><br />
-
 		请查看示例:[example:webgl_materials_envmaps materials / envmaps] 。
 		请查看示例:[example:webgl_materials_envmaps materials / envmaps] 。
 	</p>
 	</p>
 
 

+ 2 - 2
docs/api/zh/core/InstancedBufferGeometry.html

@@ -24,9 +24,9 @@
 		<h2>属性</h2>
 		<h2>属性</h2>
 		<p>继承属性详见 [page:BufferGeometry]。</p>
 		<p>继承属性详见 [page:BufferGeometry]。</p>
 
 
-		<h3>[property:Number maxInstancedCount]</h3>
+		<h3>[property:Number instanceCount]</h3>
 		<p>
 		<p>
-			默认值是 *undefined*。
+			默认值是 *Infinity*。
 		</p>
 		</p>
 
 
 		<h2>方法</h2>
 		<h2>方法</h2>

+ 18 - 4
docs/api/zh/core/InterleavedBuffer.html

@@ -59,6 +59,11 @@
 			默认值为 *-1*。
 			默认值为 *-1*。
 		</p>
 		</p>
 
 
+		<h3>[property:String uuid]</h3>
+		<p>
+		该类所创建的实例的[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID]。它是自动被指定的,因此它不应当被编辑、更改。
+		</p>
+
 		<h3>[property:Integer version]</h3>
 		<h3>[property:Integer version]</h3>
 		<p>
 		<p>
 			版本号,每次 needsUpdate 属性设置为 true 时,版本号增加。
 			版本号,每次 needsUpdate 属性设置为 true 时,版本号增加。
@@ -98,13 +103,22 @@
 			将源队列数据拷贝到目标队列缓存中。
 			将源队列数据拷贝到目标队列缓存中。
 		</p>
 		</p>
 
 
-		<h3>[method:InterleavedBuffer clone]() </h3>
+		<h3>[method:InterleavedBuffer clone]( [param:Object data] ) </h3>
 		<p>
 		<p>
-			克隆当前 [name]。
+			data - This object holds shared array buffers required for properly cloning geometries with interleaved attributes.<br/><br />
+
+			Creates a clone of this [name].
 		</p>
 		</p>
 
 
-		<h3>[method:BufferAttribute setUsage] ( [param:Usage value] ) </h3>
-		<p>Set [page:BufferAttribute.usage usage] to value.</p>
+		<h3>[method:InterleavedBuffer setUsage] ( [param:Usage value] ) </h3>
+		<p>Set [page:InterleavedBuffer.usage usage] to value.</p>
+
+		<h3>[method:InterleavedBuffer toJSON]( [param:Object data] ) </h3>
+		<p>
+			data - This object holds shared array buffers required for properly serializing geometries with interleaved attributes.<br/><br />
+
+			Serializes this [name].
+		</p>
 
 
 		<h2>源代码</h2>
 		<h2>源代码</h2>
 
 

+ 5 - 0
docs/api/zh/core/InterleavedBufferAttribute.html

@@ -44,6 +44,11 @@
 			队列中每个矢量有多少个元素构成。
 			队列中每个矢量有多少个元素构成。
 		</p>
 		</p>
 
 
+		<h3>[property:String name]</h3>
+		<p>
+		Optional name for this attribute instance. Default is an empty string.
+		</p>
+
 		<h3>[property:Integer offset]</h3>
 		<h3>[property:Integer offset]</h3>
 		<p>
 		<p>
 			缓存队列中每个元素的起始位置的偏移量。
 			缓存队列中每个元素的起始位置的偏移量。

+ 2 - 2
docs/api/zh/extras/core/Curve.html

@@ -79,7 +79,7 @@
 			using [page:.getPoint].
 			using [page:.getPoint].
 		</p>
 		</p>
 
 
-		<h3>[method:Vector getTangent]( [param:Float t, [param:Vector optionalTarget] ] )</h3>
+		<h3>[method:Vector getTangent]( [param:Float t], [param:Vector optionalTarget] )</h3>
 		<p>
 		<p>
 			[page:Float t] - A position on the curve. Must be in the range [ 0, 1 ]. <br>
 			[page:Float t] - A position on the curve. Must be in the range [ 0, 1 ]. <br>
 			[page:Vector optionalTarget] — (optional) If specified, the result will be copied into this Vector,
 			[page:Vector optionalTarget] — (optional) If specified, the result will be copied into this Vector,
@@ -90,7 +90,7 @@
 			which seems to give a reasonable approximation.
 			which seems to give a reasonable approximation.
 		</p>
 		</p>
 
 
-		<h3>[method:Vector getTangentAt]( [param:Float u, [param:Vector optionalTarget] ] )</h3>
+		<h3>[method:Vector getTangentAt]( [param:Float u], [param:Vector optionalTarget] )</h3>
 		<p>
 		<p>
 			[page:Float u] - A position on the curve according to the arc length. Must be in the range [ 0, 1 ]. <br>
 			[page:Float u] - A position on the curve according to the arc length. Must be in the range [ 0, 1 ]. <br>
 			[page:Vector optionalTarget] — (optional) If specified, the result will be copied into this Vector,
 			[page:Vector optionalTarget] — (optional) If specified, the result will be copied into this Vector,

+ 2 - 0
docs/api/zh/extras/curves/CatmullRomCurve3.html

@@ -73,6 +73,8 @@
 		<h2>方法</h2>
 		<h2>方法</h2>
 		<p>共有方法请参见其基类[page:Curve]。</p>
 		<p>共有方法请参见其基类[page:Curve]。</p>
 
 
+		<h2>源代码</h2>
+
 		<p>
 		<p>
 			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
 		</p>
 		</p>

+ 80 - 5
docs/api/zh/extras/objects/ImmediateRenderObject.html

@@ -12,27 +12,102 @@
 
 
 		<h1>即时渲染对象([name])</h1>
 		<h1>即时渲染对象([name])</h1>
 
 
-		<p class="desc">即时渲染对象的基类。</p>
+		<p class="desc">
+			This experimental class provides a fast code path for rendering meshes with frequently updated
+			geometry data. When the renderer encounters an instance of [name], it only takes care about
+			the most primitive rendering operations (e.g. binding vertex attributes, determining correct shader
+			program or perfoming the actual draw call). Features like view frustum culling, wireframe rendering
+			or using multiple materials are not supported. Besides [name] can only be used to render triangles.
+		</p>
 
 
+		<p class="desc">
+			[name] does not work with instances of [page:BufferGeometry] or [page:Geometry]. The
+			raw geometry data have to be maintained as properties of the [name].
+		</p>
+
+		<p class="desc">
+			Using [name] makes only sense if you are updating your geometry data per frame. You can then
+			benefit of a faster code path compared to the default mesh redering logic.
+		</p>
+
+		<h2>例子</h2>
+		<p>
+			[example:webgl_marchingcubes Marching Cubes]
+		</p>
 
 
 		<h2>构造函数(Constructor)</h2>
 		<h2>构造函数(Constructor)</h2>
 
 
+		<h3>[name]( [param:Material material] )</h3>
+		<p>
+		[page:Material material] — The material of the [name].
+		</p>
+
+		<h2>Properties</h2>
+		<p>See the base [page:Object3D] class for common properties.</p>
+
+		<h3>[property:Boolean material]</h3>
+		<p>
+			The material of the [name]. Assigning multiple materials is not supported.
+		</p>
+
+		<h3>[property:Boolean hasPositions]</h3>
+		<p>
+			Whether position data are defined or not. Default is *false*.
+		</p>
+
+		<h3>[property:Boolean hasNormals]</h3>
+		<p>
+			Whether normal data are defined or not. Default is *false*.
+		</p>
+
+		<h3>[property:Boolean hasColors]</h3>
+		<p>
+			Whether color data are defined or not. Default is *false*.
+		</p>
+
+		<h3>[property:Boolean hasUvs]</h3>
+		<p>
+			Whether texture coordinates are defined or not. Default is *false*.
+		</p>
+
+		<h3>[property:Float32Array positionArray]</h3>
+		<p>
+			The buffer holding position data. Default is *null*.
+		</p>
+
+		<h3>[property:Float32Array normalArray]</h3>
+		<p>
+			The buffer holding normal data. Default is *null*.
+		</p>
 
 
-		<h3>[name]()</h3>
+		<h3>[property:Float32Array colorArray]</h3>
 		<p>
 		<p>
-			这会创建一个新的 [name]。
+			The buffer holding color data. Default is *null*.
 		</p>
 		</p>
 
 
+		<h3>[property:Float32Array uvArray]</h3>
+		<p>
+			The buffer holding texture coordinates. Default is *null*.
+		</p>
+
+		<h3>[property:Integer count]</h3>
+		<p>
+			The number of primitives to be rendered. Default is *0*.
+			This property will be set to *0* after each rendering so you usually
+			set it in the implementatio of [page:.render]().
+		</p>
 
 
 		<h2>方法(Methods)</h2>
 		<h2>方法(Methods)</h2>
 
 
+		<p>See the base [page:Object3D] class for common methods.</p>
 
 
 		<h3>[method:null render]([param:Function renderCallback])</h3>
 		<h3>[method:null render]([param:Function renderCallback])</h3>
 		<p>
 		<p>
-		renderCallback -- 生成对象的渲染函数。
+		renderCallback -- A function to render the generated geometry data.
 		</p>
 		</p>
 		<p>
 		<p>
-		需要重写此函数以开始创建对象,并在完成时调用renderCallback。
+		This method needs to be implemented by the deriving class of [name]. You normally want to implement the
+		vertex buffer update logic and execute *renderCallback* at the end of your implementation.
 		</p>
 		</p>
 
 
 		<h2>源码(Source)</h2>
 		<h2>源码(Source)</h2>

+ 70 - 0
docs/api/zh/lights/LightProbe.html

@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Object3D] &rarr; [page:Light] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			Light probes are an alternative way of adding light to a 3D scene. Unlike classical light sources (e.g. directional,
+			point or spot lights), light probes do not emit light. Instead they store information about light passing through
+			3D space. During rendering, the light that hits a 3D object is approximated by using the data from the light probe.
+		</p>
+
+		<p class="desc">
+			Light probes are usually created from (radiance) environment maps. The class [page:LightProbeGenerator] can
+			be used to create light probes from instances of [page:CubeTexture] or [page:WebGLCubeRenderTarget].
+			However, light estimation data could also be provided in other forms e.g. by WebXR. This enables the rendering
+			of augmented reality content that reacts to real world lighting.
+		</p>
+
+		<p class="desc">
+			The current probe implementation in three.js supports so-called diffuse light probes. This type of light probe
+			is functionally equivalent to an irradiance environment map.
+		</p>
+
+		<h2>Examples</h2>
+		<p>
+			[example:webgl_lightprobe WebGL / light probe ]<br />
+			[example:webgl_lightprobe_cubecamera WebGL / light probe / cube camera ]
+		</p>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [param:SphericalHarmonics3 sh], [param:Float intensity] )</h3>
+		<p>
+		[page:SphericalHarmonics3 sh] - (optional) An instance of [page:SphericalHarmonics3].<br />
+		[page:Float intensity] - (optional) Numeric value of the light probe's intensity. Default is 1.<br /><br />
+
+		Creates a new [name].
+		</p>
+
+		<h2>Properties</h2>
+		<p>
+				See the base [page:Light Light] class for common properties. The [page:Light.color color] property is currently
+				not evaluated and thus has no effect.
+		</p>
+
+		<h3>[property:SphericalHarmonics3 sh]</h3>
+		<p>
+			A light probe uses spherical harmonics to encode lighting information.
+		</p>
+
+		<h2>Methods</h2>
+		<p>
+				See the base [page:Light Light] class for common methods.
+		</p>
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 0 - 1
docs/api/zh/loaders/ObjectLoader.html

@@ -55,7 +55,6 @@
 		<h2>例子</h2>
 		<h2>例子</h2>
 
 
 		<p>
 		<p>
-			[example:webgl_loader_json_claraio WebGL / loader / json / claraio]<br />
 			[example:webgl_materials_lightmap WebGL / materials / lightmap]
 			[example:webgl_materials_lightmap WebGL / materials / lightmap]
 		</p>
 		</p>
 
 

+ 2 - 0
docs/api/zh/materials/LineBasicMaterial.html

@@ -77,6 +77,8 @@
 			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 			并且会被[page:WebGLRenderer WebGL]渲染器忽略。
 		</p>
 		</p>
 
 
+		<h3>[property:Boolean morphTargets]</h3>
+		<p>Define whether the material uses morphTargets. Default is false.</p>
 
 
 		<h2>方法(Methods)</h2>
 		<h2>方法(Methods)</h2>
 		<p>共有方法请参见其基类[page:Material]。</p>
 		<p>共有方法请参见其基类[page:Material]。</p>

+ 1 - 1
docs/api/zh/materials/Material.html

@@ -182,7 +182,7 @@ Which stencil operation to perform when the comparison function returns true and
 </p>
 </p>
 
 
 <h3>[property:Boolean premultipliedAlpha]</h3>
 <h3>[property:Boolean premultipliedAlpha]</h3>
-<p> 是否预乘alpha(透明度)值。有关差异的示例,请参阅[Example:webgl_materials_transparency WebGL / Materials / Transparency]。
+<p> 是否预乘alpha(透明度)值。有关差异的示例,请参阅[Example:webgl_materials_physical_transparency WebGL / Materials / Physical / Transparency]。
 	默认值为*false*。
 	默认值为*false*。
 </p>
 </p>
 
 

+ 8 - 0
docs/api/zh/math/Color.html

@@ -177,6 +177,14 @@
 		从格式为[ [page:Float r], [page:Float g], [page:Float b] ]的数组数据中来创建Color对象。
 		从格式为[ [page:Float r], [page:Float g], [page:Float b] ]的数组数据中来创建Color对象。
 		</p>
 		</p>
 
 
+		<h3>[method:this fromBufferAttribute]( [param:BufferAttribute attribute], [param:Integer index] )</h3>
+		<p>
+		[page:BufferAttribute attribute] - the source attribute.<br />
+		[page:Integer index] - index in the attribute.<br /><br />
+
+		Sets this color's components from the [page:BufferAttribute attribute].
+		</p>
+
 		<h3>[method:Integer getHex]()</h3>
 		<h3>[method:Integer getHex]()</h3>
 		<p>返回此颜色的十六进制值。</p>
 		<p>返回此颜色的十六进制值。</p>
 
 

+ 0 - 2
docs/api/zh/math/Matrix4.html

@@ -117,8 +117,6 @@ m.elements = [ 11, 21, 31, 41,
 		<h3>[method:this compose]( [param:Vector3 position], [param:Quaternion quaternion], [param:Vector3 scale] )</h3>
 		<h3>[method:this compose]( [param:Vector3 position], [param:Quaternion quaternion], [param:Vector3 scale] )</h3>
 		<p>
 		<p>
 		设置将该对象由位置[page:Vector3 position],四元数[page:Quaternion quaternion] 和 缩放[page:Vector3 scale]
 		设置将该对象由位置[page:Vector3 position],四元数[page:Quaternion quaternion] 和 缩放[page:Vector3 scale]
-		组合变换的矩阵。内部先调用[page:.makeRotationFromQuaternion makeRotationFromQuaternion]( [page:Quaternion quaternion] )
-		再调用缩放[page:.scale scale]( [page:Vector3 scale] )最后是平移[page:.setPosition setPosition]( [page:Vector3 position] )。
 		</p>
 		</p>
 
 
 		<h3>[method:this copy]( [param:Matrix4 m] )</h3>
 		<h3>[method:this copy]( [param:Matrix4 m] )</h3>

+ 1 - 1
docs/api/zh/math/Ray.html

@@ -115,7 +115,7 @@
 		<p>
 		<p>
 		[page:Ray ray] - 用于比较的[page:Ray]。<br /><br />
 		[page:Ray ray] - 用于比较的[page:Ray]。<br /><br />
 
 
-		如果所传入的[page:Ray ray]具有和当前Ray相同的[page:.offset offset]和[page:.direction direction]则返回true。
+		如果所传入的[page:Ray ray]具有和当前Ray相同的[page:.origin origin]和[page:.direction direction]则返回true。
 		</p>
 		</p>
 
 
 		<h3>[method:Vector3 intersectBox]( [param:Box3 box], [param:Vector3 target] )</h3>
 		<h3>[method:Vector3 intersectBox]( [param:Box3 box], [param:Vector3 target] )</h3>

+ 138 - 0
docs/api/zh/math/SphericalHarmonics3.html

@@ -0,0 +1,138 @@
+<!DOCTYPE html>
+<html lang="zh">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		<h1>[name]</h1>
+
+		<p class="desc">Represents a third-order spherical harmonics (SH). Light probes use this class to encode lighting information.</p>
+
+		<h2>Constructor</h2>
+		<h3>[name]()</h3>
+		<p>
+		Creates a new instance of [name].
+		</p>
+
+		<h2>Properties</h2>
+
+		<h3>[property:Array coefficients]</h3>
+		<p>An array holding the (9) SH coefficients. A single coefficient is represented as an instance of [page:Vector3].</p>
+
+		<h2>Methods</h2>
+
+		<h3>[method:SphericalHarmonics3 add]( [param:SphericalHarmonics3 sh] )</h3>
+		<p>
+			[page:SphericalHarmonics3 sh] - The SH to add.<br /><br />
+
+			Adds the given SH to this instance.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 addScaledSH]( [param:SphericalHarmonics3 sh], [param:Number scale] )</h3>
+		<p>
+			[page:SphericalHarmonics3 sh] - The SH to add.<br />
+			[page:Number scale] - The scale factor.<br /><br />
+
+			A convenience method for performing [page:.add]() and [page:.scale]() at once.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 clone]()</h3>
+		<p>
+			Returns a new instance of [name] with equal coefficients.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 copy]( [param:SphericalHarmonics3 sh] )</h3>
+		<p>
+			[page:SphericalHarmonics3 sh] - The SH to copy.<br /><br />
+
+			Copies the given SH to this instance.
+		</p>
+
+		<h3>[method:Boolean equals]( [param:SphericalHarmonics3 sh] )</h3>
+		<p>
+			[page:SphericalHarmonics3 sh] - The SH to compare with.<br /><br />
+
+			Returns true if the given SH and this instance have equal coefficients.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 fromArray]( [param:Array array], [param:Number offset] )</h3>
+		<p>
+			[page:Array array] - The array holding the numbers of the SH coefficients.<br />
+			[page:Number offset] - (optional) The array offset.<br /><br />
+
+			Sets the coefficients of this instance from the given array.
+		</p>
+
+		<h3>[method:Vector3 getAt]( [param:Vector3 normal], [param:Vector3 target] )</h3>
+		<p>
+			[page:Vector3 normal] - The normal vector (assumed to be unit length).<br />
+			[page:Vector3 target] - The result vector.<br /><br />
+
+			Returns the radiance in the direction of the given normal.
+		</p>
+
+		<h3>[method:Vector3 getIrradianceAt]( [param:Vector3 normal], [param:Vector3 target] )</h3>
+		<p>
+			[page:Vector3 normal] - The normal vector (assumed to be unit length).<br />
+			[page:Vector3 target] - The result vector.<br /><br />
+
+			Returns the irradiance (radiance convolved with cosine lobe) in the direction of the given normal.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 lerp]( [param:SphericalHarmonics3 sh], [param:Number alpha] )</h3>
+		<p>
+			[page:SphericalHarmonics3 sh] - The SH to interpolate with.<br />
+			[page:Number alpha] - The alpha factor.<br /><br />
+
+			Linear interpolates between the given SH and this instance by the given alpha factor.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 scale]( [param:Number scale] )</h3>
+		<p>
+			[page:Number sh] - The scale factor.<br /><br />
+
+			Scales this SH by the given scale factor.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 set]( [param:Array coefficients] )</h3>
+		<p>
+			[page:Array coefficients] - An array of SH coefficients.<br /><br />
+
+			Sets the given SH coefficients to this instance.
+		</p>
+
+		<h3>[method:Array toArray]( [param:Array array], [param:Number offset] )</h3>
+		<p>
+			[page:Array array] - (optional) The target array.<br />
+			[page:Number offset] - (optional) The array offset.<br /><br />
+
+			Returns an array with the coefficients, or copies them into the provided array. The coefficients
+			are represented as numbers.
+		</p>
+
+		<h3>[method:SphericalHarmonics3 zero]()</h3>
+		<p>
+			Sets all SH coefficients to 0.
+		</p>
+
+		<h2>Static Methods</h2>
+
+		<h3>[method:void getBasisAt]( [param:Vector3 normal], [param:Array shBasis] )</h3>
+		<p>
+			[page:Vector3 normal] - The normal vector (assumed to be unit length).<br />
+			[page:Array shBasis] - The resulting SH basis.<br /><br />
+
+			Computes the SH basis for the given normal vector.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 16 - 0
docs/api/zh/objects/Line.html

@@ -57,6 +57,17 @@
 		<h3>[property:Material material]</h3>
 		<h3>[property:Material material]</h3>
 		<p>线的材质。</p>
 		<p>线的材质。</p>
 
 
+		<h3>[property:Array morphTargetInfluences]</h3>
+		<p>
+		An array of weights typically from 0-1 that specify how much of the morph is applied.
+		Undefined by default, but reset to a blank array by [page:.updateMorphTargets]().
+		</p>
+
+		<h3>[property:Object morphTargetDictionary]</h3>
+		<p>
+		A dictionary of morphTargets based on the morphTarget.name property.
+		Undefined by default, but rebuilt [page:.updateMorphTargets]().
+		</p>
 
 
 		<h2>方法</h2>
 		<h2>方法</h2>
 		<p>共有方法请参见其基类 [page:Object3D]。</p>
 		<p>共有方法请参见其基类 [page:Object3D]。</p>
@@ -78,6 +89,11 @@
 			返回这条线及其子集的一个克隆对象。
 			返回这条线及其子集的一个克隆对象。
 		</p>
 		</p>
 
 
+		<h3>[method:null updateMorphTargets]()</h3>
+		<p>
+		Updates the morphTargets to have no influence on the object. Resets the
+		[page:.morphTargetInfluences] and [page:.morphTargetDictionary] properties.
+		</p>
 
 
 		<h2>源代码</h2>
 		<h2>源代码</h2>
 
 

+ 48 - 0
docs/api/zh/renderers/WebGL1Renderer.html

@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:WebGLRenderer] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+		Since r118 [page:WebGLRenderer] automatically uses a WebGL 2 rendering context. When upgrading an existing project to
+		=> r118, applications might break because of two reasons:
+
+		<ul>
+			<li>Custom shader code needs to be GLSL 3.0 conform.</li>
+			<li>WebGL 1 extension checks have to be changed.</li>
+		</ul>
+
+		If you can't afford the time to upgrade your code but still want to use the latest version, you can use [name]. This
+		version of the renderer will enforce a WebGL 1 rendering context.
+		</p>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [param:Object parameters] )</h3>
+		<p>
+		Creates a new [name].
+		</p>
+
+		<h2>Properties</h2>
+		<p>See the base [page:WebGLRenderer] class for common properties.</p>
+
+
+		<h2>Methods</h2>
+		<p>See the base [page:WebGLRenderer] class for common methods.</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 2 - 7
docs/api/zh/renderers/WebGLRenderer.html

@@ -252,11 +252,6 @@
 		色调映射的曝光级别。默认是*1*
 		色调映射的曝光级别。默认是*1*
 		</p>
 		</p>
 
 
-		<h3>[property:Number toneMappingWhitePoint]</h3>
-		<p>
-		色调映射的白点。默认是*1*
-		</p>
-
 		<h3>[property:WebXRManager xr]</h3>
 		<h3>[property:WebXRManager xr]</h3>
 		<p>
 		<p>
 		Provides access to the WebXR related [page:WebXRManager interface] of the renderer.
 		Provides access to the WebXR related [page:WebXRManager interface] of the renderer.
@@ -290,7 +285,7 @@
 		该方法清楚了一个rendertarget。为此它会激活此endertarget
 		该方法清楚了一个rendertarget。为此它会激活此endertarget
 		</p>
 		</p>
 
 
-		<h3>[method:null compile]( [param:Scene scene], [param:Camera camera] )</h3>
+		<h3>[method:null compile]( [param:Object3D scene], [param:Camera camera] )</h3>
 		<p>使用相机编译场景中的所有材质。这对于在首次渲染之前预编译着色器很有用。</p>
 		<p>使用相机编译场景中的所有材质。这对于在首次渲染之前预编译着色器很有用。</p>
 
 
 		<h3>[method:null copyFramebufferToTexture]( [param:Vector2 position], [param:Texture texture], [param:Number level] )</h3>
 		<h3>[method:null copyFramebufferToTexture]( [param:Vector2 position], [param:Texture texture], [param:Number level] )</h3>
@@ -366,7 +361,7 @@
 		示例:[example:webgl_interactive_cubes_gpu interactive / cubes / gpu]</p>
 		示例:[example:webgl_interactive_cubes_gpu interactive / cubes / gpu]</p>
 		<p>For reading out a [page:WebGLCubeRenderTarget WebGLCubeRenderTarget] use the optional parameter activeCubeFaceIndex to determine which face should be read.</p>
 		<p>For reading out a [page:WebGLCubeRenderTarget WebGLCubeRenderTarget] use the optional parameter activeCubeFaceIndex to determine which face should be read.</p>
 
 
-		<h3>[method:null render]( [param:Scene scene], [param:Camera camera], [param:WebGLRenderTarget renderTarget], [param:Boolean forceClear] )</h3>
+		<h3>[method:null render]( [param:Object3D scene], [param:Camera camera] )</h3>
 		<p>
 		<p>
 			用相机([page:Camera camera])渲染一个场景([page:Scene scene])<br />
 			用相机([page:Camera camera])渲染一个场景([page:Scene scene])<br />
 
 

+ 94 - 0
docs/api/zh/textures/DataTexture2DArray.html

@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html lang="zh">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:Texture] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">Creates an array of textures directly from raw data, width and height and depth.</p>
+
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( data, width, height, depth )</h3>
+		<p>
+			The data argument must be an [link:https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView ArrayBufferView].
+			The properties inherited from [page:Texture] are the default, except magFilter and minFilter default to THREE.NearestFilter. The properties flipY and generateMipmaps are intially set to false.
+		</p>
+		<p>
+			The interpretation of the data depends on type and format:
+			If the type is THREE.UnsignedByteType, a Uint8Array will be useful for addressing the texel data.
+			If the format is THREE.RGBAFormat, data needs four values for one texel; Red, Green, Blue and Alpha (typically the opacity). Similarly, THREE.RGBFormat specifies a format where only three values are used for each texel.<br />
+
+			For the packed types, THREE.UnsignedShort4444Type, THREE.UnsignedShort5551Type or THREE.UnsignedShort565Type, all color components of one texel can be addressed as bitfields within an integer element of a Uint16Array.<br />
+
+			In order to use the types THREE.FloatType and THREE.HalfFloatType, the WebGL implementation must support the respective extensions OES_texture_float and OES_texture_half_float. In order to use THREE.LinearFilter for component-wise, bilinear interpolation of the texels based on these types, the WebGL extensions OES_texture_float_linear or OES_texture_half_float_linear must also be present.
+		</p>
+
+		<h2>代码示例</h2>
+
+		<p>This creates a [name] where each texture has a different color.</p>
+
+		<code>
+		// create a buffer with color data
+
+		var size = width * height;
+		var data = new Uint8Array( 3 * size * depth );
+
+
+		for ( var i = 0; i < depth; i ++ ) {
+
+			var color = new THREE.Color( Math.random(), Math.random(), Math.random() );
+			var r = Math.floor( color.r * 255 );
+			var g = Math.floor( color.g * 255 );
+			var b = Math.floor( color.b * 255 );
+
+			for ( var j = 0; j < size; j ++ ) {
+
+				var stride = ( i * size + j ) * 3;
+
+				data[ stride ] = r;
+				data[ stride + 1 ] = g;
+				data[ stride + 2 ] = b;
+
+			}
+		}
+
+		// used the buffer to create a [name]
+
+		var texture = new THREE.DataTexture2DArray( data, width, height, depth );
+		texture.format = THREE.RGBFormat;
+		texture.type = THREE.UnsignedByteType;
+		</code>
+
+		<h2>Properties</h2>
+
+		<p>
+		See the base [page:Texture Texture] class for common properties.
+		</p>
+
+		<h3>[property:Image image]</h3>
+		<p>
+		Overridden with a record type holding data, width and height and depth.
+		</p>
+
+		<h2>Methods</h2>
+
+		<p>
+		See the base [page:Texture Texture] class for common methods.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 16 - 0
docs/examples/en/controls/OrbitControls.html

@@ -60,6 +60,22 @@
 			[page:HTMLDOMElement domElement]: The HTML element used for event listeners.
 			[page:HTMLDOMElement domElement]: The HTML element used for event listeners.
 		</p>
 		</p>
 
 
+		<h2>Events</h2>
+
+		<h3>change</h3>
+		<p>
+			Fires when the camera has been transformed by the controls.
+		</p>
+
+		<h3>start</h3>
+		<p>
+			Fires when an interaction was initiated.
+		</p>
+
+		<h3>end</h3>
+		<p>
+			Fires when an interaction has finished.
+		</p>
 
 
 		<h2>Properties</h2>
 		<h2>Properties</h2>
 
 

+ 10 - 0
docs/examples/en/controls/PointerLockControls.html

@@ -87,6 +87,16 @@
 			Whether or not the controls are locked.
 			Whether or not the controls are locked.
 		</p>
 		</p>
 
 
+		<h3>[property:Float maxPolarAngle]</h3>
+		<p>
+			Camera pitch, upper limit. Range is 0 to Math.PI radians. Default is Math.PI.
+		</p>
+
+		<h3>[property:Float minPolarAngle]</h3>
+		<p>
+			Camera pitch, lower limit. Range is 0 to Math.PI radians. Default is 0.
+		</p>
+
 		<h2>Methods</h2>
 		<h2>Methods</h2>
 
 
 		<p>See the base [page:EventDispatcher] class for common methods.</p>
 		<p>See the base [page:EventDispatcher] class for common methods.</p>

+ 46 - 0
docs/examples/en/lights/LightProbeGenerator.html

@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			Utility class for creating instances of [page:LightProbe].
+		</p>
+
+		<h2>Examples</h2>
+
+		<p>
+			[example:webgl_lightprobe WebGL / light probe ]<br />
+			[example:webgl_lightprobe_cubecamera WebGL / light probe / cube camera ]
+		</p>
+
+		<h2>Static Methods</h2>
+
+		<h3>[method:LightProbe fromCubeTexture] ( [param:CubeTexture cubeTexture] )</h3>
+		<p>
+			Creates a light probe from the given (radiance) environment map. The method expects that the environment map is represented as a cube texture.
+		</p>
+
+		<h3>[method:LightProbe fromCubeRenderTarget] ( [param:WebGLRenderer renderer], [param:WebGLCubeRenderTarget cubeRenderTarget] )</h3>
+		<p>
+			Creates a light probe from the given (radiance) environment map. The method expects that the environment map is represented as a cube render target.
+		</p>
+		<p>
+			The [page:Texture.format format] of the cube render target must be set to *RGBA*.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/lights/LightProbeGenerator.js examples/jsm/lights/LightProbeGenerator.js]
+		</p>
+	</body>
+</html>

+ 1 - 1
docs/examples/en/utils/SceneUtils.html

@@ -15,7 +15,7 @@
 
 
 		<h2>Methods</h2>
 		<h2>Methods</h2>
 
 
-		<h3>[method:Group createMultiMaterialObject]( [param:InstancedMesh instancedMesh] )</h3>
+		<h3>[method:Group createMeshesFromInstancedMesh]( [param:InstancedMesh instancedMesh] )</h3>
 		<p>
 		<p>
 		instancedMesh -- The instanced mesh.
 		instancedMesh -- The instanced mesh.
 		</p>
 		</p>

+ 16 - 0
docs/examples/zh/controls/OrbitControls.html

@@ -60,6 +60,22 @@
 			[page:HTMLDOMElement domElement]: The HTML element used for event listeners.
 			[page:HTMLDOMElement domElement]: The HTML element used for event listeners.
 		</p>
 		</p>
 
 
+		<h2>Events</h2>
+
+		<h3>change</h3>
+		<p>
+			Fires when the camera has been transformed by the controls.
+		</p>
+
+		<h3>start</h3>
+		<p>
+			Fires when an interaction was initiated.
+		</p>
+
+		<h3>end</h3>
+		<p>
+			Fires when an interaction has finished.
+		</p>
 
 
 		<h2>Properties</h2>
 		<h2>Properties</h2>
 
 

+ 10 - 0
docs/examples/zh/controls/PointerLockControls.html

@@ -87,6 +87,16 @@
 			Whether or not the controls are locked.
 			Whether or not the controls are locked.
 		</p>
 		</p>
 
 
+		<h3>[property:Float maxPolarAngle]</h3>
+		<p>
+			Camera pitch, upper limit. Range is 0 to Math.PI radians. Default is Math.PI.
+		</p>
+
+		<h3>[property:Float minPolarAngle]</h3>
+		<p>
+			Camera pitch, lower limit. Range is 0 to Math.PI radians. Default is 0.
+		</p>
+
 		<h2>Methods</h2>
 		<h2>Methods</h2>
 
 
 		<p>See the base [page:EventDispatcher] class for common methods.</p>
 		<p>See the base [page:EventDispatcher] class for common methods.</p>

+ 46 - 0
docs/examples/zh/lights/LightProbeGenerator.html

@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+			Utility class for creating instances of [page:LightProbe].
+		</p>
+
+		<h2>Examples</h2>
+
+		<p>
+			[example:webgl_lightprobe WebGL / light probe ]<br />
+			[example:webgl_lightprobe_cubecamera WebGL / light probe / cube camera ]
+		</p>
+
+		<h2>Static Methods</h2>
+
+		<h3>[method:LightProbe fromCubeTexture] ( [param:CubeTexture cubeTexture] )</h3>
+		<p>
+			Creates a light probe from the given (radiance) environment map. The method expects that the environment map is represented as a cube texture.
+		</p>
+
+		<h3>[method:LightProbe fromCubeRenderTarget] ( [param:WebGLRenderer renderer], [param:WebGLCubeRenderTarget cubeRenderTarget] )</h3>
+		<p>
+			Creates a light probe from the given (radiance) environment map. The method expects that the environment map is represented as a cube render target.
+		</p>
+		<p>
+			The [page:Texture.format format] of the cube render target must be set to *RGBA*.
+		</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/lights/LightProbeGenerator.js examples/jsm/lights/LightProbeGenerator.js]
+		</p>
+	</body>
+</html>

+ 8 - 1
docs/examples/zh/utils/SceneUtils.html

@@ -15,7 +15,14 @@
 
 
 		<h2>Methods</h2>
 		<h2>Methods</h2>
 
 
-
+		<h3>[method:Group createMeshesFromInstancedMesh]( [param:InstancedMesh instancedMesh] )</h3>
+		<p>
+		instancedMesh -- The instanced mesh.
+		</p>
+		<p>
+		Creates a new group object that contains a new mesh for each instance of the given instanced mesh.
+		</p>
+		
 		<h3>[method:Group createMultiMaterialObject]( [param:Geometry geometry], [param:Array materials] )</h3>
 		<h3>[method:Group createMultiMaterialObject]( [param:Geometry geometry], [param:Array materials] )</h3>
 		<p>
 		<p>
 		geometry -- The geometry for the set of materials. <br />
 		geometry -- The geometry for the set of materials. <br />

+ 3 - 3
docs/index.html

@@ -30,8 +30,8 @@
 					<input placeholder="" type="text" id="filterInput" autocorrect="off" autocapitalize="off" spellcheck="false" />
 					<input placeholder="" type="text" id="filterInput" autocorrect="off" autocapitalize="off" spellcheck="false" />
 					<div id="exitSearchButton"></div>
 					<div id="exitSearchButton"></div>
 					<select id="language">
 					<select id="language">
-						<option value="en">en</option>
-						<option value="zh">zh</option>
+						<option value="en">english</option>
+						<option value="zh">中文</option>
 					</select>
 					</select>
 				</div>
 				</div>
 				<div id="content"></div>
 				<div id="content"></div>
@@ -309,7 +309,7 @@
 							if ( result !== '' ) {
 							if ( result !== '' ) {
 
 
 								pageName = pageName.replace( result, '<b>' + result + '</b>' );
 								pageName = pageName.replace( result, '<b>' + result + '</b>' );
-			
+
 							}
 							}
 
 
 						}
 						}

+ 16 - 2
docs/list.js

@@ -11,7 +11,6 @@ var list = {
 				"WebGL compatibility check": "manual/en/introduction/WebGL-compatibility-check",
 				"WebGL compatibility check": "manual/en/introduction/WebGL-compatibility-check",
 				"How to run things locally": "manual/en/introduction/How-to-run-things-locally",
 				"How to run things locally": "manual/en/introduction/How-to-run-things-locally",
 				"Typescript setup": "manual/en/introduction/Typescript-setup",
 				"Typescript setup": "manual/en/introduction/Typescript-setup",
-				"How to use WebGL 2": "manual/en/introduction/How-to-use-WebGL2",
 				"Drawing lines": "manual/en/introduction/Drawing-lines",
 				"Drawing lines": "manual/en/introduction/Drawing-lines",
 				"Creating text": "manual/en/introduction/Creating-text",
 				"Creating text": "manual/en/introduction/Creating-text",
 				"Loading 3D models": "manual/en/introduction/Loading-3D-models",
 				"Loading 3D models": "manual/en/introduction/Loading-3D-models",
@@ -205,6 +204,7 @@ var list = {
 				"DirectionalLight": "api/en/lights/DirectionalLight",
 				"DirectionalLight": "api/en/lights/DirectionalLight",
 				"HemisphereLight": "api/en/lights/HemisphereLight",
 				"HemisphereLight": "api/en/lights/HemisphereLight",
 				"Light": "api/en/lights/Light",
 				"Light": "api/en/lights/Light",
+				"LightProbe": "api/en/lights/LightProbe",
 				"PointLight": "api/en/lights/PointLight",
 				"PointLight": "api/en/lights/PointLight",
 				"RectAreaLight": "api/en/lights/RectAreaLight",
 				"RectAreaLight": "api/en/lights/RectAreaLight",
 				"SpotLight": "api/en/lights/SpotLight"
 				"SpotLight": "api/en/lights/SpotLight"
@@ -279,6 +279,7 @@ var list = {
 				"Ray": "api/en/math/Ray",
 				"Ray": "api/en/math/Ray",
 				"Sphere": "api/en/math/Sphere",
 				"Sphere": "api/en/math/Sphere",
 				"Spherical": "api/en/math/Spherical",
 				"Spherical": "api/en/math/Spherical",
+				"SphericalHarmonics3": "api/en/math/SphericalHarmonics3",
 				"Triangle": "api/en/math/Triangle",
 				"Triangle": "api/en/math/Triangle",
 				"Vector2": "api/en/math/Vector2",
 				"Vector2": "api/en/math/Vector2",
 				"Vector3": "api/en/math/Vector3",
 				"Vector3": "api/en/math/Vector3",
@@ -310,6 +311,7 @@ var list = {
 			"Renderers": {
 			"Renderers": {
 				"WebGLMultisampleRenderTarget": "api/en/renderers/WebGLMultisampleRenderTarget",
 				"WebGLMultisampleRenderTarget": "api/en/renderers/WebGLMultisampleRenderTarget",
 				"WebGLRenderer": "api/en/renderers/WebGLRenderer",
 				"WebGLRenderer": "api/en/renderers/WebGLRenderer",
+				"WebGL1Renderer": "api/en/renderers/WebGL1Renderer",
 				"WebGLRenderTarget": "api/en/renderers/WebGLRenderTarget",
 				"WebGLRenderTarget": "api/en/renderers/WebGLRenderTarget",
 				"WebGLCubeRenderTarget": "api/en/renderers/WebGLCubeRenderTarget"
 				"WebGLCubeRenderTarget": "api/en/renderers/WebGLCubeRenderTarget"
 			},
 			},
@@ -336,6 +338,7 @@ var list = {
 				"CompressedTexture": "api/en/textures/CompressedTexture",
 				"CompressedTexture": "api/en/textures/CompressedTexture",
 				"CubeTexture": "api/en/textures/CubeTexture",
 				"CubeTexture": "api/en/textures/CubeTexture",
 				"DataTexture": "api/en/textures/DataTexture",
 				"DataTexture": "api/en/textures/DataTexture",
+				"DataTexture2DArray": "api/en/textures/DataTexture2DArray",
 				"DataTexture3D": "api/en/textures/DataTexture3D",
 				"DataTexture3D": "api/en/textures/DataTexture3D",
 				"DepthTexture": "api/en/textures/DepthTexture",
 				"DepthTexture": "api/en/textures/DepthTexture",
 				"Texture": "api/en/textures/Texture",
 				"Texture": "api/en/textures/Texture",
@@ -378,6 +381,10 @@ var list = {
 				"VertexTangentsHelper": "examples/en/helpers/VertexTangentsHelper"
 				"VertexTangentsHelper": "examples/en/helpers/VertexTangentsHelper"
 			},
 			},
 
 
+			"Lights": {
+				"LightProbeGenerator": "examples/en/lights/LightProbeGenerator"
+			},
+
 			"Loaders": {
 			"Loaders": {
 				"BasisTextureLoader": "examples/en/loaders/BasisTextureLoader",
 				"BasisTextureLoader": "examples/en/loaders/BasisTextureLoader",
 				"DRACOLoader": "examples/en/loaders/DRACOLoader",
 				"DRACOLoader": "examples/en/loaders/DRACOLoader",
@@ -463,7 +470,6 @@ var list = {
 				"WebGL兼容性检查": "manual/zh/introduction/WebGL-compatibility-check",
 				"WebGL兼容性检查": "manual/zh/introduction/WebGL-compatibility-check",
 				"如何在本地运行Three.js": "manual/zh/introduction/How-to-run-things-locally",
 				"如何在本地运行Three.js": "manual/zh/introduction/How-to-run-things-locally",
 				"Typescript设置": "manual/zh/introduction/Typescript-setup",
 				"Typescript设置": "manual/zh/introduction/Typescript-setup",
-				"如何使用WebGL 2": "manual/zh/introduction/How-to-use-WebGL2",
 				"画线": "manual/zh/introduction/Drawing-lines",
 				"画线": "manual/zh/introduction/Drawing-lines",
 				"创建文字": "manual/zh/introduction/Creating-text",
 				"创建文字": "manual/zh/introduction/Creating-text",
 				"载入3D模型": "manual/zh/introduction/Loading-3D-models",
 				"载入3D模型": "manual/zh/introduction/Loading-3D-models",
@@ -657,6 +663,7 @@ var list = {
 				"DirectionalLight": "api/zh/lights/DirectionalLight",
 				"DirectionalLight": "api/zh/lights/DirectionalLight",
 				"HemisphereLight": "api/zh/lights/HemisphereLight",
 				"HemisphereLight": "api/zh/lights/HemisphereLight",
 				"Light": "api/zh/lights/Light",
 				"Light": "api/zh/lights/Light",
+				"LightProbe": "api/zh/lights/LightProbe",
 				"PointLight": "api/zh/lights/PointLight",
 				"PointLight": "api/zh/lights/PointLight",
 				"RectAreaLight": "api/zh/lights/RectAreaLight",
 				"RectAreaLight": "api/zh/lights/RectAreaLight",
 				"SpotLight": "api/zh/lights/SpotLight"
 				"SpotLight": "api/zh/lights/SpotLight"
@@ -731,6 +738,7 @@ var list = {
 				"Ray": "api/zh/math/Ray",
 				"Ray": "api/zh/math/Ray",
 				"Sphere": "api/zh/math/Sphere",
 				"Sphere": "api/zh/math/Sphere",
 				"Spherical": "api/zh/math/Spherical",
 				"Spherical": "api/zh/math/Spherical",
+				"SphericalHarmonics3": "api/zh/math/SphericalHarmonics3",
 				"Triangle": "api/zh/math/Triangle",
 				"Triangle": "api/zh/math/Triangle",
 				"Vector2": "api/zh/math/Vector2",
 				"Vector2": "api/zh/math/Vector2",
 				"Vector3": "api/zh/math/Vector3",
 				"Vector3": "api/zh/math/Vector3",
@@ -762,6 +770,7 @@ var list = {
 			"渲染器": {
 			"渲染器": {
 				"WebGLMultisampleRenderTarget": "api/zh/renderers/WebGLMultisampleRenderTarget",
 				"WebGLMultisampleRenderTarget": "api/zh/renderers/WebGLMultisampleRenderTarget",
 				"WebGLRenderer": "api/zh/renderers/WebGLRenderer",
 				"WebGLRenderer": "api/zh/renderers/WebGLRenderer",
+				"WebGL1Renderer": "api/zh/renderers/WebGL1Renderer",
 				"WebGLRenderTarget": "api/zh/renderers/WebGLRenderTarget",
 				"WebGLRenderTarget": "api/zh/renderers/WebGLRenderTarget",
 				"WebGLCubeRenderTarget": "api/zh/renderers/WebGLCubeRenderTarget"
 				"WebGLCubeRenderTarget": "api/zh/renderers/WebGLCubeRenderTarget"
 			},
 			},
@@ -788,6 +797,7 @@ var list = {
 				"CompressedTexture": "api/zh/textures/CompressedTexture",
 				"CompressedTexture": "api/zh/textures/CompressedTexture",
 				"CubeTexture": "api/zh/textures/CubeTexture",
 				"CubeTexture": "api/zh/textures/CubeTexture",
 				"DataTexture": "api/zh/textures/DataTexture",
 				"DataTexture": "api/zh/textures/DataTexture",
+				"DataTexture2DArray": "api/zh/textures/DataTexture2DArray",
 				"DataTexture3D": "api/zh/textures/DataTexture3D",
 				"DataTexture3D": "api/zh/textures/DataTexture3D",
 				"DepthTexture": "api/zh/textures/DepthTexture",
 				"DepthTexture": "api/zh/textures/DepthTexture",
 				"Texture": "api/zh/textures/Texture",
 				"Texture": "api/zh/textures/Texture",
@@ -821,6 +831,10 @@ var list = {
 				"DecalGeometry": "examples/zh/geometries/DecalGeometry"
 				"DecalGeometry": "examples/zh/geometries/DecalGeometry"
 			},
 			},
 
 
+			"灯光": {
+				"LightProbeGenerator": "examples/zh/lights/LightProbeGenerator"
+			},
+
 			"辅助对象": {
 			"辅助对象": {
 				"FaceNormalsHelper": "examples/zh/helpers/FaceNormalsHelper",
 				"FaceNormalsHelper": "examples/zh/helpers/FaceNormalsHelper",
 				"LightProbeHelper": "examples/zh/helpers/LightProbeHelper",
 				"LightProbeHelper": "examples/zh/helpers/LightProbeHelper",

+ 1 - 1
docs/manual/en/introduction/Creating-a-scene.html

@@ -133,7 +133,7 @@
 				&lt;script src="js/three.js"&gt;&lt;/script&gt;
 				&lt;script src="js/three.js"&gt;&lt;/script&gt;
 				&lt;script&gt;
 				&lt;script&gt;
 					var scene = new THREE.Scene();
 					var scene = new THREE.Scene();
-					var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
+					var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
 
 
 					var renderer = new THREE.WebGLRenderer();
 					var renderer = new THREE.WebGLRenderer();
 					renderer.setSize( window.innerWidth, window.innerHeight );
 					renderer.setSize( window.innerWidth, window.innerHeight );

+ 9 - 0
docs/manual/en/introduction/How-to-run-things-locally.html

@@ -48,6 +48,15 @@
 				production servers such as [link:https://www.apache.org/ Apache] or [link:https://nginx.org NGINX], however they should be sufficient for testing your
 				production servers such as [link:https://www.apache.org/ Apache] or [link:https://nginx.org NGINX], however they should be sufficient for testing your
 				three.js application.
 				three.js application.
 			</p>
 			</p>
+			
+			<h3>Plugins for popular code editors</h3>
+			<div>
+				<p>Some code editors have plugins which will spawn a simple server on demand.</p>
+				<ul>
+					<li>[link:https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer Live Server] for Visual Studio Code.</li>
+					<li>[link:https://atom.io/packages/atom-live-server Live Server] for Atom.</li>
+				</ul>
+			</div>
 
 
 			<h3>Servez</h3>
 			<h3>Servez</h3>
 			<div>
 			<div>

+ 0 - 127
docs/manual/en/introduction/How-to-use-WebGL2.html

@@ -1,127 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-	<meta charset="utf-8">
-	<base href="../../../" />
-	<script src="list.js"></script>
-	<script src="page.js"></script>
-	<link type="text/css" rel="stylesheet" href="page.css" />
-</head>
-
-<body>
-	<h1>[name]</h1>
-
-	<p>
-		Starting with three.js R95, the engine supports rendering with a WebGL 2 context. By default three.js always uses a
-		WebGL 1 context when creating an instance of *WebGLRenderer*. If you want use a WebGL 2 context, please have a look
-		at the following workflow.
-	</p>
-
-	<h2>Workflow</h2>
-
-	<p>
-		Since WebGL 2 is not supported by all devices that support WebGL 1, it's important to check the respective availability.
-		To do so, please include [link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/WebGL.js WebGL.js] into your project.
-	</p>
-
-	<code>
-import { WEBGL } from 'three/examples/jsm/WebGL.js';
-	</code>
-
-	<p>
-		Next, use a code similar to the following in order to perform the availability check.
-	</p>
-
-	<code>
-
-if ( WEBGL.isWebGL2Available() === false ) {
-
-	document.body.appendChild( WEBGL.getWebGL2ErrorMessage() );
-
-}
-	</code>
-
-	<p>
-		Now it's time to create the renderer by applying the HTML5 canvas element and the respective WebGL 2 context
-		to the constructor of *WebGLRenderer*. As a result, three.js will internally use the given context for rendering and
-		automatically convert the built-in material's shader code to GLSL ES 3.00.
-	</p>
-
-	<p>
-		Since you are manually creating the WebGL 2 rendering context, you also have to pass in all necessary context attributes.
-		Note: It's not possible to modify these attributes after the context has been created, so passing them to the WebGLRenderer won't have any effect.
-	</p>
-
-	<code>
-var canvas = document.createElement( 'canvas' );
-var context = canvas.getContext( 'webgl2', { alpha: false } );
-var renderer = new THREE.WebGLRenderer( { canvas: canvas, context: context } );
-	</code>
-
-	<p>
-		Sometimes it is necessary to write custom shader code. Use the following code template as a basis for your own
-		implementation. First, the GLSL ES 3.00 code.
-	</p>
-
-	<code>
-&lt;script id="vs" type="x-shader/x-vertex"&gt;
-#version 300 es
-
-void main() {
-
-	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
-
-}
-&lt;/script&gt;
-&lt;script id="fs" type="x-shader/x-fragment"&gt;
-#version 300 es
-
-precision highp float;
-precision highp int;
-out vec4 out_FragColor;
-
-void main() {
-
-	out_FragColor = vec4( 1.0 );
-
-}
-&lt;/script&gt;
-	</code>
-	<p>
-		Second, the corresponding material creation in JavaScript.
-	</p>
-	<code>
-var material = new THREE.ShaderMaterial( {
-	vertexShader: document.getElementById( 'vs' ).textContent.trim(),
-	fragmentShader: document.getElementById( 'fs' ).textContent.trim()
-} );
-	</code>
-
-	<h2>Next Steps</h2>
-
-	<p>
-		Have a look at one of the official examples in order to see WebGL 2 features in action.<br /><br />
-
-		[example:webgl2_materials_texture3d WebGL2 / materials / texture3d]<br />
-		[example:webgl2_materials_texture2darray WebGL2 / materials / texture2darray]<br />
-		[example:webgl2_multisampled_renderbuffers WebGL2 / multisampled renderbuffers]
-	</p>
-
-	<h2>Supported features</h2>
-
-	<p>
-		Right now, the engine does only support a subset of all existing WebGL 2 features. The following list provides an
-		overview about what's already available in the latest version of three.js.
-		<ul>
-			<li>3D Textures</li>
-			<li>2D Texture Arrays</li>
-			<li>Multisampled Renderbuffers</li>
-			<li>Non-power of two (POT) textures work just the same as POT textures now. No resizing is required for best quality.</li>
-		</ul>
-
-	</p>
-
-</body>
-
-</html>

+ 1 - 1
docs/manual/en/introduction/How-to-use-post-processing.html

@@ -24,7 +24,7 @@
 		<h2>Workflow</h2>
 		<h2>Workflow</h2>
 
 
 		<p>
 		<p>
-			The first step in the process is to import all necessary files from the examples directory. The guide assumes your are using the official
+			The first step in the process is to import all necessary files from the examples directory. The guide assumes you are using the official
 			[link:https://www.npmjs.com/package/three npm package] of three.js. For our basic demo in this guide we need the following files.
 			[link:https://www.npmjs.com/package/three npm package] of three.js. For our basic demo in this guide we need the following files.
 		</p>
 		</p>
 
 

+ 2 - 2
docs/manual/en/introduction/Import-via-modules.html

@@ -66,8 +66,8 @@
 		<p>
 		<p>
 			The core of three.js is focused on the most important components of a 3D engine. Many other components like loaders or controls are part of the
 			The core of three.js is focused on the most important components of a 3D engine. Many other components like loaders or controls are part of the
 			examples directory. three.js ensures that these files are kept in sync with the core but users have to import them separately if they are required
 			examples directory. three.js ensures that these files are kept in sync with the core but users have to import them separately if they are required
-			for a project. You can find in the [link:https://github.com/mrdoob/three.js/tree/master/examples/jsm examples/jsm] directory an ES6
-			module version for almost all example files. If you install three.js via npm, you can import them like so:
+			for a project. You can find them in the [link:https://github.com/mrdoob/three.js/tree/master/examples/jsm examples/jsm] directory. If you install three.js
+			via npm, import example files like so:
 		</p>
 		</p>
 		<code>
 		<code>
 		import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
 		import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';

+ 1 - 10
docs/manual/en/introduction/Loading-3D-models.html

@@ -81,19 +81,10 @@
 
 
 	<p>
 	<p>
 		Only a few loaders (e.g. [page:ObjectLoader]) are included by default with
 		Only a few loaders (e.g. [page:ObjectLoader]) are included by default with
-		three.js — others should be added to your page individually. Depending on your
-		preference and comfort with build tools, choose one of the following:
+		three.js — others should be added to your app individually.
 	</p>
 	</p>
 
 
 	<code>
 	<code>
-		// global script
-		&lt;script src="GLTFLoader.js"&gt;&lt;/script&gt;
-
-		// commonjs
-		var THREE = window.THREE = require('three');
-		require('three/examples/js/loaders/GLTFLoader');
-
-		// ES modules
 		import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
 		import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
 	</code>
 	</code>
 
 

+ 1 - 1
docs/manual/zh/introduction/Creating-a-scene.html

@@ -134,7 +134,7 @@
 				&lt;script src="js/three.js"&gt;&lt;/script&gt;
 				&lt;script src="js/three.js"&gt;&lt;/script&gt;
 				&lt;script&gt;
 				&lt;script&gt;
 					var scene = new THREE.Scene();
 					var scene = new THREE.Scene();
-					var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
+					var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
 
 
 					var renderer = new THREE.WebGLRenderer();
 					var renderer = new THREE.WebGLRenderer();
 					renderer.setSize( window.innerWidth, window.innerHeight );
 					renderer.setSize( window.innerWidth, window.innerHeight );

+ 16 - 0
docs/manual/zh/introduction/How-to-run-things-locally.html

@@ -47,6 +47,22 @@
                 但对于你来测试three.js应用程序来说,它们就已经足够了。
                 但对于你来测试three.js应用程序来说,它们就已经足够了。
 			</p>
 			</p>
 
 
+			<h3>流行的代码编辑器插件</h3>
+			<div>
+				<p>一些代码编辑器具有插件,可以根据需要生成简单的服务器。</p>
+				<ul>
+					<li>Visual Studio Code [link:https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer Live Server] 插件。</li>
+					<li>Atom [link:https://atom.io/packages/atom-live-server Live Server] 插件。</li>
+				</ul>
+			</div>
+
+			<h3>Servez</h3>
+			<div>
+				<p>
+					[link:https://greggman.github.io/servez Servez] 一个具有界面的简单服务器。
+				</p>
+			</div>
+
 			<h3>Node.js server</h3>
 			<h3>Node.js server</h3>
 			<div>
 			<div>
 				<p>Node.js 具有一个简单的HTTP服务器包,如需安装,请执行:</p>
 				<p>Node.js 具有一个简单的HTTP服务器包,如需安装,请执行:</p>

+ 0 - 125
docs/manual/zh/introduction/How-to-use-WebGL2.html

@@ -1,125 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh">
-
-<head>
-	<meta charset="utf-8">
-	<base href="../../../" />
-	<script src="list.js"></script>
-	<script src="page.js"></script>
-	<link type="text/css" rel="stylesheet" href="page.css" />
-</head>
-
-<body>
-	<h1>如何使用WebGL 2([name])</h1>
-
-	<p>
-		从R95版本起,three.js便开始支持使用WebGL 2环境来进行渲染。默认情况下,当创建一个*WebGLRenderer*实例时,
-		three.js总是使用WebGL 1环境。如果你希望来使用WebGL 2环境,请参阅以下的工作流程。
-	</p>
-
-	<h2>工作流程</h2>
-
-	<p>
-		由于WebGL 2并不被所有支持WebGL 1的设备所支持,因此检查各种设备上WebGL 2的可用性是非常重要的。
-		要对其可用性进行检查,请将[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/WebGL.js WebGL.js]包含到你的项目中。
-	</p>
-
-	<code>
-import { WEBGL } from 'three/examples/jsm/WebGL.js';
-	</code>
-
-	<p>
-		接下来,使用和下列代码相似的代码来进行可用性检查。
-	</p>
-
-	<code>
-
-if ( WEBGL.isWebGL2Available() === false ) {
-
-	document.body.appendChild( WEBGL.getWebGL2ErrorMessage() );
-
-}
-	</code>
-
-	<p>
-		现在,你就可以将由*WebGLRenderer*所构造的renderer,应用到HTML5 Canvas元素和对应的WebGL 2绘图环境上了。
-		最终,three.js将在内部使用所给定的绘图环境来渲染,并自动将内置的材质的着色器代码转化为GLSL ES 3.00。
-	</p>
-
-	<p>
-		由于你是手动创建WebGL 2渲染上下文,因此还必须传入所有必需的上下文属性。
-		请注意:在上下文被创建后,将无法修改这些属性,因此将它们传递给WebGLRenderer将不会产生任何影响。
-	</p>
-
-	<code>
-var canvas = document.createElement( 'canvas' );
-var context = canvas.getContext( 'webgl2', { alpha: false } );
-var renderer = new THREE.WebGLRenderer( { canvas: canvas, context: context } );
-	</code>
-
-	<p>
-		有时候,写一些自定义着色器也是非常必要的。请使用下列的代码模板作为你自己来进行实现的基础。
-		首先是GLSL ES 3.00代码。
-	</p>
-
-	<code>
-&lt;script id="vs" type="x-shader/x-vertex"&gt;
-#version 300 es
-
-void main() {
-
-	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
-
-}
-&lt;/script&gt;
-&lt;script id="fs" type="x-shader/x-fragment"&gt;
-#version 300 es
-
-precision highp float;
-precision highp int;
-out vec4 out_FragColor;
-
-void main() {
-
-	out_FragColor = vec4( 1.0 );
-
-}
-&lt;/script&gt;
-	</code>
-	<p>
-		然后是使用JavaScript来创建的对应的材质。
-	</p>
-	<code>
-var material = new THREE.ShaderMaterial( {
-	vertexShader: document.getElementById( 'vs' ).textContent.trim(),
-	fragmentShader: document.getElementById( 'fs' ).textContent.trim()
-} );
-	</code>
-
-	<h2>接下来</h2>
-
-	<p>
-		请参阅官方示例,来看一看WebGL 2各种特性的运行。<br /><br />
-
-		[example:webgl2_materials_texture3d WebGL2 / materials / texture3d]<br />
-		[example:webgl2_materials_texture2darray WebGL2 / materials / texture2darray]<br />
-		[example:webgl2_multisampled_renderbuffers WebGL2 / multisampled renderbuffers]
-	</p>
-
-	<h2>支持的特性</h2>
-
-	<p>
-		当前,three.js引擎仅支持所有现有的WebGL 2特性的一个子集。
-		下列列表展现了在最新版本three.js中,已可用的特性的概览。
-		<ul>
-			<li>3D Textures</li>
-			<li>2D Texture Arrays</li>
-			<li>Multisampled Renderbuffers</li>
-			<li>Non-power of two (POT) textures work just the same as POT textures now. No resizing is required for best quality.</li>
-		</ul>
-
-	</p>
-
-</body>
-
-</html>

+ 4 - 4
docs/manual/zh/introduction/Import-via-modules.html

@@ -64,10 +64,10 @@
 
 
 		<h2>可引入的示例</h2>
 		<h2>可引入的示例</h2>
 		<p>
 		<p>
-			three.js的核心专注于实现3D引擎中最为重要的组件。其他诸如加载器和控制器等组件,是示例文件夹中的一部分。
-			three.js确保这些文件能够与核心保持同步,但如果在一个项目中这些组件是必要的,用户将必须分别地引入它们。
-			你可以在[link:https://github.com/mrdoob/three.js/tree/master/examples/jsm examples/jsm]文件夹中找到所有示例文件的ES6版本。
-			如果你是通过npm来安装three.js的,那么你可以使用类似下面的代码来引入它们:
+			The core of three.js is focused on the most important components of a 3D engine. Many other components like loaders or controls are part of the
+			examples directory. three.js ensures that these files are kept in sync with the core but users have to import them separately if they are required
+			for a project. You can find them in the [link:https://github.com/mrdoob/three.js/tree/master/examples/jsm examples/jsm] directory. If you install three.js
+			via npm, import example files like so:
 		</p>
 		</p>
 		<code>
 		<code>
 		import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
 		import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';

+ 2 - 10
docs/manual/zh/introduction/Loading-3D-models.html

@@ -70,19 +70,11 @@
 	<h2>加载</h2>
 	<h2>加载</h2>
 
 
 	<p>
 	<p>
-		three.js中默认仅包含了几个加载器(例如:[page:ObjectLoader])——其它加载器需要你分别地添加到页面中。
-		取决于你对构建工具的偏好,选择以下任意一种方式:
+		Only a few loaders (e.g. [page:ObjectLoader]) are included by default with
+		three.js — others should be added to your app individually.
 	</p>
 	</p>
 
 
 	<code>
 	<code>
-		// global script
-		&lt;script src="GLTFLoader.js"&gt;&lt;/script&gt;
-
-		// commonjs
-		var THREE = window.THREE = require('three');
-		require('three/examples/js/loaders/GLTFLoader');
-
-		// ES modules
 		import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
 		import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
 	</code>
 	</code>
 
 

+ 16 - 2
docs/scenes/material-browser.html

@@ -297,6 +297,17 @@
 
 
 			}
 			}
 
 
+			function updateCombine( material ) {
+
+				return function (combine) {
+
+					material.combine = parseInt( combine );
+					material.needsUpdate = true;
+
+				};
+
+			}
+
 			function updateTexture( material, materialKey, textures ) {
 			function updateTexture( material, materialKey, textures ) {
 
 
 				return function ( key ) {
 				return function ( key ) {
@@ -395,7 +406,7 @@
 				folder.add( data, 'envMaps', envMapKeys ).onChange( updateTexture( material, 'envMap', envMaps ) );
 				folder.add( data, 'envMaps', envMapKeys ).onChange( updateTexture( material, 'envMap', envMaps ) );
 				folder.add( data, 'map', diffuseMapKeys ).onChange( updateTexture( material, 'map', diffuseMaps ) );
 				folder.add( data, 'map', diffuseMapKeys ).onChange( updateTexture( material, 'map', diffuseMaps ) );
 				folder.add( data, 'alphaMap', alphaMapKeys ).onChange( updateTexture( material, 'alphaMap', alphaMaps ) );
 				folder.add( data, 'alphaMap', alphaMapKeys ).onChange( updateTexture( material, 'alphaMap', alphaMaps ) );
-				folder.add( material, 'combine', constants.combine );
+				folder.add( material, 'combine', constants.combine ).onChange( updateCombine( material ) );
 				folder.add( material, 'reflectivity', 0, 1 );
 				folder.add( material, 'reflectivity', 0, 1 );
 				folder.add( material, 'refractionRatio', 0, 1 );
 				folder.add( material, 'refractionRatio', 0, 1 );
 
 
@@ -466,7 +477,7 @@
 				folder.add( data, 'envMaps', envMapKeys ).onChange( updateTexture( material, 'envMap', envMaps ) );
 				folder.add( data, 'envMaps', envMapKeys ).onChange( updateTexture( material, 'envMap', envMaps ) );
 				folder.add( data, 'map', diffuseMapKeys ).onChange( updateTexture( material, 'map', diffuseMaps ) );
 				folder.add( data, 'map', diffuseMapKeys ).onChange( updateTexture( material, 'map', diffuseMaps ) );
 				folder.add( data, 'alphaMap', alphaMapKeys ).onChange( updateTexture( material, 'alphaMap', alphaMaps ) );
 				folder.add( data, 'alphaMap', alphaMapKeys ).onChange( updateTexture( material, 'alphaMap', alphaMaps ) );
-				folder.add( material, 'combine', constants.combine );
+				folder.add( material, 'combine', constants.combine ).onChange( updateCombine( material ) );
 				folder.add( material, 'reflectivity', 0, 1 );
 				folder.add( material, 'reflectivity', 0, 1 );
 				folder.add( material, 'refractionRatio', 0, 1 );
 				folder.add( material, 'refractionRatio', 0, 1 );
 
 
@@ -514,6 +525,9 @@
 				folder.add( data, 'envMaps', envMapKeys ).onChange( updateTexture( material, 'envMap', envMaps ) );
 				folder.add( data, 'envMaps', envMapKeys ).onChange( updateTexture( material, 'envMap', envMaps ) );
 				folder.add( data, 'map', diffuseMapKeys ).onChange( updateTexture( material, 'map', diffuseMaps ) );
 				folder.add( data, 'map', diffuseMapKeys ).onChange( updateTexture( material, 'map', diffuseMaps ) );
 				folder.add( data, 'alphaMap', alphaMapKeys ).onChange( updateTexture( material, 'alphaMap', alphaMaps ) );
 				folder.add( data, 'alphaMap', alphaMapKeys ).onChange( updateTexture( material, 'alphaMap', alphaMaps ) );
+				folder.add( material, 'combine', constants.combine ).onChange( updateCombine( material ) );
+				folder.add( material, 'reflectivity', 0, 1 );
+				folder.add( material, 'refractionRatio', 0, 1 );
 
 
 			}
 			}
 
 

+ 42 - 31
editor/css/main.css

@@ -22,10 +22,15 @@ button {
 	position: relative;
 	position: relative;
 }
 }
 
 
+input {
+	vertical-align: middle;
+}
+
 textarea {
 textarea {
 	tab-size: 4;
 	tab-size: 4;
 	white-space: pre;
 	white-space: pre;
 	word-wrap: normal;
 	word-wrap: normal;
+	vertical-align: middle;
 }
 }
 
 
 	textarea.success {
 	textarea.success {
@@ -130,9 +135,27 @@ textarea, input { outline: none; } /* osx */
 
 
 /* outliner */
 /* outliner */
 
 
+#outliner .opener {
+	display: inline-block;
+	width: 14px;
+	height: 14px;
+	margin: 0px 4px;
+	vertical-align: top;
+	text-align: center;
+}
+
+	#outliner .opener.open:after {
+		content: '−';
+	}
+
+	#outliner .opener.closed:after {
+		content: '+';
+	}
+
 #outliner .option {
 #outliner .option {
 
 
 	border: 1px solid transparent;
 	border: 1px solid transparent;
+
 }
 }
 
 
 #outliner .option.drag {
 #outliner .option.drag {
@@ -154,14 +177,15 @@ textarea, input { outline: none; } /* osx */
 }
 }
 
 
 #outliner .type {
 #outliner .type {
-	position:relative;
-	top:-2px;
-	padding: 0 2px;
+	display: inline-block;
+	width: 14px;
+	height: 14px;
 	color: #ddd;
 	color: #ddd;
+	text-align: center;
 }
 }
 
 
 #outliner .type:after {
 #outliner .type:after {
-	content: '';
+	content: '';
 }
 }
 
 
 #outliner .Scene {
 #outliner .Scene {
@@ -386,10 +410,6 @@ select {
 	overflow: auto;
 	overflow: auto;
 }
 }
 
 
-	#sidebar * {
-		vertical-align: middle;
-	}
-
 	#sidebar .Panel {
 	#sidebar .Panel {
 		color: #888;
 		color: #888;
 		padding: 10px;
 		padding: 10px;
@@ -423,28 +443,21 @@ select {
 
 
 #toolbar {
 #toolbar {
 	position: absolute;
 	position: absolute;
-	left: calc(50% - 290px); /* ( ( 100% - 300px ) / 2.0 ) - 140px */
-	width: 280px;
-	bottom: 16px;
-	height: 32px;
+	left: 10px;
+	top: 42px;
+	width: 32px;
 	background: #eee;
 	background: #eee;
-	color: #333;
+	text-align: center;
 }
 }
 
 
-	#toolbar * {
-		vertical-align: middle;
-	}
-
-	#toolbar .Panel {
-		padding: 4px;
-		color: #888;
+	#toolbar button, #toolbar input {
+		height: 32px;
 	}
 	}
 
 
-	#toolbar button {
-		margin-right: 6px;
-		line-height: 14px;
-		height: 24px;
-	}
+		#toolbar button img {
+			width: 16px;
+			opacity: 0.5;
+		}
 
 
 .Outliner {
 .Outliner {
 	color: #444;
 	color: #444;
@@ -538,12 +551,6 @@ select {
 		bottom: 0;
 		bottom: 0;
 	}
 	}
 
 
-	#toolbar {
-		left: calc(50% - 140px);
-		width: 280px;
-		top: 68px;
-	}
-
 }
 }
 
 
 /* DARK MODE */
 /* DARK MODE */
@@ -633,6 +640,10 @@ select {
 		background-color: #111;
 		background-color: #111;
 	}
 	}
 
 
+		#toolbar img {
+			filter: invert(1);
+		}
+
 	.Outliner {
 	.Outliner {
 		color: #888;
 		color: #888;
 		background: #222;
 		background: #222;

+ 2 - 2
editor/docs/Implementing additional commands for undo-redo.md

@@ -26,7 +26,7 @@ Every command needs a constructor. In the constructor
 
 
 ```javascript
 ```javascript
 
 
-var DoSomethingCommand = function ( editor ) {
+function DoSomethingCommand( editor ) {
 
 
 	Command.call( this, editor ); // Required: Call default constructor
 	Command.call( this, editor ); // Required: Call default constructor
 
 
@@ -36,7 +36,7 @@ var DoSomethingCommand = function ( editor ) {
 	// TODO: store all the relevant information needed to
 	// TODO: store all the relevant information needed to
 	// restore the old and the new state
 	// restore the old and the new state
 
 
-};
+}
 ```
 ```
 
 
 And as part of the prototype you need to implement four functions
 And as part of the prototype you need to implement four functions

+ 16 - 0
editor/images/rotate.svg

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+	<g>
+		<path d="M256,64c-63.749,0-116.539,27.751-153.514,61.856l1.762-105.739C104.432,9.191,95.716,0.178,84.784,0
+			c-0.112,0-0.224,0-0.336,0C73.673,0,64.845,8.65,64.66,19.464l-2.639,158.351c-0.086,5.364,2.006,10.537,5.806,14.331
+			c3.794,3.794,8.94,5.885,14.331,5.793l154.392-2.639c10.926-0.191,19.635-9.198,19.451-20.13
+			c-0.185-10.814-9.013-19.457-19.787-19.457c-0.112,0-0.224,0-0.343,0l-109.13,1.867c30.515-28.919,75.54-53.991,129.26-53.991
+			c110.113,0,184.082,95.182,184.082,184.082c0,89.217-73.969,184.742-184.082,184.742c-120.109,0-184.082-107.296-184.082-184.742
+			c0-10.933-8.861-19.794-19.794-19.794S32.33,276.737,32.33,287.67C32.33,396.008,122.207,512,256,512
+			s223.67-115.992,223.67-224.336C479.67,179.649,389.793,64,256,64z"/>
+	</g>
+</g>
+</svg>

+ 60 - 0
editor/images/scale.svg

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+	<g>
+		<path d="M502.772,13.32c-6.85-6.85-17.943-6.85-24.793,0L324.846,166.453c-6.85,6.844-6.85,17.949,0,24.793
+			c3.425,3.425,7.908,5.138,12.397,5.138c4.483,0,8.972-1.713,12.397-5.138L502.772,38.114
+			C509.622,31.269,509.622,20.164,502.772,13.32z"/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M502.772,13.32c-3.285-3.291-7.75-5.138-12.397-5.138c-0.041,0-0.088,0-0.129,0L337.114,9.352
+			c-9.691,0.076-17.482,7.984-17.406,17.669c0.076,9.638,7.914,17.4,17.534,17.4c0.035,0,0.082,0,0.129,0l135.335-1.035
+			l-1.035,135.329c-0.07,9.685,7.721,17.593,17.406,17.669c0.041,0,0.082,0,0.129,0c9.62,0,17.458-7.762,17.534-17.4l1.169-153.132
+			C507.944,21.152,506.092,16.64,502.772,13.32z"/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M502.772,482.069L349.639,328.943c-6.85-6.85-17.943-6.85-24.793,0c-6.85,6.85-6.85,17.949,0,24.793l153.132,153.127
+			c3.425,3.425,7.908,5.138,12.397,5.138c4.483,0,8.972-1.713,12.397-5.138C509.622,500.012,509.622,488.913,502.772,482.069z"/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M506.74,341.211c-0.07-9.685-7.914-17.283-17.663-17.406c-9.691,0.07-17.482,7.984-17.406,17.663l1.029,135.329
+			l-135.329-1.029c-0.041,0-0.088,0-0.129,0c-9.62,0-17.458,7.768-17.534,17.406c-0.07,9.679,7.721,17.587,17.406,17.663
+			L490.246,512c0.035,0,0.082,0,0.129,0c4.647,0,9.106-1.847,12.397-5.132c3.32-3.326,5.173-7.838,5.138-12.531L506.74,341.211z"/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M190.662,158.27L37.535,5.138c-6.85-6.844-17.955-6.85-24.799,0c-6.85,6.844-6.85,17.949,0,24.793l153.127,153.132
+			c3.425,3.425,7.914,5.138,12.403,5.138c4.483,0,8.972-1.713,12.397-5.138C197.512,176.219,197.512,165.114,190.662,158.27z"/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M178.4,1.169L25.267,0c-0.047,0-0.088,0-0.134,0c-4.652,0-9.112,1.847-12.397,5.138c-3.326,3.32-5.173,7.832-5.143,12.531
+			l1.169,153.132c0.076,9.638,7.914,17.4,17.534,17.4c0.047,0,0.094,0,0.14,0c9.685-0.076,17.476-7.984,17.4-17.669L42.802,35.203
+			l135.329,1.034c0.041,0,0.088,0,0.134,0c9.62,0,17.458-7.762,17.534-17.4C195.876,9.153,188.085,1.245,178.4,1.169z"/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M187.155,328.943c-6.85-6.85-17.955-6.85-24.799,0L9.223,482.069c-6.844,6.844-6.844,17.943,0,24.793
+			c3.425,3.425,7.914,5.138,12.403,5.138c4.483,0,8.972-1.713,12.397-5.137l153.132-153.127
+			C193.999,346.892,194.005,335.793,187.155,328.943z"/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M174.624,475.763l-135.329,1.029l1.035-135.329c0.076-9.679-7.715-17.587-17.4-17.663c-0.041,0-0.088,0-0.134,0
+			c-9.62,0-17.458,7.768-17.534,17.406L4.092,494.331c-0.035,4.693,1.812,9.205,5.132,12.531c3.291,3.296,7.756,5.138,12.403,5.138
+			c0.041,0,0.088,0,0.134,0l153.132-1.169c9.685-0.07,17.476-7.984,17.4-17.663C192.217,483.478,184.168,475.78,174.624,475.763z"/>
+	</g>
+</g>
+</svg>

+ 46 - 0
editor/images/translate.svg

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+	<g>
+		<path d="M47.059,256l61.907-61.369c7.622-7.563,7.68-19.871,0.117-27.499c-7.563-7.628-19.877-7.68-27.499-0.117l-75.828,75.18
+			C2.074,245.844,0,250.815,0,256s2.074,10.156,5.755,13.811l75.828,75.18c3.791,3.753,8.736,5.632,13.688,5.632
+			c5.003,0,10.007-1.918,13.805-5.755c7.563-7.628,7.505-19.936-0.117-27.499L47.059,256z"/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M344.991,81.583l-75.18-75.828C266.156,2.074,261.185,0,256,0s-10.156,2.074-13.811,5.749l-75.18,75.828
+			c-7.563,7.628-7.505,19.936,0.117,27.499c7.628,7.557,19.942,7.505,27.499-0.117L256,47.059l61.369,61.9
+			c3.804,3.837,8.808,5.755,13.811,5.755c4.945,0,9.896-1.873,13.688-5.632C352.496,101.519,352.548,89.211,344.991,81.583z"/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M344.874,402.918c-7.635-7.557-19.942-7.505-27.499,0.123l-61.369,61.907l-61.375-61.907
+			c-7.557-7.635-19.871-7.667-27.499-0.123c-7.622,7.563-7.68,19.871-0.117,27.499l75.18,75.828
+			c3.649,3.688,8.62,5.755,13.805,5.755s10.156-2.067,13.818-5.755l75.18-75.828C352.554,422.789,352.502,410.481,344.874,402.918z"
+			/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M506.245,242.189l-75.828-75.18c-7.635-7.563-19.942-7.505-27.499,0.117c-7.557,7.628-7.505,19.936,0.123,27.499
+			L464.948,256l-61.907,61.369c-7.628,7.563-7.68,19.871-0.123,27.499c3.804,3.837,8.808,5.755,13.811,5.755
+			c4.945,0,9.897-1.88,13.688-5.632l75.828-75.18C509.933,266.156,512,261.185,512,256S509.933,245.844,506.245,242.189z"/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M492.557,236.557H19.443C8.704,236.557,0,245.261,0,256c0,10.739,8.704,19.443,19.443,19.443h473.114
+			c10.739,0,19.443-8.704,19.443-19.443C512,245.261,503.296,236.557,492.557,236.557z"/>
+	</g>
+</g>
+<g>
+	<g>
+		<path d="M256,0c-10.739,0-19.443,8.704-19.443,19.443v473.114c0,10.739,8.704,19.443,19.443,19.443
+			c10.739,0,19.443-8.704,19.443-19.443V19.443C275.443,8.704,266.739,0,256,0z"/>
+	</g>
+</g>
+</svg>

+ 2 - 2
editor/js/Command.js

@@ -9,7 +9,7 @@
  * @constructor
  * @constructor
  */
  */
 
 
-var Command = function ( editor ) {
+function Command( editor ) {
 
 
 	this.id = - 1;
 	this.id = - 1;
 	this.inMemory = false;
 	this.inMemory = false;
@@ -18,7 +18,7 @@ var Command = function ( editor ) {
 	this.name = '';
 	this.name = '';
 	this.editor = editor;
 	this.editor = editor;
 
 
-};
+}
 
 
 Command.prototype.toJSON = function () {
 Command.prototype.toJSON = function () {
 
 

+ 2 - 3
editor/js/Config.js

@@ -2,7 +2,7 @@
  * @author mrdoob / http://mrdoob.com/
  * @author mrdoob / http://mrdoob.com/
  */
  */
 
 
-var Config = function () {
+function Config() {
 
 
 	var name = 'threejs-editor';
 	var name = 'threejs-editor';
 
 
@@ -22,7 +22,6 @@ var Config = function () {
 		'project/renderer/physicallyCorrectLights': false,
 		'project/renderer/physicallyCorrectLights': false,
 		'project/renderer/toneMapping': 0, // NoToneMapping
 		'project/renderer/toneMapping': 0, // NoToneMapping
 		'project/renderer/toneMappingExposure': 1,
 		'project/renderer/toneMappingExposure': 1,
-		'project/renderer/toneMappingWhitePoint': 1,
 
 
 		'settings/history': false,
 		'settings/history': false,
 
 
@@ -79,6 +78,6 @@ var Config = function () {
 
 
 	};
 	};
 
 
-};
+}
 
 
 export { Config };
 export { Config };

+ 7 - 3
editor/js/Editor.js

@@ -10,7 +10,7 @@ import { History as _History } from './History.js';
 import { Strings } from './Strings.js';
 import { Strings } from './Strings.js';
 import { Storage as _Storage } from './Storage.js';
 import { Storage as _Storage } from './Storage.js';
 
 
-var Editor = function () {
+function Editor() {
 
 
 	this.DEFAULT_CAMERA = new THREE.PerspectiveCamera( 50, 1, 0.01, 1000 );
 	this.DEFAULT_CAMERA = new THREE.PerspectiveCamera( 50, 1, 0.01, 1000 );
 	this.DEFAULT_CAMERA.name = 'Camera';
 	this.DEFAULT_CAMERA.name = 'Camera';
@@ -117,7 +117,7 @@ var Editor = function () {
 
 
 	this.addCamera( this.camera );
 	this.addCamera( this.camera );
 
 
-};
+}
 
 
 Editor.prototype = {
 Editor.prototype = {
 
 
@@ -691,7 +691,11 @@ Editor.prototype = {
 			metadata: {},
 			metadata: {},
 			project: {
 			project: {
 				shadows: this.config.getKey( 'project/renderer/shadows' ),
 				shadows: this.config.getKey( 'project/renderer/shadows' ),
-				vr: this.config.getKey( 'project/vr' )
+				shadowType: this.config.getKey( 'project/renderer/shadowType' ),
+				vr: this.config.getKey( 'project/vr' ),
+				physicallyCorrectLights: this.config.getKey( 'project/renderer/physicallyCorrectLights' ),
+				toneMapping: this.config.getKey( 'project/renderer/toneMapping' ),
+				toneMappingExposure: this.config.getKey( 'project/renderer/toneMappingExposure' )
 			},
 			},
 			camera: this.camera.toJSON(),
 			camera: this.camera.toJSON(),
 			scene: this.scene.toJSON(),
 			scene: this.scene.toJSON(),

+ 2 - 2
editor/js/EditorControls.js

@@ -7,7 +7,7 @@
 
 
 import * as THREE from '../../build/three.module.js';
 import * as THREE from '../../build/three.module.js';
 
 
-var EditorControls = function ( object, domElement ) {
+function EditorControls( object, domElement ) {
 
 
 	// API
 	// API
 
 
@@ -309,7 +309,7 @@ var EditorControls = function ( object, domElement ) {
 	domElement.addEventListener( 'touchstart', touchStart, false );
 	domElement.addEventListener( 'touchstart', touchStart, false );
 	domElement.addEventListener( 'touchmove', touchMove, false );
 	domElement.addEventListener( 'touchmove', touchMove, false );
 
 
-};
+}
 
 
 EditorControls.prototype = Object.create( THREE.EventDispatcher.prototype );
 EditorControls.prototype = Object.create( THREE.EventDispatcher.prototype );
 EditorControls.prototype.constructor = EditorControls;
 EditorControls.prototype.constructor = EditorControls;

+ 2 - 2
editor/js/History.js

@@ -5,7 +5,7 @@
 
 
 import * as Commands from './commands/Commands.js';
 import * as Commands from './commands/Commands.js';
 
 
-var History = function ( editor ) {
+function History( editor ) {
 
 
 	this.editor = editor;
 	this.editor = editor;
 	this.undos = [];
 	this.undos = [];
@@ -32,7 +32,7 @@ var History = function ( editor ) {
 
 
 	} );
 	} );
 
 
-};
+}
 
 
 History.prototype = {
 History.prototype = {
 
 

+ 3 - 3
editor/js/Loader.js

@@ -28,7 +28,7 @@ import { LoaderUtils } from './LoaderUtils.js';
 
 
 import { JSZip } from '../../examples/jsm/libs/jszip.module.min.js';
 import { JSZip } from '../../examples/jsm/libs/jszip.module.min.js';
 
 
-var Loader = function ( editor ) {
+function Loader( editor ) {
 
 
 	var scope = this;
 	var scope = this;
 
 
@@ -521,7 +521,7 @@ var Loader = function ( editor ) {
 
 
 			default:
 			default:
 
 
-				// alert( 'Unsupported file format (' + extension +  ').' );
+				console.error( 'Unsupported file format (' + extension + ').' );
 
 
 				break;
 				break;
 
 
@@ -717,6 +717,6 @@ var Loader = function ( editor ) {
 
 
 	}
 	}
 
 
-};
+}
 
 
 export { Loader };
 export { Loader };

+ 2 - 2
editor/js/Menubar.Add.js

@@ -8,7 +8,7 @@ import { UIPanel, UIRow, UIHorizontalRule } from './libs/ui.js';
 
 
 import { AddObjectCommand } from './commands/AddObjectCommand.js';
 import { AddObjectCommand } from './commands/AddObjectCommand.js';
 
 
-var MenubarAdd = function ( editor ) {
+function MenubarAdd( editor ) {
 
 
 	var strings = editor.strings;
 	var strings = editor.strings;
 
 
@@ -475,6 +475,6 @@ var MenubarAdd = function ( editor ) {
 
 
 	return container;
 	return container;
 
 
-};
+}
 
 
 export { MenubarAdd };
 export { MenubarAdd };

+ 2 - 2
editor/js/Menubar.Edit.js

@@ -9,7 +9,7 @@ import { RemoveObjectCommand } from './commands/RemoveObjectCommand.js';
 import { MultiCmdsCommand } from './commands/MultiCmdsCommand.js';
 import { MultiCmdsCommand } from './commands/MultiCmdsCommand.js';
 import { SetMaterialValueCommand } from './commands/SetMaterialValueCommand.js';
 import { SetMaterialValueCommand } from './commands/SetMaterialValueCommand.js';
 
 
-var MenubarEdit = function ( editor ) {
+function MenubarEdit( editor ) {
 
 
 	var strings = editor.strings;
 	var strings = editor.strings;
 
 
@@ -272,6 +272,6 @@ var MenubarEdit = function ( editor ) {
 
 
 	return container;
 	return container;
 
 
-};
+}
 
 
 export { MenubarEdit };
 export { MenubarEdit };

+ 2 - 2
editor/js/Menubar.Examples.js

@@ -6,7 +6,7 @@ import * as THREE from '../../build/three.module.js';
 
 
 import { UIPanel, UIRow } from './libs/ui.js';
 import { UIPanel, UIRow } from './libs/ui.js';
 
 
-var MenubarExamples = function ( editor ) {
+function MenubarExamples( editor ) {
 
 
 	var strings = editor.strings;
 	var strings = editor.strings;
 
 
@@ -65,6 +65,6 @@ var MenubarExamples = function ( editor ) {
 
 
 	return container;
 	return container;
 
 
-};
+}
 
 
 export { MenubarExamples };
 export { MenubarExamples };

+ 2 - 2
editor/js/Menubar.File.js

@@ -15,7 +15,7 @@ import { JSZip } from '../../examples/jsm/libs/jszip.module.min.js';
 
 
 import { UIPanel, UIRow, UIHorizontalRule } from './libs/ui.js';
 import { UIPanel, UIRow, UIHorizontalRule } from './libs/ui.js';
 
 
-var MenubarFile = function ( editor ) {
+function MenubarFile( editor ) {
 
 
 	function parseNumber( key, value ) {
 	function parseNumber( key, value ) {
 
 
@@ -482,6 +482,6 @@ var MenubarFile = function ( editor ) {
 
 
 	return container;
 	return container;
 
 
-};
+}
 
 
 export { MenubarFile };
 export { MenubarFile };

+ 14 - 2
editor/js/Menubar.Help.js

@@ -4,7 +4,7 @@
 
 
 import { UIPanel, UIRow } from './libs/ui.js';
 import { UIPanel, UIRow } from './libs/ui.js';
 
 
-var MenubarHelp = function ( editor ) {
+function MenubarHelp( editor ) {
 
 
 	var strings = editor.strings;
 	var strings = editor.strings;
 
 
@@ -32,6 +32,18 @@ var MenubarHelp = function ( editor ) {
 	} );
 	} );
 	options.add( option );
 	options.add( option );
 
 
+	// Icon
+
+	var option = new UIRow();
+	option.setClass( 'option' );
+	option.setTextContent( strings.getKey( 'menubar/help/icons' ) );
+	option.onClick( function () {
+
+		window.open( 'https://www.flaticon.com/packs/interface-44', '_blank' );
+
+	} );
+	options.add( option );
+
 	// About
 	// About
 
 
 	var option = new UIRow();
 	var option = new UIRow();
@@ -46,6 +58,6 @@ var MenubarHelp = function ( editor ) {
 
 
 	return container;
 	return container;
 
 
-};
+}
 
 
 export { MenubarHelp };
 export { MenubarHelp };

+ 2 - 2
editor/js/Menubar.Play.js

@@ -4,7 +4,7 @@
 
 
 import { UIPanel } from './libs/ui.js';
 import { UIPanel } from './libs/ui.js';
 
 
-var MenubarPlay = function ( editor ) {
+function MenubarPlay( editor ) {
 
 
 	var signals = editor.signals;
 	var signals = editor.signals;
 	var strings = editor.strings;
 	var strings = editor.strings;
@@ -38,6 +38,6 @@ var MenubarPlay = function ( editor ) {
 
 
 	return container;
 	return container;
 
 
-};
+}
 
 
 export { MenubarPlay };
 export { MenubarPlay };

+ 2 - 2
editor/js/Menubar.Status.js

@@ -7,7 +7,7 @@ import * as THREE from '../../build/three.module.js';
 import { UIPanel, UIText } from './libs/ui.js';
 import { UIPanel, UIText } from './libs/ui.js';
 import { UIBoolean } from './libs/ui.three.js';
 import { UIBoolean } from './libs/ui.three.js';
 
 
-var MenubarStatus = function ( editor ) {
+function MenubarStatus( editor ) {
 
 
 	var strings = editor.strings;
 	var strings = editor.strings;
 
 
@@ -50,6 +50,6 @@ var MenubarStatus = function ( editor ) {
 
 
 	return container;
 	return container;
 
 
-};
+}
 
 
 export { MenubarStatus };
 export { MenubarStatus };

+ 2 - 2
editor/js/Menubar.View.js

@@ -4,7 +4,7 @@
 
 
 import { UIPanel, UIRow } from './libs/ui.js';
 import { UIPanel, UIRow } from './libs/ui.js';
 
 
-var MenubarView = function ( editor ) {
+function MenubarView( editor ) {
 
 
 	var container = new UIPanel();
 	var container = new UIPanel();
 	container.setClass( 'menu' );
 	container.setClass( 'menu' );
@@ -32,6 +32,6 @@ var MenubarView = function ( editor ) {
 
 
 	return container;
 	return container;
 
 
-};
+}
 
 
 export { MenubarView };
 export { MenubarView };

+ 2 - 2
editor/js/Menubar.js

@@ -12,7 +12,7 @@ import { MenubarHelp } from './Menubar.Help.js';
 import { MenubarPlay } from './Menubar.Play.js';
 import { MenubarPlay } from './Menubar.Play.js';
 import { MenubarStatus } from './Menubar.Status.js';
 import { MenubarStatus } from './Menubar.Status.js';
 
 
-var Menubar = function ( editor ) {
+function Menubar( editor ) {
 
 
 	var container = new UIPanel();
 	var container = new UIPanel();
 	container.setId( 'menubar' );
 	container.setId( 'menubar' );
@@ -28,6 +28,6 @@ var Menubar = function ( editor ) {
 
 
 	return container;
 	return container;
 
 
-};
+}
 
 
 export { Menubar };
 export { Menubar };

+ 2 - 2
editor/js/Script.js

@@ -7,7 +7,7 @@ import { UIElement, UIPanel, UIText } from './libs/ui.js';
 import { SetScriptValueCommand } from './commands/SetScriptValueCommand.js';
 import { SetScriptValueCommand } from './commands/SetScriptValueCommand.js';
 import { SetMaterialValueCommand } from './commands/SetMaterialValueCommand.js';
 import { SetMaterialValueCommand } from './commands/SetMaterialValueCommand.js';
 
 
-var Script = function ( editor ) {
+function Script( editor ) {
 
 
 	var signals = editor.signals;
 	var signals = editor.signals;
 
 
@@ -461,6 +461,6 @@ var Script = function ( editor ) {
 
 
 	return container;
 	return container;
 
 
-};
+}
 
 
 export { Script };
 export { Script };

+ 2 - 2
editor/js/Sidebar.Animation.js

@@ -4,7 +4,7 @@
 
 
 import { UIPanel, UIDiv, UIBreak, UISelect, UIButton, UIText } from './libs/ui.js';
 import { UIPanel, UIDiv, UIBreak, UISelect, UIButton, UIText } from './libs/ui.js';
 
 
-var SidebarAnimation = function ( editor ) {
+function SidebarAnimation( editor ) {
 
 
 	var signals = editor.signals;
 	var signals = editor.signals;
 	var mixer = editor.mixer;
 	var mixer = editor.mixer;
@@ -83,6 +83,6 @@ var SidebarAnimation = function ( editor ) {
 
 
 	return container;
 	return container;
 
 
-};
+}
 
 
 export { SidebarAnimation };
 export { SidebarAnimation };

部分文件因为文件数量过多而无法显示