super-three 0.177.0 → 0.181.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 (501) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +1994 -749
  3. package/build/three.core.js +1358 -506
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +631 -247
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +113 -33
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +9571 -3424
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +9397 -3426
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  14. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  15. package/examples/jsm/Addons.js +2 -3
  16. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  17. package/examples/jsm/capabilities/WebGL.js +0 -27
  18. package/examples/jsm/capabilities/WebGPU.js +1 -1
  19. package/examples/jsm/controls/ArcballControls.js +9 -9
  20. package/examples/jsm/controls/DragControls.js +7 -57
  21. package/examples/jsm/controls/FirstPersonControls.js +3 -3
  22. package/examples/jsm/controls/FlyControls.js +1 -1
  23. package/examples/jsm/controls/OrbitControls.js +2 -2
  24. package/examples/jsm/controls/PointerLockControls.js +2 -10
  25. package/examples/jsm/controls/TrackballControls.js +1 -1
  26. package/examples/jsm/controls/TransformControls.js +62 -15
  27. package/examples/jsm/csm/CSMShadowNode.js +4 -4
  28. package/examples/jsm/effects/AsciiEffect.js +8 -8
  29. package/examples/jsm/environments/RoomEnvironment.js +8 -3
  30. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  31. package/examples/jsm/exporters/EXRExporter.js +1 -1
  32. package/examples/jsm/exporters/GLTFExporter.js +33 -25
  33. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  34. package/examples/jsm/exporters/PLYExporter.js +1 -1
  35. package/examples/jsm/exporters/USDZExporter.js +683 -299
  36. package/examples/jsm/geometries/DecalGeometry.js +2 -2
  37. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  38. package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
  39. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  40. package/examples/jsm/geometries/TextGeometry.js +3 -2
  41. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  42. package/examples/jsm/helpers/ViewHelper.js +43 -5
  43. package/examples/jsm/inspector/Inspector.js +427 -0
  44. package/examples/jsm/inspector/RendererInspector.js +415 -0
  45. package/examples/jsm/inspector/tabs/Console.js +204 -0
  46. package/examples/jsm/inspector/tabs/Parameters.js +332 -0
  47. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  48. package/examples/jsm/inspector/tabs/Viewer.js +166 -0
  49. package/examples/jsm/inspector/ui/Graph.js +95 -0
  50. package/examples/jsm/inspector/ui/Item.js +170 -0
  51. package/examples/jsm/inspector/ui/List.js +75 -0
  52. package/examples/jsm/inspector/ui/Profiler.js +170 -0
  53. package/examples/jsm/inspector/ui/Style.js +654 -0
  54. package/examples/jsm/inspector/ui/Tab.js +46 -0
  55. package/examples/jsm/inspector/ui/Values.js +423 -0
  56. package/examples/jsm/inspector/ui/utils.js +56 -0
  57. package/examples/jsm/interactive/HTMLMesh.js +11 -13
  58. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  59. package/examples/jsm/interactive/SelectionBox.js +30 -0
  60. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  61. package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
  62. package/examples/jsm/lights/LightProbeGenerator.js +14 -3
  63. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  64. package/examples/jsm/lines/Line2.js +3 -3
  65. package/examples/jsm/lines/LineGeometry.js +1 -1
  66. package/examples/jsm/lines/LineSegments2.js +2 -2
  67. package/examples/jsm/lines/Wireframe.js +2 -2
  68. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  69. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  70. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  71. package/examples/jsm/loaders/3MFLoader.js +1 -1
  72. package/examples/jsm/loaders/ColladaLoader.js +4 -4
  73. package/examples/jsm/loaders/DDSLoader.js +1 -1
  74. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  75. package/examples/jsm/loaders/EXRLoader.js +210 -22
  76. package/examples/jsm/loaders/FBXLoader.js +4 -4
  77. package/examples/jsm/loaders/FontLoader.js +23 -5
  78. package/examples/jsm/loaders/GLTFLoader.js +14 -8
  79. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  80. package/examples/jsm/loaders/HDRLoader.js +486 -0
  81. package/examples/jsm/loaders/KTX2Loader.js +136 -49
  82. package/examples/jsm/loaders/KTXLoader.js +2 -2
  83. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  84. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  85. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  86. package/examples/jsm/loaders/LWOLoader.js +2 -2
  87. package/examples/jsm/loaders/MaterialXLoader.js +233 -34
  88. package/examples/jsm/loaders/OBJLoader.js +1 -1
  89. package/examples/jsm/loaders/PDBLoader.js +1 -1
  90. package/examples/jsm/loaders/RGBELoader.js +7 -473
  91. package/examples/jsm/loaders/SVGLoader.js +2 -2
  92. package/examples/jsm/loaders/TTFLoader.js +13 -1
  93. package/examples/jsm/loaders/USDLoader.js +219 -0
  94. package/examples/jsm/loaders/USDZLoader.js +4 -892
  95. package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
  96. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  97. package/examples/jsm/loaders/usd/USDAParser.js +741 -0
  98. package/examples/jsm/loaders/usd/USDCParser.js +17 -0
  99. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  100. package/examples/jsm/math/ColorSpaces.js +19 -1
  101. package/examples/jsm/math/ConvexHull.js +3 -3
  102. package/examples/jsm/math/ImprovedNoise.js +1 -1
  103. package/examples/jsm/math/Lut.js +2 -2
  104. package/examples/jsm/math/SimplexNoise.js +1 -1
  105. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  106. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  107. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  108. package/examples/jsm/misc/TubePainter.js +383 -40
  109. package/examples/jsm/misc/Volume.js +1 -1
  110. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  111. package/examples/jsm/objects/LensflareMesh.js +3 -3
  112. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  113. package/examples/jsm/objects/Sky.js +1 -1
  114. package/examples/jsm/objects/SkyMesh.js +3 -3
  115. package/examples/jsm/objects/Water.js +3 -3
  116. package/examples/jsm/objects/WaterMesh.js +6 -6
  117. package/examples/jsm/physics/RapierPhysics.js +95 -16
  118. package/examples/jsm/postprocessing/GTAOPass.js +10 -9
  119. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  120. package/examples/jsm/postprocessing/OutlinePass.js +17 -17
  121. package/examples/jsm/postprocessing/SSAOPass.js +10 -9
  122. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  123. package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
  124. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  125. package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
  126. package/examples/jsm/renderers/SVGRenderer.js +1 -1
  127. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  128. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  129. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  130. package/examples/jsm/shaders/BokehShader.js +1 -1
  131. package/examples/jsm/shaders/BokehShader2.js +1 -1
  132. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  133. package/examples/jsm/shaders/FocusShader.js +1 -1
  134. package/examples/jsm/shaders/GTAOShader.js +2 -2
  135. package/examples/jsm/shaders/GodRaysShader.js +1 -1
  136. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  137. package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
  138. package/examples/jsm/shaders/SSRShader.js +1 -1
  139. package/examples/jsm/shaders/SepiaShader.js +1 -1
  140. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  141. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  142. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
  143. package/examples/jsm/shaders/VignetteShader.js +1 -1
  144. package/examples/jsm/transpiler/AST.js +381 -30
  145. package/examples/jsm/transpiler/GLSLDecoder.js +247 -104
  146. package/examples/jsm/transpiler/Linker.js +327 -0
  147. package/examples/jsm/transpiler/TSLEncoder.js +196 -92
  148. package/examples/jsm/transpiler/Transpiler.js +17 -1
  149. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  150. package/examples/jsm/transpiler/WGSLEncoder.js +812 -0
  151. package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
  152. package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
  153. package/examples/jsm/tsl/display/BloomNode.js +11 -6
  154. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
  155. package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
  156. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  157. package/examples/jsm/tsl/display/GTAONode.js +53 -5
  158. package/examples/jsm/tsl/display/GaussianBlurNode.js +55 -43
  159. package/examples/jsm/tsl/display/OutlineNode.js +13 -2
  160. package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
  161. package/examples/jsm/tsl/display/SSGINode.js +654 -0
  162. package/examples/jsm/tsl/display/SSRNode.js +182 -65
  163. package/examples/jsm/tsl/display/SSSNode.js +488 -0
  164. package/examples/jsm/tsl/display/TRAANode.js +578 -0
  165. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  166. package/examples/jsm/tsl/display/hashBlur.js +18 -20
  167. package/examples/jsm/tsl/lighting/TiledLightsNode.js +22 -2
  168. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  169. package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
  170. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  171. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  172. package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
  173. package/package.json +5 -10
  174. package/src/Three.Core.js +5 -2
  175. package/src/Three.TSL.js +112 -32
  176. package/src/Three.WebGPU.Nodes.js +2 -0
  177. package/src/Three.WebGPU.js +4 -0
  178. package/src/animation/AnimationClip.js +20 -4
  179. package/src/animation/AnimationMixer.js +3 -3
  180. package/src/animation/AnimationObjectGroup.js +2 -1
  181. package/src/animation/KeyframeTrack.js +8 -7
  182. package/src/animation/PropertyBinding.js +12 -11
  183. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  184. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  185. package/src/audio/Audio.js +10 -9
  186. package/src/audio/PositionalAudio.js +1 -1
  187. package/src/cameras/Camera.js +14 -0
  188. package/src/cameras/OrthographicCamera.js +2 -2
  189. package/src/cameras/PerspectiveCamera.js +2 -2
  190. package/src/cameras/StereoCamera.js +2 -2
  191. package/src/constants.js +13 -5
  192. package/src/core/BufferAttribute.js +3 -3
  193. package/src/core/BufferGeometry.js +10 -10
  194. package/src/core/Clock.js +2 -8
  195. package/src/core/EventDispatcher.js +1 -1
  196. package/src/core/GLBufferAttribute.js +13 -1
  197. package/src/core/InterleavedBuffer.js +1 -1
  198. package/src/core/InterleavedBufferAttribute.js +3 -2
  199. package/src/core/Object3D.js +4 -3
  200. package/src/core/Raycaster.js +2 -1
  201. package/src/core/RenderTarget.js +10 -1
  202. package/{examples/jsm/misc → src/core}/Timer.js +4 -42
  203. package/src/extras/Controls.js +5 -4
  204. package/src/extras/DataUtils.js +2 -1
  205. package/src/extras/Earcut.js +6 -0
  206. package/src/extras/ImageUtils.js +2 -2
  207. package/src/extras/PMREMGenerator.js +279 -55
  208. package/src/extras/TextureUtils.js +2 -1
  209. package/src/extras/core/Curve.js +2 -1
  210. package/src/extras/core/Interpolations.js +7 -1
  211. package/src/extras/core/Path.js +22 -22
  212. package/src/extras/core/ShapePath.js +4 -4
  213. package/src/extras/lib/earcut.js +8 -8
  214. package/src/geometries/BoxGeometry.js +1 -0
  215. package/src/geometries/CapsuleGeometry.js +1 -0
  216. package/src/geometries/CircleGeometry.js +1 -0
  217. package/src/geometries/ConeGeometry.js +1 -0
  218. package/src/geometries/CylinderGeometry.js +1 -0
  219. package/src/geometries/DodecahedronGeometry.js +1 -0
  220. package/src/geometries/ExtrudeGeometry.js +8 -6
  221. package/src/geometries/IcosahedronGeometry.js +1 -0
  222. package/src/geometries/LatheGeometry.js +1 -0
  223. package/src/geometries/OctahedronGeometry.js +1 -0
  224. package/src/geometries/PlaneGeometry.js +1 -0
  225. package/src/geometries/RingGeometry.js +1 -0
  226. package/src/geometries/ShapeGeometry.js +1 -0
  227. package/src/geometries/SphereGeometry.js +1 -0
  228. package/src/geometries/TetrahedronGeometry.js +1 -0
  229. package/src/geometries/TorusGeometry.js +1 -0
  230. package/src/geometries/TorusKnotGeometry.js +1 -0
  231. package/src/geometries/TubeGeometry.js +1 -0
  232. package/src/helpers/CameraHelper.js +42 -12
  233. package/src/helpers/SkeletonHelper.js +35 -6
  234. package/src/lights/LightShadow.js +21 -8
  235. package/src/lights/PointLightShadow.js +1 -1
  236. package/src/lights/webgpu/ProjectorLight.js +1 -1
  237. package/src/loaders/AnimationLoader.js +2 -1
  238. package/src/loaders/AudioLoader.js +2 -1
  239. package/src/loaders/BufferGeometryLoader.js +2 -2
  240. package/src/loaders/Cache.js +2 -2
  241. package/src/loaders/DataTextureLoader.js +1 -1
  242. package/src/loaders/FileLoader.js +29 -5
  243. package/src/loaders/ImageBitmapLoader.js +32 -8
  244. package/src/loaders/ImageLoader.js +56 -9
  245. package/src/loaders/Loader.js +17 -3
  246. package/src/loaders/LoadingManager.js +45 -0
  247. package/src/loaders/MaterialLoader.js +3 -2
  248. package/src/loaders/ObjectLoader.js +13 -13
  249. package/src/loaders/TextureLoader.js +1 -1
  250. package/src/loaders/nodes/NodeLoader.js +3 -2
  251. package/src/materials/Material.js +16 -3
  252. package/src/materials/MeshBasicMaterial.js +2 -1
  253. package/src/materials/MeshDepthMaterial.js +1 -0
  254. package/src/materials/MeshDistanceMaterial.js +1 -1
  255. package/src/materials/MeshLambertMaterial.js +2 -1
  256. package/src/materials/MeshMatcapMaterial.js +22 -0
  257. package/src/materials/MeshNormalMaterial.js +1 -0
  258. package/src/materials/MeshPhongMaterial.js +2 -1
  259. package/src/materials/MeshPhysicalMaterial.js +2 -1
  260. package/src/materials/MeshStandardMaterial.js +8 -7
  261. package/src/materials/MeshToonMaterial.js +1 -0
  262. package/src/materials/PointsMaterial.js +1 -1
  263. package/src/materials/ShaderMaterial.js +2 -2
  264. package/src/materials/nodes/Line2NodeMaterial.js +2 -10
  265. package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
  266. package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
  267. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  268. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
  269. package/src/materials/nodes/MeshSSSNodeMaterial.js +3 -3
  270. package/src/materials/nodes/NodeMaterial.js +90 -27
  271. package/src/materials/nodes/PointsNodeMaterial.js +86 -28
  272. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  273. package/src/materials/nodes/manager/NodeMaterialObserver.js +89 -3
  274. package/src/math/Color.js +6 -5
  275. package/src/math/ColorManagement.js +9 -3
  276. package/src/math/Cylindrical.js +1 -1
  277. package/src/math/Euler.js +2 -1
  278. package/src/math/Frustum.js +25 -9
  279. package/src/math/FrustumArray.js +10 -5
  280. package/src/math/Line3.js +129 -2
  281. package/src/math/MathUtils.js +13 -11
  282. package/src/math/Matrix2.js +1 -1
  283. package/src/math/Matrix3.js +2 -2
  284. package/src/math/Matrix4.js +55 -34
  285. package/src/math/Plane.js +1 -1
  286. package/src/math/Quaternion.js +69 -67
  287. package/src/math/Spherical.js +3 -3
  288. package/src/nodes/Nodes.js +6 -4
  289. package/src/nodes/TSL.js +9 -4
  290. package/src/nodes/accessors/AccessorsUtils.js +7 -8
  291. package/src/nodes/accessors/Bitangent.js +31 -25
  292. package/src/nodes/accessors/BufferNode.js +1 -1
  293. package/src/nodes/accessors/Camera.js +142 -16
  294. package/src/nodes/accessors/ClippingNode.js +6 -5
  295. package/src/nodes/accessors/CubeTextureNode.js +5 -4
  296. package/src/nodes/accessors/InstanceNode.js +25 -5
  297. package/src/nodes/accessors/Lights.js +10 -0
  298. package/src/nodes/accessors/Normal.js +97 -30
  299. package/src/nodes/accessors/Object3DNode.js +2 -2
  300. package/src/nodes/accessors/Position.js +25 -9
  301. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  302. package/src/nodes/accessors/ReferenceNode.js +20 -4
  303. package/src/nodes/accessors/ReflectVector.js +3 -3
  304. package/src/nodes/accessors/SceneNode.js +3 -2
  305. package/src/nodes/accessors/StorageBufferNode.js +2 -1
  306. package/src/nodes/accessors/StorageTextureNode.js +23 -1
  307. package/src/nodes/accessors/Tangent.js +25 -17
  308. package/src/nodes/accessors/TangentUtils.js +46 -0
  309. package/src/nodes/accessors/Texture3DNode.js +14 -1
  310. package/src/nodes/accessors/TextureBicubic.js +21 -3
  311. package/src/nodes/accessors/TextureNode.js +142 -44
  312. package/src/nodes/accessors/UniformArrayNode.js +0 -16
  313. package/src/nodes/code/FunctionCallNode.js +24 -4
  314. package/src/nodes/code/FunctionNode.js +23 -0
  315. package/src/nodes/core/ArrayNode.js +13 -0
  316. package/src/nodes/core/AssignNode.js +6 -2
  317. package/src/nodes/core/AttributeNode.js +2 -1
  318. package/src/nodes/core/ContextNode.js +48 -10
  319. package/src/nodes/core/IndexNode.js +2 -2
  320. package/src/nodes/core/InputNode.js +2 -1
  321. package/src/nodes/core/InspectorNode.js +128 -0
  322. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +36 -17
  323. package/src/nodes/core/Node.js +167 -34
  324. package/src/nodes/core/NodeBuilder.js +404 -120
  325. package/src/nodes/core/NodeFrame.js +21 -21
  326. package/src/nodes/core/NodeFunction.js +2 -1
  327. package/src/nodes/core/NodeParser.js +2 -1
  328. package/src/nodes/core/NodeUniform.js +1 -1
  329. package/src/nodes/core/NodeUtils.js +17 -88
  330. package/src/nodes/core/ParameterNode.js +31 -0
  331. package/src/nodes/core/PropertyNode.js +7 -0
  332. package/src/nodes/core/StackNode.js +77 -30
  333. package/src/nodes/core/StructNode.js +5 -5
  334. package/src/nodes/core/StructTypeNode.js +1 -0
  335. package/src/nodes/core/SubBuildNode.js +89 -0
  336. package/src/nodes/core/UniformNode.js +80 -14
  337. package/src/nodes/core/VarNode.js +142 -16
  338. package/src/nodes/core/VaryingNode.js +9 -6
  339. package/src/nodes/display/BlendModes.js +7 -6
  340. package/src/nodes/display/BumpMapNode.js +1 -1
  341. package/src/nodes/display/ColorAdjustment.js +1 -1
  342. package/src/nodes/display/FrontFacingNode.js +35 -7
  343. package/src/nodes/display/NormalMapNode.js +20 -50
  344. package/src/nodes/display/PassNode.js +206 -17
  345. package/src/nodes/display/RenderOutputNode.js +28 -2
  346. package/src/nodes/display/ScreenNode.js +44 -40
  347. package/src/nodes/display/ToneMappingNode.js +31 -4
  348. package/src/nodes/display/ToonOutlinePassNode.js +8 -0
  349. package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
  350. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  351. package/src/nodes/display/ViewportTextureNode.js +94 -4
  352. package/src/nodes/fog/Fog.js +3 -2
  353. package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
  354. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  355. package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
  356. package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
  357. package/src/nodes/functions/BasicLightingModel.js +2 -1
  358. package/src/nodes/functions/PhongLightingModel.js +3 -3
  359. package/src/nodes/functions/PhysicalLightingModel.js +19 -18
  360. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  361. package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
  362. package/src/nodes/geometry/RangeNode.js +40 -4
  363. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  364. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
  365. package/src/nodes/gpgpu/ComputeNode.js +81 -25
  366. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  367. package/src/nodes/gpgpu/WorkgroupInfoNode.js +29 -3
  368. package/src/nodes/lighting/EnvironmentNode.js +11 -11
  369. package/src/nodes/lighting/LightsNode.js +7 -8
  370. package/src/nodes/lighting/PointShadowNode.js +6 -0
  371. package/src/nodes/lighting/ProjectorLightNode.js +19 -6
  372. package/src/nodes/lighting/ShadowFilterNode.js +3 -1
  373. package/src/nodes/lighting/ShadowNode.js +77 -10
  374. package/src/nodes/materialx/MaterialXNodes.js +131 -2
  375. package/src/nodes/materialx/lib/mx_noise.js +165 -1
  376. package/src/nodes/math/BitcastNode.js +156 -0
  377. package/src/nodes/math/ConditionalNode.js +25 -27
  378. package/src/nodes/math/MathNode.js +106 -65
  379. package/src/nodes/math/OperatorNode.js +28 -43
  380. package/src/nodes/pmrem/PMREMUtils.js +117 -2
  381. package/src/nodes/shapes/Shapes.js +1 -1
  382. package/src/nodes/tsl/TSLBase.js +6 -2
  383. package/src/nodes/tsl/TSLCore.js +546 -186
  384. package/src/nodes/utils/DebugNode.js +3 -2
  385. package/src/nodes/utils/EquirectUV.js +27 -0
  386. package/src/nodes/utils/EventNode.js +119 -0
  387. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  388. package/src/nodes/utils/JoinNode.js +6 -3
  389. package/src/nodes/utils/LoopNode.js +20 -41
  390. package/src/nodes/utils/MatcapUV.js +22 -0
  391. package/src/nodes/utils/MemberNode.js +59 -7
  392. package/src/nodes/utils/PostProcessingUtils.js +28 -1
  393. package/src/nodes/utils/RTTNode.js +33 -6
  394. package/src/nodes/utils/ReflectorNode.js +68 -10
  395. package/src/nodes/utils/SampleNode.js +91 -0
  396. package/src/nodes/utils/SplitNode.js +11 -0
  397. package/src/nodes/utils/Timer.js +0 -47
  398. package/src/nodes/utils/TriplanarTextures.js +65 -0
  399. package/src/objects/BatchedMesh.js +6 -4
  400. package/src/objects/LOD.js +1 -1
  401. package/src/objects/Line.js +2 -1
  402. package/src/objects/LineSegments.js +2 -1
  403. package/src/objects/Skeleton.js +3 -2
  404. package/src/objects/SkinnedMesh.js +3 -1
  405. package/src/objects/Sprite.js +4 -3
  406. package/src/renderers/WebGLRenderer.js +77 -66
  407. package/src/renderers/common/Animation.js +13 -1
  408. package/src/renderers/common/Attributes.js +1 -1
  409. package/src/renderers/common/Backend.js +108 -27
  410. package/src/renderers/common/Background.js +4 -3
  411. package/src/renderers/common/Bindings.js +76 -19
  412. package/src/renderers/common/CanvasTarget.js +341 -0
  413. package/src/renderers/common/ChainMap.js +1 -1
  414. package/src/renderers/common/Color4.js +2 -2
  415. package/src/renderers/common/CubeRenderTarget.js +1 -1
  416. package/src/renderers/common/DataMap.js +1 -1
  417. package/src/renderers/common/Geometries.js +26 -0
  418. package/src/renderers/common/Info.js +4 -2
  419. package/src/renderers/common/InspectorBase.js +146 -0
  420. package/src/renderers/common/Pipelines.js +1 -1
  421. package/src/renderers/common/PostProcessing.js +61 -25
  422. package/src/renderers/common/QuadMesh.js +7 -1
  423. package/src/renderers/common/RenderContext.js +2 -2
  424. package/src/renderers/common/RenderList.js +7 -3
  425. package/src/renderers/common/RenderObject.js +84 -5
  426. package/src/renderers/common/RenderObjects.js +1 -1
  427. package/src/renderers/common/Renderer.js +486 -255
  428. package/src/renderers/common/RendererUtils.js +9 -0
  429. package/src/renderers/common/SampledTexture.js +8 -68
  430. package/src/renderers/common/Sampler.js +117 -0
  431. package/src/renderers/common/Storage3DTexture.js +100 -0
  432. package/src/renderers/common/StorageArrayTexture.js +84 -0
  433. package/src/renderers/common/StorageTexture.js +27 -0
  434. package/src/renderers/common/Textures.js +138 -46
  435. package/src/renderers/common/TimestampQueryPool.js +65 -3
  436. package/src/renderers/common/UniformsGroup.js +2 -1
  437. package/src/renderers/common/XRManager.js +63 -24
  438. package/src/renderers/common/XRRenderTarget.js +21 -4
  439. package/src/renderers/common/extras/PMREMGenerator.js +161 -66
  440. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  441. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  442. package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
  443. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  444. package/src/renderers/common/nodes/Nodes.js +38 -16
  445. package/src/renderers/shaders/DFGLUTData.js +64 -0
  446. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  447. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
  448. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  449. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
  450. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  451. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  452. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  453. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  454. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +21 -11
  455. package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
  456. package/src/renderers/shaders/UniformsLib.js +1 -0
  457. package/src/renderers/shaders/UniformsUtils.js +25 -4
  458. package/src/renderers/webgl/WebGLAttributes.js +4 -0
  459. package/src/renderers/webgl/WebGLCapabilities.js +4 -3
  460. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  461. package/src/renderers/webgl/WebGLInfo.js +3 -1
  462. package/src/renderers/webgl/WebGLProgram.js +25 -18
  463. package/src/renderers/webgl/WebGLPrograms.js +9 -6
  464. package/src/renderers/webgl/WebGLShadowMap.js +13 -2
  465. package/src/renderers/webgl/WebGLState.js +17 -16
  466. package/src/renderers/webgl/WebGLTextures.js +38 -21
  467. package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
  468. package/src/renderers/webgl/WebGLUtils.js +3 -2
  469. package/src/renderers/webgl-fallback/WebGLBackend.js +245 -182
  470. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +184 -30
  471. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
  472. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  473. package/src/renderers/webgl-fallback/utils/WebGLState.js +9 -8
  474. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +171 -19
  475. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
  476. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
  477. package/src/renderers/webgpu/WebGPUBackend.js +205 -128
  478. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  479. package/src/renderers/webgpu/WebGPURenderer.js +3 -2
  480. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +198 -121
  481. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +8 -1
  482. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +49 -33
  483. package/src/renderers/webgpu/utils/WebGPUConstants.js +14 -3
  484. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -37
  485. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
  486. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +266 -158
  487. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
  488. package/src/renderers/webgpu/utils/WebGPUUtils.js +24 -19
  489. package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
  490. package/src/renderers/webxr/WebXRManager.js +89 -13
  491. package/src/textures/ExternalTexture.js +56 -0
  492. package/src/textures/FramebufferTexture.js +2 -2
  493. package/src/textures/Source.js +14 -3
  494. package/src/textures/Texture.js +3 -2
  495. package/src/textures/VideoTexture.js +29 -2
  496. package/src/utils.js +67 -3
  497. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
  498. package/examples/jsm/tsl/display/TRAAPassNode.js +0 -452
  499. package/src/nodes/utils/EquirectUVNode.js +0 -65
  500. package/src/nodes/utils/MatcapUVNode.js +0 -49
  501. package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
@@ -2,6 +2,7 @@ import { clamp } from '../../math/MathUtils.js';
2
2
  import { Vector2 } from '../../math/Vector2.js';
3
3
  import { Vector3 } from '../../math/Vector3.js';
4
4
  import { Matrix4 } from '../../math/Matrix4.js';
5
+ import { warn } from '../../utils.js';
5
6
 
6
7
  /**
7
8
  * An abstract base class for creating an analytic curve object that contains methods
@@ -66,7 +67,7 @@ class Curve {
66
67
  */
67
68
  getPoint( /* t, optionalTarget */ ) {
68
69
 
69
- console.warn( 'THREE.Curve: .getPoint() not implemented.' );
70
+ warn( 'Curve: .getPoint() not implemented.' );
70
71
 
71
72
  }
72
73
 
@@ -1,4 +1,10 @@
1
- // Bezier Curves formulas obtained from: https://en.wikipedia.org/wiki/B%C3%A9zier_curve
1
+ /**
2
+ * Interpolations contains spline and Bézier functions internally used by concrete curve classes.
3
+ *
4
+ * Bezier Curves formulas obtained from: https://en.wikipedia.org/wiki/B%C3%A9zier_curve
5
+ *
6
+ * @module Interpolations
7
+ */
2
8
 
3
9
  /**
4
10
  * Computes a point on a Catmull-Rom spline.
@@ -190,11 +190,11 @@ class Path extends CurvePath {
190
190
  * Adds an arc as an instance of {@link EllipseCurve} to the path, positioned relative
191
191
  * to the current point.
192
192
  *
193
- * @param {number} aX - The x coordinate of the center of the arc offsetted from the previous curve.
194
- * @param {number} aY - The y coordinate of the center of the arc offsetted from the previous curve.
195
- * @param {number} aRadius - The radius of the arc.
196
- * @param {number} aStartAngle - The start angle in radians.
197
- * @param {number} aEndAngle - The end angle in radians.
193
+ * @param {number} [aX=0] - The x coordinate of the center of the arc offsetted from the previous curve.
194
+ * @param {number} [aY=0] - The y coordinate of the center of the arc offsetted from the previous curve.
195
+ * @param {number} [aRadius=1] - The radius of the arc.
196
+ * @param {number} [aStartAngle=0] - The start angle in radians.
197
+ * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
198
198
  * @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.
199
199
  * @return {Path} A reference to this path.
200
200
  */
@@ -213,11 +213,11 @@ class Path extends CurvePath {
213
213
  /**
214
214
  * Adds an absolutely positioned arc as an instance of {@link EllipseCurve} to the path.
215
215
  *
216
- * @param {number} aX - The x coordinate of the center of the arc.
217
- * @param {number} aY - The y coordinate of the center of the arc.
218
- * @param {number} aRadius - The radius of the arc.
219
- * @param {number} aStartAngle - The start angle in radians.
220
- * @param {number} aEndAngle - The end angle in radians.
216
+ * @param {number} [aX=0] - The x coordinate of the center of the arc.
217
+ * @param {number} [aY=0] - The y coordinate of the center of the arc.
218
+ * @param {number} [aRadius=1] - The radius of the arc.
219
+ * @param {number} [aStartAngle=0] - The start angle in radians.
220
+ * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
221
221
  * @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.
222
222
  * @return {Path} A reference to this path.
223
223
  */
@@ -233,12 +233,12 @@ class Path extends CurvePath {
233
233
  * Adds an ellipse as an instance of {@link EllipseCurve} to the path, positioned relative
234
234
  * to the current point
235
235
  *
236
- * @param {number} aX - The x coordinate of the center of the ellipse offsetted from the previous curve.
237
- * @param {number} aY - The y coordinate of the center of the ellipse offsetted from the previous curve.
238
- * @param {number} xRadius - The radius of the ellipse in the x axis.
239
- * @param {number} yRadius - The radius of the ellipse in the y axis.
240
- * @param {number} aStartAngle - The start angle in radians.
241
- * @param {number} aEndAngle - The end angle in radians.
236
+ * @param {number} [aX=0] - The x coordinate of the center of the ellipse offsetted from the previous curve.
237
+ * @param {number} [aY=0] - The y coordinate of the center of the ellipse offsetted from the previous curve.
238
+ * @param {number} [xRadius=1] - The radius of the ellipse in the x axis.
239
+ * @param {number} [yRadius=1] - The radius of the ellipse in the y axis.
240
+ * @param {number} [aStartAngle=0] - The start angle in radians.
241
+ * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
242
242
  * @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.
243
243
  * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
244
244
  * @return {Path} A reference to this path.
@@ -257,12 +257,12 @@ class Path extends CurvePath {
257
257
  /**
258
258
  * Adds an absolutely positioned ellipse as an instance of {@link EllipseCurve} to the path.
259
259
  *
260
- * @param {number} aX - The x coordinate of the absolute center of the ellipse.
261
- * @param {number} aY - The y coordinate of the absolute center of the ellipse.
262
- * @param {number} xRadius - The radius of the ellipse in the x axis.
263
- * @param {number} yRadius - The radius of the ellipse in the y axis.
264
- * @param {number} aStartAngle - The start angle in radians.
265
- * @param {number} aEndAngle - The end angle in radians.
260
+ * @param {number} [aX=0] - The x coordinate of the absolute center of the ellipse.
261
+ * @param {number} [aY=0] - The y coordinate of the absolute center of the ellipse.
262
+ * @param {number} [xRadius=1] - The radius of the ellipse in the x axis.
263
+ * @param {number} [yRadius=1] - The radius of the ellipse in the y axis.
264
+ * @param {number} [aStartAngle=0] - The start angle in radians.
265
+ * @param {number} [aEndAngle=Math.PI*2] - The end angle in radians.
266
266
  * @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.
267
267
  * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
268
268
  * @return {Path} A reference to this path.
@@ -236,7 +236,7 @@ class ShapePath {
236
236
  let holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );
237
237
  holesFirst = isCCW ? ! holesFirst : holesFirst;
238
238
 
239
- // console.log("Holes first", holesFirst);
239
+ // log("Holes first", holesFirst);
240
240
 
241
241
  const betterShapeHoles = [];
242
242
  const newShapes = [];
@@ -264,13 +264,13 @@ class ShapePath {
264
264
  if ( holesFirst ) mainIdx ++;
265
265
  newShapeHoles[ mainIdx ] = [];
266
266
 
267
- //console.log('cw', i);
267
+ //log('cw', i);
268
268
 
269
269
  } else {
270
270
 
271
271
  newShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );
272
272
 
273
- //console.log('ccw', i);
273
+ //log('ccw', i);
274
274
 
275
275
  }
276
276
 
@@ -355,7 +355,7 @@ class ShapePath {
355
355
 
356
356
  }
357
357
 
358
- //console.log("shape", shapes);
358
+ //log("shape", shapes);
359
359
 
360
360
  return shapes;
361
361
 
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable */
2
- // copy of mapbox/earcut version 3.0.1
3
- // https://github.com/mapbox/earcut/tree/v3.0.1
2
+ // copy of mapbox/earcut version 3.0.2
3
+ // https://github.com/mapbox/earcut/tree/v3.0.2
4
4
 
5
5
  export default function earcut(data, holeIndices, dim = 2) {
6
6
 
@@ -17,10 +17,10 @@ export default function earcut(data, holeIndices, dim = 2) {
17
17
 
18
18
  // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox
19
19
  if (data.length > 80 * dim) {
20
- minX = Infinity;
21
- minY = Infinity;
22
- let maxX = -Infinity;
23
- let maxY = -Infinity;
20
+ minX = data[0];
21
+ minY = data[1];
22
+ let maxX = minX;
23
+ let maxY = minY;
24
24
 
25
25
  for (let i = dim; i < outerLen; i += dim) {
26
26
  const x = data[i];
@@ -296,7 +296,7 @@ function compareXYSlope(a, b) {
296
296
  return result;
297
297
  }
298
298
 
299
- // find a bridge between vertices that connects hole with an outer ring and and link it
299
+ // find a bridge between vertices that connects hole with an outer ring and link it
300
300
  function eliminateHole(hole, outerNode) {
301
301
  const bridge = findHoleBridge(hole, outerNode);
302
302
  if (!bridge) {
@@ -487,7 +487,7 @@ function pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, px, py) {
487
487
 
488
488
  // check if a diagonal between two polygon nodes is valid (lies in polygon interior)
489
489
  function isValidDiagonal(a, b) {
490
- return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges
490
+ return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // doesn't intersect other edges
491
491
  (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible
492
492
  (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors
493
493
  equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case
@@ -15,6 +15,7 @@ import { Vector3 } from '../math/Vector3.js';
15
15
  * ```
16
16
  *
17
17
  * @augments BufferGeometry
18
+ * @demo scenes/geometry-browser.html#BoxGeometry
18
19
  */
19
20
  class BoxGeometry extends BufferGeometry {
20
21
 
@@ -13,6 +13,7 @@ import { Vector3 } from '../math/Vector3.js';
13
13
  * ```
14
14
  *
15
15
  * @augments BufferGeometry
16
+ * @demo scenes/geometry-browser.html#CapsuleGeometry
16
17
  */
17
18
  class CapsuleGeometry extends BufferGeometry {
18
19
 
@@ -19,6 +19,7 @@ import { Vector2 } from '../math/Vector2.js';
19
19
  * ```
20
20
  *
21
21
  * @augments BufferGeometry
22
+ * @demo scenes/geometry-browser.html#CircleGeometry
22
23
  */
23
24
  class CircleGeometry extends BufferGeometry {
24
25
 
@@ -11,6 +11,7 @@ import { CylinderGeometry } from './CylinderGeometry.js';
11
11
  * ```
12
12
  *
13
13
  * @augments CylinderGeometry
14
+ * @demo scenes/geometry-browser.html#ConeGeometry
14
15
  */
15
16
  class ConeGeometry extends CylinderGeometry {
16
17
 
@@ -14,6 +14,7 @@ import { Vector2 } from '../math/Vector2.js';
14
14
  * ```
15
15
  *
16
16
  * @augments BufferGeometry
17
+ * @demo scenes/geometry-browser.html#CylinderGeometry
17
18
  */
18
19
  class CylinderGeometry extends BufferGeometry {
19
20
 
@@ -11,6 +11,7 @@ import { PolyhedronGeometry } from './PolyhedronGeometry.js';
11
11
  * ```
12
12
  *
13
13
  * @augments PolyhedronGeometry
14
+ * @demo scenes/geometry-browser.html#DodecahedronGeometry
14
15
  */
15
16
  class DodecahedronGeometry extends PolyhedronGeometry {
16
17
 
@@ -5,6 +5,7 @@ import { Vector2 } from '../math/Vector2.js';
5
5
  import { Vector3 } from '../math/Vector3.js';
6
6
  import { Shape } from '../extras/core/Shape.js';
7
7
  import { ShapeUtils } from '../extras/ShapeUtils.js';
8
+ import { error } from '../utils.js';
8
9
 
9
10
  /**
10
11
  * Creates extruded geometry from a path shape.
@@ -26,6 +27,7 @@ import { ShapeUtils } from '../extras/ShapeUtils.js';
26
27
  * ```
27
28
  *
28
29
  * @augments BufferGeometry
30
+ * @demo scenes/geometry-browser.html#ExtrudeGeometry
29
31
  */
30
32
  class ExtrudeGeometry extends BufferGeometry {
31
33
 
@@ -114,7 +116,7 @@ class ExtrudeGeometry extends BufferGeometry {
114
116
 
115
117
  splineTube = extrudePath.computeFrenetFrames( steps, false );
116
118
 
117
- // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);
119
+ // log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);
118
120
 
119
121
  binormal = new Vector3();
120
122
  normal = new Vector3();
@@ -219,7 +221,7 @@ class ExtrudeGeometry extends BufferGeometry {
219
221
 
220
222
  function scalePt2( pt, vec, size ) {
221
223
 
222
- if ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );
224
+ if ( ! vec ) error( 'ExtrudeGeometry: vec does not exist' );
223
225
 
224
226
  return pt.clone().addScaledVector( vec, size );
225
227
 
@@ -334,14 +336,14 @@ class ExtrudeGeometry extends BufferGeometry {
334
336
 
335
337
  if ( direction_eq ) {
336
338
 
337
- // console.log("Warning: lines are a straight sequence");
339
+ // log("Warning: lines are a straight sequence");
338
340
  v_trans_x = - v_prev_y;
339
341
  v_trans_y = v_prev_x;
340
342
  shrink_by = Math.sqrt( v_prev_lensq );
341
343
 
342
344
  } else {
343
345
 
344
- // console.log("Warning: lines are a straight spike");
346
+ // log("Warning: lines are a straight spike");
345
347
  v_trans_x = v_prev_x;
346
348
  v_trans_y = v_prev_y;
347
349
  shrink_by = Math.sqrt( v_prev_lensq / 2 );
@@ -363,7 +365,7 @@ class ExtrudeGeometry extends BufferGeometry {
363
365
  if ( k === il ) k = 0;
364
366
 
365
367
  // (j)---(i)---(k)
366
- // console.log('i,j,k', i, j , k)
368
+ // log('i,j,k', i, j , k)
367
369
 
368
370
  contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );
369
371
 
@@ -660,7 +662,7 @@ class ExtrudeGeometry extends BufferGeometry {
660
662
  let k = i - 1;
661
663
  if ( k < 0 ) k = contour.length - 1;
662
664
 
663
- //console.log('b', i,j, i-1, k,vertices.length);
665
+ //log('b', i,j, i-1, k,vertices.length);
664
666
 
665
667
  for ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {
666
668
 
@@ -11,6 +11,7 @@ import { PolyhedronGeometry } from './PolyhedronGeometry.js';
11
11
  * ```
12
12
  *
13
13
  * @augments PolyhedronGeometry
14
+ * @demo scenes/geometry-browser.html#IcosahedronGeometry
14
15
  */
15
16
  class IcosahedronGeometry extends PolyhedronGeometry {
16
17
 
@@ -19,6 +19,7 @@ import { clamp } from '../math/MathUtils.js';
19
19
  * ```
20
20
  *
21
21
  * @augments BufferGeometry
22
+ * @demo scenes/geometry-browser.html#LatheGeometry
22
23
  */
23
24
  class LatheGeometry extends BufferGeometry {
24
25
 
@@ -11,6 +11,7 @@ import { PolyhedronGeometry } from './PolyhedronGeometry.js';
11
11
  * ```
12
12
  *
13
13
  * @augments PolyhedronGeometry
14
+ * @demo scenes/geometry-browser.html#OctahedronGeometry
14
15
  */
15
16
  class OctahedronGeometry extends PolyhedronGeometry {
16
17
 
@@ -12,6 +12,7 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
12
12
  * ```
13
13
  *
14
14
  * @augments BufferGeometry
15
+ * @demo scenes/geometry-browser.html#PlaneGeometry
15
16
  */
16
17
  class PlaneGeometry extends BufferGeometry {
17
18
 
@@ -14,6 +14,7 @@ import { Vector3 } from '../math/Vector3.js';
14
14
  * ```
15
15
  *
16
16
  * @augments BufferGeometry
17
+ * @demo scenes/geometry-browser.html#RingGeometry
17
18
  */
18
19
  class RingGeometry extends BufferGeometry {
19
20
 
@@ -19,6 +19,7 @@ import { Vector2 } from '../math/Vector2.js';
19
19
  * ```
20
20
  *
21
21
  * @augments BufferGeometry
22
+ * @demo scenes/geometry-browser.html#ShapeGeometry
22
23
  */
23
24
  class ShapeGeometry extends BufferGeometry {
24
25
 
@@ -13,6 +13,7 @@ import { Vector3 } from '../math/Vector3.js';
13
13
  * ```
14
14
  *
15
15
  * @augments BufferGeometry
16
+ * @demo scenes/geometry-browser.html#SphereGeometry
16
17
  */
17
18
  class SphereGeometry extends BufferGeometry {
18
19
 
@@ -11,6 +11,7 @@ import { PolyhedronGeometry } from './PolyhedronGeometry.js';
11
11
  * ```
12
12
  *
13
13
  * @augments PolyhedronGeometry
14
+ * @demo scenes/geometry-browser.html#TetrahedronGeometry
14
15
  */
15
16
  class TetrahedronGeometry extends PolyhedronGeometry {
16
17
 
@@ -13,6 +13,7 @@ import { Vector3 } from '../math/Vector3.js';
13
13
  * ```
14
14
  *
15
15
  * @augments BufferGeometry
16
+ * @demo scenes/geometry-browser.html#TorusGeometry
16
17
  */
17
18
  class TorusGeometry extends BufferGeometry {
18
19
 
@@ -15,6 +15,7 @@ import { Vector3 } from '../math/Vector3.js';
15
15
  * ```
16
16
  *
17
17
  * @augments BufferGeometry
18
+ * @demo scenes/geometry-browser.html#TorusKnotGeometry
18
19
  */
19
20
  class TorusKnotGeometry extends BufferGeometry {
20
21
 
@@ -29,6 +29,7 @@ import { Vector3 } from '../math/Vector3.js';
29
29
  * ```
30
30
  *
31
31
  * @augments BufferGeometry
32
+ * @demo scenes/geometry-browser.html#TubeGeometry
32
33
  */
33
34
  class TubeGeometry extends BufferGeometry {
34
35
 
@@ -5,7 +5,7 @@ import { Color } from '../math/Color.js';
5
5
  import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
6
6
  import { BufferGeometry } from '../core/BufferGeometry.js';
7
7
  import { Float32BufferAttribute } from '../core/BufferAttribute.js';
8
- import { WebGLCoordinateSystem } from '../constants.js';
8
+ import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../constants.js';
9
9
 
10
10
  const _vector = /*@__PURE__*/ new Vector3();
11
11
  const _camera = /*@__PURE__*/ new Camera();
@@ -14,7 +14,7 @@ const _camera = /*@__PURE__*/ new Camera();
14
14
  * This helps with visualizing what a camera contains in its frustum. It
15
15
  * visualizes the frustum of a camera using a line segments.
16
16
  *
17
- * Based on frustum visualization in [lightgl.js shadowmap example]{@link https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html}.
17
+ * Based on frustum visualization in [lightgl.js shadowmap example](https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html).
18
18
  *
19
19
  * `CameraHelper` must be a child of the scene.
20
20
  *
@@ -159,6 +159,7 @@ class CameraHelper extends LineSegments {
159
159
  * @param {Color} up - The up line color.
160
160
  * @param {Color} target - The target line color.
161
161
  * @param {Color} cross - The cross line color.
162
+ * @return {CameraHelper} A reference to this helper.
162
163
  */
163
164
  setColors( frustum, cone, up, target, cross ) {
164
165
 
@@ -215,6 +216,8 @@ class CameraHelper extends LineSegments {
215
216
 
216
217
  colorAttribute.needsUpdate = true;
217
218
 
219
+ return this;
220
+
218
221
  }
219
222
 
220
223
  /**
@@ -227,17 +230,44 @@ class CameraHelper extends LineSegments {
227
230
 
228
231
  const w = 1, h = 1;
229
232
 
233
+ let nearZ, farZ;
234
+
230
235
  // we need just camera projection matrix inverse
231
236
  // world matrix must be identity
232
237
 
233
238
  _camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );
234
239
 
235
240
  // Adjust z values based on coordinate system
236
- const nearZ = this.camera.coordinateSystem === WebGLCoordinateSystem ? - 1 : 0;
241
+
242
+ if ( this.camera.reversedDepth === true ) {
243
+
244
+ nearZ = 1;
245
+ farZ = 0;
246
+
247
+ } else {
248
+
249
+ if ( this.camera.coordinateSystem === WebGLCoordinateSystem ) {
250
+
251
+ nearZ = - 1;
252
+ farZ = 1;
253
+
254
+ } else if ( this.camera.coordinateSystem === WebGPUCoordinateSystem ) {
255
+
256
+ nearZ = 0;
257
+ farZ = 1;
258
+
259
+ } else {
260
+
261
+ throw new Error( 'THREE.CameraHelper.update(): Invalid coordinate system: ' + this.camera.coordinateSystem );
262
+
263
+ }
264
+
265
+ }
266
+
237
267
 
238
268
  // center / target
239
269
  setPoint( 'c', pointMap, geometry, _camera, 0, 0, nearZ );
240
- setPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );
270
+ setPoint( 't', pointMap, geometry, _camera, 0, 0, farZ );
241
271
 
242
272
  // near
243
273
 
@@ -248,10 +278,10 @@ class CameraHelper extends LineSegments {
248
278
 
249
279
  // far
250
280
 
251
- setPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );
252
- setPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );
253
- setPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );
254
- setPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );
281
+ setPoint( 'f1', pointMap, geometry, _camera, - w, - h, farZ );
282
+ setPoint( 'f2', pointMap, geometry, _camera, w, - h, farZ );
283
+ setPoint( 'f3', pointMap, geometry, _camera, - w, h, farZ );
284
+ setPoint( 'f4', pointMap, geometry, _camera, w, h, farZ );
255
285
 
256
286
  // up
257
287
 
@@ -261,10 +291,10 @@ class CameraHelper extends LineSegments {
261
291
 
262
292
  // cross
263
293
 
264
- setPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );
265
- setPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );
266
- setPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );
267
- setPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );
294
+ setPoint( 'cf1', pointMap, geometry, _camera, - w, 0, farZ );
295
+ setPoint( 'cf2', pointMap, geometry, _camera, w, 0, farZ );
296
+ setPoint( 'cf3', pointMap, geometry, _camera, 0, - h, farZ );
297
+ setPoint( 'cf4', pointMap, geometry, _camera, 0, h, farZ );
268
298
 
269
299
  setPoint( 'cn1', pointMap, geometry, _camera, - w, 0, nearZ );
270
300
  setPoint( 'cn2', pointMap, geometry, _camera, w, 0, nearZ );
@@ -23,7 +23,7 @@ const _matrixWorldInv = /*@__PURE__*/ new Matrix4();
23
23
  class SkeletonHelper extends LineSegments {
24
24
 
25
25
  /**
26
- * Constructs a new hemisphere light helper.
26
+ * Constructs a new skeleton helper.
27
27
  *
28
28
  * @param {Object3D} object - Usually an instance of {@link SkinnedMesh}. However, any 3D object
29
29
  * can be used if it represents a hierarchy of bones (see {@link Bone}).
@@ -37,9 +37,6 @@ class SkeletonHelper extends LineSegments {
37
37
  const vertices = [];
38
38
  const colors = [];
39
39
 
40
- const color1 = new Color( 0, 0, 1 );
41
- const color2 = new Color( 0, 1, 0 );
42
-
43
40
  for ( let i = 0; i < bones.length; i ++ ) {
44
41
 
45
42
  const bone = bones[ i ];
@@ -48,8 +45,8 @@ class SkeletonHelper extends LineSegments {
48
45
 
49
46
  vertices.push( 0, 0, 0 );
50
47
  vertices.push( 0, 0, 0 );
51
- colors.push( color1.r, color1.g, color1.b );
52
- colors.push( color2.r, color2.g, color2.b );
48
+ colors.push( 0, 0, 0 );
49
+ colors.push( 0, 0, 0 );
53
50
 
54
51
  }
55
52
 
@@ -90,6 +87,13 @@ class SkeletonHelper extends LineSegments {
90
87
  this.matrix = object.matrixWorld;
91
88
  this.matrixAutoUpdate = false;
92
89
 
90
+ // colors
91
+
92
+ const color1 = new Color( 0x0000ff );
93
+ const color2 = new Color( 0x00ff00 );
94
+
95
+ this.setColors( color1, color2 );
96
+
93
97
  }
94
98
 
95
99
  updateMatrixWorld( force ) {
@@ -127,6 +131,31 @@ class SkeletonHelper extends LineSegments {
127
131
 
128
132
  }
129
133
 
134
+ /**
135
+ * Defines the colors of the helper.
136
+ *
137
+ * @param {Color} color1 - The first line color for each bone.
138
+ * @param {Color} color2 - The second line color for each bone.
139
+ * @return {SkeletonHelper} A reference to this helper.
140
+ */
141
+ setColors( color1, color2 ) {
142
+
143
+ const geometry = this.geometry;
144
+ const colorAttribute = geometry.getAttribute( 'color' );
145
+
146
+ for ( let i = 0; i < colorAttribute.count; i += 2 ) {
147
+
148
+ colorAttribute.setXYZ( i, color1.r, color1.g, color1.b );
149
+ colorAttribute.setXYZ( i + 1, color2.r, color2.g, color2.b );
150
+
151
+ }
152
+
153
+ colorAttribute.needsUpdate = true;
154
+
155
+ return this;
156
+
157
+ }
158
+
130
159
  /**
131
160
  * Frees the GPU-related resources allocated by this instance. Call this
132
161
  * method whenever this instance is no longer used in your app.
@@ -204,14 +204,27 @@ class LightShadow {
204
204
  shadowCamera.updateMatrixWorld();
205
205
 
206
206
  _projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );
207
- this._frustum.setFromProjectionMatrix( _projScreenMatrix );
208
-
209
- shadowMatrix.set(
210
- 0.5, 0.0, 0.0, 0.5,
211
- 0.0, 0.5, 0.0, 0.5,
212
- 0.0, 0.0, 0.5, 0.5,
213
- 0.0, 0.0, 0.0, 1.0
214
- );
207
+ this._frustum.setFromProjectionMatrix( _projScreenMatrix, shadowCamera.coordinateSystem, shadowCamera.reversedDepth );
208
+
209
+ if ( shadowCamera.reversedDepth ) {
210
+
211
+ shadowMatrix.set(
212
+ 0.5, 0.0, 0.0, 0.5,
213
+ 0.0, 0.5, 0.0, 0.5,
214
+ 0.0, 0.0, 1.0, 0.0,
215
+ 0.0, 0.0, 0.0, 1.0
216
+ );
217
+
218
+ } else {
219
+
220
+ shadowMatrix.set(
221
+ 0.5, 0.0, 0.0, 0.5,
222
+ 0.0, 0.5, 0.0, 0.5,
223
+ 0.0, 0.0, 0.5, 0.5,
224
+ 0.0, 0.0, 0.0, 1.0
225
+ );
226
+
227
+ }
215
228
 
216
229
  shadowMatrix.multiply( _projScreenMatrix );
217
230
 
@@ -108,7 +108,7 @@ class PointLightShadow extends LightShadow {
108
108
  shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );
109
109
 
110
110
  _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
111
- this._frustum.setFromProjectionMatrix( _projScreenMatrix );
111
+ this._frustum.setFromProjectionMatrix( _projScreenMatrix, camera.coordinateSystem, camera.reversedDepth );
112
112
 
113
113
  }
114
114
 
@@ -24,7 +24,7 @@ class ProjectorLight extends SpotLight {
24
24
  /**
25
25
  * Aspect ratio of the light. Set to `null` to use the texture aspect ratio.
26
26
  *
27
- * @type {number}
27
+ * @type {?number}
28
28
  * @default null
29
29
  */
30
30
  this.aspect = null;
@@ -1,6 +1,7 @@
1
1
  import { AnimationClip } from '../animation/AnimationClip.js';
2
2
  import { FileLoader } from './FileLoader.js';
3
3
  import { Loader } from './Loader.js';
4
+ import { error } from '../utils.js';
4
5
 
5
6
  /**
6
7
  * Class for loading animation clips in the JSON format. The files are internally
@@ -57,7 +58,7 @@ class AnimationLoader extends Loader {
57
58
 
58
59
  } else {
59
60
 
60
- console.error( e );
61
+ error( e );
61
62
 
62
63
  }
63
64