super-three 0.141.0 → 0.144.0

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 (353) hide show
  1. package/README.md +8 -8
  2. package/build/three.cjs +1558 -1034
  3. package/build/three.js +1558 -1034
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +2012 -1243
  6. package/examples/js/animation/MMDPhysics.js +1 -16
  7. package/examples/js/controls/ArcballControls.js +16 -3
  8. package/examples/js/controls/FirstPersonControls.js +0 -7
  9. package/examples/js/controls/FlyControls.js +0 -8
  10. package/examples/js/controls/OrbitControls.js +0 -4
  11. package/examples/js/controls/PointerLockControls.js +0 -8
  12. package/examples/js/controls/TrackballControls.js +0 -2
  13. package/examples/js/controls/TransformControls.js +20 -16
  14. package/examples/js/effects/AnaglyphEffect.js +2 -2
  15. package/examples/js/effects/OutlineEffect.js +4 -24
  16. package/examples/js/effects/ParallaxBarrierEffect.js +2 -2
  17. package/examples/js/effects/PeppersGhostEffect.js +2 -2
  18. package/examples/js/effects/StereoEffect.js +2 -2
  19. package/examples/js/environments/RoomEnvironment.js +22 -0
  20. package/examples/js/exporters/ColladaExporter.js +4 -13
  21. package/examples/js/exporters/DRACOExporter.js +0 -12
  22. package/examples/js/exporters/GLTFExporter.js +28 -29
  23. package/examples/js/exporters/OBJExporter.js +2 -23
  24. package/examples/js/exporters/PLYExporter.js +12 -24
  25. package/examples/js/exporters/STLExporter.js +0 -7
  26. package/examples/js/exporters/USDZExporter.js +6 -0
  27. package/examples/js/geometries/ConvexGeometry.js +1 -1
  28. package/examples/js/geometries/ParametricGeometry.js +1 -8
  29. package/examples/js/interactive/SelectionHelper.js +2 -0
  30. package/examples/js/libs/ktx-parse.umd.js +1 -0
  31. package/examples/js/libs/meshopt_decoder.js +98 -32
  32. package/examples/js/loaders/ColladaLoader.js +1 -0
  33. package/examples/js/loaders/DRACOLoader.js +2 -25
  34. package/examples/js/loaders/EXRLoader.js +2 -13
  35. package/examples/js/loaders/FBXLoader.js +10 -3
  36. package/examples/js/loaders/FontLoader.js +3 -16
  37. package/examples/js/loaders/GLTFLoader.js +52 -36
  38. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -11
  39. package/examples/js/loaders/LDrawLoader.js +139 -74
  40. package/examples/js/loaders/OBJLoader.js +7 -13
  41. package/examples/js/loaders/PCDLoader.js +59 -14
  42. package/examples/js/loaders/PLYLoader.js +3 -3
  43. package/examples/js/loaders/SVGLoader.js +4 -3
  44. package/examples/js/loaders/TIFFLoader.js +31 -0
  45. package/examples/js/loaders/VRMLLoader.js +33 -24
  46. package/examples/js/loaders/VTKLoader.js +1 -1
  47. package/examples/js/loaders/lwo/LWO2Parser.js +8 -7
  48. package/examples/js/loaders/lwo/LWO3Parser.js +8 -7
  49. package/examples/js/materials/MeshGouraudMaterial.js +385 -0
  50. package/examples/js/math/ColorConverter.js +0 -50
  51. package/examples/js/misc/GPUComputationRenderer.js +23 -0
  52. package/examples/js/misc/Volume.js +198 -190
  53. package/examples/js/misc/VolumeSlice.js +90 -88
  54. package/examples/js/modifiers/SimplifyModifier.js +1 -1
  55. package/examples/js/objects/GroundProjectedEnv.js +193 -0
  56. package/examples/js/objects/Reflector.js +9 -2
  57. package/examples/js/objects/ReflectorForSSRPass.js +3 -4
  58. package/examples/js/objects/Refractor.js +10 -4
  59. package/examples/js/objects/ShadowMesh.js +5 -1
  60. package/examples/js/postprocessing/OutlinePass.js +5 -3
  61. package/examples/js/renderers/CSS2DRenderer.js +2 -2
  62. package/examples/js/renderers/CSS3DRenderer.js +2 -2
  63. package/examples/js/renderers/Projector.js +2 -23
  64. package/examples/js/shaders/LuminosityShader.js +1 -1
  65. package/examples/js/shaders/MMDToonShader.js +6 -2
  66. package/examples/js/shaders/ToneMapShader.js +1 -1
  67. package/examples/js/utils/BufferGeometryUtils.js +1 -1
  68. package/examples/js/utils/GeometryUtils.js +2 -18
  69. package/examples/js/utils/PackedPhongMaterial.js +1 -1
  70. package/examples/js/utils/SceneUtils.js +0 -16
  71. package/examples/jsm/animation/MMDPhysics.js +3 -22
  72. package/examples/jsm/controls/ArcballControls.js +17 -2
  73. package/examples/jsm/controls/FirstPersonControls.js +0 -7
  74. package/examples/jsm/controls/FlyControls.js +0 -7
  75. package/examples/jsm/controls/OrbitControls.js +0 -5
  76. package/examples/jsm/controls/PointerLockControls.js +0 -7
  77. package/examples/jsm/controls/TrackballControls.js +0 -3
  78. package/examples/jsm/controls/TransformControls.js +18 -16
  79. package/examples/jsm/effects/AnaglyphEffect.js +2 -2
  80. package/examples/jsm/effects/OutlineEffect.js +4 -25
  81. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
  82. package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
  83. package/examples/jsm/effects/StereoEffect.js +2 -2
  84. package/examples/jsm/environments/RoomEnvironment.js +23 -0
  85. package/examples/jsm/exporters/ColladaExporter.js +4 -13
  86. package/examples/jsm/exporters/DRACOExporter.js +0 -13
  87. package/examples/jsm/exporters/GLTFExporter.js +29 -31
  88. package/examples/jsm/exporters/KTX2Exporter.js +29 -29
  89. package/examples/jsm/exporters/OBJExporter.js +0 -18
  90. package/examples/jsm/exporters/PLYExporter.js +14 -22
  91. package/examples/jsm/exporters/STLExporter.js +1 -9
  92. package/examples/jsm/exporters/USDZExporter.js +14 -3
  93. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  94. package/examples/jsm/geometries/ParametricGeometry.js +0 -6
  95. package/examples/jsm/interactive/HTMLMesh.js +9 -9
  96. package/examples/jsm/interactive/SelectionHelper.js +5 -3
  97. package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
  98. package/examples/jsm/libs/utif.module.js +1579 -0
  99. package/examples/jsm/libs/zstddec.module.js +1 -0
  100. package/examples/jsm/loaders/ColladaLoader.js +1 -0
  101. package/examples/jsm/loaders/DRACOLoader.js +2 -28
  102. package/examples/jsm/loaders/EXRLoader.js +3 -13
  103. package/examples/jsm/loaders/FBXLoader.js +10 -3
  104. package/examples/jsm/loaders/FontLoader.js +3 -16
  105. package/examples/jsm/loaders/GLTFLoader.js +52 -36
  106. package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
  107. package/examples/jsm/loaders/KTX2Loader.js +192 -30
  108. package/examples/jsm/loaders/LDrawLoader.js +135 -74
  109. package/examples/jsm/loaders/OBJLoader.js +6 -14
  110. package/examples/jsm/loaders/PCDLoader.js +59 -13
  111. package/examples/jsm/loaders/PLYLoader.js +3 -3
  112. package/examples/jsm/loaders/RGBELoader.js +1 -1
  113. package/examples/jsm/loaders/SVGLoader.js +4 -3
  114. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  115. package/examples/jsm/loaders/USDZLoader.js +393 -0
  116. package/examples/jsm/loaders/VRMLLoader.js +23 -25
  117. package/examples/jsm/loaders/VTKLoader.js +1 -1
  118. package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
  119. package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
  120. package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
  121. package/examples/jsm/math/ColorConverter.js +1 -49
  122. package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
  123. package/examples/jsm/misc/Volume.js +169 -171
  124. package/examples/jsm/misc/VolumeSlice.js +78 -80
  125. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  126. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
  127. package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
  128. package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
  129. package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
  130. package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
  131. package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
  132. package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
  133. package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
  134. package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
  135. package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
  136. package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
  137. package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
  138. package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
  139. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +1 -1
  140. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
  141. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +1 -1
  142. package/examples/jsm/node-editor/math/AngleEditor.js +1 -1
  143. package/examples/jsm/node-editor/math/DotEditor.js +1 -1
  144. package/examples/jsm/node-editor/math/InvertEditor.js +1 -1
  145. package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
  146. package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
  147. package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
  148. package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
  149. package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
  150. package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
  151. package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
  152. package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
  153. package/examples/jsm/node-editor/utils/PreviewEditor.js +3 -3
  154. package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
  155. package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
  156. package/examples/jsm/nodes/Nodes.js +43 -13
  157. package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
  158. package/examples/jsm/nodes/accessors/NormalNode.js +4 -4
  159. package/examples/jsm/nodes/accessors/PositionNode.js +5 -5
  160. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
  161. package/examples/jsm/nodes/core/AttributeNode.js +3 -3
  162. package/examples/jsm/nodes/core/CodeNode.js +3 -3
  163. package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
  164. package/examples/jsm/nodes/core/FunctionNode.js +2 -2
  165. package/examples/jsm/nodes/core/Node.js +14 -12
  166. package/examples/jsm/nodes/core/NodeBuilder.js +12 -12
  167. package/examples/jsm/nodes/core/NodeUtils.js +23 -1
  168. package/examples/jsm/nodes/core/{NodeVary.js → NodeVarying.js} +3 -3
  169. package/examples/jsm/nodes/core/{VaryNode.js → VaryingNode.js} +7 -7
  170. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +94 -0
  171. package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
  172. package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -0
  173. package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
  174. package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
  175. package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
  176. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +31 -0
  177. package/examples/jsm/nodes/materials/Materials.js +13 -25
  178. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
  179. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
  180. package/examples/jsm/nodes/materials/NodeMaterial.js +2 -2
  181. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
  182. package/examples/jsm/nodes/materialx/Disclaimer.md +199 -0
  183. package/examples/jsm/nodes/materialx/functions/lib/mx_hsv.js +56 -0
  184. package/examples/jsm/nodes/materialx/functions/lib/mx_noise.js +607 -0
  185. package/examples/jsm/nodes/math/MathNode.js +2 -12
  186. package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
  187. package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
  188. package/examples/jsm/nodes/shadernode/ShaderNode.js +5 -5
  189. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +8 -5
  190. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +20 -6
  191. package/examples/jsm/nodes/utils/ConvertNode.js +8 -3
  192. package/examples/jsm/nodes/utils/JoinNode.js +7 -7
  193. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +2 -1
  194. package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
  195. package/examples/jsm/nodes/utils/SplitNode.js +21 -5
  196. package/examples/jsm/nodes/utils/TimerNode.js +2 -2
  197. package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
  198. package/examples/jsm/objects/Reflector.js +12 -5
  199. package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
  200. package/examples/jsm/objects/Refractor.js +12 -6
  201. package/examples/jsm/objects/ShadowMesh.js +8 -2
  202. package/examples/jsm/postprocessing/OutlinePass.js +5 -3
  203. package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
  204. package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
  205. package/examples/jsm/renderers/Projector.js +2 -24
  206. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
  207. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +329 -218
  208. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
  209. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +39 -3
  210. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
  211. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
  212. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  213. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
  214. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
  215. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
  216. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +66 -81
  217. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
  218. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
  219. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
  220. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +25 -30
  221. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  222. package/examples/jsm/shaders/LuminosityShader.js +1 -1
  223. package/examples/jsm/shaders/MMDToonShader.js +2 -2
  224. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  225. package/examples/jsm/utils/BufferGeometryUtils.js +2 -1
  226. package/examples/jsm/utils/GeometryUtils.js +17 -25
  227. package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
  228. package/examples/jsm/utils/SceneUtils.js +1 -21
  229. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
  230. package/examples/jsm/webxr/VRButton.js +1 -7
  231. package/package.json +18 -14
  232. package/src/Three.Legacy.js +262 -36
  233. package/src/Three.js +3 -2
  234. package/src/animation/AnimationAction.js +6 -5
  235. package/src/animation/AnimationClip.js +1 -1
  236. package/src/animation/AnimationMixer.js +1 -1
  237. package/src/animation/AnimationUtils.js +204 -199
  238. package/src/animation/KeyframeTrack.js +1 -1
  239. package/src/animation/PropertyBinding.js +24 -5
  240. package/src/cameras/CubeCamera.js +0 -7
  241. package/src/constants.js +2 -4
  242. package/src/core/BufferAttribute.js +81 -111
  243. package/src/core/BufferGeometry.js +3 -41
  244. package/src/core/InstancedBufferAttribute.js +0 -10
  245. package/src/core/InterleavedBuffer.js +1 -1
  246. package/src/core/InterleavedBufferAttribute.js +56 -7
  247. package/src/core/Object3D.js +22 -5
  248. package/src/core/Uniform.js +0 -7
  249. package/src/core/UniformsGroup.js +92 -0
  250. package/src/extras/DataUtils.js +104 -88
  251. package/src/extras/core/Path.js +1 -0
  252. package/src/extras/core/ShapePath.js +1 -4
  253. package/src/extras/curves/CatmullRomCurve3.js +4 -2
  254. package/src/geometries/BoxGeometry.js +1 -1
  255. package/src/geometries/CapsuleGeometry.js +1 -1
  256. package/src/geometries/CircleGeometry.js +1 -1
  257. package/src/geometries/ConeGeometry.js +1 -1
  258. package/src/geometries/CylinderGeometry.js +2 -1
  259. package/src/geometries/DodecahedronGeometry.js +1 -1
  260. package/src/geometries/EdgesGeometry.js +5 -4
  261. package/src/geometries/ExtrudeGeometry.js +2 -11
  262. package/src/geometries/IcosahedronGeometry.js +1 -1
  263. package/src/geometries/LatheGeometry.js +2 -2
  264. package/src/geometries/OctahedronGeometry.js +1 -1
  265. package/src/geometries/PlaneGeometry.js +2 -1
  266. package/src/geometries/PolyhedronGeometry.js +1 -1
  267. package/src/geometries/RingGeometry.js +1 -1
  268. package/src/geometries/ShapeGeometry.js +2 -1
  269. package/src/geometries/SphereGeometry.js +2 -1
  270. package/src/geometries/TetrahedronGeometry.js +1 -1
  271. package/src/geometries/TorusGeometry.js +2 -1
  272. package/src/geometries/TorusKnotGeometry.js +2 -1
  273. package/src/geometries/TubeGeometry.js +2 -1
  274. package/src/geometries/WireframeGeometry.js +1 -0
  275. package/src/helpers/CameraHelper.js +97 -38
  276. package/src/helpers/DirectionalLightHelper.js +1 -0
  277. package/src/helpers/HemisphereLightHelper.js +1 -0
  278. package/src/helpers/PlaneHelper.js +6 -9
  279. package/src/helpers/PolarGridHelper.js +18 -14
  280. package/src/helpers/SpotLightHelper.js +1 -0
  281. package/src/lights/SpotLight.js +2 -0
  282. package/src/loaders/FileLoader.js +12 -1
  283. package/src/loaders/LoadingManager.js +1 -1
  284. package/src/loaders/MaterialLoader.js +49 -7
  285. package/src/loaders/ObjectLoader.js +4 -41
  286. package/src/materials/Material.js +1 -33
  287. package/src/materials/Materials.js +0 -27
  288. package/src/materials/MeshLambertMaterial.js +28 -1
  289. package/src/materials/ShaderMaterial.js +3 -7
  290. package/src/math/Color.js +3 -13
  291. package/src/math/MathUtils.js +1 -7
  292. package/src/math/Matrix3.js +1 -7
  293. package/src/math/Matrix4.js +3 -27
  294. package/src/math/Quaternion.js +1 -21
  295. package/src/math/Vector2.js +4 -24
  296. package/src/math/Vector3.js +7 -46
  297. package/src/math/Vector4.js +4 -24
  298. package/src/renderers/WebGLRenderer.js +84 -8
  299. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
  300. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
  301. package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
  302. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
  303. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
  304. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
  305. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
  306. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
  307. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -12
  308. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  309. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
  310. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
  311. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
  312. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
  313. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
  314. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
  315. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
  316. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
  317. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  318. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
  319. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
  320. package/src/renderers/shaders/ShaderChunk.js +4 -2
  321. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
  322. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
  323. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
  324. package/src/renderers/shaders/ShaderLib.js +31 -31
  325. package/src/renderers/shaders/UniformsLib.js +12 -11
  326. package/src/renderers/shaders/UniformsUtils.js +14 -0
  327. package/src/renderers/webgl/WebGLBackground.js +2 -2
  328. package/src/renderers/webgl/WebGLLights.js +37 -13
  329. package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
  330. package/src/renderers/webgl/WebGLProgram.js +6 -11
  331. package/src/renderers/webgl/WebGLPrograms.js +30 -26
  332. package/src/renderers/webgl/WebGLRenderLists.js +5 -4
  333. package/src/renderers/webgl/WebGLRenderStates.js +5 -4
  334. package/src/renderers/webgl/WebGLShaderCache.js +9 -6
  335. package/src/renderers/webgl/WebGLShadowMap.js +10 -15
  336. package/src/renderers/webgl/WebGLState.js +47 -0
  337. package/src/renderers/webgl/WebGLUniforms.js +4 -4
  338. package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
  339. package/src/renderers/webgl/WebGLUtils.js +2 -0
  340. package/src/renderers/webvr/WebVRManager.js +42 -9
  341. package/src/renderers/webvr/WebVRUtils.js +1 -1
  342. package/src/renderers/webxr/WebXRController.js +45 -37
  343. package/src/renderers/webxr/WebXRManager.js +58 -33
  344. package/src/scenes/Scene.js +16 -3
  345. package/src/textures/Source.js +1 -1
  346. package/src/utils.js +1 -1
  347. package/examples/js/controls/experimental/CameraControls.js +0 -1048
  348. package/examples/js/loaders/KTX2Loader.js +0 -558
  349. package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
  350. package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
  351. package/examples/jsm/package.json +0 -3
  352. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
  353. package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
@@ -16,96 +16,94 @@ import {
16
16
  * @param {string} [axis='z'] For now only 'x', 'y' or 'z' but later it will change to a normal vector
17
17
  * @see Volume
18
18
  */
19
- function VolumeSlice( volume, index, axis ) {
19
+ class VolumeSlice {
20
20
 
21
- const slice = this;
22
- /**
23
- * @member {Volume} volume The associated volume
24
- */
25
- this.volume = volume;
26
- /**
27
- * @member {Number} index The index of the slice, if changed, will automatically call updateGeometry at the next repaint
28
- */
29
- index = index || 0;
30
- Object.defineProperty( this, 'index', {
31
- get: function () {
32
-
33
- return index;
34
-
35
- },
36
- set: function ( value ) {
37
-
38
- index = value;
39
- slice.geometryNeedsUpdate = true;
40
- return index;
41
-
42
- }
43
- } );
44
- /**
45
- * @member {String} axis The normal axis
46
- */
47
- this.axis = axis || 'z';
48
-
49
- /**
50
- * @member {HTMLCanvasElement} canvas The final canvas used for the texture
51
- */
52
- /**
53
- * @member {CanvasRenderingContext2D} ctx Context of the canvas
54
- */
55
- this.canvas = document.createElement( 'canvas' );
56
- /**
57
- * @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
58
- */
59
- /**
60
- * @member {CanvasRenderingContext2D} ctxBuffer Context of the canvas buffer
61
- */
62
- this.canvasBuffer = document.createElement( 'canvas' );
63
- this.updateGeometry();
21
+ constructor( volume, index, axis ) {
64
22
 
23
+ const slice = this;
24
+ /**
25
+ * @member {Volume} volume The associated volume
26
+ */
27
+ this.volume = volume;
28
+ /**
29
+ * @member {Number} index The index of the slice, if changed, will automatically call updateGeometry at the next repaint
30
+ */
31
+ index = index || 0;
32
+ Object.defineProperty( this, 'index', {
33
+ get: function () {
65
34
 
66
- const canvasMap = new Texture( this.canvas );
67
- canvasMap.minFilter = LinearFilter;
68
- canvasMap.wrapS = canvasMap.wrapT = ClampToEdgeWrapping;
69
- const material = new MeshBasicMaterial( { map: canvasMap, side: DoubleSide, transparent: true } );
70
- /**
71
- * @member {Mesh} mesh The mesh ready to get used in the scene
72
- */
73
- this.mesh = new Mesh( this.geometry, material );
74
- this.mesh.matrixAutoUpdate = false;
75
- /**
76
- * @member {Boolean} geometryNeedsUpdate If set to true, updateGeometry will be triggered at the next repaint
77
- */
78
- this.geometryNeedsUpdate = true;
79
- this.repaint();
35
+ return index;
80
36
 
81
- /**
82
- * @member {Number} iLength Width of slice in the original coordinate system, corresponds to the width of the buffer canvas
83
- */
37
+ },
38
+ set: function ( value ) {
84
39
 
85
- /**
86
- * @member {Number} jLength Height of slice in the original coordinate system, corresponds to the height of the buffer canvas
87
- */
40
+ index = value;
41
+ slice.geometryNeedsUpdate = true;
42
+ return index;
88
43
 
89
- /**
90
- * @member {Function} sliceAccess Function that allow the slice to access right data
91
- * @see Volume.extractPerpendicularPlane
92
- * @param {Number} i The first coordinate
93
- * @param {Number} j The second coordinate
94
- * @returns {Number} the index corresponding to the voxel in volume.data of the given position in the slice
95
- */
96
-
97
-
98
- }
44
+ }
45
+ } );
46
+ /**
47
+ * @member {String} axis The normal axis
48
+ */
49
+ this.axis = axis || 'z';
50
+
51
+ /**
52
+ * @member {HTMLCanvasElement} canvas The final canvas used for the texture
53
+ */
54
+ /**
55
+ * @member {CanvasRenderingContext2D} ctx Context of the canvas
56
+ */
57
+ this.canvas = document.createElement( 'canvas' );
58
+ /**
59
+ * @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
60
+ */
61
+ /**
62
+ * @member {CanvasRenderingContext2D} ctxBuffer Context of the canvas buffer
63
+ */
64
+ this.canvasBuffer = document.createElement( 'canvas' );
65
+ this.updateGeometry();
66
+
67
+
68
+ const canvasMap = new Texture( this.canvas );
69
+ canvasMap.minFilter = LinearFilter;
70
+ canvasMap.wrapS = canvasMap.wrapT = ClampToEdgeWrapping;
71
+ const material = new MeshBasicMaterial( { map: canvasMap, side: DoubleSide, transparent: true } );
72
+ /**
73
+ * @member {Mesh} mesh The mesh ready to get used in the scene
74
+ */
75
+ this.mesh = new Mesh( this.geometry, material );
76
+ this.mesh.matrixAutoUpdate = false;
77
+ /**
78
+ * @member {Boolean} geometryNeedsUpdate If set to true, updateGeometry will be triggered at the next repaint
79
+ */
80
+ this.geometryNeedsUpdate = true;
81
+ this.repaint();
82
+
83
+ /**
84
+ * @member {Number} iLength Width of slice in the original coordinate system, corresponds to the width of the buffer canvas
85
+ */
86
+
87
+ /**
88
+ * @member {Number} jLength Height of slice in the original coordinate system, corresponds to the height of the buffer canvas
89
+ */
90
+
91
+ /**
92
+ * @member {Function} sliceAccess Function that allow the slice to access right data
93
+ * @see Volume.extractPerpendicularPlane
94
+ * @param {Number} i The first coordinate
95
+ * @param {Number} j The second coordinate
96
+ * @returns {Number} the index corresponding to the voxel in volume.data of the given position in the slice
97
+ */
99
98
 
100
- VolumeSlice.prototype = {
101
99
 
102
- constructor: VolumeSlice,
100
+ }
103
101
 
104
102
  /**
105
103
  * @member {Function} repaint Refresh the texture and the geometry if geometryNeedsUpdate is set to true
106
104
  * @memberof VolumeSlice
107
105
  */
108
- repaint: function () {
106
+ repaint() {
109
107
 
110
108
  if ( this.geometryNeedsUpdate ) {
111
109
 
@@ -185,14 +183,14 @@ VolumeSlice.prototype = {
185
183
 
186
184
  this.mesh.material.map.needsUpdate = true;
187
185
 
188
- },
186
+ }
189
187
 
190
188
  /**
191
189
  * @member {Function} Refresh the geometry according to axis and index
192
190
  * @see Volume.extractPerpendicularPlane
193
191
  * @memberof VolumeSlice
194
192
  */
195
- updateGeometry: function () {
193
+ updateGeometry() {
196
194
 
197
195
  const extracted = this.volume.extractPerpendicularPlane( this.axis, this.index );
198
196
  this.sliceAccess = extracted.sliceAccess;
@@ -224,6 +222,6 @@ VolumeSlice.prototype = {
224
222
 
225
223
  }
226
224
 
227
- };
225
+ }
228
226
 
229
227
  export { VolumeSlice };
@@ -342,7 +342,7 @@ function collapse( vertices, faces, u, v ) { // u and v are pointers to vertices
342
342
  // delete triangles on edge uv:
343
343
  for ( let i = u.faces.length - 1; i >= 0; i -- ) {
344
344
 
345
- if ( u.faces[ i ].hasVertex( v ) ) {
345
+ if ( u.faces[ i ] && u.faces[ i ].hasVertex( v ) ) {
346
346
 
347
347
  removeFace( u.faces[ i ], faces );
348
348
 
@@ -1,5 +1,5 @@
1
1
  import { BaseNode } from '../core/BaseNode.js';
2
- import { MatcapUVNode } from 'three-nodes/Nodes.js';
2
+ import { MatcapUVNode } from 'three/nodes';
3
3
 
4
4
  export class MatcapUVEditor extends BaseNode {
5
5
 
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { NormalNode } from 'three-nodes/Nodes.js';
3
+ import { NormalNode } from 'three/nodes';
4
4
 
5
5
  export class NormalEditor extends BaseNode {
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { PositionNode } from 'three-nodes/Nodes.js';
3
+ import { PositionNode } from 'three/nodes';
4
4
 
5
5
  export class PositionEditor extends BaseNode {
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { UVNode } from 'three-nodes/Nodes.js';
3
+ import { UVNode } from 'three/nodes';
4
4
 
5
5
  export class UVEditor extends BaseNode {
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { MathNode, UniformNode } from 'three-nodes/Nodes.js';
3
+ import { MathNode, UniformNode } from 'three/nodes';
4
4
 
5
5
  const NULL_VALUE = new UniformNode( 0 );
6
6
  const ONE_VALUE = new UniformNode( 1 );
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, Element, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { NormalMapNode, ConstNode } from 'three-nodes/Nodes.js';
3
+ import { NormalMapNode, ConstNode } from 'three/nodes';
4
4
  import { TangentSpaceNormalMap, ObjectSpaceNormalMap } from 'three';
5
5
 
6
6
  const nullValue = new ConstNode( 0 );
@@ -1,7 +1,7 @@
1
1
  import { ColorInput, StringInput, NumberInput, LabelElement, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
3
  import { Color } from 'three';
4
- import { UniformNode } from 'three-nodes/Nodes.js';
4
+ import { UniformNode } from 'three/nodes';
5
5
 
6
6
  export class ColorEditor extends BaseNode {
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { NumberInput, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { UniformNode } from 'three-nodes/Nodes.js';
3
+ import { UniformNode } from 'three/nodes';
4
4
 
5
5
  export class FloatEditor extends BaseNode {
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { ButtonInput, SliderInput, NumberInput, LabelElement, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { UniformNode } from 'three-nodes/Nodes.js';
3
+ import { UniformNode } from 'three/nodes';
4
4
 
5
5
  export class SliderEditor extends BaseNode {
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { LabelElement, ToggleInput, SelectInput } from '../../libs/flow.module.js';
2
2
  import { BaseNode, onNodeValidElement } from '../core/BaseNode.js';
3
- import { TextureNode, UVNode } from 'three-nodes/Nodes.js';
3
+ import { TextureNode, UVNode } from 'three/nodes';
4
4
  import { Texture, TextureLoader, RepeatWrapping, ClampToEdgeWrapping, MirroredRepeatWrapping } from 'three';
5
5
 
6
6
  const fileTexture = new WeakMap();
@@ -1,7 +1,7 @@
1
1
  import { NumberInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
3
  import { Vector2 } from 'three';
4
- import { UniformNode } from 'three-nodes/Nodes.js';
4
+ import { UniformNode } from 'three/nodes';
5
5
 
6
6
  export class Vector2Editor extends BaseNode {
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { NumberInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
3
  import { Vector3 } from 'three';
4
- import { UniformNode } from 'three-nodes/Nodes.js';
4
+ import { UniformNode } from 'three/nodes';
5
5
 
6
6
  export class Vector3Editor extends BaseNode {
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { NumberInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
3
  import { Vector4 } from 'three';
4
- import { UniformNode } from 'three-nodes/Nodes.js';
4
+ import { UniformNode } from 'three/nodes';
5
5
 
6
6
  export class Vector4Editor extends BaseNode {
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { ColorInput, SliderInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { MeshBasicNodeMaterial } from 'three-nodes/Nodes.js';
3
+ import { MeshBasicNodeMaterial } from 'three/nodes';
4
4
  import { MathUtils } from 'three';
5
5
 
6
6
  export class BasicMaterialEditor extends BaseNode {
@@ -1,6 +1,6 @@
1
1
  import { ColorInput, ToggleInput, SliderInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { PointsNodeMaterial } from 'three-nodes/Nodes.js';
3
+ import { PointsNodeMaterial } from 'three/nodes';
4
4
  import * as THREE from 'three';
5
5
 
6
6
  export class PointsMaterialEditor extends BaseNode {
@@ -1,6 +1,6 @@
1
1
  import { ColorInput, SliderInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { MeshStandardNodeMaterial } from 'three-nodes/Nodes.js';
3
+ import { MeshStandardNodeMaterial } from 'three/nodes';
4
4
  import * as THREE from 'three';
5
5
 
6
6
  export class StandardMaterialEditor extends BaseNode {
@@ -1,7 +1,7 @@
1
1
  import { SelectInput, Element, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
3
  import { Vector3 } from 'three';
4
- import { MathNode, UniformNode } from 'three-nodes/Nodes.js';
4
+ import { MathNode, UniformNode } from 'three/nodes';
5
5
 
6
6
  const DEFAULT_VALUE = new UniformNode( new Vector3() );
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { MathNode, UniformNode } from 'three-nodes/Nodes.js';
3
+ import { MathNode, UniformNode } from 'three/nodes';
4
4
 
5
5
  const NULL_VALUE = new UniformNode( 0 );
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { MathNode, UniformNode } from 'three-nodes/Nodes.js';
3
+ import { MathNode, UniformNode } from 'three/nodes';
4
4
 
5
5
  const DEFAULT_VALUE = new UniformNode( 0 );
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, LabelElement, Element, NumberInput } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { MathNode, UniformNode } from 'three-nodes/Nodes.js';
3
+ import { MathNode, UniformNode } from 'three/nodes';
4
4
 
5
5
  export class LimiterEditor extends BaseNode {
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
3
  import { Vector3 } from 'three';
4
- import { MathNode, UniformNode } from 'three-nodes/Nodes.js';
4
+ import { MathNode, UniformNode } from 'three/nodes';
5
5
 
6
6
  const DEFAULT_VALUE = new UniformNode( new Vector3() );
7
7
 
@@ -1,5 +1,5 @@
1
1
  import { Element, LabelElement, NumberInput, SelectInput } from '../../libs/flow.module.js';
2
- import { UniformNode, OperatorNode } from 'three-nodes/Nodes.js';
2
+ import { UniformNode, OperatorNode } from 'three/nodes';
3
3
  import { BaseNode } from '../core/BaseNode.js';
4
4
 
5
5
  export class OperatorEditor extends BaseNode {
@@ -1,6 +1,6 @@
1
1
  import { LabelElement, NumberInput } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { MathNode, UniformNode } from 'three-nodes/Nodes.js';
3
+ import { MathNode, UniformNode } from 'three/nodes';
4
4
 
5
5
  export class PowerEditor extends BaseNode {
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { SelectInput, Element, LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
3
  import { Vector3 } from 'three';
4
- import { MathNode, UniformNode } from 'three-nodes/Nodes.js';
4
+ import { MathNode, UniformNode } from 'three/nodes';
5
5
 
6
6
  const DEFAULT_VALUE = new UniformNode( new Vector3() );
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { CheckerNode, UVNode } from 'three-nodes/Nodes.js';
3
+ import { CheckerNode, UVNode } from 'three/nodes';
4
4
 
5
5
  const defaultUV = new UVNode();
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { LabelElement } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { JoinNode, UniformNode } from 'three-nodes/Nodes.js';
3
+ import { JoinNode, UniformNode } from 'three/nodes';
4
4
 
5
5
  const NULL_VALUE = new UniformNode( 0 );
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, LabelElement, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { OscNode, UniformNode } from 'three-nodes/Nodes.js';
3
+ import { OscNode, UniformNode } from 'three/nodes';
4
4
 
5
5
  const NULL_VALUE = new UniformNode( 0 );
6
6
 
@@ -1,8 +1,8 @@
1
- import { OrbitControls } from 'three-addons/controls/OrbitControls.js';
2
- import { ViewHelper } from 'three-addons/helpers/ViewHelper.js';
1
+ import { OrbitControls } from '../../controls/OrbitControls.js';
2
+ import { ViewHelper } from '../../helpers/ViewHelper.js';
3
3
  import { Element, LabelElement, SelectInput } from '../../libs/flow.module.js';
4
4
  import { BaseNode } from '../core/BaseNode.js';
5
- import { MeshBasicNodeMaterial, ConstNode } from 'three-nodes/Nodes.js';
5
+ import { MeshBasicNodeMaterial, ConstNode } from 'three/nodes';
6
6
  import { WebGLRenderer, PerspectiveCamera, Scene, Mesh, DoubleSide, SphereGeometry, BoxGeometry, PlaneGeometry, TorusKnotGeometry } from 'three';
7
7
 
8
8
  const nullValue = new ConstNode( 0 );
@@ -1,6 +1,6 @@
1
1
  import { SelectInput, Element } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { SplitNode, UniformNode } from 'three-nodes/Nodes.js';
3
+ import { SplitNode, UniformNode } from 'three/nodes';
4
4
 
5
5
  const NULL_VALUE = new UniformNode( 0 );
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { NumberInput, LabelElement, Element, ButtonInput } from '../../libs/flow.module.js';
2
2
  import { BaseNode } from '../core/BaseNode.js';
3
- import { TimerNode } from 'three-nodes/Nodes.js';
3
+ import { TimerNode } from 'three/nodes';
4
4
 
5
5
  export class TimerEditor extends BaseNode {
6
6