super-three 0.171.0 → 0.173.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 (455) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +594 -427
  4. package/build/three.core.js +515 -81
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +79 -350
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +20 -7
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +29362 -3427
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +29361 -3427
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +0 -5
  15. package/examples/jsm/animation/CCDIKSolver.js +9 -7
  16. package/examples/jsm/capabilities/WebGPU.js +1 -1
  17. package/examples/jsm/controls/ArcballControls.js +48 -37
  18. package/examples/jsm/controls/OrbitControls.js +5 -4
  19. package/examples/jsm/csm/CSMShadowNode.js +16 -11
  20. package/examples/jsm/curves/NURBSCurve.js +1 -1
  21. package/examples/jsm/curves/NURBSUtils.js +3 -0
  22. package/examples/jsm/effects/OutlineEffect.js +1 -1
  23. package/examples/jsm/exporters/GLTFExporter.js +34 -29
  24. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  25. package/examples/jsm/exporters/PLYExporter.js +2 -2
  26. package/examples/jsm/geometries/TextGeometry.js +1 -12
  27. package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
  28. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  29. package/examples/jsm/interactive/InteractiveGroup.js +108 -51
  30. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  31. package/examples/jsm/lights/LightProbeGenerator.js +3 -3
  32. package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
  33. package/examples/jsm/loaders/3MFLoader.js +6 -3
  34. package/examples/jsm/loaders/BVHLoader.js +1 -1
  35. package/examples/jsm/loaders/ColladaLoader.js +5 -5
  36. package/examples/jsm/loaders/DDSLoader.js +42 -0
  37. package/examples/jsm/loaders/GCodeLoader.js +4 -2
  38. package/examples/jsm/loaders/GLTFLoader.js +22 -4
  39. package/examples/jsm/loaders/KTX2Loader.js +6 -1
  40. package/examples/jsm/loaders/KTXLoader.js +4 -4
  41. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  42. package/examples/jsm/loaders/LottieLoader.js +1 -1
  43. package/examples/jsm/loaders/MTLLoader.js +1 -0
  44. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  45. package/examples/jsm/loaders/PLYLoader.js +7 -7
  46. package/examples/jsm/loaders/PVRLoader.js +1 -1
  47. package/examples/jsm/loaders/SVGLoader.js +2 -2
  48. package/examples/jsm/loaders/TDSLoader.js +1 -2
  49. package/examples/jsm/loaders/VRMLLoader.js +7 -7
  50. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  51. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
  52. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  53. package/examples/jsm/math/ConvexHull.js +1 -1
  54. package/examples/jsm/math/OBB.js +17 -0
  55. package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
  56. package/examples/jsm/misc/ProgressiveLightMap.js +4 -3
  57. package/examples/jsm/misc/ProgressiveLightMapGPU.js +14 -13
  58. package/examples/jsm/misc/Volume.js +27 -17
  59. package/examples/jsm/misc/VolumeSlice.js +7 -5
  60. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  61. package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
  62. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  63. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  64. package/examples/jsm/objects/Sky.js +2 -2
  65. package/examples/jsm/objects/SkyMesh.js +3 -3
  66. package/examples/jsm/objects/Water2.js +1 -1
  67. package/examples/jsm/objects/Water2Mesh.js +2 -2
  68. package/examples/jsm/objects/WaterMesh.js +29 -24
  69. package/examples/jsm/physics/JoltPhysics.js +7 -7
  70. package/examples/jsm/physics/RapierPhysics.js +4 -4
  71. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  72. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  73. package/examples/jsm/postprocessing/OutlinePass.js +4 -4
  74. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  75. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  76. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  77. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  78. package/examples/jsm/postprocessing/SSRPass.js +2 -4
  79. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  80. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  81. package/examples/jsm/shaders/BokehShader2.js +1 -1
  82. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  83. package/examples/jsm/shaders/OutputShader.js +5 -1
  84. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  85. package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
  86. package/examples/jsm/transpiler/TSLEncoder.js +2 -0
  87. package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
  88. package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
  89. package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
  90. package/examples/jsm/tsl/display/BleachBypass.js +10 -0
  91. package/examples/jsm/tsl/display/BloomNode.js +233 -26
  92. package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
  93. package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
  94. package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
  95. package/examples/jsm/tsl/display/FXAANode.js +52 -3
  96. package/examples/jsm/tsl/display/FilmNode.js +47 -1
  97. package/examples/jsm/tsl/display/GTAONode.js +210 -14
  98. package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
  99. package/examples/jsm/tsl/display/LensflareNode.js +131 -13
  100. package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
  101. package/examples/jsm/tsl/display/MotionBlur.js +12 -2
  102. package/examples/jsm/tsl/display/OutlineNode.js +343 -26
  103. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
  104. package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
  105. package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
  106. package/examples/jsm/tsl/display/SMAANode.js +187 -46
  107. package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
  108. package/examples/jsm/tsl/display/SSRNode.js +194 -21
  109. package/examples/jsm/tsl/display/Sepia.js +9 -0
  110. package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
  111. package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
  112. package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
  113. package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
  114. package/examples/jsm/tsl/display/TransitionNode.js +71 -6
  115. package/examples/jsm/tsl/display/hashBlur.js +14 -3
  116. package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
  117. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  118. package/examples/jsm/utils/CameraUtils.js +4 -1
  119. package/examples/jsm/utils/GeometryUtils.js +22 -19
  120. package/examples/jsm/utils/SceneUtils.js +2 -2
  121. package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
  122. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  123. package/package.json +8 -3
  124. package/src/Three.Core.js +4 -0
  125. package/src/Three.Legacy.js +0 -21
  126. package/src/Three.TSL.js +18 -5
  127. package/src/Three.WebGPU.Nodes.js +2 -2
  128. package/src/Three.WebGPU.js +2 -2
  129. package/src/animation/PropertyBinding.js +2 -2
  130. package/src/cameras/ArrayCamera.js +1 -0
  131. package/src/cameras/PerspectiveCamera.js +18 -2
  132. package/src/constants.js +6 -1
  133. package/src/core/BufferAttribute.js +4 -0
  134. package/src/core/EventDispatcher.js +8 -6
  135. package/src/core/RenderTarget.js +18 -0
  136. package/src/core/RenderTarget3D.js +22 -0
  137. package/src/core/RenderTargetArray.js +22 -0
  138. package/src/extras/Earcut.js +1 -1
  139. package/src/extras/ImageUtils.js +1 -11
  140. package/src/extras/PMREMGenerator.js +20 -0
  141. package/src/extras/TextureUtils.js +6 -0
  142. package/src/helpers/CameraHelper.js +16 -13
  143. package/src/loaders/nodes/NodeLoader.js +59 -0
  144. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  145. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  146. package/src/materials/nodes/Line2NodeMaterial.js +128 -34
  147. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  148. package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
  149. package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
  150. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  151. package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
  152. package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
  153. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  154. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
  155. package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
  156. package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
  157. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  158. package/src/materials/nodes/NodeMaterial.js +476 -23
  159. package/src/materials/nodes/NodeMaterials.js +0 -1
  160. package/src/materials/nodes/PointsNodeMaterial.js +121 -10
  161. package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
  162. package/src/materials/nodes/SpriteNodeMaterial.js +78 -20
  163. package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
  164. package/src/materials/nodes/manager/NodeMaterialObserver.js +95 -0
  165. package/src/nodes/Nodes.js +5 -6
  166. package/src/nodes/TSL.js +6 -3
  167. package/src/nodes/accessors/AccessorsUtils.js +27 -0
  168. package/src/nodes/accessors/Arrays.js +47 -6
  169. package/src/nodes/accessors/BatchNode.js +42 -6
  170. package/src/nodes/accessors/Bitangent.js +37 -0
  171. package/src/nodes/accessors/BufferAttributeNode.js +178 -5
  172. package/src/nodes/accessors/BufferNode.js +63 -0
  173. package/src/nodes/accessors/BuiltinNode.js +38 -0
  174. package/src/nodes/accessors/Camera.js +113 -3
  175. package/src/nodes/accessors/ClippingNode.js +71 -2
  176. package/src/nodes/accessors/CubeTextureNode.js +64 -0
  177. package/src/nodes/accessors/InstanceNode.js +85 -2
  178. package/src/nodes/accessors/InstancedMeshNode.js +28 -3
  179. package/src/nodes/accessors/Lights.js +50 -1
  180. package/src/nodes/accessors/MaterialNode.js +306 -12
  181. package/src/nodes/accessors/MaterialProperties.js +7 -0
  182. package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
  183. package/src/nodes/accessors/ModelNode.js +100 -5
  184. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
  185. package/src/nodes/accessors/MorphNode.js +48 -4
  186. package/src/nodes/accessors/Normal.js +65 -5
  187. package/src/nodes/accessors/Object3DNode.js +101 -1
  188. package/src/nodes/accessors/PointUVNode.js +26 -0
  189. package/src/nodes/accessors/Position.js +56 -7
  190. package/src/nodes/accessors/ReferenceBaseNode.js +186 -0
  191. package/src/nodes/accessors/ReferenceNode.js +201 -2
  192. package/src/nodes/accessors/ReflectVector.js +24 -0
  193. package/src/nodes/accessors/RendererReferenceNode.js +46 -1
  194. package/src/nodes/accessors/SceneNode.js +54 -0
  195. package/src/nodes/accessors/SkinningNode.js +127 -1
  196. package/src/nodes/accessors/StorageBufferNode.js +209 -8
  197. package/src/nodes/accessors/StorageTextureNode.js +118 -0
  198. package/src/nodes/accessors/Tangent.js +38 -2
  199. package/src/nodes/accessors/Texture3DNode.js +91 -7
  200. package/src/nodes/accessors/TextureBicubic.js +12 -2
  201. package/src/nodes/accessors/TextureNode.js +316 -10
  202. package/src/nodes/accessors/TextureSizeNode.js +42 -0
  203. package/src/nodes/accessors/UV.js +10 -1
  204. package/src/nodes/accessors/UniformArrayNode.js +231 -25
  205. package/src/nodes/accessors/UserDataNode.js +46 -0
  206. package/src/nodes/accessors/VelocityNode.js +80 -0
  207. package/src/nodes/accessors/VertexColorNode.js +39 -2
  208. package/src/nodes/code/CodeNode.js +95 -1
  209. package/src/nodes/code/ExpressionNode.js +28 -0
  210. package/src/nodes/code/FunctionCallNode.js +37 -0
  211. package/src/nodes/code/FunctionNode.js +45 -0
  212. package/src/nodes/code/ScriptableNode.js +223 -1
  213. package/src/nodes/code/ScriptableValueNode.js +85 -1
  214. package/src/nodes/core/ArrayNode.js +125 -0
  215. package/src/nodes/core/AssignNode.js +48 -2
  216. package/src/nodes/core/AttributeNode.js +43 -0
  217. package/src/nodes/core/BypassNode.js +47 -2
  218. package/src/nodes/core/CacheNode.js +53 -2
  219. package/src/nodes/core/ConstNode.js +32 -0
  220. package/src/nodes/core/ContextNode.js +65 -0
  221. package/src/nodes/core/IndexNode.js +68 -7
  222. package/src/nodes/core/InputNode.js +48 -0
  223. package/src/nodes/core/LightingModel.js +60 -0
  224. package/src/nodes/core/MRTNode.js +66 -0
  225. package/src/nodes/core/Node.js +350 -12
  226. package/src/nodes/core/NodeAttribute.js +38 -0
  227. package/src/nodes/core/NodeBuilder.js +1166 -26
  228. package/src/nodes/core/NodeCache.js +41 -2
  229. package/src/nodes/core/NodeCode.js +31 -0
  230. package/src/nodes/core/NodeFrame.js +123 -2
  231. package/src/nodes/core/NodeFunction.js +46 -0
  232. package/src/nodes/core/NodeFunctionInput.js +44 -0
  233. package/src/nodes/core/NodeParser.js +11 -0
  234. package/src/nodes/core/NodeUniform.js +52 -0
  235. package/src/nodes/core/NodeUtils.js +152 -1
  236. package/src/nodes/core/NodeVar.js +47 -1
  237. package/src/nodes/core/NodeVarying.js +28 -0
  238. package/src/nodes/core/OutputStructNode.js +51 -10
  239. package/src/nodes/core/ParameterNode.js +28 -0
  240. package/src/nodes/core/PropertyNode.js +232 -0
  241. package/src/nodes/core/StackNode.js +98 -1
  242. package/src/nodes/core/StructNode.js +121 -0
  243. package/src/nodes/core/StructType.js +13 -0
  244. package/src/nodes/core/StructTypeNode.js +105 -6
  245. package/src/nodes/core/TempNode.js +31 -5
  246. package/src/nodes/core/UniformGroupNode.js +82 -7
  247. package/src/nodes/core/UniformNode.js +66 -0
  248. package/src/nodes/core/VarNode.js +146 -7
  249. package/src/nodes/core/VaryingNode.js +100 -3
  250. package/src/nodes/core/constants.js +36 -0
  251. package/src/nodes/display/BlendModes.js +88 -1
  252. package/src/nodes/display/BumpMapNode.js +37 -0
  253. package/src/nodes/display/ColorAdjustment.js +53 -11
  254. package/src/nodes/display/ColorSpaceFunctions.js +16 -0
  255. package/src/nodes/display/ColorSpaceNode.js +82 -0
  256. package/src/nodes/display/FrontFacingNode.js +29 -0
  257. package/src/nodes/display/NormalMapNode.js +43 -0
  258. package/src/nodes/display/PassNode.js +300 -7
  259. package/src/nodes/display/PosterizeNode.js +33 -0
  260. package/src/nodes/display/RenderOutputNode.js +66 -1
  261. package/src/nodes/display/ScreenNode.js +96 -0
  262. package/src/nodes/display/ToneMappingFunctions.js +58 -10
  263. package/src/nodes/display/ToneMappingNode.js +55 -2
  264. package/src/nodes/display/ToonOutlinePassNode.js +73 -0
  265. package/src/nodes/display/ViewportDepthNode.js +122 -8
  266. package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
  267. package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
  268. package/src/nodes/display/ViewportTextureNode.js +57 -0
  269. package/src/nodes/fog/Fog.js +110 -0
  270. package/src/nodes/functions/BasicLightingModel.js +24 -0
  271. package/src/nodes/functions/PhongLightingModel.js +34 -2
  272. package/src/nodes/functions/PhysicalLightingModel.js +167 -8
  273. package/src/nodes/functions/ShadowMaskModel.js +23 -0
  274. package/src/nodes/functions/ToonLightingModel.js +20 -0
  275. package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
  276. package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
  277. package/src/nodes/geometry/RangeNode.js +54 -2
  278. package/src/nodes/gpgpu/AtomicFunctionNode.js +174 -2
  279. package/src/nodes/gpgpu/BarrierNode.js +47 -0
  280. package/src/nodes/gpgpu/ComputeBuiltinNode.js +134 -0
  281. package/src/nodes/gpgpu/ComputeNode.js +106 -2
  282. package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
  283. package/src/nodes/lighting/AONode.js +18 -0
  284. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  285. package/src/nodes/lighting/AnalyticLightNode.js +97 -2
  286. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  287. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  288. package/src/nodes/lighting/DirectionalLightNode.js +10 -0
  289. package/src/nodes/lighting/EnvironmentNode.js +18 -0
  290. package/src/nodes/lighting/HemisphereLightNode.js +31 -0
  291. package/src/nodes/lighting/IESSpotLightNode.js +11 -0
  292. package/src/nodes/lighting/IrradianceNode.js +17 -0
  293. package/src/nodes/lighting/LightProbeNode.js +20 -0
  294. package/src/nodes/lighting/LightUtils.js +12 -0
  295. package/src/nodes/lighting/LightingContextNode.js +48 -0
  296. package/src/nodes/lighting/LightingNode.js +15 -6
  297. package/src/nodes/lighting/LightsNode.js +132 -1
  298. package/src/nodes/lighting/PointLightNode.js +32 -1
  299. package/src/nodes/lighting/PointShadowNode.js +54 -1
  300. package/src/nodes/lighting/RectAreaLightNode.js +44 -6
  301. package/src/nodes/lighting/ShadowBaseNode.js +93 -0
  302. package/src/nodes/lighting/ShadowNode.js +241 -35
  303. package/src/nodes/lighting/SpotLightNode.js +43 -0
  304. package/src/nodes/math/ConditionalNode.js +78 -4
  305. package/src/nodes/math/Hash.js +9 -0
  306. package/src/nodes/math/MathNode.js +627 -11
  307. package/src/nodes/math/MathUtils.js +45 -1
  308. package/src/nodes/math/OperatorNode.js +329 -18
  309. package/src/nodes/math/TriNoise3D.js +18 -7
  310. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  311. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  312. package/src/nodes/pmrem/PMREMNode.js +133 -0
  313. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  314. package/src/nodes/procedural/Checker.js +9 -0
  315. package/src/nodes/shapes/Shapes.js +33 -0
  316. package/src/nodes/tsl/TSLBase.js +3 -2
  317. package/src/nodes/tsl/TSLCore.js +22 -2
  318. package/src/nodes/utils/ArrayElementNode.js +39 -3
  319. package/src/nodes/utils/ConvertNode.js +31 -0
  320. package/src/nodes/utils/CubeMapNode.js +78 -0
  321. package/src/nodes/utils/Discard.js +16 -0
  322. package/src/nodes/utils/EquirectUVNode.js +31 -1
  323. package/src/nodes/utils/FlipNode.js +38 -0
  324. package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
  325. package/src/nodes/utils/JoinNode.js +25 -0
  326. package/src/nodes/utils/LoopNode.js +82 -2
  327. package/src/nodes/utils/MatcapUVNode.js +17 -0
  328. package/src/nodes/utils/MaxMipLevelNode.js +49 -0
  329. package/src/nodes/utils/MemberNode.js +68 -0
  330. package/src/nodes/utils/Oscillators.js +33 -0
  331. package/src/nodes/utils/Packing.js +17 -0
  332. package/src/nodes/utils/PostProcessingUtils.js +28 -23
  333. package/src/nodes/utils/RTTNode.js +123 -2
  334. package/src/nodes/utils/ReflectorNode.js +174 -4
  335. package/src/nodes/utils/RemapNode.js +79 -0
  336. package/src/nodes/utils/RotateNode.js +41 -0
  337. package/src/nodes/utils/SetNode.js +44 -1
  338. package/src/nodes/utils/SplitNode.js +55 -3
  339. package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
  340. package/src/nodes/utils/SpriteUtils.js +17 -0
  341. package/src/nodes/utils/StorageArrayElementNode.js +54 -0
  342. package/src/nodes/utils/Timer.js +40 -0
  343. package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
  344. package/src/nodes/utils/UVUtils.js +20 -0
  345. package/src/nodes/utils/ViewportUtils.js +13 -0
  346. package/src/objects/BatchedMesh.js +2 -3
  347. package/src/objects/ClippingGroup.js +49 -0
  348. package/src/objects/Line.js +6 -6
  349. package/src/renderers/WebGLRenderer.js +30 -4
  350. package/src/renderers/common/Animation.js +85 -0
  351. package/src/renderers/common/Attributes.js +36 -0
  352. package/src/renderers/common/Backend.js +502 -44
  353. package/src/renderers/common/Background.js +48 -1
  354. package/src/renderers/common/BindGroup.js +43 -0
  355. package/src/renderers/common/Binding.js +35 -0
  356. package/src/renderers/common/Bindings.js +93 -1
  357. package/src/renderers/common/Buffer.js +49 -0
  358. package/src/renderers/common/BufferUtils.js +27 -0
  359. package/src/renderers/common/BundleGroup.js +57 -0
  360. package/src/renderers/common/ChainMap.js +45 -6
  361. package/src/renderers/common/ClippingContext.js +108 -15
  362. package/src/renderers/common/Color4.js +40 -0
  363. package/src/renderers/common/ComputePipeline.js +24 -0
  364. package/src/renderers/common/CubeRenderTarget.js +13 -0
  365. package/src/renderers/common/DataMap.js +37 -1
  366. package/src/renderers/common/Geometries.js +91 -14
  367. package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
  368. package/src/renderers/common/Info.js +78 -35
  369. package/src/renderers/common/Lighting.js +34 -6
  370. package/src/renderers/common/Pipeline.js +22 -0
  371. package/src/renderers/common/Pipelines.js +148 -5
  372. package/src/renderers/common/PostProcessing.js +99 -11
  373. package/src/renderers/common/ProgrammableStage.js +60 -2
  374. package/src/renderers/common/QuadMesh.js +54 -5
  375. package/src/renderers/common/RenderBundle.js +14 -8
  376. package/src/renderers/common/RenderBundles.js +39 -10
  377. package/src/renderers/common/RenderContext.js +201 -2
  378. package/src/renderers/common/RenderContexts.js +59 -6
  379. package/src/renderers/common/RenderList.js +178 -0
  380. package/src/renderers/common/RenderLists.js +40 -3
  381. package/src/renderers/common/RenderObject.js +400 -17
  382. package/src/renderers/common/RenderObjects.js +103 -7
  383. package/src/renderers/common/RenderPipeline.js +24 -0
  384. package/src/renderers/common/Renderer.js +1170 -86
  385. package/src/renderers/common/RendererUtils.js +193 -0
  386. package/src/renderers/common/SampledTexture.js +120 -0
  387. package/src/renderers/common/Sampler.js +30 -0
  388. package/src/renderers/common/StorageBuffer.js +24 -0
  389. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  390. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  391. package/src/renderers/common/StorageTexture.js +38 -0
  392. package/src/renderers/common/Textures.js +97 -7
  393. package/src/renderers/common/TimestampQueryPool.js +39 -0
  394. package/src/renderers/common/Uniform.js +225 -3
  395. package/src/renderers/common/UniformBuffer.js +19 -0
  396. package/src/renderers/common/UniformsGroup.js +141 -2
  397. package/src/renderers/common/XRManager.js +1193 -0
  398. package/src/renderers/common/XRRenderTarget.js +74 -0
  399. package/src/renderers/common/extras/PMREMGenerator.js +76 -10
  400. package/src/renderers/common/nodes/NodeBuilderState.js +99 -5
  401. package/src/renderers/common/nodes/NodeLibrary.js +89 -0
  402. package/src/renderers/common/nodes/NodeSampledTexture.js +90 -2
  403. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  404. package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
  405. package/src/renderers/common/nodes/NodeUniform.js +243 -2
  406. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  407. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  408. package/src/renderers/common/nodes/Nodes.js +352 -78
  409. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  410. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  411. package/src/renderers/webgl/WebGLBackground.js +4 -0
  412. package/src/renderers/webgl-fallback/WebGLBackend.js +819 -116
  413. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +347 -18
  414. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +58 -1
  415. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  416. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  417. package/src/renderers/webgl-fallback/utils/WebGLState.js +323 -11
  418. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +168 -22
  419. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +359 -0
  420. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  421. package/src/renderers/webgpu/WebGPUBackend.js +578 -164
  422. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +36 -0
  423. package/src/renderers/webgpu/WebGPURenderer.js +36 -0
  424. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
  425. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
  426. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +674 -52
  427. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
  428. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  429. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +95 -14
  430. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +94 -1
  431. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +102 -3
  432. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +98 -1
  433. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +262 -18
  434. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +274 -0
  435. package/src/renderers/webgpu/utils/WebGPUUtils.js +116 -4
  436. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  437. package/src/renderers/webxr/WebXRManager.js +19 -2
  438. package/src/textures/Data3DTexture.js +2 -2
  439. package/src/textures/Texture.js +4 -0
  440. package/src/textures/VideoFrameTexture.js +35 -0
  441. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
  442. package/examples/jsm/animation/MMDPhysics.js +0 -1408
  443. package/examples/jsm/exporters/MMDExporter.js +0 -223
  444. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -176
  445. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  446. package/examples/jsm/loaders/MMDLoader.js +0 -2298
  447. package/examples/jsm/objects/InstancedPoints.js +0 -19
  448. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  449. package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
  450. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
  451. package/src/nodes/core/UniformGroup.js +0 -13
  452. package/src/nodes/fog/FogExp2Node.js +0 -35
  453. package/src/nodes/fog/FogNode.js +0 -50
  454. package/src/nodes/fog/FogRangeNode.js +0 -36
  455. package/src/renderers/common/PostProcessingUtils.js +0 -86
@@ -1,7 +1,5 @@
1
1
  export * from './animation/AnimationClipCreator.js';
2
2
  export * from './animation/CCDIKSolver.js';
3
- export * from './animation/MMDAnimationHelper.js';
4
- export * from './animation/MMDPhysics.js';
5
3
 
6
4
  export { default as WebGL } from './capabilities/WebGL.js';
7
5
 
@@ -40,7 +38,6 @@ export * from './exporters/DRACOExporter.js';
40
38
  export * from './exporters/EXRExporter.js';
41
39
  export * from './exporters/GLTFExporter.js';
42
40
  export * from './exporters/KTX2Exporter.js';
43
- export * from './exporters/MMDExporter.js';
44
41
  export * from './exporters/OBJExporter.js';
45
42
  export * from './exporters/PLYExporter.js';
46
43
  export * from './exporters/STLExporter.js';
@@ -105,7 +102,6 @@ export * from './loaders/LWOLoader.js';
105
102
  export * from './loaders/LottieLoader.js';
106
103
  export * from './loaders/MD2Loader.js';
107
104
  export * from './loaders/MDDLoader.js';
108
- export * from './loaders/MMDLoader.js';
109
105
  export * from './loaders/MTLLoader.js';
110
106
  export * from './loaders/NRRDLoader.js';
111
107
  export * from './loaders/OBJLoader.js';
@@ -240,7 +236,6 @@ export * from './shaders/HueSaturationShader.js';
240
236
  export * from './shaders/KaleidoShader.js';
241
237
  export * from './shaders/LuminosityHighPassShader.js';
242
238
  export * from './shaders/LuminosityShader.js';
243
- export * from './shaders/MMDToonShader.js';
244
239
  export * from './shaders/MirrorShader.js';
245
240
  export * from './shaders/NormalMapShader.js';
246
241
  export * from './shaders/OutputShader.js';
@@ -28,7 +28,7 @@ const _matrix = new Matrix4();
28
28
 
29
29
  /**
30
30
  * CCD Algorithm
31
- * - https://sites.google.com/site/auraliusproject/ccd-algorithm
31
+ * - https://web.archive.org/web/20221206080850/https://sites.google.com/site/auraliusproject/ccd-algorithm
32
32
  *
33
33
  * // ik parameter example
34
34
  * //
@@ -111,8 +111,7 @@ class CCDIKSolver {
111
111
 
112
112
  const link = bones[ links[ j ].index ];
113
113
 
114
- // skip this link and following links.
115
- // this skip is used for MMD performance optimization.
114
+ // skip this link and following links
116
115
  if ( links[ j ].enabled === false ) break;
117
116
 
118
117
  const limitation = links[ j ].limitation;
@@ -278,13 +277,14 @@ function setPositionOfBoneToAttributeArray( array, index, bone, matrixWorldInv )
278
277
 
279
278
  /**
280
279
  * Visualize IK bones
281
- *
282
- * @param {SkinnedMesh} mesh
283
- * @param {Array<Object>} iks
284
- * @param {number} sphereSize
285
280
  */
286
281
  class CCDIKHelper extends Object3D {
287
282
 
283
+ /**
284
+ * @param {SkinnedMesh} mesh
285
+ * @param {Array<Object>} [iks=[]]
286
+ * @param {number} [sphereSize=0.25]
287
+ */
288
288
  constructor( mesh, iks = [], sphereSize = 0.25 ) {
289
289
 
290
290
  super();
@@ -331,6 +331,8 @@ class CCDIKHelper extends Object3D {
331
331
 
332
332
  /**
333
333
  * Updates IK bones visualization.
334
+ *
335
+ * @param {Boolean} force
334
336
  */
335
337
  updateMatrixWorld( force ) {
336
338
 
@@ -1,4 +1,4 @@
1
- let isAvailable = ( typeof navigator !== 'undefined' && navigator.gpu !== undefined );
1
+ let isAvailable = ( typeof navigator !== 'undefined' && navigator.gpu !== undefined );
2
2
 
3
3
  if ( typeof window !== 'undefined' && isAvailable ) {
4
4
 
@@ -70,14 +70,18 @@ const _offset = new Vector3();
70
70
  const _gizmoMatrixStateTemp = new Matrix4();
71
71
  const _cameraMatrixStateTemp = new Matrix4();
72
72
  const _scalePointTemp = new Vector3();
73
- /**
74
- *
75
- * @param {Camera} camera Virtual camera used in the scene
76
- * @param {HTMLElement} domElement Renderer's dom element
77
- * @param {Scene} scene The scene to be rendered
78
- */
73
+
74
+ const _EPS = 0.000001;
75
+
76
+
79
77
  class ArcballControls extends Controls {
80
78
 
79
+ /**
80
+ *
81
+ * @param {Camera} camera Virtual camera used in the scene
82
+ * @param {HTMLElement?} [domElement=null] Renderer's dom element
83
+ * @param {Scene?} [scene=null] The scene to be rendered
84
+ */
81
85
  constructor( camera, domElement = null, scene = null ) {
82
86
 
83
87
  super( camera, domElement );
@@ -1100,9 +1104,9 @@ class ArcballControls extends Controls {
1100
1104
 
1101
1105
  /**
1102
1106
  * Set a new mouse action by specifying the operation to be performed and a mouse/key combination. In case of conflict, replaces the existing one
1103
- * @param {String} operation The operation to be performed ('PAN', 'ROTATE', 'ZOOM', 'FOV)
1104
- * @param {*} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches
1105
- * @param {*} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed
1107
+ * @param {'PAN'|'ROTATE'|'ZOOM'|'FOV'} operation The operation to be performed ('PAN', 'ROTATE', 'ZOOM', 'FOV')
1108
+ * @param {0|1|2|'WHEEL'} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches
1109
+ * @param {'CTRL'|'SHIFT'|null} [key=null] The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed
1106
1110
  * @returns {Boolean} True if the mouse action has been successfully added, false otherwise
1107
1111
  */
1108
1112
  setMouseAction( operation, mouse, key = null ) {
@@ -1181,9 +1185,9 @@ class ArcballControls extends Controls {
1181
1185
 
1182
1186
  /**
1183
1187
  * Remove a mouse action by specifying its mouse/key combination
1184
- * @param {*} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches
1185
- * @param {*} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed
1186
- * @returns {Boolean} True if the operation has been succesfully removed, false otherwise
1188
+ * @param {0|1|2|'WHEEL'} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches
1189
+ * @param {'CTRL'|'SHIFT'|null} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed
1190
+ * @returns {Boolean} True if the operation has been successfully removed, false otherwise
1187
1191
  */
1188
1192
  unsetMouseAction( mouse, key = null ) {
1189
1193
 
@@ -1204,9 +1208,9 @@ class ArcballControls extends Controls {
1204
1208
 
1205
1209
  /**
1206
1210
  * Return the operation associated to a mouse/keyboard combination
1207
- * @param {*} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches
1208
- * @param {*} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed
1209
- * @returns The operation if it has been found, null otherwise
1211
+ * @param {0|1|2|'WHEEL'} mouse Mouse button index (0, 1, 2) or 'WHEEL' for wheel notches
1212
+ * @param {'CTRL'|'SHIFT'|null} key Keyboard modifier
1213
+ * @returns {'PAN'|'ROTATE'|'ZOOM'|'FOV'|null} The operation if it has been found, null otherwise
1210
1214
  */
1211
1215
  getOpFromAction( mouse, key ) {
1212
1216
 
@@ -1244,9 +1248,9 @@ class ArcballControls extends Controls {
1244
1248
 
1245
1249
  /**
1246
1250
  * Get the operation associated to mouse and key combination and returns the corresponding FSA state
1247
- * @param {Number} mouse Mouse button
1248
- * @param {String} key Keyboard modifier
1249
- * @returns The FSA state obtained from the operation associated to mouse/keyboard combination
1251
+ * @param {0|1|2} mouse Mouse button index (0, 1, 2)
1252
+ * @param {'CTRL'|'SHIFT'|null} key Keyboard modifier
1253
+ * @returns {STATE?} The FSA state obtained from the operation associated to mouse/keyboard combination
1250
1254
  */
1251
1255
  getOpStateFromAction( mouse, key ) {
1252
1256
 
@@ -1402,10 +1406,12 @@ class ArcballControls extends Controls {
1402
1406
 
1403
1407
  /**
1404
1408
  * Calculate the angular speed
1409
+ *
1405
1410
  * @param {Number} p0 Position at t0
1406
1411
  * @param {Number} p1 Position at t1
1407
1412
  * @param {Number} t0 Initial time in milliseconds
1408
1413
  * @param {Number} t1 Ending time in milliseconds
1414
+ * @returns {Number}
1409
1415
  */
1410
1416
  calculateAngularSpeed( p0, p1, t0, t1 ) {
1411
1417
 
@@ -1450,7 +1456,7 @@ class ArcballControls extends Controls {
1450
1456
  }
1451
1457
 
1452
1458
  /**
1453
- * Calculate the trackball radius so that gizmo's diamater will be 2/3 of the minimum side of the camera frustum
1459
+ * Calculate the trackball radius so that gizmo's diameter will be 2/3 of the minimum side of the camera frustum
1454
1460
  * @param {Camera} camera
1455
1461
  * @returns {Number} The trackball radius
1456
1462
  */
@@ -1476,7 +1482,7 @@ class ArcballControls extends Controls {
1476
1482
  * Focus operation consist of positioning the point of interest in front of the camera and a slightly zoom in
1477
1483
  * @param {Vector3} point The point of interest
1478
1484
  * @param {Number} size Scale factor
1479
- * @param {Number} amount Amount of operation to be completed (used for focus animations, default is complete full operation)
1485
+ * @param {Number} [amount=1] Amount of operation to be completed (used for focus animations, default is complete full operation)
1480
1486
  */
1481
1487
  focus( point, size, amount = 1 ) {
1482
1488
 
@@ -1627,8 +1633,9 @@ class ArcballControls extends Controls {
1627
1633
 
1628
1634
  /**
1629
1635
  * Calculate the cursor position in NDC
1630
- * @param {number} x Cursor horizontal coordinate within the canvas
1631
- * @param {number} y Cursor vertical coordinate within the canvas
1636
+ *
1637
+ * @param {number} cursorX Cursor horizontal coordinate within the canvas
1638
+ * @param {number} cursorY Cursor vertical coordinate within the canvas
1632
1639
  * @param {HTMLElement} canvas The canvas where the renderer draws its output
1633
1640
  * @returns {Vector2} Cursor normalized position inside the canvas
1634
1641
  */
@@ -1643,8 +1650,9 @@ class ArcballControls extends Controls {
1643
1650
 
1644
1651
  /**
1645
1652
  * Calculate the cursor position inside the canvas x/y coordinates with the origin being in the center of the canvas
1646
- * @param {Number} x Cursor horizontal coordinate within the canvas
1647
- * @param {Number} y Cursor vertical coordinate within the canvas
1653
+ *
1654
+ * @param {Number} cursorX Cursor horizontal coordinate within the canvas
1655
+ * @param {Number} cursorY Cursor vertical coordinate within the canvas
1648
1656
  * @param {HTMLElement} canvas The canvas where the renderer draws its output
1649
1657
  * @returns {Vector2} Cursor position inside the canvas
1650
1658
  */
@@ -1713,7 +1721,7 @@ class ArcballControls extends Controls {
1713
1721
 
1714
1722
  /**
1715
1723
  * Set gizmos radius factor and redraws gizmos
1716
- * @param {Float} value Value of radius factor
1724
+ * @param {Number} value Value of radius factor
1717
1725
  */
1718
1726
  setTbRadius( value ) {
1719
1727
 
@@ -1940,9 +1948,11 @@ class ArcballControls extends Controls {
1940
1948
 
1941
1949
  /**
1942
1950
  * Perform pan operation moving camera between two points
1951
+ *
1943
1952
  * @param {Vector3} p0 Initial point
1944
1953
  * @param {Vector3} p1 Ending point
1945
- * @param {Boolean} adjust If movement should be adjusted considering camera distance (Perspective only)
1954
+ * @param {Boolean} [adjust=false] If movement should be adjusted considering camera distance (Perspective only)
1955
+ * @returns {Object}
1946
1956
  */
1947
1957
  pan( p0, p1, adjust = false ) {
1948
1958
 
@@ -2219,7 +2229,7 @@ class ArcballControls extends Controls {
2219
2229
 
2220
2230
  /**
2221
2231
  * Set camera fov
2222
- * @param {Number} value fov to be setted
2232
+ * @param {Number} value fov to be set
2223
2233
  */
2224
2234
  setFov( value ) {
2225
2235
 
@@ -2234,8 +2244,9 @@ class ArcballControls extends Controls {
2234
2244
 
2235
2245
  /**
2236
2246
  * Set values in transformation object
2237
- * @param {Matrix4} camera Transformation to be applied to the camera
2238
- * @param {Matrix4} gizmos Transformation to be applied to gizmos
2247
+ *
2248
+ * @param {Matrix4} [camera=null] Transformation to be applied to the camera
2249
+ * @param {Matrix4} [gizmos=null] Transformation to be applied to gizmos
2239
2250
  */
2240
2251
  setTransformationMatrices( camera = null, gizmos = null ) {
2241
2252
 
@@ -2279,9 +2290,10 @@ class ArcballControls extends Controls {
2279
2290
 
2280
2291
  /**
2281
2292
  * Rotate camera around its direction axis passing by a given point by a given angle
2293
+ *
2282
2294
  * @param {Vector3} point The point where the rotation axis is passing trough
2283
2295
  * @param {Number} angle Angle in radians
2284
- * @returns The computed transormation matix
2296
+ * @returns {Object} The computed transformation matrix
2285
2297
  */
2286
2298
  zRotate( point, angle ) {
2287
2299
 
@@ -2313,9 +2325,10 @@ class ArcballControls extends Controls {
2313
2325
 
2314
2326
  /**
2315
2327
  * Unproject the cursor on the 3D object surface
2328
+ *
2316
2329
  * @param {Vector2} cursor Cursor coordinates in NDC
2317
2330
  * @param {Camera} camera Virtual camera
2318
- * @returns {Vector3} The point of intersection with the model, if exist, null otherwise
2331
+ * @returns {Vector3?} The point of intersection with the model, if exist, null otherwise
2319
2332
  */
2320
2333
  unprojectOnObj( cursor, camera ) {
2321
2334
 
@@ -2476,7 +2489,7 @@ class ArcballControls extends Controls {
2476
2489
  * @param {Number} cursorX Cursor horizontal coordinate on screen
2477
2490
  * @param {Number} cursorY Cursor vertical coordinate on screen
2478
2491
  * @param {HTMLElement} canvas The canvas where the renderer draws its output
2479
- * @param {Boolean} initialDistance If initial distance between camera and gizmos should be used for calculations instead of current (Perspective only)
2492
+ * @param {Boolean} [initialDistance=false] If initial distance between camera and gizmos should be used for calculations instead of current (Perspective only)
2480
2493
  * @returns {Vector3} The unprojected point on the trackball plane
2481
2494
  */
2482
2495
  unprojectOnTbPlane( camera, cursorX, cursorY, canvas, initialDistance = false ) {
@@ -2576,7 +2589,7 @@ class ArcballControls extends Controls {
2576
2589
  /**
2577
2590
  * Update the trackball FSA
2578
2591
  * @param {STATE} newState New state of the FSA
2579
- * @param {Boolean} updateMatrices If matriices state should be updated
2592
+ * @param {Boolean} updateMatrices If matrices state should be updated
2580
2593
  */
2581
2594
  updateTbState( newState, updateMatrices ) {
2582
2595
 
@@ -2591,8 +2604,6 @@ class ArcballControls extends Controls {
2591
2604
 
2592
2605
  update() {
2593
2606
 
2594
- const EPS = 0.000001;
2595
-
2596
2607
  if ( this.target.equals( this._currentTarget ) === false ) {
2597
2608
 
2598
2609
  this._gizmos.position.copy( this.target ); //for correct radius calculation
@@ -2618,7 +2629,7 @@ class ArcballControls extends Controls {
2618
2629
  //check distance
2619
2630
  const distance = this.object.position.distanceTo( this._gizmos.position );
2620
2631
 
2621
- if ( distance > this.maxDistance + EPS || distance < this.minDistance - EPS ) {
2632
+ if ( distance > this.maxDistance + _EPS || distance < this.minDistance - _EPS ) {
2622
2633
 
2623
2634
  const newDistance = MathUtils.clamp( distance, this.minDistance, this.maxDistance );
2624
2635
  this.applyTransformMatrix( this.scale( newDistance / distance, this._gizmos.position ) );
@@ -2637,7 +2648,7 @@ class ArcballControls extends Controls {
2637
2648
  const oldRadius = this._tbRadius;
2638
2649
  this._tbRadius = this.calculateTbRadius( this.object );
2639
2650
 
2640
- if ( oldRadius < this._tbRadius - EPS || oldRadius > this._tbRadius + EPS ) {
2651
+ if ( oldRadius < this._tbRadius - _EPS || oldRadius > this._tbRadius + _EPS ) {
2641
2652
 
2642
2653
  const scale = ( this._gizmos.scale.x + this._gizmos.scale.y + this._gizmos.scale.z ) / 3;
2643
2654
  const newRadius = this._tbRadius / scale;
@@ -92,6 +92,7 @@ class OrbitControls extends Controls {
92
92
  // Set to false to disable rotating
93
93
  this.enableRotate = true;
94
94
  this.rotateSpeed = 1.0;
95
+ this.keyRotateSpeed = 1.0;
95
96
 
96
97
  // Set to false to disable panning
97
98
  this.enablePan = true;
@@ -786,7 +787,7 @@ class OrbitControls extends Controls {
786
787
 
787
788
  if ( this.enableRotate ) {
788
789
 
789
- this._rotateUp( _twoPI * this.rotateSpeed / this.domElement.clientHeight );
790
+ this._rotateUp( _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
790
791
 
791
792
  }
792
793
 
@@ -809,7 +810,7 @@ class OrbitControls extends Controls {
809
810
 
810
811
  if ( this.enableRotate ) {
811
812
 
812
- this._rotateUp( - _twoPI * this.rotateSpeed / this.domElement.clientHeight );
813
+ this._rotateUp( - _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
813
814
 
814
815
  }
815
816
 
@@ -832,7 +833,7 @@ class OrbitControls extends Controls {
832
833
 
833
834
  if ( this.enableRotate ) {
834
835
 
835
- this._rotateLeft( _twoPI * this.rotateSpeed / this.domElement.clientHeight );
836
+ this._rotateLeft( _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
836
837
 
837
838
  }
838
839
 
@@ -855,7 +856,7 @@ class OrbitControls extends Controls {
855
856
 
856
857
  if ( this.enableRotate ) {
857
858
 
858
- this._rotateLeft( - _twoPI * this.rotateSpeed / this.domElement.clientHeight );
859
+ this._rotateLeft( - _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
859
860
 
860
861
  }
861
862
 
@@ -6,8 +6,7 @@ import {
6
6
  Box3,
7
7
  Object3D,
8
8
  WebGLCoordinateSystem,
9
- NodeUpdateType,
10
- Node
9
+ ShadowBaseNode
11
10
  } from 'three/webgpu';
12
11
 
13
12
  import { CSMFrustum } from './CSMFrustum.js';
@@ -36,13 +35,12 @@ class LwLight extends Object3D {
36
35
 
37
36
  }
38
37
 
39
- class CSMShadowNode extends Node {
38
+ class CSMShadowNode extends ShadowBaseNode {
40
39
 
41
40
  constructor( light, data = {} ) {
42
41
 
43
- super();
42
+ super( light );
44
43
 
45
- this.light = light;
46
44
  this.camera = null;
47
45
  this.cascades = data.cascades || 3;
48
46
  this.maxFar = data.maxFar || 100000;
@@ -57,7 +55,6 @@ class CSMShadowNode extends Node {
57
55
  this._cascades = [];
58
56
  this.mainFrustum = null;
59
57
  this.frustums = [];
60
- this.updateBeforeType = NodeUpdateType.FRAME;
61
58
 
62
59
  this.lights = [];
63
60
 
@@ -78,6 +75,8 @@ class CSMShadowNode extends Node {
78
75
  for ( let i = 0; i < this.cascades; i ++ ) {
79
76
 
80
77
  const lwLight = new LwLight();
78
+ lwLight.castShadow = true;
79
+
81
80
  const lShadow = light.shadow.clone();
82
81
  lShadow.bias = lShadow.bias * ( i + 1 );
83
82
 
@@ -256,7 +255,7 @@ class CSMShadowNode extends Node {
256
255
  setupFade() {
257
256
 
258
257
  const cameraNear = reference( 'camera.near', 'float', this ).setGroup( renderGroup );
259
- const cascades = reference( '_cascades', 'vec2', this ).setGroup( renderGroup ).label( 'cacades' );
258
+ const cascades = reference( '_cascades', 'vec2', this ).setGroup( renderGroup ).label( 'cascades' );
260
259
 
261
260
  const shadowFar = uniform( 'float' ).setGroup( renderGroup ).label( 'shadowFar' )
262
261
  .onRenderUpdate( () => Math.min( this.maxFar, this.camera.far ) );
@@ -264,7 +263,9 @@ class CSMShadowNode extends Node {
264
263
  const linearDepth = viewZToOrthographicDepth( positionView.z, cameraNear, shadowFar ).toVar( 'linearDepth' );
265
264
  const lastCascade = this.cascades - 1;
266
265
 
267
- return Fn( () => {
266
+ return Fn( ( builder ) => {
267
+
268
+ this.setupShadowPosition( builder );
268
269
 
269
270
  const ret = vec4( 1, 1, 1, 1 ).toVar( 'shadowValue' );
270
271
 
@@ -310,7 +311,7 @@ class CSMShadowNode extends Node {
310
311
 
311
312
  if ( i === 0 ) {
312
313
 
313
- // dont fade at nearest edge
314
+ // don't fade at nearest edge
314
315
  ratio = linearDepth.greaterThan( cascadeCenter ).select( ratio, 1 );
315
316
 
316
317
  }
@@ -330,14 +331,16 @@ class CSMShadowNode extends Node {
330
331
  setupStandard() {
331
332
 
332
333
  const cameraNear = reference( 'camera.near', 'float', this ).setGroup( renderGroup );
333
- const cascades = reference( '_cascades', 'vec2', this ).setGroup( renderGroup ).label( 'cacades' );
334
+ const cascades = reference( '_cascades', 'vec2', this ).setGroup( renderGroup ).label( 'cascades' );
334
335
 
335
336
  const shadowFar = uniform( 'float' ).setGroup( renderGroup ).label( 'shadowFar' )
336
337
  .onRenderUpdate( () => Math.min( this.maxFar, this.camera.far ) );
337
338
 
338
339
  const linearDepth = viewZToOrthographicDepth( positionView.z, cameraNear, shadowFar ).toVar( 'linearDepth' );
339
340
 
340
- return Fn( () => {
341
+ return Fn( ( builder ) => {
342
+
343
+ this.setupShadowPosition( builder );
341
344
 
342
345
  const ret = vec4( 1, 1, 1, 1 ).toVar( 'shadowValue' );
343
346
  const cascade = vec2().toVar( 'cascade' );
@@ -430,6 +433,8 @@ class CSMShadowNode extends Node {
430
433
 
431
434
  }
432
435
 
436
+ super.dispose();
437
+
433
438
  }
434
439
 
435
440
  }
@@ -108,4 +108,4 @@ class NURBSCurve extends Curve {
108
108
 
109
109
  }
110
110
 
111
- export { NURBSCurve };
111
+ export { NURBSCurve };
@@ -513,13 +513,16 @@ function calcVolumePoint( p, q, r, U, V, W, P, u, v, w, target ) {
513
513
  }
514
514
 
515
515
  }
516
+
516
517
  const Sw = new Vector4( 0, 0, 0, 0 );
517
518
  for ( let m = 0; m <= r; ++ m ) {
519
+
518
520
  for ( let l = 0; l <= q; ++ l ) {
519
521
 
520
522
  Sw.add( temp[ m ][ l ].multiplyScalar( Nw[ m ] ).multiplyScalar( Nv[ l ] ) );
521
523
 
522
524
  }
525
+
523
526
  }
524
527
 
525
528
  Sw.divideScalar( Sw.w );
@@ -367,7 +367,7 @@ class OutlineEffect {
367
367
 
368
368
  let keys;
369
369
 
370
- // clear originialMaterials
370
+ // clear originalMaterials
371
371
  keys = Object.keys( originalMaterials );
372
372
 
373
373
  for ( let i = 0, il = keys.length; i < il; i ++ ) {