@gnsx/three 0.184.19 → 0.185.2

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 (367) hide show
  1. package/build/three.cjs +1667 -1189
  2. package/build/three.core.js +1289 -871
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +157 -97
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +11 -4
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +7542 -3371
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +7542 -3370
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/jsm/Addons.js +3 -0
  13. package/examples/jsm/controls/ArcballControls.js +6 -2
  14. package/examples/jsm/controls/FirstPersonControls.js +79 -42
  15. package/examples/jsm/controls/TransformControls.js +68 -15
  16. package/examples/jsm/csm/CSMFrustum.js +31 -6
  17. package/examples/jsm/csm/CSMShadowNode.js +4 -1
  18. package/examples/jsm/effects/AsciiEffect.js +14 -1
  19. package/examples/jsm/exporters/DRACOExporter.js +27 -6
  20. package/examples/jsm/exporters/GLTFExporter.js +114 -12
  21. package/examples/jsm/exporters/PLYExporter.js +286 -73
  22. package/examples/jsm/exporters/USDZExporter.js +347 -112
  23. package/examples/jsm/generators/CityGenerator.js +346 -0
  24. package/examples/jsm/generators/ForestGenerator.js +347 -0
  25. package/examples/jsm/generators/TerrainGenerator.js +504 -0
  26. package/examples/jsm/generators/TreeGenerator.js +377 -0
  27. package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
  28. package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
  29. package/examples/jsm/geometries/LoftGeometry.js +355 -0
  30. package/examples/jsm/helpers/LightProbeGridHelper.js +1 -1
  31. package/examples/jsm/helpers/LightProbeHelper.js +5 -4
  32. package/examples/jsm/helpers/ViewHelper.js +16 -6
  33. package/examples/jsm/inspector/Inspector.js +57 -64
  34. package/examples/jsm/inspector/RendererInspector.js +152 -36
  35. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +1 -1
  36. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +1 -1
  37. package/examples/jsm/inspector/tabs/Console.js +200 -18
  38. package/examples/jsm/inspector/tabs/Memory.js +8 -0
  39. package/examples/jsm/inspector/tabs/Parameters.js +64 -4
  40. package/examples/jsm/inspector/tabs/Performance.js +21 -6
  41. package/examples/jsm/inspector/tabs/Settings.js +51 -9
  42. package/examples/jsm/inspector/tabs/Timeline.js +178 -93
  43. package/examples/jsm/inspector/tabs/Viewer.js +628 -16
  44. package/examples/jsm/inspector/ui/Graph.js +162 -25
  45. package/examples/jsm/inspector/ui/Item.js +92 -13
  46. package/examples/jsm/inspector/ui/List.js +1 -1
  47. package/examples/jsm/inspector/ui/Profiler.js +90 -45
  48. package/examples/jsm/inspector/ui/Style.js +1788 -1401
  49. package/examples/jsm/inspector/ui/Tab.js +5 -3
  50. package/examples/jsm/inspector/ui/Values.js +71 -6
  51. package/examples/jsm/inspector/ui/utils.js +130 -10
  52. package/examples/jsm/libs/basis/README.md +0 -1
  53. package/examples/jsm/libs/demuxer_mp4.js +3 -3
  54. package/examples/jsm/libs/draco/README.md +0 -1
  55. package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
  56. package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
  57. package/examples/jsm/libs/mikktspace.module.js +34 -9
  58. package/examples/jsm/lighting/ClusteredLighting.js +55 -0
  59. package/examples/jsm/lighting/LightProbeGrid.js +124 -91
  60. package/examples/jsm/lines/LineMaterial.js +38 -15
  61. package/examples/jsm/lines/LineSegments2.js +8 -0
  62. package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
  63. package/examples/jsm/loaders/3DMLoader.js +1 -1
  64. package/examples/jsm/loaders/DRACOLoader.js +46 -13
  65. package/examples/jsm/loaders/EXRLoader.js +27 -55
  66. package/examples/jsm/loaders/HDRLoader.js +6 -28
  67. package/examples/jsm/loaders/KTX2Loader.js +31 -12
  68. package/examples/jsm/loaders/LDrawLoader.js +8 -8
  69. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  70. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  71. package/examples/jsm/loaders/LWOLoader.js +4 -0
  72. package/examples/jsm/loaders/LottieLoader.js +1 -1
  73. package/examples/jsm/loaders/MaterialXLoader.js +31 -9
  74. package/examples/jsm/loaders/NRRDLoader.js +3 -3
  75. package/examples/jsm/loaders/PCDLoader.js +7 -7
  76. package/examples/jsm/loaders/PLYLoader.js +218 -55
  77. package/examples/jsm/loaders/SVGLoader.js +547 -495
  78. package/examples/jsm/loaders/TTFLoader.js +1 -1
  79. package/examples/jsm/loaders/USDLoader.js +33 -9
  80. package/examples/jsm/loaders/VRMLLoader.js +1 -1
  81. package/examples/jsm/loaders/usd/USDAParser.js +93 -20
  82. package/examples/jsm/loaders/usd/USDCParser.js +1 -1
  83. package/examples/jsm/loaders/usd/USDComposer.js +52 -19
  84. package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
  85. package/examples/jsm/misc/Volume.js +2 -2
  86. package/examples/jsm/objects/GroundedSkybox.js +1 -1
  87. package/examples/jsm/objects/Reflector.js +2 -3
  88. package/examples/jsm/objects/Water2Mesh.js +1 -1
  89. package/examples/jsm/physics/AmmoPhysics.js +15 -8
  90. package/examples/jsm/physics/RapierPhysics.js +27 -2
  91. package/examples/jsm/shaders/VolumeShader.js +31 -44
  92. package/examples/jsm/transpiler/GLSLDecoder.js +6 -6
  93. package/examples/jsm/transpiler/Linker.js +1 -1
  94. package/examples/jsm/tsl/display/BloomNode.js +59 -19
  95. package/examples/jsm/tsl/display/DepthOfFieldNode.js +2 -2
  96. package/examples/jsm/tsl/display/FXAANode.js +11 -12
  97. package/examples/jsm/tsl/display/GTAONode.js +34 -13
  98. package/examples/jsm/tsl/display/GodraysNode.js +1 -1
  99. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
  100. package/examples/jsm/tsl/display/PixelationPassNode.js +2 -2
  101. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
  102. package/examples/jsm/tsl/display/SSAAPassNode.js +13 -25
  103. package/examples/jsm/tsl/display/SSGINode.js +89 -39
  104. package/examples/jsm/tsl/display/SSRNode.js +829 -132
  105. package/examples/jsm/tsl/display/SSSNode.js +2 -2
  106. package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
  107. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
  108. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +1 -1
  109. package/examples/jsm/tsl/math/curlNoise.js +107 -0
  110. package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
  111. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
  112. package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
  113. package/examples/jsm/tsl/utils/RNoise.js +51 -0
  114. package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
  115. package/examples/jsm/utils/BufferGeometryUtils.js +126 -59
  116. package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
  117. package/examples/jsm/utils/SceneOptimizer.js +1 -1
  118. package/examples/jsm/webxr/ARButton.js +1 -1
  119. package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
  120. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
  121. package/package.json +7 -7
  122. package/src/Three.TSL.js +10 -3
  123. package/src/Three.WebGPU.js +4 -0
  124. package/src/animation/AnimationAction.js +15 -11
  125. package/src/animation/AnimationClip.js +0 -139
  126. package/src/animation/KeyframeTrack.js +2 -2
  127. package/src/animation/PropertyBinding.js +2 -2
  128. package/src/cameras/Camera.js +2 -2
  129. package/src/cameras/StereoCamera.js +5 -2
  130. package/src/constants.js +1 -1
  131. package/src/core/BufferGeometry.js +29 -7
  132. package/src/core/Object3D.js +17 -7
  133. package/src/core/Raycaster.js +1 -1
  134. package/src/core/RenderTarget.js +15 -2
  135. package/src/extras/PMREMGenerator.js +6 -4
  136. package/src/extras/TextureUtils.js +1 -1
  137. package/src/extras/core/ShapePath.js +149 -160
  138. package/src/geometries/SphereGeometry.js +8 -3
  139. package/src/helpers/DirectionalLightHelper.js +2 -0
  140. package/src/helpers/HemisphereLightHelper.js +2 -0
  141. package/src/helpers/PointLightHelper.js +2 -0
  142. package/src/helpers/SpotLightHelper.js +1 -1
  143. package/src/loaders/DataTextureLoader.js +69 -38
  144. package/src/loaders/LoadingManager.js +5 -0
  145. package/src/loaders/MaterialLoader.js +36 -266
  146. package/src/loaders/ObjectLoader.js +3 -1
  147. package/src/materials/LineBasicMaterial.js +4 -0
  148. package/src/materials/Material.js +196 -1
  149. package/src/materials/MeshBasicMaterial.js +24 -0
  150. package/src/materials/MeshDepthMaterial.js +10 -0
  151. package/src/materials/MeshDistanceMaterial.js +10 -0
  152. package/src/materials/MeshLambertMaterial.js +40 -1
  153. package/src/materials/MeshMatcapMaterial.js +25 -1
  154. package/src/materials/MeshNormalMaterial.js +9 -1
  155. package/src/materials/MeshPhongMaterial.js +40 -1
  156. package/src/materials/MeshPhysicalMaterial.js +38 -0
  157. package/src/materials/MeshStandardMaterial.js +42 -1
  158. package/src/materials/MeshToonMaterial.js +34 -1
  159. package/src/materials/PointsMaterial.js +7 -0
  160. package/src/materials/ShaderMaterial.js +86 -0
  161. package/src/materials/SpriteMaterial.js +7 -0
  162. package/src/materials/nodes/Line2NodeMaterial.js +378 -322
  163. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  164. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  165. package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
  166. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +0 -30
  167. package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
  168. package/src/materials/nodes/MeshStandardNodeMaterial.js +0 -11
  169. package/src/materials/nodes/NodeMaterial.js +115 -74
  170. package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
  171. package/src/materials/nodes/manager/NodeMaterialObserver.js +49 -20
  172. package/src/math/Box3.js +5 -0
  173. package/src/math/FrustumArray.js +103 -133
  174. package/src/math/Interpolant.js +1 -1
  175. package/src/math/MathUtils.js +2 -2
  176. package/src/math/Matrix3.js +11 -0
  177. package/src/math/Matrix4.js +28 -3
  178. package/src/math/Vector2.js +2 -2
  179. package/src/math/Vector3.js +2 -2
  180. package/src/math/Vector4.js +2 -2
  181. package/src/math/interpolants/BezierInterpolant.js +4 -6
  182. package/src/nodes/Nodes.js +2 -5
  183. package/src/nodes/TSL.js +8 -6
  184. package/src/nodes/accessors/Arrays.js +4 -4
  185. package/src/nodes/accessors/Batch.js +108 -0
  186. package/src/nodes/accessors/Bitangent.js +2 -2
  187. package/src/nodes/accessors/BufferAttributeNode.js +13 -2
  188. package/src/nodes/accessors/Camera.js +7 -7
  189. package/src/nodes/accessors/ClippingNode.js +1 -1
  190. package/src/nodes/accessors/Instance.js +264 -0
  191. package/src/nodes/accessors/MaterialNode.js +18 -2
  192. package/src/nodes/accessors/MaterialProperties.js +4 -3
  193. package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
  194. package/src/nodes/accessors/Normal.js +13 -13
  195. package/src/nodes/accessors/Position.js +5 -1
  196. package/src/nodes/accessors/ReferenceNode.js +1 -0
  197. package/src/nodes/accessors/ReflectVector.js +3 -3
  198. package/src/nodes/accessors/SceneProperties.js +1 -1
  199. package/src/nodes/accessors/Skinning.js +263 -0
  200. package/src/nodes/accessors/StorageBufferNode.js +2 -2
  201. package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
  202. package/src/nodes/accessors/StorageTextureNode.js +39 -7
  203. package/src/nodes/accessors/Tangent.js +4 -4
  204. package/src/nodes/accessors/TextureNode.js +60 -5
  205. package/src/nodes/code/FunctionNode.js +2 -16
  206. package/src/nodes/core/MRTNode.js +7 -2
  207. package/src/nodes/core/Node.js +39 -2
  208. package/src/nodes/core/NodeBuilder.js +201 -41
  209. package/src/nodes/core/NodeUtils.js +13 -13
  210. package/src/nodes/core/OutputStructNode.js +1 -1
  211. package/src/nodes/core/OverrideContextNode.js +153 -0
  212. package/src/nodes/core/PropertyNode.js +51 -5
  213. package/src/nodes/core/StackNode.js +56 -34
  214. package/src/nodes/core/StructNode.js +4 -6
  215. package/src/nodes/core/StructTypeNode.js +6 -6
  216. package/src/nodes/core/VarNode.js +8 -0
  217. package/src/nodes/core/VaryingNode.js +12 -2
  218. package/src/nodes/display/BlendModes.js +1 -41
  219. package/src/nodes/display/BumpMapNode.js +6 -1
  220. package/src/nodes/display/ColorAdjustment.js +10 -9
  221. package/src/nodes/display/FrontFacingNode.js +38 -9
  222. package/src/nodes/display/NormalMapNode.js +2 -2
  223. package/src/nodes/display/PassNode.js +35 -43
  224. package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
  225. package/src/nodes/display/RenderOutputNode.js +12 -3
  226. package/src/nodes/functions/VolumetricLightingModel.js +40 -7
  227. package/src/nodes/gpgpu/WorkgroupInfoNode.js +1 -1
  228. package/src/nodes/lighting/EnvironmentNode.js +2 -2
  229. package/src/nodes/lighting/IESSpotLightNode.js +40 -2
  230. package/src/nodes/lighting/LightingContextNode.js +10 -2
  231. package/src/nodes/lighting/LightsNode.js +92 -37
  232. package/src/nodes/lighting/PointShadowNode.js +7 -1
  233. package/src/nodes/lighting/ShadowFilterNode.js +21 -52
  234. package/src/nodes/lighting/ShadowNode.js +34 -14
  235. package/src/nodes/materialx/lib/mx_noise.js +2 -2
  236. package/src/nodes/math/ConditionalNode.js +3 -3
  237. package/src/nodes/math/MathNode.js +39 -11
  238. package/src/nodes/math/OperatorNode.js +23 -23
  239. package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
  240. package/src/nodes/pmrem/PMREMNode.js +33 -2
  241. package/src/nodes/tsl/TSLCore.js +63 -18
  242. package/src/nodes/utils/EquirectUV.js +30 -5
  243. package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
  244. package/src/nodes/utils/Packing.js +35 -4
  245. package/src/nodes/utils/RTTNode.js +40 -24
  246. package/src/nodes/utils/ReflectorNode.js +1 -0
  247. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  248. package/src/objects/BatchedMesh.js +22 -14
  249. package/src/objects/InstancedMesh.js +0 -11
  250. package/src/objects/Skeleton.js +0 -9
  251. package/src/profiler/ProfilerService.js +185 -42
  252. package/src/renderers/WebGLRenderer.js +21 -15
  253. package/src/renderers/common/Backend.js +49 -5
  254. package/src/renderers/common/Bindings.js +114 -45
  255. package/src/renderers/common/Buffer.js +9 -0
  256. package/src/renderers/common/ClippingContext.js +10 -2
  257. package/src/renderers/common/Info.js +63 -22
  258. package/src/renderers/common/Lighting.js +53 -5
  259. package/src/renderers/common/RenderList.js +42 -4
  260. package/src/renderers/common/RenderObject.js +73 -13
  261. package/src/renderers/common/Renderer.js +282 -109
  262. package/src/renderers/common/Sampler.js +16 -48
  263. package/src/renderers/common/Textures.js +32 -5
  264. package/src/renderers/common/TimestampQueryPool.js +1 -1
  265. package/src/renderers/common/UniformsGroup.js +31 -9
  266. package/src/renderers/common/XRManager.js +340 -22
  267. package/src/renderers/common/extras/PMREMGenerator.js +15 -38
  268. package/src/renderers/common/nodes/NodeBuilderState.js +9 -1
  269. package/src/renderers/common/nodes/NodeLibrary.js +4 -4
  270. package/src/renderers/common/nodes/NodeManager.js +63 -14
  271. package/src/renderers/common/nodes/NodeUniformBuffer.js +13 -0
  272. package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
  273. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
  274. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
  275. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
  276. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
  277. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
  278. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +1 -1
  279. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
  280. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
  281. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +1 -1
  282. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  283. package/src/renderers/shaders/ShaderLib/distance.glsl.js +1 -1
  284. package/src/renderers/webgl/WebGLOutput.js +2 -1
  285. package/src/renderers/webgl/WebGLProgram.js +5 -4
  286. package/src/renderers/webgl/WebGLPrograms.js +11 -4
  287. package/src/renderers/webgl/WebGLRenderLists.js +9 -1
  288. package/src/renderers/webgl/WebGLShaderCache.js +5 -11
  289. package/src/renderers/webgl/WebGLTextures.js +20 -7
  290. package/src/renderers/webgl/WebGLUniformsGroups.js +66 -38
  291. package/src/renderers/webgl-fallback/WebGLBackend.js +84 -25
  292. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +138 -8
  293. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
  294. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +52 -22
  295. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +4 -2
  296. package/src/renderers/webgpu/WebGPUBackend.js +480 -169
  297. package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
  298. package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
  299. package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
  300. package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
  301. package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
  302. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
  303. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
  304. package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
  305. package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
  306. package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
  307. package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
  308. package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
  309. package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
  310. package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
  311. package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
  312. package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
  313. package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
  314. package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
  315. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
  316. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
  317. package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
  318. package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
  319. package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
  320. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
  321. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +164 -7
  322. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
  323. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +98 -38
  324. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +72 -68
  325. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +164 -69
  326. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +158 -95
  327. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +297 -141
  328. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +33 -18
  329. package/src/renderers/webgpu/utils/WebGPUUtils.js +38 -3
  330. package/src/textures/DepthTexture.js +1 -1
  331. package/src/textures/ExternalTexture.js +0 -3
  332. package/examples/fonts/LICENSE +0 -13
  333. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  334. package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
  335. package/examples/fonts/README.md +0 -11
  336. package/examples/fonts/droid/NOTICE +0 -190
  337. package/examples/fonts/droid/README.txt +0 -18
  338. package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
  339. package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
  340. package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
  341. package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
  342. package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
  343. package/examples/fonts/gentilis_bold.typeface.json +0 -1
  344. package/examples/fonts/gentilis_regular.typeface.json +0 -1
  345. package/examples/fonts/helvetiker_bold.typeface.json +0 -1
  346. package/examples/fonts/helvetiker_regular.typeface.json +0 -1
  347. package/examples/fonts/optimer_bold.typeface.json +0 -1
  348. package/examples/fonts/optimer_regular.typeface.json +0 -1
  349. package/examples/fonts/ttf/README.md +0 -9
  350. package/examples/fonts/ttf/kenpixel.ttf +0 -0
  351. package/examples/jsm/inspector/extensions/extensions.json +0 -6
  352. package/examples/jsm/libs/ammo.wasm.js +0 -822
  353. package/examples/jsm/libs/ammo.wasm.wasm +0 -0
  354. package/examples/jsm/libs/draco/draco_encoder.js +0 -33
  355. package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
  356. package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
  357. package/examples/jsm/libs/opentype.module.js +0 -14506
  358. package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
  359. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
  360. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  361. package/examples/jsm/lighting/TiledLighting.js +0 -42
  362. package/examples/jsm/tsl/display/AnamorphicNode.js +0 -293
  363. package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
  364. package/src/nodes/accessors/BatchNode.js +0 -163
  365. package/src/nodes/accessors/InstanceNode.js +0 -349
  366. package/src/nodes/accessors/InstancedMeshNode.js +0 -50
  367. package/src/nodes/accessors/SkinningNode.js +0 -328
@@ -1,37 +1,45 @@
1
1
  import { hash, hashString } from '../../nodes/core/NodeUtils.js';
2
2
 
3
3
  let _id = 0;
4
+ const _protoKeysCache = new WeakMap();
4
5
 
5
6
  function getKeys( obj ) {
6
7
 
7
8
  const keys = Object.keys( obj );
8
9
 
9
- let proto = Object.getPrototypeOf( obj );
10
+ let protoKeys = _protoKeysCache.get( obj.constructor );
10
11
 
11
- while ( proto ) {
12
+ if ( protoKeys === undefined ) {
12
13
 
13
- const descriptors = Object.getOwnPropertyDescriptors( proto );
14
+ protoKeys = [];
15
+ let proto = Object.getPrototypeOf( obj );
14
16
 
15
- for ( const key in descriptors ) {
17
+ while ( proto ) {
16
18
 
17
- if ( descriptors[ key ] !== undefined ) {
19
+ const descriptors = Object.getOwnPropertyDescriptors( proto );
20
+
21
+ for ( const key in descriptors ) {
18
22
 
19
23
  const descriptor = descriptors[ key ];
20
24
 
21
25
  if ( descriptor && typeof descriptor.get === 'function' ) {
22
26
 
23
- keys.push( key );
27
+ protoKeys.push( key );
24
28
 
25
29
  }
26
30
 
27
31
  }
28
32
 
33
+ proto = Object.getPrototypeOf( proto );
34
+
29
35
  }
30
36
 
31
- proto = Object.getPrototypeOf( proto );
37
+ _protoKeysCache.set( obj.constructor, protoKeys );
32
38
 
33
39
  }
34
40
 
41
+ for ( let i = 0; i < protoKeys.length; i ++ ) keys.push( protoKeys[ i ] );
42
+
35
43
  return keys;
36
44
 
37
45
  }
@@ -281,6 +289,16 @@ class RenderObject {
281
289
  */
282
290
  this._monitor = null;
283
291
 
292
+ /**
293
+ * The object's original material when this render object is drawn with an
294
+ * override material.
295
+ *
296
+ * @type {?Material}
297
+ * @private
298
+ * @default null
299
+ */
300
+ this._sourceMaterial = renderer._currentSourceMaterial;
301
+
284
302
  /**
285
303
  * An event listener which is defined by `RenderObjects`. It performs
286
304
  * clean up tasks when `dispose()` on this render object.
@@ -328,6 +346,12 @@ class RenderObject {
328
346
  this.material.addEventListener( 'dispose', this.onMaterialDispose );
329
347
  this.geometry.addEventListener( 'dispose', this.onGeometryDispose );
330
348
 
349
+ if ( this._sourceMaterial !== null ) {
350
+
351
+ this._sourceMaterial.addEventListener( 'dispose', this.onMaterialDispose );
352
+
353
+ }
354
+
331
355
  }
332
356
 
333
357
  /**
@@ -365,7 +389,7 @@ class RenderObject {
365
389
  */
366
390
  get hardwareClippingPlanes() {
367
391
 
368
- return this.material.hardwareClipping === true ? this.clippingContext.unionClippingCount : 0;
392
+ return this.getNodeBuilderState().hardwareClipping === true ? this.clippingContext.unionClippingCount : 0;
369
393
 
370
394
  }
371
395
 
@@ -511,7 +535,20 @@ class RenderObject {
511
535
 
512
536
  // geometry attribute
513
537
  attribute = geometry.getAttribute( nodeAttribute.name );
514
- attributesId[ nodeAttribute.name ] = attribute.id;
538
+
539
+ if ( attribute !== undefined ) {
540
+
541
+ if ( attribute.isInterleavedBufferAttribute ) {
542
+
543
+ attributesId[ nodeAttribute.name ] = attribute.data.uuid;
544
+
545
+ } else {
546
+
547
+ attributesId[ nodeAttribute.name ] = attribute.id;
548
+
549
+ }
550
+
551
+ }
515
552
 
516
553
  }
517
554
 
@@ -655,7 +692,7 @@ class RenderObject {
655
692
 
656
693
  // structural equality isn't sufficient for morph targets since the
657
694
  // data are maintained in textures. only if the targets are all equal
658
- // the texture and thus the instance of `MorphNode` can be shared.
695
+ // the texture and thus the `morphReference` can be shared.
659
696
 
660
697
  for ( const name of Object.keys( geometry.morphAttributes ).sort() ) {
661
698
 
@@ -712,7 +749,20 @@ class RenderObject {
712
749
 
713
750
  if ( type === 'number' ) {
714
751
 
715
- valueKey = value !== 0 ? '1' : '0'; // Convert to on/off, important for clearcoat, transmission, etc
752
+ if ( property === 'side' ) {
753
+
754
+ // `side` is an enum (FrontSide/BackSide/DoubleSide) that changes code
755
+ // generation, so its exact value must be preserved.
756
+
757
+ valueKey = String( value );
758
+
759
+ } else {
760
+
761
+ // Other numbers are reduced to on/off
762
+
763
+ valueKey = value !== 0 ? '1' : '0';
764
+
765
+ }
716
766
 
717
767
  } else if ( type === 'object' ) {
718
768
 
@@ -780,7 +830,7 @@ class RenderObject {
780
830
 
781
831
  }
782
832
 
783
- if ( object.isInstancedMesh || object.count > 1 || Array.isArray( object.morphTargetInfluences ) ) {
833
+ if ( object.isInstancedMesh || object.count > 1 ) {
784
834
 
785
835
  // TODO: https://github.com/mrdoob/three.js/pull/29066#issuecomment-2269400850
786
836
 
@@ -814,7 +864,11 @@ class RenderObject {
814
864
 
815
865
  const attribute = this.geometry.getAttribute( name );
816
866
 
817
- if ( attribute === undefined || attributesId[ name ] !== attribute.id ) {
867
+ if ( attribute === undefined ) return true;
868
+
869
+ const id = attribute.isInterleavedBufferAttribute ? attribute.data.uuid : attribute.id;
870
+
871
+ if ( attributesId[ name ] !== id ) {
818
872
 
819
873
  return true;
820
874
 
@@ -906,6 +960,12 @@ class RenderObject {
906
960
  this.material.removeEventListener( 'dispose', this.onMaterialDispose );
907
961
  this.geometry.removeEventListener( 'dispose', this.onGeometryDispose );
908
962
 
963
+ if ( this._sourceMaterial !== null ) {
964
+
965
+ this._sourceMaterial.removeEventListener( 'dispose', this.onMaterialDispose );
966
+
967
+ }
968
+
909
969
  this.onDispose();
910
970
 
911
971
  }