super-three 0.181.0 → 0.184.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 (539) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +13152 -11354
  4. package/build/three.core.js +12319 -11539
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +1808 -781
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +27 -13
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +10523 -6263
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +10484 -6262
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +11 -3
  15. package/examples/jsm/animation/CCDIKSolver.js +7 -3
  16. package/examples/jsm/controls/ArcballControls.js +7 -4
  17. package/examples/jsm/controls/DragControls.js +2 -2
  18. package/examples/jsm/controls/FirstPersonControls.js +58 -54
  19. package/examples/jsm/controls/FlyControls.js +4 -0
  20. package/examples/jsm/controls/MapControls.js +55 -1
  21. package/examples/jsm/controls/OrbitControls.js +111 -8
  22. package/examples/jsm/controls/TrackballControls.js +8 -8
  23. package/examples/jsm/controls/TransformControls.js +34 -2
  24. package/examples/jsm/csm/CSM.js +2 -1
  25. package/examples/jsm/csm/CSMShadowNode.js +6 -2
  26. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  27. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  28. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  29. package/examples/jsm/exporters/EXRExporter.js +1 -1
  30. package/examples/jsm/exporters/GLTFExporter.js +152 -9
  31. package/examples/jsm/exporters/USDZExporter.js +22 -3
  32. package/examples/jsm/geometries/DecalGeometry.js +1 -1
  33. package/examples/jsm/geometries/TextGeometry.js +18 -0
  34. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  35. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  36. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  37. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  38. package/examples/jsm/helpers/ViewHelper.js +67 -8
  39. package/examples/jsm/inspector/Extension.js +13 -0
  40. package/examples/jsm/inspector/Inspector.js +203 -88
  41. package/examples/jsm/inspector/RendererInspector.js +14 -4
  42. package/examples/jsm/inspector/extensions/extensions.json +6 -0
  43. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  44. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  45. package/examples/jsm/inspector/tabs/Console.js +41 -7
  46. package/examples/jsm/inspector/tabs/Memory.js +128 -0
  47. package/examples/jsm/inspector/tabs/Parameters.js +51 -3
  48. package/examples/jsm/inspector/tabs/Performance.js +4 -4
  49. package/examples/jsm/inspector/tabs/Settings.js +264 -0
  50. package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
  51. package/examples/jsm/inspector/tabs/Viewer.js +107 -5
  52. package/examples/jsm/inspector/ui/Graph.js +2 -2
  53. package/examples/jsm/inspector/ui/List.js +1 -1
  54. package/examples/jsm/inspector/ui/Profiler.js +1936 -34
  55. package/examples/jsm/inspector/ui/Style.js +1044 -31
  56. package/examples/jsm/inspector/ui/Tab.js +222 -3
  57. package/examples/jsm/inspector/ui/Values.js +55 -2
  58. package/examples/jsm/inspector/ui/utils.js +13 -0
  59. package/examples/jsm/interaction/InteractionManager.js +226 -0
  60. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  61. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  62. package/examples/jsm/lighting/LightProbeGrid.js +651 -0
  63. package/examples/jsm/lines/LineMaterial.js +7 -1
  64. package/examples/jsm/loaders/3DMLoader.js +5 -4
  65. package/examples/jsm/loaders/3MFLoader.js +2 -2
  66. package/examples/jsm/loaders/AMFLoader.js +2 -2
  67. package/examples/jsm/loaders/ColladaLoader.js +24 -4026
  68. package/examples/jsm/loaders/DRACOLoader.js +5 -5
  69. package/examples/jsm/loaders/EXRLoader.js +687 -48
  70. package/examples/jsm/loaders/FBXLoader.js +235 -37
  71. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  72. package/examples/jsm/loaders/GLTFLoader.js +146 -178
  73. package/examples/jsm/loaders/HDRLoader.js +1 -2
  74. package/examples/jsm/loaders/KMZLoader.js +5 -5
  75. package/examples/jsm/loaders/KTX2Loader.js +27 -5
  76. package/examples/jsm/loaders/LDrawLoader.js +41 -50
  77. package/examples/jsm/loaders/LWOLoader.js +7 -39
  78. package/examples/jsm/loaders/NRRDLoader.js +2 -2
  79. package/examples/jsm/loaders/PCDLoader.js +4 -2
  80. package/examples/jsm/loaders/SVGLoader.js +2 -2
  81. package/examples/jsm/loaders/TDSLoader.js +0 -2
  82. package/examples/jsm/loaders/TGALoader.js +0 -2
  83. package/examples/jsm/loaders/USDLoader.js +100 -40
  84. package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
  85. package/examples/jsm/loaders/VOXLoader.js +660 -117
  86. package/examples/jsm/loaders/VRMLLoader.js +79 -2
  87. package/examples/jsm/loaders/VTKLoader.js +42 -25
  88. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  89. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  90. package/examples/jsm/loaders/usd/USDAParser.js +450 -363
  91. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  92. package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
  93. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  94. package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
  95. package/examples/jsm/math/Octree.js +131 -1
  96. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  97. package/examples/jsm/misc/RollerCoaster.js +42 -4
  98. package/examples/jsm/misc/Volume.js +0 -1
  99. package/examples/jsm/misc/VolumeSlice.js +0 -1
  100. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  101. package/examples/jsm/objects/LensflareMesh.js +1 -1
  102. package/examples/jsm/objects/Reflector.js +73 -25
  103. package/examples/jsm/objects/Sky.js +90 -6
  104. package/examples/jsm/objects/SkyMesh.js +150 -16
  105. package/examples/jsm/objects/Water.js +4 -3
  106. package/examples/jsm/objects/Water2.js +5 -3
  107. package/examples/jsm/objects/WaterMesh.js +5 -7
  108. package/examples/jsm/physics/AmmoPhysics.js +12 -7
  109. package/examples/jsm/physics/JoltPhysics.js +10 -6
  110. package/examples/jsm/physics/RapierPhysics.js +9 -5
  111. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  112. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  113. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  114. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  115. package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
  116. package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
  117. package/examples/jsm/renderers/Projector.js +246 -28
  118. package/examples/jsm/renderers/SVGRenderer.js +174 -60
  119. package/examples/jsm/shaders/GTAOShader.js +19 -6
  120. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  121. package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
  122. package/examples/jsm/shaders/SAOShader.js +17 -4
  123. package/examples/jsm/shaders/SSAOShader.js +11 -1
  124. package/examples/jsm/shaders/SSRShader.js +6 -5
  125. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
  126. package/examples/jsm/shaders/VignetteShader.js +1 -1
  127. package/examples/jsm/transpiler/AST.js +44 -0
  128. package/examples/jsm/transpiler/GLSLDecoder.js +63 -6
  129. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  130. package/examples/jsm/transpiler/TSLEncoder.js +46 -3
  131. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  132. package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
  133. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  134. package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
  135. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  136. package/examples/jsm/tsl/display/AnamorphicNode.js +12 -1
  137. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  138. package/examples/jsm/tsl/display/BloomNode.js +16 -6
  139. package/examples/jsm/tsl/display/CRT.js +150 -0
  140. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
  141. package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
  142. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -1
  143. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  144. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  145. package/examples/jsm/tsl/display/FXAANode.js +2 -2
  146. package/examples/jsm/tsl/display/GTAONode.js +6 -4
  147. package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
  148. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  149. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  150. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  151. package/examples/jsm/tsl/display/OutlineNode.js +69 -19
  152. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  153. package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
  154. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  155. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  156. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  157. package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
  158. package/examples/jsm/tsl/display/SSGINode.js +8 -24
  159. package/examples/jsm/tsl/display/SSRNode.js +8 -8
  160. package/examples/jsm/tsl/display/SSSNode.js +6 -4
  161. package/examples/jsm/tsl/display/Shape.js +29 -0
  162. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  163. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  164. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  165. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  166. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  167. package/examples/jsm/tsl/display/TRAANode.js +315 -126
  168. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  169. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  170. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  171. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  172. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  173. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  174. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  175. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  176. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  177. package/examples/jsm/tsl/math/Bayer.js +53 -3
  178. package/examples/jsm/utils/BufferGeometryUtils.js +2 -3
  179. package/examples/jsm/utils/ColorUtils.js +76 -0
  180. package/examples/jsm/utils/LDrawUtils.js +1 -1
  181. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  182. package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
  183. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  184. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  185. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  186. package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
  187. package/package.json +24 -30
  188. package/src/Three.Core.js +3 -1
  189. package/src/Three.TSL.js +25 -11
  190. package/src/Three.WebGPU.Nodes.js +5 -0
  191. package/src/Three.WebGPU.js +9 -0
  192. package/src/Three.js +1 -0
  193. package/src/animation/AnimationAction.js +12 -2
  194. package/src/animation/AnimationClip.js +1 -1
  195. package/src/animation/AnimationMixer.js +6 -0
  196. package/src/animation/AnimationUtils.js +1 -12
  197. package/src/animation/KeyframeTrack.js +47 -8
  198. package/src/animation/PropertyMixer.js +4 -4
  199. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  200. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  201. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  202. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  203. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  204. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  205. package/src/audio/Audio.js +1 -1
  206. package/src/audio/AudioContext.js +2 -2
  207. package/src/audio/AudioListener.js +5 -3
  208. package/src/cameras/Camera.js +32 -2
  209. package/src/cameras/CubeCamera.js +20 -0
  210. package/src/constants.js +90 -5
  211. package/src/core/BufferAttribute.js +13 -1
  212. package/src/core/BufferGeometry.js +14 -2
  213. package/src/core/Clock.js +7 -0
  214. package/src/core/Object3D.js +52 -4
  215. package/src/core/Raycaster.js +2 -2
  216. package/src/core/RenderTarget.js +4 -4
  217. package/src/extras/PMREMGenerator.js +7 -18
  218. package/src/extras/TextureUtils.js +5 -1
  219. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  220. package/src/geometries/ExtrudeGeometry.js +2 -2
  221. package/src/geometries/PolyhedronGeometry.js +1 -1
  222. package/src/geometries/TorusGeometry.js +8 -3
  223. package/src/helpers/CameraHelper.js +3 -0
  224. package/src/helpers/DirectionalLightHelper.js +4 -1
  225. package/src/helpers/HemisphereLightHelper.js +3 -0
  226. package/src/helpers/PointLightHelper.js +1 -25
  227. package/src/helpers/SpotLightHelper.js +3 -0
  228. package/src/lights/DirectionalLight.js +13 -0
  229. package/src/lights/HemisphereLight.js +10 -0
  230. package/src/lights/Light.js +1 -11
  231. package/src/lights/LightProbe.js +0 -15
  232. package/src/lights/LightShadow.js +15 -6
  233. package/src/lights/PointLight.js +15 -0
  234. package/src/lights/PointLightShadow.js +0 -86
  235. package/src/lights/SpotLight.js +22 -1
  236. package/src/lights/webgpu/IESSpotLight.js +2 -1
  237. package/src/loaders/AudioLoader.js +11 -1
  238. package/src/loaders/Cache.js +28 -0
  239. package/src/loaders/DataTextureLoader.js +6 -4
  240. package/src/loaders/FileLoader.js +2 -3
  241. package/src/loaders/ImageBitmapLoader.js +12 -9
  242. package/src/loaders/Loader.js +6 -0
  243. package/src/loaders/MaterialLoader.js +3 -2
  244. package/src/loaders/ObjectLoader.js +46 -6
  245. package/src/loaders/nodes/NodeLoader.js +2 -2
  246. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  247. package/src/materials/Material.js +2 -0
  248. package/src/materials/MeshLambertMaterial.js +9 -0
  249. package/src/materials/MeshPhongMaterial.js +9 -0
  250. package/src/materials/MeshToonMaterial.js +1 -1
  251. package/src/materials/ShaderMaterial.js +20 -1
  252. package/src/materials/nodes/Line2NodeMaterial.js +34 -7
  253. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
  254. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
  255. package/src/materials/nodes/NodeMaterial.js +45 -25
  256. package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -86
  257. package/src/math/Line3.js +6 -5
  258. package/src/math/MathUtils.js +10 -10
  259. package/src/math/Matrix2.js +13 -9
  260. package/src/math/Matrix3.js +13 -9
  261. package/src/math/Matrix4.js +87 -74
  262. package/src/math/Plane.js +4 -3
  263. package/src/math/Quaternion.js +3 -29
  264. package/src/math/Sphere.js +1 -1
  265. package/src/math/Triangle.js +1 -1
  266. package/src/math/Vector2.js +11 -7
  267. package/src/math/Vector3.js +15 -13
  268. package/src/math/Vector4.js +13 -9
  269. package/src/math/interpolants/BezierInterpolant.js +108 -0
  270. package/src/nodes/Nodes.js +86 -68
  271. package/src/nodes/TSL.js +7 -7
  272. package/src/nodes/accessors/Arrays.js +1 -1
  273. package/src/nodes/accessors/BatchNode.js +10 -10
  274. package/src/nodes/accessors/Bitangent.js +5 -5
  275. package/src/nodes/accessors/BufferAttributeNode.js +107 -15
  276. package/src/nodes/accessors/BufferNode.js +29 -2
  277. package/src/nodes/accessors/Camera.js +149 -28
  278. package/src/nodes/accessors/ClippingNode.js +4 -4
  279. package/src/nodes/accessors/CubeTextureNode.js +27 -2
  280. package/src/nodes/accessors/InstanceNode.js +148 -43
  281. package/src/nodes/accessors/MaterialNode.js +9 -1
  282. package/src/nodes/accessors/MaterialProperties.js +2 -5
  283. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  284. package/src/nodes/accessors/ModelNode.js +1 -1
  285. package/src/nodes/accessors/Normal.js +11 -11
  286. package/src/nodes/accessors/Object3DNode.js +1 -1
  287. package/src/nodes/accessors/Position.js +34 -2
  288. package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
  289. package/src/nodes/accessors/ReferenceNode.js +8 -8
  290. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  291. package/src/nodes/accessors/SceneProperties.js +47 -0
  292. package/src/nodes/accessors/SkinningNode.js +27 -26
  293. package/src/nodes/accessors/StorageBufferNode.js +14 -25
  294. package/src/nodes/accessors/StorageTextureNode.js +40 -9
  295. package/src/nodes/accessors/Tangent.js +4 -14
  296. package/src/nodes/accessors/Texture3DNode.js +32 -35
  297. package/src/nodes/accessors/TextureNode.js +67 -23
  298. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  299. package/src/nodes/accessors/UserDataNode.js +1 -2
  300. package/src/nodes/accessors/VertexColorNode.js +1 -2
  301. package/src/nodes/code/FunctionCallNode.js +1 -1
  302. package/src/nodes/code/FunctionNode.js +2 -3
  303. package/src/nodes/core/ArrayNode.js +21 -2
  304. package/src/nodes/core/AssignNode.js +3 -3
  305. package/src/nodes/core/AttributeNode.js +3 -3
  306. package/src/nodes/core/BypassNode.js +1 -1
  307. package/src/nodes/core/ContextNode.js +104 -5
  308. package/src/nodes/core/IndexNode.js +2 -1
  309. package/src/nodes/core/InputNode.js +1 -1
  310. package/src/nodes/core/InspectorNode.js +1 -1
  311. package/src/nodes/core/IsolateNode.js +1 -1
  312. package/src/nodes/core/MRTNode.js +48 -2
  313. package/src/nodes/core/Node.js +112 -15
  314. package/src/nodes/core/NodeBuilder.js +284 -66
  315. package/src/nodes/core/NodeError.js +28 -0
  316. package/src/nodes/core/NodeFrame.js +12 -4
  317. package/src/nodes/core/NodeUtils.js +11 -9
  318. package/src/nodes/core/OutputStructNode.js +12 -10
  319. package/src/nodes/core/ParameterNode.js +4 -4
  320. package/src/nodes/core/PropertyNode.js +19 -3
  321. package/src/nodes/core/StackNode.js +66 -17
  322. package/src/nodes/core/StackTrace.js +139 -0
  323. package/src/nodes/core/StructNode.js +17 -3
  324. package/src/nodes/core/StructTypeNode.js +12 -18
  325. package/src/nodes/core/SubBuildNode.js +2 -2
  326. package/src/nodes/core/UniformGroupNode.js +36 -6
  327. package/src/nodes/core/UniformNode.js +21 -5
  328. package/src/nodes/core/VarNode.js +48 -23
  329. package/src/nodes/core/VaryingNode.js +2 -19
  330. package/src/nodes/display/BlendModes.js +0 -64
  331. package/src/nodes/display/ColorAdjustment.js +17 -0
  332. package/src/nodes/display/ColorSpaceNode.js +3 -3
  333. package/src/nodes/display/NormalMapNode.js +39 -4
  334. package/src/nodes/display/PassNode.js +125 -16
  335. package/src/nodes/display/RenderOutputNode.js +7 -7
  336. package/src/nodes/display/ScreenNode.js +4 -2
  337. package/src/nodes/display/ToneMappingNode.js +1 -1
  338. package/src/nodes/display/ToonOutlinePassNode.js +2 -2
  339. package/src/nodes/display/ViewportDepthNode.js +52 -4
  340. package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
  341. package/src/nodes/display/ViewportTextureNode.js +39 -11
  342. package/src/nodes/fog/Fog.js +18 -35
  343. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
  344. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  345. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  346. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  347. package/src/nodes/functions/PhysicalLightingModel.js +126 -45
  348. package/src/nodes/geometry/RangeNode.js +5 -3
  349. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  350. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  351. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
  352. package/src/nodes/gpgpu/ComputeNode.js +74 -48
  353. package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
  354. package/src/nodes/gpgpu/WorkgroupInfoNode.js +4 -4
  355. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  356. package/src/nodes/lighting/EnvironmentNode.js +28 -3
  357. package/src/nodes/lighting/LightsNode.js +7 -28
  358. package/src/nodes/lighting/PointShadowNode.js +162 -149
  359. package/src/nodes/lighting/ShadowFilterNode.js +53 -65
  360. package/src/nodes/lighting/ShadowNode.js +120 -42
  361. package/src/nodes/math/BitcastNode.js +1 -1
  362. package/src/nodes/math/BitcountNode.js +433 -0
  363. package/src/nodes/math/ConditionalNode.js +3 -3
  364. package/src/nodes/math/MathNode.js +76 -41
  365. package/src/nodes/math/OperatorNode.js +3 -2
  366. package/src/nodes/math/PackFloatNode.js +98 -0
  367. package/src/nodes/math/UnpackFloatNode.js +96 -0
  368. package/src/nodes/pmrem/PMREMNode.js +1 -1
  369. package/src/nodes/pmrem/PMREMUtils.js +9 -15
  370. package/src/nodes/tsl/TSLBase.js +1 -1
  371. package/src/nodes/tsl/TSLCore.js +38 -17
  372. package/src/nodes/utils/ArrayElementNode.js +14 -1
  373. package/src/nodes/utils/ConvertNode.js +1 -1
  374. package/src/nodes/utils/DebugNode.js +12 -12
  375. package/src/nodes/utils/EventNode.js +31 -2
  376. package/src/nodes/utils/FlipNode.js +1 -1
  377. package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
  378. package/src/nodes/utils/JoinNode.js +3 -3
  379. package/src/nodes/utils/LoopNode.js +1 -1
  380. package/src/nodes/utils/MemberNode.js +2 -2
  381. package/src/nodes/utils/Packing.js +13 -1
  382. package/src/nodes/utils/PostProcessingUtils.js +33 -1
  383. package/src/nodes/utils/RTTNode.js +1 -1
  384. package/src/nodes/utils/ReflectorNode.js +3 -4
  385. package/src/nodes/utils/Remap.js +48 -0
  386. package/src/nodes/utils/RotateNode.js +1 -1
  387. package/src/nodes/utils/SampleNode.js +1 -1
  388. package/src/nodes/utils/SetNode.js +1 -1
  389. package/src/nodes/utils/SplitNode.js +1 -1
  390. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  391. package/src/nodes/utils/UVUtils.js +28 -0
  392. package/src/objects/BatchedMesh.js +44 -16
  393. package/src/objects/InstancedMesh.js +30 -3
  394. package/src/objects/Line.js +1 -1
  395. package/src/objects/Mesh.js +1 -1
  396. package/src/objects/Points.js +1 -1
  397. package/src/objects/Skeleton.js +9 -0
  398. package/src/objects/SkinnedMesh.js +26 -9
  399. package/src/renderers/WebGLRenderer.js +329 -145
  400. package/src/renderers/common/Animation.js +3 -3
  401. package/src/renderers/common/Attributes.js +15 -1
  402. package/src/renderers/common/Backend.js +29 -8
  403. package/src/renderers/common/Background.js +26 -13
  404. package/src/renderers/common/BindGroup.js +1 -16
  405. package/src/renderers/common/Binding.js +11 -0
  406. package/src/renderers/common/Bindings.js +29 -14
  407. package/src/renderers/common/BlendMode.js +143 -0
  408. package/src/renderers/common/Buffer.js +40 -0
  409. package/src/renderers/common/BundleGroup.js +1 -1
  410. package/src/renderers/common/ChainMap.js +30 -6
  411. package/src/renderers/common/ComputePipeline.js +1 -1
  412. package/src/renderers/common/CubeRenderTarget.js +51 -7
  413. package/src/renderers/common/Geometries.js +29 -3
  414. package/src/renderers/common/Info.js +333 -4
  415. package/src/renderers/common/InspectorBase.js +6 -1
  416. package/src/renderers/common/Lighting.js +5 -21
  417. package/src/renderers/common/Pipelines.js +40 -7
  418. package/src/renderers/common/PostProcessing.js +8 -206
  419. package/src/renderers/common/ReadbackBuffer.js +78 -0
  420. package/src/renderers/common/RenderBundle.js +3 -1
  421. package/src/renderers/common/RenderBundles.js +7 -3
  422. package/src/renderers/common/RenderContext.js +16 -0
  423. package/src/renderers/common/RenderContexts.js +33 -49
  424. package/src/renderers/common/RenderLists.js +2 -1
  425. package/src/renderers/common/RenderObject.js +17 -5
  426. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  427. package/src/renderers/common/RenderObjects.js +21 -5
  428. package/src/renderers/common/RenderPipeline.js +232 -17
  429. package/src/renderers/common/Renderer.js +481 -117
  430. package/src/renderers/common/Sampler.js +4 -4
  431. package/src/renderers/common/StorageBuffer.js +13 -1
  432. package/src/renderers/common/Textures.js +89 -4
  433. package/src/renderers/common/TimestampQueryPool.js +5 -3
  434. package/src/renderers/common/Uniform.js +8 -0
  435. package/src/renderers/common/UniformsGroup.js +62 -1
  436. package/src/renderers/common/XRManager.js +37 -29
  437. package/src/renderers/common/extras/PMREMGenerator.js +25 -23
  438. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  439. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +242 -99
  440. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  441. package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
  442. package/src/renderers/shaders/DFGLUTData.js +19 -34
  443. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  444. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  445. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  446. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  447. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  448. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  449. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
  450. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  451. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  452. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  453. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  454. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
  455. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  456. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
  457. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  458. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  459. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  460. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
  461. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  462. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  463. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  464. package/src/renderers/shaders/ShaderChunk.js +5 -3
  465. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  466. package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
  467. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
  468. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  469. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  470. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  471. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  472. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  473. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  474. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  475. package/src/renderers/shaders/ShaderLib.js +7 -6
  476. package/src/renderers/shaders/UniformsLib.js +7 -5
  477. package/src/renderers/shaders/UniformsUtils.js +27 -5
  478. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  479. package/src/renderers/webgl/WebGLBackground.js +15 -15
  480. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  481. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  482. package/src/renderers/webgl/WebGLCapabilities.js +9 -4
  483. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  484. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  485. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  486. package/src/renderers/webgl/WebGLLights.js +18 -1
  487. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  488. package/src/renderers/webgl/WebGLObjects.js +3 -1
  489. package/src/renderers/webgl/WebGLOutput.js +270 -0
  490. package/src/renderers/webgl/WebGLProgram.js +49 -109
  491. package/src/renderers/webgl/WebGLPrograms.js +63 -51
  492. package/src/renderers/webgl/WebGLRenderLists.js +15 -0
  493. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  494. package/src/renderers/webgl/WebGLShadowMap.js +188 -24
  495. package/src/renderers/webgl/WebGLState.js +75 -37
  496. package/src/renderers/webgl/WebGLTextures.js +215 -54
  497. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  498. package/src/renderers/webgl/WebGLUniformsGroups.js +19 -0
  499. package/src/renderers/webgl/WebGLUtils.js +6 -2
  500. package/src/renderers/webgl-fallback/WebGLBackend.js +253 -82
  501. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  502. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +173 -74
  503. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  504. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  505. package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
  506. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +68 -53
  507. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
  508. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +6 -2
  509. package/src/renderers/webgpu/WebGPUBackend.js +260 -140
  510. package/src/renderers/webgpu/WebGPURenderer.js +2 -1
  511. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +366 -90
  512. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +107 -34
  513. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +357 -200
  514. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  515. package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
  516. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +61 -23
  517. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +152 -200
  518. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +156 -59
  519. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +7 -7
  520. package/src/renderers/webgpu/utils/WebGPUUtils.js +33 -11
  521. package/src/renderers/webxr/WebXRController.js +12 -0
  522. package/src/renderers/webxr/WebXRManager.js +4 -2
  523. package/src/textures/CubeDepthTexture.js +76 -0
  524. package/src/textures/HTMLTexture.js +74 -0
  525. package/src/textures/Source.js +2 -2
  526. package/src/textures/Texture.js +16 -5
  527. package/src/utils.js +280 -3
  528. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  529. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  530. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  531. package/src/nodes/accessors/SceneNode.js +0 -145
  532. package/src/nodes/code/ScriptableNode.js +0 -726
  533. package/src/nodes/code/ScriptableValueNode.js +0 -253
  534. package/src/nodes/display/PosterizeNode.js +0 -65
  535. package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
  536. package/src/nodes/utils/RemapNode.js +0 -125
  537. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  538. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  539. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -124,10 +124,6 @@ class RenderTarget extends EventDispatcher {
124
124
  */
125
125
  this.viewport = new Vector4( 0, 0, width, height );
126
126
 
127
- const image = { width: width, height: height, depth: options.depth };
128
-
129
- const texture = new Texture( image );
130
-
131
127
  /**
132
128
  * An array of textures. Each color attachment is represented as a separate texture.
133
129
  * Has at least a single entry for the default color attachment.
@@ -136,6 +132,9 @@ class RenderTarget extends EventDispatcher {
136
132
  */
137
133
  this.textures = [];
138
134
 
135
+ const image = { width: width, height: height, depth: options.depth };
136
+ const texture = new Texture( image );
137
+
139
138
  const count = options.count;
140
139
  for ( let i = 0; i < count; i ++ ) {
141
140
 
@@ -370,6 +369,7 @@ class RenderTarget extends EventDispatcher {
370
369
  if ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();
371
370
 
372
371
  this.samples = source.samples;
372
+ this.multiview = source.multiview;
373
373
 
374
374
  return this;
375
375
 
@@ -103,7 +103,7 @@ class PMREMGenerator {
103
103
  * @param {number} [far=100] - The far plane distance.
104
104
  * @param {Object} [options={}] - The configuration options.
105
105
  * @param {number} [options.size=256] - The texture size of the PMREM.
106
- * @param {Vector3} [options.renderTarget=origin] - The position of the internal cube camera that renders the scene.
106
+ * @param {Vector3} [options.position=origin] - The position of the internal cube camera that renders the scene.
107
107
  * @return {WebGLRenderTarget} The resulting PMREM.
108
108
  */
109
109
  fromScene( scene, sigma = 0, near = 0.1, far = 100, options = {} ) {
@@ -314,6 +314,7 @@ class PMREMGenerator {
314
314
  ( { lodMeshes: this._lodMeshes, sizeLods: this._sizeLods, sigmas: this._sigmas } = _createPlanes( _lodMax ) );
315
315
 
316
316
  this._blurMaterial = _getBlurShader( _lodMax, width, height );
317
+ this._ggxMaterial = _getGGXShader( _lodMax, width, height );
317
318
 
318
319
  }
319
320
 
@@ -519,14 +520,6 @@ class PMREMGenerator {
519
520
  const renderer = this._renderer;
520
521
  const pingPongRenderTarget = this._pingPongRenderTarget;
521
522
 
522
- if ( this._ggxMaterial === null ) {
523
-
524
- const width = 3 * Math.max( this._cubeSize, 16 );
525
- const height = 4 * this._cubeSize;
526
- this._ggxMaterial = _getGGXShader( this._lodMax, width, height );
527
-
528
- }
529
-
530
523
  const ggxMaterial = this._ggxMaterial;
531
524
  const ggxMesh = this._lodMeshes[ lodOut ];
532
525
  ggxMesh.material = ggxMaterial;
@@ -539,7 +532,7 @@ class PMREMGenerator {
539
532
  const incrementalRoughness = Math.sqrt( targetRoughness * targetRoughness - sourceRoughness * sourceRoughness );
540
533
 
541
534
  // Apply blur strength mapping for better quality across the roughness range
542
- const blurStrength = 0.05 + targetRoughness * 0.95;
535
+ const blurStrength = 0.0 + targetRoughness * 1.25;
543
536
  const adjustedRoughness = incrementalRoughness * blurStrength;
544
537
 
545
538
  // Calculate viewport position based on output LOD level
@@ -852,24 +845,20 @@ function _getGGXShader( lodMax, width, height ) {
852
845
  vec3 importanceSampleGGX_VNDF(vec2 Xi, vec3 V, float roughness) {
853
846
  float alpha = roughness * roughness;
854
847
 
855
- // Section 3.2: Transform view direction to hemisphere configuration
856
- vec3 Vh = normalize(vec3(alpha * V.x, alpha * V.y, V.z));
857
-
858
848
  // Section 4.1: Orthonormal basis
859
- float lensq = Vh.x * Vh.x + Vh.y * Vh.y;
860
- vec3 T1 = lensq > 0.0 ? vec3(-Vh.y, Vh.x, 0.0) / sqrt(lensq) : vec3(1.0, 0.0, 0.0);
861
- vec3 T2 = cross(Vh, T1);
849
+ vec3 T1 = vec3(1.0, 0.0, 0.0);
850
+ vec3 T2 = cross(V, T1);
862
851
 
863
852
  // Section 4.2: Parameterization of projected area
864
853
  float r = sqrt(Xi.x);
865
854
  float phi = 2.0 * PI * Xi.y;
866
855
  float t1 = r * cos(phi);
867
856
  float t2 = r * sin(phi);
868
- float s = 0.5 * (1.0 + Vh.z);
857
+ float s = 0.5 * (1.0 + V.z);
869
858
  t2 = (1.0 - s) * sqrt(1.0 - t1 * t1) + s * t2;
870
859
 
871
860
  // Section 4.3: Reprojection onto hemisphere
872
- vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) * Vh;
861
+ vec3 Nh = t1 * T1 + t2 * T2 + sqrt(max(0.0, 1.0 - t1 * t1 - t2 * t2)) * V;
873
862
 
874
863
  // Section 3.4: Transform back to ellipsoid configuration
875
864
  return normalize(vec3(alpha * Nh.x, alpha * Nh.y, max(0.0, Nh.z)));
@@ -1,4 +1,4 @@
1
- import { AlphaFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBFormat, RGBAFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, UnsignedByteType, ByteType, UnsignedShortType, ShortType, HalfFloatType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedIntType, IntType, FloatType, UnsignedInt5999Type, UnsignedInt101111Type } from '../constants.js';
1
+ import { AlphaFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBFormat, RGBAFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, R11_EAC_Format, SIGNED_R11_EAC_Format, RG11_EAC_Format, SIGNED_RG11_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, UnsignedByteType, ByteType, UnsignedShortType, ShortType, HalfFloatType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedIntType, IntType, FloatType, UnsignedInt5999Type, UnsignedInt101111Type } from '../constants.js';
2
2
 
3
3
  /**
4
4
  * Scales the texture as large as possible within its surface without cropping
@@ -140,8 +140,12 @@ function getByteLength( width, height, format, type ) {
140
140
  // https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/
141
141
  case RGB_ETC1_Format:
142
142
  case RGB_ETC2_Format:
143
+ case R11_EAC_Format:
144
+ case SIGNED_R11_EAC_Format:
143
145
  return Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;
144
146
  case RGBA_ETC2_EAC_Format:
147
+ case RG11_EAC_Format:
148
+ case SIGNED_RG11_EAC_Format:
145
149
  return Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;
146
150
 
147
151
  // https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/
@@ -78,6 +78,7 @@ function CubicPoly() {
78
78
  //
79
79
 
80
80
  const tmp = /*@__PURE__*/ new Vector3();
81
+ const tmp2 = /*@__PURE__*/ new Vector3();
81
82
  const px = /*@__PURE__*/ new CubicPoly();
82
83
  const py = /*@__PURE__*/ new CubicPoly();
83
84
  const pz = /*@__PURE__*/ new CubicPoly();
@@ -202,8 +203,8 @@ class CatmullRomCurve3 extends Curve {
202
203
  } else {
203
204
 
204
205
  // extrapolate first point
205
- tmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );
206
- p0 = tmp;
206
+ tmp2.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );
207
+ p0 = tmp2;
207
208
 
208
209
  }
209
210
 
@@ -112,9 +112,9 @@ class ExtrudeGeometry extends BufferGeometry {
112
112
 
113
113
  // SETUP TNB variables
114
114
 
115
- // TODO1 - have a .isClosed in spline?
115
+ const isClosed = extrudePath.isCatmullRomCurve3 ? extrudePath.closed : false;
116
116
 
117
- splineTube = extrudePath.computeFrenetFrames( steps, false );
117
+ splineTube = extrudePath.computeFrenetFrames( steps, isClosed );
118
118
 
119
119
  // log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);
120
120
 
@@ -339,7 +339,7 @@ class PolyhedronGeometry extends BufferGeometry {
339
339
  */
340
340
  static fromJSON( data ) {
341
341
 
342
- return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );
342
+ return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.detail );
343
343
 
344
344
  }
345
345
 
@@ -25,8 +25,10 @@ class TorusGeometry extends BufferGeometry {
25
25
  * @param {number} [radialSegments=12] - The number of radial segments.
26
26
  * @param {number} [tubularSegments=48] - The number of tubular segments.
27
27
  * @param {number} [arc=Math.PI*2] - Central angle in radians.
28
+ * @param {number} [thetaStart=0] - Start of the tubular sweep in radians.
29
+ * @param {number} [thetaLength=Math.PI*2] - Length of the tubular sweep in radians.
28
30
  */
29
- constructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {
31
+ constructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI * 2 ) {
30
32
 
31
33
  super();
32
34
 
@@ -44,7 +46,9 @@ class TorusGeometry extends BufferGeometry {
44
46
  tube: tube,
45
47
  radialSegments: radialSegments,
46
48
  tubularSegments: tubularSegments,
47
- arc: arc
49
+ arc: arc,
50
+ thetaStart: thetaStart,
51
+ thetaLength: thetaLength,
48
52
  };
49
53
 
50
54
  radialSegments = Math.floor( radialSegments );
@@ -67,10 +71,11 @@ class TorusGeometry extends BufferGeometry {
67
71
 
68
72
  for ( let j = 0; j <= radialSegments; j ++ ) {
69
73
 
74
+ const v = thetaStart + ( j / radialSegments ) * thetaLength;
75
+
70
76
  for ( let i = 0; i <= tubularSegments; i ++ ) {
71
77
 
72
78
  const u = i / tubularSegments * arc;
73
- const v = j / radialSegments * Math.PI * 2;
74
79
 
75
80
  // vertex
76
81
 
@@ -18,6 +18,9 @@ const _camera = /*@__PURE__*/ new Camera();
18
18
  *
19
19
  * `CameraHelper` must be a child of the scene.
20
20
  *
21
+ * When the camera is transformed or its projection matrix is changed, it's necessary
22
+ * to call the `update()` method of the respective helper.
23
+ *
21
24
  * ```js
22
25
  * const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
23
26
  * const helper = new THREE.CameraHelper( camera );
@@ -11,9 +11,12 @@ const _v3 = /*@__PURE__*/ new Vector3();
11
11
 
12
12
  /**
13
13
  * Helper object to assist with visualizing a {@link DirectionalLight}'s
14
- * effect on the scene. This consists of plane and a line representing the
14
+ * effect on the scene. This consists of a plane and a line representing the
15
15
  * light's position and direction.
16
16
  *
17
+ * When the directional light or its target are transformed or light properties
18
+ * are changed, it's necessary to call the `update()` method of the respective helper.
19
+ *
17
20
  * ```js
18
21
  * const light = new THREE.DirectionalLight( 0xFFFFFF );
19
22
  * scene.add( light );
@@ -14,6 +14,9 @@ const _color2 = /*@__PURE__*/ new Color();
14
14
  * Creates a visual aid consisting of a spherical mesh for a
15
15
  * given {@link HemisphereLight}.
16
16
  *
17
+ * When the hemisphere light is transformed or its light properties are changed,
18
+ * it's necessary to call the `update()` method of the respective helper.
19
+ *
17
20
  * ```js
18
21
  * const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
19
22
  * const helper = new THREE.HemisphereLightHelper( light, 5 );
@@ -38,7 +38,7 @@ class PointLightHelper extends Mesh {
38
38
  /**
39
39
  * The light being visualized.
40
40
  *
41
- * @type {HemisphereLight}
41
+ * @type {PointLight}
42
42
  */
43
43
  this.light = light;
44
44
 
@@ -57,30 +57,6 @@ class PointLightHelper extends Mesh {
57
57
 
58
58
  this.update();
59
59
 
60
-
61
- /*
62
- // TODO: delete this comment?
63
- const distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );
64
- const distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );
65
-
66
- this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );
67
- this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );
68
-
69
- const d = light.distance;
70
-
71
- if ( d === 0.0 ) {
72
-
73
- this.lightDistance.visible = false;
74
-
75
- } else {
76
-
77
- this.lightDistance.scale.set( d, d, d );
78
-
79
- }
80
-
81
- this.add( this.lightDistance );
82
- */
83
-
84
60
  }
85
61
 
86
62
  /**
@@ -10,6 +10,9 @@ const _vector = /*@__PURE__*/ new Vector3();
10
10
  /**
11
11
  * This displays a cone shaped helper object for a {@link SpotLight}.
12
12
  *
13
+ * When the spot light or its target are transformed or light properties are
14
+ * changed, it's necessary to call the `update()` method of the respective helper.
15
+ *
13
16
  * ```js
14
17
  * const spotLight = new THREE.SpotLight( 0xffffff );
15
18
  * spotLight.position.set( 10, 10, 10 );
@@ -80,6 +80,8 @@ class DirectionalLight extends Light {
80
80
 
81
81
  dispose() {
82
82
 
83
+ super.dispose();
84
+
83
85
  this.shadow.dispose();
84
86
 
85
87
  }
@@ -95,6 +97,17 @@ class DirectionalLight extends Light {
95
97
 
96
98
  }
97
99
 
100
+ toJSON( meta ) {
101
+
102
+ const data = super.toJSON( meta );
103
+
104
+ data.object.shadow = this.shadow.toJSON();
105
+ data.object.target = this.target.uuid;
106
+
107
+ return data;
108
+
109
+ }
110
+
98
111
  }
99
112
 
100
113
  export { DirectionalLight };
@@ -61,6 +61,16 @@ class HemisphereLight extends Light {
61
61
 
62
62
  }
63
63
 
64
+ toJSON( meta ) {
65
+
66
+ const data = super.toJSON( meta );
67
+
68
+ data.object.groundColor = this.groundColor.getHex();
69
+
70
+ return data;
71
+
72
+ }
73
+
64
74
  }
65
75
 
66
76
  export { HemisphereLight };
@@ -54,7 +54,7 @@ class Light extends Object3D {
54
54
  */
55
55
  dispose() {
56
56
 
57
- // Empty here in base class; some subclasses override.
57
+ this.dispatchEvent( { type: 'dispose' } );
58
58
 
59
59
  }
60
60
 
@@ -76,16 +76,6 @@ class Light extends Object3D {
76
76
  data.object.color = this.color.getHex();
77
77
  data.object.intensity = this.intensity;
78
78
 
79
- if ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();
80
-
81
- if ( this.distance !== undefined ) data.object.distance = this.distance;
82
- if ( this.angle !== undefined ) data.object.angle = this.angle;
83
- if ( this.decay !== undefined ) data.object.decay = this.decay;
84
- if ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;
85
-
86
- if ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();
87
- if ( this.target !== undefined ) data.object.target = this.target.uuid;
88
-
89
79
  return data;
90
80
 
91
81
  }
@@ -60,21 +60,6 @@ class LightProbe extends Light {
60
60
 
61
61
  }
62
62
 
63
- /**
64
- * Deserializes the light prove from the given JSON.
65
- *
66
- * @param {Object} json - The JSON holding the serialized light probe.
67
- * @return {LightProbe} A reference to this light probe.
68
- */
69
- fromJSON( json ) {
70
-
71
- this.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();
72
- this.sh.fromArray( json.sh );
73
-
74
- return this;
75
-
76
- }
77
-
78
63
  toJSON( meta ) {
79
64
 
80
65
  const data = super.toJSON( meta );
@@ -3,7 +3,7 @@ import { Vector2 } from '../math/Vector2.js';
3
3
  import { Vector3 } from '../math/Vector3.js';
4
4
  import { Vector4 } from '../math/Vector4.js';
5
5
  import { Frustum } from '../math/Frustum.js';
6
- import { UnsignedByteType } from '../constants.js';
6
+ import { UnsignedByteType, WebGPUCoordinateSystem } from '../constants.js';
7
7
 
8
8
  const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
9
9
  const _lightPositionWorld = /*@__PURE__*/ new Vector3();
@@ -52,6 +52,16 @@ class LightShadow {
52
52
  */
53
53
  this.bias = 0;
54
54
 
55
+ /**
56
+ * A node version of `bias`. Only supported with `WebGPURenderer`.
57
+ *
58
+ * If a bias node is defined, `bias` has no effect.
59
+ *
60
+ * @type {?Node<float>}
61
+ * @default null
62
+ */
63
+ this.biasNode = null;
64
+
55
65
  /**
56
66
  * Defines how much the position used to query the shadow map is offset along
57
67
  * the object normal. The default is `0`. Increasing this value can be used to
@@ -69,9 +79,6 @@ class LightShadow {
69
79
  * map size will allow for a higher value to be used here before these effects
70
80
  * become visible.
71
81
  *
72
- * The property has no effect when the shadow map type is `PCFSoftShadowMap` and
73
- * and it is recommended to increase softness by decreasing the shadow map size instead.
74
- *
75
82
  * The property has no effect when the shadow map type is `BasicShadowMap`.
76
83
  *
77
84
  * @type {number}
@@ -206,12 +213,12 @@ class LightShadow {
206
213
  _projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );
207
214
  this._frustum.setFromProjectionMatrix( _projScreenMatrix, shadowCamera.coordinateSystem, shadowCamera.reversedDepth );
208
215
 
209
- if ( shadowCamera.reversedDepth ) {
216
+ if ( shadowCamera.coordinateSystem === WebGPUCoordinateSystem || shadowCamera.reversedDepth ) {
210
217
 
211
218
  shadowMatrix.set(
212
219
  0.5, 0.0, 0.0, 0.5,
213
220
  0.0, 0.5, 0.0, 0.5,
214
- 0.0, 0.0, 1.0, 0.0,
221
+ 0.0, 0.0, 1.0, 0.0, // Identity Z (preserving the correct [0, 1] range from the projection matrix)
215
222
  0.0, 0.0, 0.0, 1.0
216
223
  );
217
224
 
@@ -295,6 +302,8 @@ class LightShadow {
295
302
 
296
303
  this.mapSize.copy( source.mapSize );
297
304
 
305
+ this.biasNode = source.biasNode;
306
+
298
307
  return this;
299
308
 
300
309
  }
@@ -94,6 +94,8 @@ class PointLight extends Light {
94
94
 
95
95
  dispose() {
96
96
 
97
+ super.dispose();
98
+
97
99
  this.shadow.dispose();
98
100
 
99
101
  }
@@ -111,6 +113,19 @@ class PointLight extends Light {
111
113
 
112
114
  }
113
115
 
116
+ toJSON( meta ) {
117
+
118
+ const data = super.toJSON( meta );
119
+
120
+ data.object.distance = this.distance;
121
+ data.object.decay = this.decay;
122
+
123
+ data.object.shadow = this.shadow.toJSON();
124
+
125
+ return data;
126
+
127
+ }
128
+
114
129
  }
115
130
 
116
131
  export { PointLight };
@@ -1,13 +1,5 @@
1
1
  import { LightShadow } from './LightShadow.js';
2
2
  import { PerspectiveCamera } from '../cameras/PerspectiveCamera.js';
3
- import { Matrix4 } from '../math/Matrix4.js';
4
- import { Vector2 } from '../math/Vector2.js';
5
- import { Vector3 } from '../math/Vector3.js';
6
- import { Vector4 } from '../math/Vector4.js';
7
-
8
- const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
9
- const _lightPositionWorld = /*@__PURE__*/ new Vector3();
10
- const _lookTarget = /*@__PURE__*/ new Vector3();
11
3
 
12
4
  /**
13
5
  * Represents the shadow configuration of point lights.
@@ -32,84 +24,6 @@ class PointLightShadow extends LightShadow {
32
24
  */
33
25
  this.isPointLightShadow = true;
34
26
 
35
- this._frameExtents = new Vector2( 4, 2 );
36
-
37
- this._viewportCount = 6;
38
-
39
- this._viewports = [
40
- // These viewports map a cube-map onto a 2D texture with the
41
- // following orientation:
42
- //
43
- // xzXZ
44
- // y Y
45
- //
46
- // X - Positive x direction
47
- // x - Negative x direction
48
- // Y - Positive y direction
49
- // y - Negative y direction
50
- // Z - Positive z direction
51
- // z - Negative z direction
52
-
53
- // positive X
54
- new Vector4( 2, 1, 1, 1 ),
55
- // negative X
56
- new Vector4( 0, 1, 1, 1 ),
57
- // positive Z
58
- new Vector4( 3, 1, 1, 1 ),
59
- // negative Z
60
- new Vector4( 1, 1, 1, 1 ),
61
- // positive Y
62
- new Vector4( 3, 0, 1, 1 ),
63
- // negative Y
64
- new Vector4( 1, 0, 1, 1 )
65
- ];
66
-
67
- this._cubeDirections = [
68
- new Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),
69
- new Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )
70
- ];
71
-
72
- this._cubeUps = [
73
- new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),
74
- new Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ), new Vector3( 0, 0, - 1 )
75
- ];
76
-
77
- }
78
-
79
- /**
80
- * Update the matrices for the camera and shadow, used internally by the renderer.
81
- *
82
- * @param {Light} light - The light for which the shadow is being rendered.
83
- * @param {number} [viewportIndex=0] - The viewport index.
84
- */
85
- updateMatrices( light, viewportIndex = 0 ) {
86
-
87
- const camera = this.camera;
88
- const shadowMatrix = this.matrix;
89
-
90
- const far = light.distance || camera.far;
91
-
92
- if ( far !== camera.far ) {
93
-
94
- camera.far = far;
95
- camera.updateProjectionMatrix();
96
-
97
- }
98
-
99
- _lightPositionWorld.setFromMatrixPosition( light.matrixWorld );
100
- camera.position.copy( _lightPositionWorld );
101
-
102
- _lookTarget.copy( camera.position );
103
- _lookTarget.add( this._cubeDirections[ viewportIndex ] );
104
- camera.up.copy( this._cubeUps[ viewportIndex ] );
105
- camera.lookAt( _lookTarget );
106
- camera.updateMatrixWorld();
107
-
108
- shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );
109
-
110
- _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
111
- this._frustum.setFromProjectionMatrix( _projScreenMatrix, camera.coordinateSystem, camera.reversedDepth );
112
-
113
27
  }
114
28
 
115
29
  }
@@ -147,6 +147,8 @@ class SpotLight extends Light {
147
147
 
148
148
  dispose() {
149
149
 
150
+ super.dispose();
151
+
150
152
  this.shadow.dispose();
151
153
 
152
154
  }
@@ -161,13 +163,32 @@ class SpotLight extends Light {
161
163
  this.decay = source.decay;
162
164
 
163
165
  this.target = source.target.clone();
164
-
166
+ this.map = source.map;
165
167
  this.shadow = source.shadow.clone();
166
168
 
167
169
  return this;
168
170
 
169
171
  }
170
172
 
173
+ toJSON( meta ) {
174
+
175
+ const data = super.toJSON( meta );
176
+
177
+ data.object.distance = this.distance;
178
+ data.object.angle = this.angle;
179
+ data.object.decay = this.decay;
180
+ data.object.penumbra = this.penumbra;
181
+
182
+ data.object.target = this.target.uuid;
183
+
184
+ if ( this.map && this.map.isTexture ) data.object.map = this.map.toJSON( meta ).uuid;
185
+
186
+ data.object.shadow = this.shadow.toJSON();
187
+
188
+ return data;
189
+
190
+ }
191
+
171
192
  }
172
193
 
173
194
  export { SpotLight };
@@ -22,7 +22,8 @@ class IESSpotLight extends SpotLight {
22
22
  super( color, intensity, distance, angle, penumbra, decay );
23
23
 
24
24
  /**
25
- * TODO
25
+ * The IES map. It's a lookup table that stores normalized attenuation factors
26
+ * (0.0 to 1.0) that represent the light's intensity at a specific angle.
26
27
  *
27
28
  * @type {?Texture}
28
29
  * @default null
@@ -60,11 +60,21 @@ class AudioLoader extends Loader {
60
60
  const bufferCopy = buffer.slice( 0 );
61
61
 
62
62
  const context = AudioContext.getContext();
63
+
64
+ const decodeUrl = url + '#decode';
65
+ scope.manager.itemStart( decodeUrl ); // prevent loading manager from completing too early, see #33378
66
+
63
67
  context.decodeAudioData( bufferCopy, function ( audioBuffer ) {
64
68
 
65
69
  onLoad( audioBuffer );
70
+ scope.manager.itemEnd( decodeUrl );
71
+
72
+ } ).catch( function ( e ) {
73
+
74
+ handleError( e );
75
+ scope.manager.itemEnd( decodeUrl );
66
76
 
67
- } ).catch( handleError );
77
+ } );
68
78
 
69
79
  } catch ( e ) {
70
80