super-three 0.175.0 → 0.177.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 (477) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +7631 -6743
  3. package/build/three.core.js +7496 -6758
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +172 -22
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +14 -6
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +3948 -1678
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +3941 -1678
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +0 -1
  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 -0
  17. package/examples/jsm/capabilities/WebGPU.js +1 -0
  18. package/examples/jsm/controls/ArcballControls.js +14 -3
  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 +1 -0
  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 +18 -4
  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 +49 -35
  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 +12 -10
  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 +1 -0
  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 +7 -0
  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/lighting/TiledLighting.js +1 -0
  76. package/examples/jsm/lights/LightProbeGenerator.js +1 -0
  77. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
  78. package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
  79. package/examples/jsm/lines/Line2.js +1 -0
  80. package/examples/jsm/lines/LineGeometry.js +1 -0
  81. package/examples/jsm/lines/LineMaterial.js +4 -4
  82. package/examples/jsm/lines/LineSegments2.js +1 -0
  83. package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
  84. package/examples/jsm/lines/Wireframe.js +1 -0
  85. package/examples/jsm/lines/WireframeGeometry2.js +1 -0
  86. package/examples/jsm/lines/webgpu/Line2.js +1 -0
  87. package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
  88. package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
  89. package/examples/jsm/loaders/3DMLoader.js +1 -0
  90. package/examples/jsm/loaders/3MFLoader.js +1 -0
  91. package/examples/jsm/loaders/AMFLoader.js +1 -0
  92. package/examples/jsm/loaders/BVHLoader.js +1 -0
  93. package/examples/jsm/loaders/ColladaLoader.js +5 -4
  94. package/examples/jsm/loaders/DDSLoader.js +1 -0
  95. package/examples/jsm/loaders/DRACOLoader.js +2 -1
  96. package/examples/jsm/loaders/EXRLoader.js +1 -0
  97. package/examples/jsm/loaders/FBXLoader.js +24 -22
  98. package/examples/jsm/loaders/FontLoader.js +1 -0
  99. package/examples/jsm/loaders/GCodeLoader.js +1 -0
  100. package/examples/jsm/loaders/GLTFLoader.js +10 -82
  101. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
  102. package/examples/jsm/loaders/IESLoader.js +1 -0
  103. package/examples/jsm/loaders/KMZLoader.js +1 -0
  104. package/examples/jsm/loaders/KTX2Loader.js +67 -26
  105. package/examples/jsm/loaders/KTXLoader.js +1 -0
  106. package/examples/jsm/loaders/LDrawLoader.js +55 -3
  107. package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
  108. package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
  109. package/examples/jsm/loaders/LUTImageLoader.js +1 -0
  110. package/examples/jsm/loaders/LWOLoader.js +1 -13
  111. package/examples/jsm/loaders/LottieLoader.js +15 -0
  112. package/examples/jsm/loaders/MD2Loader.js +1 -0
  113. package/examples/jsm/loaders/MDDLoader.js +1 -0
  114. package/examples/jsm/loaders/MTLLoader.js +4 -3
  115. package/examples/jsm/loaders/MaterialXLoader.js +1 -0
  116. package/examples/jsm/loaders/NRRDLoader.js +1 -0
  117. package/examples/jsm/loaders/OBJLoader.js +1 -0
  118. package/examples/jsm/loaders/PCDLoader.js +122 -19
  119. package/examples/jsm/loaders/PDBLoader.js +1 -0
  120. package/examples/jsm/loaders/PLYLoader.js +1 -0
  121. package/examples/jsm/loaders/PVRLoader.js +1 -0
  122. package/examples/jsm/loaders/RGBELoader.js +1 -0
  123. package/examples/jsm/loaders/RGBMLoader.js +1 -0
  124. package/examples/jsm/loaders/STLLoader.js +1 -0
  125. package/examples/jsm/loaders/SVGLoader.js +1 -0
  126. package/examples/jsm/loaders/TDSLoader.js +1 -0
  127. package/examples/jsm/loaders/TGALoader.js +1 -0
  128. package/examples/jsm/loaders/TIFFLoader.js +1 -0
  129. package/examples/jsm/loaders/TTFLoader.js +1 -0
  130. package/examples/jsm/loaders/USDZLoader.js +1 -0
  131. package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
  132. package/examples/jsm/loaders/VOXLoader.js +1 -0
  133. package/examples/jsm/loaders/VRMLLoader.js +3 -2
  134. package/examples/jsm/loaders/VTKLoader.js +1 -0
  135. package/examples/jsm/loaders/XYZLoader.js +1 -0
  136. package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
  137. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
  138. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
  139. package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
  140. package/examples/jsm/math/Capsule.js +2 -0
  141. package/examples/jsm/math/ColorConverter.js +1 -0
  142. package/examples/jsm/math/ConvexHull.js +2 -0
  143. package/examples/jsm/math/ImprovedNoise.js +19 -14
  144. package/examples/jsm/math/Lut.js +2 -0
  145. package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
  146. package/examples/jsm/math/OBB.js +2 -0
  147. package/examples/jsm/math/Octree.js +20 -1
  148. package/examples/jsm/math/SimplexNoise.js +2 -0
  149. package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
  150. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  151. package/examples/jsm/misc/Gyroscope.js +1 -0
  152. package/examples/jsm/misc/MD2Character.js +2 -0
  153. package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
  154. package/examples/jsm/misc/MorphAnimMesh.js +1 -0
  155. package/examples/jsm/misc/MorphBlendMesh.js +1 -0
  156. package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
  157. package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
  158. package/examples/jsm/misc/RollerCoaster.js +5 -0
  159. package/examples/jsm/misc/Timer.js +2 -0
  160. package/examples/jsm/misc/TubePainter.js +1 -0
  161. package/examples/jsm/misc/Volume.js +2 -0
  162. package/examples/jsm/misc/VolumeSlice.js +1 -0
  163. package/examples/jsm/modifiers/CurveModifier.js +3 -0
  164. package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
  165. package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
  166. package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
  167. package/examples/jsm/modifiers/TessellateModifier.js +2 -0
  168. package/examples/jsm/objects/GroundedSkybox.js +1 -0
  169. package/examples/jsm/objects/Lensflare.js +3 -0
  170. package/examples/jsm/objects/LensflareMesh.js +1 -0
  171. package/examples/jsm/objects/MarchingCubes.js +2 -0
  172. package/examples/jsm/objects/Reflector.js +1 -0
  173. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  174. package/examples/jsm/objects/Refractor.js +1 -0
  175. package/examples/jsm/objects/ShadowMesh.js +1 -0
  176. package/examples/jsm/objects/Sky.js +2 -1
  177. package/examples/jsm/objects/SkyMesh.js +20 -17
  178. package/examples/jsm/objects/Water.js +1 -0
  179. package/examples/jsm/objects/Water2.js +1 -0
  180. package/examples/jsm/objects/Water2Mesh.js +3 -1
  181. package/examples/jsm/objects/WaterMesh.js +2 -1
  182. package/examples/jsm/physics/AmmoPhysics.js +1 -0
  183. package/examples/jsm/physics/JoltPhysics.js +1 -0
  184. package/examples/jsm/physics/RapierPhysics.js +58 -1
  185. package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
  186. package/examples/jsm/postprocessing/BloomPass.js +2 -1
  187. package/examples/jsm/postprocessing/BokehPass.js +2 -1
  188. package/examples/jsm/postprocessing/ClearPass.js +1 -0
  189. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
  190. package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
  191. package/examples/jsm/postprocessing/EffectComposer.js +5 -6
  192. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  193. package/examples/jsm/postprocessing/FilmPass.js +1 -0
  194. package/examples/jsm/postprocessing/GTAOPass.js +4 -3
  195. package/examples/jsm/postprocessing/GlitchPass.js +2 -1
  196. package/examples/jsm/postprocessing/HalftonePass.js +2 -1
  197. package/examples/jsm/postprocessing/LUTPass.js +1 -0
  198. package/examples/jsm/postprocessing/MaskPass.js +1 -0
  199. package/examples/jsm/postprocessing/OutlinePass.js +5 -2
  200. package/examples/jsm/postprocessing/OutputPass.js +1 -0
  201. package/examples/jsm/postprocessing/Pass.js +3 -1
  202. package/examples/jsm/postprocessing/RenderPass.js +1 -0
  203. package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
  204. package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
  205. package/examples/jsm/postprocessing/SAOPass.js +3 -2
  206. package/examples/jsm/postprocessing/SMAAPass.js +3 -2
  207. package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
  208. package/examples/jsm/postprocessing/SSAOPass.js +2 -1
  209. package/examples/jsm/postprocessing/SSRPass.js +4 -3
  210. package/examples/jsm/postprocessing/SavePass.js +2 -1
  211. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  212. package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
  213. package/examples/jsm/postprocessing/TexturePass.js +1 -0
  214. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
  215. package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
  216. package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
  217. package/examples/jsm/renderers/Projector.js +2 -0
  218. package/examples/jsm/renderers/SVGRenderer.js +3 -0
  219. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
  220. package/examples/jsm/shaders/AfterimageShader.js +4 -1
  221. package/examples/jsm/shaders/BasicShader.js +4 -1
  222. package/examples/jsm/shaders/BleachBypassShader.js +4 -1
  223. package/examples/jsm/shaders/BlendShader.js +4 -1
  224. package/examples/jsm/shaders/BokehShader.js +4 -1
  225. package/examples/jsm/shaders/BokehShader2.js +4 -1
  226. package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
  227. package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
  228. package/examples/jsm/shaders/ColorifyShader.js +4 -1
  229. package/examples/jsm/shaders/ConvolutionShader.js +4 -1
  230. package/examples/jsm/shaders/CopyShader.js +4 -1
  231. package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
  232. package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
  233. package/examples/jsm/shaders/DigitalGlitch.js +4 -1
  234. package/examples/jsm/shaders/DotScreenShader.js +4 -1
  235. package/examples/jsm/shaders/ExposureShader.js +4 -1
  236. package/examples/jsm/shaders/FXAAShader.js +4 -1
  237. package/examples/jsm/shaders/FilmShader.js +4 -1
  238. package/examples/jsm/shaders/FocusShader.js +4 -1
  239. package/examples/jsm/shaders/FreiChenShader.js +4 -1
  240. package/examples/jsm/shaders/GTAOShader.js +4 -1
  241. package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
  242. package/examples/jsm/shaders/GodRaysShader.js +4 -1
  243. package/examples/jsm/shaders/HalftoneShader.js +4 -1
  244. package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
  245. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
  246. package/examples/jsm/shaders/HueSaturationShader.js +4 -1
  247. package/examples/jsm/shaders/KaleidoShader.js +4 -1
  248. package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
  249. package/examples/jsm/shaders/LuminosityShader.js +4 -1
  250. package/examples/jsm/shaders/MirrorShader.js +4 -1
  251. package/examples/jsm/shaders/NormalMapShader.js +4 -1
  252. package/examples/jsm/shaders/OutputShader.js +4 -1
  253. package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
  254. package/examples/jsm/shaders/RGBShiftShader.js +4 -1
  255. package/examples/jsm/shaders/SAOShader.js +4 -1
  256. package/examples/jsm/shaders/SMAAShader.js +1 -0
  257. package/examples/jsm/shaders/SSAOShader.js +4 -1
  258. package/examples/jsm/shaders/SSRShader.js +1 -0
  259. package/examples/jsm/shaders/SepiaShader.js +4 -1
  260. package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
  261. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
  262. package/examples/jsm/shaders/TechnicolorShader.js +4 -1
  263. package/examples/jsm/shaders/ToonShader.js +2 -1
  264. package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
  265. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +4 -1
  266. package/examples/jsm/shaders/VelocityShader.js +4 -1
  267. package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
  268. package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
  269. package/examples/jsm/shaders/VignetteShader.js +4 -1
  270. package/examples/jsm/shaders/VolumeShader.js +5 -2
  271. package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
  272. package/examples/jsm/textures/FlakesTexture.js +2 -0
  273. package/examples/jsm/transpiler/GLSLDecoder.js +1 -2
  274. package/examples/jsm/transpiler/TSLEncoder.js +52 -8
  275. package/examples/jsm/transpiler/Transpiler.js +2 -0
  276. package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
  277. package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
  278. package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
  279. package/examples/jsm/tsl/display/BloomNode.js +1 -0
  280. package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
  281. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
  282. package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
  283. package/examples/jsm/tsl/display/FXAANode.js +3 -2
  284. package/examples/jsm/tsl/display/FilmNode.js +1 -0
  285. package/examples/jsm/tsl/display/GTAONode.js +1 -0
  286. package/examples/jsm/tsl/display/GaussianBlurNode.js +2 -27
  287. package/examples/jsm/tsl/display/LensflareNode.js +1 -0
  288. package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
  289. package/examples/jsm/tsl/display/OutlineNode.js +1 -0
  290. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
  291. package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
  292. package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
  293. package/examples/jsm/tsl/display/SMAANode.js +9 -8
  294. package/examples/jsm/tsl/display/SSAAPassNode.js +3 -2
  295. package/examples/jsm/tsl/display/SSRNode.js +1 -0
  296. package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
  297. package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
  298. package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
  299. package/examples/jsm/tsl/display/TRAAPassNode.js +5 -4
  300. package/examples/jsm/tsl/display/TransitionNode.js +1 -0
  301. package/examples/jsm/tsl/display/hashBlur.js +28 -6
  302. package/examples/jsm/tsl/lighting/TiledLightsNode.js +4 -3
  303. package/examples/jsm/tsl/math/Bayer.js +4 -1
  304. package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  305. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  306. package/examples/jsm/tsl/utils/Raymarching.js +6 -3
  307. package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
  308. package/examples/jsm/utils/CameraUtils.js +4 -1
  309. package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
  310. package/examples/jsm/utils/GeometryUtils.js +4 -1
  311. package/examples/jsm/utils/LDrawUtils.js +2 -0
  312. package/examples/jsm/utils/SceneOptimizer.js +2 -0
  313. package/examples/jsm/utils/SceneUtils.js +4 -1
  314. package/examples/jsm/utils/ShadowMapViewer.js +2 -0
  315. package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
  316. package/examples/jsm/utils/SkeletonUtils.js +4 -1
  317. package/examples/jsm/utils/SortUtils.js +4 -1
  318. package/examples/jsm/utils/UVsDebug.js +4 -1
  319. package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
  320. package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
  321. package/examples/jsm/utils/WorkerPool.js +2 -0
  322. package/examples/jsm/webxr/ARButton.js +1 -0
  323. package/examples/jsm/webxr/OculusHandModel.js +1 -0
  324. package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
  325. package/examples/jsm/webxr/Text2D.js +4 -1
  326. package/examples/jsm/webxr/VRButton.js +1 -0
  327. package/examples/jsm/webxr/XRButton.js +1 -0
  328. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
  329. package/examples/jsm/webxr/XREstimatedLight.js +1 -0
  330. package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
  331. package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
  332. package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
  333. package/examples/jsm/webxr/XRPlanes.js +1 -0
  334. package/package.json +6 -4
  335. package/src/Three.Core.js +1 -1
  336. package/src/Three.TSL.js +13 -5
  337. package/src/Three.WebGPU.Nodes.js +1 -0
  338. package/src/Three.WebGPU.js +1 -0
  339. package/src/audio/AudioListener.js +13 -10
  340. package/src/cameras/ArrayCamera.js +9 -1
  341. package/src/constants.js +47 -20
  342. package/src/core/BufferAttribute.js +1 -1
  343. package/src/core/BufferGeometry.js +2 -5
  344. package/src/core/Object3D.js +22 -21
  345. package/src/core/RenderTarget.js +65 -21
  346. package/src/core/RenderTarget3D.js +1 -0
  347. package/src/extras/TextureUtils.js +1 -5
  348. package/src/extras/core/Curve.js +1 -1
  349. package/src/geometries/CapsuleGeometry.js +167 -17
  350. package/src/geometries/ExtrudeGeometry.js +39 -29
  351. package/src/helpers/ArrowHelper.js +2 -2
  352. package/src/helpers/SkeletonHelper.js +1 -1
  353. package/src/lights/LightShadow.js +14 -0
  354. package/src/lights/SpotLightShadow.js +9 -1
  355. package/src/lights/webgpu/ProjectorLight.js +46 -0
  356. package/src/loaders/BufferGeometryLoader.js +1 -10
  357. package/src/loaders/ImageBitmapLoader.js +21 -5
  358. package/src/loaders/ObjectLoader.js +44 -16
  359. package/src/loaders/nodes/NodeObjectLoader.js +2 -2
  360. package/src/materials/Material.js +1 -7
  361. package/src/materials/nodes/NodeMaterial.js +81 -18
  362. package/src/materials/nodes/manager/NodeMaterialObserver.js +20 -2
  363. package/src/math/Box3.js +28 -0
  364. package/src/math/Color.js +7 -7
  365. package/src/math/ColorManagement.js +22 -3
  366. package/src/math/FrustumArray.js +253 -0
  367. package/src/math/Ray.js +2 -0
  368. package/src/math/Sphere.js +28 -0
  369. package/src/nodes/Nodes.js +1 -0
  370. package/src/nodes/TSL.js +1 -0
  371. package/src/nodes/accessors/Bitangent.js +31 -9
  372. package/src/nodes/accessors/Camera.js +31 -4
  373. package/src/nodes/accessors/CubeTextureNode.js +50 -2
  374. package/src/nodes/accessors/InstanceNode.js +5 -4
  375. package/src/nodes/accessors/Lights.js +2 -2
  376. package/src/nodes/accessors/MaterialNode.js +4 -0
  377. package/src/nodes/accessors/ModelNode.js +1 -1
  378. package/src/nodes/accessors/Normal.js +26 -6
  379. package/src/nodes/accessors/Object3DNode.js +6 -7
  380. package/src/nodes/accessors/Position.js +14 -4
  381. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  382. package/src/nodes/accessors/ReferenceNode.js +1 -1
  383. package/src/nodes/accessors/SkinningNode.js +3 -2
  384. package/src/nodes/accessors/StorageBufferNode.js +25 -0
  385. package/src/nodes/accessors/StorageTextureNode.js +14 -3
  386. package/src/nodes/accessors/TextureNode.js +59 -8
  387. package/src/nodes/accessors/VelocityNode.js +1 -0
  388. package/src/nodes/accessors/VertexColorNode.js +4 -4
  389. package/src/nodes/code/CodeNode.js +8 -11
  390. package/src/nodes/core/AssignNode.js +27 -5
  391. package/src/nodes/core/AttributeNode.js +2 -2
  392. package/src/nodes/core/CacheNode.js +14 -0
  393. package/src/nodes/core/ContextNode.js +7 -3
  394. package/src/nodes/core/Node.js +68 -19
  395. package/src/nodes/core/NodeBuilder.js +100 -12
  396. package/src/nodes/core/NodeUtils.js +42 -0
  397. package/src/nodes/core/NodeVarying.js +19 -1
  398. package/src/nodes/core/PropertyNode.js +8 -12
  399. package/src/nodes/core/StackNode.js +127 -2
  400. package/src/nodes/core/StructTypeNode.js +26 -4
  401. package/src/nodes/core/VarNode.js +11 -2
  402. package/src/nodes/core/VaryingNode.js +40 -21
  403. package/src/nodes/display/BlendModes.js +42 -1
  404. package/src/nodes/display/ColorSpaceNode.js +4 -27
  405. package/src/nodes/display/PassNode.js +8 -11
  406. package/src/nodes/functions/ShadowMaskModel.js +5 -1
  407. package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
  408. package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
  409. package/src/nodes/gpgpu/BarrierNode.js +3 -3
  410. package/src/nodes/gpgpu/ComputeNode.js +1 -1
  411. package/src/nodes/lighting/AnalyticLightNode.js +7 -13
  412. package/src/nodes/lighting/HemisphereLightNode.js +2 -2
  413. package/src/nodes/lighting/IESSpotLightNode.js +2 -1
  414. package/src/nodes/lighting/LightsNode.js +25 -7
  415. package/src/nodes/lighting/ProjectorLightNode.js +78 -0
  416. package/src/nodes/lighting/ShadowBaseNode.js +1 -12
  417. package/src/nodes/lighting/ShadowFilterNode.js +274 -0
  418. package/src/nodes/lighting/ShadowNode.js +172 -240
  419. package/src/nodes/lighting/SpotLightNode.js +44 -7
  420. package/src/nodes/materialx/lib/mx_noise.js +1 -1
  421. package/src/nodes/math/MathNode.js +56 -20
  422. package/src/nodes/math/OperatorNode.js +109 -82
  423. package/src/nodes/shapes/Shapes.js +5 -4
  424. package/src/nodes/tsl/TSLCore.js +140 -49
  425. package/src/nodes/utils/DebugNode.js +15 -3
  426. package/src/nodes/utils/Discard.js +2 -2
  427. package/src/nodes/utils/LoopNode.js +64 -17
  428. package/src/nodes/utils/ReflectorNode.js +67 -4
  429. package/src/objects/BatchedMesh.js +16 -4
  430. package/src/objects/Mesh.js +9 -0
  431. package/src/objects/Skeleton.js +1 -1
  432. package/src/objects/Sprite.js +9 -0
  433. package/src/renderers/WebGL3DRenderTarget.js +1 -0
  434. package/src/renderers/WebGLArrayRenderTarget.js +1 -0
  435. package/src/renderers/WebGLCubeRenderTarget.js +2 -4
  436. package/src/renderers/WebGLRenderer.js +21 -10
  437. package/src/renderers/common/Animation.js +2 -2
  438. package/src/renderers/common/Background.js +11 -0
  439. package/src/renderers/common/RenderList.js +0 -4
  440. package/src/renderers/common/RenderObject.js +12 -1
  441. package/src/renderers/common/Renderer.js +116 -8
  442. package/src/renderers/common/Textures.js +15 -21
  443. package/src/renderers/common/TimestampQueryPool.js +1 -0
  444. package/src/renderers/common/Uniform.js +1 -1
  445. package/src/renderers/common/UniformsGroup.js +14 -18
  446. package/src/renderers/common/XRManager.js +154 -25
  447. package/src/renderers/common/extras/PMREMGenerator.js +29 -22
  448. package/src/renderers/common/nodes/Nodes.js +13 -3
  449. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  450. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  451. package/src/renderers/webgl/WebGLShadowMap.js +3 -2
  452. package/src/renderers/webgl/WebGLTextures.js +143 -4
  453. package/src/renderers/webgl/WebGLUtils.js +1 -3
  454. package/src/renderers/webgl-fallback/WebGLBackend.js +170 -34
  455. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -7
  456. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
  457. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +42 -29
  458. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
  459. package/src/renderers/webgpu/WebGPUBackend.js +442 -127
  460. package/src/renderers/webgpu/WebGPURenderer.js +7 -0
  461. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
  462. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
  463. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +75 -27
  464. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
  465. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +3 -1
  466. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -5
  467. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  468. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +34 -4
  469. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +44 -49
  470. package/src/renderers/webxr/WebXRController.js +1 -1
  471. package/src/renderers/webxr/WebXRManager.js +2 -1
  472. package/src/textures/DepthTexture.js +6 -10
  473. package/src/textures/Source.js +22 -0
  474. package/src/textures/Texture.js +118 -1
  475. package/src/textures/VideoTexture.js +1 -1
  476. package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
  477. package/src/core/RenderTargetArray.js +0 -40
package/src/Three.TSL.js CHANGED
@@ -13,6 +13,7 @@ export const F_Schlick = TSL.F_Schlick;
13
13
  export const Fn = TSL.Fn;
14
14
  export const INFINITY = TSL.INFINITY;
15
15
  export const If = TSL.If;
16
+ export const Switch = TSL.Switch;
16
17
  export const Loop = TSL.Loop;
17
18
  export const NodeShaderStage = TSL.NodeShaderStage;
18
19
  export const NodeType = TSL.NodeType;
@@ -130,6 +131,8 @@ export const dFdx = TSL.dFdx;
130
131
  export const dFdy = TSL.dFdy;
131
132
  export const dashSize = TSL.dashSize;
132
133
  export const debug = TSL.debug;
134
+ export const decrement = TSL.decrement;
135
+ export const decrementBefore = TSL.decrementBefore;
133
136
  export const defaultBuildStages = TSL.defaultBuildStages;
134
137
  export const defaultShaderStages = TSL.defaultShaderStages;
135
138
  export const defined = TSL.defined;
@@ -183,6 +186,8 @@ export const getScreenPosition = TSL.getScreenPosition;
183
186
  export const getShIrradianceAt = TSL.getShIrradianceAt;
184
187
  export const getTextureIndex = TSL.getTextureIndex;
185
188
  export const getViewPosition = TSL.getViewPosition;
189
+ export const getShadowMaterial = TSL.getShadowMaterial;
190
+ export const getShadowRenderObjectFunction = TSL.getShadowRenderObjectFunction;
186
191
  export const glsl = TSL.glsl;
187
192
  export const glslFn = TSL.glslFn;
188
193
  export const grayscale = TSL.grayscale;
@@ -192,6 +197,8 @@ export const hash = TSL.hash;
192
197
  export const highpModelNormalViewMatrix = TSL.highpModelNormalViewMatrix;
193
198
  export const highpModelViewMatrix = TSL.highpModelViewMatrix;
194
199
  export const hue = TSL.hue;
200
+ export const increment = TSL.increment;
201
+ export const incrementBefore = TSL.incrementBefore;
195
202
  export const instance = TSL.instance;
196
203
  export const instanceIndex = TSL.instanceIndex;
197
204
  export const instancedArray = TSL.instancedArray;
@@ -217,6 +224,7 @@ export const lengthSq = TSL.lengthSq;
217
224
  export const lessThan = TSL.lessThan;
218
225
  export const lessThanEqual = TSL.lessThanEqual;
219
226
  export const lightPosition = TSL.lightPosition;
227
+ export const lightShadowMatrix = TSL.lightShadowMatrix;
220
228
  export const lightTargetDirection = TSL.lightTargetDirection;
221
229
  export const lightTargetPosition = TSL.lightTargetPosition;
222
230
  export const lightViewPosition = TSL.lightViewPosition;
@@ -319,6 +327,7 @@ export const mx_transform_uv = TSL.mx_transform_uv;
319
327
  export const mx_worley_noise_float = TSL.mx_worley_noise_float;
320
328
  export const mx_worley_noise_vec2 = TSL.mx_worley_noise_vec2;
321
329
  export const mx_worley_noise_vec3 = TSL.mx_worley_noise_vec3;
330
+ export const namespace = TSL.namespace;
322
331
  export const negate = TSL.negate;
323
332
  export const neutralToneMapping = TSL.neutralToneMapping;
324
333
  export const nodeArray = TSL.nodeArray;
@@ -377,6 +386,7 @@ export const pow = TSL.pow;
377
386
  export const pow2 = TSL.pow2;
378
387
  export const pow3 = TSL.pow3;
379
388
  export const pow4 = TSL.pow4;
389
+ export const premult = TSL.premult;
380
390
  export const property = TSL.property;
381
391
  export const radians = TSL.radians;
382
392
  export const rand = TSL.rand;
@@ -469,13 +479,10 @@ export const textureLoad = TSL.textureLoad;
469
479
  export const textureSize = TSL.textureSize;
470
480
  export const textureStore = TSL.textureStore;
471
481
  export const thickness = TSL.thickness;
472
- export const threshold = TSL.threshold;
473
482
  export const time = TSL.time;
474
483
  export const timerDelta = TSL.timerDelta;
475
484
  export const timerGlobal = TSL.timerGlobal;
476
485
  export const timerLocal = TSL.timerLocal;
477
- export const toOutputColorSpace = TSL.toOutputColorSpace;
478
- export const toWorkingColorSpace = TSL.toWorkingColorSpace;
479
486
  export const toneMapping = TSL.toneMapping;
480
487
  export const toneMappingExposure = TSL.toneMappingExposure;
481
488
  export const toonOutlinePass = TSL.toonOutlinePass;
@@ -492,8 +499,6 @@ export const transformedTangentView = TSL.transformedTangentView;
492
499
  export const transformedTangentWorld = TSL.transformedTangentWorld;
493
500
  export const transmission = TSL.transmission;
494
501
  export const transpose = TSL.transpose;
495
- export const tri = TSL.tri;
496
- export const tri3 = TSL.tri3;
497
502
  export const triNoise3D = TSL.triNoise3D;
498
503
  export const triplanarTexture = TSL.triplanarTexture;
499
504
  export const triplanarTextures = TSL.triplanarTextures;
@@ -501,9 +506,12 @@ export const trunc = TSL.trunc;
501
506
  export const tslFn = TSL.tslFn;
502
507
  export const uint = TSL.uint;
503
508
  export const uniform = TSL.uniform;
509
+ export const uniformCubeTexture = TSL.uniformCubeTexture;
504
510
  export const uniformArray = TSL.uniformArray;
505
511
  export const uniformGroup = TSL.uniformGroup;
512
+ export const uniformTexture = TSL.uniformTexture;
506
513
  export const uniforms = TSL.uniforms;
514
+ export const unpremult = TSL.unpremult;
507
515
  export const userData = TSL.userData;
508
516
  export const uv = TSL.uv;
509
517
  export const uvec2 = TSL.uvec2;
@@ -14,6 +14,7 @@ export { default as StorageBufferAttribute } from './renderers/common/StorageBuf
14
14
  export { default as StorageInstancedBufferAttribute } from './renderers/common/StorageInstancedBufferAttribute.js';
15
15
  export { default as IndirectStorageBufferAttribute } from './renderers/common/IndirectStorageBufferAttribute.js';
16
16
  export { default as IESSpotLight } from './lights/webgpu/IESSpotLight.js';
17
+ export { default as ProjectorLight } from './lights/webgpu/ProjectorLight.js';
17
18
  export { default as NodeLoader } from './loaders/nodes/NodeLoader.js';
18
19
  export { default as NodeObjectLoader } from './loaders/nodes/NodeObjectLoader.js';
19
20
  export { default as NodeMaterialLoader } from './loaders/nodes/NodeMaterialLoader.js';
@@ -14,6 +14,7 @@ export { default as StorageBufferAttribute } from './renderers/common/StorageBuf
14
14
  export { default as StorageInstancedBufferAttribute } from './renderers/common/StorageInstancedBufferAttribute.js';
15
15
  export { default as IndirectStorageBufferAttribute } from './renderers/common/IndirectStorageBufferAttribute.js';
16
16
  export { default as IESSpotLight } from './lights/webgpu/IESSpotLight.js';
17
+ export { default as ProjectorLight } from './lights/webgpu/ProjectorLight.js';
17
18
  export { default as NodeLoader } from './loaders/nodes/NodeLoader.js';
18
19
  export { default as NodeObjectLoader } from './loaders/nodes/NodeObjectLoader.js';
19
20
  export { default as NodeMaterialLoader } from './loaders/nodes/NodeMaterialLoader.js';
@@ -7,7 +7,9 @@ import { AudioContext } from './AudioContext.js';
7
7
  const _position = /*@__PURE__*/ new Vector3();
8
8
  const _quaternion = /*@__PURE__*/ new Quaternion();
9
9
  const _scale = /*@__PURE__*/ new Vector3();
10
- const _orientation = /*@__PURE__*/ new Vector3();
10
+
11
+ const _forward = /*@__PURE__*/ new Vector3();
12
+ const _up = /*@__PURE__*/ new Vector3();
11
13
 
12
14
  /**
13
15
  * The class represents a virtual listener of the all positional and non-positional audio effects
@@ -175,13 +177,14 @@ class AudioListener extends Object3D {
175
177
  super.updateMatrixWorld( force );
176
178
 
177
179
  const listener = this.context.listener;
178
- const up = this.up;
179
180
 
180
181
  this.timeDelta = this._clock.getDelta();
181
182
 
182
183
  this.matrixWorld.decompose( _position, _quaternion, _scale );
183
184
 
184
- _orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion );
185
+ // the initial forward and up directions must be orthogonal
186
+ _forward.set( 0, 0, - 1 ).applyQuaternion( _quaternion );
187
+ _up.set( 0, 1, 0 ).applyQuaternion( _quaternion );
185
188
 
186
189
  if ( listener.positionX ) {
187
190
 
@@ -192,17 +195,17 @@ class AudioListener extends Object3D {
192
195
  listener.positionX.linearRampToValueAtTime( _position.x, endTime );
193
196
  listener.positionY.linearRampToValueAtTime( _position.y, endTime );
194
197
  listener.positionZ.linearRampToValueAtTime( _position.z, endTime );
195
- listener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );
196
- listener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );
197
- listener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );
198
- listener.upX.linearRampToValueAtTime( up.x, endTime );
199
- listener.upY.linearRampToValueAtTime( up.y, endTime );
200
- listener.upZ.linearRampToValueAtTime( up.z, endTime );
198
+ listener.forwardX.linearRampToValueAtTime( _forward.x, endTime );
199
+ listener.forwardY.linearRampToValueAtTime( _forward.y, endTime );
200
+ listener.forwardZ.linearRampToValueAtTime( _forward.z, endTime );
201
+ listener.upX.linearRampToValueAtTime( _up.x, endTime );
202
+ listener.upY.linearRampToValueAtTime( _up.y, endTime );
203
+ listener.upZ.linearRampToValueAtTime( _up.z, endTime );
201
204
 
202
205
  } else {
203
206
 
204
207
  listener.setPosition( _position.x, _position.y, _position.z );
205
- listener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );
208
+ listener.setOrientation( _forward.x, _forward.y, _forward.z, _up.x, _up.y, _up.z );
206
209
 
207
210
  }
208
211
 
@@ -31,13 +31,21 @@ class ArrayCamera extends PerspectiveCamera {
31
31
  */
32
32
  this.isArrayCamera = true;
33
33
 
34
+ /**
35
+ * Whether this camera is used with multiview rendering or not.
36
+ *
37
+ * @type {boolean}
38
+ * @readonly
39
+ * @default false
40
+ */
41
+ this.isMultiViewCamera = false;
42
+
34
43
  /**
35
44
  * An array of perspective sub cameras.
36
45
  *
37
46
  * @type {Array<PerspectiveCamera>}
38
47
  */
39
48
  this.cameras = array;
40
- this.index = 0;
41
49
 
42
50
  }
43
51
 
package/src/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- export const REVISION = '175';
1
+ export const REVISION = '177';
2
2
 
3
3
  /**
4
4
  * Represents mouse buttons and interaction types in context of controls.
@@ -745,25 +745,6 @@ export const RGBFormat = 1022;
745
745
  */
746
746
  export const RGBAFormat = 1023;
747
747
 
748
- /**
749
- * reads each element as a single luminance component. This is then converted to a floating point,
750
- * clamped to the range `[0,1]`, and then assembled into an RGBA element by placing the luminance value
751
- * in the red, green and blue channels, and attaching 1.0 to the alpha channel.
752
- *
753
- * @type {number}
754
- * @constant
755
- */
756
- export const LuminanceFormat = 1024;
757
-
758
- /**
759
- * Reads each element as a luminance/alpha double. The same process occurs as for the `LuminanceFormat`,
760
- * except that the alpha channel may have values other than `1.0`.
761
- *
762
- * @type {number}
763
- * @constant
764
- */
765
- export const LuminanceAlphaFormat = 1025;
766
-
767
748
  /**
768
749
  * Reads each element as a single depth value, converts it to floating point, and clamps to the range `[0,1]`.
769
750
  *
@@ -1609,6 +1590,32 @@ export const TimestampQuery = {
1609
1590
  RENDER: 'render'
1610
1591
  };
1611
1592
 
1593
+ /**
1594
+ * Represents mouse buttons and interaction types in context of controls.
1595
+ *
1596
+ * @type {ConstantsInterpolationSamplingType}
1597
+ * @constant
1598
+ */
1599
+ export const InterpolationSamplingType = {
1600
+ PERSPECTIVE: 'perspective',
1601
+ LINEAR: 'linear',
1602
+ FLAT: 'flat'
1603
+ };
1604
+
1605
+ /**
1606
+ * Represents the different interpolation sampling modes.
1607
+ *
1608
+ * @type {ConstantsInterpolationSamplingMode}
1609
+ * @constant
1610
+ */
1611
+ export const InterpolationSamplingMode = {
1612
+ NORMAL: 'normal',
1613
+ CENTROID: 'centroid',
1614
+ SAMPLE: 'sample',
1615
+ FLAT_FIRST: 'flat first',
1616
+ FLAT_EITHER: 'flat either'
1617
+ };
1618
+
1612
1619
  /**
1613
1620
  * This type represents mouse buttons and interaction types in context of controls.
1614
1621
  *
@@ -1638,3 +1645,23 @@ export const TimestampQuery = {
1638
1645
  * @property {string} COMPUTE - A `compute` timestamp query.
1639
1646
  * @property {string} RENDER - A `render` timestamp query.
1640
1647
  **/
1648
+
1649
+ /**
1650
+ * Represents the different interpolation sampling types.
1651
+ *
1652
+ * @typedef {Object} ConstantsInterpolationSamplingType
1653
+ * @property {string} PERSPECTIVE - Perspective-correct interpolation.
1654
+ * @property {string} LINEAR - Linear interpolation.
1655
+ * @property {string} FLAT - Flat interpolation.
1656
+ */
1657
+
1658
+ /**
1659
+ * Represents the different interpolation sampling modes.
1660
+ *
1661
+ * @typedef {Object} ConstantsInterpolationSamplingMode
1662
+ * @property {string} NORMAL - Normal sampling mode.
1663
+ * @property {string} CENTROID - Centroid sampling mode.
1664
+ * @property {string} SAMPLE - Sample-specific sampling mode.
1665
+ * @property {string} FLAT_FIRST - Flat interpolation using the first vertex.
1666
+ * @property {string} FLAT_EITHER - Flat interpolation using either vertex.
1667
+ */
@@ -841,7 +841,7 @@ 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
844
+ * This class automatically converts to and from FP16 since `Float16Array` is not
845
845
  * natively supported in JavaScript.
846
846
  *
847
847
  * @augments BufferAttribute
@@ -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
 
@@ -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
 
@@ -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
  }