Browse Source

bump three to r119

Gregg Tavares 5 years ago
parent
commit
77bae8038d
100 changed files with 244 additions and 289 deletions
  1. 1 0
      .vscode/settings.json
  2. 3 3
      threejs/background-v01.html
  3. 3 3
      threejs/background.html
  4. 1 1
      threejs/lessons/kr/threejs-backgrounds.md
  5. 2 2
      threejs/lessons/kr/threejs-custom-geometry.md
  6. 3 3
      threejs/lessons/kr/threejs-fundamentals.md
  7. 5 5
      threejs/lessons/kr/threejs-lights.md
  8. 4 4
      threejs/lessons/kr/threejs-load-gltf.md
  9. 6 6
      threejs/lessons/kr/threejs-load-obj.md
  10. 1 1
      threejs/lessons/kr/threejs-multiple-scenes.md
  11. 6 6
      threejs/lessons/kr/threejs-offscreencanvas.md
  12. 4 4
      threejs/lessons/kr/threejs-optimize-lots-of-objects-animated.md
  13. 1 1
      threejs/lessons/kr/threejs-optimize-lots-of-objects.md
  14. 4 4
      threejs/lessons/kr/threejs-post-processing.md
  15. 1 1
      threejs/lessons/kr/threejs-prerequisites.md
  16. 4 4
      threejs/lessons/kr/threejs-rendering-on-demand.md
  17. 2 2
      threejs/lessons/kr/threejs-transparency.md
  18. 1 1
      threejs/lessons/resources/threejs-cameras.js
  19. 1 1
      threejs/lessons/resources/threejs-custom-buffergeometry.js
  20. 2 2
      threejs/lessons/resources/threejs-fog.js
  21. 2 2
      threejs/lessons/resources/threejs-lesson-utils.js
  22. 2 2
      threejs/lessons/resources/threejs-lights.js
  23. 1 1
      threejs/lessons/resources/threejs-lots-of-objects.js
  24. 1 1
      threejs/lessons/resources/threejs-materials.js
  25. 1 1
      threejs/lessons/resources/threejs-primitives.js
  26. 1 1
      threejs/lessons/resources/threejs-textures.js
  27. 2 2
      threejs/lessons/resources/threejs-voxel-geometry.js
  28. 2 2
      threejs/lessons/ru/threejs-custom-geometry.md
  29. 1 1
      threejs/lessons/ru/threejs-fundamentals.md
  30. 5 5
      threejs/lessons/ru/threejs-lights.md
  31. 1 1
      threejs/lessons/ru/threejs-multiple-scenes.md
  32. 1 1
      threejs/lessons/ru/threejs-prerequisites.md
  33. 4 4
      threejs/lessons/ru/threejs-rendering-on-demand.md
  34. 4 4
      threejs/lessons/threejs-align-html-elements-to-3d.md
  35. 25 56
      threejs/lessons/threejs-backgrounds.md
  36. 2 2
      threejs/lessons/threejs-canvas-textures.md
  37. 2 2
      threejs/lessons/threejs-custom-geometry.md
  38. 3 3
      threejs/lessons/threejs-fundamentals.md
  39. 8 8
      threejs/lessons/threejs-game.md
  40. 5 5
      threejs/lessons/threejs-lights.md
  41. 4 4
      threejs/lessons/threejs-load-gltf.md
  42. 6 6
      threejs/lessons/threejs-load-obj.md
  43. 1 1
      threejs/lessons/threejs-multiple-scenes.md
  44. 6 6
      threejs/lessons/threejs-offscreencanvas.md
  45. 4 4
      threejs/lessons/threejs-optimize-lots-of-objects-animated.md
  46. 1 1
      threejs/lessons/threejs-optimize-lots-of-objects.md
  47. 4 4
      threejs/lessons/threejs-post-processing.md
  48. 1 1
      threejs/lessons/threejs-prerequisites.md
  49. 4 4
      threejs/lessons/threejs-rendering-on-demand.md
  50. 2 2
      threejs/lessons/threejs-transparency.md
  51. 2 2
      threejs/lessons/threejs-webvr.md
  52. 1 1
      threejs/lessons/zh_cn/threejs-fundamentals.md
  53. 6 6
      threejs/lessons/zh_cn/threejs-load-obj.md
  54. 1 1
      threejs/offscreencanvas-cubes.js
  55. 1 1
      threejs/offscreencanvas-worker-cubes.js
  56. 2 2
      threejs/offscreencanvas-worker-orbitcontrols.js
  57. 1 1
      threejs/offscreencanvas-worker-picking.js
  58. 2 2
      threejs/threejs-align-html-elements-to-3d-globe-too-many-labels.html
  59. 2 2
      threejs/threejs-align-html-elements-to-3d-globe.html
  60. 2 2
      threejs/threejs-align-html-to-3d-w-hiding.html
  61. 2 2
      threejs/threejs-align-html-to-3d-w-sorting.html
  62. 2 2
      threejs/threejs-align-html-to-3d.html
  63. 1 1
      threejs/threejs-background-css.html
  64. 2 2
      threejs/threejs-background-cubemap.html
  65. 7 22
      threejs/threejs-background-equirectangularmap.html
  66. 1 1
      threejs/threejs-background-scene-background-fixed-aspect.html
  67. 1 1
      threejs/threejs-background-scene-background.html
  68. 1 1
      threejs/threejs-background-separate-scene-bad-aspect.html
  69. 1 1
      threejs/threejs-background-separate-scene.html
  70. 2 2
      threejs/threejs-billboard-labels-w-sprites-adjust-height.html
  71. 2 2
      threejs/threejs-billboard-labels-w-sprites.html
  72. 2 2
      threejs/threejs-billboard-trees-no-billboards.html
  73. 2 2
      threejs/threejs-billboard-trees-static-billboards.html
  74. 2 2
      threejs/threejs-cameras-logarithmic-depth-buffer.html
  75. 2 2
      threejs/threejs-cameras-orthographic-2-scenes.html
  76. 1 1
      threejs/threejs-cameras-orthographic-canvas-top-left-origin.html
  77. 2 2
      threejs/threejs-cameras-perspective-2-scenes.html
  78. 2 2
      threejs/threejs-cameras-perspective.html
  79. 2 2
      threejs/threejs-cameras-z-fighting.html
  80. 1 1
      threejs/threejs-canvas-textured-cube-qix.html
  81. 1 1
      threejs/threejs-canvas-textured-cube.html
  82. 2 2
      threejs/threejs-canvas-textured-labels-one-canvas.html
  83. 2 2
      threejs/threejs-canvas-textured-labels-scale-to-fit.html
  84. 2 2
      threejs/threejs-canvas-textured-labels.html
  85. 2 2
      threejs/threejs-cleanup-loaded-files.html
  86. 1 1
      threejs/threejs-cleanup-simple.html
  87. 1 1
      threejs/threejs-custom-buffergeometry-cube-indexed.html
  88. 1 1
      threejs/threejs-custom-buffergeometry-cube-typedarrays.html
  89. 1 1
      threejs/threejs-custom-buffergeometry-cube.html
  90. 1 1
      threejs/threejs-custom-buffergeometry-dynamic.html
  91. 1 1
      threejs/threejs-custom-geometry-cube-face-colors.html
  92. 1 1
      threejs/threejs-custom-geometry-cube-face-normals.html
  93. 1 1
      threejs/threejs-custom-geometry-cube-texcoords.html
  94. 1 1
      threejs/threejs-custom-geometry-cube-vertex-colors.html
  95. 1 1
      threejs/threejs-custom-geometry-cube-vertex-normals.html
  96. 1 1
      threejs/threejs-custom-geometry-cube.html
  97. 2 2
      threejs/threejs-custom-geometry-heightmap.html
  98. 1 1
      threejs/threejs-debug-js-clearing-logger.html
  99. 1 1
      threejs/threejs-debug-js-html-elements.html
  100. 1 1
      threejs/threejs-debug-js-params.html

+ 1 - 0
.vscode/settings.json

@@ -33,6 +33,7 @@
     "devtools",
     "divs",
     "drawingbuffer",
+    "equirectangular",
     "grayscale",
     "heightmap",
     "ifdef",

+ 3 - 3
threejs/background-v01.html

@@ -22,9 +22,9 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
-import {GLTFLoader} from './resources/threejs/r115/examples/jsm/loaders/GLTFLoader.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
+import {GLTFLoader} from './resources/threejs/r119/examples/jsm/loaders/GLTFLoader.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 3 - 3
threejs/background.html

@@ -22,9 +22,9 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
-import {GLTFLoader} from './resources/threejs/r115/examples/jsm/loaders/GLTFLoader.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
+import {GLTFLoader} from './resources/threejs/r119/examples/jsm/loaders/GLTFLoader.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/lessons/kr/threejs-backgrounds.md

@@ -172,7 +172,7 @@ function render(time) {
 카메라도 조작이 가능하도록 만듭니다.
 
 ```js
-import { OrbitControls } from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import { OrbitControls } from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 ```js

+ 2 - 2
threejs/lessons/kr/threejs-custom-geometry.md

@@ -429,8 +429,8 @@ for (let z = 0; z < cellsDeep; ++z) {
 `OrbitControls`를 추가하고,
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import { OrbitControls } from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import { OrbitControls } from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 ```js

+ 3 - 3
threejs/lessons/kr/threejs-fundamentals.md

@@ -85,7 +85,7 @@ Three.js는 3차원 세계를 다루므로, 우리는 정육면체(cube)를 3차
 
 ```html
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 </script>
 ```
 
@@ -107,7 +107,7 @@ import * as THREE from './resources/threejs/r115/build/three.module.js';
 
 ```html
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 +function main() {
 +  const canvas = document.querySelector('#c');
@@ -389,7 +389,7 @@ es6 모듈은 js 파일이나 인라인 <code>&lt;script type="module"&gt;</code
 </p>
 <pre class=prettyprint>
 &lt;script type="module"&gt;
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 ...
 

+ 5 - 5
threejs/lessons/kr/threejs-lights.md

@@ -26,8 +26,8 @@ const camera = new THREE.PerspectiveCamera(fov, aspect, near, far);
 별도 모듈이므로, 먼저 페이지에 로드해야 합니다.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import { OrbitControls } from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import { OrbitControls } from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 이제 `OrbitControls`에 카메라와, DOM 이벤트를 감지할 수 있도록
@@ -447,9 +447,9 @@ gui.add(light, 'penumbra', 0, 1, 0.01);
 `RectAreaLightHelper`도 같이 불러와 조명을 시각화하겠습니다.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import { RectAreaLightUniformsLib } from './resources/threejs/r115/examples/jsm/lights/RectAreaLightUniformsLib.js';
-+import { RectAreaLightHelper } from './resources/threejs/r115/examples/jsm/helpers/RectAreaLightHelper.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import { RectAreaLightUniformsLib } from './resources/threejs/r119/examples/jsm/lights/RectAreaLightUniformsLib.js';
++import { RectAreaLightHelper } from './resources/threejs/r119/examples/jsm/helpers/RectAreaLightHelper.js';
 ```
 
 모듈을 불러온 후 `RectAreaLightUniformsLib.init` 메서드를 호출합니다.

+ 4 - 4
threejs/lessons/kr/threejs-load-gltf.md

@@ -102,10 +102,10 @@ objLoader.loadMtl('resources/models/windmill/windmill-fixed.mtl', null, (materia
 추가합니다.
 
 ```html
--import { LoaderSupport } from './resources/threejs/r115/examples/jsm/loaders/LoaderSupport.js';
--import { OBJLoader2 } from './resources/threejs/r115/examples/jsm/loaders/OBJLoader2.js';
--import { MTLLoader } from './resources/threejs/r115/examples/jsm/loaders/MTLLoader.js';
-+import { GLTFLoader } from './resources/threejs/r115/examples/jsm/loaders/GLTFLoader.js';
+-import { LoaderSupport } from './resources/threejs/r119/examples/jsm/loaders/LoaderSupport.js';
+-import { OBJLoader2 } from './resources/threejs/r119/examples/jsm/loaders/OBJLoader2.js';
+-import { MTLLoader } from './resources/threejs/r119/examples/jsm/loaders/MTLLoader.js';
++import { GLTFLoader } from './resources/threejs/r119/examples/jsm/loaders/GLTFLoader.js';
 ```
 
 이제 실행해보죠.

+ 6 - 6
threejs/lessons/kr/threejs-load-obj.md

@@ -41,7 +41,7 @@ Three.js로 프로젝트를 진행할 때, 3D 모델 파일을 불러와 사용
 다음으로 먼저 `OBJLoader2` 모듈을 스크립트에 로드합니다.
 
 ```js
-import { OBJLoader2 } from './resources/threejs/r115/examples/jsm/loaders/OBJLoader2.js';
+import { OBJLoader2 } from './resources/threejs/r119/examples/jsm/loaders/OBJLoader2.js';
 ```
 
 `OBJLoader2`의 인스턴스를 생성한 뒤 .OBJ 파일의 경로와 콜백 함수를 넘겨
@@ -133,11 +133,11 @@ map_Ns windmill_001_base_SPEC.jpg
 `MTLLoader`와 `MTLObjBridge` 모듈을 불러옵니다.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import { OrbitControls } from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
-import { OBJLoader2 } from './resources/threejs/r115/examples/jsm/loaders/OBJLoader2.js';
-+import { MTLLoader } from './resources/threejs/r115/examples/jsm/loaders/MTLLoader.js';
-+import { MtlObjBridge } from './resources/threejs/r115/examples/jsm/loaders/obj2/bridge/MtlObjBridge.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import { OrbitControls } from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
+import { OBJLoader2 } from './resources/threejs/r119/examples/jsm/loaders/OBJLoader2.js';
++import { MTLLoader } from './resources/threejs/r119/examples/jsm/loaders/MTLLoader.js';
++import { MtlObjBridge } from './resources/threejs/r119/examples/jsm/loaders/obj2/bridge/MtlObjBridge.js';
 ```
 
 우선 .MTL 파일을 불러와 `MtlObjBridge`로 재질을 만듭니다. 그리고 `OBJLoader2`

+ 1 - 1
threejs/lessons/kr/threejs-multiple-scenes.md

@@ -455,7 +455,7 @@ document.querySelectorAll('[data-diagram]').forEach((elem) => {
 불러옵니다.
 
 ```js
-import { TrackballControls } from './resources/threejs/r115/examples/jsm/controls/TrackballControls.js';
+import { TrackballControls } from './resources/threejs/r119/examples/jsm/controls/TrackballControls.js';
 ```
 
 그리고 각 장면에 대응하는 요소에 `TrackballControls`를 추가합니다.

+ 6 - 6
threejs/lessons/kr/threejs-offscreencanvas.md

@@ -61,7 +61,7 @@ self.onmessage = function(e) {
 물론 그전에 먼저 Three.js를 `offscreencanvas-cubes.js`에 불러와야겠죠.
 
 ```js
-importScripts('resources/threejs/r115/build/three.min.js');
+importScripts('resources/threejs/r119/build/three.min.js');
 ```
 
 DOM에서 캔버스에 접근하는 대신 이벤트의 `data`에서 캔버스를 받습니다.
@@ -240,7 +240,7 @@ function main() {
 
 /* global importScripts, init, state */
 
-importScripts('resources/threejs/r115/build/three.min.js');
+importScripts('resources/threejs/r119/build/three.min.js');
 +importScripts('shared-cubes.js');
 
 function size(data) {
@@ -268,7 +268,7 @@ self.onmessage = function(e) {
 메인 페이지에서도 마찬가지로 Three.js와 `shared-cubes.js`를 추가합니다.
 
 ```html
-<script src="resources/threejs/r115/build/three.min.js"></script>
+<script src="resources/threejs/r119/build/three.min.js"></script>
 <script src="shared-cubes.js"><script>
 ```
 
@@ -543,7 +543,7 @@ window.addEventListener('touchend', clearPickPosition);
 
 여태까지는 전역 `state` 객체를 사용했지만, `OrbitControls`의 경우는 객체 속성이 너무 많아 그걸 전부 다 하드 코딩하는 건 너무 번거롭습니다. `OrbitControls`는 필요한 DOM 이벤트의 대부분을 인자로 받는 HTML 요소에 바인딩합니다. 이를 이용해 DOM 요소와 같은 구조의 객체를 넘겨준다면 어떨까요? `OrbitControls`에 필요한 기능만 살려서 말이죠.
 
-[`OrbitControls`의 소스 코드](https://github.com/gfxfundamentals/threejsfundamentals/blob/master/threejs/resources/threejs/r115/examples/js/controls/OrbitControls.js)를 분석해보니 아래의 이벤트만 지원하면 될 듯합니다.
+[`OrbitControls`의 소스 코드](https://github.com/gfxfundamentals/threejsfundamentals/blob/master/threejs/resources/threejs/r119/examples/js/controls/OrbitControls.js)를 분석해보니 아래의 이벤트만 지원하면 될 듯합니다.
 
 * contextmenu
 * mousedown
@@ -644,8 +644,8 @@ self.onmessage = function(e) {
 `OrbitControls` 모듈도 불러와야겠죠.
 
 ```js
-importScripts('resources/threejs/r115/build/three.min/js');
-+importScripts('resources/threejs/r115/examples/js/controls/OrbitControls.js');
+importScripts('resources/threejs/r119/build/three.min/js');
++importScripts('resources/threejs/r119/examples/js/controls/OrbitControls.js');
 *importScripts('shared-orbitcontrols.js');
 ```
 

+ 4 - 4
threejs/lessons/kr/threejs-optimize-lots-of-objects-animated.md

@@ -317,10 +317,10 @@ showFileInfo(fileInfos, fileInfos[0]);
 먼저 라이브러리를 불러옵니다.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import { BufferGeometryUtils } from './resources/threejs/r115/examples/jsm/utils/BufferGeometryUtils.js';
-import { OrbitControls } from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
-+import { TWEEN } from './resources/threejs/r115/examples/jsm/libs/tween.min.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import { BufferGeometryUtils } from './resources/threejs/r119/examples/jsm/utils/BufferGeometryUtils.js';
+import { OrbitControls } from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
++import { TWEEN } from './resources/threejs/r119/examples/jsm/libs/tween.min.js';
 ```
 
 그리고 `Tween`으로 influence 속성에 애니메이션을 줍니다.

+ 1 - 1
threejs/lessons/kr/threejs-optimize-lots-of-objects.md

@@ -375,7 +375,7 @@ function addBoxes(file) {
 물론 `BufferGeometryUtils`을 불러와야죠.
 
 ```js
-import { BufferGeometryUtils } from './resources/threejs/r115/examples/jsm/utils/BufferGeometryUtils.js';
+import { BufferGeometryUtils } from './resources/threejs/r119/examples/jsm/utils/BufferGeometryUtils.js';
 ```
 
 이제 제 컴퓨터에서는 적어도 60 프레임 이상이 나오네요.

+ 4 - 4
threejs/lessons/kr/threejs-post-processing.md

@@ -82,10 +82,10 @@ composer.addPass(filmPass);
 또 이 클래스들을 사용하기 위해 여러 스크립트를 불러와야 합니다.
 
 ```js
-import { EffectComposer } from './resources/threejs/r115/examples/jsm/postprocessing/EffectComposer.js';
-import { RenderPass } from './resources/threejs/r115/examples/jsm/postprocessing/RenderPass.js';
-import { BloomPass } from './resources/threejs/r115/examples/jsm/postprocessing/BloomPass.js';
-import { FilmPass } from './resources/threejs/r115/examples/jsm/postprocessing/FilmPass.js';
+import { EffectComposer } from './resources/threejs/r119/examples/jsm/postprocessing/EffectComposer.js';
+import { RenderPass } from './resources/threejs/r119/examples/jsm/postprocessing/RenderPass.js';
+import { BloomPass } from './resources/threejs/r119/examples/jsm/postprocessing/BloomPass.js';
+import { FilmPass } from './resources/threejs/r119/examples/jsm/postprocessing/FilmPass.js';
 ```
 
 대부분의 후처리에는 `EffectComposer.js`와 `RenderPass.js`가 필수입니다.

+ 1 - 1
threejs/lessons/kr/threejs-prerequisites.md

@@ -20,7 +20,7 @@ ES2015 모듈은 스크립트 안에서 `import` 키워드나, 인라인 `<scrip
 
 ```html
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 ...
 

+ 4 - 4
threejs/lessons/kr/threejs-rendering-on-demand.md

@@ -30,8 +30,8 @@ requestAnimationFrame(render);
 먼저 뭔가 변화를 일으킬 수 있는 요소가 필요하니 `OrbitControls`를 추가합니다.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import { OrbitControls } from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import { OrbitControls } from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 ...
 
@@ -176,8 +176,8 @@ render();
 간단한 dat.GUI를 추가해 반복 렌더링 여부를 제어할 수 있도록 하겠습니다.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import { OrbitControls } from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import { OrbitControls } from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 +import { GUI } from '../3rdparty/dat.gui.module.js';
 ```
 

+ 2 - 2
threejs/lessons/kr/threejs-transparency.md

@@ -368,8 +368,8 @@ gui.add(new AllMaterialPropertyGUIHelper('transparent', scene), 'value')
 물론 dat.GUI 모듈도 불러와야죠.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import { OrbitControls } from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import { OrbitControls } from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 +import { GUI } from '../3rdparty/dat.gui.module.js';
 ```
 

+ 1 - 1
threejs/lessons/resources/threejs-cameras.js

@@ -1,4 +1,4 @@
-import * as THREE from '../../resources/threejs/r115/build/three.module.js';
+import * as THREE from '../../resources/threejs/r119/build/three.module.js';
 import {threejsLessonUtils} from './threejs-lesson-utils.js';
 
 {

+ 1 - 1
threejs/lessons/resources/threejs-custom-buffergeometry.js

@@ -1,4 +1,4 @@
-import * as THREE from '../../resources/threejs/r115/build/three.module.js';
+import * as THREE from '../../resources/threejs/r119/build/three.module.js';
 import {threejsLessonUtils} from './threejs-lesson-utils.js';
 
 {

+ 2 - 2
threejs/lessons/resources/threejs-fog.js

@@ -1,5 +1,5 @@
-import * as THREE from '../../resources/threejs/r115/build/three.module.js';
-import {GLTFLoader} from '../../resources/threejs/r115/examples/jsm/loaders/GLTFLoader.js';
+import * as THREE from '../../resources/threejs/r119/build/three.module.js';
+import {GLTFLoader} from '../../resources/threejs/r119/examples/jsm/loaders/GLTFLoader.js';
 import {threejsLessonUtils} from './threejs-lesson-utils.js';
 
 {

+ 2 - 2
threejs/lessons/resources/threejs-lesson-utils.js

@@ -1,5 +1,5 @@
-import * as THREE from '../../resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from '../../resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from '../../resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from '../../resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 export const threejsLessonUtils = {
   _afterPrettifyFuncs: [],

+ 2 - 2
threejs/lessons/resources/threejs-lights.js

@@ -1,5 +1,5 @@
-import * as THREE from '../../resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from '../../resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from '../../resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from '../../resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 import {threejsLessonUtils} from './threejs-lesson-utils.js';
 
 {

+ 1 - 1
threejs/lessons/resources/threejs-lots-of-objects.js

@@ -1,4 +1,4 @@
-import * as THREE from '../../resources/threejs/r115/build/three.module.js';
+import * as THREE from '../../resources/threejs/r119/build/three.module.js';
 import {threejsLessonUtils} from './threejs-lesson-utils.js';
 import {GUI} from '../../../3rdparty/dat.gui.module.js';
 

+ 1 - 1
threejs/lessons/resources/threejs-materials.js

@@ -1,4 +1,4 @@
-import * as THREE from '../../resources/threejs/r115/build/three.module.js';
+import * as THREE from '../../resources/threejs/r119/build/three.module.js';
 import {threejsLessonUtils} from './threejs-lesson-utils.js';
 
 {

+ 1 - 1
threejs/lessons/resources/threejs-primitives.js

@@ -1,4 +1,4 @@
-import * as THREE from '../../resources/threejs/r115/build/three.module.js';
+import * as THREE from '../../resources/threejs/r119/build/three.module.js';
 import {threejsLessonUtils} from './threejs-lesson-utils.js';
 
 {

+ 1 - 1
threejs/lessons/resources/threejs-textures.js

@@ -1,4 +1,4 @@
-import * as THREE from '../../resources/threejs/r115/build/three.module.js';
+import * as THREE from '../../resources/threejs/r119/build/three.module.js';
 import {threejsLessonUtils} from './threejs-lesson-utils.js';
 
 {

+ 2 - 2
threejs/lessons/resources/threejs-voxel-geometry.js

@@ -1,5 +1,5 @@
-import * as THREE from '../../resources/threejs/r115/build/three.module.js';
-import {BufferGeometryUtils} from '../../resources/threejs/r115/examples/jsm/utils/BufferGeometryUtils.js';
+import * as THREE from '../../resources/threejs/r119/build/three.module.js';
+import {BufferGeometryUtils} from '../../resources/threejs/r119/examples/jsm/utils/BufferGeometryUtils.js';
 import {threejsLessonUtils} from './threejs-lesson-utils.js';
 
 {

+ 2 - 2
threejs/lessons/ru/threejs-custom-geometry.md

@@ -387,8 +387,8 @@ for (let z = 0; z < cellsDeep; ++z) {
 * добавим `OrbitControls`
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 ```js

+ 1 - 1
threejs/lessons/ru/threejs-fundamentals.md

@@ -42,7 +42,7 @@ Three.js будет рисовать на этом холсте, так что 
 
 ```
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 5 - 5
threejs/lessons/ru/threejs-lights.md

@@ -29,8 +29,8 @@ const camera = new THREE.PerspectiveCamera(fov, aspect, near, far);
 включить их в нашу страницу.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 Теперь мы можем использовать их. Мы передаем в `OrbitControls` камеру для 
@@ -469,9 +469,9 @@ gui.add(light, 'penumbra', 0, 1, 0.01);
 Для использования `RectAreaLight` нам нужно включить некоторые дополнительные возможности three.js
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import {RectAreaLightUniformsLib} from './resources/threejs/r115/examples/jsm/lights/RectAreaLightUniformsLib.js';
-+import {RectAreaLightHelper} from './resources/threejs/r115/examples/jsm/helpers/RectAreaLightHelper.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import {RectAreaLightUniformsLib} from './resources/threejs/r119/examples/jsm/lights/RectAreaLightUniformsLib.js';
++import {RectAreaLightHelper} from './resources/threejs/r119/examples/jsm/helpers/RectAreaLightHelper.js';
 ```
 
 ```js

+ 1 - 1
threejs/lessons/ru/threejs-multiple-scenes.md

@@ -472,7 +472,7 @@ document.querySelectorAll('[data-diagram]').forEach((elem) => {
 Сначала мы добавляем скрипт для контролов.
 
 ```js
-import {TrackballControls} from './resources/threejs/r115/examples/jsm/controls/TrackballControls.js';
+import {TrackballControls} from './resources/threejs/r119/examples/jsm/controls/TrackballControls.js';
 ```
 
 И затем мы можем добавить `TrackballControls` к каждой сцене, передавая элемент, связанный с этой сценой.

+ 1 - 1
threejs/lessons/ru/threejs-prerequisites.md

@@ -21,7 +21,7 @@ TOC: Необходимые условия
 
 ```html
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 ...
 

+ 4 - 4
threejs/lessons/ru/threejs-rendering-on-demand.md

@@ -26,8 +26,8 @@ requestAnimationFrame(render);
 Сначала мы добавим в OrbitControls, чтобы можно было что-то изменить, что мы можем сделать в ответ. 
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 и настроить их
@@ -172,8 +172,8 @@ render();
 Давайте также добавим простой графический интерфейс dat.GUI и внесем его изменения по запросу. 
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 +import {GUI} from '../3rdparty/dat.gui.module.js';
 ```
 

+ 4 - 4
threejs/lessons/threejs-align-html-elements-to-3d.md

@@ -35,8 +35,8 @@ with an example from [the article on responsive pages](threejs-responsive.html)
 We'll add some `OrbitControls` like we did in [the article on lighting](threejs-lights.html).
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 ```js
@@ -724,8 +724,8 @@ Finally, since I'm not sure what good values are for these settings lets
 add a GUI so we can play with them
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 +import {GUI} from '../3rdparty/dat.gui.module.js';
 ```
 

+ 25 - 56
threejs/lessons/threejs-backgrounds.md

@@ -180,7 +180,7 @@ function render(time) {
 Let's add some controls in so we can rotate the camera.
 
 ```js
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 ```js
@@ -211,67 +211,36 @@ Another option is to use an Equirectangular map. This is the kind of picture a
 
 <div class="threejs_center"><img src="../resources/images/equirectangularmaps/tears_of_steel_bridge_2k.jpg" style="width: 600px"></div>
 
-To use it is a little more involved. We make a separate `Scene`, a
-`BoxBufferGeometry`, and a custom `ShaderMaterial` but using a built in shader.
-We use these to render the background by itself before rendering the scene we
-already have.
+It's not much different. First we load the equirectangular image as a texture
+and then, in the callback after it has loaded, we can call `WebGLCubeRenderTarget.fromEquirectangularTexture`
+which will generate a cubemap from the equirectangular texture for us.
+We pass in the size we want the cubemap to be to `WebGLCubeRenderTarget`.
+Passing in the height of the equirectangular image seems like a good bet.
 
 ```js
-const bgScene = new THREE.Scene();
-let bgMesh;
 {
-  const loader = new THREE.TextureLoader();
-  const texture = loader.load(
-    'resources/images/equirectangularmaps/tears_of_steel_bridge_2k.jpg',
-  );
-  texture.magFilter = THREE.LinearFilter;
-  texture.minFilter = THREE.LinearFilter;
-
-  const shader = THREE.ShaderLib.equirect;
-	const material = new THREE.ShaderMaterial({
-    fragmentShader: shader.fragmentShader,
-    vertexShader: shader.vertexShader,
-    uniforms: shader.uniforms,
-    depthWrite: false,
-    side: THREE.BackSide,
-  });
-	material.uniforms.tEquirect.value = texture;
-  const plane = new THREE.BoxBufferGeometry(2, 2, 2);
-  bgMesh = new THREE.Mesh(plane, material);
-  bgScene.add(bgMesh);
+-  const loader = new THREE.CubeTextureLoader();
+-  const texture = loader.load([
+-    'resources/images/cubemaps/computer-history-museum/pos-x.jpg',
+-    'resources/images/cubemaps/computer-history-museum/neg-x.jpg',
+-    'resources/images/cubemaps/computer-history-museum/pos-y.jpg',
+-    'resources/images/cubemaps/computer-history-museum/neg-y.jpg',
+-    'resources/images/cubemaps/computer-history-museum/pos-z.jpg',
+-    'resources/images/cubemaps/computer-history-museum/neg-z.jpg',
+-  ]);
+-  scene.background = texture;
++  const loader = new THREE.TextureLoader();
++  const texture = loader.load(
++    'resources/images/equirectangularmaps/tears_of_steel_bridge_2k.jpg',
++    () => {
++      const rt = new THREE.WebGLCubeRenderTarget(texture.image.height);
++      rt.fromEquirectangularTexture(renderer, texture);
++      scene.background = rt;
++    });
 }
 ```
 
-The box must be larger than the camera's `near` setting but not so large that 
-it passes the camera's `far` setting.
-
-We set `side: THREE.BackSide` to see the inside of the box and we set
-`depthWrite: false` so that we neither test nor write to the depth buffer.
-
-At render time we just make sure the box is at the same position as the camera
-and render the new scene
-
-```js
-function render(time)
-
-    /* ... */
-
-+    bgMesh.position.copy(camera.position);
-+    renderer.render(bgScene, bgCamera);
-    renderer.render(scene, camera);
-```
-
-By default every time `renderer.render` is called THREE.js will clear the
-canvas. We need to tell it not to do that otherwise the second call to render
-will clear our first render and we won't see the background. We can do this by
-setting `renderer.autoClearColor = false`.
-
-```js
-const renderer = new THREE.WebGLRenderer({canvas});
-+renderer.autoClearColor = false;
-```
-
-And there we have it.
+And that's all there is to it.
 
 {{{example url="../threejs-background-equirectangularmap.html" }}}
 

+ 2 - 2
threejs/lessons/threejs-canvas-textures.md

@@ -261,8 +261,8 @@ What's left is to add some `OrbitControls` so we can move
 the camera.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 ```js

+ 2 - 2
threejs/lessons/threejs-custom-geometry.md

@@ -448,8 +448,8 @@ A few minor changes to make it easier to view.
 * include the `OrbitControls`
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 ```js

+ 3 - 3
threejs/lessons/threejs-fundamentals.md

@@ -96,7 +96,7 @@ First let's load three.js
 
 ```html
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 </script>
 ```
 
@@ -119,7 +119,7 @@ We will ask three.js to draw into that canvas so we need to look it up.
 
 ```html
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 +function main() {
 +  const canvas = document.querySelector('#c');
@@ -416,7 +416,7 @@ both
 </p>
 <pre class=prettyprint>
 &lt;script type="module"&gt;
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 ...
 

+ 8 - 8
threejs/lessons/threejs-game.md

@@ -243,10 +243,10 @@ it for skinned animated characters. Fortunately there's a utility function,
 the utils.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
-import {GLTFLoader} from './resources/threejs/r115/examples/jsm/loaders/GLTFLoader.js';
-+import {SkeletonUtils} from './resources/threejs/r115/examples/jsm/utils/SkeletonUtils.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
+import {GLTFLoader} from './resources/threejs/r119/examples/jsm/loaders/GLTFLoader.js';
++import {SkeletonUtils} from './resources/threejs/r119/examples/jsm/utils/SkeletonUtils.js';
 ```
 
 Then we can clone the models we just loaded
@@ -1690,10 +1690,10 @@ While we're at it lets make it so we can turn them on/off using dat.GUI like
 we've used else where
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
-import {GLTFLoader} from './resources/threejs/r115/examples/jsm/loaders/GLTFLoader.js';
-import {SkeletonUtils} from './resources/threejs/r115/examples/jsm/utils/SkeletonUtils.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
+import {GLTFLoader} from './resources/threejs/r119/examples/jsm/loaders/GLTFLoader.js';
+import {SkeletonUtils} from './resources/threejs/r119/examples/jsm/utils/SkeletonUtils.js';
 +import {GUI} from '../3rdparty/dat.gui.module.js';
 ```
 

+ 5 - 5
threejs/lessons/threejs-lights.md

@@ -29,8 +29,8 @@ an optional feature of three.js so first we need to include them
 in our page
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 Then we can use them. We pass the `OrbitControls` a camera to
@@ -477,9 +477,9 @@ To use the `RectAreaLight` we need to include some extra three.js optional data
 include the `RectAreaLightHelper` to help us visualize the light
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import {RectAreaLightUniformsLib} from './resources/threejs/r115/examples/jsm/lights/RectAreaLightUniformsLib.js';
-+import {RectAreaLightHelper} from './resources/threejs/r115/examples/jsm/helpers/RectAreaLightHelper.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import {RectAreaLightUniformsLib} from './resources/threejs/r119/examples/jsm/lights/RectAreaLightUniformsLib.js';
++import {RectAreaLightHelper} from './resources/threejs/r119/examples/jsm/helpers/RectAreaLightHelper.js';
 ```
 
 and we need to call `RectAreaLightUniformsLib.init`

+ 4 - 4
threejs/lessons/threejs-load-gltf.md

@@ -102,10 +102,10 @@ I kept the auto framing code as before
 We also need to include the `GLTFLoader` and we can get rid of the `OBJLoader2`.
 
 ```html
--import {LoaderSupport} from './resources/threejs/r115/examples/jsm/loaders/LoaderSupport.js';
--import {OBJLoader2} from './resources/threejs/r115/examples/jsm/loaders/OBJLoader2.js';
--import {MTLLoader} from './resources/threejs/r115/examples/jsm/loaders/MTLLoader.js';
-+import {GLTFLoader} from './resources/threejs/r115/examples/jsm/loaders/GLTFLoader.js';
+-import {LoaderSupport} from './resources/threejs/r119/examples/jsm/loaders/LoaderSupport.js';
+-import {OBJLoader2} from './resources/threejs/r119/examples/jsm/loaders/OBJLoader2.js';
+-import {MTLLoader} from './resources/threejs/r119/examples/jsm/loaders/MTLLoader.js';
++import {GLTFLoader} from './resources/threejs/r119/examples/jsm/loaders/GLTFLoader.js';
 ```
 
 And running that we get

+ 6 - 6
threejs/lessons/threejs-load-obj.md

@@ -46,7 +46,7 @@ that were being added to the scene.
 From that the first thing we need to do is include the `OBJLoader2` loader in our script.
 
 ```js
-import {OBJLoader2} from './resources/threejs/r115/examples/jsm/loaders/OBJLoader2.js';
+import {OBJLoader2} from './resources/threejs/r119/examples/jsm/loaders/OBJLoader2.js';
 ```
 
 Then to load the .OBJ file we create an instance of `OBJLoader2`,
@@ -143,11 +143,11 @@ Now that we have the textures available we can load the .MTL file.
 First we need to include the `MTLLoader` and the `MtlObjBridge`;
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
-import {OBJLoader2} from './resources/threejs/r115/examples/jsm/loaders/OBJLoader2.js';
-+import {MTLLoader} from './resources/threejs/r115/examples/jsm/loaders/MTLLoader.js';
-+import {MtlObjBridge} from './resources/threejs/r115/examples/jsm/loaders/obj2/bridge/MtlObjBridge.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
+import {OBJLoader2} from './resources/threejs/r119/examples/jsm/loaders/OBJLoader2.js';
++import {MTLLoader} from './resources/threejs/r119/examples/jsm/loaders/MTLLoader.js';
++import {MtlObjBridge} from './resources/threejs/r119/examples/jsm/loaders/obj2/bridge/MtlObjBridge.js';
 ```
 
 Then we first load the .MTL file. When it's finished loading we add

+ 1 - 1
threejs/lessons/threejs-multiple-scenes.md

@@ -445,7 +445,7 @@ No change to the visuals but the code is even more generic.
 Adding interactively, for example a `TrackballControls` is just as easy. First we add the script for the control.
 
 ```js
-import {TrackballControls} from './resources/threejs/r115/examples/jsm/controls/TrackballControls.js';
+import {TrackballControls} from './resources/threejs/r119/examples/jsm/controls/TrackballControls.js';
 ```
 
 And then we can add a `TrackballControls` to each scene passing in the element associated with that scene.

+ 6 - 6
threejs/lessons/threejs-offscreencanvas.md

@@ -96,7 +96,7 @@ So now we just need to start changing the `main` we pasted into
 The first thing we need to do is include THREE.js into our worker.
 
 ```js
-importScripts('resources/threejs/r115/build/three.min.js');
+importScripts('resources/threejs/r119/build/three.min.js');
 ```
 
 Then instead of looking up the canvas from the DOM we'll receive it from the
@@ -294,7 +294,7 @@ HTML file.
 
 /* global importScripts, init, state */
 
-importScripts('resources/threejs/r115/build/three.min.js');
+importScripts('resources/threejs/r119/build/three.min.js');
 +importScripts('shared-cubes.js');
 
 function size(data) {
@@ -322,7 +322,7 @@ note we include `shared-cubes.js` which is all our three.js code
 Similarly we need to include three.js and  `shared-cubes.js` in the main page
 
 ```html
-<script src="resources/threejs/r115/build/three.min.js"></script>
+<script src="resources/threejs/r119/build/three.min.js"></script>
 <script src="shared-cubes.js"><script>
 ```
 We can remove the HTML and CSS we added previously
@@ -614,7 +614,7 @@ of the DOM events they use. Maybe we could pass in our own
 object that has the same API surface as a DOM element. 
 We only need to support the features the OrbitControls need.
 
-Digging through the [OrbitControls source code](https://github.com/gfxfundamentals/threejsfundamentals/blob/master/threejs/resources/threejs/r115/examples/js/controls/OrbitControls.js)
+Digging through the [OrbitControls source code](https://github.com/gfxfundamentals/threejsfundamentals/blob/master/threejs/resources/threejs/r119/examples/js/controls/OrbitControls.js)
 it looks like we need to handle the following events.
 
 * contextmenu
@@ -732,8 +732,8 @@ We also need to actually add the `OrbitControls` to the top of
 the script
 
 ```js
-importScripts('resources/threejs/r115/build/three.min/js');
-+importScripts('resources/threejs/r115/examples/js/controls/OrbitControls.js');
+importScripts('resources/threejs/r119/build/three.min/js');
++importScripts('resources/threejs/r119/examples/js/controls/OrbitControls.js');
 *importScripts('shared-orbitcontrols.js');
 ```
 

+ 4 - 4
threejs/lessons/threejs-optimize-lots-of-objects-animated.md

@@ -377,10 +377,10 @@ because the original webgl globe uses
 We need to include the library
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import {BufferGeometryUtils} from './resources/threejs/r115/examples/jsm/utils/BufferGeometryUtils.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
-+import {TWEEN} from './resources/threejs/r115/examples/jsm/libs/tween.min.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import {BufferGeometryUtils} from './resources/threejs/r119/examples/jsm/utils/BufferGeometryUtils.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
++import {TWEEN} from './resources/threejs/r119/examples/jsm/libs/tween.min.js';
 ```
 
 And then create a `Tween` to animate the influences.

+ 1 - 1
threejs/lessons/threejs-optimize-lots-of-objects.md

@@ -429,7 +429,7 @@ them into a single mesh.
 We also need to include the `BufferGeometryUtils`
 
 ```js
-import {BufferGeometryUtils} from './resources/threejs/r115/examples/jsm/utils/BufferGeometryUtils.js';
+import {BufferGeometryUtils} from './resources/threejs/r119/examples/jsm/utils/BufferGeometryUtils.js';
 ```
 
 And now, at least on my machine, I get 60 frames per second

+ 4 - 4
threejs/lessons/threejs-post-processing.md

@@ -107,10 +107,10 @@ render to the next render target.
 To use these classes we need to import a bunch of scripts.
 
 ```js
-import {EffectComposer} from './resources/threejs/r115/examples/jsm/postprocessing/EffectComposer.js';
-import {RenderPass} from './resources/threejs/r115/examples/jsm/postprocessing/RenderPass.js';
-import {BloomPass} from './resources/threejs/r115/examples/jsm/postprocessing/BloomPass.js';
-import {FilmPass} from './resources/threejs/r115/examples/jsm/postprocessing/FilmPass.js';
+import {EffectComposer} from './resources/threejs/r119/examples/jsm/postprocessing/EffectComposer.js';
+import {RenderPass} from './resources/threejs/r119/examples/jsm/postprocessing/RenderPass.js';
+import {BloomPass} from './resources/threejs/r119/examples/jsm/postprocessing/BloomPass.js';
+import {FilmPass} from './resources/threejs/r119/examples/jsm/postprocessing/FilmPass.js';
 ```
 
 For pretty much any post processing `EffectComposer.js`, and `RenderPass.js`

+ 1 - 1
threejs/lessons/threejs-prerequisites.md

@@ -24,7 +24,7 @@ both
 
 ```html
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 ...
 

+ 4 - 4
threejs/lessons/threejs-rendering-on-demand.md

@@ -30,8 +30,8 @@ First we'll add in the `OrbitControls` so there is something that could change
 that we can render in response to.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 ```
 
 and set them up
@@ -179,8 +179,8 @@ below slides.
 Let's also add a simple dat.GUI GUI and make its changes render on demand.
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 +import {GUI} from '../3rdparty/dat.gui.module.js';
 ```
 

+ 2 - 2
threejs/lessons/threejs-transparency.md

@@ -381,8 +381,8 @@ gui.add(new AllMaterialPropertyGUIHelper('transparent', scene), 'value')
 and of course we need to include dat.gui
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 +import {GUI} from '../3rdparty/dat.gui.module.js';
 ```
 

+ 2 - 2
threejs/lessons/threejs-webvr.md

@@ -52,8 +52,8 @@ The first thing we need to do is include the VR support after
 including three.js
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-+import {VRButton} from './resources/threejs/r115/examples/jsm/webxr/VRButton.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
++import {VRButton} from './resources/threejs/r119/examples/jsm/webxr/VRButton.js';
 ```
 
 Then we need to enable three.js's WebXR support and add its

+ 1 - 1
threejs/lessons/zh_cn/threejs-fundamentals.md

@@ -35,7 +35,7 @@ Three.js将会使用这个canvas标签所以我们要先获取它然后传给thr
 
 ```html
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 6 - 6
threejs/lessons/zh_cn/threejs-load-obj.md

@@ -28,7 +28,7 @@ TOC: 加载 .OBJ 文件
 第一件要做的事就是将`OBJLoader2`添加到代码中。
 
 ```js
-import {OBJLoader2} from './resources/threejs/r115/examples/jsm/loaders/OBJLoader2.js';
+import {OBJLoader2} from './resources/threejs/r119/examples/jsm/loaders/OBJLoader2.js';
 ```
 
 然后创建`OBJLoader2`的实例并通过URL加载我们的.OBJ文件,并在回调函数中将已加载完的模型添加到场景(scene)里。
@@ -109,11 +109,11 @@ map_Ns windmill_001_base_SPEC.jpg
 首先要引用 `MTLLoader` 和 `MtlObjBridge`;
 
 ```js
-import * as THREE from './resources/three/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
-import {OBJLoader2} from './resources/threejs/r115/examples/jsm/loaders/OBJLoader2.js';
-+import {MTLLoader} from './resources/threejs/r115/examples/jsm/loaders/MTLLoader.js';
-+import {MtlObjBridge} from './resources/threejs/r115/examples/jsm/loaders/obj2/bridge/MtlObjBridge.js';
+import * as THREE from './resources/three/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
+import {OBJLoader2} from './resources/threejs/r119/examples/jsm/loaders/OBJLoader2.js';
++import {MTLLoader} from './resources/threejs/r119/examples/jsm/loaders/MTLLoader.js';
++import {MtlObjBridge} from './resources/threejs/r119/examples/jsm/loaders/obj2/bridge/MtlObjBridge.js';
 ```
 
 然后我们先加载.MTL文件,在它加载完材质后利用`MtlObjBridge`将材质传给`OBJLoader2`,再加载.OBJ文件。

+ 1 - 1
threejs/offscreencanvas-cubes.js

@@ -2,7 +2,7 @@
 
 /* global importScripts, THREE */
 
-importScripts('resources/threejs/r115/build/three.min.js');
+importScripts('resources/threejs/r119/build/three.min.js');
 
 const state = {
   width: 300,   // canvas default

+ 1 - 1
threejs/offscreencanvas-worker-cubes.js

@@ -2,7 +2,7 @@
 
 /* global importScripts, init, state */
 
-importScripts('resources/threejs/r115/build/three.min.js');
+importScripts('resources/threejs/r119/build/three.min.js');
 importScripts('shared-cubes.js');
 
 function size(data) {

+ 2 - 2
threejs/offscreencanvas-worker-orbitcontrols.js

@@ -2,8 +2,8 @@
 
 /* global importScripts, init, THREE */
 
-importScripts('resources/threejs/r115/build/three.min.js');
-importScripts('resources/threejs/r115/examples/js/controls/OrbitControls.js');
+importScripts('resources/threejs/r119/build/three.min.js');
+importScripts('resources/threejs/r119/examples/js/controls/OrbitControls.js');
 importScripts('shared-orbitcontrols.js');
 
 function noop() {

+ 1 - 1
threejs/offscreencanvas-worker-picking.js

@@ -2,7 +2,7 @@
 
 /* global importScripts, init, state, pickPosition */
 
-importScripts('resources/threejs/r115/build/three.min.js');
+importScripts('resources/threejs/r119/build/three.min.js');
 importScripts('shared-picking.js');
 
 function size(data) {

+ 2 - 2
threejs/threejs-align-html-elements-to-3d-globe-too-many-labels.html

@@ -58,8 +58,8 @@
     </div>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-align-html-elements-to-3d-globe.html

@@ -58,8 +58,8 @@
     </div>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 import {GUI} from '../3rdparty/dat.gui.module.js';
 
 function main() {

+ 2 - 2
threejs/threejs-align-html-to-3d-w-hiding.html

@@ -55,8 +55,8 @@
     </div>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-align-html-to-3d-w-sorting.html

@@ -57,8 +57,8 @@
     </div>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-align-html-to-3d.html

@@ -55,8 +55,8 @@
     </div>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-background-css.html

@@ -22,7 +22,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-background-cubemap.html

@@ -20,8 +20,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 7 - 22
threejs/threejs-background-equirectangularmap.html

@@ -20,8 +20,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');
@@ -71,28 +71,15 @@ function main() {
     makeInstance(geometry, 0xaa8844,  2),
   ];
 
-  const bgScene = new THREE.Scene();
-  let bgMesh;
   {
     const loader = new THREE.TextureLoader();
     const texture = loader.load(
       'resources/images/equirectangularmaps/tears_of_steel_bridge_2k.jpg',
-    );
-    texture.magFilter = THREE.LinearFilter;
-    texture.minFilter = THREE.LinearFilter;
-
-    const shader = THREE.ShaderLib.equirect;
-		const material = new THREE.ShaderMaterial({
-      fragmentShader: shader.fragmentShader,
-      vertexShader: shader.vertexShader,
-      uniforms: shader.uniforms,
-      depthWrite: false,
-      side: THREE.BackSide,
-    });
-		material.uniforms.tEquirect.value = texture;
-    const plane = new THREE.BoxBufferGeometry(2, 2, 2);
-    bgMesh = new THREE.Mesh(plane, material);
-    bgScene.add(bgMesh);
+      () => {
+        const rt = new THREE.WebGLCubeRenderTarget(texture.image.height);
+        rt.fromEquirectangularTexture(renderer, texture);
+        scene.background = rt;
+      });
   }
 
   function resizeRendererToDisplaySize(renderer) {
@@ -122,8 +109,6 @@ function main() {
       cube.rotation.y = rot;
     });
 
-    bgMesh.position.copy(camera.position);
-    renderer.render(bgScene, camera);
     renderer.render(scene, camera);
 
     requestAnimationFrame(render);

+ 1 - 1
threejs/threejs-background-scene-background-fixed-aspect.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-background-scene-background.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-background-separate-scene-bad-aspect.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-background-separate-scene.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-billboard-labels-w-sprites-adjust-height.html

@@ -20,8 +20,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-billboard-labels-w-sprites.html

@@ -20,8 +20,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-billboard-trees-no-billboards.html

@@ -20,8 +20,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-billboard-trees-static-billboards.html

@@ -20,8 +20,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-cameras-logarithmic-depth-buffer.html

@@ -21,8 +21,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 import {GUI} from '../3rdparty/dat.gui.module.js';
 
 function main() {

+ 2 - 2
threejs/threejs-cameras-orthographic-2-scenes.html

@@ -37,8 +37,8 @@
     </div>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 import {GUI} from '../3rdparty/dat.gui.module.js';
 
 function main() {

+ 1 - 1
threejs/threejs-cameras-orthographic-canvas-top-left-origin.html

@@ -33,7 +33,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-cameras-perspective-2-scenes.html

@@ -37,8 +37,8 @@
     </div>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 import {GUI} from '../3rdparty/dat.gui.module.js';
 
 function main() {

+ 2 - 2
threejs/threejs-cameras-perspective.html

@@ -21,8 +21,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 import {GUI} from '../3rdparty/dat.gui.module.js';
 
 function main() {

+ 2 - 2
threejs/threejs-cameras-z-fighting.html

@@ -21,8 +21,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 import {GUI} from '../3rdparty/dat.gui.module.js';
 
 function main() {

+ 1 - 1
threejs/threejs-canvas-textured-cube-qix.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-canvas-textured-cube.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-canvas-textured-labels-one-canvas.html

@@ -20,8 +20,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-canvas-textured-labels-scale-to-fit.html

@@ -20,8 +20,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-canvas-textured-labels.html

@@ -20,8 +20,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-cleanup-loaded-files.html

@@ -25,8 +25,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {GLTFLoader} from './resources/threejs/r115/examples/jsm/loaders/GLTFLoader.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {GLTFLoader} from './resources/threejs/r119/examples/jsm/loaders/GLTFLoader.js';
 
 class ResourceTracker {
   constructor() {

+ 1 - 1
threejs/threejs-cleanup-simple.html

@@ -25,7 +25,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 class ResourceTracker {
   constructor() {

+ 1 - 1
threejs/threejs-custom-buffergeometry-cube-indexed.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-custom-buffergeometry-cube-typedarrays.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-custom-buffergeometry-cube.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-custom-buffergeometry-dynamic.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-custom-geometry-cube-face-colors.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-custom-geometry-cube-face-normals.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-custom-geometry-cube-texcoords.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-custom-geometry-cube-vertex-colors.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-custom-geometry-cube-vertex-normals.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-custom-geometry-cube.html

@@ -20,7 +20,7 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 2 - 2
threejs/threejs-custom-geometry-heightmap.html

@@ -20,8 +20,8 @@
     <canvas id="c"></canvas>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
-import {OrbitControls} from './resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
+import {OrbitControls} from './resources/threejs/r119/examples/jsm/controls/OrbitControls.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-debug-js-clearing-logger.html

@@ -33,7 +33,7 @@
     </div>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 class ClearingLogger {
   constructor(elem) {

+ 1 - 1
threejs/threejs-debug-js-html-elements.html

@@ -34,7 +34,7 @@
     </div>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 function main() {
   const canvas = document.querySelector('#c');

+ 1 - 1
threejs/threejs-debug-js-params.html

@@ -44,7 +44,7 @@
     <div id="info">click to launch</div>
   </body>
 <script type="module">
-import * as THREE from './resources/threejs/r115/build/three.module.js';
+import * as THREE from './resources/threejs/r119/build/three.module.js';
 
 /**
   * Returns the query parameters as a key/value object.

Some files were not shown because too many files changed in this diff