super-three 0.144.0 → 0.147.1

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 (450) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +737 -388
  3. package/build/three.js +737 -388
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +911 -409
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +50 -67
  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 +125 -99
  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 +85 -170
  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 +141 -317
  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 +113 -27
  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 +25 -39
  60. package/examples/js/interactive/InteractiveGroup.js +9 -14
  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 +40 -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 +228 -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 +287 -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 +409 -706
  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/NRRDLoader.js +44 -84
  98. package/examples/js/loaders/OBJLoader.js +50 -65
  99. package/examples/js/loaders/PCDLoader.js +34 -29
  100. package/examples/js/loaders/PDBLoader.js +17 -13
  101. package/examples/js/loaders/PLYLoader.js +62 -48
  102. package/examples/js/loaders/PRWMLoader.js +11 -22
  103. package/examples/js/loaders/PVRLoader.js +7 -16
  104. package/examples/js/loaders/RGBELoader.js +36 -61
  105. package/examples/js/loaders/RGBMLoader.js +26 -87
  106. package/examples/js/loaders/STLLoader.js +20 -27
  107. package/examples/js/loaders/SVGLoader.js +361 -233
  108. package/examples/js/loaders/TDSLoader.js +81 -118
  109. package/examples/js/loaders/TGALoader.js +39 -41
  110. package/examples/js/loaders/TIFFLoader.js +0 -1
  111. package/examples/js/loaders/TTFLoader.js +0 -8
  112. package/examples/js/loaders/TiltLoader.js +14 -15
  113. package/examples/js/loaders/VOXLoader.js +8 -16
  114. package/examples/js/loaders/VRMLLoader.js +243 -340
  115. package/examples/js/loaders/VTKLoader.js +101 -118
  116. package/examples/js/loaders/XYZLoader.js +2 -4
  117. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  118. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  119. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  120. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  121. package/examples/js/math/Capsule.js +0 -17
  122. package/examples/js/math/ColorConverter.js +3 -3
  123. package/examples/js/math/ConvexHull.js +185 -141
  124. package/examples/js/math/ImprovedNoise.js +1 -1
  125. package/examples/js/math/Lut.js +8 -15
  126. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  127. package/examples/js/math/OBB.js +90 -49
  128. package/examples/js/math/Octree.js +2 -57
  129. package/examples/js/math/SimplexNoise.js +74 -88
  130. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  131. package/examples/js/misc/GPUComputationRenderer.js +26 -16
  132. package/examples/js/misc/Gyroscope.js +5 -9
  133. package/examples/js/misc/MD2Character.js +14 -23
  134. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  135. package/examples/js/misc/MorphAnimMesh.js +0 -6
  136. package/examples/js/misc/MorphBlendMesh.js +3 -30
  137. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  138. package/examples/js/misc/RollerCoaster.js +17 -24
  139. package/examples/js/misc/TubePainter.js +18 -12
  140. package/examples/js/misc/Volume.js +16 -45
  141. package/examples/js/misc/VolumeSlice.js +14 -24
  142. package/examples/js/modifiers/CurveModifier.js +19 -21
  143. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  144. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  145. package/examples/js/modifiers/TessellateModifier.js +2 -9
  146. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  147. package/examples/js/objects/Lensflare.js +47 -38
  148. package/examples/js/objects/LightningStorm.js +10 -13
  149. package/examples/js/objects/MarchingCubes.js +80 -59
  150. package/examples/js/objects/Reflector.js +22 -20
  151. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  152. package/examples/js/objects/Refractor.js +52 -30
  153. package/examples/js/objects/ShadowMesh.js +1 -2
  154. package/examples/js/objects/Sky.js +2 -7
  155. package/examples/js/objects/Water.js +23 -18
  156. package/examples/js/objects/Water2.js +20 -19
  157. package/examples/js/physics/AmmoPhysics.js +23 -20
  158. package/examples/js/physics/OimoPhysics.js +19 -17
  159. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  160. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  161. package/examples/js/postprocessing/BloomPass.js +38 -17
  162. package/examples/js/postprocessing/BokehPass.js +29 -12
  163. package/examples/js/postprocessing/ClearPass.js +1 -6
  164. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  165. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  166. package/examples/js/postprocessing/EffectComposer.js +25 -32
  167. package/examples/js/postprocessing/FilmPass.js +7 -5
  168. package/examples/js/postprocessing/GlitchPass.js +10 -11
  169. package/examples/js/postprocessing/HalftonePass.js +9 -9
  170. package/examples/js/postprocessing/LUTPass.js +2 -15
  171. package/examples/js/postprocessing/MaskPass.js +20 -17
  172. package/examples/js/postprocessing/OutlinePass.js +45 -36
  173. package/examples/js/postprocessing/Pass.js +11 -14
  174. package/examples/js/postprocessing/RenderPass.js +3 -7
  175. package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
  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 -8
  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 +236 -170
  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 +27 -3
  254. package/examples/jsm/animation/MMDPhysics.js +25 -0
  255. package/examples/jsm/capabilities/WebGPU.js +3 -1
  256. package/examples/jsm/controls/FirstPersonControls.js +20 -20
  257. package/examples/jsm/controls/FlyControls.js +16 -17
  258. package/examples/jsm/controls/OrbitControls.js +44 -4
  259. package/examples/jsm/controls/TrackballControls.js +14 -2
  260. package/examples/jsm/controls/TransformControls.js +1 -1
  261. package/examples/jsm/csm/CSM.js +1 -0
  262. package/examples/jsm/csm/CSMHelper.js +30 -0
  263. package/examples/jsm/exporters/GLTFExporter.js +0 -79
  264. package/examples/jsm/exporters/USDZExporter.js +93 -1
  265. package/examples/jsm/helpers/OctreeHelper.js +22 -8
  266. package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
  267. package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
  268. package/examples/jsm/helpers/ViewHelper.js +24 -0
  269. package/examples/jsm/interactive/HTMLMesh.js +5 -6
  270. package/examples/jsm/interactive/InteractiveGroup.js +4 -2
  271. package/examples/jsm/libs/flow.module.js +610 -160
  272. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  273. package/examples/jsm/lines/LineSegments2.js +4 -0
  274. package/examples/jsm/loaders/3DMLoader.js +1 -2
  275. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  276. package/examples/jsm/loaders/FBXLoader.js +18 -2
  277. package/examples/jsm/loaders/GLTFLoader.js +269 -428
  278. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  279. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  280. package/examples/jsm/loaders/LottieLoader.js +4 -2
  281. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  282. package/examples/jsm/loaders/PCDLoader.js +1 -1
  283. package/examples/jsm/loaders/PLYLoader.js +68 -16
  284. package/examples/jsm/loaders/SVGLoader.js +227 -14
  285. package/examples/jsm/loaders/USDZLoader.js +351 -111
  286. package/examples/jsm/loaders/VRMLLoader.js +13 -1
  287. package/examples/jsm/math/ConvexHull.js +4 -4
  288. package/examples/jsm/math/Octree.js +1 -1
  289. package/examples/jsm/node-editor/NodeEditor.js +91 -12
  290. package/examples/jsm/node-editor/core/BaseNode.js +10 -3
  291. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +6 -9
  292. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +6 -9
  293. package/examples/jsm/node-editor/math/AngleEditor.js +3 -3
  294. package/examples/jsm/node-editor/math/InvertEditor.js +2 -2
  295. package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
  296. package/examples/jsm/node-editor/utils/PreviewEditor.js +4 -0
  297. package/examples/jsm/nodes/Nodes.js +30 -3
  298. package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
  299. package/examples/jsm/nodes/accessors/NormalNode.js +6 -6
  300. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  301. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  302. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  303. package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
  304. package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
  305. package/examples/jsm/nodes/core/AttributeNode.js +31 -8
  306. package/examples/jsm/nodes/core/Node.js +1 -1
  307. package/examples/jsm/nodes/core/NodeBuilder.js +55 -6
  308. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  309. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  310. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  311. package/examples/jsm/nodes/core/constants.js +13 -13
  312. package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
  313. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -12
  314. package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
  315. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  316. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  317. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
  318. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
  319. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
  320. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  321. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  322. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  323. package/examples/jsm/nodes/materials/Materials.js +9 -7
  324. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  325. package/examples/jsm/nodes/materialx/{Disclaimer.md → DISCLAIMER.md} +1 -1
  326. package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
  327. package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_hsv.js +1 -1
  328. package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_noise.js +13 -3
  329. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  330. package/examples/jsm/nodes/math/MathNode.js +5 -5
  331. package/examples/jsm/nodes/math/OperatorNode.js +16 -3
  332. package/examples/jsm/nodes/shadernode/ShaderNode.js +35 -20
  333. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +87 -63
  334. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +29 -0
  335. package/examples/jsm/nodes/utils/ConvertNode.js +15 -14
  336. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  337. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  338. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  339. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  340. package/examples/jsm/nodes/utils/OscNode.js +2 -2
  341. package/examples/jsm/nodes/utils/RemapNode.js +34 -0
  342. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  343. package/examples/jsm/nodes/utils/TimerNode.js +21 -1
  344. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  345. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  346. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  347. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  348. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  349. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  350. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  351. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  352. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  353. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  354. package/examples/jsm/postprocessing/OutlinePass.js +21 -1
  355. package/examples/jsm/postprocessing/Pass.js +2 -0
  356. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  357. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  358. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  359. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  360. package/examples/jsm/postprocessing/SavePass.js +17 -1
  361. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  362. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  363. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  364. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  365. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +56 -35
  366. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  367. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  368. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  369. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  370. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +41 -9
  371. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  372. package/examples/jsm/shaders/VelocityShader.js +128 -0
  373. package/examples/jsm/utils/BufferGeometryUtils.js +174 -42
  374. package/examples/jsm/utils/SceneUtils.js +129 -4
  375. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  376. package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
  377. package/package.json +13 -13
  378. package/src/Three.js +1 -0
  379. package/src/animation/PropertyBinding.js +7 -0
  380. package/src/audio/AudioContext.js +5 -5
  381. package/src/cameras/CubeCamera.js +14 -14
  382. package/src/constants.js +1 -1
  383. package/src/core/InstancedBufferGeometry.js +1 -7
  384. package/src/core/InterleavedBufferAttribute.js +4 -4
  385. package/src/extras/Earcut.js +67 -67
  386. package/src/geometries/PolyhedronGeometry.js +1 -1
  387. package/src/geometries/ShapeGeometry.js +1 -1
  388. package/src/helpers/ArrowHelper.js +9 -0
  389. package/src/helpers/Box3Helper.js +7 -0
  390. package/src/helpers/BoxHelper.js +7 -1
  391. package/src/helpers/DirectionalLightHelper.js +5 -1
  392. package/src/helpers/GridHelper.js +7 -0
  393. package/src/helpers/HemisphereLightHelper.js +4 -1
  394. package/src/helpers/PlaneHelper.js +9 -0
  395. package/src/helpers/PointLightHelper.js +2 -1
  396. package/src/helpers/PolarGridHelper.js +7 -0
  397. package/src/helpers/SkeletonHelper.js +7 -0
  398. package/src/helpers/SpotLightHelper.js +4 -2
  399. package/src/lights/LightShadow.js +1 -2
  400. package/src/lights/PointLight.js +2 -2
  401. package/src/lights/SpotLight.js +2 -2
  402. package/src/loaders/FileLoader.js +4 -1
  403. package/src/loaders/ObjectLoader.js +5 -1
  404. package/src/materials/Material.js +1 -1
  405. package/src/materials/MeshPhysicalMaterial.js +1 -1
  406. package/src/math/Color.js +5 -5
  407. package/src/math/Matrix3.js +53 -18
  408. package/src/math/Ray.js +2 -5
  409. package/src/math/Sphere.js +36 -21
  410. package/src/objects/InstancedMesh.js +7 -0
  411. package/src/objects/LOD.js +25 -6
  412. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  413. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  414. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  415. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  416. package/src/renderers/WebGLRenderTarget.js +1 -1
  417. package/src/renderers/WebGLRenderer.js +36 -62
  418. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  419. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  420. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  421. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  422. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  423. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
  424. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  425. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
  426. package/src/renderers/shaders/ShaderChunk.js +3 -0
  427. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  428. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  429. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  430. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
  431. package/src/renderers/shaders/ShaderLib.js +20 -6
  432. package/src/renderers/shaders/UniformsLib.js +1 -1
  433. package/src/renderers/shaders/UniformsUtils.js +15 -0
  434. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  435. package/src/renderers/webgl/WebGLBackground.js +15 -7
  436. package/src/renderers/webgl/WebGLLights.js +0 -4
  437. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  438. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  439. package/src/renderers/webgl/WebGLState.js +78 -41
  440. package/src/renderers/webgl/WebGLTextures.js +94 -39
  441. package/src/renderers/webgl/WebGLUniforms.js +152 -24
  442. package/src/renderers/webgl/WebGLUtils.js +1 -1
  443. package/src/renderers/webxr/WebXRController.js +46 -13
  444. package/src/renderers/webxr/WebXRManager.js +71 -3
  445. package/src/scenes/Scene.js +8 -0
  446. package/src/textures/CompressedArrayTexture.js +18 -0
  447. package/src/textures/Texture.js +2 -1
  448. package/examples/js/libs/lottie_canvas.js +0 -12751
  449. package/examples/js/shaders/PixelShader.js +0 -51
  450. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -362,17 +362,32 @@ function setValueV1i( gl, v ) {
362
362
 
363
363
  }
364
364
 
365
- // Single integer / boolean vector (from flat array)
365
+ // Single integer / boolean vector (from flat array or THREE.VectorN)
366
366
 
367
367
  function setValueV2i( gl, v ) {
368
368
 
369
369
  const cache = this.cache;
370
370
 
371
- if ( arraysEqual( cache, v ) ) return;
371
+ if ( v.x !== undefined ) {
372
372
 
373
- gl.uniform2iv( this.addr, v );
373
+ if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {
374
+
375
+ gl.uniform2i( this.addr, v.x, v.y );
376
+
377
+ cache[ 0 ] = v.x;
378
+ cache[ 1 ] = v.y;
379
+
380
+ }
374
381
 
375
- copyArray( cache, v );
382
+ } else {
383
+
384
+ if ( arraysEqual( cache, v ) ) return;
385
+
386
+ gl.uniform2iv( this.addr, v );
387
+
388
+ copyArray( cache, v );
389
+
390
+ }
376
391
 
377
392
  }
378
393
 
@@ -380,11 +395,27 @@ function setValueV3i( gl, v ) {
380
395
 
381
396
  const cache = this.cache;
382
397
 
383
- if ( arraysEqual( cache, v ) ) return;
398
+ if ( v.x !== undefined ) {
384
399
 
385
- gl.uniform3iv( this.addr, v );
400
+ if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {
401
+
402
+ gl.uniform3i( this.addr, v.x, v.y, v.z );
403
+
404
+ cache[ 0 ] = v.x;
405
+ cache[ 1 ] = v.y;
406
+ cache[ 2 ] = v.z;
407
+
408
+ }
409
+
410
+ } else {
411
+
412
+ if ( arraysEqual( cache, v ) ) return;
413
+
414
+ gl.uniform3iv( this.addr, v );
415
+
416
+ copyArray( cache, v );
386
417
 
387
- copyArray( cache, v );
418
+ }
388
419
 
389
420
  }
390
421
 
@@ -392,11 +423,28 @@ function setValueV4i( gl, v ) {
392
423
 
393
424
  const cache = this.cache;
394
425
 
395
- if ( arraysEqual( cache, v ) ) return;
426
+ if ( v.x !== undefined ) {
396
427
 
397
- gl.uniform4iv( this.addr, v );
428
+ if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {
429
+
430
+ gl.uniform4i( this.addr, v.x, v.y, v.z, v.w );
431
+
432
+ cache[ 0 ] = v.x;
433
+ cache[ 1 ] = v.y;
434
+ cache[ 2 ] = v.z;
435
+ cache[ 3 ] = v.w;
436
+
437
+ }
438
+
439
+ } else {
440
+
441
+ if ( arraysEqual( cache, v ) ) return;
398
442
 
399
- copyArray( cache, v );
443
+ gl.uniform4iv( this.addr, v );
444
+
445
+ copyArray( cache, v );
446
+
447
+ }
400
448
 
401
449
  }
402
450
 
@@ -414,17 +462,32 @@ function setValueV1ui( gl, v ) {
414
462
 
415
463
  }
416
464
 
417
- // Single unsigned integer vector (from flat array)
465
+ // Single unsigned integer vector (from flat array or THREE.VectorN)
418
466
 
419
467
  function setValueV2ui( gl, v ) {
420
468
 
421
469
  const cache = this.cache;
422
470
 
423
- if ( arraysEqual( cache, v ) ) return;
471
+ if ( v.x !== undefined ) {
424
472
 
425
- gl.uniform2uiv( this.addr, v );
473
+ if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {
474
+
475
+ gl.uniform2ui( this.addr, v.x, v.y );
476
+
477
+ cache[ 0 ] = v.x;
478
+ cache[ 1 ] = v.y;
479
+
480
+ }
481
+
482
+ } else {
483
+
484
+ if ( arraysEqual( cache, v ) ) return;
485
+
486
+ gl.uniform2uiv( this.addr, v );
426
487
 
427
- copyArray( cache, v );
488
+ copyArray( cache, v );
489
+
490
+ }
428
491
 
429
492
  }
430
493
 
@@ -432,11 +495,27 @@ function setValueV3ui( gl, v ) {
432
495
 
433
496
  const cache = this.cache;
434
497
 
435
- if ( arraysEqual( cache, v ) ) return;
498
+ if ( v.x !== undefined ) {
436
499
 
437
- gl.uniform3uiv( this.addr, v );
500
+ if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {
438
501
 
439
- copyArray( cache, v );
502
+ gl.uniform3ui( this.addr, v.x, v.y, v.z );
503
+
504
+ cache[ 0 ] = v.x;
505
+ cache[ 1 ] = v.y;
506
+ cache[ 2 ] = v.z;
507
+
508
+ }
509
+
510
+ } else {
511
+
512
+ if ( arraysEqual( cache, v ) ) return;
513
+
514
+ gl.uniform3uiv( this.addr, v );
515
+
516
+ copyArray( cache, v );
517
+
518
+ }
440
519
 
441
520
  }
442
521
 
@@ -444,11 +523,28 @@ function setValueV4ui( gl, v ) {
444
523
 
445
524
  const cache = this.cache;
446
525
 
447
- if ( arraysEqual( cache, v ) ) return;
526
+ if ( v.x !== undefined ) {
448
527
 
449
- gl.uniform4uiv( this.addr, v );
528
+ if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {
529
+
530
+ gl.uniform4ui( this.addr, v.x, v.y, v.z, v.w );
531
+
532
+ cache[ 0 ] = v.x;
533
+ cache[ 1 ] = v.y;
534
+ cache[ 2 ] = v.z;
535
+ cache[ 3 ] = v.w;
536
+
537
+ }
538
+
539
+ } else {
540
+
541
+ if ( arraysEqual( cache, v ) ) return;
450
542
 
451
- copyArray( cache, v );
543
+ gl.uniform4uiv( this.addr, v );
544
+
545
+ copyArray( cache, v );
546
+
547
+ }
452
548
 
453
549
  }
454
550
 
@@ -694,11 +790,19 @@ function setValueV4uiArray( gl, v ) {
694
790
 
695
791
  function setValueT1Array( gl, v, textures ) {
696
792
 
793
+ const cache = this.cache;
794
+
697
795
  const n = v.length;
698
796
 
699
797
  const units = allocTexUnits( textures, n );
700
798
 
701
- gl.uniform1iv( this.addr, units );
799
+ if ( ! arraysEqual( cache, units ) ) {
800
+
801
+ gl.uniform1iv( this.addr, units );
802
+
803
+ copyArray( cache, units );
804
+
805
+ }
702
806
 
703
807
  for ( let i = 0; i !== n; ++ i ) {
704
808
 
@@ -710,11 +814,19 @@ function setValueT1Array( gl, v, textures ) {
710
814
 
711
815
  function setValueT3DArray( gl, v, textures ) {
712
816
 
817
+ const cache = this.cache;
818
+
713
819
  const n = v.length;
714
820
 
715
821
  const units = allocTexUnits( textures, n );
716
822
 
717
- gl.uniform1iv( this.addr, units );
823
+ if ( ! arraysEqual( cache, units ) ) {
824
+
825
+ gl.uniform1iv( this.addr, units );
826
+
827
+ copyArray( cache, units );
828
+
829
+ }
718
830
 
719
831
  for ( let i = 0; i !== n; ++ i ) {
720
832
 
@@ -726,11 +838,19 @@ function setValueT3DArray( gl, v, textures ) {
726
838
 
727
839
  function setValueT6Array( gl, v, textures ) {
728
840
 
841
+ const cache = this.cache;
842
+
729
843
  const n = v.length;
730
844
 
731
845
  const units = allocTexUnits( textures, n );
732
846
 
733
- gl.uniform1iv( this.addr, units );
847
+ if ( ! arraysEqual( cache, units ) ) {
848
+
849
+ gl.uniform1iv( this.addr, units );
850
+
851
+ copyArray( cache, units );
852
+
853
+ }
734
854
 
735
855
  for ( let i = 0; i !== n; ++ i ) {
736
856
 
@@ -742,11 +862,19 @@ function setValueT6Array( gl, v, textures ) {
742
862
 
743
863
  function setValueT2DArrayArray( gl, v, textures ) {
744
864
 
865
+ const cache = this.cache;
866
+
745
867
  const n = v.length;
746
868
 
747
869
  const units = allocTexUnits( textures, n );
748
870
 
749
- gl.uniform1iv( this.addr, units );
871
+ if ( ! arraysEqual( cache, units ) ) {
872
+
873
+ gl.uniform1iv( this.addr, units );
874
+
875
+ copyArray( cache, units );
876
+
877
+ }
750
878
 
751
879
  for ( let i = 0; i !== n; ++ i ) {
752
880
 
@@ -43,7 +43,6 @@ function WebGLUtils( gl, extensions, capabilities ) {
43
43
  if ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;
44
44
  if ( p === DepthFormat ) return gl.DEPTH_COMPONENT;
45
45
  if ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;
46
- if ( p === RedFormat ) return gl.RED;
47
46
 
48
47
  // @deprecated since r137
49
48
 
@@ -74,6 +73,7 @@ function WebGLUtils( gl, extensions, capabilities ) {
74
73
 
75
74
  // WebGL2 formats.
76
75
 
76
+ if ( p === RedFormat ) return gl.RED;
77
77
  if ( p === RedIntegerFormat ) return gl.RED_INTEGER;
78
78
  if ( p === RGFormat ) return gl.RG;
79
79
  if ( p === RGIntegerFormat ) return gl.RG_INTEGER;
@@ -90,6 +90,31 @@ class WebXRController {
90
90
 
91
91
  }
92
92
 
93
+ connect( inputSource ) {
94
+
95
+ if ( inputSource && inputSource.hand ) {
96
+
97
+ const hand = this._hand;
98
+
99
+ if ( hand ) {
100
+
101
+ for ( const inputjoint of inputSource.hand.values() ) {
102
+
103
+ // Initialize hand with joints when connected
104
+ this._getHandJoint( hand, inputjoint );
105
+
106
+ }
107
+
108
+ }
109
+
110
+ }
111
+
112
+ this.dispatchEvent( { type: 'connected', data: inputSource } );
113
+
114
+ return this;
115
+
116
+ }
117
+
93
118
  disconnect( inputSource ) {
94
119
 
95
120
  this.dispatchEvent( { type: 'disconnected', data: inputSource } );
@@ -137,19 +162,8 @@ class WebXRController {
137
162
  // Update the joints groups with the XRJoint poses
138
163
  const jointPose = frame.getJointPose( inputjoint, referenceSpace );
139
164
 
140
- if ( hand.joints[ inputjoint.jointName ] === undefined ) {
141
-
142
- // The transform of this joint will be updated with the joint pose on each frame
143
- const joint = new Group();
144
- joint.matrixAutoUpdate = false;
145
- joint.visible = false;
146
- hand.joints[ inputjoint.jointName ] = joint;
147
- // ??
148
- hand.add( joint );
149
-
150
- }
151
-
152
- const joint = hand.joints[ inputjoint.jointName ];
165
+ // The transform of this joint will be updated with the joint pose on each frame
166
+ const joint = this._getHandJoint( hand, inputjoint );
153
167
 
154
168
  if ( jointPose !== null ) {
155
169
 
@@ -301,6 +315,25 @@ class WebXRController {
301
315
 
302
316
  }
303
317
 
318
+ // private method
319
+
320
+ _getHandJoint( hand, inputjoint ) {
321
+
322
+ if ( hand.joints[ inputjoint.jointName ] === undefined ) {
323
+
324
+ const joint = new Group();
325
+ joint.matrixAutoUpdate = false;
326
+ joint.visible = false;
327
+ hand.joints[ inputjoint.jointName ] = joint;
328
+
329
+ hand.add( joint );
330
+
331
+ }
332
+
333
+ return hand.joints[ inputjoint.jointName ];
334
+
335
+ }
336
+
304
337
  }
305
338
 
306
339
 
@@ -46,6 +46,9 @@ class WebXRManager extends EventDispatcher {
46
46
  const controllers = [];
47
47
  const controllerInputSources = [];
48
48
 
49
+ const planes = new Set();
50
+ const planesLastChangedTimes = new Map();
51
+
49
52
  //
50
53
 
51
54
  const cameraL = new PerspectiveCamera();
@@ -370,9 +373,9 @@ class WebXRManager extends EventDispatcher {
370
373
  };
371
374
 
372
375
  this.removeLayer = function(layer) {
376
+ layers.splice( layers.indexOf(layer), 1 );
373
377
  if (!window.XRWebGLBinding || !this.layersEnabled || !session) { return; }
374
378
 
375
- layers.splice( layers.indexOf(layer), 1 );
376
379
  this.updateLayers();
377
380
  };
378
381
 
@@ -395,7 +398,7 @@ class WebXRManager extends EventDispatcher {
395
398
  if ( index >= 0 ) {
396
399
 
397
400
  controllerInputSources[ index ] = null;
398
- controllers[ index ].dispatchEvent( { type: 'disconnected', data: inputSource } );
401
+ controllers[ index ].disconnect( inputSource );
399
402
 
400
403
  }
401
404
 
@@ -441,7 +444,7 @@ class WebXRManager extends EventDispatcher {
441
444
 
442
445
  if ( controller ) {
443
446
 
444
- controller.dispatchEvent( { type: 'connected', data: inputSource } );
447
+ controller.connect( inputSource );
445
448
 
446
449
  }
447
450
 
@@ -638,6 +641,12 @@ class WebXRManager extends EventDispatcher {
638
641
 
639
642
  };
640
643
 
644
+ this.getPlanes = function () {
645
+
646
+ return planes;
647
+
648
+ };
649
+
641
650
  // Animation Loop
642
651
 
643
652
  let onAnimationFrameCallback = null;
@@ -746,6 +755,65 @@ class WebXRManager extends EventDispatcher {
746
755
 
747
756
  if ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );
748
757
 
758
+ if ( frame.detectedPlanes ) {
759
+
760
+ scope.dispatchEvent( { type: 'planesdetected', data: frame.detectedPlanes } );
761
+
762
+ let planesToRemove = null;
763
+
764
+ for ( const plane of planes ) {
765
+
766
+ if ( ! frame.detectedPlanes.has( plane ) ) {
767
+
768
+ if ( planesToRemove === null ) {
769
+
770
+ planesToRemove = [];
771
+
772
+ }
773
+
774
+ planesToRemove.push( plane );
775
+
776
+ }
777
+
778
+ }
779
+
780
+ if ( planesToRemove !== null ) {
781
+
782
+ for ( const plane of planesToRemove ) {
783
+
784
+ planes.delete( plane );
785
+ planesLastChangedTimes.delete( plane );
786
+ scope.dispatchEvent( { type: 'planeremoved', data: plane } );
787
+
788
+ }
789
+
790
+ }
791
+
792
+ for ( const plane of frame.detectedPlanes ) {
793
+
794
+ if ( ! planes.has( plane ) ) {
795
+
796
+ planes.add( plane );
797
+ planesLastChangedTimes.set( plane, frame.lastChangedTime );
798
+ scope.dispatchEvent( { type: 'planeadded', data: plane } );
799
+
800
+ } else {
801
+
802
+ const lastKnownTime = planesLastChangedTimes.get( plane );
803
+
804
+ if ( plane.lastChangedTime > lastKnownTime ) {
805
+
806
+ planesLastChangedTimes.set( plane, plane.lastChangedTime );
807
+ scope.dispatchEvent( { type: 'planechanged', data: plane } );
808
+
809
+ }
810
+
811
+ }
812
+
813
+ }
814
+
815
+ }
816
+
749
817
  xrFrame = null;
750
818
 
751
819
  }
@@ -14,6 +14,9 @@ class Scene extends Object3D {
14
14
  this.environment = null;
15
15
  this.fog = null;
16
16
 
17
+ this.backgroundBlurriness = 0;
18
+ this.backgroundIntensity = 1;
19
+
17
20
  this.overrideMaterial = null;
18
21
 
19
22
  if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {
@@ -32,6 +35,9 @@ class Scene extends Object3D {
32
35
  if ( source.environment !== null ) this.environment = source.environment.clone();
33
36
  if ( source.fog !== null ) this.fog = source.fog.clone();
34
37
 
38
+ this.backgroundBlurriness = source.backgroundBlurriness;
39
+ this.backgroundIntensity = source.backgroundIntensity;
40
+
35
41
  if ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();
36
42
 
37
43
  this.matrixAutoUpdate = source.matrixAutoUpdate;
@@ -45,6 +51,8 @@ class Scene extends Object3D {
45
51
  const data = super.toJSON( meta );
46
52
 
47
53
  if ( this.fog !== null ) data.object.fog = this.fog.toJSON();
54
+ if ( this.backgroundBlurriness > 0 ) data.backgroundBlurriness = this.backgroundBlurriness;
55
+ if ( this.backgroundIntensity !== 1 ) data.backgroundIntensity = this.backgroundIntensity;
48
56
 
49
57
  return data;
50
58
 
@@ -0,0 +1,18 @@
1
+ import { ClampToEdgeWrapping } from '../constants.js';
2
+ import { CompressedTexture } from './CompressedTexture.js';
3
+
4
+ class CompressedArrayTexture extends CompressedTexture {
5
+
6
+ constructor( mipmaps, width, height, depth, format, type ) {
7
+
8
+ super( mipmaps, width, height, format, type );
9
+
10
+ this.isCompressedArrayTexture = true;
11
+ this.image.depth = depth;
12
+ this.wrapR = ClampToEdgeWrapping;
13
+
14
+ }
15
+
16
+ }
17
+
18
+ export { CompressedArrayTexture };
@@ -19,7 +19,7 @@ let textureId = 0;
19
19
 
20
20
  class Texture extends EventDispatcher {
21
21
 
22
- constructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {
22
+ constructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, encoding = LinearEncoding ) {
23
23
 
24
24
  super();
25
25
 
@@ -304,5 +304,6 @@ class Texture extends EventDispatcher {
304
304
 
305
305
  Texture.DEFAULT_IMAGE = null;
306
306
  Texture.DEFAULT_MAPPING = UVMapping;
307
+ Texture.DEFAULT_ANISOTROPY = 1;
307
308
 
308
309
  export { Texture };