@plastic-software/three 0.167.3 → 0.174.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 (748) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +36277 -24023
  4. package/build/three.core.js +48830 -0
  5. package/build/three.core.min.js +6 -0
  6. package/build/three.module.js +10175 -46743
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +550 -0
  9. package/build/three.tsl.min.js +6 -0
  10. package/build/three.webgpu.js +44348 -50670
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +70301 -0
  13. package/build/three.webgpu.nodes.min.js +6 -0
  14. package/examples/jsm/Addons.js +3 -15
  15. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  16. package/examples/jsm/animation/CCDIKSolver.js +61 -11
  17. package/examples/jsm/capabilities/WebGL.js +27 -21
  18. package/examples/jsm/capabilities/WebGPU.js +1 -10
  19. package/examples/jsm/controls/ArcballControls.js +262 -231
  20. package/examples/jsm/controls/DragControls.js +1 -1
  21. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  22. package/examples/jsm/controls/FlyControls.js +194 -188
  23. package/examples/jsm/controls/OrbitControls.js +801 -777
  24. package/examples/jsm/controls/PointerLockControls.js +26 -20
  25. package/examples/jsm/controls/TrackballControls.js +469 -448
  26. package/examples/jsm/controls/TransformControls.js +119 -68
  27. package/examples/jsm/csm/CSM.js +2 -2
  28. package/examples/jsm/csm/CSMFrustum.js +7 -4
  29. package/examples/jsm/csm/CSMHelper.js +2 -0
  30. package/examples/jsm/csm/CSMShadowNode.js +442 -0
  31. package/examples/jsm/curves/NURBSCurve.js +33 -2
  32. package/examples/jsm/curves/NURBSUtils.js +3 -0
  33. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  34. package/examples/jsm/effects/OutlineEffect.js +1 -1
  35. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  36. package/examples/jsm/effects/StereoEffect.js +6 -1
  37. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  38. package/examples/jsm/exporters/EXRExporter.js +19 -11
  39. package/examples/jsm/exporters/GLTFExporter.js +181 -109
  40. package/examples/jsm/exporters/KTX2Exporter.js +54 -23
  41. package/examples/jsm/exporters/OBJExporter.js +5 -1
  42. package/examples/jsm/exporters/PLYExporter.js +11 -9
  43. package/examples/jsm/exporters/USDZExporter.js +50 -11
  44. package/examples/jsm/geometries/DecalGeometry.js +73 -21
  45. package/examples/jsm/geometries/TextGeometry.js +1 -12
  46. package/examples/jsm/helpers/LightProbeHelper.js +43 -44
  47. package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
  48. package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
  49. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  50. package/examples/jsm/interactive/HTMLMesh.js +1 -0
  51. package/examples/jsm/interactive/InteractiveGroup.js +108 -51
  52. package/examples/jsm/interactive/SelectionHelper.js +3 -1
  53. package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  54. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  55. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  56. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  57. package/examples/jsm/lighting/TiledLighting.js +18 -0
  58. package/examples/jsm/lights/LightProbeGenerator.js +26 -12
  59. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  60. package/examples/jsm/lines/LineGeometry.js +25 -0
  61. package/examples/jsm/lines/LineMaterial.js +0 -1
  62. package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
  63. package/examples/jsm/lines/webgpu/Line2.js +2 -1
  64. package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
  65. package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
  66. package/examples/jsm/loaders/3DMLoader.js +1 -0
  67. package/examples/jsm/loaders/3MFLoader.js +104 -2
  68. package/examples/jsm/loaders/BVHLoader.js +1 -1
  69. package/examples/jsm/loaders/ColladaLoader.js +15 -12
  70. package/examples/jsm/loaders/DDSLoader.js +42 -0
  71. package/examples/jsm/loaders/DRACOLoader.js +3 -1
  72. package/examples/jsm/loaders/FBXLoader.js +71 -22
  73. package/examples/jsm/loaders/GCodeLoader.js +4 -2
  74. package/examples/jsm/loaders/GLTFLoader.js +29 -14
  75. package/examples/jsm/loaders/KTX2Loader.js +160 -58
  76. package/examples/jsm/loaders/KTXLoader.js +4 -4
  77. package/examples/jsm/loaders/LDrawLoader.js +22 -136
  78. package/examples/jsm/loaders/LottieLoader.js +2 -1
  79. package/examples/jsm/loaders/MTLLoader.js +27 -7
  80. package/examples/jsm/loaders/MaterialXLoader.js +40 -14
  81. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  82. package/examples/jsm/loaders/OBJLoader.js +5 -3
  83. package/examples/jsm/loaders/PCDLoader.js +14 -13
  84. package/examples/jsm/loaders/PDBLoader.js +3 -2
  85. package/examples/jsm/loaders/PLYLoader.js +15 -12
  86. package/examples/jsm/loaders/PVRLoader.js +1 -1
  87. package/examples/jsm/loaders/STLLoader.js +3 -2
  88. package/examples/jsm/loaders/SVGLoader.js +2 -2
  89. package/examples/jsm/loaders/TDSLoader.js +17 -18
  90. package/examples/jsm/loaders/VRMLLoader.js +17 -17
  91. package/examples/jsm/loaders/VTKLoader.js +4 -3
  92. package/examples/jsm/loaders/XYZLoader.js +3 -2
  93. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  94. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
  95. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
  96. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  97. package/examples/jsm/math/ColorSpaces.js +76 -0
  98. package/examples/jsm/math/ConvexHull.js +1 -1
  99. package/examples/jsm/math/OBB.js +17 -0
  100. package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
  101. package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
  102. package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
  103. package/examples/jsm/misc/Timer.js +27 -12
  104. package/examples/jsm/misc/Volume.js +28 -18
  105. package/examples/jsm/misc/VolumeSlice.js +19 -16
  106. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  107. package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
  108. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  109. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  110. package/examples/jsm/objects/LensflareMesh.js +324 -0
  111. package/examples/jsm/objects/Reflector.js +5 -2
  112. package/examples/jsm/objects/Sky.js +2 -2
  113. package/examples/jsm/objects/SkyMesh.js +14 -14
  114. package/examples/jsm/objects/Water2.js +1 -1
  115. package/examples/jsm/objects/Water2Mesh.js +11 -9
  116. package/examples/jsm/objects/WaterMesh.js +38 -33
  117. package/examples/jsm/physics/JoltPhysics.js +8 -8
  118. package/examples/jsm/physics/RapierPhysics.js +5 -5
  119. package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
  120. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  121. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  122. package/examples/jsm/postprocessing/OutlinePass.js +37 -51
  123. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  124. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  125. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  126. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  127. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  128. package/examples/jsm/postprocessing/SSRPass.js +8 -4
  129. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  130. package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
  131. package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
  132. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  133. package/examples/jsm/shaders/BokehShader2.js +1 -1
  134. package/examples/jsm/shaders/FXAAShader.js +225 -224
  135. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  136. package/examples/jsm/shaders/OutputShader.js +6 -2
  137. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  138. package/examples/jsm/transpiler/AST.js +12 -2
  139. package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
  140. package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
  141. package/examples/jsm/transpiler/TSLEncoder.js +96 -21
  142. package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
  143. package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
  144. package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
  145. package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
  146. package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
  147. package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
  148. package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
  149. package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
  150. package/examples/jsm/tsl/display/FXAANode.js +364 -0
  151. package/examples/jsm/tsl/display/FilmNode.js +100 -0
  152. package/examples/jsm/tsl/display/GTAONode.js +521 -0
  153. package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
  154. package/examples/jsm/tsl/display/LensflareNode.js +278 -0
  155. package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
  156. package/examples/jsm/tsl/display/MotionBlur.js +33 -0
  157. package/examples/jsm/tsl/display/OutlineNode.js +750 -0
  158. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
  159. package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
  160. package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
  161. package/examples/jsm/tsl/display/SMAANode.js +767 -0
  162. package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
  163. package/examples/jsm/tsl/display/SSRNode.js +538 -0
  164. package/examples/jsm/tsl/display/Sepia.js +24 -0
  165. package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
  166. package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
  167. package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
  168. package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
  169. package/examples/jsm/tsl/display/TransitionNode.js +140 -0
  170. package/examples/jsm/tsl/display/hashBlur.js +34 -0
  171. package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
  172. package/examples/jsm/tsl/math/Bayer.js +18 -0
  173. package/examples/jsm/tsl/utils/Raymarching.js +65 -0
  174. package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
  175. package/examples/jsm/utils/CameraUtils.js +4 -1
  176. package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
  177. package/examples/jsm/utils/GeometryUtils.js +22 -19
  178. package/examples/jsm/utils/SceneOptimizer.js +410 -0
  179. package/examples/jsm/utils/SceneUtils.js +2 -2
  180. package/examples/jsm/utils/ShadowMapViewer.js +3 -8
  181. package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
  182. package/examples/jsm/utils/SkeletonUtils.js +84 -66
  183. package/examples/jsm/utils/UVsDebug.js +1 -1
  184. package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
  185. package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
  186. package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
  187. package/examples/jsm/webxr/Text2D.js +6 -6
  188. package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
  189. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  190. package/package.json +14 -9
  191. package/src/Three.Core.js +182 -0
  192. package/src/Three.Legacy.js +0 -21
  193. package/src/Three.TSL.js +543 -0
  194. package/src/Three.WebGPU.Nodes.js +23 -0
  195. package/src/Three.WebGPU.js +13 -184
  196. package/src/Three.js +1 -176
  197. package/src/animation/AnimationClip.js +2 -2
  198. package/src/animation/AnimationObjectGroup.js +2 -2
  199. package/src/animation/AnimationUtils.js +1 -1
  200. package/src/animation/PropertyBinding.js +2 -2
  201. package/src/audio/Audio.js +379 -2
  202. package/src/audio/AudioAnalyser.js +58 -1
  203. package/src/audio/AudioContext.js +15 -0
  204. package/src/audio/AudioListener.js +76 -0
  205. package/src/audio/PositionalAudio.js +107 -0
  206. package/src/cameras/ArrayCamera.js +29 -0
  207. package/src/cameras/Camera.js +47 -0
  208. package/src/cameras/CubeCamera.js +66 -0
  209. package/src/cameras/OrthographicCamera.js +109 -0
  210. package/src/cameras/PerspectiveCamera.js +173 -34
  211. package/src/cameras/StereoCamera.js +48 -2
  212. package/src/constants.js +6 -6
  213. package/src/core/BufferAttribute.js +4 -9
  214. package/src/core/BufferGeometry.js +48 -8
  215. package/src/core/Clock.js +1 -1
  216. package/src/core/EventDispatcher.js +52 -8
  217. package/src/core/InterleavedBuffer.js +4 -13
  218. package/src/core/Object3D.js +573 -3
  219. package/src/core/RenderTarget.js +22 -4
  220. package/src/core/RenderTarget3D.js +22 -0
  221. package/src/core/RenderTargetArray.js +22 -0
  222. package/src/extras/Controls.js +104 -0
  223. package/src/extras/DataUtils.js +48 -8
  224. package/src/extras/Earcut.js +18 -7
  225. package/src/extras/ImageUtils.js +18 -11
  226. package/src/extras/PMREMGenerator.js +40 -9
  227. package/src/extras/ShapeUtils.js +24 -2
  228. package/src/extras/TextureUtils.js +96 -10
  229. package/src/extras/core/Curve.js +153 -53
  230. package/src/extras/core/CurvePath.js +63 -22
  231. package/src/extras/core/Interpolations.js +29 -3
  232. package/src/extras/core/Path.js +134 -1
  233. package/src/extras/core/Shape.js +66 -3
  234. package/src/extras/core/ShapePath.js +76 -0
  235. package/src/extras/curves/ArcCurve.js +22 -0
  236. package/src/extras/curves/CatmullRomCurve3.js +89 -18
  237. package/src/extras/curves/CubicBezierCurve.js +67 -0
  238. package/src/extras/curves/CubicBezierCurve3.js +50 -0
  239. package/src/extras/curves/EllipseCurve.js +102 -0
  240. package/src/extras/curves/LineCurve.js +36 -0
  241. package/src/extras/curves/LineCurve3.js +36 -0
  242. package/src/extras/curves/QuadraticBezierCurve.js +59 -0
  243. package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  244. package/src/extras/curves/SplineCurve.js +48 -0
  245. package/src/geometries/BoxGeometry.js +38 -0
  246. package/src/geometries/CapsuleGeometry.js +34 -0
  247. package/src/geometries/CircleGeometry.js +40 -0
  248. package/src/geometries/ConeGeometry.js +38 -0
  249. package/src/geometries/CylinderGeometry.js +50 -4
  250. package/src/geometries/DodecahedronGeometry.js +32 -0
  251. package/src/geometries/EdgesGeometry.js +30 -2
  252. package/src/geometries/ExtrudeGeometry.js +52 -0
  253. package/src/geometries/IcosahedronGeometry.js +32 -0
  254. package/src/geometries/LatheGeometry.js +43 -3
  255. package/src/geometries/OctahedronGeometry.js +32 -0
  256. package/src/geometries/PlaneGeometry.js +34 -0
  257. package/src/geometries/PolyhedronGeometry.js +29 -0
  258. package/src/geometries/RingGeometry.js +36 -0
  259. package/src/geometries/ShapeGeometry.js +37 -0
  260. package/src/geometries/SphereGeometry.js +37 -0
  261. package/src/geometries/TetrahedronGeometry.js +32 -0
  262. package/src/geometries/TorusGeometry.js +35 -0
  263. package/src/geometries/TorusKnotGeometry.js +38 -0
  264. package/src/geometries/TubeGeometry.js +49 -0
  265. package/src/geometries/WireframeGeometry.js +32 -0
  266. package/src/helpers/ArrowHelper.js +60 -3
  267. package/src/helpers/AxesHelper.js +28 -0
  268. package/src/helpers/Box3Helper.js +28 -0
  269. package/src/helpers/BoxHelper.js +43 -7
  270. package/src/helpers/CameraHelper.js +61 -18
  271. package/src/helpers/DirectionalLightHelper.js +52 -0
  272. package/src/helpers/GridHelper.js +26 -0
  273. package/src/helpers/HemisphereLightHelper.js +39 -0
  274. package/src/helpers/PlaneHelper.js +33 -0
  275. package/src/helpers/PointLightHelper.js +43 -0
  276. package/src/helpers/PolarGridHelper.js +30 -0
  277. package/src/helpers/SkeletonHelper.js +39 -2
  278. package/src/helpers/SpotLightHelper.js +40 -0
  279. package/src/lights/AmbientLight.js +25 -0
  280. package/src/lights/DirectionalLight.js +57 -0
  281. package/src/lights/DirectionalLightShadow.js +15 -0
  282. package/src/lights/HemisphereLight.js +32 -0
  283. package/src/lights/Light.js +36 -0
  284. package/src/lights/LightProbe.js +43 -0
  285. package/src/lights/LightShadow.js +159 -0
  286. package/src/lights/PointLight.js +59 -0
  287. package/src/lights/PointLightShadow.js +21 -0
  288. package/src/lights/RectAreaLight.js +59 -0
  289. package/src/lights/SpotLight.js +102 -0
  290. package/src/lights/SpotLightShadow.js +24 -2
  291. package/src/lights/webgpu/IESSpotLight.js +21 -0
  292. package/src/loaders/Loader.js +132 -0
  293. package/src/loaders/MaterialLoader.js +7 -1
  294. package/src/loaders/nodes/NodeLoader.js +189 -0
  295. package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  296. package/src/loaders/nodes/NodeObjectLoader.js +151 -0
  297. package/src/materials/LineDashedMaterial.js +0 -1
  298. package/src/materials/Material.js +469 -7
  299. package/src/materials/MeshPhongMaterial.js +1 -1
  300. package/src/materials/MeshPhysicalMaterial.js +2 -2
  301. package/src/materials/MeshStandardMaterial.js +2 -2
  302. package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
  303. package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  304. package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  305. package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
  306. package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
  307. package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  308. package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  309. package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
  310. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
  311. package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
  312. package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
  313. package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
  314. package/src/materials/nodes/NodeMaterial.js +1180 -0
  315. package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
  316. package/src/materials/nodes/PointsNodeMaterial.js +153 -0
  317. package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
  318. package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
  319. package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
  320. package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
  321. package/src/math/Box2.js +177 -0
  322. package/src/math/Box3.js +243 -0
  323. package/src/math/Color.js +343 -0
  324. package/src/math/ColorManagement.js +143 -102
  325. package/src/math/Cylindrical.js +65 -6
  326. package/src/math/Euler.js +137 -4
  327. package/src/math/Frustum.js +83 -0
  328. package/src/math/Interpolant.js +87 -8
  329. package/src/math/Line3.js +96 -2
  330. package/src/math/MathUtils.js +182 -19
  331. package/src/math/Matrix2.js +70 -0
  332. package/src/math/Matrix3.js +229 -4
  333. package/src/math/Matrix4.js +368 -3
  334. package/src/math/Plane.js +164 -2
  335. package/src/math/Quaternion.js +265 -9
  336. package/src/math/Ray.js +160 -0
  337. package/src/math/Sphere.js +147 -0
  338. package/src/math/Spherical.js +73 -11
  339. package/src/math/SphericalHarmonics3.js +112 -14
  340. package/src/math/Triangle.js +230 -2
  341. package/src/math/Vector2.js +396 -10
  342. package/src/math/Vector3.js +550 -13
  343. package/src/math/Vector4.js +415 -9
  344. package/src/math/interpolants/CubicInterpolant.js +10 -1
  345. package/src/math/interpolants/DiscreteInterpolant.js +10 -2
  346. package/src/math/interpolants/LinearInterpolant.js +13 -0
  347. package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  348. package/src/nodes/Nodes.js +84 -166
  349. package/src/nodes/TSL.js +167 -0
  350. package/src/nodes/accessors/AccessorsUtils.js +39 -10
  351. package/src/nodes/accessors/Arrays.js +68 -0
  352. package/src/nodes/accessors/BatchNode.js +93 -26
  353. package/src/nodes/accessors/Bitangent.js +54 -0
  354. package/src/nodes/accessors/BufferAttributeNode.js +189 -11
  355. package/src/nodes/accessors/BufferNode.js +70 -5
  356. package/src/nodes/accessors/BuiltinNode.js +63 -0
  357. package/src/nodes/accessors/Camera.js +129 -0
  358. package/src/nodes/accessors/ClippingNode.js +152 -43
  359. package/src/nodes/accessors/CubeTextureNode.js +76 -13
  360. package/src/nodes/accessors/InstanceNode.js +118 -35
  361. package/src/nodes/accessors/InstancedMeshNode.js +50 -0
  362. package/src/nodes/accessors/Lights.js +129 -0
  363. package/src/nodes/accessors/MaterialNode.js +394 -58
  364. package/src/nodes/accessors/MaterialProperties.js +57 -1
  365. package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
  366. package/src/nodes/accessors/ModelNode.js +159 -12
  367. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
  368. package/src/nodes/accessors/MorphNode.js +60 -13
  369. package/src/nodes/accessors/Normal.js +156 -0
  370. package/src/nodes/accessors/Object3DNode.js +154 -35
  371. package/src/nodes/accessors/PointUVNode.js +35 -6
  372. package/src/nodes/accessors/Position.js +64 -0
  373. package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
  374. package/src/nodes/accessors/ReferenceNode.js +243 -6
  375. package/src/nodes/accessors/ReflectVector.js +36 -0
  376. package/src/nodes/accessors/RendererReferenceNode.js +57 -7
  377. package/src/nodes/accessors/SceneNode.js +98 -6
  378. package/src/nodes/accessors/SkinningNode.js +214 -21
  379. package/src/nodes/accessors/StorageBufferNode.js +288 -28
  380. package/src/nodes/accessors/StorageTextureNode.js +139 -12
  381. package/src/nodes/accessors/Tangent.js +62 -0
  382. package/src/nodes/accessors/Texture3DNode.js +98 -12
  383. package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
  384. package/src/nodes/accessors/TextureNode.js +347 -34
  385. package/src/nodes/accessors/TextureSizeNode.js +51 -9
  386. package/src/nodes/accessors/UV.js +11 -0
  387. package/src/nodes/accessors/UniformArrayNode.js +241 -32
  388. package/src/nodes/accessors/UserDataNode.js +55 -7
  389. package/src/nodes/accessors/VelocityNode.js +223 -0
  390. package/src/nodes/accessors/VertexColorNode.js +45 -6
  391. package/src/nodes/code/CodeNode.js +108 -8
  392. package/src/nodes/code/ExpressionNode.js +38 -7
  393. package/src/nodes/code/FunctionCallNode.js +62 -11
  394. package/src/nodes/code/FunctionNode.js +54 -24
  395. package/src/nodes/code/ScriptableNode.js +241 -17
  396. package/src/nodes/code/ScriptableValueNode.js +93 -8
  397. package/src/nodes/core/ArrayNode.js +142 -0
  398. package/src/nodes/core/AssignNode.js +60 -12
  399. package/src/nodes/core/AttributeNode.js +55 -22
  400. package/src/nodes/core/BypassNode.js +59 -11
  401. package/src/nodes/core/CacheNode.js +64 -10
  402. package/src/nodes/core/ConstNode.js +38 -3
  403. package/src/nodes/core/ContextNode.js +87 -12
  404. package/src/nodes/core/IndexNode.js +102 -10
  405. package/src/nodes/core/InputNode.js +55 -3
  406. package/src/nodes/core/LightingModel.js +65 -5
  407. package/src/nodes/core/MRTNode.js +81 -7
  408. package/src/nodes/core/Node.js +368 -50
  409. package/src/nodes/core/NodeAttribute.js +38 -0
  410. package/src/nodes/core/NodeBuilder.js +1317 -83
  411. package/src/nodes/core/NodeCache.js +41 -2
  412. package/src/nodes/core/NodeCode.js +31 -0
  413. package/src/nodes/core/NodeFrame.js +123 -2
  414. package/src/nodes/core/NodeFunction.js +46 -0
  415. package/src/nodes/core/NodeFunctionInput.js +44 -0
  416. package/src/nodes/core/NodeParser.js +11 -0
  417. package/src/nodes/core/NodeUniform.js +52 -0
  418. package/src/nodes/core/NodeUtils.js +226 -6
  419. package/src/nodes/core/NodeVar.js +47 -1
  420. package/src/nodes/core/NodeVarying.js +28 -0
  421. package/src/nodes/core/OutputStructNode.js +61 -17
  422. package/src/nodes/core/ParameterNode.js +34 -4
  423. package/src/nodes/core/PropertyNode.js +296 -32
  424. package/src/nodes/core/StackNode.js +108 -8
  425. package/src/nodes/core/StructNode.js +120 -0
  426. package/src/nodes/core/StructType.js +13 -0
  427. package/src/nodes/core/StructTypeNode.js +116 -9
  428. package/src/nodes/core/TempNode.js +37 -7
  429. package/src/nodes/core/UniformGroupNode.js +98 -17
  430. package/src/nodes/core/UniformNode.js +72 -4
  431. package/src/nodes/core/VarNode.js +170 -13
  432. package/src/nodes/core/VaryingNode.js +109 -8
  433. package/src/nodes/core/constants.js +40 -0
  434. package/src/nodes/display/BlendModes.js +193 -0
  435. package/src/nodes/display/BumpMapNode.js +47 -10
  436. package/src/nodes/display/ColorAdjustment.js +141 -0
  437. package/src/nodes/display/ColorSpaceFunctions.js +54 -0
  438. package/src/nodes/display/ColorSpaceNode.js +147 -68
  439. package/src/nodes/display/FrontFacingNode.js +39 -6
  440. package/src/nodes/display/NormalMapNode.js +55 -13
  441. package/src/nodes/display/PassNode.js +420 -19
  442. package/src/nodes/display/PosterizeNode.js +40 -7
  443. package/src/nodes/display/RenderOutputNode.js +81 -13
  444. package/src/nodes/display/ScreenNode.js +286 -0
  445. package/src/nodes/display/ToneMappingFunctions.js +242 -0
  446. package/src/nodes/display/ToneMappingNode.js +68 -175
  447. package/src/nodes/display/ToonOutlinePassNode.js +183 -0
  448. package/src/nodes/display/ViewportDepthNode.js +210 -36
  449. package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
  450. package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
  451. package/src/nodes/display/ViewportTextureNode.js +68 -11
  452. package/src/nodes/fog/Fog.js +113 -0
  453. package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
  454. package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  455. package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  456. package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
  457. package/src/nodes/functions/BSDF/D_GGX.js +2 -2
  458. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
  459. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  460. package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
  461. package/src/nodes/functions/BSDF/LTC.js +50 -6
  462. package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  463. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  464. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  465. package/src/nodes/functions/BasicLightingModel.js +27 -6
  466. package/src/nodes/functions/PhongLightingModel.js +38 -8
  467. package/src/nodes/functions/PhysicalLightingModel.js +215 -51
  468. package/src/nodes/functions/ShadowMaskModel.js +24 -1
  469. package/src/nodes/functions/ToonLightingModel.js +24 -5
  470. package/src/nodes/functions/VolumetricLightingModel.js +183 -0
  471. package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  472. package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
  473. package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  474. package/src/nodes/functions/material/getRoughness.js +2 -2
  475. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  476. package/src/nodes/geometry/RangeNode.js +62 -7
  477. package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
  478. package/src/nodes/gpgpu/BarrierNode.js +89 -0
  479. package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
  480. package/src/nodes/gpgpu/ComputeNode.js +124 -9
  481. package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
  482. package/src/nodes/lighting/AONode.js +24 -3
  483. package/src/nodes/lighting/AmbientLightNode.js +16 -8
  484. package/src/nodes/lighting/AnalyticLightNode.js +151 -231
  485. package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
  486. package/src/nodes/lighting/BasicLightMapNode.js +25 -5
  487. package/src/nodes/lighting/DirectionalLightNode.js +19 -20
  488. package/src/nodes/lighting/EnvironmentNode.js +34 -17
  489. package/src/nodes/lighting/HemisphereLightNode.js +42 -11
  490. package/src/nodes/lighting/IESSpotLightNode.js +18 -9
  491. package/src/nodes/lighting/IrradianceNode.js +23 -3
  492. package/src/nodes/lighting/LightProbeNode.js +29 -36
  493. package/src/nodes/lighting/LightUtils.js +12 -4
  494. package/src/nodes/lighting/LightingContextNode.js +70 -21
  495. package/src/nodes/lighting/LightingNode.js +22 -9
  496. package/src/nodes/lighting/LightsNode.js +309 -86
  497. package/src/nodes/lighting/PointLightNode.js +66 -32
  498. package/src/nodes/lighting/PointShadowNode.js +306 -0
  499. package/src/nodes/lighting/RectAreaLightNode.js +61 -25
  500. package/src/nodes/lighting/ShadowBaseNode.js +92 -0
  501. package/src/nodes/lighting/ShadowNode.js +812 -0
  502. package/src/nodes/lighting/SpotLightNode.js +73 -31
  503. package/src/nodes/materialx/MaterialXNodes.js +2 -2
  504. package/src/nodes/materialx/lib/mx_hsv.js +27 -22
  505. package/src/nodes/materialx/lib/mx_noise.js +70 -70
  506. package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
  507. package/src/nodes/math/ConditionalNode.js +230 -0
  508. package/src/nodes/math/Hash.js +21 -0
  509. package/src/nodes/math/MathNode.js +812 -131
  510. package/src/nodes/math/MathUtils.js +47 -8
  511. package/src/nodes/math/OperatorNode.js +410 -66
  512. package/src/nodes/math/TriNoise3D.js +32 -32
  513. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  514. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  515. package/src/nodes/pmrem/PMREMNode.js +188 -28
  516. package/src/nodes/pmrem/PMREMUtils.js +24 -24
  517. package/src/nodes/procedural/Checker.js +22 -0
  518. package/src/nodes/shapes/Shapes.js +32 -0
  519. package/src/nodes/tsl/TSLBase.js +31 -0
  520. package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
  521. package/src/nodes/utils/ArrayElementNode.js +45 -5
  522. package/src/nodes/utils/ConvertNode.js +39 -4
  523. package/src/nodes/utils/CubeMapNode.js +88 -8
  524. package/src/nodes/utils/Discard.js +24 -0
  525. package/src/nodes/utils/EquirectUVNode.js +39 -7
  526. package/src/nodes/utils/FlipNode.js +106 -0
  527. package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
  528. package/src/nodes/utils/JoinNode.js +31 -3
  529. package/src/nodes/utils/LoopNode.js +95 -9
  530. package/src/nodes/utils/MatcapUVNode.js +27 -8
  531. package/src/nodes/utils/MaxMipLevelNode.js +57 -6
  532. package/src/nodes/utils/MemberNode.js +68 -0
  533. package/src/nodes/utils/Oscillators.js +41 -0
  534. package/src/nodes/utils/Packing.js +21 -0
  535. package/src/nodes/utils/PostProcessingUtils.js +95 -0
  536. package/src/nodes/utils/RTTNode.js +141 -9
  537. package/src/nodes/utils/ReflectorNode.js +295 -21
  538. package/src/nodes/utils/RemapNode.js +93 -10
  539. package/src/nodes/utils/RotateNode.js +48 -13
  540. package/src/nodes/utils/SetNode.js +50 -4
  541. package/src/nodes/utils/SplitNode.js +62 -6
  542. package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
  543. package/src/nodes/utils/SpriteUtils.js +21 -5
  544. package/src/nodes/utils/StorageArrayElementNode.js +64 -12
  545. package/src/nodes/utils/Timer.js +73 -0
  546. package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
  547. package/src/nodes/utils/UVUtils.js +27 -9
  548. package/src/nodes/utils/ViewportUtils.js +16 -4
  549. package/src/objects/BatchedMesh.js +808 -281
  550. package/src/objects/Bone.js +24 -0
  551. package/src/objects/ClippingGroup.js +68 -0
  552. package/src/objects/Group.js +24 -0
  553. package/src/objects/InstancedMesh.js +120 -2
  554. package/src/objects/LOD.js +120 -5
  555. package/src/objects/Line.js +89 -6
  556. package/src/objects/LineLoop.js +20 -0
  557. package/src/objects/LineSegments.js +18 -0
  558. package/src/objects/Mesh.js +82 -23
  559. package/src/objects/Points.js +62 -0
  560. package/src/objects/Skeleton.js +107 -2
  561. package/src/objects/SkinnedMesh.js +99 -5
  562. package/src/objects/Sprite.js +54 -0
  563. package/src/renderers/WebGLRenderer.js +274 -157
  564. package/src/renderers/common/Animation.js +109 -12
  565. package/src/renderers/common/Attributes.js +40 -0
  566. package/src/renderers/common/Backend.js +504 -44
  567. package/src/renderers/common/Background.js +67 -9
  568. package/src/renderers/common/BindGroup.js +45 -1
  569. package/src/renderers/common/Binding.js +35 -0
  570. package/src/renderers/common/Bindings.js +136 -19
  571. package/src/renderers/common/Buffer.js +49 -0
  572. package/src/renderers/common/BufferUtils.js +25 -0
  573. package/src/renderers/common/BundleGroup.js +83 -0
  574. package/src/renderers/common/ChainMap.js +45 -6
  575. package/src/renderers/common/ClippingContext.js +175 -80
  576. package/src/renderers/common/Color4.js +40 -0
  577. package/src/renderers/common/ComputePipeline.js +24 -0
  578. package/src/renderers/common/Constants.js +2 -1
  579. package/src/renderers/common/CubeRenderTarget.js +22 -3
  580. package/src/renderers/common/DataMap.js +37 -1
  581. package/src/renderers/common/Geometries.js +111 -14
  582. package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  583. package/src/renderers/common/Info.js +78 -35
  584. package/src/renderers/common/Lighting.js +73 -0
  585. package/src/renderers/common/Pipeline.js +22 -0
  586. package/src/renderers/common/Pipelines.js +148 -5
  587. package/src/renderers/common/PostProcessing.js +112 -11
  588. package/src/renderers/common/ProgrammableStage.js +60 -2
  589. package/src/renderers/common/QuadMesh.js +56 -5
  590. package/src/renderers/common/RenderBundle.js +14 -8
  591. package/src/renderers/common/RenderBundles.js +39 -10
  592. package/src/renderers/common/RenderContext.js +205 -7
  593. package/src/renderers/common/RenderContexts.js +59 -6
  594. package/src/renderers/common/RenderList.js +230 -21
  595. package/src/renderers/common/RenderLists.js +45 -6
  596. package/src/renderers/common/RenderObject.js +552 -41
  597. package/src/renderers/common/RenderObjects.js +118 -9
  598. package/src/renderers/common/RenderPipeline.js +24 -0
  599. package/src/renderers/common/Renderer.js +1537 -239
  600. package/src/renderers/common/RendererUtils.js +191 -0
  601. package/src/renderers/common/SampledTexture.js +132 -3
  602. package/src/renderers/common/Sampler.js +30 -0
  603. package/src/renderers/common/StorageBuffer.js +24 -0
  604. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  605. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  606. package/src/renderers/common/StorageTexture.js +38 -0
  607. package/src/renderers/common/Textures.js +142 -32
  608. package/src/renderers/common/TimestampQueryPool.js +98 -0
  609. package/src/renderers/common/Uniform.js +225 -3
  610. package/src/renderers/common/UniformBuffer.js +19 -0
  611. package/src/renderers/common/UniformsGroup.js +157 -6
  612. package/src/renderers/common/XRManager.js +1185 -0
  613. package/src/renderers/common/XRRenderTarget.js +74 -0
  614. package/src/renderers/common/extras/PMREMGenerator.js +211 -53
  615. package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
  616. package/src/renderers/common/nodes/NodeLibrary.js +194 -0
  617. package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
  618. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  619. package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
  620. package/src/renderers/common/nodes/NodeUniform.js +285 -2
  621. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  622. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  623. package/src/renderers/common/nodes/Nodes.js +390 -70
  624. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
  625. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
  626. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  627. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
  628. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
  629. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  630. package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
  631. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  632. package/src/renderers/webgl/WebGLAttributes.js +45 -14
  633. package/src/renderers/webgl/WebGLBackground.js +24 -1
  634. package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
  635. package/src/renderers/webgl/WebGLCapabilities.js +2 -0
  636. package/src/renderers/webgl/WebGLGeometries.js +0 -28
  637. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
  638. package/src/renderers/webgl/WebGLProgram.js +27 -29
  639. package/src/renderers/webgl/WebGLPrograms.js +24 -16
  640. package/src/renderers/webgl/WebGLState.js +68 -11
  641. package/src/renderers/webgl/WebGLTextures.js +49 -10
  642. package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
  643. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
  644. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
  645. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
  646. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  647. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  648. package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
  649. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
  650. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
  651. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  652. package/src/renderers/webgpu/WebGPUBackend.js +816 -236
  653. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
  654. package/src/renderers/webgpu/WebGPURenderer.js +45 -6
  655. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
  656. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
  657. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
  658. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
  659. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  660. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
  661. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
  662. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
  663. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
  664. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
  665. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
  666. package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
  667. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  668. package/src/renderers/webxr/WebXRManager.js +54 -32
  669. package/src/scenes/Fog.js +60 -0
  670. package/src/scenes/FogExp2.js +51 -0
  671. package/src/scenes/Scene.js +87 -0
  672. package/src/textures/Data3DTexture.js +2 -2
  673. package/src/textures/DepthTexture.js +2 -0
  674. package/src/textures/Source.js +2 -2
  675. package/src/textures/Texture.js +368 -5
  676. package/src/textures/VideoFrameTexture.js +35 -0
  677. package/src/utils.js +33 -1
  678. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  679. package/examples/jsm/animation/MMDPhysics.js +0 -1406
  680. package/examples/jsm/cameras/CinematicCamera.js +0 -208
  681. package/examples/jsm/controls/Controls.js +0 -32
  682. package/examples/jsm/exporters/MMDExporter.js +0 -217
  683. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  684. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  685. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  686. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  687. package/examples/jsm/loaders/MMDLoader.js +0 -2295
  688. package/examples/jsm/loaders/TiltLoader.js +0 -520
  689. package/examples/jsm/objects/InstancedPoints.js +0 -21
  690. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  691. package/examples/jsm/utils/GPUStatsPanel.js +0 -95
  692. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  693. package/src/nodes/accessors/BitangentNode.js +0 -13
  694. package/src/nodes/accessors/CameraNode.js +0 -19
  695. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  696. package/src/nodes/accessors/NormalNode.js +0 -14
  697. package/src/nodes/accessors/PositionNode.js +0 -10
  698. package/src/nodes/accessors/ReflectVectorNode.js +0 -10
  699. package/src/nodes/accessors/TangentNode.js +0 -23
  700. package/src/nodes/accessors/UVNode.js +0 -3
  701. package/src/nodes/core/NodeKeywords.js +0 -80
  702. package/src/nodes/core/UniformGroup.js +0 -13
  703. package/src/nodes/display/AfterImageNode.js +0 -152
  704. package/src/nodes/display/AnamorphicNode.js +0 -145
  705. package/src/nodes/display/BlendModeNode.js +0 -128
  706. package/src/nodes/display/ColorAdjustmentNode.js +0 -104
  707. package/src/nodes/display/DenoiseNode.js +0 -198
  708. package/src/nodes/display/DotScreenNode.js +0 -75
  709. package/src/nodes/display/FXAANode.js +0 -327
  710. package/src/nodes/display/FilmNode.js +0 -52
  711. package/src/nodes/display/GTAONode.js +0 -324
  712. package/src/nodes/display/GaussianBlurNode.js +0 -207
  713. package/src/nodes/display/Lut3DNode.js +0 -53
  714. package/src/nodes/display/RGBShiftNode.js +0 -49
  715. package/src/nodes/display/SepiaNode.js +0 -18
  716. package/src/nodes/display/TransitionNode.js +0 -76
  717. package/src/nodes/display/ViewportNode.js +0 -137
  718. package/src/nodes/fog/FogExp2Node.js +0 -34
  719. package/src/nodes/fog/FogNode.js +0 -48
  720. package/src/nodes/fog/FogRangeNode.js +0 -35
  721. package/src/nodes/lighting/LightNode.js +0 -57
  722. package/src/nodes/loaders/NodeLoader.js +0 -110
  723. package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
  724. package/src/nodes/loaders/NodeObjectLoader.js +0 -71
  725. package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  726. package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
  727. package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
  728. package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
  729. package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
  730. package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
  731. package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  732. package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
  733. package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
  734. package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
  735. package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
  736. package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
  737. package/src/nodes/materials/NodeMaterial.js +0 -680
  738. package/src/nodes/materials/PointsNodeMaterial.js +0 -39
  739. package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
  740. package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
  741. package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
  742. package/src/nodes/math/CondNode.js +0 -139
  743. package/src/nodes/math/HashNode.js +0 -34
  744. package/src/nodes/procedural/CheckerNode.js +0 -42
  745. package/src/nodes/utils/DiscardNode.js +0 -28
  746. package/src/nodes/utils/OscNode.js +0 -81
  747. package/src/nodes/utils/PackingNode.js +0 -55
  748. package/src/nodes/utils/TimerNode.js +0 -94
@@ -7,7 +7,8 @@ import {
7
7
  SRGBColorSpace,
8
8
  NoColorSpace,
9
9
  HalfFloatType,
10
- DataUtils
10
+ DataUtils,
11
+ WebGLCoordinateSystem
11
12
  } from 'three';
12
13
 
13
14
  class LightProbeGenerator {
@@ -98,7 +99,7 @@ class LightProbeGenerator {
98
99
  // evaluate SH basis functions in direction dir
99
100
  SphericalHarmonics3.getBasisAt( dir, shBasis );
100
101
 
101
- // accummuulate
102
+ // accumulate
102
103
  for ( let j = 0; j < 9; j ++ ) {
103
104
 
104
105
  shCoefficients[ j ].x += shBasis[ j ] * color.r * weight;
@@ -126,7 +127,9 @@ class LightProbeGenerator {
126
127
 
127
128
  }
128
129
 
129
- static fromCubeRenderTarget( renderer, cubeRenderTarget ) {
130
+ static async fromCubeRenderTarget( renderer, cubeRenderTarget ) {
131
+
132
+ const flip = renderer.coordinateSystem === WebGLCoordinateSystem ? - 1 : 1;
130
133
 
131
134
  // The renderTarget must be set to RGBA in order to make readRenderTargetPixels works
132
135
  let totalWeight = 0;
@@ -143,12 +146,11 @@ class LightProbeGenerator {
143
146
  const shCoefficients = sh.coefficients;
144
147
 
145
148
  const dataType = cubeRenderTarget.texture.type;
149
+ const imageWidth = cubeRenderTarget.width; // assumed to be square
146
150
 
147
- for ( let faceIndex = 0; faceIndex < 6; faceIndex ++ ) {
148
-
149
- const imageWidth = cubeRenderTarget.width; // assumed to be square
151
+ let data;
150
152
 
151
- let data;
153
+ if ( renderer.isWebGLRenderer ) {
152
154
 
153
155
  if ( dataType === HalfFloatType ) {
154
156
 
@@ -162,7 +164,19 @@ class LightProbeGenerator {
162
164
 
163
165
  }
164
166
 
165
- renderer.readRenderTargetPixels( cubeRenderTarget, 0, 0, imageWidth, imageWidth, data, faceIndex );
167
+ }
168
+
169
+ for ( let faceIndex = 0; faceIndex < 6; faceIndex ++ ) {
170
+
171
+ if ( renderer.isWebGLRenderer ) {
172
+
173
+ await renderer.readRenderTargetPixelsAsync( cubeRenderTarget, 0, 0, imageWidth, imageWidth, data, faceIndex );
174
+
175
+ } else {
176
+
177
+ data = await renderer.readRenderTargetPixelsAsync( cubeRenderTarget, 0, 0, imageWidth, imageWidth, 0, faceIndex );
178
+
179
+ }
166
180
 
167
181
  const pixelSize = 2 / imageWidth;
168
182
 
@@ -194,15 +208,15 @@ class LightProbeGenerator {
194
208
 
195
209
  const pixelIndex = i / 4;
196
210
 
197
- const col = - 1 + ( pixelIndex % imageWidth + 0.5 ) * pixelSize;
211
+ const col = ( 1 - ( pixelIndex % imageWidth + 0.5 ) * pixelSize ) * flip;
198
212
 
199
213
  const row = 1 - ( Math.floor( pixelIndex / imageWidth ) + 0.5 ) * pixelSize;
200
214
 
201
215
  switch ( faceIndex ) {
202
216
 
203
- case 0: coord.set( 1, row, - col ); break;
217
+ case 0: coord.set( - 1 * flip, row, col * flip ); break;
204
218
 
205
- case 1: coord.set( - 1, row, col ); break;
219
+ case 1: coord.set( 1 * flip, row, - col * flip ); break;
206
220
 
207
221
  case 2: coord.set( col, 1, - row ); break;
208
222
 
@@ -228,7 +242,7 @@ class LightProbeGenerator {
228
242
  // evaluate SH basis functions in direction dir
229
243
  SphericalHarmonics3.getBasisAt( dir, shBasis );
230
244
 
231
- // accummuulate
245
+ // accumulate
232
246
  for ( let j = 0; j < 9; j ++ ) {
233
247
 
234
248
  shCoefficients[ j ].x += shBasis[ j ] * color.r * weight;
@@ -71,7 +71,7 @@ class RectAreaLightTexturesLib {
71
71
  LTC_HALF_2.needsUpdate = true;
72
72
 
73
73
  this.LTC_HALF_1 = LTC_HALF_1;
74
- this.LTC_HALF_1 = LTC_HALF_2;
74
+ this.LTC_HALF_2 = LTC_HALF_2;
75
75
 
76
76
  this.LTC_FLOAT_1 = LTC_FLOAT_1;
77
77
  this.LTC_FLOAT_2 = LTC_FLOAT_2;
@@ -62,6 +62,31 @@ class LineGeometry extends LineSegmentsGeometry {
62
62
 
63
63
  }
64
64
 
65
+ setFromPoints( points ) {
66
+
67
+ // converts a vector3 or vector2 array to pairs format
68
+
69
+ const length = points.length - 1;
70
+ const positions = new Float32Array( 6 * length );
71
+
72
+ for ( let i = 0; i < length; i ++ ) {
73
+
74
+ positions[ 6 * i ] = points[ i ].x;
75
+ positions[ 6 * i + 1 ] = points[ i ].y;
76
+ positions[ 6 * i + 2 ] = points[ i ].z || 0;
77
+
78
+ positions[ 6 * i + 3 ] = points[ i + 1 ].x;
79
+ positions[ 6 * i + 4 ] = points[ i + 1 ].y;
80
+ positions[ 6 * i + 5 ] = points[ i + 1 ].z || 0;
81
+
82
+ }
83
+
84
+ super.setPositions( positions );
85
+
86
+ return this;
87
+
88
+ }
89
+
65
90
  fromLine( line ) {
66
91
 
67
92
  const geometry = line.geometry;
@@ -410,7 +410,6 @@ class LineMaterial extends ShaderMaterial {
410
410
  super( {
411
411
 
412
412
  type: 'LineMaterial',
413
-
414
413
  uniforms: UniformsUtils.clone( ShaderLib[ 'line' ].uniforms ),
415
414
 
416
415
  vertexShader: ShaderLib[ 'line' ].vertexShader,
@@ -82,6 +82,8 @@ class LineSegmentsGeometry extends InstancedBufferGeometry {
82
82
  this.setAttribute( 'instanceStart', new InterleavedBufferAttribute( instanceBuffer, 3, 0 ) ); // xyz
83
83
  this.setAttribute( 'instanceEnd', new InterleavedBufferAttribute( instanceBuffer, 3, 3 ) ); // xyz
84
84
 
85
+ this.instanceCount = this.attributes.instanceStart.count;
86
+
85
87
  //
86
88
 
87
89
  this.computeBoundingBox();
@@ -1,7 +1,8 @@
1
+ import { Line2NodeMaterial } from 'three/webgpu';
2
+
1
3
  import { LineSegments2 } from './LineSegments2.js';
2
4
  import { LineGeometry } from '../LineGeometry.js';
3
5
 
4
- import { Line2NodeMaterial } from 'three';
5
6
 
6
7
  class Line2 extends LineSegments2 {
7
8
 
@@ -9,12 +9,11 @@ import {
9
9
  Sphere,
10
10
  Vector3,
11
11
  Vector4,
12
- Line2NodeMaterial
13
- } from 'three';
12
+ Line2NodeMaterial,
13
+ Vector2
14
+ } from 'three/webgpu';
14
15
  import { LineSegmentsGeometry } from '../../lines/LineSegmentsGeometry.js';
15
16
 
16
- const _viewport = new Vector4();
17
-
18
17
  const _start = new Vector3();
19
18
  const _end = new Vector3();
20
19
 
@@ -30,6 +29,7 @@ const _closestPoint = new Vector3();
30
29
  const _box = new Box3();
31
30
  const _sphere = new Sphere();
32
31
  const _clipToWorldVector = new Vector4();
32
+ const _viewport = new Vector4();
33
33
 
34
34
  let _ray, _lineWidth;
35
35
 
@@ -94,8 +94,7 @@ function raycastWorldUnits( lineSegments, intersects ) {
94
94
  function raycastScreenSpace( lineSegments, camera, intersects ) {
95
95
 
96
96
  const projectionMatrix = camera.projectionMatrix;
97
- const material = lineSegments.material;
98
- const resolution = material.resolution;
97
+ const resolution = lineSegments.resolution;
99
98
  const matrixWorld = lineSegments.matrixWorld;
100
99
 
101
100
  const geometry = lineSegments.geometry;
@@ -234,6 +233,8 @@ class LineSegments2 extends Mesh {
234
233
 
235
234
  this.type = 'LineSegments2';
236
235
 
236
+ this.resolution = new Vector2();
237
+
237
238
  }
238
239
 
239
240
  // for backwards-compatibility, but could be a method of LineSegmentsGeometry...
@@ -265,6 +266,13 @@ class LineSegments2 extends Mesh {
265
266
 
266
267
  }
267
268
 
269
+ onBeforeRender( renderer ) {
270
+
271
+ renderer.getViewport( _viewport );
272
+ this.resolution.set( _viewport.z, _viewport.w );
273
+
274
+ }
275
+
268
276
  raycast( raycaster, intersects ) {
269
277
 
270
278
  const worldUnits = this.material.worldUnits;
@@ -304,7 +312,7 @@ class LineSegments2 extends Mesh {
304
312
  } else {
305
313
 
306
314
  const distanceToSphere = Math.max( camera.near, _sphere.distanceToPoint( _ray.origin ) );
307
- sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, material.resolution );
315
+ sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, this.resolution );
308
316
 
309
317
  }
310
318
 
@@ -334,7 +342,7 @@ class LineSegments2 extends Mesh {
334
342
  } else {
335
343
 
336
344
  const distanceToBox = Math.max( camera.near, _box.distanceToPoint( _ray.origin ) );
337
- boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, material.resolution );
345
+ boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, this.resolution );
338
346
 
339
347
  }
340
348
 
@@ -358,19 +366,6 @@ class LineSegments2 extends Mesh {
358
366
 
359
367
  }
360
368
 
361
- onBeforeRender( renderer ) {
362
-
363
- const uniforms = this.material.uniforms;
364
-
365
- if ( uniforms && uniforms.resolution ) {
366
-
367
- renderer.getViewport( _viewport );
368
- this.material.uniforms.resolution.value.set( _viewport.z, _viewport.w );
369
-
370
- }
371
-
372
- }
373
-
374
369
  }
375
370
 
376
371
  export { LineSegments2 };
@@ -0,0 +1,57 @@
1
+ import {
2
+ InstancedInterleavedBuffer,
3
+ InterleavedBufferAttribute,
4
+ Line2NodeMaterial,
5
+ Mesh,
6
+ Vector3
7
+ } from 'three/webgpu';
8
+
9
+ import { LineSegmentsGeometry } from '../../lines/LineSegmentsGeometry.js';
10
+
11
+ const _start = new Vector3();
12
+ const _end = new Vector3();
13
+
14
+ class Wireframe extends Mesh {
15
+
16
+ constructor( geometry = new LineSegmentsGeometry(), material = new Line2NodeMaterial( { color: Math.random() * 0xffffff } ) ) {
17
+
18
+ super( geometry, material );
19
+
20
+ this.isWireframe = true;
21
+
22
+ this.type = 'Wireframe';
23
+
24
+ }
25
+
26
+ // for backwards-compatibility, but could be a method of LineSegmentsGeometry...
27
+
28
+ computeLineDistances() {
29
+
30
+ const geometry = this.geometry;
31
+
32
+ const instanceStart = geometry.attributes.instanceStart;
33
+ const instanceEnd = geometry.attributes.instanceEnd;
34
+ const lineDistances = new Float32Array( 2 * instanceStart.count );
35
+
36
+ for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
37
+
38
+ _start.fromBufferAttribute( instanceStart, i );
39
+ _end.fromBufferAttribute( instanceEnd, i );
40
+
41
+ lineDistances[ j ] = ( j === 0 ) ? 0 : lineDistances[ j - 1 ];
42
+ lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
43
+
44
+ }
45
+
46
+ const instanceDistanceBuffer = new InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
47
+
48
+ geometry.setAttribute( 'instanceDistanceStart', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
49
+ geometry.setAttribute( 'instanceDistanceEnd', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
50
+
51
+ return this;
52
+
53
+ }
54
+
55
+ }
56
+
57
+ export { Wireframe };
@@ -745,6 +745,7 @@ class Rhino3dmLoader extends Loader {
745
745
 
746
746
  const texture = new CanvasTexture( ctx.canvas );
747
747
  texture.minFilter = LinearFilter;
748
+ texture.generateMipmaps = false;
748
749
  texture.wrapS = ClampToEdgeWrapping;
749
750
  texture.wrapT = ClampToEdgeWrapping;
750
751
 
@@ -122,6 +122,8 @@ class ThreeMFLoader extends Loader {
122
122
 
123
123
  }
124
124
 
125
+ let rootModelFile = null;
126
+
125
127
  for ( file in zip ) {
126
128
 
127
129
  if ( file.match( /\_rels\/.rels$/ ) ) {
@@ -132,9 +134,13 @@ class ThreeMFLoader extends Loader {
132
134
 
133
135
  modelRelsName = file;
134
136
 
135
- } else if ( file.match( /^3D\/.*\.model$/ ) ) {
137
+ } else if ( file.match( /^3D\/[^\/]*\.model$/ ) ) {
138
+
139
+ rootModelFile = file;
136
140
 
137
- modelPartNames.push( file );
141
+ } else if ( file.match( /^3D\/.*\/.*\.model$/ ) ) {
142
+
143
+ modelPartNames.push( file ); // sub models
138
144
 
139
145
  } else if ( file.match( /^3D\/Textures?\/.*/ ) ) {
140
146
 
@@ -144,6 +150,8 @@ class ThreeMFLoader extends Loader {
144
150
 
145
151
  }
146
152
 
153
+ modelPartNames.push( rootModelFile ); // push root model at the end so it is processed after the sub models
154
+
147
155
  if ( relsName === undefined ) throw new Error( 'THREE.ThreeMFLoader: Cannot find relationship file `rels` in 3MF archive.' );
148
156
 
149
157
  //
@@ -375,6 +383,73 @@ class ThreeMFLoader extends Loader {
375
383
 
376
384
  }
377
385
 
386
+ function parseImplicitIONode( implicitIONode ) {
387
+
388
+ const portNodes = implicitIONode.children;
389
+ const portArguments = {};
390
+ for ( let i = 0; i < portNodes.length; i ++ ) {
391
+
392
+ const args = { type: portNodes[ i ].nodeName.substring( 2 ) };
393
+ for ( let j = 0; j < portNodes[ i ].attributes.length; j ++ ) {
394
+
395
+ const attrib = portNodes[ i ].attributes[ j ];
396
+ if ( attrib.specified ) {
397
+
398
+ args[ attrib.name ] = attrib.value;
399
+
400
+ }
401
+
402
+ }
403
+
404
+ portArguments[ portNodes[ i ].getAttribute( 'identifier' ) ] = args;
405
+
406
+ }
407
+
408
+ return portArguments;
409
+
410
+ }
411
+
412
+ function parseImplicitFunctionNode( implicitFunctionNode ) {
413
+
414
+ const implicitFunctionData = {
415
+ id: implicitFunctionNode.getAttribute( 'id' ),
416
+ displayname: implicitFunctionNode.getAttribute( 'displayname' )
417
+ };
418
+
419
+ const functionNodes = implicitFunctionNode.children;
420
+
421
+ const operations = {};
422
+
423
+ for ( let i = 0; i < functionNodes.length; i ++ ) {
424
+
425
+ const operatorNode = functionNodes[ i ];
426
+
427
+ if ( operatorNode.nodeName === 'i:in' || operatorNode.nodeName === 'i:out' ) {
428
+
429
+ operations[ operatorNode.nodeName === 'i:in' ? 'inputs' : 'outputs' ] = parseImplicitIONode( operatorNode );
430
+
431
+ } else {
432
+
433
+ const inputNodes = operatorNode.children;
434
+ const portArguments = { 'op': operatorNode.nodeName.substring( 2 ), 'identifier': operatorNode.getAttribute( 'identifier' ) };
435
+ for ( let i = 0; i < inputNodes.length; i ++ ) {
436
+
437
+ portArguments[ inputNodes[ i ].nodeName.substring( 2 ) ] = parseImplicitIONode( inputNodes[ i ] );
438
+
439
+ }
440
+
441
+ operations[ portArguments[ 'identifier' ] ] = portArguments;
442
+
443
+ }
444
+
445
+ }
446
+
447
+ implicitFunctionData[ 'operations' ] = operations;
448
+
449
+ return implicitFunctionData;
450
+
451
+ }
452
+
378
453
  function parseMetallicDisplaypropertiesNode( metallicDisplaypropetiesNode ) {
379
454
 
380
455
  const metallicDisplaypropertiesData = {
@@ -673,6 +748,25 @@ class ThreeMFLoader extends Loader {
673
748
 
674
749
  //
675
750
 
751
+ const implicitFunctionNodes = resourcesNode.querySelectorAll( 'implicitfunction' );
752
+
753
+ if ( implicitFunctionNodes.length > 0 ) {
754
+
755
+ resourcesData[ 'implicitfunction' ] = {};
756
+
757
+ }
758
+
759
+
760
+ for ( let i = 0; i < implicitFunctionNodes.length; i ++ ) {
761
+
762
+ const implicitFunctionNode = implicitFunctionNodes[ i ];
763
+ const implicitFunctionData = parseImplicitFunctionNode( implicitFunctionNode );
764
+ resourcesData[ 'implicitfunction' ][ implicitFunctionData[ 'id' ] ] = implicitFunctionData;
765
+
766
+ }
767
+
768
+ //
769
+
676
770
  resourcesData[ 'pbmetallicdisplayproperties' ] = {};
677
771
  const pbmetallicdisplaypropertiesNodes = resourcesNode.querySelectorAll( 'pbmetallicdisplayproperties' );
678
772
 
@@ -846,11 +940,13 @@ class ThreeMFLoader extends Loader {
846
940
  case 'linear':
847
941
  texture.magFilter = LinearFilter;
848
942
  texture.minFilter = LinearFilter;
943
+ texture.generateMipmaps = false;
849
944
  break;
850
945
 
851
946
  case 'nearest':
852
947
  texture.magFilter = NearestFilter;
853
948
  texture.minFilter = NearestFilter;
949
+ texture.generateMipmaps = false;
854
950
  break;
855
951
 
856
952
  default:
@@ -1367,6 +1463,12 @@ class ThreeMFLoader extends Loader {
1367
1463
 
1368
1464
  }
1369
1465
 
1466
+ if ( modelData.resources.implicitfunction ) {
1467
+
1468
+ console.warn( 'THREE.ThreeMFLoader: Implicit Functions are implemented in data-only.', modelData.resources.implicitfunction );
1469
+
1470
+ }
1471
+
1370
1472
  }
1371
1473
 
1372
1474
  function buildObjects( data3mf ) {
@@ -204,7 +204,7 @@ class BVHLoader extends Loader {
204
204
  }
205
205
 
206
206
  /*
207
- Recursively parses the HIERACHY section of the BVH file
207
+ Recursively parses the HIERARCHY section of the BVH file
208
208
 
209
209
  - lines: all lines of the file. lines are consumed as we go along.
210
210
  - firstline: line containing the node type and name e.g. 'JOINT hip'
@@ -5,6 +5,7 @@ import {
5
5
  BufferGeometry,
6
6
  ClampToEdgeWrapping,
7
7
  Color,
8
+ ColorManagement,
8
9
  DirectionalLight,
9
10
  DoubleSide,
10
11
  FileLoader,
@@ -298,7 +299,7 @@ class ColladaLoader extends Loader {
298
299
 
299
300
  if ( hasChildren === false ) {
300
301
 
301
- // since 'id' attributes can be optional, it's necessary to generate a UUID for unqiue assignment
302
+ // since 'id' attributes can be optional, it's necessary to generate a UUID for unique assignment
302
303
 
303
304
  library.animations[ xml.getAttribute( 'id' ) || MathUtils.generateUUID() ] = data;
304
305
 
@@ -976,7 +977,7 @@ class ColladaLoader extends Loader {
976
977
  }
977
978
 
978
979
  // we sort the joints in descending order based on the weights.
979
- // this ensures, we only procced the most important joints of the vertex
980
+ // this ensures, we only proceed the most important joints of the vertex
980
981
 
981
982
  vertexSkinData.sort( descending );
982
983
 
@@ -1592,7 +1593,7 @@ class ColladaLoader extends Loader {
1592
1593
 
1593
1594
  }
1594
1595
 
1595
- // create texture if image is avaiable
1596
+ // create texture if image is available
1596
1597
 
1597
1598
  if ( image !== null ) {
1598
1599
 
@@ -1681,9 +1682,9 @@ class ColladaLoader extends Loader {
1681
1682
 
1682
1683
  }
1683
1684
 
1684
- material.color.convertSRGBToLinear();
1685
- if ( material.specular ) material.specular.convertSRGBToLinear();
1686
- if ( material.emissive ) material.emissive.convertSRGBToLinear();
1685
+ ColorManagement.toWorkingColorSpace( material.color, SRGBColorSpace );
1686
+ if ( material.specular ) ColorManagement.toWorkingColorSpace( material.specular, SRGBColorSpace );
1687
+ if ( material.emissive ) ColorManagement.toWorkingColorSpace( material.emissive, SRGBColorSpace );
1687
1688
 
1688
1689
  //
1689
1690
 
@@ -2019,7 +2020,8 @@ class ColladaLoader extends Loader {
2019
2020
 
2020
2021
  case 'color':
2021
2022
  const array = parseFloats( child.textContent );
2022
- data.color = new Color().fromArray( array ).convertSRGBToLinear();
2023
+ data.color = new Color().fromArray( array );
2024
+ ColorManagement.toWorkingColorSpace( data.color, SRGBColorSpace );
2023
2025
  break;
2024
2026
 
2025
2027
  case 'falloff_angle':
@@ -2390,7 +2392,7 @@ class ColladaLoader extends Loader {
2390
2392
  break;
2391
2393
 
2392
2394
  default:
2393
- console.warn( 'THREE.ColladaLoader: Unknow primitive type:', primitive.type );
2395
+ console.warn( 'THREE.ColladaLoader: Unknown primitive type:', primitive.type );
2394
2396
 
2395
2397
  }
2396
2398
 
@@ -2548,8 +2550,9 @@ class ColladaLoader extends Loader {
2548
2550
  tempColor.setRGB(
2549
2551
  array[ startIndex + 0 ],
2550
2552
  array[ startIndex + 1 ],
2551
- array[ startIndex + 2 ]
2552
- ).convertSRGBToLinear();
2553
+ array[ startIndex + 2 ],
2554
+ SRGBColorSpace
2555
+ );
2553
2556
 
2554
2557
  array[ startIndex + 0 ] = tempColor.r;
2555
2558
  array[ startIndex + 1 ] = tempColor.g;
@@ -3431,7 +3434,7 @@ class ColladaLoader extends Loader {
3431
3434
  let i, j, data;
3432
3435
 
3433
3436
  // a skeleton can have multiple root bones. collada expresses this
3434
- // situtation with multiple "skeleton" tags per controller instance
3437
+ // situation with multiple "skeleton" tags per controller instance
3435
3438
 
3436
3439
  for ( i = 0; i < skeletons.length; i ++ ) {
3437
3440
 
@@ -3968,7 +3971,7 @@ class ColladaLoader extends Loader {
3968
3971
  } else {
3969
3972
 
3970
3973
  result += '\n';
3971
- stack.push.apply( stack, node.childNodes );
3974
+ stack.push( ...node.childNodes );
3972
3975
 
3973
3976
  }
3974
3977
 
@@ -109,6 +109,33 @@ class DDSLoader extends CompressedTextureLoader {
109
109
 
110
110
  }
111
111
 
112
+ function loadRGBMip( buffer, dataOffset, width, height ) {
113
+
114
+ const dataLength = width * height * 3;
115
+ const srcBuffer = new Uint8Array( buffer, dataOffset, dataLength );
116
+ const byteArray = new Uint8Array( width * height * 4 );
117
+ let dst = 0;
118
+ let src = 0;
119
+ for ( let y = 0; y < height; y ++ ) {
120
+
121
+ for ( let x = 0; x < width; x ++ ) {
122
+
123
+ const b = srcBuffer[ src ]; src ++;
124
+ const g = srcBuffer[ src ]; src ++;
125
+ const r = srcBuffer[ src ]; src ++;
126
+ byteArray[ dst ] = r; dst ++; //r
127
+ byteArray[ dst ] = g; dst ++; //g
128
+ byteArray[ dst ] = b; dst ++; //b
129
+ byteArray[ dst ] = 255; dst ++; //a
130
+
131
+ }
132
+
133
+ }
134
+
135
+ return byteArray;
136
+
137
+ }
138
+
112
139
  const FOURCC_DXT1 = fourCCToInt32( 'DXT1' );
113
140
  const FOURCC_DXT3 = fourCCToInt32( 'DXT3' );
114
141
  const FOURCC_DXT5 = fourCCToInt32( 'DXT5' );
@@ -161,6 +188,7 @@ class DDSLoader extends CompressedTextureLoader {
161
188
  const fourCC = header[ off_pfFourCC ];
162
189
 
163
190
  let isRGBAUncompressed = false;
191
+ let isRGBUncompressed = false;
164
192
 
165
193
  let dataOffset = header[ off_size ] + 4;
166
194
 
@@ -236,6 +264,15 @@ class DDSLoader extends CompressedTextureLoader {
236
264
  blockBytes = 64;
237
265
  dds.format = RGBAFormat;
238
266
 
267
+ } else if ( header[ off_RGBBitCount ] === 24
268
+ && header[ off_RBitMask ] & 0xff0000
269
+ && header[ off_GBitMask ] & 0xff00
270
+ && header[ off_BBitMask ] & 0xff ) {
271
+
272
+ isRGBUncompressed = true;
273
+ blockBytes = 64;
274
+ dds.format = RGBAFormat;
275
+
239
276
  } else {
240
277
 
241
278
  console.error( 'THREE.DDSLoader.parse: Unsupported FourCC code ', int32ToFourCC( fourCC ) );
@@ -290,6 +327,11 @@ class DDSLoader extends CompressedTextureLoader {
290
327
  byteArray = loadARGBMip( buffer, dataOffset, width, height );
291
328
  dataLength = byteArray.length;
292
329
 
330
+ } else if ( isRGBUncompressed ) {
331
+
332
+ byteArray = loadRGBMip( buffer, dataOffset, width, height );
333
+ dataLength = width * height * 3;
334
+
293
335
  } else {
294
336
 
295
337
  dataLength = Math.max( 4, width ) / 4 * Math.max( 4, height ) / 4 * blockBytes;
@@ -2,6 +2,7 @@ import {
2
2
  BufferAttribute,
3
3
  BufferGeometry,
4
4
  Color,
5
+ ColorManagement,
5
6
  FileLoader,
6
7
  Loader,
7
8
  LinearSRGBColorSpace,
@@ -235,7 +236,8 @@ class DRACOLoader extends Loader {
235
236
 
236
237
  for ( let i = 0, il = attribute.count; i < il; i ++ ) {
237
238
 
238
- _color.fromBufferAttribute( attribute, i ).convertSRGBToLinear();
239
+ _color.fromBufferAttribute( attribute, i );
240
+ ColorManagement.toWorkingColorSpace( _color, SRGBColorSpace );
239
241
  attribute.setXYZ( i, _color.r, _color.g, _color.b );
240
242
 
241
243
  }