super-three 0.136.1 → 0.144.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 (842) hide show
  1. package/README.md +31 -33
  2. package/build/three.cjs +36413 -0
  3. package/build/three.js +5108 -5809
  4. package/build/three.min.js +2 -2
  5. package/build/three.module.js +7877 -8586
  6. package/examples/js/animation/CCDIKSolver.js +3 -2
  7. package/examples/js/animation/MMDAnimationHelper.js +3 -1
  8. package/examples/js/animation/MMDPhysics.js +3 -18
  9. package/examples/js/controls/ArcballControls.js +19 -4
  10. package/examples/js/controls/FirstPersonControls.js +0 -7
  11. package/examples/js/controls/FlyControls.js +0 -8
  12. package/examples/js/controls/OrbitControls.js +0 -4
  13. package/examples/js/controls/PointerLockControls.js +3 -10
  14. package/examples/js/controls/TrackballControls.js +1 -6
  15. package/examples/js/controls/TransformControls.js +25 -22
  16. package/examples/js/csm/CSMFrustum.js +1 -1
  17. package/examples/js/csm/CSMShader.js +51 -35
  18. package/examples/js/curves/CurveExtras.js +14 -18
  19. package/examples/js/effects/AnaglyphEffect.js +9 -6
  20. package/examples/js/effects/AsciiEffect.js +10 -29
  21. package/examples/js/effects/OutlineEffect.js +4 -24
  22. package/examples/js/effects/ParallaxBarrierEffect.js +2 -2
  23. package/examples/js/effects/PeppersGhostEffect.js +2 -2
  24. package/examples/js/effects/StereoEffect.js +2 -2
  25. package/examples/js/environments/RoomEnvironment.js +22 -0
  26. package/examples/js/exporters/ColladaExporter.js +33 -20
  27. package/examples/js/exporters/DRACOExporter.js +0 -12
  28. package/examples/js/exporters/EXRExporter.js +458 -0
  29. package/examples/js/exporters/GLTFExporter.js +246 -119
  30. package/examples/js/exporters/OBJExporter.js +14 -41
  31. package/examples/js/exporters/PLYExporter.js +27 -44
  32. package/examples/js/exporters/STLExporter.js +0 -7
  33. package/examples/js/exporters/USDZExporter.js +19 -0
  34. package/examples/js/geometries/ConvexGeometry.js +1 -1
  35. package/examples/js/geometries/DecalGeometry.js +0 -7
  36. package/examples/js/geometries/LightningStrike.js +2 -2
  37. package/examples/js/geometries/ParametricGeometries.js +3 -3
  38. package/examples/js/geometries/ParametricGeometry.js +1 -8
  39. package/examples/js/geometries/TextGeometry.js +12 -10
  40. package/examples/js/helpers/OctreeHelper.js +74 -0
  41. package/examples/js/helpers/VertexNormalsHelper.js +4 -23
  42. package/examples/js/helpers/VertexTangentsHelper.js +3 -13
  43. package/examples/js/helpers/ViewHelper.js +266 -0
  44. package/examples/js/interactive/HTMLMesh.js +249 -42
  45. package/examples/js/interactive/SelectionHelper.js +3 -1
  46. package/examples/js/libs/ktx-parse.umd.js +1 -0
  47. package/examples/js/libs/meshopt_decoder.js +98 -32
  48. package/examples/js/libs/opentype.min.js +1 -118
  49. package/examples/js/lines/Line2.js +1 -2
  50. package/examples/js/lines/LineGeometry.js +10 -21
  51. package/examples/js/lines/LineMaterial.js +2 -3
  52. package/examples/js/lines/LineSegments2.js +214 -140
  53. package/examples/js/lines/LineSegmentsGeometry.js +3 -14
  54. package/examples/js/lines/Wireframe.js +2 -3
  55. package/examples/js/lines/WireframeGeometry2.js +1 -2
  56. package/examples/js/loaders/3MFLoader.js +21 -17
  57. package/examples/js/loaders/AMFLoader.js +1 -1
  58. package/examples/js/loaders/ColladaLoader.js +34 -12
  59. package/examples/js/loaders/DDSLoader.js +23 -30
  60. package/examples/js/loaders/DRACOLoader.js +2 -25
  61. package/examples/js/loaders/EXRLoader.js +279 -276
  62. package/examples/js/loaders/FBXLoader.js +21 -3
  63. package/examples/js/loaders/FontLoader.js +4 -18
  64. package/examples/js/loaders/GCodeLoader.js +0 -1
  65. package/examples/js/loaders/GLTFLoader.js +300 -95
  66. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -11
  67. package/examples/js/loaders/KMZLoader.js +1 -1
  68. package/examples/js/loaders/LDrawLoader.js +653 -480
  69. package/examples/js/loaders/LUT3dlLoader.js +1 -1
  70. package/examples/js/loaders/LUTCubeLoader.js +1 -1
  71. package/examples/js/loaders/LWOLoader.js +4 -2
  72. package/examples/js/loaders/LogLuvLoader.js +1 -2
  73. package/examples/js/loaders/MD2Loader.js +5 -5
  74. package/examples/js/loaders/MMDLoader.js +18 -4
  75. package/examples/js/loaders/MTLLoader.js +10 -3
  76. package/examples/js/loaders/NRRDLoader.js +1 -1
  77. package/examples/js/loaders/OBJLoader.js +16 -18
  78. package/examples/js/loaders/PCDLoader.js +81 -27
  79. package/examples/js/loaders/PDBLoader.js +11 -11
  80. package/examples/js/loaders/PLYLoader.js +8 -4
  81. package/examples/js/loaders/RGBELoader.js +3 -11
  82. package/examples/js/loaders/RGBMLoader.js +12 -15
  83. package/examples/js/loaders/STLLoader.js +1 -1
  84. package/examples/js/loaders/SVGLoader.js +23 -14
  85. package/examples/js/loaders/TIFFLoader.js +31 -0
  86. package/examples/js/loaders/VOXLoader.js +3 -4
  87. package/examples/js/loaders/VRMLLoader.js +33 -24
  88. package/examples/js/loaders/VTKLoader.js +261 -296
  89. package/examples/js/loaders/lwo/LWO2Parser.js +12 -11
  90. package/examples/js/loaders/lwo/LWO3Parser.js +12 -11
  91. package/examples/js/materials/MeshGouraudMaterial.js +385 -0
  92. package/examples/js/math/ColorConverter.js +0 -50
  93. package/examples/js/math/ConvexHull.js +6 -15
  94. package/examples/js/math/Lut.js +27 -26
  95. package/examples/js/misc/GPUComputationRenderer.js +23 -0
  96. package/examples/js/misc/MorphAnimMesh.js +2 -2
  97. package/examples/js/misc/ProgressiveLightMap.js +1 -1
  98. package/examples/js/misc/Volume.js +233 -234
  99. package/examples/js/misc/VolumeSlice.js +108 -106
  100. package/examples/js/modifiers/EdgeSplitModifier.js +0 -13
  101. package/examples/js/modifiers/SimplifyModifier.js +2 -19
  102. package/examples/js/modifiers/TessellateModifier.js +0 -7
  103. package/examples/js/objects/GroundProjectedEnv.js +193 -0
  104. package/examples/js/objects/Lensflare.js +4 -4
  105. package/examples/js/objects/LightningStorm.js +4 -5
  106. package/examples/js/objects/MarchingCubes.js +6 -11
  107. package/examples/js/objects/Reflector.js +18 -5
  108. package/examples/js/objects/ReflectorForSSRPass.js +4 -5
  109. package/examples/js/objects/Refractor.js +19 -7
  110. package/examples/js/objects/ShadowMesh.js +6 -3
  111. package/examples/js/objects/Sky.js +1 -1
  112. package/examples/js/objects/Water.js +1 -2
  113. package/examples/js/objects/Water2.js +1 -1
  114. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +6 -10
  115. package/examples/js/postprocessing/AfterimagePass.js +2 -6
  116. package/examples/js/postprocessing/BloomPass.js +50 -19
  117. package/examples/js/postprocessing/DotScreenPass.js +1 -1
  118. package/examples/js/postprocessing/EffectComposer.js +1 -6
  119. package/examples/js/postprocessing/LUTPass.js +2 -2
  120. package/examples/js/postprocessing/OutlinePass.js +13 -20
  121. package/examples/js/postprocessing/SAOPass.js +2 -7
  122. package/examples/js/postprocessing/SSAARenderPass.js +1 -6
  123. package/examples/js/postprocessing/SSRPass.js +3 -8
  124. package/examples/js/postprocessing/TAARenderPass.js +4 -4
  125. package/examples/js/postprocessing/UnrealBloomPass.js +3 -12
  126. package/examples/js/renderers/CSS2DRenderer.js +22 -21
  127. package/examples/js/renderers/CSS3DRenderer.js +42 -38
  128. package/examples/js/renderers/Projector.js +99 -147
  129. package/examples/js/renderers/SVGRenderer.js +3 -4
  130. package/examples/js/shaders/BlendShader.js +2 -1
  131. package/examples/js/shaders/CopyShader.js +4 -3
  132. package/examples/js/shaders/FXAAShader.js +239 -1069
  133. package/examples/js/shaders/FreiChenShader.js +1 -1
  134. package/examples/js/shaders/HorizontalBlurShader.js +1 -1
  135. package/examples/js/shaders/HorizontalTiltShiftShader.js +1 -1
  136. package/examples/js/shaders/LuminosityShader.js +1 -1
  137. package/examples/js/shaders/MMDToonShader.js +6 -2
  138. package/examples/js/shaders/SSRShader.js +3 -3
  139. package/examples/js/shaders/ToneMapShader.js +2 -2
  140. package/examples/js/utils/BufferGeometryUtils.js +282 -22
  141. package/examples/js/utils/GPUStatsPanel.js +1 -1
  142. package/examples/js/utils/GeometryUtils.js +2 -18
  143. package/examples/js/utils/LDrawUtils.js +182 -0
  144. package/examples/js/utils/PackedPhongMaterial.js +1 -1
  145. package/examples/js/utils/SceneUtils.js +57 -14
  146. package/examples/js/utils/SkeletonUtils.js +1 -1
  147. package/examples/js/utils/UVsDebug.js +23 -33
  148. package/examples/jsm/animation/CCDIKSolver.js +3 -9
  149. package/examples/jsm/animation/MMDPhysics.js +4 -23
  150. package/examples/jsm/capabilities/WebGPU.js +6 -0
  151. package/examples/jsm/controls/ArcballControls.js +19 -2
  152. package/examples/jsm/controls/FirstPersonControls.js +0 -7
  153. package/examples/jsm/controls/FlyControls.js +0 -7
  154. package/examples/jsm/controls/OrbitControls.js +0 -5
  155. package/examples/jsm/controls/PointerLockControls.js +4 -9
  156. package/examples/jsm/controls/TrackballControls.js +1 -7
  157. package/examples/jsm/controls/TransformControls.js +24 -22
  158. package/examples/jsm/csm/CSMFrustum.js +1 -1
  159. package/examples/jsm/csm/CSMShader.js +51 -35
  160. package/examples/jsm/curves/CurveExtras.js +15 -17
  161. package/examples/jsm/effects/AnaglyphEffect.js +6 -6
  162. package/examples/jsm/effects/AsciiEffect.js +9 -22
  163. package/examples/jsm/effects/OutlineEffect.js +4 -25
  164. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
  165. package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
  166. package/examples/jsm/effects/StereoEffect.js +2 -2
  167. package/examples/jsm/environments/RoomEnvironment.js +23 -0
  168. package/examples/jsm/exporters/ColladaExporter.js +35 -19
  169. package/examples/jsm/exporters/DRACOExporter.js +0 -13
  170. package/examples/jsm/exporters/EXRExporter.js +507 -0
  171. package/examples/jsm/exporters/GLTFExporter.js +276 -104
  172. package/examples/jsm/exporters/KTX2Exporter.js +281 -0
  173. package/examples/jsm/exporters/OBJExporter.js +11 -36
  174. package/examples/jsm/exporters/PLYExporter.js +37 -43
  175. package/examples/jsm/exporters/STLExporter.js +1 -9
  176. package/examples/jsm/exporters/USDZExporter.js +26 -3
  177. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  178. package/examples/jsm/geometries/DecalGeometry.js +0 -7
  179. package/examples/jsm/geometries/LightningStrike.js +2 -2
  180. package/examples/jsm/geometries/ParametricGeometries.js +3 -3
  181. package/examples/jsm/geometries/ParametricGeometry.js +0 -6
  182. package/examples/jsm/geometries/TextGeometry.js +13 -13
  183. package/examples/jsm/helpers/OctreeHelper.js +58 -0
  184. package/examples/jsm/helpers/VertexNormalsHelper.js +4 -25
  185. package/examples/jsm/helpers/VertexTangentsHelper.js +3 -15
  186. package/examples/jsm/helpers/ViewHelper.js +295 -0
  187. package/examples/jsm/interactive/HTMLMesh.js +268 -36
  188. package/examples/jsm/interactive/SelectionHelper.js +6 -4
  189. package/examples/jsm/libs/flow.module.js +947 -183
  190. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  191. package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
  192. package/examples/jsm/libs/mikktspace.module.js +128 -0
  193. package/examples/jsm/libs/opentype.module.js +14568 -0
  194. package/examples/jsm/libs/utif.module.js +1579 -0
  195. package/examples/jsm/libs/zstddec.module.js +1 -0
  196. package/examples/jsm/lines/Line2.js +2 -2
  197. package/examples/jsm/lines/LineGeometry.js +11 -19
  198. package/examples/jsm/lines/LineMaterial.js +3 -3
  199. package/examples/jsm/lines/LineSegments2.js +210 -145
  200. package/examples/jsm/lines/LineSegmentsGeometry.js +3 -12
  201. package/examples/jsm/lines/Wireframe.js +3 -3
  202. package/examples/jsm/lines/WireframeGeometry2.js +2 -2
  203. package/examples/jsm/loaders/3DMLoader.js +3 -2
  204. package/examples/jsm/loaders/3MFLoader.js +21 -17
  205. package/examples/jsm/loaders/AMFLoader.js +1 -1
  206. package/examples/jsm/loaders/ColladaLoader.js +41 -12
  207. package/examples/jsm/loaders/DDSLoader.js +21 -28
  208. package/examples/jsm/loaders/DRACOLoader.js +2 -28
  209. package/examples/jsm/loaders/EXRLoader.js +278 -275
  210. package/examples/jsm/loaders/FBXLoader.js +21 -3
  211. package/examples/jsm/loaders/FontLoader.js +5 -18
  212. package/examples/jsm/loaders/GCodeLoader.js +0 -1
  213. package/examples/jsm/loaders/GLTFLoader.js +314 -101
  214. package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
  215. package/examples/jsm/loaders/KMZLoader.js +1 -1
  216. package/examples/jsm/loaders/KTX2Loader.js +193 -40
  217. package/examples/jsm/loaders/LDrawLoader.js +641 -495
  218. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  219. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  220. package/examples/jsm/loaders/LWOLoader.js +5 -3
  221. package/examples/jsm/loaders/LogLuvLoader.js +2 -2
  222. package/examples/jsm/loaders/MD2Loader.js +5 -5
  223. package/examples/jsm/loaders/MMDLoader.js +21 -3
  224. package/examples/jsm/loaders/MTLLoader.js +11 -4
  225. package/examples/jsm/loaders/NRRDLoader.js +1 -2
  226. package/examples/jsm/loaders/OBJLoader.js +17 -21
  227. package/examples/jsm/loaders/PCDLoader.js +82 -28
  228. package/examples/jsm/loaders/PDBLoader.js +11 -11
  229. package/examples/jsm/loaders/PLYLoader.js +13 -5
  230. package/examples/jsm/loaders/RGBELoader.js +4 -12
  231. package/examples/jsm/loaders/RGBMLoader.js +14 -11
  232. package/examples/jsm/loaders/STLLoader.js +1 -1
  233. package/examples/jsm/loaders/SVGLoader.js +24 -13
  234. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  235. package/examples/jsm/loaders/TTFLoader.js +1 -1
  236. package/examples/jsm/loaders/USDZLoader.js +393 -0
  237. package/examples/jsm/loaders/VOXLoader.js +5 -5
  238. package/examples/jsm/loaders/VRMLLoader.js +23 -26
  239. package/examples/jsm/loaders/VTKLoader.js +257 -285
  240. package/examples/jsm/loaders/ifc/web-ifc-api.js +9 -8
  241. package/examples/jsm/loaders/lwo/LWO2Parser.js +10 -12
  242. package/examples/jsm/loaders/lwo/LWO3Parser.js +10 -12
  243. package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
  244. package/examples/jsm/math/ColorConverter.js +1 -49
  245. package/examples/jsm/math/ConvexHull.js +6 -15
  246. package/examples/jsm/math/Lut.js +35 -25
  247. package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
  248. package/examples/jsm/misc/MorphAnimMesh.js +2 -2
  249. package/examples/jsm/misc/ProgressiveLightMap.js +1 -1
  250. package/examples/jsm/misc/Volume.js +204 -213
  251. package/examples/jsm/misc/VolumeSlice.js +96 -98
  252. package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -13
  253. package/examples/jsm/modifiers/SimplifyModifier.js +2 -19
  254. package/examples/jsm/modifiers/TessellateModifier.js +0 -7
  255. package/examples/jsm/node-editor/NodeEditor.js +505 -182
  256. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
  257. package/examples/jsm/node-editor/accessors/NormalEditor.js +9 -9
  258. package/examples/jsm/node-editor/accessors/PositionEditor.js +9 -9
  259. package/examples/jsm/node-editor/accessors/UVEditor.js +7 -8
  260. package/examples/jsm/node-editor/core/BaseNode.js +89 -0
  261. package/examples/jsm/node-editor/core/DataFile.js +59 -0
  262. package/examples/jsm/node-editor/core/FileEditor.js +20 -0
  263. package/examples/jsm/node-editor/core/FileURLEditor.js +29 -0
  264. package/examples/jsm/node-editor/display/BlendEditor.js +10 -9
  265. package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
  266. package/examples/jsm/node-editor/examples/animate-uv.json +1 -1
  267. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -1
  268. package/examples/jsm/node-editor/examples/matcap.json +1 -0
  269. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -1
  270. package/examples/jsm/node-editor/examples/rim.json +1 -1
  271. package/examples/jsm/node-editor/inputs/ColorEditor.js +18 -13
  272. package/examples/jsm/node-editor/inputs/FloatEditor.js +8 -9
  273. package/examples/jsm/node-editor/inputs/SliderEditor.js +6 -7
  274. package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
  275. package/examples/jsm/node-editor/inputs/Vector2Editor.js +9 -9
  276. package/examples/jsm/node-editor/inputs/Vector3Editor.js +11 -11
  277. package/examples/jsm/node-editor/inputs/Vector4Editor.js +12 -12
  278. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +87 -0
  279. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +102 -0
  280. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +31 -18
  281. package/examples/jsm/node-editor/math/AngleEditor.js +40 -0
  282. package/examples/jsm/node-editor/math/DotEditor.js +8 -9
  283. package/examples/jsm/node-editor/math/InvertEditor.js +8 -7
  284. package/examples/jsm/node-editor/math/LimiterEditor.js +28 -14
  285. package/examples/jsm/node-editor/math/NormalizeEditor.js +9 -7
  286. package/examples/jsm/node-editor/math/OperatorEditor.js +29 -16
  287. package/examples/jsm/node-editor/math/PowerEditor.js +20 -10
  288. package/examples/jsm/node-editor/math/TrigonometryEditor.js +15 -9
  289. package/examples/jsm/node-editor/procedural/CheckerEditor.js +7 -6
  290. package/examples/jsm/node-editor/scene/MeshEditor.js +99 -0
  291. package/examples/jsm/node-editor/scene/Object3DEditor.js +160 -0
  292. package/examples/jsm/node-editor/scene/PointsEditor.js +99 -0
  293. package/examples/jsm/node-editor/utils/JoinEditor.js +58 -0
  294. package/examples/jsm/node-editor/utils/OscillatorEditor.js +9 -8
  295. package/examples/jsm/node-editor/utils/PreviewEditor.js +166 -0
  296. package/examples/jsm/node-editor/utils/SplitEditor.js +39 -0
  297. package/examples/jsm/node-editor/utils/TimerEditor.js +7 -6
  298. package/examples/jsm/nodes/Nodes.js +313 -94
  299. package/examples/jsm/nodes/accessors/BufferNode.js +24 -0
  300. package/examples/jsm/nodes/accessors/CameraNode.js +27 -196
  301. package/examples/jsm/nodes/accessors/CubeTextureNode.js +107 -0
  302. package/examples/jsm/nodes/accessors/InstanceNode.js +58 -0
  303. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialNode.js +49 -11
  304. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialReferenceNode.js +0 -0
  305. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelNode.js +8 -0
  306. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelViewProjectionNode.js +0 -0
  307. package/examples/jsm/nodes/accessors/NormalNode.js +39 -99
  308. package/examples/jsm/{renderers/nodes → nodes}/accessors/Object3DNode.js +34 -17
  309. package/examples/jsm/{renderers/nodes → nodes}/accessors/PointUVNode.js +2 -2
  310. package/examples/jsm/nodes/accessors/PositionNode.js +41 -110
  311. package/examples/jsm/nodes/accessors/ReferenceNode.js +65 -0
  312. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
  313. package/examples/jsm/nodes/accessors/SkinningNode.js +102 -0
  314. package/examples/jsm/nodes/accessors/StorageBufferNode.js +21 -0
  315. package/examples/jsm/nodes/accessors/TextureNode.js +100 -0
  316. package/examples/jsm/nodes/accessors/UVNode.js +17 -43
  317. package/examples/jsm/nodes/accessors/UserDataNode.js +23 -0
  318. package/examples/jsm/nodes/core/ArrayUniformNode.js +23 -0
  319. package/examples/jsm/nodes/core/AttributeNode.js +33 -30
  320. package/examples/jsm/{renderers/nodes → nodes}/core/BypassNode.js +2 -2
  321. package/examples/jsm/nodes/core/CodeNode.js +50 -0
  322. package/examples/jsm/nodes/core/ConstNode.js +10 -106
  323. package/examples/jsm/{renderers/nodes → nodes}/core/ContextNode.js +17 -3
  324. package/examples/jsm/nodes/core/ExpressionNode.js +24 -7
  325. package/examples/jsm/nodes/core/FunctionCallNode.js +33 -59
  326. package/examples/jsm/nodes/core/FunctionNode.js +43 -216
  327. package/examples/jsm/nodes/core/InputNode.js +28 -60
  328. package/examples/jsm/nodes/core/InstanceIndexNode.js +21 -0
  329. package/examples/jsm/nodes/core/Node.js +230 -94
  330. package/examples/jsm/{renderers/nodes → nodes}/core/NodeAttribute.js +2 -2
  331. package/examples/jsm/nodes/core/NodeBuilder.js +388 -560
  332. package/examples/jsm/{renderers/nodes → nodes}/core/NodeCode.js +0 -0
  333. package/examples/jsm/nodes/core/NodeFrame.js +30 -23
  334. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunction.js +0 -0
  335. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunctionInput.js +0 -0
  336. package/examples/jsm/{renderers/nodes → nodes}/core/NodeKeywords.js +0 -0
  337. package/examples/jsm/{renderers/nodes → nodes}/core/NodeParser.js +0 -0
  338. package/examples/jsm/nodes/core/NodeUniform.js +8 -6
  339. package/examples/jsm/nodes/core/NodeUtils.js +90 -36
  340. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVar.js +2 -2
  341. package/examples/jsm/{renderers/nodes/core/NodeVary.js → nodes/core/NodeVarying.js} +4 -4
  342. package/examples/jsm/{renderers/nodes → nodes}/core/PropertyNode.js +0 -0
  343. package/examples/jsm/nodes/core/TempNode.js +20 -112
  344. package/examples/jsm/nodes/core/UniformNode.js +46 -0
  345. package/examples/jsm/nodes/core/VarNode.js +58 -27
  346. package/examples/jsm/{renderers/nodes/core/VaryNode.js → nodes/core/VaryingNode.js} +7 -7
  347. package/examples/jsm/{renderers/nodes → nodes}/core/constants.js +0 -0
  348. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +94 -0
  349. package/examples/jsm/{renderers/nodes → nodes}/display/ColorSpaceNode.js +10 -11
  350. package/examples/jsm/nodes/display/FrontFacingNode.js +21 -0
  351. package/examples/jsm/nodes/display/NormalMapNode.js +86 -0
  352. package/examples/jsm/nodes/display/ToneMappingNode.js +51 -0
  353. package/examples/jsm/nodes/fog/FogNode.js +31 -0
  354. package/examples/jsm/nodes/fog/FogRangeNode.js +27 -0
  355. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +33 -0
  356. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  357. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +27 -0
  358. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
  359. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +18 -0
  360. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
  361. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +94 -0
  362. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +22 -0
  363. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +12 -0
  364. package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
  365. package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
  366. package/examples/jsm/nodes/gpgpu/ComputeNode.js +65 -0
  367. package/examples/jsm/nodes/lighting/AONode.js +25 -0
  368. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +37 -0
  369. package/examples/jsm/nodes/lighting/EnvironmentNode.js +66 -0
  370. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +50 -0
  371. package/examples/jsm/nodes/lighting/LightingContextNode.js +75 -0
  372. package/examples/jsm/nodes/lighting/LightingNode.js +19 -0
  373. package/examples/jsm/nodes/lighting/LightsNode.js +120 -0
  374. package/examples/jsm/nodes/lighting/PunctualLightNode.js +68 -0
  375. package/examples/jsm/nodes/loaders/NodeLoader.js +107 -0
  376. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +73 -0
  377. package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
  378. package/examples/jsm/{renderers/nodes → nodes}/materials/LineBasicNodeMaterial.js +11 -4
  379. package/examples/jsm/nodes/materials/Materials.js +53 -0
  380. package/examples/jsm/{renderers/nodes → nodes}/materials/MeshBasicNodeMaterial.js +13 -4
  381. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
  382. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +159 -22
  383. package/examples/jsm/nodes/materials/NodeMaterial.js +128 -113
  384. package/examples/jsm/{renderers/nodes → nodes}/materials/PointsNodeMaterial.js +13 -4
  385. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +95 -16
  386. package/examples/jsm/nodes/materialx/Disclaimer.md +199 -0
  387. package/examples/jsm/nodes/materialx/functions/lib/mx_hsv.js +56 -0
  388. package/examples/jsm/nodes/materialx/functions/lib/mx_noise.js +607 -0
  389. package/examples/jsm/nodes/math/CondNode.js +26 -95
  390. package/examples/jsm/nodes/math/MathNode.js +156 -189
  391. package/examples/jsm/nodes/math/OperatorNode.js +161 -41
  392. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeFunction.js +23 -8
  393. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeParser.js +0 -0
  394. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeFunction.js +20 -5
  395. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeParser.js +0 -0
  396. package/examples/jsm/nodes/procedural/CheckerNode.js +16 -57
  397. package/examples/jsm/nodes/shadernode/ShaderNode.js +262 -0
  398. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +277 -0
  399. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +120 -0
  400. package/examples/jsm/{renderers/nodes → nodes}/utils/ArrayElementNode.js +3 -3
  401. package/examples/jsm/nodes/utils/ConvertNode.js +46 -0
  402. package/examples/jsm/nodes/utils/JoinNode.js +15 -87
  403. package/examples/jsm/nodes/utils/MatcapUVNode.js +25 -0
  404. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +33 -0
  405. package/examples/jsm/{renderers/nodes → nodes}/utils/OscNode.js +18 -2
  406. package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
  407. package/examples/jsm/nodes/utils/SplitNode.js +102 -0
  408. package/examples/jsm/{renderers/nodes → nodes}/utils/SpriteSheetUVNode.js +3 -3
  409. package/examples/jsm/nodes/utils/TimerNode.js +30 -65
  410. package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
  411. package/examples/jsm/objects/Lensflare.js +2 -2
  412. package/examples/jsm/objects/LightningStorm.js +4 -4
  413. package/examples/jsm/objects/MarchingCubes.js +5 -9
  414. package/examples/jsm/objects/Reflector.js +19 -8
  415. package/examples/jsm/objects/ReflectorForSSRPass.js +5 -7
  416. package/examples/jsm/objects/Refractor.js +19 -9
  417. package/examples/jsm/objects/ShadowMesh.js +10 -4
  418. package/examples/jsm/objects/Sky.js +2 -2
  419. package/examples/jsm/objects/Water.js +2 -2
  420. package/examples/jsm/objects/Water2.js +2 -2
  421. package/examples/jsm/offscreen/jank.js +5 -5
  422. package/examples/jsm/offscreen/offscreen.js +1 -1
  423. package/examples/jsm/offscreen/scene.js +11 -11
  424. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +5 -7
  425. package/examples/jsm/postprocessing/AfterimagePass.js +0 -10
  426. package/examples/jsm/postprocessing/BloomPass.js +48 -20
  427. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  428. package/examples/jsm/postprocessing/EffectComposer.js +1 -9
  429. package/examples/jsm/postprocessing/LUTPass.js +2 -2
  430. package/examples/jsm/postprocessing/OutlinePass.js +13 -18
  431. package/examples/jsm/postprocessing/SAOPass.js +2 -9
  432. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -4
  433. package/examples/jsm/postprocessing/SSRPass.js +3 -9
  434. package/examples/jsm/postprocessing/TAARenderPass.js +4 -4
  435. package/examples/jsm/postprocessing/UnrealBloomPass.js +3 -8
  436. package/examples/jsm/renderers/CSS2DRenderer.js +23 -21
  437. package/examples/jsm/renderers/CSS3DRenderer.js +41 -36
  438. package/examples/jsm/renderers/Projector.js +103 -152
  439. package/examples/jsm/renderers/SVGRenderer.js +4 -4
  440. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
  441. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +398 -183
  442. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +19 -4
  443. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +4 -4
  444. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +55 -13
  445. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +8 -7
  446. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +43 -0
  447. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +20 -7
  448. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
  449. package/examples/jsm/renderers/webgpu/WebGPUInfo.js +1 -1
  450. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -7
  451. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +37 -39
  452. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +18 -15
  453. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +66 -0
  454. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +103 -95
  455. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +14 -14
  456. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +2 -2
  457. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +5 -8
  458. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +25 -20
  459. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +37 -18
  460. package/examples/jsm/renderers/webgpu/WebGPUUniform.js +14 -14
  461. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +5 -32
  462. package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +2 -2
  463. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
  464. package/examples/jsm/renderers/webgpu/constants.js +3 -2
  465. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +287 -300
  466. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +20 -2
  467. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +24 -14
  468. package/examples/jsm/shaders/BlendShader.js +2 -1
  469. package/examples/jsm/shaders/CopyShader.js +4 -3
  470. package/examples/jsm/shaders/FXAAShader.js +219 -1051
  471. package/examples/jsm/shaders/FreiChenShader.js +1 -1
  472. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -1
  473. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +1 -1
  474. package/examples/jsm/shaders/LuminosityShader.js +1 -1
  475. package/examples/jsm/shaders/MMDToonShader.js +2 -2
  476. package/examples/jsm/shaders/SSRShader.js +3 -3
  477. package/examples/jsm/shaders/ToneMapShader.js +2 -2
  478. package/examples/jsm/utils/BufferGeometryUtils.js +293 -22
  479. package/examples/jsm/utils/GPUStatsPanel.js +1 -1
  480. package/examples/jsm/utils/GeometryUtils.js +17 -25
  481. package/examples/jsm/utils/LDrawUtils.js +24 -17
  482. package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
  483. package/examples/jsm/utils/SceneUtils.js +73 -19
  484. package/examples/jsm/utils/SkeletonUtils.js +1 -1
  485. package/examples/jsm/utils/UVsDebug.js +23 -32
  486. package/examples/jsm/webxr/ARButton.js +14 -4
  487. package/examples/jsm/webxr/OculusHandPointerModel.js +9 -4
  488. package/examples/jsm/webxr/Text2D.js +1 -1
  489. package/examples/jsm/webxr/VRButton.js +16 -8
  490. package/examples/jsm/webxr/XRHandMeshModel.js +3 -7
  491. package/examples/jsm/webxr/XRHandModelFactory.js +3 -0
  492. package/package.json +57 -28
  493. package/src/Three.Legacy.js +164 -1809
  494. package/src/Three.js +9 -5
  495. package/src/animation/AnimationAction.js +6 -5
  496. package/src/animation/AnimationClip.js +2 -2
  497. package/src/animation/AnimationMixer.js +5 -3
  498. package/src/animation/AnimationObjectGroup.js +2 -2
  499. package/src/animation/AnimationUtils.js +204 -199
  500. package/src/animation/KeyframeTrack.js +1 -1
  501. package/src/animation/PropertyBinding.js +32 -23
  502. package/src/audio/PositionalAudio.js +8 -0
  503. package/src/cameras/ArrayCamera.js +2 -3
  504. package/src/cameras/Camera.js +2 -2
  505. package/src/cameras/CubeCamera.js +6 -8
  506. package/src/cameras/OrthographicCamera.js +2 -2
  507. package/src/cameras/PerspectiveCamera.js +2 -2
  508. package/src/constants.js +7 -6
  509. package/src/core/BufferAttribute.js +88 -123
  510. package/src/core/BufferGeometry.js +9 -47
  511. package/src/core/GLBufferAttribute.js +2 -2
  512. package/src/core/InstancedBufferAttribute.js +2 -12
  513. package/src/core/InstancedBufferGeometry.js +2 -2
  514. package/src/core/InstancedInterleavedBuffer.js +2 -2
  515. package/src/core/InterleavedBuffer.js +3 -3
  516. package/src/core/InterleavedBufferAttribute.js +61 -18
  517. package/src/core/Object3D.js +28 -8
  518. package/src/core/Raycaster.js +2 -2
  519. package/src/core/Uniform.js +0 -7
  520. package/src/core/UniformsGroup.js +92 -0
  521. package/src/extras/DataUtils.js +144 -41
  522. package/src/extras/Earcut.js +2 -2
  523. package/src/extras/PMREMGenerator.js +132 -104
  524. package/src/extras/core/CurvePath.js +3 -3
  525. package/src/extras/core/Path.js +1 -0
  526. package/src/extras/core/ShapePath.js +6 -10
  527. package/src/extras/curves/ArcCurve.js +2 -2
  528. package/src/extras/curves/CatmullRomCurve3.js +6 -4
  529. package/src/extras/curves/CubicBezierCurve.js +2 -2
  530. package/src/extras/curves/CubicBezierCurve3.js +2 -2
  531. package/src/extras/curves/EllipseCurve.js +2 -2
  532. package/src/extras/curves/LineCurve.js +2 -2
  533. package/src/extras/curves/LineCurve3.js +2 -1
  534. package/src/extras/curves/QuadraticBezierCurve.js +2 -2
  535. package/src/extras/curves/QuadraticBezierCurve3.js +2 -2
  536. package/src/extras/curves/SplineCurve.js +2 -2
  537. package/src/geometries/BoxGeometry.js +1 -1
  538. package/src/geometries/CapsuleGeometry.js +33 -0
  539. package/src/geometries/CircleGeometry.js +1 -1
  540. package/src/geometries/ConeGeometry.js +1 -1
  541. package/src/geometries/CylinderGeometry.js +2 -1
  542. package/src/geometries/DodecahedronGeometry.js +1 -1
  543. package/src/geometries/EdgesGeometry.js +5 -4
  544. package/src/geometries/ExtrudeGeometry.js +4 -11
  545. package/src/geometries/Geometries.js +1 -0
  546. package/src/geometries/IcosahedronGeometry.js +1 -1
  547. package/src/geometries/LatheGeometry.js +3 -3
  548. package/src/geometries/OctahedronGeometry.js +1 -1
  549. package/src/geometries/PlaneGeometry.js +2 -1
  550. package/src/geometries/PolyhedronGeometry.js +1 -1
  551. package/src/geometries/RingGeometry.js +1 -1
  552. package/src/geometries/ShapeGeometry.js +2 -1
  553. package/src/geometries/SphereGeometry.js +2 -1
  554. package/src/geometries/TetrahedronGeometry.js +1 -1
  555. package/src/geometries/TorusGeometry.js +2 -1
  556. package/src/geometries/TorusKnotGeometry.js +4 -3
  557. package/src/geometries/TubeGeometry.js +2 -1
  558. package/src/geometries/WireframeGeometry.js +4 -2
  559. package/src/helpers/BoxHelper.js +2 -2
  560. package/src/helpers/CameraHelper.js +97 -38
  561. package/src/helpers/DirectionalLightHelper.js +1 -0
  562. package/src/helpers/HemisphereLightHelper.js +1 -0
  563. package/src/helpers/PlaneHelper.js +6 -9
  564. package/src/helpers/PointLightHelper.js +1 -1
  565. package/src/helpers/PolarGridHelper.js +18 -14
  566. package/src/helpers/SkeletonHelper.js +3 -2
  567. package/src/helpers/SpotLightHelper.js +1 -0
  568. package/src/lights/AmbientLight.js +2 -2
  569. package/src/lights/AmbientLightProbe.js +2 -2
  570. package/src/lights/DirectionalLight.js +2 -2
  571. package/src/lights/DirectionalLightShadow.js +2 -2
  572. package/src/lights/HemisphereLight.js +4 -4
  573. package/src/lights/HemisphereLightProbe.js +2 -2
  574. package/src/lights/Light.js +4 -4
  575. package/src/lights/LightProbe.js +2 -2
  576. package/src/lights/PointLight.js +4 -4
  577. package/src/lights/PointLightShadow.js +2 -2
  578. package/src/lights/RectAreaLight.js +2 -2
  579. package/src/lights/SpotLight.js +6 -4
  580. package/src/lights/SpotLightShadow.js +2 -2
  581. package/src/loaders/FileLoader.js +35 -5
  582. package/src/loaders/ImageBitmapLoader.js +2 -2
  583. package/src/loaders/ImageLoader.js +1 -1
  584. package/src/loaders/LoaderUtils.js +1 -1
  585. package/src/loaders/LoadingManager.js +1 -1
  586. package/src/loaders/MaterialLoader.js +55 -8
  587. package/src/loaders/ObjectLoader.js +27 -66
  588. package/src/materials/LineBasicMaterial.js +6 -13
  589. package/src/materials/LineDashedMaterial.js +2 -15
  590. package/src/materials/Material.js +26 -24
  591. package/src/materials/Materials.js +39 -18
  592. package/src/materials/MeshBasicMaterial.js +6 -31
  593. package/src/materials/MeshDepthMaterial.js +2 -22
  594. package/src/materials/MeshDistanceMaterial.js +2 -22
  595. package/src/materials/MeshLambertMaterial.js +34 -35
  596. package/src/materials/MeshMatcapMaterial.js +6 -28
  597. package/src/materials/MeshNormalMaterial.js +2 -26
  598. package/src/materials/MeshPhongMaterial.js +6 -48
  599. package/src/materials/MeshPhysicalMaterial.js +32 -35
  600. package/src/materials/MeshStandardMaterial.js +6 -54
  601. package/src/materials/MeshToonMaterial.js +6 -38
  602. package/src/materials/PointsMaterial.js +6 -15
  603. package/src/materials/RawShaderMaterial.js +2 -2
  604. package/src/materials/ShaderMaterial.js +6 -24
  605. package/src/materials/ShadowMaterial.js +6 -8
  606. package/src/materials/SpriteMaterial.js +6 -12
  607. package/src/math/Box2.js +2 -2
  608. package/src/math/Box3.js +29 -15
  609. package/src/math/Color.js +87 -48
  610. package/src/math/ColorManagement.js +74 -0
  611. package/src/math/Euler.js +16 -14
  612. package/src/math/Interpolant.js +4 -9
  613. package/src/math/MathUtils.js +77 -14
  614. package/src/math/Matrix3.js +2 -8
  615. package/src/math/Matrix4.js +3 -28
  616. package/src/math/Plane.js +2 -2
  617. package/src/math/Quaternion.js +12 -23
  618. package/src/math/Spherical.js +1 -1
  619. package/src/math/SphericalHarmonics3.js +2 -2
  620. package/src/math/Vector2.js +5 -25
  621. package/src/math/Vector3.js +17 -47
  622. package/src/math/Vector4.js +5 -25
  623. package/src/math/interpolants/DiscreteInterpolant.js +1 -1
  624. package/src/objects/Bone.js +2 -2
  625. package/src/objects/Group.js +2 -2
  626. package/src/objects/InstancedMesh.js +4 -4
  627. package/src/objects/Line.js +76 -107
  628. package/src/objects/LineLoop.js +2 -2
  629. package/src/objects/LineSegments.js +15 -23
  630. package/src/objects/Mesh.js +82 -104
  631. package/src/objects/Points.js +32 -54
  632. package/src/objects/SkinnedMesh.js +5 -8
  633. package/src/objects/Sprite.js +4 -4
  634. package/src/renderers/WebGL3DRenderTarget.js +22 -0
  635. package/src/renderers/WebGLArrayRenderTarget.js +22 -0
  636. package/src/renderers/WebGLCubeRenderTarget.js +7 -14
  637. package/src/renderers/WebGLMultipleRenderTargets.js +8 -5
  638. package/src/renderers/WebGLRenderTarget.js +19 -18
  639. package/src/renderers/WebGLRenderer.js +195 -74
  640. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +46 -0
  641. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
  642. package/src/renderers/shaders/ShaderChunk/common.glsl.js +7 -5
  643. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +35 -36
  644. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +1 -1
  645. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
  646. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
  647. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -19
  648. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
  649. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +121 -0
  650. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  651. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -6
  652. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +48 -1
  653. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +0 -6
  654. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  655. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
  656. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +26 -1
  657. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +56 -6
  658. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
  659. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +1 -1
  660. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +7 -7
  661. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +1 -9
  662. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
  663. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
  664. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
  665. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
  666. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
  667. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  668. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +16 -31
  669. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
  670. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +1 -1
  671. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
  672. package/src/renderers/shaders/ShaderChunk.js +10 -2
  673. package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
  674. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  675. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +3 -3
  676. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +23 -50
  677. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
  678. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +6 -0
  679. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -1
  680. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +10 -0
  681. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  682. package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  683. package/src/renderers/shaders/ShaderLib.js +37 -31
  684. package/src/renderers/shaders/UniformsLib.js +14 -13
  685. package/src/renderers/shaders/UniformsUtils.js +14 -0
  686. package/src/renderers/webgl/WebGLAttributes.js +6 -6
  687. package/src/renderers/webgl/WebGLBackground.js +7 -4
  688. package/src/renderers/webgl/WebGLBindingStates.js +57 -29
  689. package/src/renderers/webgl/WebGLGeometries.js +2 -2
  690. package/src/renderers/webgl/WebGLLights.js +37 -14
  691. package/src/renderers/webgl/WebGLMaterials.js +72 -187
  692. package/src/renderers/webgl/WebGLMorphtargets.js +43 -39
  693. package/src/renderers/webgl/WebGLProgram.js +63 -30
  694. package/src/renderers/webgl/WebGLPrograms.js +97 -104
  695. package/src/renderers/webgl/WebGLRenderLists.js +5 -4
  696. package/src/renderers/webgl/WebGLRenderStates.js +5 -4
  697. package/src/renderers/webgl/WebGLShaderCache.js +12 -8
  698. package/src/renderers/webgl/WebGLShadowMap.js +13 -20
  699. package/src/renderers/webgl/WebGLState.js +49 -2
  700. package/src/renderers/webgl/WebGLTextures.js +576 -386
  701. package/src/renderers/webgl/WebGLUniforms.js +81 -82
  702. package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
  703. package/src/renderers/webgl/WebGLUtils.js +14 -3
  704. package/src/renderers/webvr/WebVRManager.js +42 -9
  705. package/src/renderers/webvr/WebVRUtils.js +1 -1
  706. package/src/renderers/webxr/WebXRController.js +45 -37
  707. package/src/renderers/webxr/WebXRManager.js +110 -68
  708. package/src/scenes/Fog.js +2 -2
  709. package/src/scenes/FogExp2.js +2 -2
  710. package/src/scenes/Scene.js +18 -5
  711. package/src/textures/CanvasTexture.js +2 -2
  712. package/src/textures/CompressedTexture.js +2 -2
  713. package/src/textures/CubeTexture.js +2 -2
  714. package/src/textures/{DataTexture3D.js → Data3DTexture.js} +4 -4
  715. package/src/textures/{DataTexture2DArray.js → DataArrayTexture.js} +4 -4
  716. package/src/textures/DataTexture.js +2 -5
  717. package/src/textures/DepthTexture.js +5 -5
  718. package/src/textures/FramebufferTexture.js +2 -2
  719. package/src/textures/Source.js +123 -0
  720. package/src/textures/Texture.js +27 -97
  721. package/src/textures/VideoTexture.js +2 -2
  722. package/src/utils.js +15 -1
  723. package/examples/js/controls/experimental/CameraControls.js +0 -1044
  724. package/examples/js/csm/Frustum.js +0 -133
  725. package/examples/js/deprecated/Geometry.js +0 -1656
  726. package/examples/js/loaders/KTX2Loader.js +0 -566
  727. package/examples/js/loaders/VRMLoader.js +0 -72
  728. package/examples/js/objects/ReflectorRTT.js +0 -16
  729. package/examples/js/postprocessing/SSRrPass.js +0 -494
  730. package/examples/js/shaders/SSRrShader.js +0 -336
  731. package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
  732. package/examples/jsm/deprecated/Geometry.js +0 -1869
  733. package/examples/jsm/libs/opentype.module.min.js +0 -119
  734. package/examples/jsm/loaders/NodeMaterialLoader.js +0 -263
  735. package/examples/jsm/loaders/VRMLoader.js +0 -78
  736. package/examples/jsm/nodes/accessors/ColorsNode.js +0 -56
  737. package/examples/jsm/nodes/accessors/LightNode.js +0 -60
  738. package/examples/jsm/nodes/accessors/ReflectNode.js +0 -157
  739. package/examples/jsm/nodes/accessors/ResolutionNode.js +0 -64
  740. package/examples/jsm/nodes/accessors/ScreenUVNode.js +0 -64
  741. package/examples/jsm/nodes/core/NodeLib.js +0 -64
  742. package/examples/jsm/nodes/core/StructNode.js +0 -106
  743. package/examples/jsm/nodes/effects/BlurNode.js +0 -171
  744. package/examples/jsm/nodes/effects/ColorAdjustmentNode.js +0 -140
  745. package/examples/jsm/nodes/effects/LuminanceNode.js +0 -75
  746. package/examples/jsm/nodes/inputs/BoolNode.js +0 -51
  747. package/examples/jsm/nodes/inputs/ColorNode.js +0 -58
  748. package/examples/jsm/nodes/inputs/CubeTextureNode.js +0 -108
  749. package/examples/jsm/nodes/inputs/FloatNode.js +0 -51
  750. package/examples/jsm/nodes/inputs/IntNode.js +0 -51
  751. package/examples/jsm/nodes/inputs/Matrix3Node.js +0 -63
  752. package/examples/jsm/nodes/inputs/Matrix4Node.js +0 -63
  753. package/examples/jsm/nodes/inputs/PropertyNode.js +0 -47
  754. package/examples/jsm/nodes/inputs/RTTNode.js +0 -157
  755. package/examples/jsm/nodes/inputs/ReflectorNode.js +0 -90
  756. package/examples/jsm/nodes/inputs/ScreenNode.js +0 -28
  757. package/examples/jsm/nodes/inputs/TextureNode.js +0 -116
  758. package/examples/jsm/nodes/inputs/Vector2Node.js +0 -57
  759. package/examples/jsm/nodes/inputs/Vector3Node.js +0 -58
  760. package/examples/jsm/nodes/inputs/Vector4Node.js +0 -59
  761. package/examples/jsm/nodes/materials/BasicNodeMaterial.js +0 -26
  762. package/examples/jsm/nodes/materials/PhongNodeMaterial.js +0 -36
  763. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +0 -40
  764. package/examples/jsm/nodes/materials/nodes/BasicNode.js +0 -154
  765. package/examples/jsm/nodes/materials/nodes/MeshStandardNode.js +0 -116
  766. package/examples/jsm/nodes/materials/nodes/PhongNode.js +0 -409
  767. package/examples/jsm/nodes/materials/nodes/RawNode.js +0 -62
  768. package/examples/jsm/nodes/materials/nodes/SpriteNode.js +0 -236
  769. package/examples/jsm/nodes/materials/nodes/StandardNode.js +0 -609
  770. package/examples/jsm/nodes/misc/BumpMapNode.js +0 -163
  771. package/examples/jsm/nodes/misc/NormalMapNode.js +0 -138
  772. package/examples/jsm/nodes/misc/TextureCubeNode.js +0 -86
  773. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +0 -280
  774. package/examples/jsm/nodes/postprocessing/NodePass.js +0 -93
  775. package/examples/jsm/nodes/postprocessing/NodePostProcessing.js +0 -148
  776. package/examples/jsm/nodes/procedural/Fractal3DNode.js +0 -104
  777. package/examples/jsm/nodes/procedural/Noise2DNode.js +0 -149
  778. package/examples/jsm/nodes/procedural/Noise3DNode.js +0 -141
  779. package/examples/jsm/nodes/utils/BypassNode.js +0 -85
  780. package/examples/jsm/nodes/utils/ColorSpaceNode.js +0 -145
  781. package/examples/jsm/nodes/utils/MaxMIPLevelNode.js +0 -56
  782. package/examples/jsm/nodes/utils/RemapNode.js +0 -155
  783. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -101
  784. package/examples/jsm/nodes/utils/SubSlotNode.js +0 -77
  785. package/examples/jsm/nodes/utils/SwitchNode.js +0 -103
  786. package/examples/jsm/nodes/utils/UVTransformNode.js +0 -66
  787. package/examples/jsm/nodes/utils/VelocityNode.js +0 -170
  788. package/examples/jsm/objects/ReflectorRTT.js +0 -15
  789. package/examples/jsm/package.json +0 -3
  790. package/examples/jsm/postprocessing/SSRrPass.js +0 -579
  791. package/examples/jsm/renderers/nodes/Nodes.js +0 -166
  792. package/examples/jsm/renderers/nodes/ShaderNode.js +0 -373
  793. package/examples/jsm/renderers/nodes/accessors/CameraNode.js +0 -68
  794. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +0 -63
  795. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +0 -67
  796. package/examples/jsm/renderers/nodes/accessors/ReferenceNode.js +0 -91
  797. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +0 -107
  798. package/examples/jsm/renderers/nodes/accessors/UVNode.js +0 -25
  799. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +0 -23
  800. package/examples/jsm/renderers/nodes/core/AttributeNode.js +0 -54
  801. package/examples/jsm/renderers/nodes/core/CodeNode.js +0 -78
  802. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +0 -32
  803. package/examples/jsm/renderers/nodes/core/FunctionCallNode.js +0 -67
  804. package/examples/jsm/renderers/nodes/core/FunctionNode.js +0 -87
  805. package/examples/jsm/renderers/nodes/core/InputNode.js +0 -66
  806. package/examples/jsm/renderers/nodes/core/Node.js +0 -104
  807. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +0 -633
  808. package/examples/jsm/renderers/nodes/core/NodeFrame.js +0 -59
  809. package/examples/jsm/renderers/nodes/core/NodeUniform.js +0 -28
  810. package/examples/jsm/renderers/nodes/core/TempNode.js +0 -43
  811. package/examples/jsm/renderers/nodes/core/VarNode.js +0 -51
  812. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +0 -87
  813. package/examples/jsm/renderers/nodes/functions/BSDFs.js +0 -122
  814. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +0 -27
  815. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +0 -25
  816. package/examples/jsm/renderers/nodes/inputs/ColorNode.js +0 -18
  817. package/examples/jsm/renderers/nodes/inputs/FloatNode.js +0 -17
  818. package/examples/jsm/renderers/nodes/inputs/IntNode.js +0 -17
  819. package/examples/jsm/renderers/nodes/inputs/Matrix3Node.js +0 -18
  820. package/examples/jsm/renderers/nodes/inputs/Matrix4Node.js +0 -18
  821. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +0 -74
  822. package/examples/jsm/renderers/nodes/inputs/Vector2Node.js +0 -18
  823. package/examples/jsm/renderers/nodes/inputs/Vector3Node.js +0 -18
  824. package/examples/jsm/renderers/nodes/inputs/Vector4Node.js +0 -18
  825. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +0 -59
  826. package/examples/jsm/renderers/nodes/lights/LightNode.js +0 -79
  827. package/examples/jsm/renderers/nodes/lights/LightsNode.js +0 -44
  828. package/examples/jsm/renderers/nodes/materials/Materials.js +0 -11
  829. package/examples/jsm/renderers/nodes/materials/MeshStandardNodeMaterial.js +0 -63
  830. package/examples/jsm/renderers/nodes/math/CondNode.js +0 -60
  831. package/examples/jsm/renderers/nodes/math/MathNode.js +0 -242
  832. package/examples/jsm/renderers/nodes/math/OperatorNode.js +0 -174
  833. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +0 -36
  834. package/examples/jsm/renderers/nodes/utils/ConvertNode.js +0 -33
  835. package/examples/jsm/renderers/nodes/utils/JoinNode.js +0 -42
  836. package/examples/jsm/renderers/nodes/utils/SplitNode.js +0 -55
  837. package/examples/jsm/renderers/nodes/utils/TimerNode.js +0 -47
  838. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
  839. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +0 -20
  840. package/examples/jsm/shaders/SSRrShader.js +0 -307
  841. package/src/renderers/WebGLMultisampleRenderTarget.js +0 -33
  842. package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
@@ -4,7 +4,7 @@ import {
4
4
  Loader,
5
5
  FileLoader,
6
6
  DataTexture,
7
- DataTexture3D,
7
+ Data3DTexture,
8
8
  RGBAFormat,
9
9
  UnsignedByteType,
10
10
  ClampToEdgeWrapping,
@@ -125,7 +125,7 @@ export class LUT3dlLoader extends Loader {
125
125
  texture.generateMipmaps = false;
126
126
  texture.needsUpdate = true;
127
127
 
128
- const texture3D = new DataTexture3D();
128
+ const texture3D = new Data3DTexture();
129
129
  texture3D.image.data = data;
130
130
  texture3D.image.width = size;
131
131
  texture3D.image.height = size;
@@ -5,7 +5,7 @@ import {
5
5
  FileLoader,
6
6
  Vector3,
7
7
  DataTexture,
8
- DataTexture3D,
8
+ Data3DTexture,
9
9
  UnsignedByteType,
10
10
  ClampToEdgeWrapping,
11
11
  LinearFilter,
@@ -125,7 +125,7 @@ export class LUTCubeLoader extends Loader {
125
125
  texture.generateMipmaps = false;
126
126
  texture.needsUpdate = true;
127
127
 
128
- const texture3D = new DataTexture3D();
128
+ const texture3D = new Data3DTexture();
129
129
  texture3D.image.data = data;
130
130
  texture3D.image.width = size;
131
131
  texture3D.image.height = size;
@@ -350,6 +350,8 @@ class MaterialParser {
350
350
 
351
351
  const materialType = this.getMaterialType( connections.attributes );
352
352
 
353
+ if ( materialType !== MeshPhongMaterial ) delete params.refractionRatio; // PBR materials do not support "refractionRatio"
354
+
353
355
  return new materialType( params );
354
356
 
355
357
  }
@@ -591,8 +593,6 @@ class MaterialParser {
591
593
 
592
594
  if ( attributes[ 'Bump Height' ] ) params.bumpScale = attributes[ 'Bump Height' ].value * 0.1;
593
595
 
594
- if ( attributes[ 'Refraction Index' ] ) params.refractionRatio = 0.98 / attributes[ 'Refraction Index' ].value;
595
-
596
596
  this.parsePhysicalAttributes( params, attributes, maps );
597
597
  this.parseStandardAttributes( params, attributes, maps );
598
598
  this.parsePhongAttributes( params, attributes, maps );
@@ -643,6 +643,8 @@ class MaterialParser {
643
643
 
644
644
  parsePhongAttributes( params, attributes, maps ) {
645
645
 
646
+ if ( attributes[ 'Refraction Index' ] ) params.refractionRatio = 0.98 / attributes[ 'Refraction Index' ].value;
647
+
646
648
  if ( attributes.Diffuse ) params.color.multiplyScalar( attributes.Diffuse.value );
647
649
 
648
650
  if ( attributes.Reflection ) {
@@ -1060,7 +1062,7 @@ function extractParentUrl( url, dir ) {
1060
1062
 
1061
1063
  if ( index === - 1 ) return './';
1062
1064
 
1063
- return url.substr( 0, index );
1065
+ return url.slice( 0, index );
1064
1066
 
1065
1067
  }
1066
1068
 
@@ -55,7 +55,7 @@ UTIF.decode = function ( buff, prm ) {
55
55
  var bin = id == 'II' ? UTIF._binLE : UTIF._binBE;
56
56
  bin.readUshort( data, offset ); offset += 2;
57
57
 
58
- var ifdo = bin.readUint( data, offset ); offset += 4;
58
+ var ifdo = bin.readUint( data, offset );
59
59
  var ifds = [];
60
60
  while ( true ) {
61
61
 
@@ -339,7 +339,7 @@ UTIF._readIFD = function ( bin, data, offset, ifds, depth, prm ) {
339
339
 
340
340
  ifd[ 't' + tag ] = arr;
341
341
 
342
- if ( tag == 330 && ifd[ 't272' ] && ifd[ 't272' ][ 0 ] == 'DSLR-A100' ) { } else if ( tag == 330 || tag == 34665 || tag == 34853 || ( tag == 50740 && bin.readUshort( data, bin.readUint( arr, 0 ) ) < 300 ) || tag == 61440 ) {
342
+ if ( tag == 330 || tag == 34665 || tag == 34853 || ( tag == 50740 && bin.readUshort( data, bin.readUint( arr, 0 ) ) < 300 ) || tag == 61440 ) {
343
343
 
344
344
  var oarr = tag == 50740 ? [ bin.readUint( arr, 0 ) ] : arr;
345
345
  var subfd = [];
@@ -243,7 +243,7 @@ class MD2Loader extends Loader {
243
243
 
244
244
  for ( let j = 0; j < 16; j ++ ) {
245
245
 
246
- const character = data.getUint8( offset + j, true );
246
+ const character = data.getUint8( offset + j );
247
247
  if ( character === 0 ) break;
248
248
 
249
249
  string[ j ] = character;
@@ -260,10 +260,10 @@ class MD2Loader extends Loader {
260
260
 
261
261
  for ( let j = 0; j < header.num_vertices; j ++ ) {
262
262
 
263
- let x = data.getUint8( offset ++, true );
264
- let y = data.getUint8( offset ++, true );
265
- let z = data.getUint8( offset ++, true );
266
- const n = _normalData[ data.getUint8( offset ++, true ) ];
263
+ let x = data.getUint8( offset ++ );
264
+ let y = data.getUint8( offset ++ );
265
+ let z = data.getUint8( offset ++ );
266
+ const n = _normalData[ data.getUint8( offset ++ ) ];
267
267
 
268
268
  x = x * scale.x + translation.x;
269
269
  y = y * scale.y + translation.y;
@@ -2080,6 +2080,8 @@ class MMDToonMaterial extends ShaderMaterial {
2080
2080
 
2081
2081
  super();
2082
2082
 
2083
+ this.isMMDToonMaterial = true;
2084
+
2083
2085
  this._matcapCombine = AddOperation;
2084
2086
  this.emissiveIntensity = 1.0;
2085
2087
  this.normalMapType = TangentSpaceNormalMap;
@@ -2133,7 +2135,6 @@ class MMDToonMaterial extends ShaderMaterial {
2133
2135
  // merged from MeshToon/Phong/MatcapMaterial
2134
2136
  const exposePropertyNames = [
2135
2137
  'specular',
2136
- 'shininess',
2137
2138
  'opacity',
2138
2139
  'diffuse',
2139
2140
 
@@ -2188,6 +2189,25 @@ class MMDToonMaterial extends ShaderMaterial {
2188
2189
 
2189
2190
  }
2190
2191
 
2192
+ // Special path for shininess to handle zero shininess properly
2193
+ this._shininess = 30;
2194
+ Object.defineProperty( this, 'shininess', {
2195
+
2196
+ get: function () {
2197
+
2198
+ return this._shininess;
2199
+
2200
+ },
2201
+
2202
+ set: function ( value ) {
2203
+
2204
+ this._shininess = value;
2205
+ this.uniforms.shininess.value = Math.max( this._shininess, 1e-4 ); // To prevent pow( 0.0, 0.0 )
2206
+
2207
+ },
2208
+
2209
+ } );
2210
+
2191
2211
  Object.defineProperty(
2192
2212
  this,
2193
2213
  'color',
@@ -2219,6 +2239,4 @@ class MMDToonMaterial extends ShaderMaterial {
2219
2239
 
2220
2240
  }
2221
2241
 
2222
- MMDToonMaterial.prototype.isMMDToonMaterial = true;
2223
-
2224
2242
  export { MMDLoader };
@@ -8,7 +8,8 @@ import {
8
8
  MeshPhongMaterial,
9
9
  RepeatWrapping,
10
10
  TextureLoader,
11
- Vector2
11
+ Vector2,
12
+ sRGBEncoding
12
13
  } from 'three';
13
14
 
14
15
  /**
@@ -358,6 +359,12 @@ class MaterialCreator {
358
359
  map.wrapS = scope.wrap;
359
360
  map.wrapT = scope.wrap;
360
361
 
362
+ if ( mapType === 'map' || mapType === 'emissiveMap' ) {
363
+
364
+ map.encoding = sRGBEncoding;
365
+
366
+ }
367
+
361
368
  params[ mapType ] = map;
362
369
 
363
370
  }
@@ -377,21 +384,21 @@ class MaterialCreator {
377
384
 
378
385
  // Diffuse color (color under white light) using RGB values
379
386
 
380
- params.color = new Color().fromArray( value );
387
+ params.color = new Color().fromArray( value ).convertSRGBToLinear();
381
388
 
382
389
  break;
383
390
 
384
391
  case 'ks':
385
392
 
386
393
  // Specular color (color when light is reflected from shiny surface) using RGB values
387
- params.specular = new Color().fromArray( value );
394
+ params.specular = new Color().fromArray( value ).convertSRGBToLinear();
388
395
 
389
396
  break;
390
397
 
391
398
  case 'ke':
392
399
 
393
400
  // Emissive using RGB values
394
- params.emissive = new Color().fromArray( value );
401
+ params.emissive = new Color().fromArray( value ).convertSRGBToLinear();
395
402
 
396
403
  break;
397
404
 
@@ -173,8 +173,7 @@ class NRRDLoader extends Loader {
173
173
 
174
174
  headerObject.isNrrd = true;
175
175
 
176
- } else if ( l.match( /^#/ ) ) {
177
- } else if ( m = l.match( /(.*):(.*)/ ) ) {
176
+ } else if ( ! l.match( /^#/ ) && ( m = l.match( /(.*):(.*)/ ) ) ) {
178
177
 
179
178
  field = m[ 1 ].trim();
180
179
  data = m[ 2 ].trim();
@@ -11,7 +11,8 @@ import {
11
11
  MeshPhongMaterial,
12
12
  Points,
13
13
  PointsMaterial,
14
- Vector3
14
+ Vector3,
15
+ Color
15
16
  } from 'three';
16
17
 
17
18
  // o object_name | g group_name
@@ -22,6 +23,7 @@ const _material_library_pattern = /^mtllib /;
22
23
  const _material_use_pattern = /^usemtl /;
23
24
  // usemap map_name
24
25
  const _map_use_pattern = /^usemap /;
26
+ const _face_vertex_data_separator_pattern = /\s+/;
25
27
 
26
28
  const _vA = new Vector3();
27
29
  const _vB = new Vector3();
@@ -30,6 +32,8 @@ const _vC = new Vector3();
30
32
  const _ab = new Vector3();
31
33
  const _cb = new Vector3();
32
34
 
35
+ const _color = new Color();
36
+
33
37
  function ParserState() {
34
38
 
35
39
  const state = {
@@ -500,31 +504,22 @@ class OBJLoader extends Loader {
500
504
  }
501
505
 
502
506
  const lines = text.split( '\n' );
503
- let line = '', lineFirstChar = '';
504
- let lineLength = 0;
505
507
  let result = [];
506
508
 
507
- // Faster to just trim left side of the line. Use if available.
508
- const trimLeft = ( typeof ''.trimLeft === 'function' );
509
-
510
509
  for ( let i = 0, l = lines.length; i < l; i ++ ) {
511
510
 
512
- line = lines[ i ];
513
-
514
- line = trimLeft ? line.trimLeft() : line.trim();
515
-
516
- lineLength = line.length;
511
+ const line = lines[ i ].trimStart();
517
512
 
518
- if ( lineLength === 0 ) continue;
513
+ if ( line.length === 0 ) continue;
519
514
 
520
- lineFirstChar = line.charAt( 0 );
515
+ const lineFirstChar = line.charAt( 0 );
521
516
 
522
517
  // @todo invoke passed in handler if any
523
518
  if ( lineFirstChar === '#' ) continue;
524
519
 
525
520
  if ( lineFirstChar === 'v' ) {
526
521
 
527
- const data = line.split( /\s+/ );
522
+ const data = line.split( _face_vertex_data_separator_pattern );
528
523
 
529
524
  switch ( data[ 0 ] ) {
530
525
 
@@ -536,12 +531,13 @@ class OBJLoader extends Loader {
536
531
  );
537
532
  if ( data.length >= 7 ) {
538
533
 
539
- state.colors.push(
534
+ _color.setRGB(
540
535
  parseFloat( data[ 4 ] ),
541
536
  parseFloat( data[ 5 ] ),
542
537
  parseFloat( data[ 6 ] )
538
+ ).convertSRGBToLinear();
543
539
 
544
- );
540
+ state.colors.push( _color.r, _color.g, _color.b );
545
541
 
546
542
  } else {
547
543
 
@@ -570,8 +566,8 @@ class OBJLoader extends Loader {
570
566
 
571
567
  } else if ( lineFirstChar === 'f' ) {
572
568
 
573
- const lineData = line.substr( 1 ).trim();
574
- const vertexData = lineData.split( /\s+/ );
569
+ const lineData = line.slice( 1 ).trim();
570
+ const vertexData = lineData.split( _face_vertex_data_separator_pattern );
575
571
  const faceVertices = [];
576
572
 
577
573
  // Parse the face vertex data into an easy to work with format
@@ -633,7 +629,7 @@ class OBJLoader extends Loader {
633
629
 
634
630
  } else if ( lineFirstChar === 'p' ) {
635
631
 
636
- const lineData = line.substr( 1 ).trim();
632
+ const lineData = line.slice( 1 ).trim();
637
633
  const pointData = lineData.split( ' ' );
638
634
 
639
635
  state.addPointGeometry( pointData );
@@ -645,8 +641,8 @@ class OBJLoader extends Loader {
645
641
  // g group_name
646
642
 
647
643
  // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869
648
- // let name = result[ 0 ].substr( 1 ).trim();
649
- const name = ( ' ' + result[ 0 ].substr( 1 ).trim() ).substr( 1 );
644
+ // let name = result[ 0 ].slice( 1 ).trim();
645
+ const name = ( ' ' + result[ 0 ].slice( 1 ).trim() ).slice( 1 );
650
646
 
651
647
  state.startObject( name );
652
648
 
@@ -2,6 +2,7 @@ import {
2
2
  BufferGeometry,
3
3
  FileLoader,
4
4
  Float32BufferAttribute,
5
+ Int32BufferAttribute,
5
6
  Loader,
6
7
  LoaderUtils,
7
8
  Points,
@@ -31,7 +32,7 @@ class PCDLoader extends Loader {
31
32
 
32
33
  try {
33
34
 
34
- onLoad( scope.parse( data, url ) );
35
+ onLoad( scope.parse( data ) );
35
36
 
36
37
  } catch ( e ) {
37
38
 
@@ -53,7 +54,7 @@ class PCDLoader extends Loader {
53
54
 
54
55
  }
55
56
 
56
- parse( data, url ) {
57
+ parse( data ) {
57
58
 
58
59
  // from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js
59
60
 
@@ -114,11 +115,11 @@ class PCDLoader extends Loader {
114
115
 
115
116
  const PCDheader = {};
116
117
  const result1 = data.search( /[\r\n]DATA\s(\S*)\s/i );
117
- const result2 = /[\r\n]DATA\s(\S*)\s/i.exec( data.substr( result1 - 1 ) );
118
+ const result2 = /[\r\n]DATA\s(\S*)\s/i.exec( data.slice( result1 - 1 ) );
118
119
 
119
120
  PCDheader.data = result2[ 1 ];
120
121
  PCDheader.headerLen = result2[ 0 ].length + result1;
121
- PCDheader.str = data.substr( 0, PCDheader.headerLen );
122
+ PCDheader.str = data.slice( 0, PCDheader.headerLen );
122
123
 
123
124
  // remove comments
124
125
 
@@ -141,8 +142,7 @@ class PCDLoader extends Loader {
141
142
  if ( PCDheader.version !== null )
142
143
  PCDheader.version = parseFloat( PCDheader.version[ 1 ] );
143
144
 
144
- if ( PCDheader.fields !== null )
145
- PCDheader.fields = PCDheader.fields[ 1 ].split( ' ' );
145
+ PCDheader.fields = ( PCDheader.fields !== null ) ? PCDheader.fields[ 1 ].split( ' ' ) : [];
146
146
 
147
147
  if ( PCDheader.type !== null )
148
148
  PCDheader.type = PCDheader.type[ 1 ].split( ' ' );
@@ -230,13 +230,15 @@ class PCDLoader extends Loader {
230
230
  const position = [];
231
231
  const normal = [];
232
232
  const color = [];
233
+ const intensity = [];
234
+ const label = [];
233
235
 
234
236
  // ascii
235
237
 
236
238
  if ( PCDheader.data === 'ascii' ) {
237
239
 
238
240
  const offset = PCDheader.offset;
239
- const pcdData = textData.substr( PCDheader.headerLen );
241
+ const pcdData = textData.slice( PCDheader.headerLen );
240
242
  const lines = pcdData.split( '\n' );
241
243
 
242
244
  for ( let i = 0, l = lines.length; i < l; i ++ ) {
@@ -255,7 +257,22 @@ class PCDLoader extends Loader {
255
257
 
256
258
  if ( offset.rgb !== undefined ) {
257
259
 
258
- const rgb = parseFloat( line[ offset.rgb ] );
260
+ const rgb_field_index = PCDheader.fields.findIndex( ( field ) => field === 'rgb' );
261
+ const rgb_type = PCDheader.type[ rgb_field_index ];
262
+
263
+ const float = parseFloat( line[ offset.rgb ] );
264
+ let rgb = float;
265
+
266
+ if ( rgb_type === 'F' ) {
267
+
268
+ // treat float values as int
269
+ // https://github.com/daavoo/pyntcloud/pull/204/commits/7b4205e64d5ed09abe708b2e91b615690c24d518
270
+ const farr = new Float32Array( 1 );
271
+ farr[ 0 ] = float;
272
+ rgb = new Int32Array( farr.buffer )[ 0 ];
273
+
274
+ }
275
+
259
276
  const r = ( rgb >> 16 ) & 0x0000ff;
260
277
  const g = ( rgb >> 8 ) & 0x0000ff;
261
278
  const b = ( rgb >> 0 ) & 0x0000ff;
@@ -271,6 +288,18 @@ class PCDLoader extends Loader {
271
288
 
272
289
  }
273
290
 
291
+ if ( offset.intensity !== undefined ) {
292
+
293
+ intensity.push( parseFloat( line[ offset.intensity ] ) );
294
+
295
+ }
296
+
297
+ if ( offset.label !== undefined ) {
298
+
299
+ label.push( parseInt( line[ offset.label ] ) );
300
+
301
+ }
302
+
274
303
  }
275
304
 
276
305
  }
@@ -295,25 +324,46 @@ class PCDLoader extends Loader {
295
324
 
296
325
  if ( offset.x !== undefined ) {
297
326
 
298
- position.push( dataview.getFloat32( ( PCDheader.points * offset.x ) + PCDheader.size[ 0 ] * i, this.littleEndian ) );
299
- position.push( dataview.getFloat32( ( PCDheader.points * offset.y ) + PCDheader.size[ 1 ] * i, this.littleEndian ) );
300
- position.push( dataview.getFloat32( ( PCDheader.points * offset.z ) + PCDheader.size[ 2 ] * i, this.littleEndian ) );
327
+ const xIndex = PCDheader.fields.indexOf( 'x' );
328
+ const yIndex = PCDheader.fields.indexOf( 'y' );
329
+ const zIndex = PCDheader.fields.indexOf( 'z' );
330
+ position.push( dataview.getFloat32( ( PCDheader.points * offset.x ) + PCDheader.size[ xIndex ] * i, this.littleEndian ) );
331
+ position.push( dataview.getFloat32( ( PCDheader.points * offset.y ) + PCDheader.size[ yIndex ] * i, this.littleEndian ) );
332
+ position.push( dataview.getFloat32( ( PCDheader.points * offset.z ) + PCDheader.size[ zIndex ] * i, this.littleEndian ) );
301
333
 
302
334
  }
303
335
 
304
336
  if ( offset.rgb !== undefined ) {
305
337
 
306
- color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ 3 ] * i + 0 ) / 255.0 );
307
- color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ 3 ] * i + 1 ) / 255.0 );
308
- color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ 3 ] * i + 2 ) / 255.0 );
338
+ const rgbIndex = PCDheader.fields.indexOf( 'rgb' );
339
+ color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 2 ) / 255.0 );
340
+ color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 1 ) / 255.0 );
341
+ color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 0 ) / 255.0 );
309
342
 
310
343
  }
311
344
 
312
345
  if ( offset.normal_x !== undefined ) {
313
346
 
314
- normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_x ) + PCDheader.size[ 4 ] * i, this.littleEndian ) );
315
- normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_y ) + PCDheader.size[ 5 ] * i, this.littleEndian ) );
316
- normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_z ) + PCDheader.size[ 6 ] * i, this.littleEndian ) );
347
+ const xIndex = PCDheader.fields.indexOf( 'normal_x' );
348
+ const yIndex = PCDheader.fields.indexOf( 'normal_y' );
349
+ const zIndex = PCDheader.fields.indexOf( 'normal_z' );
350
+ normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_x ) + PCDheader.size[ xIndex ] * i, this.littleEndian ) );
351
+ normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_y ) + PCDheader.size[ yIndex ] * i, this.littleEndian ) );
352
+ normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_z ) + PCDheader.size[ zIndex ] * i, this.littleEndian ) );
353
+
354
+ }
355
+
356
+ if ( offset.intensity !== undefined ) {
357
+
358
+ const intensityIndex = PCDheader.fields.indexOf( 'intensity' );
359
+ intensity.push( dataview.getFloat32( ( PCDheader.points * offset.intensity ) + PCDheader.size[ intensityIndex ] * i, this.littleEndian ) );
360
+
361
+ }
362
+
363
+ if ( offset.label !== undefined ) {
364
+
365
+ const labelIndex = PCDheader.fields.indexOf( 'label' );
366
+ label.push( dataview.getInt32( ( PCDheader.points * offset.label ) + PCDheader.size[ labelIndex ] * i, this.littleEndian ) );
317
367
 
318
368
  }
319
369
 
@@ -354,6 +404,18 @@ class PCDLoader extends Loader {
354
404
 
355
405
  }
356
406
 
407
+ if ( offset.intensity !== undefined ) {
408
+
409
+ intensity.push( dataview.getFloat32( row + offset.intensity, this.littleEndian ) );
410
+
411
+ }
412
+
413
+ if ( offset.label !== undefined ) {
414
+
415
+ label.push( dataview.getInt32( row + offset.label, this.littleEndian ) );
416
+
417
+ }
418
+
357
419
  }
358
420
 
359
421
  }
@@ -365,6 +427,8 @@ class PCDLoader extends Loader {
365
427
  if ( position.length > 0 ) geometry.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );
366
428
  if ( normal.length > 0 ) geometry.setAttribute( 'normal', new Float32BufferAttribute( normal, 3 ) );
367
429
  if ( color.length > 0 ) geometry.setAttribute( 'color', new Float32BufferAttribute( color, 3 ) );
430
+ if ( intensity.length > 0 ) geometry.setAttribute( 'intensity', new Float32BufferAttribute( intensity, 1 ) );
431
+ if ( label.length > 0 ) geometry.setAttribute( 'label', new Int32BufferAttribute( label, 1 ) );
368
432
 
369
433
  geometry.computeBoundingSphere();
370
434
 
@@ -376,21 +440,11 @@ class PCDLoader extends Loader {
376
440
 
377
441
  material.vertexColors = true;
378
442
 
379
- } else {
380
-
381
- material.color.setHex( Math.random() * 0xffffff );
382
-
383
443
  }
384
444
 
385
445
  // build point cloud
386
446
 
387
- const mesh = new Points( geometry, material );
388
- let name = url.split( '' ).reverse().join( '' );
389
- name = /([^\/]*)/.exec( name );
390
- name = name[ 1 ].split( '' ).reverse().join( '' );
391
- mesh.name = name;
392
-
393
- return mesh;
447
+ return new Points( geometry, material );
394
448
 
395
449
  }
396
450
 
@@ -59,7 +59,7 @@ class PDBLoader extends Loader {
59
59
 
60
60
  function capitalize( text ) {
61
61
 
62
- return text.charAt( 0 ).toUpperCase() + text.substr( 1 ).toLowerCase();
62
+ return text.charAt( 0 ).toUpperCase() + text.slice( 1 ).toLowerCase();
63
63
 
64
64
  }
65
65
 
@@ -71,7 +71,7 @@ class PDBLoader extends Loader {
71
71
 
72
72
  function parseBond( start, length, satom, i ) {
73
73
 
74
- const eatom = parseInt( lines[ i ].substr( start, length ) );
74
+ const eatom = parseInt( lines[ i ].slice( start, start + length ) );
75
75
 
76
76
  if ( eatom ) {
77
77
 
@@ -183,18 +183,18 @@ class PDBLoader extends Loader {
183
183
 
184
184
  for ( let i = 0, l = lines.length; i < l; i ++ ) {
185
185
 
186
- if ( lines[ i ].substr( 0, 4 ) === 'ATOM' || lines[ i ].substr( 0, 6 ) === 'HETATM' ) {
186
+ if ( lines[ i ].slice( 0, 4 ) === 'ATOM' || lines[ i ].slice( 0, 6 ) === 'HETATM' ) {
187
187
 
188
- const x = parseFloat( lines[ i ].substr( 30, 7 ) );
189
- const y = parseFloat( lines[ i ].substr( 38, 7 ) );
190
- const z = parseFloat( lines[ i ].substr( 46, 7 ) );
191
- const index = parseInt( lines[ i ].substr( 6, 5 ) ) - 1;
188
+ const x = parseFloat( lines[ i ].slice( 30, 37 ) );
189
+ const y = parseFloat( lines[ i ].slice( 38, 45 ) );
190
+ const z = parseFloat( lines[ i ].slice( 46, 53 ) );
191
+ const index = parseInt( lines[ i ].slice( 6, 11 ) ) - 1;
192
192
 
193
- let e = trim( lines[ i ].substr( 76, 2 ) ).toLowerCase();
193
+ let e = trim( lines[ i ].slice( 76, 78 ) ).toLowerCase();
194
194
 
195
195
  if ( e === '' ) {
196
196
 
197
- e = trim( lines[ i ].substr( 12, 2 ) ).toLowerCase();
197
+ e = trim( lines[ i ].slice( 12, 14 ) ).toLowerCase();
198
198
 
199
199
  }
200
200
 
@@ -203,9 +203,9 @@ class PDBLoader extends Loader {
203
203
  atoms.push( atomData );
204
204
  _atomMap[ index ] = atomData;
205
205
 
206
- } else if ( lines[ i ].substr( 0, 6 ) === 'CONECT' ) {
206
+ } else if ( lines[ i ].slice( 0, 6 ) === 'CONECT' ) {
207
207
 
208
- const satom = parseInt( lines[ i ].substr( 6, 5 ) );
208
+ const satom = parseInt( lines[ i ].slice( 6, 11 ) );
209
209
 
210
210
  parseBond( 11, 5, satom, i );
211
211
  parseBond( 16, 5, satom, i );
@@ -3,7 +3,8 @@ import {
3
3
  FileLoader,
4
4
  Float32BufferAttribute,
5
5
  Loader,
6
- LoaderUtils
6
+ LoaderUtils,
7
+ Color
7
8
  } from 'three';
8
9
 
9
10
  /**
@@ -32,6 +33,7 @@ import {
32
33
  *
33
34
  */
34
35
 
36
+ const _color = new Color();
35
37
 
36
38
  class PLYLoader extends Loader {
37
39
 
@@ -88,7 +90,7 @@ class PLYLoader extends Loader {
88
90
 
89
91
  function parseHeader( data ) {
90
92
 
91
- const patternHeader = /^ply([\s\S]*)end_header\r?\n/;
93
+ const patternHeader = /^ply([\s\S]*)end_header(\r\n|\r|\n)/;
92
94
  let headerText = '';
93
95
  let headerLength = 0;
94
96
  const result = patternHeader.exec( data );
@@ -107,7 +109,7 @@ class PLYLoader extends Loader {
107
109
  objInfo: ''
108
110
  };
109
111
 
110
- const lines = headerText.split( '\n' );
112
+ const lines = headerText.split( /\r\n|\r|\n/ );
111
113
  let currentElement;
112
114
 
113
115
  function make_ply_element_property( propertValues, propertyNameMapping ) {
@@ -281,7 +283,7 @@ class PLYLoader extends Loader {
281
283
 
282
284
  }
283
285
 
284
- const lines = body.split( '\n' );
286
+ const lines = body.split( /\r\n|\r|\n/ );
285
287
  let currentElement = 0;
286
288
  let currentElementCount = 0;
287
289
 
@@ -407,7 +409,13 @@ class PLYLoader extends Loader {
407
409
 
408
410
  if ( attrR !== null && attrG !== null && attrB !== null ) {
409
411
 
410
- buffer.colors.push( element[ attrR ] / 255.0, element[ attrG ] / 255.0, element[ attrB ] / 255.0 );
412
+ _color.setRGB(
413
+ element[ attrR ] / 255.0,
414
+ element[ attrG ] / 255.0,
415
+ element[ attrB ] / 255.0
416
+ ).convertSRGBToLinear();
417
+
418
+ buffer.colors.push( _color.r, _color.g, _color.b );
411
419
 
412
420
  }
413
421