Mr.doob 1 year ago
parent
commit
5147fc6269
100 changed files with 1173 additions and 809 deletions
  1. 44 53
      build/three.cjs
  2. 44 53
      build/three.module.js
  3. 0 0
      build/three.module.min.js
  4. 7 8
      docs/api/ar/constants/Textures.html
  5. 1 1
      docs/api/ar/core/Uniform.html
  6. 0 4
      docs/api/ar/materials/ShaderMaterial.html
  7. 1 3
      docs/api/ar/objects/SkinnedMesh.html
  8. 0 47
      docs/api/ar/renderers/WebGL1Renderer.html
  9. 1 1
      docs/api/ar/renderers/WebGLRenderer.html
  10. 2 1
      docs/api/en/animation/AnimationMixer.html
  11. 7 11
      docs/api/en/constants/Textures.html
  12. 1 1
      docs/api/en/core/Uniform.html
  13. 1 1
      docs/api/en/materials/Material.html
  14. 1 6
      docs/api/en/materials/ShaderMaterial.html
  15. 0 7
      docs/api/en/objects/BatchedMesh.html
  16. 1 1
      docs/api/en/objects/InstancedMesh.html
  17. 1 3
      docs/api/en/objects/SkinnedMesh.html
  18. 0 48
      docs/api/en/renderers/WebGL1Renderer.html
  19. 1 2
      docs/api/en/renderers/WebGLRenderTarget.html
  20. 1 1
      docs/api/en/renderers/WebGLRenderer.html
  21. 6 0
      docs/api/en/scenes/Scene.html
  22. 1 2
      docs/api/en/textures/Data3DTexture.html
  23. 1 2
      docs/api/en/textures/DataArrayTexture.html
  24. 1 3
      docs/api/en/textures/DepthTexture.html
  25. 2 8
      docs/api/fr/constants/Textures.html
  26. 2 6
      docs/api/fr/materials/ShaderMaterial.html
  27. 6 11
      docs/api/it/constants/Textures.html
  28. 1 1
      docs/api/it/core/Uniform.html
  29. 2 6
      docs/api/it/materials/ShaderMaterial.html
  30. 1 3
      docs/api/it/objects/SkinnedMesh.html
  31. 0 52
      docs/api/it/renderers/WebGL1Renderer.html
  32. 1 1
      docs/api/it/renderers/WebGLRenderer.html
  33. 1 1
      docs/api/it/textures/Data3DTexture.html
  34. 0 1
      docs/api/it/textures/DataArrayTexture.html
  35. 0 2
      docs/api/it/textures/DepthTexture.html
  36. 2 7
      docs/api/ko/constants/Textures.html
  37. 1 1
      docs/api/ko/core/Uniform.html
  38. 2 8
      docs/api/pt-br/constants/Textures.html
  39. 2 8
      docs/api/zh/constants/Textures.html
  40. 2 2
      docs/api/zh/core/Raycaster.html
  41. 1 1
      docs/api/zh/core/Uniform.html
  42. 1 6
      docs/api/zh/materials/ShaderMaterial.html
  43. 0 7
      docs/api/zh/objects/BatchedMesh.html
  44. 1 3
      docs/api/zh/objects/SkinnedMesh.html
  45. 0 52
      docs/api/zh/renderers/WebGL1Renderer.html
  46. 1 1
      docs/api/zh/renderers/WebGLRenderTarget.html
  47. 1 1
      docs/api/zh/renderers/WebGLRenderer.html
  48. 1 1
      docs/api/zh/textures/Data3DTexture.html
  49. 1 1
      docs/api/zh/textures/DataArrayTexture.html
  50. 0 1
      docs/api/zh/textures/DepthTexture.html
  51. 2 2
      docs/examples/en/geometries/TextGeometry.html
  52. 4 4
      docs/examples/en/loaders/3DMLoader.html
  53. 2 2
      docs/examples/zh/geometries/TextGeometry.html
  54. 4 4
      docs/examples/zh/loaders/3DMLoader.html
  55. 0 5
      docs/list.json
  56. 3 3
      docs/manual/ar/introduction/Installation.html
  57. 2 2
      docs/manual/en/introduction/Installation.html
  58. 2 2
      docs/manual/fr/introduction/Creating-a-scene.html
  59. 3 3
      docs/manual/fr/introduction/Installation.html
  60. 2 2
      docs/manual/it/introduction/Creating-a-scene.html
  61. 3 3
      docs/manual/it/introduction/Installation.html
  62. 2 2
      docs/manual/ja/introduction/Creating-a-scene.html
  63. 3 3
      docs/manual/ja/introduction/Installation.html
  64. 2 2
      docs/manual/ko/introduction/Creating-a-scene.html
  65. 3 3
      docs/manual/ko/introduction/Installation.html
  66. 2 2
      docs/manual/pt-br/introduction/Creating-a-scene.html
  67. 3 3
      docs/manual/pt-br/introduction/Installation.html
  68. 2 2
      docs/manual/ru/introduction/Creating-a-scene.html
  69. 3 3
      docs/manual/ru/introduction/Installation.html
  70. 2 2
      docs/manual/zh/introduction/Installation.html
  71. 2 2
      editor/index.html
  72. 2 2
      editor/js/Loader.js
  73. 3 3
      editor/js/Menubar.Edit.js
  74. 1 1
      editor/js/Sidebar.Geometry.js
  75. 1 1
      editor/js/Sidebar.Material.js
  76. 1 1
      editor/js/Sidebar.Object.js
  77. 3 3
      editor/js/Sidebar.Project.Image.js
  78. 1 1
      editor/js/Sidebar.Script.js
  79. 2 1
      editor/js/Sidebar.Settings.js
  80. 351 0
      editor/js/Strings.js
  81. 1 1
      editor/js/Viewport.ViewHelper.js
  82. 8 1
      examples/files.json
  83. 3 3
      examples/jsm/controls/TransformControls.js
  84. 21 4
      examples/jsm/exporters/GLTFExporter.js
  85. 15 0
      examples/jsm/exporters/USDZExporter.js
  86. 10 2
      examples/jsm/geometries/TextGeometry.js
  87. 7 9
      examples/jsm/interactive/HTMLMesh.js
  88. 338 192
      examples/jsm/libs/fflate.module.js
  89. 0 2
      examples/jsm/lines/LineMaterial.js
  90. 2 0
      examples/jsm/loaders/3MFLoader.js
  91. 89 19
      examples/jsm/loaders/EXRLoader.js
  92. 6 0
      examples/jsm/loaders/GLTFLoader.js
  93. 2 6
      examples/jsm/loaders/KTX2Loader.js
  94. 0 15
      examples/jsm/loaders/LUT3dlLoader.js
  95. 0 14
      examples/jsm/loaders/LUTCubeLoader.js
  96. 0 14
      examples/jsm/loaders/LUTImageLoader.js
  97. 16 0
      examples/jsm/loaders/RGBMLoader.js
  98. 0 6
      examples/jsm/misc/GPUComputationRenderer.js
  99. 6 1
      examples/jsm/nodes/Nodes.js
  100. 78 0
      examples/jsm/nodes/accessors/BatchNode.js

File diff suppressed because it is too large
+ 44 - 53
build/three.cjs


File diff suppressed because it is too large
+ 44 - 53
build/three.module.js


File diff suppressed because it is too large
+ 0 - 0
build/three.module.min.js


+ 7 - 8
docs/api/ar/constants/Textures.html

@@ -124,6 +124,7 @@
 		THREE.UnsignedShort4444Type
 		THREE.UnsignedShort5551Type 
 		THREE.UnsignedInt248Type
+		THREE.UnsignedInt5999Type
 		</code>
 		<p>
 			للاستخدام مع خاصية [page:Texture.type type] للقوام ، التي يجب
@@ -139,6 +140,7 @@
 		THREE.RedIntegerFormat 
 		THREE.RGFormat
 		THREE.RGIntegerFormat 
+		THREE.RGBFormat
 		THREE.RGBAFormat 
 		THREE.RGBAIntegerFormat
 		THREE.LuminanceFormat 
@@ -154,21 +156,21 @@
 			ويقرأ فقط المكون الألفا. <br /> <br />
 		 
 			[page:constant RedFormat] يتجاهل المكونات الخضراء والزرقاء ويقرأ
-			فقط المكون الأحمر. (يمكن استخدامه فقط مع سياق WebGL 2).
+			فقط المكون الأحمر.
 			<br /> <br />
 		 
 			[page:constant RedIntegerFormat] يتجاهل المكونات الخضراء والزرقاء
 			ويقرأ فقط المكون الأحمر. يتم قراءة `texels` كأعداد صحيحة بدلاً من
-			نقطة عائمة. (يمكن استخدامه فقط مع سياق WebGL 2).
+			نقطة عائمة.
 			<br /> <br />
 		 
 			[page:constant RGFormat] يتجاهل المكونات الألفا والزرقاء ويقرأ
-			المكونات الحمراء والخضراء. (يمكن استخدامه فقط مع سياق WebGL 2).
+			المكونات الحمراء والخضراء.
 			<br /> <br />
 		 
 			[page:constant RGIntegerFormat] يتجاهل المكونات الألفا والزرقاء
 			ويقرأ المكونات الحمراء والخضراء. يتم قراءة `texels` كأعداد صحيحة بدلاً من
-			نقطة عائمة. (يمكن استخدامه فقط مع سياق WebGL 2).
+			نقطة عائمة.
 			<br /> <br />
 		 
 			[page:constant RGBAFormat] هو الافتراضي ويلتقط المكونات الحمراء والخضراء والزرقاء
@@ -176,7 +178,7 @@
 		 
 			[page:constant RGBAIntegerFormat] هو الافتراضي ويلتقط المكونات الحمراء والخضراء ،
 			الزرقاء والألفا. يتم قراءة `texels` كأعداد صحيحة بدلاً من
-			نقطة عائمة. (يمكن استخدامه فقط مع سياق WebGL 2).
+			نقطة عائمة.
 			<br /> <br />
 		 
 			[page:constant LuminanceFormat] يقرأ كل عنصر كمكون إضاءة واحد
@@ -378,9 +380,6 @@
 		</code>
 
 		<p>
-			تنبيه: تغيير التنسيق الداخلي للقوام سيؤثر فقط على
-			القوام عند استخدام سياق WebGL 2. <br /> <br />
-		 
 			للاستخدام مع خاصية [page:Texture.internalFormat internalFormat] للقوام ،
 			هذه تحدد كيفية تخزين عناصر قوام ، أو `texels` ،
 			على وحدة معالجة الرسومات. <br /> <br />

+ 1 - 1
docs/api/ar/core/Uniform.html

@@ -55,7 +55,7 @@
 					<td>[page:Number]</td>
 				</tr>
 				<tr>
-					<td>uint (WebGL 2)</td>
+					<td>uint</td>
 					<td>[page:Number]</td>
 				</tr>
 				<tr>

+ 0 - 4
docs/api/ar/materials/ShaderMaterial.html

@@ -324,10 +324,6 @@ this.defaultAttributeValues = {
 			كائن يحتوي على الخصائص التالية:
 			<code>
 this.extensions = { 
-	derivatives: false, // set to use derivatives
-	fragDepth: false, // set to use fragment depth values 
-	drawBuffers: false, // set to use draw buffers 
-	shaderTextureLOD: false, // set to use shader texture LOD
 	clipCullDistance: false, // set to use vertex shader clipping
 	multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
 };

+ 1 - 3
docs/api/ar/objects/SkinnedMesh.html

@@ -13,9 +13,7 @@
 
 		<p class="desc">
 		شبكة لديها [page:Skeleton] مع [page:Bone bones] يمكن استخدامها بعد ذلك
-		لتحريك رؤوس الهندسة.<br /> <br />
-			
-		يمكن استخدام [name] فقط مع WebGL 2.
+		لتحريك رؤوس الهندسة.
 		</p>
 			
 		<iframe id="scene" src="scenes/bones-browser.html"></iframe>

+ 0 - 47
docs/api/ar/renderers/WebGL1Renderer.html

@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html lang="ar">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body class="rtl">
-		[page:WebGLRenderer] &rarr;
-
-		<h1>[name]</h1>
-
-		<p class="desc">
-		منذ r118 [page:WebGLRenderer] يستخدم تلقائيًا سياق عرض WebGL 2. عند الترقية
-		مشروع موجود إلى => r118 ، قد تتعطل التطبيقات لسببين:
-		</p>
-		<ul>
-			<li>يجب أن يكون كود الشادر المخصص مطابقًا لـ GLSL 3.0.</li>
-			<li>يجب تغيير فحوصات ملحقات WebGL 1.</li>
-		</ul>
-		<p>
-		إذا لم تتمكن من تحمل الوقت لترقية الكود الخاص بك ولكنك ما زلت ترغب في استخدام
-		أحدث إصدار ، يمكنك استخدام [name]. هذه الإصدارة من المُعالج ستفرض
-		سياق عرض WebGL 1.
-		</p>
-		 
-		<h2>المنشئ (Constructor)</h2>
-		 
-		<h3>[name]( [param:Object parameters] )</h3>
-		<p>ينشئ [name] جديدًا.</p>
-		 
-		<h2>الخصائص (Properties)</h2>
-		<p>انظر فئة [page:WebGLRenderer] الأساسية للحصول على خصائص شائعة.</p>
-		 
-		<h3>[property:Boolean isWebGL1Renderer]</h3>
-		<p>علامة للقراءة فقط للتحقق مما إذا كان كائنًا معينًا من نوع [name].</p>
-		 
-		<h2>الطرق (Methods)</h2>
-		<p>انظر فئة [page:WebGLRenderer] الأساسية للحصول على طرق شائعة.</p>
-		 
-		<h2>المصدر (Source)</h2>
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-		</p>
-	</body>
-</html>

+ 1 - 1
docs/api/ar/renderers/WebGLRenderer.html

@@ -50,7 +50,7 @@
 		 
 		[page:Boolean stencil] - ما إذا كانت ذاكرة التخزين المؤقت للرسم لديها
 		[link:https://en.wikipedia.org/wiki/Stencil_buffer stencil buffer] من على
-		الأقل 8 بت. الافتراضي هو `true`. <br />
+		الأقل 8 بت. الافتراضي هو `false`. <br />
 		 
 		[page:Boolean preserveDrawingBuffer] - ما إذا كان سيتم الحفاظ على المخابئ
 		حتى يتم مسحها يدويًا أو استبدالها. الافتراضي هو `false`. <br />

+ 2 - 1
docs/api/en/animation/AnimationMixer.html

@@ -102,7 +102,8 @@
 		<p>
 			Deallocates all memory resources for a root object. Before using this
 			method make sure to call [page:AnimationAction.stop]() for all related
-			actions.
+			actions or alternatively [page:.stopAllAction]() when the mixer operates 
+			on a single root.
 		</p>
 
 		<h3>[method:undefined uncacheAction]([param:AnimationClip clip], [param:Object3D optionalRoot])

+ 7 - 11
docs/api/en/constants/Textures.html

@@ -136,6 +136,7 @@
 		THREE.UnsignedShort4444Type
 		THREE.UnsignedShort5551Type 
 		THREE.UnsignedInt248Type
+		THREE.UnsignedInt5999Type
 		</code>
 		<p>
 			For use with a texture's [page:Texture.type type] property, which must
@@ -151,6 +152,7 @@
 		THREE.RedIntegerFormat 
 		THREE.RGFormat
 		THREE.RGIntegerFormat 
+		THREE.RGBFormat
 		THREE.RGBAFormat 
 		THREE.RGBAIntegerFormat
 		THREE.LuminanceFormat 
@@ -166,24 +168,21 @@
 			and reads just the alpha component.<br /><br />
 
 			[page:constant RedFormat] discards the green and blue components and reads
-			just the red component. (can only be used with a WebGL 2 rendering
-			context).
+			just the red component.
 			<br /><br />
 
 			[page:constant RedIntegerFormat] discards the green and blue components
 			and reads just the red component. The texels are read as integers instead
-			of floating point. (can only be used with a WebGL 2 rendering context).
+			of floating point.
 			<br /><br />
 
 			[page:constant RGFormat] discards the alpha, and blue components and reads
-			the red, and green components. (can only be used with a WebGL 2 rendering
-			context).
+			the red, and green components.
 			<br /><br />
 
 			[page:constant RGIntegerFormat] discards the alpha, and blue components
 			and reads the red, and green components. The texels are read as integers
-			instead of floating point. (can only be used with a WebGL 2 rendering
-			context).
+			instead of floating point.
 			<br /><br />
 
 			[page:constant RGBAFormat] is the default and reads the red, green, blue
@@ -191,7 +190,7 @@
 
 			[page:constant RGBAIntegerFormat] is the default and reads the red, green,
 			blue and alpha components. The texels are read as integers instead of
-			floating point. (can only be used with a WebGL 2 rendering context).
+			floating point.
 			<br /><br />
 
 			[page:constant LuminanceFormat] reads each element as a single luminance
@@ -393,9 +392,6 @@
 		</code>
 
 		<p>
-			Heads up: changing the internal format of a texture will only affect the
-			texture when using a WebGL 2 rendering context.<br /><br />
-
 			For use with a texture's [page:Texture.internalFormat internalFormat]
 			property, these define how elements of a texture, or `texels`, are stored
 			on the GPU.<br /><br />

+ 1 - 1
docs/api/en/core/Uniform.html

@@ -55,7 +55,7 @@
 					<td>[page:Number]</td>
 				</tr>
 				<tr>
-					<td>uint (WebGL 2)</td>
+					<td>uint</td>
 					<td>[page:Number]</td>
 				</tr>
 				<tr>

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

@@ -340,7 +340,7 @@
 		<h3>[property:Boolean toneMapped]</h3>
 		<p>
 			Defines whether this material is tone mapped according to the renderer's			
-			[page:WebGLRenderer.toneMapping toneMapping] setting. It is ignored when rendering to a render target.
+			[page:WebGLRenderer.toneMapping toneMapping] setting. It is ignored when rendering to a render target or using post processing.
 			Default is `true`.
 		</p>
 

+ 1 - 6
docs/api/en/materials/ShaderMaterial.html

@@ -342,10 +342,6 @@ this.defaultAttributeValues = {
 			An object with the following properties:
 			<code>
 this.extensions = { 
-	derivatives: false, // set to use derivatives
-	fragDepth: false, // set to use fragment depth values 
-	drawBuffers: false, // set to use draw buffers 
-	shaderTextureLOD: false, // set to use shader texture LOD
 	clipCullDistance: false, // set to use vertex shader clipping
 	multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
 };
@@ -368,8 +364,7 @@ this.extensions = {
 
 		<h3>[property:String glslVersion]</h3>
 		<p>
-			Defines the GLSL version of custom shader code. Only relevant for WebGL 2
-			in order to define whether to specify GLSL 3.0 or not. Valid values are
+			Defines the GLSL version of custom shader code. Valid values are
 			`THREE.GLSL1` or `THREE.GLSL3`. Default is `null`.
 		</p>
 

+ 0 - 7
docs/api/en/objects/BatchedMesh.html

@@ -213,13 +213,6 @@
 			Replaces the geometry at `index` with the provided geometry. Throws an error if there is not enough space reserved for geometry at the index.
 		</p>
 
-		<h3>
-			[method:this deleteGeometry]( [param:Integer index] )
-		</h3>
-		<p>
-			Marks the geometry at the given index as deleted and to not be rendered anymore.
-		</p>
-
 		<h2>Source</h2>
 
 		<p>

+ 1 - 1
docs/api/en/objects/InstancedMesh.html

@@ -189,7 +189,7 @@
 			range [0, count].
 		</p>
 		<p>
-			[page:Matrix4 matrix]: A mesh with [page:Mesh.morphTargetInfluences .morphTargetInfluences] property containing the morph target weights
+			[page:Mesh mesh]: A mesh with [page:Mesh.morphTargetInfluences .morphTargetInfluences] property containing the morph target weights
 			of a single instance.
 		</p>
 		<p>

+ 1 - 3
docs/api/en/objects/SkinnedMesh.html

@@ -13,9 +13,7 @@
 
 		<p class="desc">
 			A mesh that has a [page:Skeleton] with [page:Bone bones] that can then be
-			used to animate the vertices of the geometry.<br /><br />
-
-			[name] can only be used with WebGL 2.
+			used to animate the vertices of the geometry.
 		</p>
 
 		<iframe id="scene" src="scenes/bones-browser.html"></iframe>

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

@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<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:
-		</p>
-		<ul>
-			<li>Custom shader code needs to be GLSL 3.0 conform.</li>
-			<li>WebGL 1 extension checks have to be changed.</li>
-		</ul>
-		<p>
-			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>
-
-		<h3>[property:Boolean isWebGL1Renderer]</h3>
-		<p>Read-only flag to check if a given object is of type [name].</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>

+ 1 - 2
docs/api/en/renderers/WebGLRenderTarget.html

@@ -103,8 +103,7 @@
 
 		<h3>[property:Number samples]</h3>
 		<p>
-			Defines the count of MSAA samples. Can only be used with WebGL 2. Default
-			is `0`.
+			Defines the count of MSAA samples. Default is `0`.
 		</p>
 
 		<h2>Methods</h2>

+ 1 - 1
docs/api/en/renderers/WebGLRenderer.html

@@ -49,7 +49,7 @@
 
 			[page:Boolean stencil] - whether the drawing buffer has a
 			[link:https://en.wikipedia.org/wiki/Stencil_buffer stencil buffer] of at
-			least 8 bits. Default is `true`.<br />
+			least 8 bits. Default is `false`.<br />
 
 			[page:Boolean preserveDrawingBuffer] - whether to preserve the buffers
 			until manually cleared or overwritten. Default is `false`.<br />

+ 6 - 0
docs/api/en/scenes/Scene.html

@@ -62,6 +62,12 @@
 			[page:MeshStandardMaterial.envMap]. Default is `null`.
 		</p>
 
+		<h3>[property:Float environmentIntensity]</h3>
+		<p>
+			Attenuates the color of the environment. Only influences environment maps
+			assigned to [page:Scene.environment]. Default is `1`.
+		</p>
+
 		<h3>[property:Euler environmentRotation]</h3>
 		<p>
 			The rotation of the environment map in radians. Only influences physical materials 

+ 1 - 2
docs/api/en/textures/Data3DTexture.html

@@ -13,8 +13,7 @@
 
 		<p class="desc">
 			Creates a three-dimensional texture from raw data, with parameters to
-			divide it into width, height, and depth. This type of texture can only be
-			used with a WebGL 2 rendering context.
+			divide it into width, height, and depth.
 		</p>
 
 		<h2>Constructor</h2>

+ 1 - 2
docs/api/en/textures/DataArrayTexture.html

@@ -13,8 +13,7 @@
 
 		<p class="desc">
 			Creates an array of textures directly from raw data, width and height and
-			depth. This type of texture can only be used with a WebGL 2 rendering
-			context.
+			depth.
 		</p>
 
 		<h2>Constructor</h2>

+ 1 - 3
docs/api/en/textures/DepthTexture.html

@@ -13,9 +13,7 @@
 
 		<p class="desc">
 			This class can be used to automatically save the depth information of a
-			rendering into a texture. When using a WebGL 1 rendering context, [name]
-			requires support for the
-			[link:https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/ WEBGL_depth_texture] extension.
+			rendering into a texture.
 		</p>
 
 		<h2>Examples</h2>

+ 2 - 8
docs/api/fr/constants/Textures.html

@@ -129,6 +129,7 @@
 		THREE.UnsignedShort4444Type
 		THREE.UnsignedShort5551Type
 		THREE.UnsignedInt248Type
+		THREE.UnsignedInt5999Type
 		</code>
 		<p>
 		À utiliser avec la propriété [page:Texture.type type] d'une texture, qui doit correspondre au format correct. Voir ci-dessous pour plus de détails.<br /><br />
@@ -143,6 +144,7 @@
 		THREE.RedIntegerFormat
 		THREE.RGFormat
 		THREE.RGIntegerFormat
+		THREE.RGBFormat
 		THREE.RGBAFormat
 		THREE.RGBAIntegerFormat
 		THREE.LuminanceFormat
@@ -160,23 +162,19 @@
 
 		[page:constant RedIntegerFormat] supprime les composants vert et bleu et lit uniquement le composant rouge.
 		Les texels sont lus comme des entiers au lieu de points flottants.
-		(ne peut être utilisé qu'avec un contexte de rendu WebGL 2).
 		<br /><br />
 
 		[page:constant RGFormat] supprime les composants alpha et bleu et lit les composants rouge et vert.
-		(ne peut être utilisé qu'avec un contexte de rendu WebGL 2).
 		<br /><br />
 
 		[page:constant RGIntegerFormat] supprime les composants alpha et bleu et lit les composants rouge et vert.
 		Les texels sont lus comme des entiers au lieu de points flottants.
-		(ne peut être utilisé qu'avec un contexte de rendu WebGL 2).
 		<br /><br />
 
 		[page:constant RGBAFormat] est la valeur par défaut et lit les composants rouge, vert, bleu et alpha.<br /><br />
 
 		[page:constant RGBAIntegerFormat] est la valeur par défaut et lit les composants rouge, vert, bleu et alpha.
 		Les texels sont lus comme des entiers au lieu de points flottants.
-		(ne peut être utilisé qu'avec un contexte de rendu WebGL 2).
 		<br /><br />
 
 		[page:constant LuminanceFormat] lit chaque élément comme une seule composante de luminance.
@@ -346,10 +344,6 @@
 		</code>
 
 		<p>
-
-		Attention : changer le format interne d'une texture n'affectera que le
-		texture lors de l'utilisation d'un contexte de rendu WebGL 2.<br /><br />
-
 		À utiliser avec la propriété de texture [page:Texture.internalFormat internalFormat],
 		ceux-ci définissent comment les éléments d'une texture, ou "texels", sont stockés sur le GPU.<br /><br />
 

+ 2 - 6
docs/api/fr/materials/ShaderMaterial.html

@@ -313,10 +313,6 @@ et la page [page:BufferAttribute] pour un aperçu détaillé de l'API `BufferAtt
 		Un objet avec les propriétés suivantes :
 		<code>
 			this.extensions = {
-				derivatives: false, // set to use derivatives
-				fragDepth: false, // set to use fragment depth values
-				drawBuffers: false, // set to use draw buffers
-				shaderTextureLOD: false, // set to use shader texture LOD
 				clipCullDistance: false, // set to use vertex shader clipping
 				multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
 			};
@@ -340,8 +336,8 @@ et la page [page:BufferAttribute] pour un aperçu détaillé de l'API `BufferAtt
 
 		<h3>[property:String glslVersion]</h3>
 		<p>
-			Définit la version GLSL du code de shader personnalisé. Pertinent uniquement pour WebGL 2 afin de définir s'il faut spécifier
-			GLSL 3.0 ou pas. Les valeurs valides sont `THREE.GLSL1` ou `THREE.GLSL3`. La valeur par défaut est `null`.
+			Définit la version GLSL du code de shader personnalisé. Les valeurs valides sont `THREE.GLSL1` ou `THREE.GLSL3`.
+			La valeur par défaut est `null`.
 		</p>
 
 		<h3>[property:String index0AttributeName]</h3>

+ 6 - 11
docs/api/it/constants/Textures.html

@@ -125,6 +125,7 @@
 		THREE.UnsignedShort4444Type
 		THREE.UnsignedShort5551Type
 		THREE.UnsignedInt248Type
+		THREE.UnsignedInt5999Type
 		</code>
 		<p>
       Da usare con la proprietà [page:Texture.type type] della texture, la quale deve corrispondere al formato corretto. Vedi sotto per i dettagli.<br /><br />
@@ -139,6 +140,7 @@
 		THREE.RedIntegerFormat
 		THREE.RGFormat
 		THREE.RGIntegerFormat
+		THREE.RGBFormat
 		THREE.RGBAFormat
 		THREE.RGBAIntegerFormat
 		THREE.LuminanceFormat
@@ -155,21 +157,17 @@
       [page:constant RedFormat] elimina i componenti verde e blu e legge solo il componente rosso.<br /><br />
 
       [page:constant RedIntegerFormat] elimina i componenti verde e blu e legge solo il componente rosso.
-      I texel sono letti come interi invece che come floating point.
-      (può essere utilizzato solo in un contesto di rendering WebGL 2).<br /><br />
+      I texel sono letti come interi invece che come floating point.<br /><br />
 
-      [page:constant RGFormat] elimina i componenti alfa e blu e legge i componenti rosso e verde.
-      (può essere utilizzato solo in un contesto di rendering WebGL 2).<br /><br />
+      [page:constant RGFormat] elimina i componenti alfa e blu e legge i componenti rosso e verde.<br /><br />
 
       [page:constant RGIntegerFormat] elimina i componenti alfa e blu e legge i componenti rosso e verde.
-      I texel sono letti come numeri interi invece che come floating point.
-      (può essere utilizzato solo in un contesto di rendering WebGL 2).<br /><br />
+      I texel sono letti come numeri interi invece che come floating point.<br /><br />
 
       [page:constant RGBAFormat] è l'impostazione predefinita e legge i componenti rosso, verde, blu e alfa.<br /><br />
 
       [page:constant RGBAIntegerFormat] è l'impostazione di default e legge i componenti rosso, verde, blu e alfa.
-      I texel sono letti come numeri interi invece che come floating point.
-      (può essere utilizzato solo in un contesto di rendering WebGL 2).<br /><br />
+      I texel sono letti come numeri interi invece che come floating point.<br /><br />
 
       [page:constant LuminanceFormat] legge ogni elemento come un singolo componente di luminanza.
       Questo viene quindi convertito in floating point, fissato all'intervallo [0,1], e quindi assemblato
@@ -346,9 +344,6 @@
 		</code>
 
 		<p>
-      Attenzione: la modifica di un formato interno di una texture avrà effetto solo 
-      quando si utilizza un contesto di rendering WebGL 2.<br /><br />
-
       Da usare con la proprietà [page:Texture.internalFormat internalFormat] della texture,
       definiscono come gli elementi della texture, o `toxel`, sono memorizzati nella GPU.<br /><br />
 

+ 1 - 1
docs/api/it/core/Uniform.html

@@ -50,7 +50,7 @@
 					<td>[page:Number]</td>
 				</tr>
 				<tr>
-					<td>uint (WebGL 2)</td>
+					<td>uint</td>
 					<td>[page:Number]</td>
 				</tr>
 				<tr>

+ 2 - 6
docs/api/it/materials/ShaderMaterial.html

@@ -318,10 +318,6 @@ this.defaultAttributeValues = {
 			Un oggetto con le seguenti proprietà:
 		<code>
 this.extensions = {
-	derivatives: false, // impostato per utilizzare le direttive
-	fragDepth: false, // impostato per utilizzare i valori di profondità del frammento
-	drawBuffers: false, // impostato per utilizzare i buffer di disegno
-	shaderTextureLOD: false, // impostato per utilizzare la texture dello shader LOD
 	clipCullDistance: false, // set to use vertex shader clipping
 	multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
 };
@@ -345,8 +341,8 @@ this.extensions = {
 
 		<h3>[property:String glslVersion]</h3>
 		<p>
-			Definisce la versione GLSL del codice dello shader personalizzato. Rilevante solo per WebGL 2 per definire se 
-			specificare o meno GLSL 3.0. I valori validi sono `THREE.GLSL1` o `THREE.GLSL3`. Il valore predefinito è `null`.
+			Definisce la versione GLSL del codice dello shader personalizzato. I valori validi sono `THREE.GLSL1` o `THREE.GLSL3`. 
+			Il valore predefinito è `null`.
 		</p>
 
 		<h3>[property:String index0AttributeName]</h3>

+ 1 - 3
docs/api/it/objects/SkinnedMesh.html

@@ -13,9 +13,7 @@
 
 		<p class="desc">
 			Una mesh che ha uno [page:Skeleton scheletro] con [page:Bone ossa] che può essere 
-			utilizzata per animare i vertici della geometria.<br /><br />
-
-			[name] può essere utilizzata solo con WebGL 2.
+			utilizzata per animare i vertici della geometria.
 		</p>
 
 		<iframe id="scene" src="scenes/bones-browser.html"></iframe>

+ 0 - 52
docs/api/it/renderers/WebGL1Renderer.html

@@ -1,52 +0,0 @@
-<!DOCTYPE html>
-<html lang="it">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<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">
-		Poiché la versione r118 [page:WebGLRenderer] utilizza automaticamente un contesto di rendering WebGL 2, quando viene aggiornato un progetto estistente a
-		=> r118, l'applicazione potrebbe rompersi per due ragioni:
-
-		<ul>
-			<li>Il codice dello shader personalizzato deve essere conforme a GLSL 3.0.</li>
-			<li>I controlli dell'estensione WebGL 1 devono essere cambiati.</li>
-		</ul>
-
-		Se non hai tempo di cambiare il tuo codice ma vuoi ancora utilizzare l'ultima versione, puoi usare [name]. 
-		Questa versione di renderer forzerà un contesto di rendering WebGL 1.
-		</p>
-
-		<h2>Costruttore</h2>
-
-		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-		Crea un nuovo [name].
-		</p>
-
-		<h2>Proprietà</h2>
-		<p>Vedi la classe base [page:WebGLRenderer] per le proprietà comuni.</p>
-
-		<h3>[property:Boolean isWebGL1Renderer]</h3>
-		<p>
-			Flag di sola lettura per verificare se l'oggetto dato è di tipo [name].
-		</p>
-
-
-		<h2>Metodi</h2>
-		<p>Vedi la classe base [page:WebGLRenderer] per i metodi comuni.</p>
-
-		<h2>Source</h2>
-
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-		</p>
-	</body>
-</html>

+ 1 - 1
docs/api/it/renderers/WebGLRenderer.html

@@ -45,7 +45,7 @@
 
 		[page:Boolean stencil] - Indica se il buffer di disegno ha un
 		[link:https://en.wikipedia.org/wiki/Stencil_buffer buffer stencil] di almeno 8 bit.
-		Il valore predefinito è `true`.<br />
+		Il valore predefinito è `false`.<br />
 
 		[page:Boolean preserveDrawingBuffer] - Indica se conservare i buffer finché non verranno cancellati
 		o sovrascritti manualmente. Il valore predefinito è `false`.<br />

+ 1 - 1
docs/api/it/textures/Data3DTexture.html

@@ -11,7 +11,7 @@
 
 		<h1>[name]</h1>
 
-		<p class="desc">Crea una texture tridimensionale. Questo tipo di texture può solo essere utilizzata in un contesto di rendering WebGL 2.</p>
+		<p class="desc">Crea una texture tridimensionale.</p>
 
 		<h2>Costruttore</h2>
 

+ 0 - 1
docs/api/it/textures/DataArrayTexture.html

@@ -13,7 +13,6 @@
 
 		<p class="desc">
 			Crea un array di texture direttamente da dati grezzi, dalla larghezza, dall'altezza e dalla profondità.
-			Questo tipo di texture può solo essere utilizzata in un contesto di rendering WebGL 2.
 		</p>
 
 		<h2>Costruttore</h2>

+ 0 - 2
docs/api/it/textures/DepthTexture.html

@@ -13,8 +13,6 @@
 
 		<p class="desc">
 			Questa classe può essere utilizzata per salvare automaticamente le informazioni di profondità di un rendering in una texture.
-			Quando viene utilizzato un contesto di rendering WebGL 1, [name] richiede supporto per l'estensione
-			[link:https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/ WEBGL_depth_texture].
 		</p>
 
 		<h2>Esempi</h2>

+ 2 - 7
docs/api/ko/constants/Textures.html

@@ -126,6 +126,7 @@
 		THREE.UnsignedShort4444Type
 		THREE.UnsignedShort5551Type
 		THREE.UnsignedInt248Type
+		THREE.UnsignedInt5999Type
 		</code>
 		<p>
 		텍스쳐의 [page:Texture.type type] 프로퍼티와 함께 사용되며, 정확한 포맷이어야 합니다. 아래 세부 사항을 확인하세요.<br /><br />
@@ -140,6 +141,7 @@
 		THREE.RedIntegerFormat
 		THREE.RGFormat
 		THREE.RGIntegerFormat
+		THREE.RGBFormat
 		THREE.RGBAFormat
 		THREE.RGBAIntegerFormat
 		THREE.LuminanceFormat
@@ -157,23 +159,19 @@
 
 		[page:constant RedIntegerFormat] green 및 blue 요소를 버리고 red 요소만 읽어들입니다.
 		texel은 부동 소수점 대신 정수로 읽어들입니다.
-		(WebGL 2 렌더링 시에만 사용 가능).
 		<br /><br />
 
 		[page:constant RGFormat] alpha, blue 요소를 버리고 red, green 요소만 읽어들입니다.
-		(WebGL 2 렌더링 시에만 사용 가능).
 		<br /><br />
 
 		[page:constant RGIntegerFormat] alpha, blue 요소를 버리고 red, green 요소만 읽어들입니다.
 		texel은 부동 소수점 대신 정수로 읽어들입니다.
-		(WebGL 2 렌더링 시에만 사용 가능).
 		<br /><br />
 
 		[page:constant RGBAFormat]는 기본값이며 red, green, blue 및 alpha 요소를 읽어들입니다.<br /><br />
 
 		[page:constant RGBAIntegerFormat]는 기본값이며 red, green, blue 및 alpha 요소를 읽어들입니다.
 		texel은 부동 소수점 대신 정수로 읽어들입니다.
-		(WebGL 2 렌더링 시에만 사용 가능).
 		<br /><br />
 
 		[page:constant LuminanceFormat]은 각 요소(element)를 단일 휘도 요소(component)로 읽어들입니다.
@@ -335,9 +333,6 @@
 		</code>
 
 		<p>
-
-		주의: WebGL 2 렌더링의 경우에만 텍스쳐 내부 포맷 변경이 텍스쳐에 영향을 줄 것입니다.<br /><br />
-
 		텍스쳐의 [page:Texture.internalFormat internalFormat] 프로퍼티와 함께 사용되며,
 		텍스쳐 혹은 *texels*의 요소들이 GPU에 어떻게 저장될지 정의합니다.<br /><br />
 

+ 1 - 1
docs/api/ko/core/Uniform.html

@@ -46,7 +46,7 @@
 					<td>[page:Number]</td>
 				</tr>
 				<tr>
-					<td>uint (WebGL 2)</td>
+					<td>uint</td>
 					<td>[page:Number]</td>
 				</tr>
 				<tr>

+ 2 - 8
docs/api/pt-br/constants/Textures.html

@@ -129,6 +129,7 @@
 		THREE.UnsignedShort4444Type
 		THREE.UnsignedShort5551Type
 		THREE.UnsignedInt248Type
+		THREE.UnsignedInt5999Type
 		</code>
 		<p>
 		Para uso com a propriedade [page:Texture.type type] de uma textura, que deve corresponder ao formato correto. Veja abaixo para detalhes.<br /><br />
@@ -143,6 +144,7 @@
 		THREE.RedIntegerFormat
 		THREE.RGFormat
 		THREE.RGIntegerFormat
+		THREE.RGBFormat
 		THREE.RGBAFormat
 		THREE.RGBAIntegerFormat
 		THREE.LuminanceFormat
@@ -160,23 +162,19 @@
 
 		[page:constant RedIntegerFormat] descarta os componentes verde e azul e lê apenas o componente vermelho.
 		Os texels são lidos como inteiros em vez de ponto flutuante.
-		(só pode ser usado com um contexto de renderização WebGL 2).
 		<br /><br />
 
 		[page:constant RGFormat] descarta os componentes alfa e azul e lê os componentes vermelho e verde.
-		(só pode ser usado com um contexto de renderização WebGL 2).
 		<br /><br />
 
 		[page:constant RGIntegerFormat] descarta os componentes alfa e azul e lê os componentes vermelho e verde.
 		Os texels são lidos como inteiros em vez de ponto flutuante.
-		(só pode ser usado com um contexto de renderização WebGL 2).
 		<br /><br />
 
 		[page:constant RGBAFormat] é o padrão e lê os componentes vermelho, verde, azul e alfa.<br /><br />
 
 		[page:constant RGBAIntegerFormat] é o padrão e lê os componentes vermelho, verde, azul e alfa.
 		Os texels são lidos como inteiros em vez de ponto flutuante.
-		(só pode ser usado com um contexto de renderização WebGL 2).
 		<br /><br />
 
 		[page:constant LuminanceFormat] lê cada elemento como um único componente de luminância.
@@ -346,10 +344,6 @@
 		</code>
 
 		<p>
-
-		Atenção: alterar o formato interno de uma textura afetará a
-		textura apenas quando for usado um contexto de renderização WebGL 2.<br /><br />
-
 		Para uso com a propriedade  [page:Texture.internalFormat internalFormat] de uma textura,
 		definem como os elementos de uma textura, ou `texels`, são armazenados na GPU.<br /><br />
 

+ 2 - 8
docs/api/zh/constants/Textures.html

@@ -119,6 +119,7 @@
 		THREE.UnsignedShort4444Type
 		THREE.UnsignedShort5551Type
 		THREE.UnsignedInt248Type
+		THREE.UnsignedInt5999Type
 		</code>
 	<p>
 		这些常量用于纹理的[page:Texture.type type]属性,这些属性必须与正确的格式相对应。详情请查看下方。<br /><br />
@@ -133,6 +134,7 @@
 		THREE.RedIntegerFormat
 		THREE.RGFormat
 		THREE.RGIntegerFormat
+		THREE.RGBFormat
 		THREE.RGBAFormat
 		THREE.RGBAIntegerFormat
 		THREE.LuminanceFormat
@@ -149,23 +151,19 @@
 
 		[page:constant RedIntegerFormat] discards the green and blue components and reads just the red component.
 		The texels are read as integers instead of floating point.
-		(can only be used with a WebGL 2 rendering context).
 		<br /><br />
 
 		[page:constant RGFormat] discards the alpha, and blue components and reads the red, and green components.
-		(can only be used with a WebGL 2 rendering context).
 		<br /><br />
 
 		[page:constant RGIntegerFormat] discards the alpha, and blue components and reads the red, and green components.
 		The texels are read as integers instead of floating point.
-		(can only be used with a WebGL 2 rendering context).
 		<br /><br />
 
 		[page:constant RGBAFormat] 是默认值,它将读取红、绿、蓝和Alpha分量。<br /><br />
 
 		[page:constant RGBAIntegerFormat] is the default and reads the red, green, blue and alpha components.
 		The texels are read as integers instead of floating point.
-		(can only be used with a WebGL 2 rendering context).
 		<br /><br />
 
 		[page:constant LuminanceFormat] 将每个元素作为单独的亮度分量来读取。
@@ -329,10 +327,6 @@
 	</code>
 
 	<p>
-
-	Heads up: changing the internal format of a texture will only affect the
-	texture when using a WebGL 2 rendering context.<br /><br />
-
 	For use with a texture's [page:Texture.internalFormat internalFormat]	property,
 	these define how elements of a texture, or *texels*, are stored on the GPU.<br /><br />
 

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

@@ -185,9 +185,9 @@
 			[page:Integer faceIndex] —— 相交的面的索引<br />
 			[page:Object3D object] —— 相交的物体<br />
 			[page:Vector2 uv] —— 相交部分的点的UV坐标。<br />
-			[page:Vector2 uv1] —— Second set of U,V coordinates at point of intersection<br />
+			[page:Vector2 uv1] —— 相交部分的点的第二组UV坐标<br />
 			[page:Vector3 normal] - 交点处的内插法向量<br />
-			[page:Integer instanceId] – The index number of the instance where the ray intersects the InstancedMesh
+			[page:Integer instanceId] – 与InstancedMesh物体相交时的instance索引
 		</p>
 		<p>
 			当计算这条射线是否和物体相交的时候,*Raycaster*将传入的对象委托给[page:Object3D.raycast raycast]方法。

+ 1 - 1
docs/api/zh/core/Uniform.html

@@ -47,7 +47,7 @@
 					<td>[page:Number]</td>
 				</tr>
 				<tr>
-					<td>uint (WebGL 2)</td>
+					<td>uint</td>
 					<td>[page:Number]</td>
 				</tr>
 				<tr>

+ 1 - 6
docs/api/zh/materials/ShaderMaterial.html

@@ -280,10 +280,6 @@ this.defaultAttributeValues = {
 		<p> 一个有如下属性的对象:
 		<code>
 this.extensions = {
-	derivatives: false, // set to use derivatives
-	fragDepth: false, // set to use fragment depth values
-	drawBuffers: false, // set to use draw buffers
-	shaderTextureLOD: false, // set to use shader texture LOD
 	clipCullDistance: false, // set to use vertex shader clipping
 	multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
 };
@@ -305,8 +301,7 @@ this.extensions = {
 
 		<h3>[property:String glslVersion]</h3>
 		<p>
-		Defines the GLSL version of custom shader code. Only relevant for WebGL 2 in order to define whether to specify
-		GLSL 3.0 or not. Valid values are *THREE.GLSL1* or *THREE.GLSL3*. Default is *null*.
+		Defines the GLSL version of custom shader code. Valid values are *THREE.GLSL1* or *THREE.GLSL3*. Default is *null*.
 		</p>
 
 		<h3>[property:String index0AttributeName]</h3>

+ 0 - 7
docs/api/zh/objects/BatchedMesh.html

@@ -191,13 +191,6 @@
 		用提供的几何图形替换 `index` 的几何图形。如果索引处没有为几何体保留足够的空间,则会引发错误。
 	</p>
 
-	<h3>
-		[method:this deleteGeometry]( [param:Integer index] )
-	</h3>
-	<p>
-		将给定索引处的几何体标记为已删除并且不再渲染。
-	</p>
-
 	<h2>源代码</h2>
 
 	<p>

+ 1 - 3
docs/api/zh/objects/SkinnedMesh.html

@@ -12,9 +12,7 @@
 		<h1>蒙皮网格([name])</h1>
 
 		<p class="desc">
-			具有[page:Skeleton](骨架)和[page:Bone bones](骨骼)的网格,可用于给几何体上的顶点添加动画。<br /><br />
-
-			[name] can only be used with WebGL 2.
+			具有[page:Skeleton](骨架)和[page:Bone bones](骨骼)的网格,可用于给几何体上的顶点添加动画。
 		</p>
 
 		<iframe id="scene" src="scenes/bones-browser.html"></iframe>

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

@@ -1,52 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../" />
-		<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">
-		自r118起,[page:WebGLRenderer]会自动使用 WebGL 2 渲染上下文。当升级一个已存在的项目到 => r118 ,
-		应用程序可能会因为下列两种原因而损坏:
-
-		<ul>
-			<li>自定义着色器代码必须符合GLSL 3.0。</li>
-			<li>WebGL 1扩展检查到被更改</li>
-		</ul>
-
-		如果你不能够花时间来升级你的代码,但仍然想要使用最新版本,那你就可以使用[name]。
-		这一版本的渲染器会强制使用 WebGL 1 渲染上下文。
-		</p>
-
-		<h2>构造函数</h2>
-
-		<h3>[name]( [param:Object parameters] )</h3>
-		<p>
-		Creates a new [name].
-		</p>
-
-		<h2>属性</h2>
-		<p>See the base [page:WebGLRenderer] class for common properties.</p>
-
-		<h3>[property:Boolean isWebGL1Renderer]</h3>
-		<p>
-			Read-only flag to check if a given object is of type [name].
-		</p>
-
-
-		<h2>方法</h2>
-		<p>See the base [page:WebGLRenderer] class for common methods.</p>
-
-		<h2>源码</h2>
-
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-		</p>
-	</body>
-</html>

+ 1 - 1
docs/api/zh/renderers/WebGLRenderTarget.html

@@ -104,7 +104,7 @@
 
 		<h3>[property:Number samples]</h3>
 		<p>
-		Defines the count of MSAA samples. Can only be used with WebGL 2. Default is *0*.
+		Defines the count of MSAA samples. Default is *0*.
 		</p>
 
 		<h2>方法</h2>

+ 1 - 1
docs/api/zh/renderers/WebGLRenderer.html

@@ -38,7 +38,7 @@
 
 		[page:Boolean antialias] - 是否执行抗锯齿。默认为*false*.<br />
 
-		[page:Boolean stencil] - 绘图缓存是否有一个至少8位的模板缓存([link:https://en.wikipedia.org/wiki/Stencil_buffer stencil buffer])。默认为*true*<br />
+		[page:Boolean stencil] - 绘图缓存是否有一个至少8位的模板缓存([link:https://en.wikipedia.org/wiki/Stencil_buffer stencil buffer])。默认为*false*<br />
 
 		[page:Boolean preserveDrawingBuffer] -是否保留缓直到手动清除或被覆盖。 默认*false*.<br />
 

+ 1 - 1
docs/api/zh/textures/Data3DTexture.html

@@ -11,7 +11,7 @@
 
 		<h1>[name]</h1>
 
-		<p class="desc">创建一个三维的纹理贴图。这种纹理贴图只能被用于WebGL 2渲染环境中。</p>
+		<p class="desc">创建一个三维的纹理贴图。</p>
 
 		<h2>构造函数</h2>
 

+ 1 - 1
docs/api/zh/textures/DataArrayTexture.html

@@ -12,7 +12,7 @@
 		<h1>数据数组纹理([name])</h1>
 
 		<p class="desc">
-			直接从原始数据、宽度、高度和深度创建纹理数组。这种类型的纹理只能与 WebGL 2 渲染上下文一起使用。
+			直接从原始数据、宽度、高度和深度创建纹理数组。
 		</p>
 
 

+ 0 - 1
docs/api/zh/textures/DepthTexture.html

@@ -13,7 +13,6 @@
 
 		<p class="desc">
 		This class can be used to automatically save the depth information of a rendering into a texture.
-		When using a WebGL 1 rendering context, [name] requires support for the [link:https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/ WEBGL_depth_texture] extension.
 		</p>
 
 		<h2>例子</h2>

+ 2 - 2
docs/examples/en/geometries/TextGeometry.html

@@ -38,7 +38,7 @@
 			const geometry = new TextGeometry( 'Hello three.js!', {
 				font: font,
 				size: 80,
-				height: 5,
+				depth: 5,
 				curveSegments: 12,
 				bevelEnabled: true,
 				bevelThickness: 10,
@@ -64,7 +64,7 @@
 		<ul>
 			<li>font — an instance of THREE.Font.</li>
 			<li>size — Float. Size of the text. Default is 100.</li>
-			<li>height — Float. Thickness to extrude text.  Default is 50.</li>
+			<li>depth — Float. Thickness to extrude text.  Default is 50.</li>
 			<li>curveSegments — Integer. Number of points on the curves. Default is 12.</li>
 			<li>bevelEnabled — Boolean. Turn on bevel. Default is False.</li>
 			<li>bevelThickness — Float. How deep into text bevel goes. Default is 10.</li>

+ 4 - 4
docs/examples/en/loaders/3DMLoader.html

@@ -166,7 +166,7 @@
 			// Specify path to a folder containing WASM/JS libraries or a CDN.
 			// For example, /jsm/libs/rhino3dm/ is the location of the library inside the three.js repository
 			// loader.setLibraryPath( '/path_to_library/rhino3dm/' );
-			loader.setLibraryPath( 'https://unpkg.com/[email protected]/' );
+			loader.setLibraryPath( 'https://cdn.jsdelivr.net/npm/[email protected]/' );
 	
 			// Load a 3DM file
 			loader.load(
@@ -205,13 +205,13 @@
 		</p>
 
 		<code>
-		import rhino3dm from 'https://unpkg.com/[email protected]'
+		import rhino3dm from 'https://cdn.jsdelivr.net/npm/[email protected]'
 
 		// Instantiate a loader
 		const loader = new Rhino3dmLoader();
 
 		// Specify path to a folder containing WASM/JS libraries or a CDN.
-		loader.setLibraryPath( 'https://unpkg.com/[email protected]' );
+		loader.setLibraryPath( 'https://cdn.jsdelivr.net/npm/[email protected]' );
 
 		const rhino = await rhino3dm();
 		console.log('Loaded rhino3dm.');
@@ -244,7 +244,7 @@
 		// Specify path to a folder containing the WASM/JS library:
 		loader.setLibraryPath( '/path_to_library/rhino3dm/' );
 		// or from a CDN:
-		loader.setLibraryPath( 'https://unpkg.com/[email protected]' );
+		loader.setLibraryPath( 'https://cdn.jsdelivr.net/npm/[email protected]' );
 		</code>
 
 		<h3>[method:this setWorkerLimit]( [param:Number workerLimit] )</h3>

+ 2 - 2
docs/examples/zh/geometries/TextGeometry.html

@@ -38,7 +38,7 @@
 			const geometry = new TextGeometry( 'Hello three.js!', {
 				font: font,
 				size: 80,
-				height: 5,
+				depth: 5,
 				curveSegments: 12,
 				bevelEnabled: true,
 				bevelThickness: 10,
@@ -63,7 +63,7 @@
 		<ul>
 			<li>font — THREE.Font的实例。</li>
 			<li>size — Float。字体大小,默认值为100。</li>
-			<li>height — Float。挤出文本的厚度。默认值为50。</li>
+			<li>depth — Float。挤出文本的厚度。默认值为50。</li>
 			<li>curveSegments — Integer。(表示文本的)曲线上点的数量。默认值为12。</li>
 			<li>bevelEnabled — Boolean。是否开启斜角,默认为false。</li>
 			<li>bevelThickness — Float。文本上斜角的深度,默认值为20。</li>

+ 4 - 4
docs/examples/zh/loaders/3DMLoader.html

@@ -171,7 +171,7 @@
 			// Specify path to a folder containing WASM/JS libraries or a CDN.
 			// For example, /jsm/libs/rhino3dm/ is the location of the library inside the three.js repository
 			// loader.setLibraryPath( '/path_to_library/rhino3dm/' );
-			loader.setLibraryPath( 'https://unpkg.com/[email protected]/' );
+			loader.setLibraryPath( 'https://cdn.jsdelivr.net/npm/[email protected]/' );
 	
 			// Load a 3DM file
 			loader.load(
@@ -212,13 +212,13 @@
 	</p>
 
 	<code>
-		import rhino3dm from 'https://unpkg.com/[email protected]'
+		import rhino3dm from 'https://cdn.jsdelivr.net/npm/[email protected]'
 
 		// Instantiate a loader
 		const loader = new Rhino3dmLoader();
 
 		// Specify path to a folder containing WASM/JS libraries or a CDN.
-		loader.setLibraryPath( 'https://unpkg.com/[email protected]' );
+		loader.setLibraryPath( 'https://cdn.jsdelivr.net/npm/[email protected]' );
 
 		const rhino = await rhino3dm();
 		console.log('Loaded rhino3dm.');
@@ -251,7 +251,7 @@
 		// Specify path to a folder containing the WASM/JS library:
 		loader.setLibraryPath( '/path_to_library/rhino3dm/' );
 		// or from a CDN:
-		loader.setLibraryPath( 'https://unpkg.com/[email protected]' );
+		loader.setLibraryPath( 'https://cdn.jsdelivr.net/npm/[email protected]' );
 		</code>
 
 	<h3>[method:this setWorkerLimit]( [param:Number workerLimit] )</h3>

+ 0 - 5
docs/list.json

@@ -279,7 +279,6 @@
 
 			"Renderers": {
 				"WebGLRenderer": "api/en/renderers/WebGLRenderer",
-				"WebGL1Renderer": "api/en/renderers/WebGL1Renderer",
 				"WebGLRenderTarget": "api/en/renderers/WebGLRenderTarget",
 				"WebGL3DRenderTarget": "api/en/renderers/WebGL3DRenderTarget",
 				"WebGLArrayRenderTarget": "api/en/renderers/WebGLArrayRenderTarget",
@@ -720,7 +719,6 @@
 
 			"Renderers": {
 				"WebGLRenderer": "api/ar/renderers/WebGLRenderer",
-				"WebGL1Renderer": "api/ar/renderers/WebGL1Renderer",
 				"WebGLRenderTarget": "api/ar/renderers/WebGLRenderTarget",
 				"WebGL3DRenderTarget": "api/ar/renderers/WebGL3DRenderTarget",
 				"WebGLArrayRenderTarget": "api/ar/renderers/WebGLArrayRenderTarget",
@@ -1027,7 +1025,6 @@
 
 			"渲染器": {
 				"WebGLRenderer": "api/zh/renderers/WebGLRenderer",
-				"WebGL1Renderer": "api/zh/renderers/WebGL1Renderer",
 				"WebGLRenderTarget": "api/zh/renderers/WebGLRenderTarget",
 				"WebGL3DRenderTarget": "api/zh/renderers/WebGL3DRenderTarget",
 				"WebGLArrayRenderTarget": "api/zh/renderers/WebGLArrayRenderTarget",
@@ -1663,7 +1660,6 @@
 
 			"Renderers": {
 				"WebGLRenderer": "api/it/renderers/WebGLRenderer",
-				"WebGL1Renderer": "api/it/renderers/WebGL1Renderer",
 				"WebGLRenderTarget": "api/it/renderers/WebGLRenderTarget",
 				"WebGL3DRenderTarget": "api/it/renderers/WebGL3DRenderTarget",
 				"WebGLArrayRenderTarget": "api/it/renderers/WebGLArrayRenderTarget",
@@ -2190,7 +2186,6 @@
 
 			"Renderers": {
 				"WebGLRenderer": "api/en/renderers/WebGLRenderer",
-				"WebGL1Renderer": "api/en/renderers/WebGL1Renderer",
 				"WebGLRenderTarget": "api/en/renderers/WebGLRenderTarget",
 				"WebGL3DRenderTarget": "api/en/renderers/WebGL3DRenderTarget",
 				"WebGLArrayRenderTarget": "api/en/renderers/WebGLArrayRenderTarget",

+ 3 - 3
docs/manual/ar/introduction/Installation.html

@@ -88,7 +88,7 @@
 		&lt;script type="importmap">
 			{
 			"imports": {
-				"three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js"
+				"three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js"
 			}
 			}
 		&lt;/script>
@@ -127,8 +127,8 @@
 		&lt;script type="importmap">
 			{
 			"imports": {
-				"three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js",
-				"three/addons/": "https://unpkg.com/three@&lt;version&gt;/examples/jsm/"
+				"three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js",
+				"three/addons/": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/examples/jsm/"
 			}
 			}
 		&lt;/script>

+ 2 - 2
docs/manual/en/introduction/Installation.html

@@ -152,8 +152,8 @@ npm install --save-dev vite
 &lt;script type="importmap">
   {
     "imports": {
-      "three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js",
-      "three/addons/": "https://unpkg.com/three@&lt;version&gt;/examples/jsm/"
+      "three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js",
+      "three/addons/": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/examples/jsm/"
     }
   }
 &lt;/script>

+ 2 - 2
docs/manual/fr/introduction/Creating-a-scene.html

@@ -27,7 +27,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 
 					// Our Javascript will go here.
 				&lt;/script&gt;
@@ -129,7 +129,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 
 					const scene = new THREE.Scene();
 					const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

+ 3 - 3
docs/manual/fr/introduction/Installation.html

@@ -71,7 +71,7 @@
 		&lt;script type="importmap">
 		  {
 		    "imports": {
-		      "three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js"
+		      "three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js"
 		    }
 		  }
 		&lt;/script>
@@ -110,8 +110,8 @@
 		&lt;script type="importmap">
 			{
 			"imports": {
-				"three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js",
-				"three/addons/": "https://unpkg.com/three@&lt;version&gt;/examples/jsm/"
+				"three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js",
+				"three/addons/": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/examples/jsm/"
 			}
 			}
 		&lt;/script>

+ 2 - 2
docs/manual/it/introduction/Creating-a-scene.html

@@ -30,7 +30,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 
 					// Il nostro Javascript andrà qui
 				&lt;/script&gt;
@@ -147,7 +147,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 
 					const scene = new THREE.Scene();
 					const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

+ 3 - 3
docs/manual/it/introduction/Installation.html

@@ -72,7 +72,7 @@
 		&lt;script type="importmap">
 		  {
 		    "imports": {
-		      "three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js"
+		      "three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js"
 		    }
 		  }
 		&lt;/script>
@@ -110,8 +110,8 @@
 		&lt;script type="importmap">
 			{
 			"imports": {
-				"three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js",
-				"three/addons/": "https://unpkg.com/three@&lt;version&gt;/examples/jsm/"
+				"three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js",
+				"three/addons/": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/examples/jsm/"
 			}
 			}
 		&lt;/script>

+ 2 - 2
docs/manual/ja/introduction/Creating-a-scene.html

@@ -27,7 +27,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 
 					// Our Javascript will go here.
 				&lt;/script&gt;
@@ -130,7 +130,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 
 					const scene = new THREE.Scene();
 					const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

+ 3 - 3
docs/manual/ja/introduction/Installation.html

@@ -72,7 +72,7 @@
 &lt;script type="importmap">
     {
     "imports": {
-        "three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js"
+        "three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js"
     }
     }
 &lt;/script>
@@ -111,8 +111,8 @@
 &lt;script type="importmap">
     {
     "imports": {
-        "three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js",
-        "three/addons/": "https://unpkg.com/three@&lt;version&gt;/examples/jsm/"
+        "three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js",
+        "three/addons/": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/examples/jsm/"
     }
     }
 &lt;/script>

+ 2 - 2
docs/manual/ko/introduction/Creating-a-scene.html

@@ -28,7 +28,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 ´
 					// Our Javascript will go here.
 				&lt;/script&gt;
@@ -133,7 +133,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 
 					const scene = new THREE.Scene();
 					const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

+ 3 - 3
docs/manual/ko/introduction/Installation.html

@@ -80,7 +80,7 @@
 &lt;script type="importmap">
     {
     "imports": {
-        "three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js"
+        "three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js"
     }
     }
 &lt;/script>
@@ -123,8 +123,8 @@
 &lt;script type="importmap">
     {
     "imports": {
-        "three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js",
-        "three/addons/": "https://unpkg.com/three@&lt;version&gt;/examples/jsm/"
+        "three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js",
+        "three/addons/": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/examples/jsm/"
     }
     }
 &lt;/script>

+ 2 - 2
docs/manual/pt-br/introduction/Creating-a-scene.html

@@ -27,7 +27,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 
 					// Our Javascript will go here.
 				&lt;/script&gt;
@@ -131,7 +131,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 
 					const scene = new THREE.Scene();
 					const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

+ 3 - 3
docs/manual/pt-br/introduction/Installation.html

@@ -56,7 +56,7 @@
 		&lt;script type="importmap">
 		  {
 		    "imports": {
-		      "three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js"
+		      "three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js"
 		    }
 		  }
 		&lt;/script>
@@ -96,8 +96,8 @@
 		&lt;script type="importmap">
 			{
 			"imports": {
-				"three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js",
-				"three/addons/": "https://unpkg.com/three@&lt;version&gt;/examples/jsm/"
+				"three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js",
+				"three/addons/": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/examples/jsm/"
 			}
 			}
 		&lt;/script>

+ 2 - 2
docs/manual/ru/introduction/Creating-a-scene.html

@@ -29,7 +29,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 
 					// Наш Javascript будет здесь..
 				&lt;/script&gt;
@@ -130,7 +130,7 @@
 			&lt;/head&gt;
 			&lt;body&gt;
 				&lt;script type="module"&gt;
-					import * as THREE from 'https://unpkg.com/three/build/three.module.js';
+					import * as THREE from 'https://cdn.jsdelivr.net/npm/three/build/three.module.js';
 
 					const scene = new THREE.Scene();
 					const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

+ 3 - 3
docs/manual/ru/introduction/Installation.html

@@ -95,7 +95,7 @@
 		&lt;script type="importmap">
 		{
 			"imports": {
-				"three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js"
+				"three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js"
 			}
 		}
 		&lt;/script>
@@ -140,8 +140,8 @@
 		&lt;script type="importmap">
 		{
 			"imports": {
-				"three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js",
-				"three/addons/": "https://unpkg.com/three@&lt;version&gt;/examples/jsm/"
+				"three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js",
+				"three/addons/": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/examples/jsm/"
 			}
 		}
 		&lt;/script>

+ 2 - 2
docs/manual/zh/introduction/Installation.html

@@ -151,8 +151,8 @@ npm install --save-dev vite
 &lt;script type="importmap">
   {
     "imports": {
-      "three": "https://unpkg.com/three@&lt;version&gt;/build/three.module.js",
-      "three/addons/": "https://unpkg.com/three@&lt;version&gt;/examples/jsm/"
+      "three": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/build/three.module.js",
+      "three/addons/": "https://cdn.jsdelivr.net/npm/three@&lt;version&gt;/examples/jsm/"
     }
   }
 &lt;/script>

+ 2 - 2
editor/index.html

@@ -61,8 +61,8 @@
 					"three/addons/": "../examples/jsm/",
 
 					"three/examples/": "../examples/",
-					"three-gpu-pathtracer": "https://unpkg.com/[email protected]/build/index.module.js",
-					"three-mesh-bvh": "https://unpkg.com/[email protected]/build/index.module.js"
+					"three-gpu-pathtracer": "https://cdn.jsdelivr.net/npm/[email protected]/build/index.module.js",
+					"three-mesh-bvh": "https://cdn.jsdelivr.net/npm/[email protected]/build/index.module.js"
 				}
 			}
 		</script>

+ 2 - 2
editor/js/Loader.js

@@ -506,7 +506,7 @@ function Loader( editor ) {
 
 					const contents = event.target.result;
 
-					const { PCDLoader } = await import( '../../examples/jsm/loaders/PCDLoader.js' );
+					const { PCDLoader } = await import( 'three/addons/loaders/PCDLoader.js' );
 
 					const points = new PCDLoader().parse( contents );
 					points.name = filename;
@@ -653,7 +653,7 @@ function Loader( editor ) {
 
 					const contents = event.target.result;
 
-					const { USDZLoader } = await import( '../../examples/jsm/loaders/USDZLoader.js' );
+					const { USDZLoader } = await import( 'three/addons/loaders/USDZLoader.js' );
 
 					const group = new USDZLoader().parse( contents );
 					group.name = filename;

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

@@ -87,9 +87,9 @@ function MenubarEdit( editor ) {
 		const center = aabb.getCenter( new Vector3() );
 		const newPosition = new Vector3();
 
-		newPosition.x = object.position.x + ( object.position.x - center.x );
-		newPosition.y = object.position.y + ( object.position.y - center.y );
-		newPosition.z = object.position.z + ( object.position.z - center.z );
+		newPosition.x = object.position.x - center.x;
+		newPosition.y = object.position.y - center.y;
+		newPosition.z = object.position.z - center.z;
 
 		editor.execute( new SetPositionCommand( editor, object, newPosition ) );
 

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

@@ -195,7 +195,7 @@ function SidebarGeometry( editor ) {
 		const left = ( screen.width - 500 ) / 2;
 		const top = ( screen.height - 500 ) / 2;
 
-		const url = URL.createObjectURL( new Blob( [ output ], { type: 'text/plain' } ) );
+		const url = URL.createObjectURL( new Blob( [ output ], { type: 'text/plain;charset=utf-8' } ) );
 		window.open( url, '_blank', `location=no,left=${left},top=${top},width=500,height=500` );
 
 	} );

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

@@ -438,7 +438,7 @@ function SidebarMaterial( editor ) {
 		const left = ( screen.width - 500 ) / 2;
 		const top = ( screen.height - 500 ) / 2;
 
-		const url = URL.createObjectURL( new Blob( [ output ], { type: 'text/plain' } ) );
+		const url = URL.createObjectURL( new Blob( [ output ], { type: 'text/plain;charset=utf-8' } ) );
 		window.open( url, '_blank', `location=no,left=${left},top=${top},width=500,height=500` );
 
 	} );

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

@@ -412,7 +412,7 @@ function SidebarObject( editor ) {
 		const left = ( screen.width - 500 ) / 2;
 		const top = ( screen.height - 500 ) / 2;
 
-		const url = URL.createObjectURL( new Blob( [ output ], { type: 'text/plain' } ) );
+		const url = URL.createObjectURL( new Blob( [ output ], { type: 'text/plain;charset=utf-8' } ) );
 		window.open( url, '_blank', `location=no,left=${left},top=${top},width=500,height=500` );
 
 	} );

+ 3 - 3
editor/js/Sidebar.Project.Image.js

@@ -2,7 +2,7 @@ import * as THREE from 'three';
 
 import { UIBreak, UIButton, UIInteger, UIPanel, UIRow, UISelect, UIText } from './libs/ui.js';
 
-import { ViewportPathtracer } from './Viewport.Pathtracer.js';
+// import { ViewportPathtracer } from './Viewport.Pathtracer.js';
 
 function SidebarProjectImage( editor ) {
 
@@ -66,7 +66,7 @@ function SidebarProjectImage( editor ) {
 
 		const scene = loader.parse( json.scene );
 
-		const renderer = new THREE.WebGLRenderer( { antialias: true } );		
+		const renderer = new THREE.WebGLRenderer( { antialias: true } );
 		renderer.setSize( imageWidth.getValue(), imageHeight.getValue() );
 
 		if ( project.shadows !== undefined ) renderer.shadowMap.enabled = project.shadows;
@@ -129,7 +129,7 @@ function SidebarProjectImage( editor ) {
 					if ( output.closed === true ) return;
 
 					requestAnimationFrame( animate );
-				
+
 					pathtracer.update();
 
 					// status.textContent = Math.floor( samples );

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

@@ -1,4 +1,4 @@
-import { UIPanel, UIBreak, UIText, UIButton, UIRow, UIInput } from './libs/ui.js';
+import { UIPanel, UIBreak, UIButton, UIRow, UIInput } from './libs/ui.js';
 
 import { AddScriptCommand } from './commands/AddScriptCommand.js';
 import { SetScriptValueCommand } from './commands/SetScriptValueCommand.js';

+ 2 - 1
editor/js/Sidebar.Settings.js

@@ -20,7 +20,8 @@ function SidebarSettings( editor ) {
 	const options = {
 		en: 'English',
 		fr: 'Français',
-		zh: '中文'
+		zh: '中文',
+		ja: '日本語',
 	};
 
 	const languageRow = new UIRow();

+ 351 - 0
editor/js/Strings.js

@@ -1051,6 +1051,357 @@ function Strings( config ) {
 			'viewport/info/triangles': '三角形',
 			'viewport/info/rendertime': 'Render time'
 
+		},
+
+		ja: {
+
+			'menubar/file': 'ファイル',
+			'menubar/file/new': '新規',
+			'menubar/file/import': 'インポート',
+			'menubar/file/export/drc': 'エクスポート DRC',
+			'menubar/file/export/glb': 'エクスポート GLB',
+			'menubar/file/export/gltf': 'エクスポート GLTF',
+			'menubar/file/export/obj': 'エクスポート OBJ',
+			'menubar/file/export/ply': 'エクスポート PLY',
+			'menubar/file/export/ply_binary': 'エクスポート PLY(バイナリ)',
+			'menubar/file/export/stl': 'エクスポート STL',
+			'menubar/file/export/stl_binary': 'エクスポート STL(バイナリ)',
+			'menubar/file/export/usdz': 'エクスポート USDZ',
+
+			'menubar/edit': '編集',
+			'menubar/edit/undo': '元に戻す(Ctrl+Z)',
+			'menubar/edit/redo': 'やり直す(Ctrl+Shift+Z)',
+			'menubar/edit/center': '中央揃え',
+			'menubar/edit/clone': '複製',
+			'menubar/edit/delete': '削除(Del)',
+
+			'menubar/add': '追加',
+			'menubar/add/group': 'グループ',
+			'menubar/add/plane': '平面',
+			'menubar/add/box': '直方体',
+			'menubar/add/capsule': 'カプセル',
+			'menubar/add/circle': '円',
+			'menubar/add/cylinder': '円柱',
+			'menubar/add/ring': 'リング',
+			'menubar/add/sphere': '球',
+			'menubar/add/dodecahedron': '十二面体',
+			'menubar/add/icosahedron': '二十面体',
+			'menubar/add/octahedron': '八面体',
+			'menubar/add/tetrahedron': '四面体',
+			'menubar/add/torus': 'トーラス',
+			'menubar/add/tube': 'チューブ',
+			'menubar/add/torusknot': 'ノットトーラス',
+			'menubar/add/lathe': '旋盤形',
+			'menubar/add/sprite': 'スプライト',
+			'menubar/add/pointlight': 'ポイントライト',
+			'menubar/add/spotlight': 'スポットライト',
+			'menubar/add/directionallight': 'ディレクショナルライト',
+			'menubar/add/hemispherelight': 'ヘミスフィアライト',
+			'menubar/add/ambientlight': 'アンビエントライト',
+			'menubar/add/perspectivecamera': '透視投影カメラ',
+			'menubar/add/orthographiccamera': '平行投影カメラ',
+
+			'menubar/status/autosave': '自動保存',
+
+			'menubar/examples': 'サンプル',
+			'menubar/examples/Arkanoid': 'ブロック崩し',
+			'menubar/examples/Camera': 'カメラ',
+			'menubar/examples/Particles': 'パーティクル',
+			'menubar/examples/Pong': 'ピンポン',
+			'menubar/examples/Shaders': 'シェーダー',
+
+			'menubar/view': '表示',
+			'menubar/view/fullscreen': 'フルスクリーン',
+
+			'menubar/help': 'ヘルプ',
+			'menubar/help/source_code': 'ソースコード',
+			'menubar/help/icons': 'アイコンパック',
+			'menubar/help/about': 'Three.js について',
+			'menubar/help/manual': 'マニュアル',
+
+			'sidebar/animations': 'アニメーション',
+			'sidebar/animations/play': '再生',
+			'sidebar/animations/stop': '停止',
+			'sidebar/animations/timescale': 'タイムスケール',
+
+			'sidebar/scene': 'シーン',
+			'sidebar/scene/background': '背景',
+			'sidebar/scene/environment': '環境',
+			'sidebar/scene/fog': '霧',
+
+			'sidebar/properties/object': 'オブジェクト',
+			'sidebar/properties/geometry': 'ジオメトリ',
+			'sidebar/properties/material': 'マテリアル',
+			'sidebar/properties/script': 'スクリプト',
+
+			'sidebar/object/type': 'タイプ',
+			'sidebar/object/new': '新規',
+			'sidebar/object/uuid': 'UUID',
+			'sidebar/object/name': '名前',
+			'sidebar/object/position': '位置',
+			'sidebar/object/rotation': '回転',
+			'sidebar/object/scale': 'スケール',
+			'sidebar/object/fov': 'Fov',
+			'sidebar/object/left': '左',
+			'sidebar/object/right': '右',
+			'sidebar/object/top': '上',
+			'sidebar/object/bottom': '下',
+			'sidebar/object/near': '範囲の開始',
+			'sidebar/object/far': '範囲の終了',
+			'sidebar/object/intensity': '強度',
+			'sidebar/object/color': '色',
+			'sidebar/object/groundcolor': '地面の色',
+			'sidebar/object/distance': '距離',
+			'sidebar/object/angle': '角度',
+			'sidebar/object/penumbra': '半影',
+			'sidebar/object/decay': '減衰',
+			'sidebar/object/shadow': '影',
+			'sidebar/object/shadowBias': '影のバイアス',
+			'sidebar/object/shadowNormalBias': '影のノーマルバイアス',
+			'sidebar/object/shadowRadius': '影の半径',
+			'sidebar/object/cast': 'キャスト',
+			'sidebar/object/receive': 'レシーブ',
+			'sidebar/object/visible': '表示',
+			'sidebar/object/frustumcull': 'フラスタムカリング',
+			'sidebar/object/renderorder': '描画順序',
+			'sidebar/object/userdata': 'ユーザーデータ',
+			'sidebar/object/export': 'JSONをエクスポート',
+
+			'sidebar/geometry/type': 'タイプ',
+			'sidebar/geometry/new': '新規',
+			'sidebar/geometry/uuid': 'UUID',
+			'sidebar/geometry/name': '名前',
+			'sidebar/geometry/bounds': '境界',
+			'sidebar/geometry/show_vertex_normals': '頂点法線を表示',
+			'sidebar/geometry/compute_vertex_normals': '頂点法線を計算',
+			'sidebar/geometry/compute_vertex_tangents': '接線を計算',
+			'sidebar/geometry/center': '中央',
+			'sidebar/geometry/export': 'JSONをエクスポート',
+
+			'sidebar/geometry/box_geometry/width': '幅',
+			'sidebar/geometry/box_geometry/height': '高さ',
+			'sidebar/geometry/box_geometry/depth': '奥行き',
+			'sidebar/geometry/box_geometry/widthseg': '幅の分割数',
+			'sidebar/geometry/box_geometry/heightseg': '高さの分割数',
+			'sidebar/geometry/box_geometry/depthseg': '奥行きの分割数',
+
+			'sidebar/geometry/buffer_geometry/attributes': '属性',
+			'sidebar/geometry/buffer_geometry/index': 'インデックス',
+			'sidebar/geometry/buffer_geometry/morphAttributes': 'モーフ属性',
+			'sidebar/geometry/buffer_geometry/morphRelative': '相対モーフ',
+
+			'sidebar/geometry/capsule_geometry/radius': '半径',
+			'sidebar/geometry/capsule_geometry/length': '長さ',
+			'sidebar/geometry/capsule_geometry/capseg': 'キャップの分割数',
+			'sidebar/geometry/capsule_geometry/radialseg': '円の分割数',
+
+			'sidebar/geometry/circle_geometry/radius': '半径',
+			'sidebar/geometry/circle_geometry/segments': 'セグメント',
+			'sidebar/geometry/circle_geometry/thetastart': '開始角度',
+			'sidebar/geometry/circle_geometry/thetalength': '角度の大きさ',
+
+			'sidebar/geometry/cylinder_geometry/radiustop': '上部の半径',
+			'sidebar/geometry/cylinder_geometry/radiusbottom': '下部の半径',
+			'sidebar/geometry/cylinder_geometry/height': '高さ',
+			'sidebar/geometry/cylinder_geometry/radialsegments': '円の分割数',
+			'sidebar/geometry/cylinder_geometry/heightsegments': '高さの分割数',
+			'sidebar/geometry/cylinder_geometry/openended': 'ふた',
+
+			'sidebar/geometry/extrude_geometry/curveSegments': '分割数',
+			'sidebar/geometry/extrude_geometry/steps': 'ステップ',
+			'sidebar/geometry/extrude_geometry/depth': '深さ',
+			'sidebar/geometry/extrude_geometry/bevelEnabled': 'ベベルを有効にするか?',
+			'sidebar/geometry/extrude_geometry/bevelThickness': 'ベベルの厚さ',
+			'sidebar/geometry/extrude_geometry/bevelSize': 'ベベルのサイズ',
+			'sidebar/geometry/extrude_geometry/bevelOffset': 'ベベルのオフセット',
+			'sidebar/geometry/extrude_geometry/bevelSegments': 'ベベルの分割数',
+			'sidebar/geometry/extrude_geometry/shape': '形状に変換',
+
+			'sidebar/geometry/dodecahedron_geometry/radius': '半径',
+			'sidebar/geometry/dodecahedron_geometry/detail': '詳細',
+
+			'sidebar/geometry/icosahedron_geometry/radius': '半径',
+			'sidebar/geometry/icosahedron_geometry/detail': '詳細',
+
+			'sidebar/geometry/octahedron_geometry/radius': '半径',
+			'sidebar/geometry/octahedron_geometry/detail': '詳細',
+
+			'sidebar/geometry/tetrahedron_geometry/radius': '半径',
+			'sidebar/geometry/tetrahedron_geometry/detail': '詳細',
+
+			'sidebar/geometry/lathe_geometry/segments': '分割数',
+			'sidebar/geometry/lathe_geometry/phistart': '開始角度',
+			'sidebar/geometry/lathe_geometry/philength': '角度の大きさ',
+			'sidebar/geometry/lathe_geometry/points': 'ポイント',
+
+			'sidebar/geometry/plane_geometry/width': '幅',
+			'sidebar/geometry/plane_geometry/height': '高さ',
+			'sidebar/geometry/plane_geometry/widthsegments': '幅の分割数',
+			'sidebar/geometry/plane_geometry/heightsegments': '奥行きの分割数',
+
+			'sidebar/geometry/ring_geometry/innerRadius': '内半径',
+			'sidebar/geometry/ring_geometry/outerRadius': '外半径',
+			'sidebar/geometry/ring_geometry/thetaSegments': '円の分割数',
+			'sidebar/geometry/ring_geometry/phiSegments': 'リングの分割数',
+			'sidebar/geometry/ring_geometry/thetastart': '開始角度',
+			'sidebar/geometry/ring_geometry/thetalength': '角度の大きさ',
+
+			'sidebar/geometry/shape_geometry/curveSegments': '分割数',
+			'sidebar/geometry/shape_geometry/extrude': '押し出し',
+
+			'sidebar/geometry/sphere_geometry/radius': '半径',
+			'sidebar/geometry/sphere_geometry/widthsegments': '円の分割数',
+			'sidebar/geometry/sphere_geometry/heightsegments': 'リングの分割数',
+			'sidebar/geometry/sphere_geometry/phistart': '開始角度',
+			'sidebar/geometry/sphere_geometry/philength': '角度の大きさ',
+			'sidebar/geometry/sphere_geometry/thetastart': '開始角度',
+			'sidebar/geometry/sphere_geometry/thetalength': '角度の大きさ',
+
+			'sidebar/geometry/torus_geometry/radius': '半径',
+			'sidebar/geometry/torus_geometry/tube': 'チューブの太さ',
+			'sidebar/geometry/torus_geometry/radialsegments': '小セグメント数',
+			'sidebar/geometry/torus_geometry/tubularsegments': '大セグメント数',
+			'sidebar/geometry/torus_geometry/arc': '弧',
+
+			'sidebar/geometry/torusKnot_geometry/radius': '半径',
+			'sidebar/geometry/torusKnot_geometry/tube': 'チューブの太さ',
+			'sidebar/geometry/torusKnot_geometry/tubularsegments': '小セグメント数',
+			'sidebar/geometry/torusKnot_geometry/radialsegments': '大セグメント数',
+			'sidebar/geometry/torusKnot_geometry/p': 'P',
+			'sidebar/geometry/torusKnot_geometry/q': 'Q',
+
+			'sidebar/geometry/tube_geometry/path': 'パス',
+			'sidebar/geometry/tube_geometry/radius': '半径',
+			'sidebar/geometry/tube_geometry/tube': 'チューブの太さ',
+			'sidebar/geometry/tube_geometry/tubularsegments': '小セグメント数',
+			'sidebar/geometry/tube_geometry/radialsegments': '大セグメント数',
+			'sidebar/geometry/tube_geometry/closed': '閉じる',
+			'sidebar/geometry/tube_geometry/curvetype': 'カーブタイプ',
+			'sidebar/geometry/tube_geometry/tension': 'テンション',
+
+			'sidebar/material/new': '新規作成',
+			'sidebar/material/copy': 'コピー',
+			'sidebar/material/paste': '貼り付け',
+			'sidebar/material/slot': 'スロット',
+			'sidebar/material/type': 'タイプ',
+			'sidebar/material/uuid': 'UUID',
+			'sidebar/material/name': '名前',
+			'sidebar/material/program': 'プログラム',
+			'sidebar/material/info': '情報',
+			'sidebar/material/vertex': '頂点',
+			'sidebar/material/fragment': 'フラグメント',
+			'sidebar/material/color': '色',
+			'sidebar/material/depthPacking': '深度パッキング',
+			'sidebar/material/roughness': '粗さ',
+			'sidebar/material/metalness': '金属度',
+			'sidebar/material/reflectivity': '反射率',
+			'sidebar/material/emissive': '発光',
+			'sidebar/material/specular': '鏡面',
+			'sidebar/material/shininess': '光沢',
+			'sidebar/material/clearcoat': 'クリアコート',
+			'sidebar/material/clearcoatroughness': 'クリアコートの粗さ',
+			'sidebar/material/iridescence': '遊色効果',
+			'sidebar/material/iridescenceIOR': '遊色効果のIOR',
+			'sidebar/material/iridescenceThicknessMax': '遊色効果の厚さ',
+			'sidebar/material/sheen': '光沢',
+			'sidebar/material/sheenroughness': '光沢の粗さ',
+			'sidebar/material/sheencolor': '光沢の色',
+			'sidebar/material/transmission': '透過',
+			'sidebar/material/attenuationDistance': '減衰距離',
+			'sidebar/material/attenuationColor': '減衰色',
+			'sidebar/material/thickness': '厚さ',
+			'sidebar/material/vertexcolors': '頂点色',
+			'sidebar/material/matcap': 'マットキャップ',
+			'sidebar/material/map': 'マップ',
+			'sidebar/material/alphamap': 'アルファマップ',
+			'sidebar/material/bumpmap': 'バンプマップ',
+			'sidebar/material/normalmap': 'ノーマルマップ',
+			'sidebar/material/clearcoatmap': 'クリアコートマップ',
+			'sidebar/material/clearcoatnormalmap': 'クリアコートノーマルマップ',
+			'sidebar/material/clearcoatroughnessmap': 'クリアコート粗さマップ',
+			'sidebar/material/displacementmap': '変位マップ',
+			'sidebar/material/roughnessmap': '粗さマップ',
+			'sidebar/material/metalnessmap': 'メタリックマップ',
+			'sidebar/material/specularmap': '鏡面マップ',
+			'sidebar/material/iridescencemap': '遊色効果マップ',
+			'sidebar/material/iridescencethicknessmap': '遊色効果の厚さマップ',
+			'sidebar/material/sheencolormap': '光沢色マップ',
+			'sidebar/material/sheenroughnessmap': '光沢粗さマップ',
+			'sidebar/material/envmap': '環境マップ',
+			'sidebar/material/lightmap': 'ライトマップ',
+			'sidebar/material/aomap': 'AOマップ',
+			'sidebar/material/emissivemap': '発光マップ',
+			'sidebar/material/gradientmap': 'グラデーションマップ',
+			'sidebar/material/transmissionmap': '透過マップ',
+			'sidebar/material/thicknessmap': '厚さマップ',
+			'sidebar/material/side': '側面',
+			'sidebar/material/size': 'サイズ',
+			'sidebar/material/sizeAttenuation': 'サイズ減衰',
+			'sidebar/material/flatShading': 'フラットシェーディング',
+			'sidebar/material/blending': 'ブレンディング',
+			'sidebar/material/opacity': '不透明度',
+			'sidebar/material/transparent': '透明',
+			'sidebar/material/forcesinglepass': 'シングルパスを強制',
+			'sidebar/material/alphatest': 'アルファテスト',
+			'sidebar/material/depthtest': '深度テスト',
+			'sidebar/material/depthwrite': '深度書き込み',
+			'sidebar/material/wireframe': 'ワイヤーフレーム',
+			'sidebar/material/userdata': 'ユーザーデータ',
+			'sidebar/material/export': 'JSONをエクスポート',
+
+			'sidebar/script/new': '新規',
+			'sidebar/script/edit': '編集',
+			'sidebar/script/remove': '削除',
+
+			'sidebar/project': 'プロジェクト',
+			'sidebar/project/antialias': 'アンチエイリアス',
+			'sidebar/project/shadows': 'シャドウ',
+			'sidebar/project/toneMapping': 'トーンマッピング',
+			'sidebar/project/materials': 'マテリアル',
+			'sidebar/project/Assign': '割り当て',
+
+			'sidebar/project/app': 'アプリ',
+			'sidebar/project/app/play': '再生',
+			'sidebar/project/app/stop': '停止',
+			'sidebar/project/app/title': 'タイトル',
+			'sidebar/project/app/editable': '編集可能',
+			'sidebar/project/app/publish': 'アプリファイルとして保存',
+
+			'sidebar/project/image': '画像',
+			'sidebar/project/video': '動画',
+
+			'sidebar/project/shading': 'シェーディング',
+			'sidebar/project/resolution': '解像度',
+			'sidebar/project/duration': '長さ',
+			'sidebar/project/render': 'レンダー',
+
+			'sidebar/settings': '設定',
+			'sidebar/settings/language': '言語',
+
+			'sidebar/settings/shortcuts': 'ショートカット',
+			'sidebar/settings/shortcuts/translate': '移動',
+			'sidebar/settings/shortcuts/rotate': '回転',
+			'sidebar/settings/shortcuts/scale': 'スケール',
+			'sidebar/settings/shortcuts/undo': '元に戻す',
+			'sidebar/settings/shortcuts/focus': 'フォーカス',
+
+			'sidebar/history': '履歴',
+			'sidebar/history/clear': 'クリア',
+			'sidebar/history/persistent': '永続的',
+
+			'toolbar/translate': '移動',
+			'toolbar/rotate': '回転',
+			'toolbar/scale': 'スケール',
+			'toolbar/local': 'ローカル',
+
+			'viewport/controls/grid': 'グリッド',
+			'viewport/controls/helpers': 'オーバーレイ表示',
+
+			'viewport/info/objects': 'オブジェクト',
+			'viewport/info/vertices': '頂点',
+			'viewport/info/triangles': '三角形',
+			'viewport/info/rendertime': 'レンダリング時間'
+
 		}
 
 	};

+ 1 - 1
editor/js/Viewport.ViewHelper.js

@@ -1,6 +1,6 @@
 import { UIPanel } from './libs/ui.js';
 
-import { ViewHelper as ViewHelperBase } from '../../examples/jsm/helpers/ViewHelper.js';
+import { ViewHelper as ViewHelperBase } from 'three/addons/helpers/ViewHelper.js';
 
 class ViewHelper extends ViewHelperBase {
 

+ 8 - 1
examples/files.json

@@ -333,6 +333,7 @@
 		"webgpu_cubemap_dynamic",
 		"webgpu_cubemap_mix",
 		"webgpu_custom_fog",
+		"webgpu_custom_fog_background",
 		"webgpu_depth_texture",
 		"webgpu_equirectangular",
 		"webgpu_instance_mesh",
@@ -361,6 +362,7 @@
 		"webgpu_portal",
 		"webgpu_reflection",
 		"webgpu_rtt",
+		"webgpu_materials_texture_partialupdate",
 		"webgpu_sandbox",
 		"webgpu_shadertoy",
 		"webgpu_shadowmap",
@@ -372,12 +374,17 @@
 		"webgpu_tsl_editor",
 		"webgpu_tsl_transpiler",
 		"webgpu_video_panorama",
+		"webgpu_pmrem_cubemap",
+		"webgpu_pmrem_equirectangular",
+		"webgpu_pmrem_scene",
 		"webgpu_postprocessing_afterimage",
 		"webgpu_postprocessing_anamorphic",
 		"webgpu_mirror",
 		"webgpu_multisampled_renderbuffers",
 		"webgpu_materials_texture_anisotropy",
-		"webgpu_storage_buffer"
+		"webgpu_storage_buffer",
+		"webgpu_mesh_batch",
+		"webgpu_instancing_morph"
 	],
 	"webaudio": [
 		"webaudio_orientation",

+ 3 - 3
examples/jsm/controls/TransformControls.js

@@ -178,8 +178,8 @@ class TransformControls extends Object3D {
 
 	}
 
-	// updateMatrixWorld  updates key transformation variables
-	updateMatrixWorld() {
+	// updateMatrixWorld updates key transformation variables
+	updateMatrixWorld( force ) {
 
 		if ( this.object !== undefined ) {
 
@@ -215,7 +215,7 @@ class TransformControls extends Object3D {
 
 		}
 
-		super.updateMatrixWorld( this );
+		super.updateMatrixWorld( force );
 
 	}
 

+ 21 - 4
examples/jsm/exporters/GLTFExporter.js

@@ -982,7 +982,17 @@ class GLTFWriter {
 
 		}
 
-		const byteLength = getPaddedBufferSize( count * attribute.itemSize * componentSize );
+		let byteStride = attribute.itemSize * componentSize;
+
+		if ( target === WEBGL_CONSTANTS.ARRAY_BUFFER ) {
+
+			// Each element of a vertex attribute MUST be aligned to 4-byte boundaries
+			// inside a bufferView
+			byteStride = Math.ceil( byteStride / 4 ) * 4;
+
+		}
+
+		const byteLength = getPaddedBufferSize( count * byteStride );
 		const dataView = new DataView( new ArrayBuffer( byteLength ) );
 		let offset = 0;
 
@@ -1047,6 +1057,12 @@ class GLTFWriter {
 
 			}
 
+			if ( ( offset % byteStride ) !== 0 ) {
+
+				offset += byteStride - ( offset % byteStride );
+
+			}
+
 		}
 
 		const bufferViewDef = {
@@ -1062,7 +1078,7 @@ class GLTFWriter {
 		if ( target === WEBGL_CONSTANTS.ARRAY_BUFFER ) {
 
 			// Only define byteStride for vertex attributes.
-			bufferViewDef.byteStride = attribute.itemSize * componentSize;
+			bufferViewDef.byteStride = byteStride;
 
 		}
 
@@ -1290,13 +1306,14 @@ class GLTFWriter {
 
 				if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||
 					( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||
-					( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {
+					( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ||
+					( typeof OffscreenCanvas !== 'undefined' && image instanceof OffscreenCanvas ) ) {
 
 					ctx.drawImage( image, 0, 0, canvas.width, canvas.height );
 
 				} else {
 
-					throw new Error( 'THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement or ImageBitmap.' );
+					throw new Error( 'THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement, ImageBitmap or OffscreenCanvas.' );
 
 				}
 

+ 15 - 0
examples/jsm/exporters/USDZExporter.js

@@ -409,6 +409,21 @@ function buildPrimvars( attributes ) {
 
 	}
 
+	// vertex colors
+
+	const colorAttribute = attributes.color;
+
+	if ( colorAttribute !== undefined ) {
+
+		const count = colorAttribute.count;
+
+		string += `
+	color3f[] primvars:displayColor = [${buildVector3Array( colorAttribute, count )}] (
+		interpolation = "vertex"
+		)`;
+
+	}
+
 	return string;
 
 }

+ 10 - 2
examples/jsm/geometries/TextGeometry.js

@@ -5,7 +5,7 @@
  *  font: <THREE.Font>, // font
  *
  *  size: <float>, // size of the text
- *  height: <float>, // thickness to extrude text
+ *  depth: <float>, // thickness to extrude text
  *  curveSegments: <int>, // number of points on the curves
  *
  *  bevelEnabled: <bool>, // turn on bevel
@@ -35,7 +35,15 @@ class TextGeometry extends ExtrudeGeometry {
 
 			// translate parameters to ExtrudeGeometry API
 
-			parameters.depth = parameters.height !== undefined ? parameters.height : 50;
+			if ( parameters.depth === undefined && parameters.height !== undefined ) {
+
+				console.warn( 'THREE.TextGeometry: .height is now depreciated. Please use .depth instead' ); // @deprecated, r163
+
+			}
+
+			parameters.depth = parameters.depth !== undefined ?
+				parameters.depth : parameters.height !== undefined ?
+					parameters.height : 50;
 
 			// defaults
 

+ 7 - 9
examples/jsm/interactive/HTMLMesh.js

@@ -241,6 +241,13 @@ function html2canvas( element ) {
 
 	function drawElement( element, style ) {
 
+		// Do not render invisible elements, comments and scripts.
+		if ( element.nodeType === Node.COMMENT_NODE || element.nodeName === 'SCRIPT' || ( element.style && element.style.display === 'none' ) ) {
+
+			return;
+
+		}
+
 		let x = 0, y = 0, width = 0, height = 0;
 
 		if ( element.nodeType === Node.TEXT_NODE ) {
@@ -258,14 +265,9 @@ function html2canvas( element ) {
 
 			drawText( style, x, y, element.nodeValue.trim() );
 
-		} else if ( element.nodeType === Node.COMMENT_NODE ) {
-
-			return;
-
 		} else if ( element instanceof HTMLCanvasElement ) {
 
 			// Canvas element
-			if ( element.style.display === 'none' ) return;
 
 			const rect = element.getBoundingClientRect();
 
@@ -280,8 +282,6 @@ function html2canvas( element ) {
 
 		} else if ( element instanceof HTMLImageElement ) {
 
-			if ( element.style.display === 'none' ) return;
-
 			const rect = element.getBoundingClientRect();
 
 			x = rect.left - offset.left - 0.5;
@@ -293,8 +293,6 @@ function html2canvas( element ) {
 
 		} else {
 
-			if ( element.style.display === 'none' ) return;
-
 			const rect = element.getBoundingClientRect();
 
 			x = rect.left - offset.left - 0.5;

File diff suppressed because it is too large
+ 338 - 192
examples/jsm/libs/fflate.module.js


+ 0 - 2
examples/jsm/lines/LineMaterial.js

@@ -603,12 +603,10 @@ class LineMaterial extends ShaderMaterial {
 		if ( value === true ) {
 
 			this.defines.USE_ALPHA_TO_COVERAGE = '';
-			this.extensions.derivatives = true;
 
 		} else {
 
 			delete this.defines.USE_ALPHA_TO_COVERAGE;
-			this.extensions.derivatives = false;
 
 		}
 

+ 2 - 0
examples/jsm/loaders/3MFLoader.js

@@ -144,6 +144,8 @@ class ThreeMFLoader extends Loader {
 
 			}
 
+			if ( relsName === undefined ) throw new Error( 'THREE.ThreeMFLoader: Cannot find relationship file `rels` in 3MF archive.' );
+
 			//
 
 			const relsView = zip[ relsName ];

+ 89 - 19
examples/jsm/loaders/EXRLoader.js

@@ -1886,10 +1886,10 @@ class EXRLoader extends DataTextureLoader {
 
 		function parseBox2i( dataView, offset ) {
 
-			const xMin = parseUint32( dataView, offset );
-			const yMin = parseUint32( dataView, offset );
-			const xMax = parseUint32( dataView, offset );
-			const yMax = parseUint32( dataView, offset );
+			const xMin = parseInt32( dataView, offset );
+			const yMin = parseInt32( dataView, offset );
+			const xMax = parseInt32( dataView, offset );
+			const yMax = parseInt32( dataView, offset );
 
 			return { xMin: xMin, yMin: yMin, xMax: xMax, yMax: yMax };
 
@@ -1898,7 +1898,8 @@ class EXRLoader extends DataTextureLoader {
 		function parseLineOrder( dataView, offset ) {
 
 			const lineOrders = [
-				'INCREASING_Y'
+				'INCREASING_Y',
+				'DECREASING_Y'
 			];
 
 			const lineOrder = parseUint8( dataView, offset );
@@ -2066,10 +2067,12 @@ class EXRLoader extends DataTextureLoader {
 				width: EXRHeader.dataWindow.xMax - EXRHeader.dataWindow.xMin + 1,
 				height: EXRHeader.dataWindow.yMax - EXRHeader.dataWindow.yMin + 1,
 				channels: EXRHeader.channels.length,
+				channelLineOffsets: {},
+				scanOrder: null,
 				bytesPerLine: null,
 				lines: null,
 				inputSize: null,
-				type: EXRHeader.channels[ 0 ].pixelType,
+				type: null,
 				uncompress: null,
 				getter: null,
 				format: null,
@@ -2125,6 +2128,43 @@ class EXRLoader extends DataTextureLoader {
 
 			EXRDecoder.scanlineBlockSize = EXRDecoder.lines;
 
+			const channels = {};
+			for ( const channel of EXRHeader.channels ) {
+
+				switch ( channel.name ) {
+
+					case 'Y':
+					case 'R':
+					case 'G':
+					case 'B':
+					case 'A':
+						channels[ channel.name ] = true;
+						EXRDecoder.type = channel.pixelType;
+
+				}
+
+			}
+
+			// RGB images will be converted to RGBA format, preventing software emulation in select devices.
+			let fillAlpha = false;
+
+			if ( channels.R && channels.G && channels.B ) {
+
+				fillAlpha = ! channels.A;
+				EXRDecoder.outputChannels = 4;
+				EXRDecoder.decodeChannels = { R: 0, G: 1, B: 2, A: 3 };
+
+			} else if ( channels.Y ) {
+
+				EXRDecoder.outputChannels = 1;
+				EXRDecoder.decodeChannels = { Y: 0 };
+
+			} else {
+
+				throw new Error( 'EXRLoader.parse: file contains unsupported data channels.' );
+
+			}
+
 			if ( EXRDecoder.type == 1 ) {
 
 				// half
@@ -2164,15 +2204,13 @@ class EXRLoader extends DataTextureLoader {
 
 			}
 
-			EXRDecoder.blockCount = ( EXRHeader.dataWindow.yMax + 1 ) / EXRDecoder.scanlineBlockSize;
+			EXRDecoder.blockCount = EXRDecoder.height / EXRDecoder.scanlineBlockSize;
 
 			for ( let i = 0; i < EXRDecoder.blockCount; i ++ )
 				parseInt64( dataView, offset ); // scanlineOffset
 
 			// we should be passed the scanline offset table, ready to start reading pixel data.
 
-			// RGB images will be converted to RGBA format, preventing software emulation in select devices.
-			EXRDecoder.outputChannels = ( ( EXRDecoder.channels == 3 ) ? 4 : EXRDecoder.channels );
 			const size = EXRDecoder.width * EXRDecoder.height * EXRDecoder.outputChannels;
 
 			switch ( outputType ) {
@@ -2181,7 +2219,7 @@ class EXRLoader extends DataTextureLoader {
 					EXRDecoder.byteArray = new Float32Array( size );
 
 					// Fill initially with 1s for the alpha value if the texture is not RGBA, RGB values will be overwritten
-					if ( EXRDecoder.channels < EXRDecoder.outputChannels )
+					if ( fillAlpha )
 						EXRDecoder.byteArray.fill( 1, 0, size );
 
 					break;
@@ -2189,7 +2227,7 @@ class EXRLoader extends DataTextureLoader {
 				case HalfFloatType:
 					EXRDecoder.byteArray = new Uint16Array( size );
 
-					if ( EXRDecoder.channels < EXRDecoder.outputChannels )
+					if ( fillAlpha )
 						EXRDecoder.byteArray.fill( 0x3C00, 0, size ); // Uint16Array holds half float data, 0x3C00 is 1
 
 					break;
@@ -2200,7 +2238,31 @@ class EXRLoader extends DataTextureLoader {
 
 			}
 
-			EXRDecoder.bytesPerLine = EXRDecoder.width * EXRDecoder.inputSize * EXRDecoder.channels;
+			let byteOffset = 0;
+			for ( const channel of EXRHeader.channels ) {
+
+				if ( EXRDecoder.decodeChannels[ channel.name ] !== undefined ) {
+
+					EXRDecoder.channelLineOffsets[ channel.name ] = byteOffset * EXRDecoder.width;
+
+				}
+
+				byteOffset += channel.pixelType * 2;
+
+			}
+
+			EXRDecoder.bytesPerLine = EXRDecoder.width * byteOffset;
+			EXRDecoder.outLineWidth = EXRDecoder.width * EXRDecoder.outputChannels;
+
+			if ( EXRHeader.lineOrder === 'INCREASING_Y' ) {
+
+				EXRDecoder.scanOrder = ( y ) => y;
+
+			} else {
+
+				EXRDecoder.scanOrder = ( y ) => EXRDecoder.height - 1 - y;
+
+			}
 
 			if ( EXRDecoder.outputChannels == 4 ) {
 
@@ -2231,11 +2293,10 @@ class EXRLoader extends DataTextureLoader {
 		const EXRDecoder = setupDecoder( EXRHeader, bufferDataView, uInt8Array, offset, this.type );
 
 		const tmpOffset = { value: 0 };
-		const channelOffsets = { R: 0, G: 1, B: 2, A: 3, Y: 0 };
 
 		for ( let scanlineBlockIdx = 0; scanlineBlockIdx < EXRDecoder.height / EXRDecoder.scanlineBlockSize; scanlineBlockIdx ++ ) {
 
-			const line = parseUint32( bufferDataView, offset ); // line_no
+			const line = parseInt32( bufferDataView, offset ) - EXRHeader.dataWindow.yMin; // line_no
 			EXRDecoder.size = parseUint32( bufferDataView, offset ); // data_len
 			EXRDecoder.lines = ( ( line + EXRDecoder.scanlineBlockSize > EXRDecoder.height ) ? ( EXRDecoder.height - line ) : EXRDecoder.scanlineBlockSize );
 
@@ -2246,17 +2307,26 @@ class EXRLoader extends DataTextureLoader {
 
 			for ( let line_y = 0; line_y < EXRDecoder.scanlineBlockSize; line_y ++ ) {
 
-				const true_y = line_y + scanlineBlockIdx * EXRDecoder.scanlineBlockSize;
-				if ( true_y >= EXRDecoder.height ) break;
+				const scan_y = scanlineBlockIdx * EXRDecoder.scanlineBlockSize;
+				const true_y = line_y + EXRDecoder.scanOrder( scan_y );
+				if ( true_y >= EXRDecoder.height ) continue;
+
+				const lineOffset = line_y * EXRDecoder.bytesPerLine;
+				const outLineOffset = ( EXRDecoder.height - 1 - true_y ) * EXRDecoder.outLineWidth;
 
 				for ( let channelID = 0; channelID < EXRDecoder.channels; channelID ++ ) {
 
-					const cOff = channelOffsets[ EXRHeader.channels[ channelID ].name ];
+					const name = EXRHeader.channels[ channelID ].name;
+					const lOff = EXRDecoder.channelLineOffsets[ name ];
+					const cOff = EXRDecoder.decodeChannels[ name ];
+
+					if ( cOff === undefined ) continue;
+
+					tmpOffset.value = lineOffset + lOff;
 
 					for ( let x = 0; x < EXRDecoder.width; x ++ ) {
 
-						tmpOffset.value = ( line_y * ( EXRDecoder.channels * EXRDecoder.width ) + channelID * EXRDecoder.width + x ) * EXRDecoder.inputSize;
-						const outIndex = ( EXRDecoder.height - 1 - true_y ) * ( EXRDecoder.width * EXRDecoder.outputChannels ) + x * EXRDecoder.outputChannels + cOff;
+						const outIndex = outLineOffset + x * EXRDecoder.outputChannels + cOff;
 						EXRDecoder.byteArray[ outIndex ] = EXRDecoder.getter( viewer, tmpOffset );
 
 					}

+ 6 - 0
examples/jsm/loaders/GLTFLoader.js

@@ -2627,6 +2627,12 @@ class GLTFParser {
 
 			} ) ).then( function () {
 
+				for ( const scene of result.scenes ) {
+
+					scene.updateMatrixWorld();
+
+				}
+
 				onLoad( result );
 
 			} );

+ 2 - 6
examples/jsm/loaders/KTX2Loader.js

@@ -160,12 +160,8 @@ class KTX2Loader extends Loader {
 					|| renderer.extensions.has( 'WEBKIT_WEBGL_compressed_texture_pvrtc' )
 			};
 
-			if ( renderer.capabilities.isWebGL2 ) {
-
-				// https://github.com/mrdoob/three.js/pull/22928
-				this.workerConfig.etc1Supported = false;
-
-			}
+			// https://github.com/mrdoob/three.js/pull/22928
+			this.workerConfig.etc1Supported = false;
 
 		}
 

+ 0 - 15
examples/jsm/loaders/LUT3dlLoader.js

@@ -3,7 +3,6 @@
 
 import {
 	ClampToEdgeWrapping,
-	DataTexture,
 	Data3DTexture,
 	FileLoader,
 	FloatType,
@@ -144,19 +143,6 @@ export class LUT3dlLoader extends Loader {
 
 		}
 
-		const texture = new DataTexture();
-		texture.image.data = data;
-		texture.image.width = size;
-		texture.image.height = size * size;
-		texture.format = RGBAFormat;
-		texture.type = this.type;
-		texture.magFilter = LinearFilter;
-		texture.minFilter = LinearFilter;
-		texture.wrapS = ClampToEdgeWrapping;
-		texture.wrapT = ClampToEdgeWrapping;
-		texture.generateMipmaps = false;
-		texture.needsUpdate = true;
-
 		const texture3D = new Data3DTexture();
 		texture3D.image.data = data;
 		texture3D.image.width = size;
@@ -174,7 +160,6 @@ export class LUT3dlLoader extends Loader {
 
 		return {
 			size,
-			texture,
 			texture3D,
 		};
 

+ 0 - 14
examples/jsm/loaders/LUTCubeLoader.js

@@ -2,7 +2,6 @@
 
 import {
 	ClampToEdgeWrapping,
-	DataTexture,
 	Data3DTexture,
 	FileLoader,
 	FloatType,
@@ -127,18 +126,6 @@ export class LUTCubeLoader extends Loader {
 
 		}
 
-		const texture = new DataTexture();
-		texture.image.data = data;
-		texture.image.width = size;
-		texture.image.height = size * size;
-		texture.type = this.type;
-		texture.magFilter = LinearFilter;
-		texture.minFilter = LinearFilter;
-		texture.wrapS = ClampToEdgeWrapping;
-		texture.wrapT = ClampToEdgeWrapping;
-		texture.generateMipmaps = false;
-		texture.needsUpdate = true;
-
 		const texture3D = new Data3DTexture();
 		texture3D.image.data = data;
 		texture3D.image.width = size;
@@ -158,7 +145,6 @@ export class LUTCubeLoader extends Loader {
 			size,
 			domainMin,
 			domainMax,
-			texture,
 			texture3D,
 		};
 

+ 0 - 14
examples/jsm/loaders/LUTImageLoader.js

@@ -1,7 +1,6 @@
 import {
 	Loader,
 	TextureLoader,
-	DataTexture,
 	Data3DTexture,
 	RGBAFormat,
 	UnsignedByteType,
@@ -124,18 +123,6 @@ export class LUTImageLoader extends Loader {
 	parse( dataArray, size ) {
 
 		const data = new Uint8Array( dataArray );
-		const texture = new DataTexture();
-		texture.image.data = data;
-		texture.image.width = size;
-		texture.image.height = size * size;
-		texture.format = RGBAFormat;
-		texture.type = UnsignedByteType;
-		texture.magFilter = LinearFilter;
-		texture.minFilter = LinearFilter;
-		texture.wrapS = ClampToEdgeWrapping;
-		texture.wrapT = ClampToEdgeWrapping;
-		texture.generateMipmaps = false;
-		texture.needsUpdate = true;
 
 		const texture3D = new Data3DTexture();
 		texture3D.image.data = data;
@@ -154,7 +141,6 @@ export class LUTImageLoader extends Loader {
 
 		return {
 			size,
-			texture,
 			texture3D,
 		};
 

+ 16 - 0
examples/jsm/loaders/RGBMLoader.js

@@ -36,6 +36,12 @@ class RGBMLoader extends DataTextureLoader {
 
 		const texture = new CubeTexture();
 
+		for ( let i = 0; i < 6; i ++ ) {
+
+			texture.images[ i ] = undefined;
+
+		}
+
 		let loaded = 0;
 
 		const scope = this;
@@ -75,6 +81,16 @@ class RGBMLoader extends DataTextureLoader {
 
 	}
 
+	loadCubemapAsync( urls, onProgress ) {
+
+		return new Promise( ( resolve, reject ) => {
+
+			this.loadCubemap( urls, resolve, onProgress, reject );
+
+		} );
+
+	}
+
 	parse( buffer ) {
 
 		const img = UPNG.decode( buffer );

+ 0 - 6
examples/jsm/misc/GPUComputationRenderer.js

@@ -171,12 +171,6 @@ class GPUComputationRenderer {
 
 		this.init = function () {
 
-			if ( renderer.capabilities.isWebGL2 === false && renderer.extensions.has( 'OES_texture_float' ) === false ) {
-
-				return 'No OES_texture_float support for float textures.';
-
-			}
-
 			if ( renderer.capabilities.maxVertexTextures === 0 ) {
 
 				return 'No support for vertex shader textures.';

+ 6 - 1
examples/jsm/nodes/Nodes.js

@@ -64,7 +64,6 @@ export { default as RemapNode, remap, remapClamp } from './utils/RemapNode.js';
 export { default as RotateUVNode, rotateUV } from './utils/RotateUVNode.js';
 export { default as RotateNode, rotate } from './utils/RotateNode.js';
 export { default as SetNode } from './utils/SetNode.js';
-export { default as SpecularMIPLevelNode, specularMIPLevel } from './utils/SpecularMIPLevelNode.js';
 export { default as SplitNode } from './utils/SplitNode.js';
 export { default as SpriteSheetUVNode, spritesheetUV } from './utils/SpriteSheetUVNode.js';
 export { default as StorageArrayElementNode } from './utils/StorageArrayElementNode.js';
@@ -85,8 +84,10 @@ export { default as CameraNode, cameraProjectionMatrix, cameraProjectionMatrixIn
 export { default as VertexColorNode, vertexColor } from './accessors/VertexColorNode.js';
 export { default as CubeTextureNode, cubeTexture } from './accessors/CubeTextureNode.js';
 export { default as InstanceNode, instance } from './accessors/InstanceNode.js';
+export { default as BatchNode, batch } from './accessors/BatchNode.js';
 export { default as MaterialNode, materialAlphaTest, materialColor, materialShininess, materialEmissive, materialOpacity, materialSpecularColor, materialSpecularStrength, materialReflectivity, materialRoughness, materialMetalness, materialNormal, materialClearcoat, materialClearcoatRoughness, materialClearcoatNormal, materialRotation, materialSheen, materialSheenRoughness, materialIridescence, materialIridescenceIOR, materialIridescenceThickness, materialLineScale, materialLineDashSize, materialLineGapSize, materialLineWidth, materialLineDashOffset, materialPointWidth } from './accessors/MaterialNode.js';
 export { default as MaterialReferenceNode, materialReference } from './accessors/MaterialReferenceNode.js';
+export { default as RendererReferenceNode, rendererReference } from './accessors/RendererReferenceNode.js';
 export { default as MorphNode, morphReference } from './accessors/MorphNode.js';
 export { default as TextureBicubicNode, textureBicubic } from './accessors/TextureBicubicNode.js';
 export { default as ModelNode, modelDirection, modelViewMatrix, modelNormalMatrix, modelWorldMatrix, modelPosition, modelViewPosition, modelScale } from './accessors/ModelNode.js';
@@ -160,6 +161,10 @@ export { default as EnvironmentNode } from './lighting/EnvironmentNode.js';
 export { default as AONode } from './lighting/AONode.js';
 export { default as AnalyticLightNode } from './lighting/AnalyticLightNode.js';
 
+// pmrem
+export { default as PMREMNode, pmremTexture } from './pmrem/PMREMNode.js';
+export * as PMREMUtils from './pmrem/PMREMUtils.js';
+
 // procedural
 export { default as CheckerNode, checker } from './procedural/CheckerNode.js';
 

+ 78 - 0
examples/jsm/nodes/accessors/BatchNode.js

@@ -0,0 +1,78 @@
+import Node, { addNodeClass } from '../core/Node.js';
+import { normalLocal } from './NormalNode.js';
+import { positionLocal } from './PositionNode.js';
+import { nodeProxy, vec3, mat3, mat4, int, ivec2, float } from '../shadernode/ShaderNode.js';
+import { textureLoad } from './TextureNode.js';
+import { textureSize } from './TextureSizeNode.js';
+import { attribute } from '../core/AttributeNode.js';
+import { tangentLocal } from './TangentNode.js';
+
+class BatchNode extends Node {
+
+	constructor( batchMesh ) {
+
+		super( 'void' );
+
+		this.batchMesh = batchMesh;
+
+
+		this.instanceColorNode = null;
+
+		this.batchingIdNode = null;
+
+	}
+
+	setup( builder ) {
+
+		// POSITION
+
+		if ( this.batchingIdNode === null ) {
+
+			this.batchingIdNode = attribute( 'batchId' );
+
+		}
+
+		const matriceTexture = this.batchMesh._matricesTexture;
+
+		const size = textureSize( textureLoad( matriceTexture ), 0 );
+		const j = float( int( this.batchingIdNode ) ).mul( 4 ).toVar();
+
+		const x = int( j.mod( size ) );
+		const y = int( j ).div( int( size ) );
+		const batchingMatrix = mat4(
+			textureLoad( matriceTexture, ivec2( x, y ) ),
+			textureLoad( matriceTexture, ivec2( x.add( 1 ), y ) ),
+			textureLoad( matriceTexture, ivec2( x.add( 2 ), y ) ),
+			textureLoad( matriceTexture, ivec2( x.add( 3 ), y ) )
+		);
+
+
+		const bm = mat3(
+			batchingMatrix[ 0 ].xyz,
+			batchingMatrix[ 1 ].xyz,
+			batchingMatrix[ 2 ].xyz
+		 );
+
+		positionLocal.assign( batchingMatrix.mul( positionLocal ) );
+
+		const transformedNormal = normalLocal.div( vec3( bm[ 0 ].dot( bm[ 0 ] ), bm[ 1 ].dot( bm[ 1 ] ), bm[ 2 ].dot( bm[ 2 ] ) ) );
+
+		const batchingNormal = bm.mul( transformedNormal ).xyz;
+
+		normalLocal.assign( batchingNormal );
+
+		if ( builder.hasGeometryAttribute( 'tangent' ) ) {
+
+			tangentLocal.mulAssign( bm );
+
+		}
+
+	}
+
+}
+
+export default BatchNode;
+
+export const batch = nodeProxy( BatchNode );
+
+addNodeClass( 'batch', BatchNode );

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