@plastic-software/three 0.175.14 → 0.179.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 (572) hide show
  1. package/README.md +4 -4
  2. package/build/three.cjs +8402 -6787
  3. package/build/three.core.js +8007 -6688
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +397 -102
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +84 -27
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +6831 -2838
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +6648 -2838
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +1 -3
  14. package/examples/jsm/animation/AnimationClipCreator.js +1 -0
  15. package/examples/jsm/animation/CCDIKSolver.js +6 -3
  16. package/examples/jsm/capabilities/WebGL.js +1 -27
  17. package/examples/jsm/capabilities/WebGPU.js +2 -1
  18. package/examples/jsm/controls/ArcballControls.js +15 -4
  19. package/examples/jsm/controls/DragControls.js +1 -0
  20. package/examples/jsm/controls/FirstPersonControls.js +1 -0
  21. package/examples/jsm/controls/FlyControls.js +1 -0
  22. package/examples/jsm/controls/MapControls.js +1 -0
  23. package/examples/jsm/controls/OrbitControls.js +1 -0
  24. package/examples/jsm/controls/PointerLockControls.js +5 -3
  25. package/examples/jsm/controls/TrackballControls.js +1 -0
  26. package/examples/jsm/controls/TransformControls.js +62 -14
  27. package/examples/jsm/csm/CSM.js +2 -0
  28. package/examples/jsm/csm/CSMFrustum.js +2 -0
  29. package/examples/jsm/csm/CSMHelper.js +1 -0
  30. package/examples/jsm/csm/CSMShader.js +4 -1
  31. package/examples/jsm/csm/CSMShadowNode.js +22 -8
  32. package/examples/jsm/curves/CurveExtras.js +14 -0
  33. package/examples/jsm/curves/NURBSCurve.js +1 -0
  34. package/examples/jsm/curves/NURBSSurface.js +2 -0
  35. package/examples/jsm/curves/NURBSUtils.js +4 -1
  36. package/examples/jsm/curves/NURBSVolume.js +2 -0
  37. package/examples/jsm/effects/AnaglyphEffect.js +2 -0
  38. package/examples/jsm/effects/AsciiEffect.js +2 -0
  39. package/examples/jsm/effects/OutlineEffect.js +2 -0
  40. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
  41. package/examples/jsm/effects/StereoEffect.js +2 -0
  42. package/examples/jsm/environments/DebugEnvironment.js +1 -0
  43. package/examples/jsm/environments/RoomEnvironment.js +57 -38
  44. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  45. package/examples/jsm/exporters/EXRExporter.js +2 -0
  46. package/examples/jsm/exporters/GLTFExporter.js +7 -4
  47. package/examples/jsm/exporters/KTX2Exporter.js +2 -0
  48. package/examples/jsm/exporters/OBJExporter.js +3 -1
  49. package/examples/jsm/exporters/PLYExporter.js +4 -2
  50. package/examples/jsm/exporters/STLExporter.js +2 -0
  51. package/examples/jsm/exporters/USDZExporter.js +679 -300
  52. package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
  53. package/examples/jsm/geometries/ConvexGeometry.js +1 -0
  54. package/examples/jsm/geometries/DecalGeometry.js +1 -0
  55. package/examples/jsm/geometries/ParametricFunctions.js +4 -1
  56. package/examples/jsm/geometries/ParametricGeometry.js +1 -0
  57. package/examples/jsm/geometries/RoundedBoxGeometry.js +48 -8
  58. package/examples/jsm/geometries/TeapotGeometry.js +1 -0
  59. package/examples/jsm/geometries/TextGeometry.js +1 -0
  60. package/examples/jsm/helpers/LightProbeHelper.js +1 -0
  61. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
  62. package/examples/jsm/helpers/OctreeHelper.js +1 -0
  63. package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
  64. package/examples/jsm/helpers/RapierHelper.js +59 -0
  65. package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
  66. package/examples/jsm/helpers/TextureHelper.js +1 -0
  67. package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
  68. package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
  69. package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
  70. package/examples/jsm/helpers/ViewHelper.js +1 -0
  71. package/examples/jsm/interactive/HTMLMesh.js +11 -2
  72. package/examples/jsm/interactive/InteractiveGroup.js +1 -0
  73. package/examples/jsm/interactive/SelectionBox.js +2 -0
  74. package/examples/jsm/interactive/SelectionHelper.js +2 -0
  75. package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
  76. package/examples/jsm/lighting/TiledLighting.js +1 -0
  77. package/examples/jsm/lights/LightProbeGenerator.js +15 -3
  78. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
  79. package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
  80. package/examples/jsm/lines/Line2.js +1 -0
  81. package/examples/jsm/lines/LineGeometry.js +1 -0
  82. package/examples/jsm/lines/LineMaterial.js +4 -4
  83. package/examples/jsm/lines/LineSegments2.js +1 -0
  84. package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
  85. package/examples/jsm/lines/Wireframe.js +1 -0
  86. package/examples/jsm/lines/WireframeGeometry2.js +1 -0
  87. package/examples/jsm/lines/webgpu/Line2.js +1 -0
  88. package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
  89. package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
  90. package/examples/jsm/loaders/3DMLoader.js +1 -0
  91. package/examples/jsm/loaders/3MFLoader.js +1 -0
  92. package/examples/jsm/loaders/AMFLoader.js +1 -0
  93. package/examples/jsm/loaders/BVHLoader.js +1 -0
  94. package/examples/jsm/loaders/ColladaLoader.js +6 -5
  95. package/examples/jsm/loaders/DDSLoader.js +1 -0
  96. package/examples/jsm/loaders/DRACOLoader.js +2 -1
  97. package/examples/jsm/loaders/EXRLoader.js +211 -22
  98. package/examples/jsm/loaders/FBXLoader.js +25 -23
  99. package/examples/jsm/loaders/FontLoader.js +1 -0
  100. package/examples/jsm/loaders/GCodeLoader.js +1 -0
  101. package/examples/jsm/loaders/GLTFLoader.js +10 -82
  102. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
  103. package/examples/jsm/loaders/IESLoader.js +1 -0
  104. package/examples/jsm/loaders/KMZLoader.js +1 -0
  105. package/examples/jsm/loaders/KTX2Loader.js +67 -26
  106. package/examples/jsm/loaders/KTXLoader.js +1 -0
  107. package/examples/jsm/loaders/LDrawLoader.js +55 -3
  108. package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
  109. package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
  110. package/examples/jsm/loaders/LUTImageLoader.js +1 -0
  111. package/examples/jsm/loaders/LWOLoader.js +1 -13
  112. package/examples/jsm/loaders/LottieLoader.js +15 -0
  113. package/examples/jsm/loaders/MD2Loader.js +1 -0
  114. package/examples/jsm/loaders/MDDLoader.js +1 -0
  115. package/examples/jsm/loaders/MTLLoader.js +4 -3
  116. package/examples/jsm/loaders/MaterialXLoader.js +213 -30
  117. package/examples/jsm/loaders/NRRDLoader.js +1 -0
  118. package/examples/jsm/loaders/OBJLoader.js +1 -0
  119. package/examples/jsm/loaders/PCDLoader.js +122 -19
  120. package/examples/jsm/loaders/PDBLoader.js +1 -0
  121. package/examples/jsm/loaders/PLYLoader.js +1 -0
  122. package/examples/jsm/loaders/PVRLoader.js +1 -0
  123. package/examples/jsm/loaders/RGBELoader.js +1 -0
  124. package/examples/jsm/loaders/RGBMLoader.js +1 -0
  125. package/examples/jsm/loaders/STLLoader.js +1 -0
  126. package/examples/jsm/loaders/SVGLoader.js +1 -0
  127. package/examples/jsm/loaders/TDSLoader.js +1 -0
  128. package/examples/jsm/loaders/TGALoader.js +1 -0
  129. package/examples/jsm/loaders/TIFFLoader.js +1 -0
  130. package/examples/jsm/loaders/TTFLoader.js +14 -1
  131. package/examples/jsm/loaders/USDLoader.js +219 -0
  132. package/examples/jsm/loaders/USDZLoader.js +4 -891
  133. package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
  134. package/examples/jsm/loaders/VOXLoader.js +1 -0
  135. package/examples/jsm/loaders/VRMLLoader.js +3 -2
  136. package/examples/jsm/loaders/VTKLoader.js +1 -0
  137. package/examples/jsm/loaders/XYZLoader.js +1 -0
  138. package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
  139. package/examples/jsm/loaders/usd/USDAParser.js +741 -0
  140. package/examples/jsm/loaders/usd/USDCParser.js +17 -0
  141. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
  142. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
  143. package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
  144. package/examples/jsm/math/Capsule.js +2 -0
  145. package/examples/jsm/math/ColorConverter.js +1 -0
  146. package/examples/jsm/math/ConvexHull.js +2 -0
  147. package/examples/jsm/math/ImprovedNoise.js +19 -14
  148. package/examples/jsm/math/Lut.js +2 -0
  149. package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
  150. package/examples/jsm/math/OBB.js +2 -0
  151. package/examples/jsm/math/Octree.js +20 -1
  152. package/examples/jsm/math/SimplexNoise.js +2 -0
  153. package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
  154. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  155. package/examples/jsm/misc/Gyroscope.js +1 -0
  156. package/examples/jsm/misc/MD2Character.js +2 -0
  157. package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
  158. package/examples/jsm/misc/MorphAnimMesh.js +1 -0
  159. package/examples/jsm/misc/MorphBlendMesh.js +1 -0
  160. package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
  161. package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
  162. package/examples/jsm/misc/RollerCoaster.js +5 -0
  163. package/examples/jsm/misc/TubePainter.js +1 -0
  164. package/examples/jsm/misc/Volume.js +2 -0
  165. package/examples/jsm/misc/VolumeSlice.js +1 -0
  166. package/examples/jsm/modifiers/CurveModifier.js +3 -0
  167. package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
  168. package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
  169. package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
  170. package/examples/jsm/modifiers/TessellateModifier.js +2 -0
  171. package/examples/jsm/objects/GroundedSkybox.js +1 -0
  172. package/examples/jsm/objects/Lensflare.js +3 -0
  173. package/examples/jsm/objects/LensflareMesh.js +4 -3
  174. package/examples/jsm/objects/MarchingCubes.js +2 -0
  175. package/examples/jsm/objects/Reflector.js +1 -0
  176. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  177. package/examples/jsm/objects/Refractor.js +1 -0
  178. package/examples/jsm/objects/ShadowMesh.js +1 -0
  179. package/examples/jsm/objects/Sky.js +2 -1
  180. package/examples/jsm/objects/SkyMesh.js +22 -19
  181. package/examples/jsm/objects/Water.js +1 -0
  182. package/examples/jsm/objects/Water2.js +1 -0
  183. package/examples/jsm/objects/Water2Mesh.js +3 -1
  184. package/examples/jsm/objects/WaterMesh.js +2 -1
  185. package/examples/jsm/physics/AmmoPhysics.js +1 -0
  186. package/examples/jsm/physics/JoltPhysics.js +1 -0
  187. package/examples/jsm/physics/RapierPhysics.js +149 -13
  188. package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
  189. package/examples/jsm/postprocessing/BloomPass.js +2 -1
  190. package/examples/jsm/postprocessing/BokehPass.js +2 -1
  191. package/examples/jsm/postprocessing/ClearPass.js +1 -0
  192. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
  193. package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
  194. package/examples/jsm/postprocessing/EffectComposer.js +4 -2
  195. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  196. package/examples/jsm/postprocessing/FilmPass.js +1 -0
  197. package/examples/jsm/postprocessing/GTAOPass.js +14 -12
  198. package/examples/jsm/postprocessing/GlitchPass.js +2 -1
  199. package/examples/jsm/postprocessing/HalftonePass.js +2 -1
  200. package/examples/jsm/postprocessing/LUTPass.js +1 -0
  201. package/examples/jsm/postprocessing/MaskPass.js +1 -0
  202. package/examples/jsm/postprocessing/OutlinePass.js +22 -19
  203. package/examples/jsm/postprocessing/OutputPass.js +1 -0
  204. package/examples/jsm/postprocessing/Pass.js +3 -1
  205. package/examples/jsm/postprocessing/RenderPass.js +1 -0
  206. package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
  207. package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
  208. package/examples/jsm/postprocessing/SAOPass.js +3 -2
  209. package/examples/jsm/postprocessing/SMAAPass.js +3 -2
  210. package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
  211. package/examples/jsm/postprocessing/SSAOPass.js +12 -10
  212. package/examples/jsm/postprocessing/SSRPass.js +4 -3
  213. package/examples/jsm/postprocessing/SavePass.js +2 -1
  214. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  215. package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
  216. package/examples/jsm/postprocessing/TexturePass.js +1 -0
  217. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
  218. package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
  219. package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
  220. package/examples/jsm/renderers/Projector.js +2 -0
  221. package/examples/jsm/renderers/SVGRenderer.js +3 -0
  222. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
  223. package/examples/jsm/shaders/AfterimageShader.js +4 -1
  224. package/examples/jsm/shaders/BasicShader.js +4 -1
  225. package/examples/jsm/shaders/BleachBypassShader.js +4 -1
  226. package/examples/jsm/shaders/BlendShader.js +4 -1
  227. package/examples/jsm/shaders/BokehShader.js +4 -1
  228. package/examples/jsm/shaders/BokehShader2.js +4 -1
  229. package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
  230. package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
  231. package/examples/jsm/shaders/ColorifyShader.js +4 -1
  232. package/examples/jsm/shaders/ConvolutionShader.js +4 -1
  233. package/examples/jsm/shaders/CopyShader.js +4 -1
  234. package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
  235. package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
  236. package/examples/jsm/shaders/DigitalGlitch.js +4 -1
  237. package/examples/jsm/shaders/DotScreenShader.js +4 -1
  238. package/examples/jsm/shaders/ExposureShader.js +4 -1
  239. package/examples/jsm/shaders/FXAAShader.js +4 -1
  240. package/examples/jsm/shaders/FilmShader.js +4 -1
  241. package/examples/jsm/shaders/FocusShader.js +4 -1
  242. package/examples/jsm/shaders/FreiChenShader.js +4 -1
  243. package/examples/jsm/shaders/GTAOShader.js +4 -1
  244. package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
  245. package/examples/jsm/shaders/GodRaysShader.js +4 -1
  246. package/examples/jsm/shaders/HalftoneShader.js +4 -1
  247. package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
  248. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
  249. package/examples/jsm/shaders/HueSaturationShader.js +4 -1
  250. package/examples/jsm/shaders/KaleidoShader.js +4 -1
  251. package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
  252. package/examples/jsm/shaders/LuminosityShader.js +4 -1
  253. package/examples/jsm/shaders/MirrorShader.js +4 -1
  254. package/examples/jsm/shaders/NormalMapShader.js +4 -1
  255. package/examples/jsm/shaders/OutputShader.js +4 -1
  256. package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
  257. package/examples/jsm/shaders/RGBShiftShader.js +4 -1
  258. package/examples/jsm/shaders/SAOShader.js +4 -1
  259. package/examples/jsm/shaders/SMAAShader.js +1 -0
  260. package/examples/jsm/shaders/SSAOShader.js +4 -1
  261. package/examples/jsm/shaders/SSRShader.js +1 -0
  262. package/examples/jsm/shaders/SepiaShader.js +4 -1
  263. package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
  264. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
  265. package/examples/jsm/shaders/TechnicolorShader.js +4 -1
  266. package/examples/jsm/shaders/ToonShader.js +2 -1
  267. package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
  268. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +15 -3
  269. package/examples/jsm/shaders/VelocityShader.js +4 -1
  270. package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
  271. package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
  272. package/examples/jsm/shaders/VignetteShader.js +4 -1
  273. package/examples/jsm/shaders/VolumeShader.js +5 -2
  274. package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
  275. package/examples/jsm/textures/FlakesTexture.js +2 -0
  276. package/examples/jsm/transpiler/AST.js +381 -30
  277. package/examples/jsm/transpiler/GLSLDecoder.js +227 -88
  278. package/examples/jsm/transpiler/Linker.js +327 -0
  279. package/examples/jsm/transpiler/TSLEncoder.js +234 -85
  280. package/examples/jsm/transpiler/Transpiler.js +19 -1
  281. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  282. package/examples/jsm/transpiler/WGSLEncoder.js +788 -0
  283. package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
  284. package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
  285. package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
  286. package/examples/jsm/tsl/display/BloomNode.js +9 -7
  287. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -0
  288. package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
  289. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
  290. package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
  291. package/examples/jsm/tsl/display/FXAANode.js +3 -2
  292. package/examples/jsm/tsl/display/FilmNode.js +1 -0
  293. package/examples/jsm/tsl/display/GTAONode.js +1 -0
  294. package/examples/jsm/tsl/display/GaussianBlurNode.js +9 -36
  295. package/examples/jsm/tsl/display/LensflareNode.js +1 -0
  296. package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
  297. package/examples/jsm/tsl/display/OutlineNode.js +1 -0
  298. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
  299. package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
  300. package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
  301. package/examples/jsm/tsl/display/SMAANode.js +9 -8
  302. package/examples/jsm/tsl/display/SSAAPassNode.js +5 -4
  303. package/examples/jsm/tsl/display/SSRNode.js +1 -0
  304. package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
  305. package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
  306. package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
  307. package/examples/jsm/tsl/display/{TRAAPassNode.js → TRAANode.js} +184 -174
  308. package/examples/jsm/tsl/display/TransitionNode.js +1 -0
  309. package/examples/jsm/tsl/display/hashBlur.js +28 -6
  310. package/examples/jsm/tsl/lighting/TiledLightsNode.js +5 -4
  311. package/examples/jsm/tsl/math/Bayer.js +4 -1
  312. package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  313. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  314. package/examples/jsm/tsl/utils/Raymarching.js +6 -3
  315. package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
  316. package/examples/jsm/utils/CameraUtils.js +4 -1
  317. package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
  318. package/examples/jsm/utils/GeometryUtils.js +4 -1
  319. package/examples/jsm/utils/LDrawUtils.js +2 -0
  320. package/examples/jsm/utils/SceneOptimizer.js +2 -0
  321. package/examples/jsm/utils/SceneUtils.js +4 -1
  322. package/examples/jsm/utils/ShadowMapViewer.js +2 -0
  323. package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
  324. package/examples/jsm/utils/SkeletonUtils.js +4 -1
  325. package/examples/jsm/utils/SortUtils.js +4 -1
  326. package/examples/jsm/utils/UVsDebug.js +4 -1
  327. package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
  328. package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
  329. package/examples/jsm/utils/WorkerPool.js +2 -0
  330. package/examples/jsm/webxr/ARButton.js +1 -0
  331. package/examples/jsm/webxr/OculusHandModel.js +1 -0
  332. package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
  333. package/examples/jsm/webxr/Text2D.js +4 -1
  334. package/examples/jsm/webxr/VRButton.js +1 -0
  335. package/examples/jsm/webxr/XRButton.js +1 -0
  336. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
  337. package/examples/jsm/webxr/XREstimatedLight.js +1 -0
  338. package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
  339. package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
  340. package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
  341. package/examples/jsm/webxr/XRPlanes.js +1 -0
  342. package/package.json +6 -4
  343. package/src/Three.Core.js +2 -1
  344. package/src/Three.TSL.js +83 -26
  345. package/src/Three.WebGPU.Nodes.js +1 -0
  346. package/src/Three.WebGPU.js +3 -0
  347. package/src/animation/KeyframeTrack.js +1 -1
  348. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  349. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  350. package/src/audio/AudioListener.js +13 -10
  351. package/src/cameras/ArrayCamera.js +9 -1
  352. package/src/cameras/Camera.js +14 -0
  353. package/src/cameras/OrthographicCamera.js +1 -1
  354. package/src/cameras/PerspectiveCamera.js +1 -1
  355. package/src/constants.js +47 -20
  356. package/src/core/BufferAttribute.js +3 -3
  357. package/src/core/BufferGeometry.js +2 -5
  358. package/src/core/Clock.js +2 -8
  359. package/src/core/GLBufferAttribute.js +13 -1
  360. package/src/core/Object3D.js +23 -22
  361. package/src/core/RenderTarget.js +65 -21
  362. package/src/core/RenderTarget3D.js +1 -0
  363. package/{examples/jsm/misc → src/core}/Timer.js +4 -40
  364. package/src/extras/PMREMGenerator.js +11 -0
  365. package/src/extras/TextureUtils.js +1 -5
  366. package/src/extras/core/Curve.js +1 -1
  367. package/src/extras/core/Path.js +22 -22
  368. package/src/geometries/CapsuleGeometry.js +167 -17
  369. package/src/geometries/ExtrudeGeometry.js +39 -29
  370. package/src/helpers/ArrowHelper.js +2 -2
  371. package/src/helpers/CameraHelper.js +41 -11
  372. package/src/helpers/SkeletonHelper.js +36 -7
  373. package/src/lights/LightShadow.js +34 -7
  374. package/src/lights/PointLightShadow.js +1 -1
  375. package/src/lights/SpotLightShadow.js +9 -1
  376. package/src/lights/webgpu/ProjectorLight.js +46 -0
  377. package/src/loaders/BufferGeometryLoader.js +1 -10
  378. package/src/loaders/FileLoader.js +27 -4
  379. package/src/loaders/ImageBitmapLoader.js +48 -9
  380. package/src/loaders/ImageLoader.js +55 -8
  381. package/src/loaders/Loader.js +14 -0
  382. package/src/loaders/LoadingManager.js +23 -0
  383. package/src/loaders/ObjectLoader.js +44 -16
  384. package/src/loaders/nodes/NodeObjectLoader.js +2 -2
  385. package/src/materials/Material.js +1 -7
  386. package/src/materials/MeshBasicMaterial.js +1 -1
  387. package/src/materials/nodes/Line2NodeMaterial.js +0 -8
  388. package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
  389. package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
  390. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  391. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
  392. package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
  393. package/src/materials/nodes/NodeMaterial.js +106 -20
  394. package/src/materials/nodes/PointsNodeMaterial.js +5 -0
  395. package/src/materials/nodes/manager/NodeMaterialObserver.js +107 -4
  396. package/src/math/Box3.js +28 -0
  397. package/src/math/Color.js +7 -7
  398. package/src/math/ColorManagement.js +22 -3
  399. package/src/math/Frustum.js +25 -9
  400. package/src/math/FrustumArray.js +258 -0
  401. package/src/math/Line3.js +129 -2
  402. package/src/math/Matrix4.js +48 -27
  403. package/src/math/Quaternion.js +1 -1
  404. package/src/math/Ray.js +2 -0
  405. package/src/math/Sphere.js +28 -0
  406. package/src/math/Spherical.js +2 -2
  407. package/src/nodes/Nodes.js +3 -3
  408. package/src/nodes/TSL.js +6 -3
  409. package/src/nodes/accessors/AccessorsUtils.js +7 -8
  410. package/src/nodes/accessors/Bitangent.js +54 -26
  411. package/src/nodes/accessors/Camera.js +40 -13
  412. package/src/nodes/accessors/CubeTextureNode.js +50 -2
  413. package/src/nodes/accessors/InstanceNode.js +5 -4
  414. package/src/nodes/accessors/Lights.js +2 -2
  415. package/src/nodes/accessors/MaterialNode.js +4 -0
  416. package/src/nodes/accessors/ModelNode.js +1 -1
  417. package/src/nodes/accessors/Normal.js +110 -24
  418. package/src/nodes/accessors/Object3DNode.js +7 -8
  419. package/src/nodes/accessors/Position.js +14 -4
  420. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  421. package/src/nodes/accessors/ReferenceNode.js +19 -4
  422. package/src/nodes/accessors/ReflectVector.js +3 -3
  423. package/src/nodes/accessors/SceneNode.js +1 -1
  424. package/src/nodes/accessors/SkinningNode.js +3 -2
  425. package/src/nodes/accessors/StorageBufferNode.js +25 -0
  426. package/src/nodes/accessors/StorageTextureNode.js +15 -4
  427. package/src/nodes/accessors/Tangent.js +25 -17
  428. package/src/nodes/accessors/TangentUtils.js +46 -0
  429. package/src/nodes/accessors/TextureBicubic.js +21 -3
  430. package/src/nodes/accessors/TextureNode.js +71 -8
  431. package/src/nodes/accessors/UniformArrayNode.js +0 -16
  432. package/src/nodes/accessors/VelocityNode.js +1 -0
  433. package/src/nodes/accessors/VertexColorNode.js +4 -4
  434. package/src/nodes/code/CodeNode.js +8 -11
  435. package/src/nodes/core/ArrayNode.js +12 -0
  436. package/src/nodes/core/AssignNode.js +30 -5
  437. package/src/nodes/core/AttributeNode.js +2 -2
  438. package/src/nodes/core/ContextNode.js +27 -4
  439. package/src/nodes/core/Node.js +83 -22
  440. package/src/nodes/core/NodeBuilder.js +273 -49
  441. package/src/nodes/core/NodeUtils.js +46 -1
  442. package/src/nodes/core/NodeVarying.js +19 -1
  443. package/src/nodes/core/PropertyNode.js +8 -12
  444. package/src/nodes/core/StackNode.js +171 -26
  445. package/src/nodes/core/StructTypeNode.js +26 -4
  446. package/src/nodes/core/SubBuildNode.js +89 -0
  447. package/src/nodes/core/UniformNode.js +63 -5
  448. package/src/nodes/core/VarNode.js +102 -4
  449. package/src/nodes/core/VaryingNode.js +45 -24
  450. package/src/nodes/display/BlendModes.js +42 -1
  451. package/src/nodes/display/ColorSpaceNode.js +4 -27
  452. package/src/nodes/display/FrontFacingNode.js +34 -2
  453. package/src/nodes/display/NormalMapNode.js +19 -50
  454. package/src/nodes/display/PassNode.js +165 -20
  455. package/src/nodes/display/ScreenNode.js +0 -26
  456. package/src/nodes/display/ViewportTextureNode.js +67 -7
  457. package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
  458. package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
  459. package/src/nodes/functions/PhongLightingModel.js +3 -3
  460. package/src/nodes/functions/PhysicalLightingModel.js +16 -16
  461. package/src/nodes/functions/ShadowMaskModel.js +5 -1
  462. package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
  463. package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
  464. package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
  465. package/src/nodes/gpgpu/BarrierNode.js +3 -3
  466. package/src/nodes/gpgpu/ComputeNode.js +68 -24
  467. package/src/nodes/gpgpu/WorkgroupInfoNode.js +28 -3
  468. package/src/nodes/lighting/AnalyticLightNode.js +7 -13
  469. package/src/nodes/lighting/EnvironmentNode.js +5 -5
  470. package/src/nodes/lighting/HemisphereLightNode.js +2 -2
  471. package/src/nodes/lighting/IESSpotLightNode.js +2 -1
  472. package/src/nodes/lighting/LightsNode.js +29 -11
  473. package/src/nodes/lighting/ProjectorLightNode.js +91 -0
  474. package/src/nodes/lighting/ShadowBaseNode.js +1 -12
  475. package/src/nodes/lighting/ShadowFilterNode.js +274 -0
  476. package/src/nodes/lighting/ShadowNode.js +174 -242
  477. package/src/nodes/lighting/SpotLightNode.js +44 -7
  478. package/src/nodes/materialx/MaterialXNodes.js +131 -2
  479. package/src/nodes/materialx/lib/mx_noise.js +166 -2
  480. package/src/nodes/math/ConditionalNode.js +1 -20
  481. package/src/nodes/math/MathNode.js +146 -75
  482. package/src/nodes/math/OperatorNode.js +129 -119
  483. package/src/nodes/shapes/Shapes.js +5 -4
  484. package/src/nodes/tsl/TSLBase.js +1 -0
  485. package/src/nodes/tsl/TSLCore.js +222 -72
  486. package/src/nodes/utils/DebugNode.js +16 -4
  487. package/src/nodes/utils/Discard.js +2 -2
  488. package/src/nodes/utils/EquirectUV.js +27 -0
  489. package/src/nodes/utils/EventNode.js +83 -0
  490. package/src/nodes/utils/LoopNode.js +64 -34
  491. package/src/nodes/utils/MatcapUV.js +22 -0
  492. package/src/nodes/utils/RTTNode.js +22 -5
  493. package/src/nodes/utils/ReflectorNode.js +77 -7
  494. package/src/nodes/utils/SampleNode.js +81 -0
  495. package/src/nodes/utils/TriplanarTextures.js +65 -0
  496. package/src/objects/BatchedMesh.js +20 -6
  497. package/src/objects/Mesh.js +9 -0
  498. package/src/objects/Skeleton.js +1 -1
  499. package/src/objects/Sprite.js +9 -0
  500. package/src/renderers/WebGL3DRenderTarget.js +1 -0
  501. package/src/renderers/WebGLArrayRenderTarget.js +1 -0
  502. package/src/renderers/WebGLCubeRenderTarget.js +2 -4
  503. package/src/renderers/WebGLRenderer.js +45 -32
  504. package/src/renderers/common/Animation.js +2 -2
  505. package/src/renderers/common/Background.js +13 -2
  506. package/src/renderers/common/Bindings.js +19 -18
  507. package/src/renderers/common/Color4.js +2 -2
  508. package/src/renderers/common/CubeRenderTarget.js +1 -1
  509. package/src/renderers/common/PostProcessing.js +60 -5
  510. package/src/renderers/common/RenderList.js +0 -4
  511. package/src/renderers/common/RenderObject.js +80 -4
  512. package/src/renderers/common/Renderer.js +133 -22
  513. package/src/renderers/common/SampledTexture.js +3 -71
  514. package/src/renderers/common/Sampler.js +79 -0
  515. package/src/renderers/common/Storage3DTexture.js +100 -0
  516. package/src/renderers/common/StorageArrayTexture.js +84 -0
  517. package/src/renderers/common/StorageTexture.js +19 -0
  518. package/src/renderers/common/Textures.js +34 -24
  519. package/src/renderers/common/TimestampQueryPool.js +1 -0
  520. package/src/renderers/common/Uniform.js +1 -1
  521. package/src/renderers/common/UniformsGroup.js +14 -18
  522. package/src/renderers/common/XRManager.js +183 -35
  523. package/src/renderers/common/XRRenderTarget.js +21 -4
  524. package/src/renderers/common/extras/PMREMGenerator.js +30 -23
  525. package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
  526. package/src/renderers/common/nodes/Nodes.js +13 -3
  527. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  528. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +20 -2
  529. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  530. package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
  531. package/src/renderers/webgl/WebGLAttributes.js +4 -0
  532. package/src/renderers/webgl/WebGLCapabilities.js +2 -2
  533. package/src/renderers/webgl/WebGLMaterials.js +6 -6
  534. package/src/renderers/webgl/WebGLProgram.js +22 -16
  535. package/src/renderers/webgl/WebGLPrograms.js +8 -6
  536. package/src/renderers/webgl/WebGLShadowMap.js +14 -3
  537. package/src/renderers/webgl/WebGLState.js +4 -4
  538. package/src/renderers/webgl/WebGLTextures.js +163 -11
  539. package/src/renderers/webgl/WebGLUtils.js +1 -3
  540. package/src/renderers/webgl-fallback/WebGLBackend.js +261 -94
  541. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -9
  542. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
  543. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
  544. package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
  545. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
  546. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
  547. package/src/renderers/webgpu/WebGPUBackend.js +505 -143
  548. package/src/renderers/webgpu/WebGPURenderer.js +7 -0
  549. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
  550. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
  551. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +129 -96
  552. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
  553. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
  554. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +58 -31
  555. package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
  556. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -9
  557. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +50 -108
  558. package/src/renderers/webgpu/utils/WebGPUUtils.js +2 -17
  559. package/src/renderers/webxr/WebXRController.js +1 -1
  560. package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
  561. package/src/renderers/webxr/WebXRManager.js +70 -9
  562. package/src/textures/DepthTexture.js +6 -10
  563. package/src/textures/ExternalTexture.js +45 -0
  564. package/src/textures/FramebufferTexture.js +2 -2
  565. package/src/textures/Source.js +32 -0
  566. package/src/textures/Texture.js +118 -1
  567. package/src/textures/VideoTexture.js +31 -3
  568. package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
  569. package/src/core/RenderTargetArray.js +0 -40
  570. package/src/nodes/utils/EquirectUVNode.js +0 -65
  571. package/src/nodes/utils/MatcapUVNode.js +0 -49
  572. package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
@@ -88,7 +88,7 @@ class BufferAttribute {
88
88
  /**
89
89
  * Applies to integer data only. Indicates how the underlying data in the buffer maps to
90
90
  * the values in the GLSL code. For instance, if `array` is an instance of `UInt16Array`,
91
- * and `normalized` is `true`, the values `0 -+65535` in the array data will be mapped to
91
+ * and `normalized` is `true`, the values `0 - +65535` in the array data will be mapped to
92
92
  * `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted
93
93
  * to floats unmodified, i.e. `65535` becomes `65535.0f`.
94
94
  *
@@ -841,8 +841,8 @@ class Uint32BufferAttribute extends BufferAttribute {
841
841
  * Convenient class that can be used when creating a `Float16` buffer attribute with
842
842
  * a plain `Array` instance.
843
843
  *
844
- * This class automatically converts to to and from FP16 since `Float16Array` is not
845
- * natively supported in JavaScript.
844
+ * This class automatically converts to and from FP16 via `Uint16Array` since `Float16Array`
845
+ * browser support is still problematic.
846
846
  *
847
847
  * @augments BufferAttribute
848
848
  */
@@ -1201,7 +1201,7 @@ class BufferGeometry extends EventDispatcher {
1201
1201
 
1202
1202
  const data = {
1203
1203
  metadata: {
1204
- version: 4.6,
1204
+ version: 4.7,
1205
1205
  type: 'BufferGeometry',
1206
1206
  generator: 'BufferGeometry.toJSON'
1207
1207
  }
@@ -1299,10 +1299,7 @@ class BufferGeometry extends EventDispatcher {
1299
1299
 
1300
1300
  if ( boundingSphere !== null ) {
1301
1301
 
1302
- data.data.boundingSphere = {
1303
- center: boundingSphere.center.toArray(),
1304
- radius: boundingSphere.radius
1305
- };
1302
+ data.data.boundingSphere = boundingSphere.toJSON();
1306
1303
 
1307
1304
  }
1308
1305
 
package/src/core/Clock.js CHANGED
@@ -61,7 +61,7 @@ class Clock {
61
61
  */
62
62
  start() {
63
63
 
64
- this.startTime = now();
64
+ this.startTime = performance.now();
65
65
 
66
66
  this.oldTime = this.startTime;
67
67
  this.elapsedTime = 0;
@@ -110,7 +110,7 @@ class Clock {
110
110
 
111
111
  if ( this.running ) {
112
112
 
113
- const newTime = now();
113
+ const newTime = performance.now();
114
114
 
115
115
  diff = ( newTime - this.oldTime ) / 1000;
116
116
  this.oldTime = newTime;
@@ -125,10 +125,4 @@ class Clock {
125
125
 
126
126
  }
127
127
 
128
- function now() {
129
-
130
- return performance.now();
131
-
132
- }
133
-
134
128
  export { Clock };
@@ -19,8 +19,9 @@ class GLBufferAttribute {
19
19
  * @param {number} itemSize - The item size.
20
20
  * @param {number} elementSize - The corresponding size (in bytes) for the given `type` parameter.
21
21
  * @param {number} count - The expected number of vertices in VBO.
22
+ * @param {boolean} [normalized=false] - Whether the data are normalized or not.
22
23
  */
23
- constructor( buffer, type, itemSize, elementSize, count ) {
24
+ constructor( buffer, type, itemSize, elementSize, count, normalized = false ) {
24
25
 
25
26
  /**
26
27
  * This flag can be used for type testing.
@@ -73,6 +74,17 @@ class GLBufferAttribute {
73
74
  */
74
75
  this.count = count;
75
76
 
77
+ /**
78
+ * Applies to integer data only. Indicates how the underlying data in the buffer maps to
79
+ * the values in the GLSL code. For instance, if `buffer` contains data of `gl.UNSIGNED_SHORT`,
80
+ * and `normalized` is `true`, the values `0 - +65535` in the buffer data will be mapped to
81
+ * `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted
82
+ * to floats unmodified, i.e. `65535` becomes `65535.0f`.
83
+ *
84
+ * @type {boolean}
85
+ */
86
+ this.normalized = normalized;
87
+
76
88
  /**
77
89
  * A version number, incremented every time the `needsUpdate` is set to `true`.
78
90
  *
@@ -47,7 +47,7 @@ const _removedEvent = { type: 'removed' };
47
47
  const _childaddedEvent = { type: 'childadded', child: null };
48
48
 
49
49
  /**
50
- * Fires when a new child object has been added.
50
+ * Fires when a child object has been removed.
51
51
  *
52
52
  * @event Object3D#childremoved
53
53
  * @type {Object}
@@ -1246,7 +1246,7 @@ class Object3D extends EventDispatcher {
1246
1246
  };
1247
1247
 
1248
1248
  output.metadata = {
1249
- version: 4.6,
1249
+ version: 4.7,
1250
1250
  type: 'Object',
1251
1251
  generator: 'Object3D.toJSON'
1252
1252
  };
@@ -1294,44 +1294,45 @@ class Object3D extends EventDispatcher {
1294
1294
  object.drawRanges = this._drawRanges;
1295
1295
  object.reservedRanges = this._reservedRanges;
1296
1296
 
1297
- object.visibility = this._visibility;
1298
- object.active = this._active;
1299
- object.bounds = this._bounds.map( bound => ( {
1300
- boxInitialized: bound.boxInitialized,
1301
- boxMin: bound.box.min.toArray(),
1302
- boxMax: bound.box.max.toArray(),
1303
-
1304
- sphereInitialized: bound.sphereInitialized,
1305
- sphereRadius: bound.sphere.radius,
1306
- sphereCenter: bound.sphere.center.toArray()
1297
+ object.geometryInfo = this._geometryInfo.map( info => ( {
1298
+ ...info,
1299
+ boundingBox: info.boundingBox ? info.boundingBox.toJSON() : undefined,
1300
+ boundingSphere: info.boundingSphere ? info.boundingSphere.toJSON() : undefined
1307
1301
  } ) );
1302
+ object.instanceInfo = this._instanceInfo.map( info => ( { ...info } ) );
1303
+
1304
+ object.availableInstanceIds = this._availableInstanceIds.slice();
1305
+ object.availableGeometryIds = this._availableGeometryIds.slice();
1306
+
1307
+ object.nextIndexStart = this._nextIndexStart;
1308
+ object.nextVertexStart = this._nextVertexStart;
1309
+ object.geometryCount = this._geometryCount;
1308
1310
 
1309
1311
  object.maxInstanceCount = this._maxInstanceCount;
1310
1312
  object.maxVertexCount = this._maxVertexCount;
1311
1313
  object.maxIndexCount = this._maxIndexCount;
1312
1314
 
1313
1315
  object.geometryInitialized = this._geometryInitialized;
1314
- object.geometryCount = this._geometryCount;
1315
1316
 
1316
1317
  object.matricesTexture = this._matricesTexture.toJSON( meta );
1317
1318
 
1318
- if ( this._colorsTexture !== null ) object.colorsTexture = this._colorsTexture.toJSON( meta );
1319
+ object.indirectTexture = this._indirectTexture.toJSON( meta );
1320
+
1321
+ if ( this._colorsTexture !== null ) {
1322
+
1323
+ object.colorsTexture = this._colorsTexture.toJSON( meta );
1324
+
1325
+ }
1319
1326
 
1320
1327
  if ( this.boundingSphere !== null ) {
1321
1328
 
1322
- object.boundingSphere = {
1323
- center: object.boundingSphere.center.toArray(),
1324
- radius: object.boundingSphere.radius
1325
- };
1329
+ object.boundingSphere = this.boundingSphere.toJSON();
1326
1330
 
1327
1331
  }
1328
1332
 
1329
1333
  if ( this.boundingBox !== null ) {
1330
1334
 
1331
- object.boundingBox = {
1332
- min: object.boundingBox.min.toArray(),
1333
- max: object.boundingBox.max.toArray()
1334
- };
1335
+ object.boundingBox = this.boundingBox.toJSON();
1335
1336
 
1336
1337
  }
1337
1338
 
@@ -35,6 +35,8 @@ class RenderTarget extends EventDispatcher {
35
35
  * @property {?Texture} [depthTexture=null] - Reference to a depth texture.
36
36
  * @property {number} [samples=0] - The MSAA samples count.
37
37
  * @property {number} [count=1] - Defines the number of color attachments . Must be at least `1`.
38
+ * @property {number} [depth=1] - The texture depth.
39
+ * @property {boolean} [multiview=false] - Whether this target is used for multiview rendering.
38
40
  */
39
41
 
40
42
  /**
@@ -48,6 +50,21 @@ class RenderTarget extends EventDispatcher {
48
50
 
49
51
  super();
50
52
 
53
+ options = Object.assign( {
54
+ generateMipmaps: false,
55
+ internalFormat: null,
56
+ minFilter: LinearFilter,
57
+ depthBuffer: true,
58
+ stencilBuffer: false,
59
+ resolveDepthBuffer: true,
60
+ resolveStencilBuffer: true,
61
+ depthTexture: null,
62
+ samples: 0,
63
+ count: 1,
64
+ depth: 1,
65
+ multiview: false
66
+ }, options );
67
+
51
68
  /**
52
69
  * This flag can be used for type testing.
53
70
  *
@@ -79,7 +96,7 @@ class RenderTarget extends EventDispatcher {
79
96
  * @type {number}
80
97
  * @default 1
81
98
  */
82
- this.depth = 1;
99
+ this.depth = options.depth;
83
100
 
84
101
  /**
85
102
  * A rectangular area inside the render target's viewport. Fragments that are
@@ -107,26 +124,9 @@ class RenderTarget extends EventDispatcher {
107
124
  */
108
125
  this.viewport = new Vector4( 0, 0, width, height );
109
126
 
110
- const image = { width: width, height: height, depth: 1 };
111
-
112
- options = Object.assign( {
113
- generateMipmaps: false,
114
- internalFormat: null,
115
- minFilter: LinearFilter,
116
- depthBuffer: true,
117
- stencilBuffer: false,
118
- resolveDepthBuffer: true,
119
- resolveStencilBuffer: true,
120
- depthTexture: null,
121
- samples: 0,
122
- count: 1
123
- }, options );
124
-
125
- const texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );
127
+ const image = { width: width, height: height, depth: options.depth };
126
128
 
127
- texture.flipY = false;
128
- texture.generateMipmaps = options.generateMipmaps;
129
- texture.internalFormat = options.internalFormat;
129
+ const texture = new Texture( image );
130
130
 
131
131
  /**
132
132
  * An array of textures. Each color attachment is represented as a separate texture.
@@ -145,6 +145,8 @@ class RenderTarget extends EventDispatcher {
145
145
 
146
146
  }
147
147
 
148
+ this._setTextureOptions( options );
149
+
148
150
  /**
149
151
  * Whether to allocate a depth buffer or not.
150
152
  *
@@ -177,7 +179,8 @@ class RenderTarget extends EventDispatcher {
177
179
  */
178
180
  this.resolveStencilBuffer = options.resolveStencilBuffer;
179
181
 
180
- this._depthTexture = options.depthTexture;
182
+ this._depthTexture = null;
183
+ this.depthTexture = options.depthTexture;
181
184
 
182
185
  /**
183
186
  * The number of MSAA samples.
@@ -189,6 +192,46 @@ class RenderTarget extends EventDispatcher {
189
192
  */
190
193
  this.samples = options.samples;
191
194
 
195
+ /**
196
+ * Whether to this target is used in multiview rendering.
197
+ *
198
+ * @type {boolean}
199
+ * @default false
200
+ */
201
+ this.multiview = options.multiview;
202
+
203
+ }
204
+
205
+ _setTextureOptions( options = {} ) {
206
+
207
+ const values = {
208
+ minFilter: LinearFilter,
209
+ generateMipmaps: false,
210
+ flipY: false,
211
+ internalFormat: null
212
+ };
213
+
214
+ if ( options.mapping !== undefined ) values.mapping = options.mapping;
215
+ if ( options.wrapS !== undefined ) values.wrapS = options.wrapS;
216
+ if ( options.wrapT !== undefined ) values.wrapT = options.wrapT;
217
+ if ( options.wrapR !== undefined ) values.wrapR = options.wrapR;
218
+ if ( options.magFilter !== undefined ) values.magFilter = options.magFilter;
219
+ if ( options.minFilter !== undefined ) values.minFilter = options.minFilter;
220
+ if ( options.format !== undefined ) values.format = options.format;
221
+ if ( options.type !== undefined ) values.type = options.type;
222
+ if ( options.anisotropy !== undefined ) values.anisotropy = options.anisotropy;
223
+ if ( options.colorSpace !== undefined ) values.colorSpace = options.colorSpace;
224
+ if ( options.flipY !== undefined ) values.flipY = options.flipY;
225
+ if ( options.generateMipmaps !== undefined ) values.generateMipmaps = options.generateMipmaps;
226
+ if ( options.internalFormat !== undefined ) values.internalFormat = options.internalFormat;
227
+
228
+ for ( let i = 0; i < this.textures.length; i ++ ) {
229
+
230
+ const texture = this.textures[ i ];
231
+ texture.setValues( values );
232
+
233
+ }
234
+
192
235
  }
193
236
 
194
237
  /**
@@ -251,6 +294,7 @@ class RenderTarget extends EventDispatcher {
251
294
  this.textures[ i ].image.width = width;
252
295
  this.textures[ i ].image.height = height;
253
296
  this.textures[ i ].image.depth = depth;
297
+ this.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;
254
298
 
255
299
  }
256
300
 
@@ -37,6 +37,7 @@ class RenderTarget3D extends RenderTarget {
37
37
  * @type {Data3DTexture}
38
38
  */
39
39
  this.texture = new Data3DTexture( null, width, height, depth );
40
+ this._setTextureOptions( options );
40
41
 
41
42
  this.texture.isRenderTargetTexture = true;
42
43
 
@@ -21,7 +21,7 @@ class Timer {
21
21
 
22
22
  this._previousTime = 0;
23
23
  this._currentTime = 0;
24
- this._startTime = now();
24
+ this._startTime = performance.now();
25
25
 
26
26
  this._delta = 0;
27
27
  this._elapsed = 0;
@@ -127,7 +127,7 @@ class Timer {
127
127
  */
128
128
  reset() {
129
129
 
130
- this._currentTime = now() - this._startTime;
130
+ this._currentTime = performance.now() - this._startTime;
131
131
 
132
132
  return this;
133
133
 
@@ -162,7 +162,7 @@ class Timer {
162
162
  } else {
163
163
 
164
164
  this._previousTime = this._currentTime;
165
- this._currentTime = ( timestamp !== undefined ? timestamp : now() ) - this._startTime;
165
+ this._currentTime = ( timestamp !== undefined ? timestamp : performance.now() ) - this._startTime;
166
166
 
167
167
  this._delta = ( this._currentTime - this._previousTime ) * this._timescale;
168
168
  this._elapsed += this._delta; // _elapsed is the accumulation of all previous deltas
@@ -175,46 +175,10 @@ class Timer {
175
175
 
176
176
  }
177
177
 
178
- /**
179
- * A special version of a timer with a fixed time delta value.
180
- * Can be useful for testing and debugging purposes.
181
- *
182
- * @augments Timer
183
- */
184
- class FixedTimer extends Timer {
185
-
186
- /**
187
- * Constructs a new timer.
188
- *
189
- * @param {number} [fps=60] - The fixed FPS of this timer.
190
- */
191
- constructor( fps = 60 ) {
192
-
193
- super();
194
- this._delta = ( 1 / fps ) * 1000;
195
-
196
- }
197
-
198
- update() {
199
-
200
- this._elapsed += ( this._delta * this._timescale ); // _elapsed is the accumulation of all previous deltas
201
-
202
- return this;
203
-
204
- }
205
-
206
- }
207
-
208
- function now() {
209
-
210
- return performance.now();
211
-
212
- }
213
-
214
178
  function handleVisibilityChange() {
215
179
 
216
180
  if ( this._document.hidden === false ) this.reset();
217
181
 
218
182
  }
219
183
 
220
- export { Timer, FixedTimer };
184
+ export { Timer };
@@ -347,6 +347,17 @@ class PMREMGenerator {
347
347
  renderer.toneMapping = NoToneMapping;
348
348
  renderer.autoClear = false;
349
349
 
350
+ // https://github.com/mrdoob/three.js/issues/31413#issuecomment-3095966812
351
+ const reversedDepthBuffer = renderer.state.buffers.depth.getReversed();
352
+
353
+ if ( reversedDepthBuffer ) {
354
+
355
+ renderer.setRenderTarget( cubeUVRenderTarget );
356
+ renderer.clearDepth();
357
+ renderer.setRenderTarget( null );
358
+
359
+ }
360
+
350
361
  const backgroundMaterial = new MeshBasicMaterial( {
351
362
  name: 'PMREM.Background',
352
363
  side: BackSide,
@@ -1,4 +1,4 @@
1
- import { AlphaFormat, LuminanceFormat, LuminanceAlphaFormat, 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 } 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, 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 } from '../constants.js';
2
2
 
3
3
  /**
4
4
  * Scales the texture as large as possible within its surface without cropping
@@ -106,10 +106,6 @@ function getByteLength( width, height, format, type ) {
106
106
  // https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml
107
107
  case AlphaFormat:
108
108
  return width * height;
109
- case LuminanceFormat:
110
- return width * height;
111
- case LuminanceAlphaFormat:
112
- return width * height * 2;
113
109
  case RedFormat:
114
110
  return ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;
115
111
  case RedIntegerFormat:
@@ -483,7 +483,7 @@ class Curve {
483
483
 
484
484
  const data = {
485
485
  metadata: {
486
- version: 4.6,
486
+ version: 4.7,
487
487
  type: 'Curve',
488
488
  generator: 'Curve.toJSON'
489
489
  }
@@ -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.