@plastic-software/three 0.167.3 → 0.174.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 (748) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +36277 -24023
  4. package/build/three.core.js +48830 -0
  5. package/build/three.core.min.js +6 -0
  6. package/build/three.module.js +10175 -46743
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +550 -0
  9. package/build/three.tsl.min.js +6 -0
  10. package/build/three.webgpu.js +44348 -50670
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +70301 -0
  13. package/build/three.webgpu.nodes.min.js +6 -0
  14. package/examples/jsm/Addons.js +3 -15
  15. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  16. package/examples/jsm/animation/CCDIKSolver.js +61 -11
  17. package/examples/jsm/capabilities/WebGL.js +27 -21
  18. package/examples/jsm/capabilities/WebGPU.js +1 -10
  19. package/examples/jsm/controls/ArcballControls.js +262 -231
  20. package/examples/jsm/controls/DragControls.js +1 -1
  21. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  22. package/examples/jsm/controls/FlyControls.js +194 -188
  23. package/examples/jsm/controls/OrbitControls.js +801 -777
  24. package/examples/jsm/controls/PointerLockControls.js +26 -20
  25. package/examples/jsm/controls/TrackballControls.js +469 -448
  26. package/examples/jsm/controls/TransformControls.js +119 -68
  27. package/examples/jsm/csm/CSM.js +2 -2
  28. package/examples/jsm/csm/CSMFrustum.js +7 -4
  29. package/examples/jsm/csm/CSMHelper.js +2 -0
  30. package/examples/jsm/csm/CSMShadowNode.js +442 -0
  31. package/examples/jsm/curves/NURBSCurve.js +33 -2
  32. package/examples/jsm/curves/NURBSUtils.js +3 -0
  33. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  34. package/examples/jsm/effects/OutlineEffect.js +1 -1
  35. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  36. package/examples/jsm/effects/StereoEffect.js +6 -1
  37. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  38. package/examples/jsm/exporters/EXRExporter.js +19 -11
  39. package/examples/jsm/exporters/GLTFExporter.js +181 -109
  40. package/examples/jsm/exporters/KTX2Exporter.js +54 -23
  41. package/examples/jsm/exporters/OBJExporter.js +5 -1
  42. package/examples/jsm/exporters/PLYExporter.js +11 -9
  43. package/examples/jsm/exporters/USDZExporter.js +50 -11
  44. package/examples/jsm/geometries/DecalGeometry.js +73 -21
  45. package/examples/jsm/geometries/TextGeometry.js +1 -12
  46. package/examples/jsm/helpers/LightProbeHelper.js +43 -44
  47. package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
  48. package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
  49. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  50. package/examples/jsm/interactive/HTMLMesh.js +1 -0
  51. package/examples/jsm/interactive/InteractiveGroup.js +108 -51
  52. package/examples/jsm/interactive/SelectionHelper.js +3 -1
  53. package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  54. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  55. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  56. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  57. package/examples/jsm/lighting/TiledLighting.js +18 -0
  58. package/examples/jsm/lights/LightProbeGenerator.js +26 -12
  59. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  60. package/examples/jsm/lines/LineGeometry.js +25 -0
  61. package/examples/jsm/lines/LineMaterial.js +0 -1
  62. package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
  63. package/examples/jsm/lines/webgpu/Line2.js +2 -1
  64. package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
  65. package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
  66. package/examples/jsm/loaders/3DMLoader.js +1 -0
  67. package/examples/jsm/loaders/3MFLoader.js +104 -2
  68. package/examples/jsm/loaders/BVHLoader.js +1 -1
  69. package/examples/jsm/loaders/ColladaLoader.js +15 -12
  70. package/examples/jsm/loaders/DDSLoader.js +42 -0
  71. package/examples/jsm/loaders/DRACOLoader.js +3 -1
  72. package/examples/jsm/loaders/FBXLoader.js +71 -22
  73. package/examples/jsm/loaders/GCodeLoader.js +4 -2
  74. package/examples/jsm/loaders/GLTFLoader.js +29 -14
  75. package/examples/jsm/loaders/KTX2Loader.js +160 -58
  76. package/examples/jsm/loaders/KTXLoader.js +4 -4
  77. package/examples/jsm/loaders/LDrawLoader.js +22 -136
  78. package/examples/jsm/loaders/LottieLoader.js +2 -1
  79. package/examples/jsm/loaders/MTLLoader.js +27 -7
  80. package/examples/jsm/loaders/MaterialXLoader.js +40 -14
  81. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  82. package/examples/jsm/loaders/OBJLoader.js +5 -3
  83. package/examples/jsm/loaders/PCDLoader.js +14 -13
  84. package/examples/jsm/loaders/PDBLoader.js +3 -2
  85. package/examples/jsm/loaders/PLYLoader.js +15 -12
  86. package/examples/jsm/loaders/PVRLoader.js +1 -1
  87. package/examples/jsm/loaders/STLLoader.js +3 -2
  88. package/examples/jsm/loaders/SVGLoader.js +2 -2
  89. package/examples/jsm/loaders/TDSLoader.js +17 -18
  90. package/examples/jsm/loaders/VRMLLoader.js +17 -17
  91. package/examples/jsm/loaders/VTKLoader.js +4 -3
  92. package/examples/jsm/loaders/XYZLoader.js +3 -2
  93. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  94. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
  95. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
  96. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  97. package/examples/jsm/math/ColorSpaces.js +76 -0
  98. package/examples/jsm/math/ConvexHull.js +1 -1
  99. package/examples/jsm/math/OBB.js +17 -0
  100. package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
  101. package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
  102. package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
  103. package/examples/jsm/misc/Timer.js +27 -12
  104. package/examples/jsm/misc/Volume.js +28 -18
  105. package/examples/jsm/misc/VolumeSlice.js +19 -16
  106. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  107. package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
  108. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  109. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  110. package/examples/jsm/objects/LensflareMesh.js +324 -0
  111. package/examples/jsm/objects/Reflector.js +5 -2
  112. package/examples/jsm/objects/Sky.js +2 -2
  113. package/examples/jsm/objects/SkyMesh.js +14 -14
  114. package/examples/jsm/objects/Water2.js +1 -1
  115. package/examples/jsm/objects/Water2Mesh.js +11 -9
  116. package/examples/jsm/objects/WaterMesh.js +38 -33
  117. package/examples/jsm/physics/JoltPhysics.js +8 -8
  118. package/examples/jsm/physics/RapierPhysics.js +5 -5
  119. package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
  120. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  121. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  122. package/examples/jsm/postprocessing/OutlinePass.js +37 -51
  123. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  124. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  125. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  126. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  127. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  128. package/examples/jsm/postprocessing/SSRPass.js +8 -4
  129. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  130. package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
  131. package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
  132. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  133. package/examples/jsm/shaders/BokehShader2.js +1 -1
  134. package/examples/jsm/shaders/FXAAShader.js +225 -224
  135. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  136. package/examples/jsm/shaders/OutputShader.js +6 -2
  137. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  138. package/examples/jsm/transpiler/AST.js +12 -2
  139. package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
  140. package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
  141. package/examples/jsm/transpiler/TSLEncoder.js +96 -21
  142. package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
  143. package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
  144. package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
  145. package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
  146. package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
  147. package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
  148. package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
  149. package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
  150. package/examples/jsm/tsl/display/FXAANode.js +364 -0
  151. package/examples/jsm/tsl/display/FilmNode.js +100 -0
  152. package/examples/jsm/tsl/display/GTAONode.js +521 -0
  153. package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
  154. package/examples/jsm/tsl/display/LensflareNode.js +278 -0
  155. package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
  156. package/examples/jsm/tsl/display/MotionBlur.js +33 -0
  157. package/examples/jsm/tsl/display/OutlineNode.js +750 -0
  158. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
  159. package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
  160. package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
  161. package/examples/jsm/tsl/display/SMAANode.js +767 -0
  162. package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
  163. package/examples/jsm/tsl/display/SSRNode.js +538 -0
  164. package/examples/jsm/tsl/display/Sepia.js +24 -0
  165. package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
  166. package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
  167. package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
  168. package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
  169. package/examples/jsm/tsl/display/TransitionNode.js +140 -0
  170. package/examples/jsm/tsl/display/hashBlur.js +34 -0
  171. package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
  172. package/examples/jsm/tsl/math/Bayer.js +18 -0
  173. package/examples/jsm/tsl/utils/Raymarching.js +65 -0
  174. package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
  175. package/examples/jsm/utils/CameraUtils.js +4 -1
  176. package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
  177. package/examples/jsm/utils/GeometryUtils.js +22 -19
  178. package/examples/jsm/utils/SceneOptimizer.js +410 -0
  179. package/examples/jsm/utils/SceneUtils.js +2 -2
  180. package/examples/jsm/utils/ShadowMapViewer.js +3 -8
  181. package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
  182. package/examples/jsm/utils/SkeletonUtils.js +84 -66
  183. package/examples/jsm/utils/UVsDebug.js +1 -1
  184. package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
  185. package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
  186. package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
  187. package/examples/jsm/webxr/Text2D.js +6 -6
  188. package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
  189. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  190. package/package.json +14 -9
  191. package/src/Three.Core.js +182 -0
  192. package/src/Three.Legacy.js +0 -21
  193. package/src/Three.TSL.js +543 -0
  194. package/src/Three.WebGPU.Nodes.js +23 -0
  195. package/src/Three.WebGPU.js +13 -184
  196. package/src/Three.js +1 -176
  197. package/src/animation/AnimationClip.js +2 -2
  198. package/src/animation/AnimationObjectGroup.js +2 -2
  199. package/src/animation/AnimationUtils.js +1 -1
  200. package/src/animation/PropertyBinding.js +2 -2
  201. package/src/audio/Audio.js +379 -2
  202. package/src/audio/AudioAnalyser.js +58 -1
  203. package/src/audio/AudioContext.js +15 -0
  204. package/src/audio/AudioListener.js +76 -0
  205. package/src/audio/PositionalAudio.js +107 -0
  206. package/src/cameras/ArrayCamera.js +29 -0
  207. package/src/cameras/Camera.js +47 -0
  208. package/src/cameras/CubeCamera.js +66 -0
  209. package/src/cameras/OrthographicCamera.js +109 -0
  210. package/src/cameras/PerspectiveCamera.js +173 -34
  211. package/src/cameras/StereoCamera.js +48 -2
  212. package/src/constants.js +6 -6
  213. package/src/core/BufferAttribute.js +4 -9
  214. package/src/core/BufferGeometry.js +48 -8
  215. package/src/core/Clock.js +1 -1
  216. package/src/core/EventDispatcher.js +52 -8
  217. package/src/core/InterleavedBuffer.js +4 -13
  218. package/src/core/Object3D.js +573 -3
  219. package/src/core/RenderTarget.js +22 -4
  220. package/src/core/RenderTarget3D.js +22 -0
  221. package/src/core/RenderTargetArray.js +22 -0
  222. package/src/extras/Controls.js +104 -0
  223. package/src/extras/DataUtils.js +48 -8
  224. package/src/extras/Earcut.js +18 -7
  225. package/src/extras/ImageUtils.js +18 -11
  226. package/src/extras/PMREMGenerator.js +40 -9
  227. package/src/extras/ShapeUtils.js +24 -2
  228. package/src/extras/TextureUtils.js +96 -10
  229. package/src/extras/core/Curve.js +153 -53
  230. package/src/extras/core/CurvePath.js +63 -22
  231. package/src/extras/core/Interpolations.js +29 -3
  232. package/src/extras/core/Path.js +134 -1
  233. package/src/extras/core/Shape.js +66 -3
  234. package/src/extras/core/ShapePath.js +76 -0
  235. package/src/extras/curves/ArcCurve.js +22 -0
  236. package/src/extras/curves/CatmullRomCurve3.js +89 -18
  237. package/src/extras/curves/CubicBezierCurve.js +67 -0
  238. package/src/extras/curves/CubicBezierCurve3.js +50 -0
  239. package/src/extras/curves/EllipseCurve.js +102 -0
  240. package/src/extras/curves/LineCurve.js +36 -0
  241. package/src/extras/curves/LineCurve3.js +36 -0
  242. package/src/extras/curves/QuadraticBezierCurve.js +59 -0
  243. package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  244. package/src/extras/curves/SplineCurve.js +48 -0
  245. package/src/geometries/BoxGeometry.js +38 -0
  246. package/src/geometries/CapsuleGeometry.js +34 -0
  247. package/src/geometries/CircleGeometry.js +40 -0
  248. package/src/geometries/ConeGeometry.js +38 -0
  249. package/src/geometries/CylinderGeometry.js +50 -4
  250. package/src/geometries/DodecahedronGeometry.js +32 -0
  251. package/src/geometries/EdgesGeometry.js +30 -2
  252. package/src/geometries/ExtrudeGeometry.js +52 -0
  253. package/src/geometries/IcosahedronGeometry.js +32 -0
  254. package/src/geometries/LatheGeometry.js +43 -3
  255. package/src/geometries/OctahedronGeometry.js +32 -0
  256. package/src/geometries/PlaneGeometry.js +34 -0
  257. package/src/geometries/PolyhedronGeometry.js +29 -0
  258. package/src/geometries/RingGeometry.js +36 -0
  259. package/src/geometries/ShapeGeometry.js +37 -0
  260. package/src/geometries/SphereGeometry.js +37 -0
  261. package/src/geometries/TetrahedronGeometry.js +32 -0
  262. package/src/geometries/TorusGeometry.js +35 -0
  263. package/src/geometries/TorusKnotGeometry.js +38 -0
  264. package/src/geometries/TubeGeometry.js +49 -0
  265. package/src/geometries/WireframeGeometry.js +32 -0
  266. package/src/helpers/ArrowHelper.js +60 -3
  267. package/src/helpers/AxesHelper.js +28 -0
  268. package/src/helpers/Box3Helper.js +28 -0
  269. package/src/helpers/BoxHelper.js +43 -7
  270. package/src/helpers/CameraHelper.js +61 -18
  271. package/src/helpers/DirectionalLightHelper.js +52 -0
  272. package/src/helpers/GridHelper.js +26 -0
  273. package/src/helpers/HemisphereLightHelper.js +39 -0
  274. package/src/helpers/PlaneHelper.js +33 -0
  275. package/src/helpers/PointLightHelper.js +43 -0
  276. package/src/helpers/PolarGridHelper.js +30 -0
  277. package/src/helpers/SkeletonHelper.js +39 -2
  278. package/src/helpers/SpotLightHelper.js +40 -0
  279. package/src/lights/AmbientLight.js +25 -0
  280. package/src/lights/DirectionalLight.js +57 -0
  281. package/src/lights/DirectionalLightShadow.js +15 -0
  282. package/src/lights/HemisphereLight.js +32 -0
  283. package/src/lights/Light.js +36 -0
  284. package/src/lights/LightProbe.js +43 -0
  285. package/src/lights/LightShadow.js +159 -0
  286. package/src/lights/PointLight.js +59 -0
  287. package/src/lights/PointLightShadow.js +21 -0
  288. package/src/lights/RectAreaLight.js +59 -0
  289. package/src/lights/SpotLight.js +102 -0
  290. package/src/lights/SpotLightShadow.js +24 -2
  291. package/src/lights/webgpu/IESSpotLight.js +21 -0
  292. package/src/loaders/Loader.js +132 -0
  293. package/src/loaders/MaterialLoader.js +7 -1
  294. package/src/loaders/nodes/NodeLoader.js +189 -0
  295. package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  296. package/src/loaders/nodes/NodeObjectLoader.js +151 -0
  297. package/src/materials/LineDashedMaterial.js +0 -1
  298. package/src/materials/Material.js +469 -7
  299. package/src/materials/MeshPhongMaterial.js +1 -1
  300. package/src/materials/MeshPhysicalMaterial.js +2 -2
  301. package/src/materials/MeshStandardMaterial.js +2 -2
  302. package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
  303. package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  304. package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  305. package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
  306. package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
  307. package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  308. package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  309. package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
  310. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
  311. package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
  312. package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
  313. package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
  314. package/src/materials/nodes/NodeMaterial.js +1180 -0
  315. package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
  316. package/src/materials/nodes/PointsNodeMaterial.js +153 -0
  317. package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
  318. package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
  319. package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
  320. package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
  321. package/src/math/Box2.js +177 -0
  322. package/src/math/Box3.js +243 -0
  323. package/src/math/Color.js +343 -0
  324. package/src/math/ColorManagement.js +143 -102
  325. package/src/math/Cylindrical.js +65 -6
  326. package/src/math/Euler.js +137 -4
  327. package/src/math/Frustum.js +83 -0
  328. package/src/math/Interpolant.js +87 -8
  329. package/src/math/Line3.js +96 -2
  330. package/src/math/MathUtils.js +182 -19
  331. package/src/math/Matrix2.js +70 -0
  332. package/src/math/Matrix3.js +229 -4
  333. package/src/math/Matrix4.js +368 -3
  334. package/src/math/Plane.js +164 -2
  335. package/src/math/Quaternion.js +265 -9
  336. package/src/math/Ray.js +160 -0
  337. package/src/math/Sphere.js +147 -0
  338. package/src/math/Spherical.js +73 -11
  339. package/src/math/SphericalHarmonics3.js +112 -14
  340. package/src/math/Triangle.js +230 -2
  341. package/src/math/Vector2.js +396 -10
  342. package/src/math/Vector3.js +550 -13
  343. package/src/math/Vector4.js +415 -9
  344. package/src/math/interpolants/CubicInterpolant.js +10 -1
  345. package/src/math/interpolants/DiscreteInterpolant.js +10 -2
  346. package/src/math/interpolants/LinearInterpolant.js +13 -0
  347. package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  348. package/src/nodes/Nodes.js +84 -166
  349. package/src/nodes/TSL.js +167 -0
  350. package/src/nodes/accessors/AccessorsUtils.js +39 -10
  351. package/src/nodes/accessors/Arrays.js +68 -0
  352. package/src/nodes/accessors/BatchNode.js +93 -26
  353. package/src/nodes/accessors/Bitangent.js +54 -0
  354. package/src/nodes/accessors/BufferAttributeNode.js +189 -11
  355. package/src/nodes/accessors/BufferNode.js +70 -5
  356. package/src/nodes/accessors/BuiltinNode.js +63 -0
  357. package/src/nodes/accessors/Camera.js +129 -0
  358. package/src/nodes/accessors/ClippingNode.js +152 -43
  359. package/src/nodes/accessors/CubeTextureNode.js +76 -13
  360. package/src/nodes/accessors/InstanceNode.js +118 -35
  361. package/src/nodes/accessors/InstancedMeshNode.js +50 -0
  362. package/src/nodes/accessors/Lights.js +129 -0
  363. package/src/nodes/accessors/MaterialNode.js +394 -58
  364. package/src/nodes/accessors/MaterialProperties.js +57 -1
  365. package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
  366. package/src/nodes/accessors/ModelNode.js +159 -12
  367. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
  368. package/src/nodes/accessors/MorphNode.js +60 -13
  369. package/src/nodes/accessors/Normal.js +156 -0
  370. package/src/nodes/accessors/Object3DNode.js +154 -35
  371. package/src/nodes/accessors/PointUVNode.js +35 -6
  372. package/src/nodes/accessors/Position.js +64 -0
  373. package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
  374. package/src/nodes/accessors/ReferenceNode.js +243 -6
  375. package/src/nodes/accessors/ReflectVector.js +36 -0
  376. package/src/nodes/accessors/RendererReferenceNode.js +57 -7
  377. package/src/nodes/accessors/SceneNode.js +98 -6
  378. package/src/nodes/accessors/SkinningNode.js +214 -21
  379. package/src/nodes/accessors/StorageBufferNode.js +288 -28
  380. package/src/nodes/accessors/StorageTextureNode.js +139 -12
  381. package/src/nodes/accessors/Tangent.js +62 -0
  382. package/src/nodes/accessors/Texture3DNode.js +98 -12
  383. package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
  384. package/src/nodes/accessors/TextureNode.js +347 -34
  385. package/src/nodes/accessors/TextureSizeNode.js +51 -9
  386. package/src/nodes/accessors/UV.js +11 -0
  387. package/src/nodes/accessors/UniformArrayNode.js +241 -32
  388. package/src/nodes/accessors/UserDataNode.js +55 -7
  389. package/src/nodes/accessors/VelocityNode.js +223 -0
  390. package/src/nodes/accessors/VertexColorNode.js +45 -6
  391. package/src/nodes/code/CodeNode.js +108 -8
  392. package/src/nodes/code/ExpressionNode.js +38 -7
  393. package/src/nodes/code/FunctionCallNode.js +62 -11
  394. package/src/nodes/code/FunctionNode.js +54 -24
  395. package/src/nodes/code/ScriptableNode.js +241 -17
  396. package/src/nodes/code/ScriptableValueNode.js +93 -8
  397. package/src/nodes/core/ArrayNode.js +142 -0
  398. package/src/nodes/core/AssignNode.js +60 -12
  399. package/src/nodes/core/AttributeNode.js +55 -22
  400. package/src/nodes/core/BypassNode.js +59 -11
  401. package/src/nodes/core/CacheNode.js +64 -10
  402. package/src/nodes/core/ConstNode.js +38 -3
  403. package/src/nodes/core/ContextNode.js +87 -12
  404. package/src/nodes/core/IndexNode.js +102 -10
  405. package/src/nodes/core/InputNode.js +55 -3
  406. package/src/nodes/core/LightingModel.js +65 -5
  407. package/src/nodes/core/MRTNode.js +81 -7
  408. package/src/nodes/core/Node.js +368 -50
  409. package/src/nodes/core/NodeAttribute.js +38 -0
  410. package/src/nodes/core/NodeBuilder.js +1317 -83
  411. package/src/nodes/core/NodeCache.js +41 -2
  412. package/src/nodes/core/NodeCode.js +31 -0
  413. package/src/nodes/core/NodeFrame.js +123 -2
  414. package/src/nodes/core/NodeFunction.js +46 -0
  415. package/src/nodes/core/NodeFunctionInput.js +44 -0
  416. package/src/nodes/core/NodeParser.js +11 -0
  417. package/src/nodes/core/NodeUniform.js +52 -0
  418. package/src/nodes/core/NodeUtils.js +226 -6
  419. package/src/nodes/core/NodeVar.js +47 -1
  420. package/src/nodes/core/NodeVarying.js +28 -0
  421. package/src/nodes/core/OutputStructNode.js +61 -17
  422. package/src/nodes/core/ParameterNode.js +34 -4
  423. package/src/nodes/core/PropertyNode.js +296 -32
  424. package/src/nodes/core/StackNode.js +108 -8
  425. package/src/nodes/core/StructNode.js +120 -0
  426. package/src/nodes/core/StructType.js +13 -0
  427. package/src/nodes/core/StructTypeNode.js +116 -9
  428. package/src/nodes/core/TempNode.js +37 -7
  429. package/src/nodes/core/UniformGroupNode.js +98 -17
  430. package/src/nodes/core/UniformNode.js +72 -4
  431. package/src/nodes/core/VarNode.js +170 -13
  432. package/src/nodes/core/VaryingNode.js +109 -8
  433. package/src/nodes/core/constants.js +40 -0
  434. package/src/nodes/display/BlendModes.js +193 -0
  435. package/src/nodes/display/BumpMapNode.js +47 -10
  436. package/src/nodes/display/ColorAdjustment.js +141 -0
  437. package/src/nodes/display/ColorSpaceFunctions.js +54 -0
  438. package/src/nodes/display/ColorSpaceNode.js +147 -68
  439. package/src/nodes/display/FrontFacingNode.js +39 -6
  440. package/src/nodes/display/NormalMapNode.js +55 -13
  441. package/src/nodes/display/PassNode.js +420 -19
  442. package/src/nodes/display/PosterizeNode.js +40 -7
  443. package/src/nodes/display/RenderOutputNode.js +81 -13
  444. package/src/nodes/display/ScreenNode.js +286 -0
  445. package/src/nodes/display/ToneMappingFunctions.js +242 -0
  446. package/src/nodes/display/ToneMappingNode.js +68 -175
  447. package/src/nodes/display/ToonOutlinePassNode.js +183 -0
  448. package/src/nodes/display/ViewportDepthNode.js +210 -36
  449. package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
  450. package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
  451. package/src/nodes/display/ViewportTextureNode.js +68 -11
  452. package/src/nodes/fog/Fog.js +113 -0
  453. package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
  454. package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  455. package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  456. package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
  457. package/src/nodes/functions/BSDF/D_GGX.js +2 -2
  458. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
  459. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  460. package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
  461. package/src/nodes/functions/BSDF/LTC.js +50 -6
  462. package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  463. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  464. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  465. package/src/nodes/functions/BasicLightingModel.js +27 -6
  466. package/src/nodes/functions/PhongLightingModel.js +38 -8
  467. package/src/nodes/functions/PhysicalLightingModel.js +215 -51
  468. package/src/nodes/functions/ShadowMaskModel.js +24 -1
  469. package/src/nodes/functions/ToonLightingModel.js +24 -5
  470. package/src/nodes/functions/VolumetricLightingModel.js +183 -0
  471. package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  472. package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
  473. package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  474. package/src/nodes/functions/material/getRoughness.js +2 -2
  475. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  476. package/src/nodes/geometry/RangeNode.js +62 -7
  477. package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
  478. package/src/nodes/gpgpu/BarrierNode.js +89 -0
  479. package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
  480. package/src/nodes/gpgpu/ComputeNode.js +124 -9
  481. package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
  482. package/src/nodes/lighting/AONode.js +24 -3
  483. package/src/nodes/lighting/AmbientLightNode.js +16 -8
  484. package/src/nodes/lighting/AnalyticLightNode.js +151 -231
  485. package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
  486. package/src/nodes/lighting/BasicLightMapNode.js +25 -5
  487. package/src/nodes/lighting/DirectionalLightNode.js +19 -20
  488. package/src/nodes/lighting/EnvironmentNode.js +34 -17
  489. package/src/nodes/lighting/HemisphereLightNode.js +42 -11
  490. package/src/nodes/lighting/IESSpotLightNode.js +18 -9
  491. package/src/nodes/lighting/IrradianceNode.js +23 -3
  492. package/src/nodes/lighting/LightProbeNode.js +29 -36
  493. package/src/nodes/lighting/LightUtils.js +12 -4
  494. package/src/nodes/lighting/LightingContextNode.js +70 -21
  495. package/src/nodes/lighting/LightingNode.js +22 -9
  496. package/src/nodes/lighting/LightsNode.js +309 -86
  497. package/src/nodes/lighting/PointLightNode.js +66 -32
  498. package/src/nodes/lighting/PointShadowNode.js +306 -0
  499. package/src/nodes/lighting/RectAreaLightNode.js +61 -25
  500. package/src/nodes/lighting/ShadowBaseNode.js +92 -0
  501. package/src/nodes/lighting/ShadowNode.js +812 -0
  502. package/src/nodes/lighting/SpotLightNode.js +73 -31
  503. package/src/nodes/materialx/MaterialXNodes.js +2 -2
  504. package/src/nodes/materialx/lib/mx_hsv.js +27 -22
  505. package/src/nodes/materialx/lib/mx_noise.js +70 -70
  506. package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
  507. package/src/nodes/math/ConditionalNode.js +230 -0
  508. package/src/nodes/math/Hash.js +21 -0
  509. package/src/nodes/math/MathNode.js +812 -131
  510. package/src/nodes/math/MathUtils.js +47 -8
  511. package/src/nodes/math/OperatorNode.js +410 -66
  512. package/src/nodes/math/TriNoise3D.js +32 -32
  513. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  514. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  515. package/src/nodes/pmrem/PMREMNode.js +188 -28
  516. package/src/nodes/pmrem/PMREMUtils.js +24 -24
  517. package/src/nodes/procedural/Checker.js +22 -0
  518. package/src/nodes/shapes/Shapes.js +32 -0
  519. package/src/nodes/tsl/TSLBase.js +31 -0
  520. package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
  521. package/src/nodes/utils/ArrayElementNode.js +45 -5
  522. package/src/nodes/utils/ConvertNode.js +39 -4
  523. package/src/nodes/utils/CubeMapNode.js +88 -8
  524. package/src/nodes/utils/Discard.js +24 -0
  525. package/src/nodes/utils/EquirectUVNode.js +39 -7
  526. package/src/nodes/utils/FlipNode.js +106 -0
  527. package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
  528. package/src/nodes/utils/JoinNode.js +31 -3
  529. package/src/nodes/utils/LoopNode.js +95 -9
  530. package/src/nodes/utils/MatcapUVNode.js +27 -8
  531. package/src/nodes/utils/MaxMipLevelNode.js +57 -6
  532. package/src/nodes/utils/MemberNode.js +68 -0
  533. package/src/nodes/utils/Oscillators.js +41 -0
  534. package/src/nodes/utils/Packing.js +21 -0
  535. package/src/nodes/utils/PostProcessingUtils.js +95 -0
  536. package/src/nodes/utils/RTTNode.js +141 -9
  537. package/src/nodes/utils/ReflectorNode.js +295 -21
  538. package/src/nodes/utils/RemapNode.js +93 -10
  539. package/src/nodes/utils/RotateNode.js +48 -13
  540. package/src/nodes/utils/SetNode.js +50 -4
  541. package/src/nodes/utils/SplitNode.js +62 -6
  542. package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
  543. package/src/nodes/utils/SpriteUtils.js +21 -5
  544. package/src/nodes/utils/StorageArrayElementNode.js +64 -12
  545. package/src/nodes/utils/Timer.js +73 -0
  546. package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
  547. package/src/nodes/utils/UVUtils.js +27 -9
  548. package/src/nodes/utils/ViewportUtils.js +16 -4
  549. package/src/objects/BatchedMesh.js +808 -281
  550. package/src/objects/Bone.js +24 -0
  551. package/src/objects/ClippingGroup.js +68 -0
  552. package/src/objects/Group.js +24 -0
  553. package/src/objects/InstancedMesh.js +120 -2
  554. package/src/objects/LOD.js +120 -5
  555. package/src/objects/Line.js +89 -6
  556. package/src/objects/LineLoop.js +20 -0
  557. package/src/objects/LineSegments.js +18 -0
  558. package/src/objects/Mesh.js +82 -23
  559. package/src/objects/Points.js +62 -0
  560. package/src/objects/Skeleton.js +107 -2
  561. package/src/objects/SkinnedMesh.js +99 -5
  562. package/src/objects/Sprite.js +54 -0
  563. package/src/renderers/WebGLRenderer.js +274 -157
  564. package/src/renderers/common/Animation.js +109 -12
  565. package/src/renderers/common/Attributes.js +40 -0
  566. package/src/renderers/common/Backend.js +504 -44
  567. package/src/renderers/common/Background.js +67 -9
  568. package/src/renderers/common/BindGroup.js +45 -1
  569. package/src/renderers/common/Binding.js +35 -0
  570. package/src/renderers/common/Bindings.js +136 -19
  571. package/src/renderers/common/Buffer.js +49 -0
  572. package/src/renderers/common/BufferUtils.js +25 -0
  573. package/src/renderers/common/BundleGroup.js +83 -0
  574. package/src/renderers/common/ChainMap.js +45 -6
  575. package/src/renderers/common/ClippingContext.js +175 -80
  576. package/src/renderers/common/Color4.js +40 -0
  577. package/src/renderers/common/ComputePipeline.js +24 -0
  578. package/src/renderers/common/Constants.js +2 -1
  579. package/src/renderers/common/CubeRenderTarget.js +22 -3
  580. package/src/renderers/common/DataMap.js +37 -1
  581. package/src/renderers/common/Geometries.js +111 -14
  582. package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  583. package/src/renderers/common/Info.js +78 -35
  584. package/src/renderers/common/Lighting.js +73 -0
  585. package/src/renderers/common/Pipeline.js +22 -0
  586. package/src/renderers/common/Pipelines.js +148 -5
  587. package/src/renderers/common/PostProcessing.js +112 -11
  588. package/src/renderers/common/ProgrammableStage.js +60 -2
  589. package/src/renderers/common/QuadMesh.js +56 -5
  590. package/src/renderers/common/RenderBundle.js +14 -8
  591. package/src/renderers/common/RenderBundles.js +39 -10
  592. package/src/renderers/common/RenderContext.js +205 -7
  593. package/src/renderers/common/RenderContexts.js +59 -6
  594. package/src/renderers/common/RenderList.js +230 -21
  595. package/src/renderers/common/RenderLists.js +45 -6
  596. package/src/renderers/common/RenderObject.js +552 -41
  597. package/src/renderers/common/RenderObjects.js +118 -9
  598. package/src/renderers/common/RenderPipeline.js +24 -0
  599. package/src/renderers/common/Renderer.js +1537 -239
  600. package/src/renderers/common/RendererUtils.js +191 -0
  601. package/src/renderers/common/SampledTexture.js +132 -3
  602. package/src/renderers/common/Sampler.js +30 -0
  603. package/src/renderers/common/StorageBuffer.js +24 -0
  604. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  605. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  606. package/src/renderers/common/StorageTexture.js +38 -0
  607. package/src/renderers/common/Textures.js +142 -32
  608. package/src/renderers/common/TimestampQueryPool.js +98 -0
  609. package/src/renderers/common/Uniform.js +225 -3
  610. package/src/renderers/common/UniformBuffer.js +19 -0
  611. package/src/renderers/common/UniformsGroup.js +157 -6
  612. package/src/renderers/common/XRManager.js +1185 -0
  613. package/src/renderers/common/XRRenderTarget.js +74 -0
  614. package/src/renderers/common/extras/PMREMGenerator.js +211 -53
  615. package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
  616. package/src/renderers/common/nodes/NodeLibrary.js +194 -0
  617. package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
  618. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  619. package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
  620. package/src/renderers/common/nodes/NodeUniform.js +285 -2
  621. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  622. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  623. package/src/renderers/common/nodes/Nodes.js +390 -70
  624. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
  625. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
  626. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  627. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
  628. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
  629. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  630. package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
  631. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  632. package/src/renderers/webgl/WebGLAttributes.js +45 -14
  633. package/src/renderers/webgl/WebGLBackground.js +24 -1
  634. package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
  635. package/src/renderers/webgl/WebGLCapabilities.js +2 -0
  636. package/src/renderers/webgl/WebGLGeometries.js +0 -28
  637. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
  638. package/src/renderers/webgl/WebGLProgram.js +27 -29
  639. package/src/renderers/webgl/WebGLPrograms.js +24 -16
  640. package/src/renderers/webgl/WebGLState.js +68 -11
  641. package/src/renderers/webgl/WebGLTextures.js +49 -10
  642. package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
  643. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
  644. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
  645. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
  646. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  647. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  648. package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
  649. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
  650. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
  651. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  652. package/src/renderers/webgpu/WebGPUBackend.js +816 -236
  653. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
  654. package/src/renderers/webgpu/WebGPURenderer.js +45 -6
  655. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
  656. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
  657. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
  658. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
  659. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  660. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
  661. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
  662. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
  663. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
  664. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
  665. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
  666. package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
  667. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  668. package/src/renderers/webxr/WebXRManager.js +54 -32
  669. package/src/scenes/Fog.js +60 -0
  670. package/src/scenes/FogExp2.js +51 -0
  671. package/src/scenes/Scene.js +87 -0
  672. package/src/textures/Data3DTexture.js +2 -2
  673. package/src/textures/DepthTexture.js +2 -0
  674. package/src/textures/Source.js +2 -2
  675. package/src/textures/Texture.js +368 -5
  676. package/src/textures/VideoFrameTexture.js +35 -0
  677. package/src/utils.js +33 -1
  678. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  679. package/examples/jsm/animation/MMDPhysics.js +0 -1406
  680. package/examples/jsm/cameras/CinematicCamera.js +0 -208
  681. package/examples/jsm/controls/Controls.js +0 -32
  682. package/examples/jsm/exporters/MMDExporter.js +0 -217
  683. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  684. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  685. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  686. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  687. package/examples/jsm/loaders/MMDLoader.js +0 -2295
  688. package/examples/jsm/loaders/TiltLoader.js +0 -520
  689. package/examples/jsm/objects/InstancedPoints.js +0 -21
  690. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  691. package/examples/jsm/utils/GPUStatsPanel.js +0 -95
  692. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  693. package/src/nodes/accessors/BitangentNode.js +0 -13
  694. package/src/nodes/accessors/CameraNode.js +0 -19
  695. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  696. package/src/nodes/accessors/NormalNode.js +0 -14
  697. package/src/nodes/accessors/PositionNode.js +0 -10
  698. package/src/nodes/accessors/ReflectVectorNode.js +0 -10
  699. package/src/nodes/accessors/TangentNode.js +0 -23
  700. package/src/nodes/accessors/UVNode.js +0 -3
  701. package/src/nodes/core/NodeKeywords.js +0 -80
  702. package/src/nodes/core/UniformGroup.js +0 -13
  703. package/src/nodes/display/AfterImageNode.js +0 -152
  704. package/src/nodes/display/AnamorphicNode.js +0 -145
  705. package/src/nodes/display/BlendModeNode.js +0 -128
  706. package/src/nodes/display/ColorAdjustmentNode.js +0 -104
  707. package/src/nodes/display/DenoiseNode.js +0 -198
  708. package/src/nodes/display/DotScreenNode.js +0 -75
  709. package/src/nodes/display/FXAANode.js +0 -327
  710. package/src/nodes/display/FilmNode.js +0 -52
  711. package/src/nodes/display/GTAONode.js +0 -324
  712. package/src/nodes/display/GaussianBlurNode.js +0 -207
  713. package/src/nodes/display/Lut3DNode.js +0 -53
  714. package/src/nodes/display/RGBShiftNode.js +0 -49
  715. package/src/nodes/display/SepiaNode.js +0 -18
  716. package/src/nodes/display/TransitionNode.js +0 -76
  717. package/src/nodes/display/ViewportNode.js +0 -137
  718. package/src/nodes/fog/FogExp2Node.js +0 -34
  719. package/src/nodes/fog/FogNode.js +0 -48
  720. package/src/nodes/fog/FogRangeNode.js +0 -35
  721. package/src/nodes/lighting/LightNode.js +0 -57
  722. package/src/nodes/loaders/NodeLoader.js +0 -110
  723. package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
  724. package/src/nodes/loaders/NodeObjectLoader.js +0 -71
  725. package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  726. package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
  727. package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
  728. package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
  729. package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
  730. package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
  731. package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  732. package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
  733. package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
  734. package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
  735. package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
  736. package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
  737. package/src/nodes/materials/NodeMaterial.js +0 -680
  738. package/src/nodes/materials/PointsNodeMaterial.js +0 -39
  739. package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
  740. package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
  741. package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
  742. package/src/nodes/math/CondNode.js +0 -139
  743. package/src/nodes/math/HashNode.js +0 -34
  744. package/src/nodes/procedural/CheckerNode.js +0 -42
  745. package/src/nodes/utils/DiscardNode.js +0 -28
  746. package/src/nodes/utils/OscNode.js +0 -81
  747. package/src/nodes/utils/PackingNode.js +0 -55
  748. package/src/nodes/utils/TimerNode.js +0 -94
@@ -9,28 +9,37 @@ import {
9
9
  VectorKeyframeTrack
10
10
  } from 'three';
11
11
 
12
+ function getBoneName( bone, options ) {
13
+
14
+ if ( options.getBoneName !== undefined ) {
15
+
16
+ return options.getBoneName( bone );
17
+
18
+ }
19
+
20
+ return options.names[ bone.name ];
21
+
22
+ }
12
23
 
13
24
  function retarget( target, source, options = {} ) {
14
25
 
15
- const pos = new Vector3(),
16
- quat = new Quaternion(),
26
+ const quat = new Quaternion(),
17
27
  scale = new Vector3(),
18
- bindBoneMatrix = new Matrix4(),
19
28
  relativeMatrix = new Matrix4(),
20
29
  globalMatrix = new Matrix4();
21
30
 
22
- options.preserveMatrix = options.preserveMatrix !== undefined ? options.preserveMatrix : true;
23
- options.preservePosition = options.preservePosition !== undefined ? options.preservePosition : true;
24
- options.preserveHipPosition = options.preserveHipPosition !== undefined ? options.preserveHipPosition : false;
31
+ options.preserveBoneMatrix = options.preserveBoneMatrix !== undefined ? options.preserveBoneMatrix : true;
32
+ options.preserveBonePositions = options.preserveBonePositions !== undefined ? options.preserveBonePositions : true;
25
33
  options.useTargetMatrix = options.useTargetMatrix !== undefined ? options.useTargetMatrix : false;
26
34
  options.hip = options.hip !== undefined ? options.hip : 'hip';
35
+ options.hipInfluence = options.hipInfluence !== undefined ? options.hipInfluence : new Vector3( 1, 1, 1 );
36
+ options.scale = options.scale !== undefined ? options.scale : 1;
27
37
  options.names = options.names || {};
28
38
 
29
39
  const sourceBones = source.isObject3D ? source.skeleton.bones : getBones( source ),
30
40
  bones = target.isObject3D ? target.skeleton.bones : getBones( target );
31
41
 
32
- let bindBones,
33
- bone, name, boneTo,
42
+ let bone, name, boneTo,
34
43
  bonesPosition;
35
44
 
36
45
  // reset bones
@@ -42,11 +51,11 @@ function retarget( target, source, options = {} ) {
42
51
  } else {
43
52
 
44
53
  options.useTargetMatrix = true;
45
- options.preserveMatrix = false;
54
+ options.preserveBoneMatrix = false;
46
55
 
47
56
  }
48
57
 
49
- if ( options.preservePosition ) {
58
+ if ( options.preserveBonePositions ) {
50
59
 
51
60
  bonesPosition = [];
52
61
 
@@ -58,7 +67,7 @@ function retarget( target, source, options = {} ) {
58
67
 
59
68
  }
60
69
 
61
- if ( options.preserveMatrix ) {
70
+ if ( options.preserveBoneMatrix ) {
62
71
 
63
72
  // reset matrix
64
73
 
@@ -76,35 +85,10 @@ function retarget( target, source, options = {} ) {
76
85
 
77
86
  }
78
87
 
79
- if ( options.offsets ) {
80
-
81
- bindBones = [];
82
-
83
- for ( let i = 0; i < bones.length; ++ i ) {
84
-
85
- bone = bones[ i ];
86
- name = options.names[ bone.name ] || bone.name;
87
-
88
- if ( options.offsets[ name ] ) {
89
-
90
- bone.matrix.multiply( options.offsets[ name ] );
91
-
92
- bone.matrix.decompose( bone.position, bone.quaternion, bone.scale );
93
-
94
- bone.updateMatrixWorld();
95
-
96
- }
97
-
98
- bindBones.push( bone.matrixWorld.clone() );
99
-
100
- }
101
-
102
- }
103
-
104
88
  for ( let i = 0; i < bones.length; ++ i ) {
105
89
 
106
90
  bone = bones[ i ];
107
- name = options.names[ bone.name ] || bone.name;
91
+ name = getBoneName( bone, options );
108
92
 
109
93
  boneTo = getBoneByName( name, sourceBones );
110
94
 
@@ -136,10 +120,15 @@ function retarget( target, source, options = {} ) {
136
120
 
137
121
  if ( target.isObject3D ) {
138
122
 
139
- const boneIndex = bones.indexOf( bone ),
140
- wBindMatrix = bindBones ? bindBones[ boneIndex ] : bindBoneMatrix.copy( target.skeleton.boneInverses[ boneIndex ] ).invert();
123
+ if ( options.localOffsets ) {
124
+
125
+ if ( options.localOffsets[ bone.name ] ) {
141
126
 
142
- globalMatrix.multiply( wBindMatrix );
127
+ globalMatrix.multiply( options.localOffsets[ bone.name ] );
128
+
129
+ }
130
+
131
+ }
143
132
 
144
133
  }
145
134
 
@@ -147,20 +136,30 @@ function retarget( target, source, options = {} ) {
147
136
 
148
137
  }
149
138
 
150
- if ( bone.parent && bone.parent.isBone ) {
139
+ if ( name === options.hip ) {
151
140
 
152
- bone.matrix.copy( bone.parent.matrixWorld ).invert();
153
- bone.matrix.multiply( globalMatrix );
141
+ globalMatrix.elements[ 12 ] *= options.scale * options.hipInfluence.x;
142
+ globalMatrix.elements[ 13 ] *= options.scale * options.hipInfluence.y;
143
+ globalMatrix.elements[ 14 ] *= options.scale * options.hipInfluence.z;
154
144
 
155
- } else {
145
+ if ( options.hipPosition !== undefined ) {
156
146
 
157
- bone.matrix.copy( globalMatrix );
147
+ globalMatrix.elements[ 12 ] += options.hipPosition.x * options.scale;
148
+ globalMatrix.elements[ 13 ] += options.hipPosition.y * options.scale;
149
+ globalMatrix.elements[ 14 ] += options.hipPosition.z * options.scale;
150
+
151
+ }
158
152
 
159
153
  }
160
154
 
161
- if ( options.preserveHipPosition && name === options.hip ) {
155
+ if ( bone.parent ) {
162
156
 
163
- bone.matrix.setPosition( pos.set( 0, bone.position.y, 0 ) );
157
+ bone.matrix.copy( bone.parent.matrixWorld ).invert();
158
+ bone.matrix.multiply( globalMatrix );
159
+
160
+ } else {
161
+
162
+ bone.matrix.copy( globalMatrix );
164
163
 
165
164
  }
166
165
 
@@ -170,12 +169,12 @@ function retarget( target, source, options = {} ) {
170
169
 
171
170
  }
172
171
 
173
- if ( options.preservePosition ) {
172
+ if ( options.preserveBonePositions ) {
174
173
 
175
174
  for ( let i = 0; i < bones.length; ++ i ) {
176
175
 
177
176
  bone = bones[ i ];
178
- name = options.names[ bone.name ] || bone.name;
177
+ name = getBoneName( bone, options ) || bone.name;
179
178
 
180
179
  if ( name !== options.hip ) {
181
180
 
@@ -187,7 +186,7 @@ function retarget( target, source, options = {} ) {
187
186
 
188
187
  }
189
188
 
190
- if ( options.preserveMatrix ) {
189
+ if ( options.preserveBoneMatrix ) {
191
190
 
192
191
  // restore matrix
193
192
 
@@ -200,6 +199,7 @@ function retarget( target, source, options = {} ) {
200
199
  function retargetClip( target, source, clip, options = {} ) {
201
200
 
202
201
  options.useFirstFramePosition = options.useFirstFramePosition !== undefined ? options.useFirstFramePosition : false;
202
+
203
203
  // Calculate the fps from the source clip based on the track with the most frames, unless fps is already provided.
204
204
  options.fps = options.fps !== undefined ? options.fps : ( Math.max( ...clip.tracks.map( track => track.times.length ) ) / clip.duration );
205
205
  options.names = options.names || [];
@@ -216,30 +216,48 @@ function retargetClip( target, source, clip, options = {} ) {
216
216
  mixer = new AnimationMixer( source ),
217
217
  bones = getBones( target.skeleton ),
218
218
  boneDatas = [];
219
+
219
220
  let positionOffset,
220
221
  bone, boneTo, boneData,
221
222
  name;
222
223
 
223
224
  mixer.clipAction( clip ).play();
224
- mixer.update( 0 );
225
+
226
+ // trim
227
+
228
+ let start = 0, end = numFrames;
229
+
230
+ if ( options.trim !== undefined ) {
231
+
232
+ start = Math.round( options.trim[ 0 ] * options.fps );
233
+ end = Math.min( Math.round( options.trim[ 1 ] * options.fps ), numFrames ) - start;
234
+
235
+ mixer.update( options.trim[ 0 ] );
236
+
237
+ } else {
238
+
239
+ mixer.update( 0 );
240
+
241
+ }
225
242
 
226
243
  source.updateMatrixWorld();
227
244
 
228
- for ( let i = 0; i < numFrames; ++ i ) {
245
+ //
246
+
247
+ for ( let frame = 0; frame < end; ++ frame ) {
229
248
 
230
- const time = i * delta;
249
+ const time = frame * delta;
231
250
 
232
251
  retarget( target, source, options );
233
252
 
234
253
  for ( let j = 0; j < bones.length; ++ j ) {
235
254
 
236
- name = options.names[ bones[ j ].name ] || bones[ j ].name;
237
-
255
+ bone = bones[ j ];
256
+ name = getBoneName( bone, options ) || bone.name;
238
257
  boneTo = getBoneByName( name, source.skeleton );
239
258
 
240
259
  if ( boneTo ) {
241
260
 
242
- bone = bones[ j ];
243
261
  boneData = boneDatas[ j ] = boneDatas[ j ] || { bone: bone };
244
262
 
245
263
  if ( options.hip === name ) {
@@ -247,15 +265,15 @@ function retargetClip( target, source, clip, options = {} ) {
247
265
  if ( ! boneData.pos ) {
248
266
 
249
267
  boneData.pos = {
250
- times: new Float32Array( numFrames ),
251
- values: new Float32Array( numFrames * 3 )
268
+ times: new Float32Array( end ),
269
+ values: new Float32Array( end * 3 )
252
270
  };
253
271
 
254
272
  }
255
273
 
256
274
  if ( options.useFirstFramePosition ) {
257
275
 
258
- if ( i === 0 ) {
276
+ if ( frame === 0 ) {
259
277
 
260
278
  positionOffset = bone.position.clone();
261
279
 
@@ -265,30 +283,30 @@ function retargetClip( target, source, clip, options = {} ) {
265
283
 
266
284
  }
267
285
 
268
- boneData.pos.times[ i ] = time;
286
+ boneData.pos.times[ frame ] = time;
269
287
 
270
- bone.position.toArray( boneData.pos.values, i * 3 );
288
+ bone.position.toArray( boneData.pos.values, frame * 3 );
271
289
 
272
290
  }
273
291
 
274
292
  if ( ! boneData.quat ) {
275
293
 
276
294
  boneData.quat = {
277
- times: new Float32Array( numFrames ),
278
- values: new Float32Array( numFrames * 4 )
295
+ times: new Float32Array( end ),
296
+ values: new Float32Array( end * 4 )
279
297
  };
280
298
 
281
299
  }
282
300
 
283
- boneData.quat.times[ i ] = time;
301
+ boneData.quat.times[ frame ] = time;
284
302
 
285
- bone.quaternion.toArray( boneData.quat.values, i * 4 );
303
+ bone.quaternion.toArray( boneData.quat.values, frame * 4 );
286
304
 
287
305
  }
288
306
 
289
307
  }
290
308
 
291
- if ( i === numFrames - 2 ) {
309
+ if ( frame === end - 2 ) {
292
310
 
293
311
  // last mixer update before final loop iteration
294
312
  // make sure we do not go over or equal to clip duration
@@ -6,7 +6,7 @@ import {
6
6
  * tool for "unwrapping" and debugging three.js geometries UV mapping
7
7
  *
8
8
  * Sample usage:
9
- * document.body.appendChild( UVsDebug( new THREE.SphereGeometry( 10, 10, 10, 10 ) );
9
+ * document.body.appendChild( UVsDebug( new THREE.SphereGeometry( 10, 10, 10, 10 ) ) );
10
10
  *
11
11
  */
12
12
 
@@ -83,6 +83,7 @@ export function decompress( texture, maxTextureSize = Infinity, renderer = null
83
83
  readableTexture.magFilter = texture.magFilter;
84
84
  readableTexture.wrapS = texture.wrapS;
85
85
  readableTexture.wrapT = texture.wrapT;
86
+ readableTexture.colorSpace = texture.colorSpace;
86
87
  readableTexture.name = texture.name;
87
88
 
88
89
  if ( _renderer ) {
@@ -0,0 +1,64 @@
1
+ import {
2
+ QuadMesh,
3
+ NodeMaterial,
4
+ WebGPURenderer,
5
+ CanvasTexture
6
+ } from 'three';
7
+ import { texture, uv } from 'three/tsl';
8
+
9
+ let _renderer;
10
+ const _quadMesh = /*@__PURE__*/ new QuadMesh();
11
+
12
+ export async function decompress( blitTexture, maxTextureSize = Infinity, renderer = null ) {
13
+
14
+ if ( renderer === null ) {
15
+
16
+ renderer = _renderer = new WebGPURenderer();
17
+ await renderer.init();
18
+
19
+ }
20
+
21
+ const material = new NodeMaterial();
22
+
23
+ material.fragmentNode = texture( blitTexture, uv().flipY() );
24
+
25
+ const width = Math.min( blitTexture.image.width, maxTextureSize );
26
+ const height = Math.min( blitTexture.image.height, maxTextureSize );
27
+
28
+ const currentOutputColorSpace = renderer.outputColorSpace;
29
+
30
+ renderer.setSize( width, height );
31
+ renderer.outputColorSpace = blitTexture.colorSpace;
32
+
33
+ _quadMesh.material = material;
34
+ _quadMesh.render( renderer );
35
+
36
+ renderer.outputColorSpace = currentOutputColorSpace;
37
+
38
+ const canvas = document.createElement( 'canvas' );
39
+ const context = canvas.getContext( '2d' );
40
+
41
+ canvas.width = width;
42
+ canvas.height = height;
43
+
44
+ context.drawImage( renderer.domElement, 0, 0, width, height );
45
+
46
+ const readableTexture = new CanvasTexture( canvas );
47
+
48
+ readableTexture.minFilter = blitTexture.minFilter;
49
+ readableTexture.magFilter = blitTexture.magFilter;
50
+ readableTexture.wrapS = blitTexture.wrapS;
51
+ readableTexture.wrapT = blitTexture.wrapT;
52
+ readableTexture.colorSpace = blitTexture.colorSpace;
53
+ readableTexture.name = blitTexture.name;
54
+
55
+ if ( _renderer !== null ) {
56
+
57
+ _renderer.dispose();
58
+ _renderer = null;
59
+
60
+ }
61
+
62
+ return readableTexture;
63
+
64
+ }
@@ -1,4 +1,4 @@
1
- import * as THREE from 'three';
1
+ import { BufferGeometry, Float32BufferAttribute, Matrix4, Mesh, MeshBasicMaterial, Object3D, Raycaster, SphereGeometry, Vector3 } from 'three';
2
2
 
3
3
  const PINCH_MAX = 0.05;
4
4
  const PINCH_THRESHOLD = 0.02;
@@ -13,13 +13,13 @@ const POINTER_LENGTH = 0.035;
13
13
  const POINTER_SEGMENTS = 16;
14
14
  const POINTER_RINGS = 12;
15
15
  const POINTER_HEMISPHERE_ANGLE = 110;
16
- const YAXIS = /* @__PURE__ */ new THREE.Vector3( 0, 1, 0 );
17
- const ZAXIS = /* @__PURE__ */ new THREE.Vector3( 0, 0, 1 );
16
+ const YAXIS = /* @__PURE__ */ new Vector3( 0, 1, 0 );
17
+ const ZAXIS = /* @__PURE__ */ new Vector3( 0, 0, 1 );
18
18
 
19
19
  const CURSOR_RADIUS = 0.02;
20
20
  const CURSOR_MAX_DISTANCE = 1.5;
21
21
 
22
- class OculusHandPointerModel extends THREE.Object3D {
22
+ class OculusHandPointerModel extends Object3D {
23
23
 
24
24
  constructor( hand, controller ) {
25
25
 
@@ -96,7 +96,7 @@ class OculusHandPointerModel extends THREE.Object3D {
96
96
 
97
97
  const vertices = this.pointerGeometry.attributes.position.array;
98
98
  // first ring for front face
99
- const frontFaceBase = new THREE.Vector3(
99
+ const frontFaceBase = new Vector3(
100
100
  POINTER_FRONT_RADIUS,
101
101
  0,
102
102
  - 1 * ( POINTER_LENGTH - rearRadius )
@@ -104,7 +104,7 @@ class OculusHandPointerModel extends THREE.Object3D {
104
104
  this._drawVerticesRing( vertices, frontFaceBase, 0 );
105
105
 
106
106
  // rings for rear hemisphere
107
- const rearBase = new THREE.Vector3(
107
+ const rearBase = new Vector3(
108
108
  Math.sin( ( Math.PI * POINTER_HEMISPHERE_ANGLE ) / 180 ) * rearRadius,
109
109
  Math.cos( ( Math.PI * POINTER_HEMISPHERE_ANGLE ) / 180 ) * rearRadius,
110
110
  0
@@ -122,7 +122,7 @@ class OculusHandPointerModel extends THREE.Object3D {
122
122
  // front and rear face center vertices
123
123
  const frontCenterIndex = POINTER_SEGMENTS * ( 1 + POINTER_RINGS );
124
124
  const rearCenterIndex = POINTER_SEGMENTS * ( 1 + POINTER_RINGS ) + 1;
125
- const frontCenter = new THREE.Vector3(
125
+ const frontCenter = new Vector3(
126
126
  0,
127
127
  0,
128
128
  - 1 * ( POINTER_LENGTH - rearRadius )
@@ -130,14 +130,14 @@ class OculusHandPointerModel extends THREE.Object3D {
130
130
  vertices[ frontCenterIndex * 3 ] = frontCenter.x;
131
131
  vertices[ frontCenterIndex * 3 + 1 ] = frontCenter.y;
132
132
  vertices[ frontCenterIndex * 3 + 2 ] = frontCenter.z;
133
- const rearCenter = new THREE.Vector3( 0, 0, rearRadius );
133
+ const rearCenter = new Vector3( 0, 0, rearRadius );
134
134
  vertices[ rearCenterIndex * 3 ] = rearCenter.x;
135
135
  vertices[ rearCenterIndex * 3 + 1 ] = rearCenter.y;
136
136
  vertices[ rearCenterIndex * 3 + 2 ] = rearCenter.z;
137
137
 
138
138
  this.pointerGeometry.setAttribute(
139
139
  'position',
140
- new THREE.Float32BufferAttribute( vertices, 3 )
140
+ new Float32BufferAttribute( vertices, 3 )
141
141
  );
142
142
  // verticesNeedUpdate = true;
143
143
 
@@ -151,11 +151,11 @@ class OculusHandPointerModel extends THREE.Object3D {
151
151
  ).fill( 0 );
152
152
  // const vertices = [];
153
153
  const indices = [];
154
- this.pointerGeometry = new THREE.BufferGeometry();
154
+ this.pointerGeometry = new BufferGeometry();
155
155
 
156
156
  this.pointerGeometry.setAttribute(
157
157
  'position',
158
- new THREE.Float32BufferAttribute( vertices, 3 )
158
+ new Float32BufferAttribute( vertices, 3 )
159
159
  );
160
160
 
161
161
  this._updatePointerVertices( POINTER_REAR_RADIUS );
@@ -213,27 +213,27 @@ class OculusHandPointerModel extends THREE.Object3D {
213
213
  POINTER_SEGMENTS * POINTER_RINGS
214
214
  );
215
215
 
216
- const material = new THREE.MeshBasicMaterial();
216
+ const material = new MeshBasicMaterial();
217
217
  material.transparent = true;
218
218
  material.opacity = POINTER_OPACITY_MIN;
219
219
 
220
220
  this.pointerGeometry.setIndex( indices );
221
221
 
222
- this.pointerMesh = new THREE.Mesh( this.pointerGeometry, material );
222
+ this.pointerMesh = new Mesh( this.pointerGeometry, material );
223
223
 
224
224
  this.pointerMesh.position.set( 0, 0, - 1 * POINTER_REAR_RADIUS );
225
- this.pointerObject = new THREE.Object3D();
225
+ this.pointerObject = new Object3D();
226
226
  this.pointerObject.add( this.pointerMesh );
227
227
 
228
- this.raycaster = new THREE.Raycaster();
228
+ this.raycaster = new Raycaster();
229
229
 
230
230
  // create cursor
231
- const cursorGeometry = new THREE.SphereGeometry( CURSOR_RADIUS, 10, 10 );
232
- const cursorMaterial = new THREE.MeshBasicMaterial();
231
+ const cursorGeometry = new SphereGeometry( CURSOR_RADIUS, 10, 10 );
232
+ const cursorMaterial = new MeshBasicMaterial();
233
233
  cursorMaterial.transparent = true;
234
234
  cursorMaterial.opacity = POINTER_OPACITY_MIN;
235
235
 
236
- this.cursorObject = new THREE.Mesh( cursorGeometry, cursorMaterial );
236
+ this.cursorObject = new Mesh( cursorGeometry, cursorMaterial );
237
237
  this.pointerObject.add( this.cursorObject );
238
238
 
239
239
  this.add( this.pointerObject );
@@ -245,7 +245,7 @@ class OculusHandPointerModel extends THREE.Object3D {
245
245
  if ( this.raycaster ) {
246
246
 
247
247
  const pointerMatrix = this.pointerObject.matrixWorld;
248
- const tempMatrix = new THREE.Matrix4();
248
+ const tempMatrix = new Matrix4();
249
249
  tempMatrix.identity().extractRotation( pointerMatrix );
250
250
  this.raycaster.ray.origin.setFromMatrixPosition( pointerMatrix );
251
251
  this.raycaster.ray.direction.set( 0, 0, - 1 ).applyMatrix4( tempMatrix );
@@ -372,7 +372,7 @@ class OculusHandPointerModel extends THREE.Object3D {
372
372
  if ( this.raycaster && ! this.attached ) {
373
373
 
374
374
  const intersections = this.raycaster.intersectObjects( objects, recursive );
375
- const direction = new THREE.Vector3( 0, 0, - 1 );
375
+ const direction = new Vector3( 0, 0, - 1 );
376
376
  if ( intersections.length > 0 ) {
377
377
 
378
378
  const intersection = intersections[ 0 ];
@@ -391,7 +391,7 @@ class OculusHandPointerModel extends THREE.Object3D {
391
391
 
392
392
  setCursor( distance ) {
393
393
 
394
- const direction = new THREE.Vector3( 0, 0, - 1 );
394
+ const direction = new Vector3( 0, 0, - 1 );
395
395
  if ( this.raycaster && ! this.attached ) {
396
396
 
397
397
  this.cursorObject.position.copy( direction.multiplyScalar( distance ) );
@@ -1,4 +1,4 @@
1
- import * as THREE from 'three';
1
+ import { DoubleSide, Mesh, MeshBasicMaterial, PlaneGeometry, Texture } from 'three';
2
2
 
3
3
  function createText( message, height ) {
4
4
 
@@ -17,20 +17,20 @@ function createText( message, height ) {
17
17
  context.fillStyle = '#ffffff';
18
18
  context.fillText( message, textWidth / 2, textHeight / 2 );
19
19
 
20
- const texture = new THREE.Texture( canvas );
20
+ const texture = new Texture( canvas );
21
21
  texture.needsUpdate = true;
22
22
 
23
- const material = new THREE.MeshBasicMaterial( {
23
+ const material = new MeshBasicMaterial( {
24
24
  color: 0xffffff,
25
- side: THREE.DoubleSide,
25
+ side: DoubleSide,
26
26
  map: texture,
27
27
  transparent: true,
28
28
  } );
29
- const geometry = new THREE.PlaneGeometry(
29
+ const geometry = new PlaneGeometry(
30
30
  ( height * textWidth ) / textHeight,
31
31
  height
32
32
  );
33
- const plane = new THREE.Mesh( geometry, material );
33
+ const plane = new Mesh( geometry, material );
34
34
  return plane;
35
35
 
36
36
  }
@@ -54,6 +54,8 @@ class XRControllerModel extends Object3D {
54
54
  /**
55
55
  * Polls data from the XRInputSource and updates the model's components to match
56
56
  * the real world data
57
+ *
58
+ * @param {boolean} force
57
59
  */
58
60
  updateMatrixWorld( force ) {
59
61
 
@@ -107,8 +109,11 @@ class XRControllerModel extends Object3D {
107
109
 
108
110
  /**
109
111
  * Walks the model's tree to find the nodes needed to animate the components and
110
- * saves them to the motionContoller components for use in the frame loop. When
112
+ * saves them to the motionController components for use in the frame loop. When
111
113
  * touchpads are found, attaches a touch dot to them.
114
+ *
115
+ * @param {MotionController} motionController
116
+ * @param {Object3D} scene
112
117
  */
113
118
  function findNodes( motionController, scene ) {
114
119
 
@@ -239,7 +244,7 @@ class XRControllerModelFactory {
239
244
 
240
245
  const xrInputSource = event.data;
241
246
 
242
- if ( xrInputSource.targetRayMode !== 'tracked-pointer' || ! xrInputSource.gamepad ) return;
247
+ if ( xrInputSource.targetRayMode !== 'tracked-pointer' || ! xrInputSource.gamepad || xrInputSource.hand ) return;
243
248
 
244
249
  fetchProfile( xrInputSource, this.path, DEFAULT_PROFILE ).then( ( { profile, assetPath } ) => {
245
250
 
@@ -79,7 +79,7 @@ class SessionLightProbe {
79
79
 
80
80
  onXRFrame( time, xrFrame ) {
81
81
 
82
- // If either this obejct or the XREstimatedLight has been destroyed, stop
82
+ // If either this object or the XREstimatedLight has been destroyed, stop
83
83
  // running the frame loop.
84
84
  if ( ! this.xrLight ) {
85
85
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plastic-software/three",
3
- "version": "0.167.3",
3
+ "version": "0.174.0",
4
4
  "description": "JavaScript 3D library",
5
5
  "type": "module",
6
6
  "main": "./build/three.cjs",
@@ -16,13 +16,15 @@
16
16
  "./addons/*": "./examples/jsm/*",
17
17
  "./src/*": "./src/*",
18
18
  "./webgpu": "./build/three.webgpu.js",
19
- "./tsl": "./build/three.webgpu.js"
19
+ "./tsl": "./build/three.tsl.js"
20
20
  },
21
21
  "repository": {
22
22
  "type": "git",
23
23
  "url": "https://github.com/mrdoob/three.js"
24
24
  },
25
- "sideEffects": [ "./src/nodes/**/*" ],
25
+ "sideEffects": [
26
+ "./src/nodes/**/*"
27
+ ],
26
28
  "files": [
27
29
  "build",
28
30
  "examples/jsm",
@@ -45,6 +47,7 @@
45
47
  "test": "npm run lint && npm run test-unit && npm run test-unit-addons",
46
48
  "build": "rollup -c utils/build/rollup.config.js",
47
49
  "build-module": "rollup -c utils/build/rollup.config.js --configOnlyModule",
50
+ "build-docs": "jsdoc -c utils/docs/jsdoc.config.json",
48
51
  "dev": "concurrently --names \"ROLLUP,HTTP\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080\"",
49
52
  "dev-ssl": "concurrently --names \"ROLLUP,HTTPS\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080 --ssl\"",
50
53
  "lint-core": "eslint src",
@@ -55,13 +58,14 @@
55
58
  "lint-playground": "eslint playground --ignore-pattern libs",
56
59
  "lint-manual": "eslint manual --ignore-pattern 3rdparty --ignore-pattern prettify.js --ignore-pattern shapefile.js",
57
60
  "lint-test": "eslint test --ignore-pattern vendor",
58
- "lint-utils": "eslint utils",
61
+ "lint-utils": "eslint utils --ignore-pattern prettify --ignore-pattern fuse",
59
62
  "lint": "npm run lint-core",
60
63
  "lint-fix": "npm run lint-core -- --fix && npm run lint-addons -- --fix && npm run lint-examples -- --fix && npm run lint-docs -- --fix && npm run lint-editor -- --fix && npm run lint-playground -- --fix && npm run lint-manual -- --fix && npm run lint-test -- --fix && npm run lint-utils -- --fix",
61
64
  "test-unit": "qunit -r failonlyreporter -f !-webonly test/unit/three.source.unit.js",
62
65
  "test-unit-addons": "qunit -r failonlyreporter -f !-webonly test/unit/three.addons.unit.js",
63
66
  "test-e2e": "node test/e2e/puppeteer.js",
64
67
  "test-e2e-cov": "node test/e2e/check-coverage.js",
68
+ "test-e2e-webgpu": "node test/e2e/puppeteer.js --webgpu",
65
69
  "test-treeshake": "rollup -c test/rollup.treeshake.config.js",
66
70
  "test-circular-deps": "dpdm --no-warning --no-tree --exit-code circular:1 src/nodes/Nodes.js",
67
71
  "make-screenshot": "node test/e2e/puppeteer.js --make"
@@ -89,10 +93,10 @@
89
93
  },
90
94
  "homepage": "https://threejs.org/",
91
95
  "devDependencies": {
92
- "@rollup/plugin-node-resolve": "^15.0.1",
96
+ "@rollup/plugin-node-resolve": "^16.0.0",
93
97
  "@rollup/plugin-terser": "^0.4.0",
94
98
  "chalk": "^5.2.0",
95
- "concurrently": "^8.0.1",
99
+ "concurrently": "^9.0.0",
96
100
  "dpdm": "^3.14.0",
97
101
  "eslint": "^8.37.0",
98
102
  "eslint-config-mdcs": "^5.0.0",
@@ -100,15 +104,16 @@
100
104
  "eslint-plugin-html": "^8.0.0",
101
105
  "eslint-plugin-import": "^2.27.5",
102
106
  "failonlyreporter": "^1.0.0",
103
- "jimp": "^0.22.7",
107
+ "jimp": "^1.6.0",
108
+ "jsdoc": "^4.0.4",
104
109
  "magic-string": "^0.30.0",
105
- "pixelmatch": "^6.0.0",
110
+ "pixelmatch": "^7.0.0",
106
111
  "puppeteer": "^22.0.0",
107
112
  "qunit": "^2.19.4",
108
113
  "rollup": "^4.6.0",
109
114
  "rollup-plugin-filesize": "^10.0.0",
110
115
  "rollup-plugin-visualizer": "^5.9.0",
111
- "servez": "^2.0.0"
116
+ "servez": "^2.2.4"
112
117
  },
113
118
  "overrides": {
114
119
  "jpeg-js": "^0.4.4"