@needle-tools/three 0.145.4 → 0.146.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +32586 -35951
  3. package/build/three.js +32600 -35965
  4. package/build/three.min.js +6 -7
  5. package/build/three.module.js +1547 -1154
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +49 -66
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +70 -134
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +138 -405
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -54
  14. package/examples/js/controls/FlyControls.js +29 -55
  15. package/examples/js/controls/OrbitControls.js +85 -95
  16. package/examples/js/controls/PointerLockControls.js +5 -14
  17. package/examples/js/controls/TrackballControls.js +33 -86
  18. package/examples/js/controls/TransformControls.js +84 -169
  19. package/examples/js/csm/CSM.js +4 -39
  20. package/examples/js/csm/CSMFrustum.js +3 -9
  21. package/examples/js/csm/CSMHelper.js +24 -4
  22. package/examples/js/csm/CSMShader.js +2 -6
  23. package/examples/js/curves/CurveExtras.js +27 -27
  24. package/examples/js/curves/NURBSCurve.js +4 -16
  25. package/examples/js/curves/NURBSSurface.js +3 -9
  26. package/examples/js/curves/NURBSUtils.js +8 -45
  27. package/examples/js/effects/AnaglyphEffect.js +4 -18
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +26 -30
  30. package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
  31. package/examples/js/effects/PeppersGhostEffect.js +12 -39
  32. package/examples/js/effects/StereoEffect.js +0 -4
  33. package/examples/js/environments/RoomEnvironment.js +12 -10
  34. package/examples/js/exporters/ColladaExporter.js +48 -65
  35. package/examples/js/exporters/DRACOExporter.js +22 -22
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +143 -261
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +42 -33
  40. package/examples/js/exporters/PLYExporter.js +38 -33
  41. package/examples/js/exporters/STLExporter.js +5 -7
  42. package/examples/js/exporters/USDZExporter.js +110 -25
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +11 -6
  45. package/examples/js/geometries/DecalGeometry.js +53 -20
  46. package/examples/js/geometries/LightningStrike.js +54 -67
  47. package/examples/js/geometries/ParametricGeometries.js +8 -7
  48. package/examples/js/geometries/ParametricGeometry.js +25 -12
  49. package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
  50. package/examples/js/geometries/TeapotGeometry.js +54 -50
  51. package/examples/js/geometries/TextGeometry.js +6 -4
  52. package/examples/js/helpers/LightProbeHelper.js +1 -2
  53. package/examples/js/helpers/OctreeHelper.js +22 -20
  54. package/examples/js/helpers/PositionalAudioHelper.js +8 -6
  55. package/examples/js/helpers/RectAreaLightHelper.js +6 -7
  56. package/examples/js/helpers/VertexNormalsHelper.js +15 -13
  57. package/examples/js/helpers/VertexTangentsHelper.js +15 -9
  58. package/examples/js/helpers/ViewHelper.js +31 -16
  59. package/examples/js/interactive/HTMLMesh.js +22 -33
  60. package/examples/js/interactive/InteractiveGroup.js +6 -12
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +0 -8
  63. package/examples/js/lights/LightProbeGenerator.js +32 -39
  64. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  65. package/examples/js/lines/LineGeometry.js +3 -5
  66. package/examples/js/lines/LineMaterial.js +4 -11
  67. package/examples/js/lines/LineSegments2.js +38 -89
  68. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  69. package/examples/js/lines/Wireframe.js +2 -7
  70. package/examples/js/lines/WireframeGeometry2.js +3 -1
  71. package/examples/js/loaders/3DMLoader.js +58 -155
  72. package/examples/js/loaders/3MFLoader.js +72 -106
  73. package/examples/js/loaders/AMFLoader.js +0 -25
  74. package/examples/js/loaders/BVHLoader.js +44 -43
  75. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  76. package/examples/js/loaders/ColladaLoader.js +201 -359
  77. package/examples/js/loaders/DDSLoader.js +24 -25
  78. package/examples/js/loaders/DRACOLoader.js +29 -66
  79. package/examples/js/loaders/EXRLoader.js +67 -164
  80. package/examples/js/loaders/FBXLoader.js +286 -441
  81. package/examples/js/loaders/FontLoader.js +6 -15
  82. package/examples/js/loaders/GCodeLoader.js +15 -16
  83. package/examples/js/loaders/GLTFLoader.js +354 -405
  84. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
  85. package/examples/js/loaders/KMZLoader.js +3 -7
  86. package/examples/js/loaders/KTXLoader.js +12 -30
  87. package/examples/js/loaders/LDrawLoader.js +178 -289
  88. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  89. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  90. package/examples/js/loaders/LWOLoader.js +59 -124
  91. package/examples/js/loaders/LogLuvLoader.js +27 -77
  92. package/examples/js/loaders/LottieLoader.js +4 -4
  93. package/examples/js/loaders/MD2Loader.js +26 -27
  94. package/examples/js/loaders/MDDLoader.js +6 -10
  95. package/examples/js/loaders/MMDLoader.js +180 -189
  96. package/examples/js/loaders/MTLLoader.js +18 -47
  97. package/examples/js/loaders/MaterialXLoader.js +392 -0
  98. package/examples/js/loaders/NRRDLoader.js +44 -84
  99. package/examples/js/loaders/OBJLoader.js +50 -65
  100. package/examples/js/loaders/PCDLoader.js +34 -29
  101. package/examples/js/loaders/PDBLoader.js +17 -13
  102. package/examples/js/loaders/PLYLoader.js +9 -39
  103. package/examples/js/loaders/PRWMLoader.js +11 -22
  104. package/examples/js/loaders/PVRLoader.js +7 -16
  105. package/examples/js/loaders/RGBELoader.js +36 -61
  106. package/examples/js/loaders/RGBMLoader.js +26 -87
  107. package/examples/js/loaders/STLLoader.js +20 -27
  108. package/examples/js/loaders/SVGLoader.js +361 -233
  109. package/examples/js/loaders/TDSLoader.js +81 -118
  110. package/examples/js/loaders/TGALoader.js +39 -41
  111. package/examples/js/loaders/TIFFLoader.js +0 -1
  112. package/examples/js/loaders/TTFLoader.js +0 -8
  113. package/examples/js/loaders/TiltLoader.js +14 -15
  114. package/examples/js/loaders/VOXLoader.js +8 -16
  115. package/examples/js/loaders/VRMLLoader.js +243 -340
  116. package/examples/js/loaders/VTKLoader.js +101 -118
  117. package/examples/js/loaders/XYZLoader.js +2 -4
  118. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  119. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  120. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  121. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  122. package/examples/js/math/Capsule.js +0 -17
  123. package/examples/js/math/ColorConverter.js +3 -3
  124. package/examples/js/math/ConvexHull.js +183 -139
  125. package/examples/js/math/ImprovedNoise.js +1 -1
  126. package/examples/js/math/Lut.js +8 -15
  127. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  128. package/examples/js/math/OBB.js +90 -49
  129. package/examples/js/math/Octree.js +2 -57
  130. package/examples/js/math/SimplexNoise.js +74 -88
  131. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  132. package/examples/js/misc/GPUComputationRenderer.js +14 -18
  133. package/examples/js/misc/Gyroscope.js +5 -9
  134. package/examples/js/misc/MD2Character.js +14 -23
  135. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  136. package/examples/js/misc/MorphAnimMesh.js +0 -6
  137. package/examples/js/misc/MorphBlendMesh.js +3 -30
  138. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  139. package/examples/js/misc/RollerCoaster.js +17 -24
  140. package/examples/js/misc/TubePainter.js +18 -12
  141. package/examples/js/misc/Volume.js +16 -45
  142. package/examples/js/misc/VolumeSlice.js +14 -24
  143. package/examples/js/modifiers/CurveModifier.js +19 -21
  144. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  145. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  146. package/examples/js/modifiers/TessellateModifier.js +2 -9
  147. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  148. package/examples/js/objects/Lensflare.js +47 -38
  149. package/examples/js/objects/LightningStorm.js +10 -13
  150. package/examples/js/objects/MarchingCubes.js +80 -59
  151. package/examples/js/objects/Reflector.js +22 -20
  152. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  153. package/examples/js/objects/Refractor.js +52 -30
  154. package/examples/js/objects/ShadowMesh.js +1 -2
  155. package/examples/js/objects/Sky.js +2 -7
  156. package/examples/js/objects/Water.js +23 -18
  157. package/examples/js/objects/Water2.js +20 -19
  158. package/examples/js/physics/AmmoPhysics.js +23 -20
  159. package/examples/js/physics/OimoPhysics.js +19 -17
  160. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  161. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  162. package/examples/js/postprocessing/BloomPass.js +38 -17
  163. package/examples/js/postprocessing/BokehPass.js +29 -12
  164. package/examples/js/postprocessing/ClearPass.js +1 -6
  165. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  166. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  167. package/examples/js/postprocessing/EffectComposer.js +25 -32
  168. package/examples/js/postprocessing/FilmPass.js +7 -5
  169. package/examples/js/postprocessing/GlitchPass.js +10 -11
  170. package/examples/js/postprocessing/HalftonePass.js +9 -9
  171. package/examples/js/postprocessing/LUTPass.js +2 -15
  172. package/examples/js/postprocessing/MaskPass.js +20 -17
  173. package/examples/js/postprocessing/OutlinePass.js +45 -36
  174. package/examples/js/postprocessing/Pass.js +11 -14
  175. package/examples/js/postprocessing/RenderPass.js +3 -7
  176. package/examples/js/postprocessing/SAOPass.js +40 -32
  177. package/examples/js/postprocessing/SMAAPass.js +34 -17
  178. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  179. package/examples/js/postprocessing/SSAOPass.js +56 -42
  180. package/examples/js/postprocessing/SSRPass.js +78 -61
  181. package/examples/js/postprocessing/SavePass.js +14 -6
  182. package/examples/js/postprocessing/ShaderPass.js +9 -8
  183. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  184. package/examples/js/postprocessing/TexturePass.js +7 -4
  185. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  186. package/examples/js/renderers/CSS2DRenderer.js +2 -21
  187. package/examples/js/renderers/CSS3DRenderer.js +3 -24
  188. package/examples/js/renderers/Projector.js +29 -85
  189. package/examples/js/renderers/SVGRenderer.js +4 -50
  190. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  191. package/examples/js/shaders/AfterimageShader.js +3 -6
  192. package/examples/js/shaders/BasicShader.js +3 -6
  193. package/examples/js/shaders/BleachBypassShader.js +3 -6
  194. package/examples/js/shaders/BlendShader.js +3 -6
  195. package/examples/js/shaders/BokehShader.js +3 -6
  196. package/examples/js/shaders/BokehShader2.js +4 -13
  197. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  198. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  199. package/examples/js/shaders/ColorifyShader.js +2 -6
  200. package/examples/js/shaders/ConvolutionShader.js +5 -10
  201. package/examples/js/shaders/CopyShader.js +3 -6
  202. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  203. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  204. package/examples/js/shaders/DigitalGlitch.js +3 -6
  205. package/examples/js/shaders/DotScreenShader.js +2 -6
  206. package/examples/js/shaders/FXAAShader.js +1 -3
  207. package/examples/js/shaders/FilmShader.js +3 -6
  208. package/examples/js/shaders/FocusShader.js +3 -6
  209. package/examples/js/shaders/FreiChenShader.js +2 -6
  210. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  211. package/examples/js/shaders/GodRaysShader.js +11 -24
  212. package/examples/js/shaders/HalftoneShader.js +3 -6
  213. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  214. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  215. package/examples/js/shaders/HueSaturationShader.js +3 -6
  216. package/examples/js/shaders/KaleidoShader.js +3 -6
  217. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  218. package/examples/js/shaders/LuminosityShader.js +3 -6
  219. package/examples/js/shaders/MMDToonShader.js +2 -6
  220. package/examples/js/shaders/MirrorShader.js +3 -6
  221. package/examples/js/shaders/NormalMapShader.js +2 -6
  222. package/examples/js/shaders/RGBShiftShader.js +3 -6
  223. package/examples/js/shaders/SAOShader.js +2 -6
  224. package/examples/js/shaders/SMAAShader.js +6 -18
  225. package/examples/js/shaders/SSAOShader.js +2 -6
  226. package/examples/js/shaders/SSRShader.js +6 -18
  227. package/examples/js/shaders/SepiaShader.js +3 -6
  228. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  229. package/examples/js/shaders/TechnicolorShader.js +3 -6
  230. package/examples/js/shaders/ToneMapShader.js +3 -6
  231. package/examples/js/shaders/ToonShader.js +8 -24
  232. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  233. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  234. package/examples/js/shaders/VelocityShader.js +126 -0
  235. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  236. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  237. package/examples/js/shaders/VignetteShader.js +3 -6
  238. package/examples/js/shaders/VolumeShader.js +2 -6
  239. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  240. package/examples/js/textures/FlakesTexture.js +0 -1
  241. package/examples/js/utils/BufferGeometryUtils.js +234 -168
  242. package/examples/js/utils/CameraUtils.js +5 -20
  243. package/examples/js/utils/GPUStatsPanel.js +3 -12
  244. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  245. package/examples/js/utils/GeometryUtils.js +13 -18
  246. package/examples/js/utils/LDrawUtils.js +8 -11
  247. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  248. package/examples/js/utils/SceneUtils.js +117 -6
  249. package/examples/js/utils/ShadowMapViewer.js +17 -14
  250. package/examples/js/utils/SkeletonUtils.js +13 -27
  251. package/examples/js/utils/UVsDebug.js +20 -12
  252. package/examples/js/utils/WorkerPool.js +1 -11
  253. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  254. package/examples/jsm/capabilities/WebGPU.js +3 -1
  255. package/examples/jsm/controls/OrbitControls.js +44 -4
  256. package/examples/jsm/exporters/GLTFExporter.js +17 -131
  257. package/examples/jsm/exporters/USDZExporter.js +75 -19
  258. package/examples/jsm/interactive/HTMLMesh.js +2 -0
  259. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  260. package/examples/jsm/loaders/3DMLoader.js +1 -2
  261. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  262. package/examples/jsm/loaders/FBXLoader.js +16 -2
  263. package/examples/jsm/loaders/GLTFLoader.js +204 -377
  264. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  265. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  266. package/examples/jsm/loaders/LottieLoader.js +4 -2
  267. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  268. package/examples/jsm/loaders/PCDLoader.js +1 -1
  269. package/examples/jsm/loaders/PLYLoader.js +68 -16
  270. package/examples/jsm/loaders/SVGLoader.js +227 -14
  271. package/examples/jsm/loaders/USDZLoader.js +31 -16
  272. package/examples/jsm/nodes/Nodes.js +14 -2
  273. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  274. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  275. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  276. package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
  277. package/examples/jsm/nodes/core/Node.js +1 -1
  278. package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
  279. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  280. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  281. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  282. package/examples/jsm/nodes/core/constants.js +13 -13
  283. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  284. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  285. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  286. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  287. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  288. package/examples/jsm/nodes/materials/Materials.js +9 -7
  289. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  290. package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
  291. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  292. package/examples/jsm/nodes/math/MathNode.js +5 -0
  293. package/examples/jsm/nodes/math/OperatorNode.js +6 -1
  294. package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
  295. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
  296. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
  297. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  298. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  299. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  300. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  301. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  302. package/examples/jsm/nodes/utils/TimerNode.js +1 -1
  303. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  304. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  305. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  306. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  307. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  308. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  309. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  310. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  311. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  312. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  313. package/examples/jsm/postprocessing/OutlinePass.js +10 -0
  314. package/examples/jsm/postprocessing/Pass.js +2 -0
  315. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  316. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  317. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  318. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  319. package/examples/jsm/postprocessing/SavePass.js +17 -1
  320. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  321. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  322. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  323. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  324. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
  325. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  326. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  327. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  328. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  329. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
  330. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  331. package/examples/jsm/shaders/VelocityShader.js +128 -0
  332. package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
  333. package/examples/jsm/utils/SceneUtils.js +129 -4
  334. package/examples/jsm/utils/TextureUtils.js +85 -0
  335. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  336. package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
  337. package/package.json +11 -12
  338. package/src/Three.js +1 -0
  339. package/src/audio/AudioContext.js +5 -5
  340. package/src/cameras/CubeCamera.js +14 -14
  341. package/src/constants.js +1 -1
  342. package/src/core/InstancedBufferGeometry.js +1 -7
  343. package/src/extras/Earcut.js +67 -67
  344. package/src/helpers/DirectionalLightHelper.js +5 -1
  345. package/src/helpers/HemisphereLightHelper.js +4 -1
  346. package/src/helpers/PointLightHelper.js +2 -1
  347. package/src/helpers/SpotLightHelper.js +4 -2
  348. package/src/lights/PointLight.js +2 -2
  349. package/src/lights/SpotLight.js +2 -2
  350. package/src/loaders/FileLoader.js +4 -1
  351. package/src/loaders/ObjectLoader.js +5 -1
  352. package/src/materials/Material.js +1 -1
  353. package/src/math/Color.js +5 -5
  354. package/src/math/Matrix3.js +53 -18
  355. package/src/math/Ray.js +2 -5
  356. package/src/math/Sphere.js +19 -26
  357. package/src/objects/InstancedMesh.js +7 -0
  358. package/src/objects/LOD.js +25 -6
  359. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  360. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  361. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  362. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  363. package/src/renderers/WebGLRenderTarget.js +1 -1
  364. package/src/renderers/WebGLRenderer.js +36 -62
  365. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  366. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  367. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  368. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  369. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  370. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  371. package/src/renderers/shaders/ShaderChunk.js +3 -0
  372. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  373. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  374. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  375. package/src/renderers/shaders/ShaderLib.js +20 -6
  376. package/src/renderers/shaders/UniformsLib.js +1 -1
  377. package/src/renderers/shaders/UniformsUtils.js +15 -0
  378. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  379. package/src/renderers/webgl/WebGLBackground.js +15 -7
  380. package/src/renderers/webgl/WebGLLights.js +0 -4
  381. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  382. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  383. package/src/renderers/webgl/WebGLState.js +31 -1
  384. package/src/renderers/webgl/WebGLTextures.js +71 -18
  385. package/src/renderers/webgl/WebGLUniforms.js +116 -20
  386. package/src/renderers/webgl/WebGLUtils.js +1 -1
  387. package/src/renderers/webxr/WebXRController.js +46 -13
  388. package/src/renderers/webxr/WebXRManager.js +85 -3
  389. package/src/scenes/Scene.js +8 -0
  390. package/src/textures/CompressedArrayTexture.js +18 -0
  391. package/examples/js/libs/lottie_canvas.js +0 -12751
  392. package/examples/js/shaders/PixelShader.js +0 -51
  393. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -64,21 +64,26 @@
64
64
  const defaultThickness = parameters.defaultThickness !== undefined ? parameters.defaultThickness : 0.003;
65
65
  const defaultColor = new THREE.Color().fromArray( parameters.defaultColor !== undefined ? parameters.defaultColor : [ 0, 0, 0 ] );
66
66
  const defaultAlpha = parameters.defaultAlpha !== undefined ? parameters.defaultAlpha : 1.0;
67
- const defaultKeepAlive = parameters.defaultKeepAlive !== undefined ? parameters.defaultKeepAlive : false; // object.material.uuid -> outlineMaterial or
67
+ const defaultKeepAlive = parameters.defaultKeepAlive !== undefined ? parameters.defaultKeepAlive : false;
68
+
69
+ // object.material.uuid -> outlineMaterial or
68
70
  // object.material[ n ].uuid -> outlineMaterial
69
71
  // save at the outline material creation and release
70
72
  // if it's unused removeThresholdCount frames
71
73
  // unless keepAlive is true.
72
-
73
74
  const cache = {};
74
- const removeThresholdCount = 60; // outlineMaterial.uuid -> object.material or
75
+ const removeThresholdCount = 60;
76
+
77
+ // outlineMaterial.uuid -> object.material or
75
78
  // outlineMaterial.uuid -> object.material[ n ]
76
79
  // save before render and release after render.
80
+ const originalMaterials = {};
77
81
 
78
- const originalMaterials = {}; // object.uuid -> originalOnBeforeRender
82
+ // object.uuid -> originalOnBeforeRender
79
83
  // save before render and release after render.
84
+ const originalOnBeforeRenders = {};
80
85
 
81
- const originalOnBeforeRenders = {}; //this.cache = cache; // for debug
86
+ //this.cache = cache; // for debug
82
87
 
83
88
  const uniformsOutline = {
84
89
  outlineThickness: {
@@ -91,12 +96,15 @@
91
96
  value: defaultAlpha
92
97
  }
93
98
  };
94
- const vertexShader = [ '#include <common>', '#include <uv_pars_vertex>', '#include <displacementmap_pars_vertex>', '#include <fog_pars_vertex>', '#include <morphtarget_pars_vertex>', '#include <skinning_pars_vertex>', '#include <logdepthbuf_pars_vertex>', '#include <clipping_planes_pars_vertex>', 'uniform float outlineThickness;', 'vec4 calculateOutline( vec4 pos, vec3 normal, vec4 skinned ) {', ' float thickness = outlineThickness;', ' const float ratio = 1.0;', // TODO: support outline thickness ratio for each vertex
95
- ' vec4 pos2 = projectionMatrix * modelViewMatrix * vec4( skinned.xyz + normal, 1.0 );', // NOTE: subtract pos2 from pos because THREE.BackSide objectNormal is negative
96
- ' vec4 norm = normalize( pos - pos2 );', ' return pos + norm * thickness * pos.w * ratio;', '}', 'void main() {', ' #include <uv_vertex>', ' #include <beginnormal_vertex>', ' #include <morphnormal_vertex>', ' #include <skinbase_vertex>', ' #include <skinnormal_vertex>', ' #include <begin_vertex>', ' #include <morphtarget_vertex>', ' #include <skinning_vertex>', ' #include <displacementmap_vertex>', ' #include <project_vertex>', ' vec3 outlineNormal = - objectNormal;', // the outline material is always rendered with THREE.BackSide
99
+ const vertexShader = [ '#include <common>', '#include <uv_pars_vertex>', '#include <displacementmap_pars_vertex>', '#include <fog_pars_vertex>', '#include <morphtarget_pars_vertex>', '#include <skinning_pars_vertex>', '#include <logdepthbuf_pars_vertex>', '#include <clipping_planes_pars_vertex>', 'uniform float outlineThickness;', 'vec4 calculateOutline( vec4 pos, vec3 normal, vec4 skinned ) {', ' float thickness = outlineThickness;', ' const float ratio = 1.0;',
100
+ // TODO: support outline thickness ratio for each vertex
101
+ ' vec4 pos2 = projectionMatrix * modelViewMatrix * vec4( skinned.xyz + normal, 1.0 );',
102
+ // NOTE: subtract pos2 from pos because THREE.BackSide objectNormal is negative
103
+ ' vec4 norm = normalize( pos - pos2 );', ' return pos + norm * thickness * pos.w * ratio;', '}', 'void main() {', ' #include <uv_vertex>', ' #include <beginnormal_vertex>', ' #include <morphnormal_vertex>', ' #include <skinbase_vertex>', ' #include <skinnormal_vertex>', ' #include <begin_vertex>', ' #include <morphtarget_vertex>', ' #include <skinning_vertex>', ' #include <displacementmap_vertex>', ' #include <project_vertex>', ' vec3 outlineNormal = - objectNormal;',
104
+ // the outline material is always rendered with THREE.BackSide
105
+
97
106
  ' gl_Position = calculateOutline( gl_Position, outlineNormal, vec4( transformed, 1.0 ) );', ' #include <logdepthbuf_vertex>', ' #include <clipping_planes_vertex>', ' #include <fog_vertex>', '}' ].join( '\n' );
98
107
  const fragmentShader = [ '#include <common>', '#include <fog_pars_fragment>', '#include <logdepthbuf_pars_fragment>', '#include <clipping_planes_pars_fragment>', 'uniform vec3 outlineColor;', 'uniform float outlineAlpha;', 'void main() {', ' #include <clipping_planes_fragment>', ' #include <logdepthbuf_fragment>', ' gl_FragColor = vec4( outlineColor, outlineAlpha );', ' #include <tonemapping_fragment>', ' #include <encodings_fragment>', ' #include <fog_fragment>', ' #include <premultiplied_alpha_fragment>', '}' ].join( '\n' );
99
-
100
108
  function createMaterial() {
101
109
 
102
110
  return new THREE.ShaderMaterial( {
@@ -112,7 +120,6 @@
112
120
  function getOutlineMaterialFromCache( originalMaterial ) {
113
121
 
114
122
  let data = cache[ originalMaterial.uuid ];
115
-
116
123
  if ( data === undefined ) {
117
124
 
118
125
  data = {
@@ -143,7 +150,6 @@
143
150
 
144
151
  const geometry = object.geometry;
145
152
  let hasNormals = false;
146
-
147
153
  if ( object.geometry !== undefined ) {
148
154
 
149
155
  if ( geometry.isBufferGeometry ) {
@@ -165,7 +171,6 @@
165
171
  function setOutlineMaterial( object ) {
166
172
 
167
173
  if ( isCompatible( object ) === false ) return;
168
-
169
174
  if ( Array.isArray( object.material ) ) {
170
175
 
171
176
  for ( let i = 0, il = object.material.length; i < il; i ++ ) {
@@ -188,7 +193,6 @@
188
193
  function restoreOriginalMaterial( object ) {
189
194
 
190
195
  if ( isCompatible( object ) === false ) return;
191
-
192
196
  if ( Array.isArray( object.material ) ) {
193
197
 
194
198
  for ( let i = 0, il = object.material.length; i < il; i ++ ) {
@@ -209,8 +213,9 @@
209
213
 
210
214
  function onBeforeRender( renderer, scene, camera, geometry, material ) {
211
215
 
212
- const originalMaterial = originalMaterials[ material.uuid ]; // just in case
216
+ const originalMaterial = originalMaterials[ material.uuid ];
213
217
 
218
+ // just in case
214
219
  if ( originalMaterial === undefined ) return;
215
220
  updateUniforms( material, originalMaterial );
216
221
 
@@ -220,7 +225,6 @@
220
225
 
221
226
  const outlineParameters = originalMaterial.userData.outlineParameters;
222
227
  material.uniforms.outlineAlpha.value = originalMaterial.opacity;
223
-
224
228
  if ( outlineParameters !== undefined ) {
225
229
 
226
230
  if ( outlineParameters.thickness !== undefined ) material.uniforms.outlineThickness.value = outlineParameters.thickness;
@@ -247,7 +251,6 @@
247
251
  material.toneMapped = originalMaterial.toneMapped;
248
252
  material.premultipliedAlpha = originalMaterial.premultipliedAlpha;
249
253
  material.displacementMap = originalMaterial.displacementMap;
250
-
251
254
  if ( outlineParameters !== undefined ) {
252
255
 
253
256
  if ( originalMaterial.visible === false ) {
@@ -271,7 +274,6 @@
271
274
  }
272
275
 
273
276
  if ( originalMaterial.wireframe === true || originalMaterial.depthTest === false ) material.visible = false;
274
-
275
277
  if ( originalMaterial.clippingPlanes ) {
276
278
 
277
279
  material.clipping = true;
@@ -287,36 +289,32 @@
287
289
 
288
290
  function cleanupCache() {
289
291
 
290
- let keys; // clear originialMaterials
292
+ let keys;
291
293
 
294
+ // clear originialMaterials
292
295
  keys = Object.keys( originalMaterials );
293
-
294
296
  for ( let i = 0, il = keys.length; i < il; i ++ ) {
295
297
 
296
298
  originalMaterials[ keys[ i ] ] = undefined;
297
299
 
298
- } // clear originalOnBeforeRenders
299
-
300
+ }
300
301
 
302
+ // clear originalOnBeforeRenders
301
303
  keys = Object.keys( originalOnBeforeRenders );
302
-
303
304
  for ( let i = 0, il = keys.length; i < il; i ++ ) {
304
305
 
305
306
  originalOnBeforeRenders[ keys[ i ] ] = undefined;
306
307
 
307
- } // remove unused outlineMaterial from cache
308
-
308
+ }
309
309
 
310
+ // remove unused outlineMaterial from cache
310
311
  keys = Object.keys( cache );
311
-
312
312
  for ( let i = 0, il = keys.length; i < il; i ++ ) {
313
313
 
314
314
  const key = keys[ i ];
315
-
316
315
  if ( cache[ key ].used === false ) {
317
316
 
318
317
  cache[ key ].count ++;
319
-
320
318
  if ( cache[ key ].keepAlive === false && cache[ key ].count > removeThresholdCount ) {
321
319
 
322
320
  delete cache[ key ];
@@ -371,6 +369,7 @@
371
369
  renderer.shadowMap.enabled = currentShadowMapEnabled;
372
370
 
373
371
  };
372
+
374
373
  /*
375
374
  * See #9918
376
375
  *
@@ -385,12 +384,9 @@
385
384
  *
386
385
  * }
387
386
  */
388
-
389
-
390
387
  this.autoClear = renderer.autoClear;
391
388
  this.domElement = renderer.domElement;
392
389
  this.shadowMap = renderer.shadowMap;
393
-
394
390
  this.clear = function ( color, depth, stencil ) {
395
391
 
396
392
  renderer.clear( color, depth, stencil );
@@ -5,21 +5,15 @@
5
5
  constructor( renderer ) {
6
6
 
7
7
  const _camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
8
-
9
8
  const _scene = new THREE.Scene();
10
-
11
9
  const _stereo = new THREE.StereoCamera();
12
-
13
10
  const _params = {
14
11
  minFilter: THREE.LinearFilter,
15
12
  magFilter: THREE.NearestFilter,
16
13
  format: THREE.RGBAFormat
17
14
  };
18
-
19
15
  const _renderTargetL = new THREE.WebGLRenderTarget( 512, 512, _params );
20
-
21
16
  const _renderTargetR = new THREE.WebGLRenderTarget( 512, 512, _params );
22
-
23
17
  const _material = new THREE.ShaderMaterial( {
24
18
  uniforms: {
25
19
  'mapLeft': {
@@ -32,18 +26,13 @@
32
26
  vertexShader: [ 'varying vec2 vUv;', 'void main() {', ' vUv = vec2( uv.x, uv.y );', ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );', '}' ].join( '\n' ),
33
27
  fragmentShader: [ 'uniform sampler2D mapLeft;', 'uniform sampler2D mapRight;', 'varying vec2 vUv;', 'void main() {', ' vec2 uv = vUv;', ' if ( ( mod( gl_FragCoord.y, 2.0 ) ) > 1.00 ) {', ' gl_FragColor = texture2D( mapLeft, uv );', ' } else {', ' gl_FragColor = texture2D( mapRight, uv );', ' }', '}' ].join( '\n' )
34
28
  } );
35
-
36
29
  const mesh = new THREE.Mesh( new THREE.PlaneGeometry( 2, 2 ), _material );
37
-
38
30
  _scene.add( mesh );
39
-
40
31
  this.setSize = function ( width, height ) {
41
32
 
42
33
  renderer.setSize( width, height );
43
34
  const pixelRatio = renderer.getPixelRatio();
44
-
45
35
  _renderTargetL.setSize( width * pixelRatio, height * pixelRatio );
46
-
47
36
  _renderTargetR.setSize( width * pixelRatio, height * pixelRatio );
48
37
 
49
38
  };
@@ -52,9 +41,7 @@
52
41
 
53
42
  if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
54
43
  if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
55
-
56
44
  _stereo.update( camera );
57
-
58
45
  renderer.setRenderTarget( _renderTargetL );
59
46
  renderer.clear();
60
47
  renderer.render( scene, _stereo.cameraL );
@@ -10,35 +10,24 @@
10
10
 
11
11
  const scope = this;
12
12
  scope.cameraDistance = 15;
13
- scope.reflectFromAbove = false; // Internals
13
+ scope.reflectFromAbove = false;
14
14
 
15
+ // Internals
15
16
  let _halfWidth, _width, _height;
16
-
17
17
  const _cameraF = new THREE.PerspectiveCamera(); //front
18
-
19
-
20
18
  const _cameraB = new THREE.PerspectiveCamera(); //back
21
-
22
-
23
19
  const _cameraL = new THREE.PerspectiveCamera(); //left
24
-
25
-
26
20
  const _cameraR = new THREE.PerspectiveCamera(); //right
27
21
 
28
-
29
22
  const _position = new THREE.Vector3();
30
-
31
23
  const _quaternion = new THREE.Quaternion();
24
+ const _scale = new THREE.Vector3();
32
25
 
33
- const _scale = new THREE.Vector3(); // Initialization
34
-
35
-
26
+ // Initialization
36
27
  renderer.autoClear = false;
37
-
38
28
  this.setSize = function ( width, height ) {
39
29
 
40
30
  _halfWidth = width / 2;
41
-
42
31
  if ( width < height ) {
43
32
 
44
33
  _width = width / 3;
@@ -59,51 +48,38 @@
59
48
 
60
49
  if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
61
50
  if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
62
- camera.matrixWorld.decompose( _position, _quaternion, _scale ); // front
51
+ camera.matrixWorld.decompose( _position, _quaternion, _scale );
63
52
 
53
+ // front
64
54
  _cameraF.position.copy( _position );
65
-
66
55
  _cameraF.quaternion.copy( _quaternion );
67
-
68
56
  _cameraF.translateZ( scope.cameraDistance );
57
+ _cameraF.lookAt( scene.position );
69
58
 
70
- _cameraF.lookAt( scene.position ); // back
71
-
72
-
59
+ // back
73
60
  _cameraB.position.copy( _position );
74
-
75
61
  _cameraB.quaternion.copy( _quaternion );
76
-
77
62
  _cameraB.translateZ( - scope.cameraDistance );
78
-
79
63
  _cameraB.lookAt( scene.position );
64
+ _cameraB.rotation.z += 180 * ( Math.PI / 180 );
80
65
 
81
- _cameraB.rotation.z += 180 * ( Math.PI / 180 ); // left
82
-
66
+ // left
83
67
  _cameraL.position.copy( _position );
84
-
85
68
  _cameraL.quaternion.copy( _quaternion );
86
-
87
69
  _cameraL.translateX( - scope.cameraDistance );
88
-
89
70
  _cameraL.lookAt( scene.position );
71
+ _cameraL.rotation.x += 90 * ( Math.PI / 180 );
90
72
 
91
- _cameraL.rotation.x += 90 * ( Math.PI / 180 ); // right
92
-
73
+ // right
93
74
  _cameraR.position.copy( _position );
94
-
95
75
  _cameraR.quaternion.copy( _quaternion );
96
-
97
76
  _cameraR.translateX( scope.cameraDistance );
98
-
99
77
  _cameraR.lookAt( scene.position );
100
-
101
78
  _cameraR.rotation.x += 90 * ( Math.PI / 180 );
102
79
  renderer.clear();
103
80
  renderer.setScissorTest( true );
104
81
  renderer.setScissor( _halfWidth - _width / 2, _height * 2, _width, _height );
105
82
  renderer.setViewport( _halfWidth - _width / 2, _height * 2, _width, _height );
106
-
107
83
  if ( scope.reflectFromAbove ) {
108
84
 
109
85
  renderer.render( scene, _cameraB );
@@ -116,7 +92,6 @@
116
92
 
117
93
  renderer.setScissor( _halfWidth - _width / 2, 0, _width, _height );
118
94
  renderer.setViewport( _halfWidth - _width / 2, 0, _width, _height );
119
-
120
95
  if ( scope.reflectFromAbove ) {
121
96
 
122
97
  renderer.render( scene, _cameraF );
@@ -129,7 +104,6 @@
129
104
 
130
105
  renderer.setScissor( _halfWidth - _width / 2 - _width, _height, _width, _height );
131
106
  renderer.setViewport( _halfWidth - _width / 2 - _width, _height, _width, _height );
132
-
133
107
  if ( scope.reflectFromAbove ) {
134
108
 
135
109
  renderer.render( scene, _cameraR );
@@ -142,7 +116,6 @@
142
116
 
143
117
  renderer.setScissor( _halfWidth + _width / 2, _height, _width, _height );
144
118
  renderer.setViewport( _halfWidth + _width / 2, _height, _width, _height );
145
-
146
119
  if ( scope.reflectFromAbove ) {
147
120
 
148
121
  renderer.render( scene, _cameraL );
@@ -5,10 +5,8 @@
5
5
  constructor( renderer ) {
6
6
 
7
7
  const _stereo = new THREE.StereoCamera();
8
-
9
8
  _stereo.aspect = 0.5;
10
9
  const size = new THREE.Vector2();
11
-
12
10
  this.setEyeSeparation = function ( eyeSep ) {
13
11
 
14
12
  _stereo.eyeSep = eyeSep;
@@ -25,9 +23,7 @@
25
23
 
26
24
  if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
27
25
  if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
28
-
29
26
  _stereo.update( camera );
30
-
31
27
  renderer.getSize( size );
32
28
  if ( renderer.autoClear ) renderer.clear();
33
29
  renderer.setScissorTest( true );
@@ -3,7 +3,6 @@
3
3
  /**
4
4
  * https://github.com/google/model-viewer/blob/master/packages/model-viewer/src/three-components/EnvironmentScene.ts
5
5
  */
6
-
7
6
  class RoomEnvironment extends THREE.Scene {
8
7
 
9
8
  constructor() {
@@ -51,40 +50,45 @@
51
50
  box6.position.set( - 2.193, - 0.369, - 5.547 );
52
51
  box6.rotation.set( 0, 0.516, 0 );
53
52
  box6.scale.set( 3.875, 3.487, 2.986 );
54
- this.add( box6 ); // -x right
53
+ this.add( box6 );
55
54
 
55
+ // -x right
56
56
  const light1 = new THREE.Mesh( geometry, createAreaLightMaterial( 50 ) );
57
57
  light1.position.set( - 16.116, 14.37, 8.208 );
58
58
  light1.scale.set( 0.1, 2.428, 2.739 );
59
- this.add( light1 ); // -x left
59
+ this.add( light1 );
60
60
 
61
+ // -x left
61
62
  const light2 = new THREE.Mesh( geometry, createAreaLightMaterial( 50 ) );
62
63
  light2.position.set( - 16.109, 18.021, - 8.207 );
63
64
  light2.scale.set( 0.1, 2.425, 2.751 );
64
- this.add( light2 ); // +x
65
+ this.add( light2 );
65
66
 
67
+ // +x
66
68
  const light3 = new THREE.Mesh( geometry, createAreaLightMaterial( 17 ) );
67
69
  light3.position.set( 14.904, 12.198, - 1.832 );
68
70
  light3.scale.set( 0.15, 4.265, 6.331 );
69
- this.add( light3 ); // +z
71
+ this.add( light3 );
70
72
 
73
+ // +z
71
74
  const light4 = new THREE.Mesh( geometry, createAreaLightMaterial( 43 ) );
72
75
  light4.position.set( - 0.462, 8.89, 14.520 );
73
76
  light4.scale.set( 4.38, 5.441, 0.088 );
74
- this.add( light4 ); // -z
77
+ this.add( light4 );
75
78
 
79
+ // -z
76
80
  const light5 = new THREE.Mesh( geometry, createAreaLightMaterial( 20 ) );
77
81
  light5.position.set( 3.235, 11.486, - 12.541 );
78
82
  light5.scale.set( 2.5, 2.0, 0.1 );
79
- this.add( light5 ); // +y
83
+ this.add( light5 );
80
84
 
85
+ // +y
81
86
  const light6 = new THREE.Mesh( geometry, createAreaLightMaterial( 100 ) );
82
87
  light6.position.set( 0.0, 20.0, 0.0 );
83
88
  light6.scale.set( 1.0, 0.1, 1.0 );
84
89
  this.add( light6 );
85
90
 
86
91
  }
87
-
88
92
  dispose() {
89
93
 
90
94
  const resources = new Set();
@@ -98,7 +102,6 @@
98
102
  }
99
103
 
100
104
  } );
101
-
102
105
  for ( const resource of resources ) {
103
106
 
104
107
  resource.dispose();
@@ -108,7 +111,6 @@
108
111
  }
109
112
 
110
113
  }
111
-
112
114
  function createAreaLightMaterial( intensity ) {
113
115
 
114
116
  const material = new THREE.MeshBasicMaterial();