super-three 0.136.0 → 0.141.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 (768) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +24 -26
  3. package/build/three.cjs +35889 -0
  4. package/build/three.js +4837 -6036
  5. package/build/three.min.js +2 -2
  6. package/build/three.module.js +16548 -17930
  7. package/examples/js/animation/CCDIKSolver.js +3 -2
  8. package/examples/js/animation/MMDAnimationHelper.js +3 -1
  9. package/examples/js/animation/MMDPhysics.js +3 -3
  10. package/examples/js/cameras/CinematicCamera.js +2 -7
  11. package/examples/js/controls/ArcballControls.js +3 -1
  12. package/examples/js/controls/PointerLockControls.js +3 -2
  13. package/examples/js/controls/TrackballControls.js +1 -4
  14. package/examples/js/controls/TransformControls.js +5 -6
  15. package/examples/js/controls/experimental/CameraControls.js +8 -4
  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 +7 -4
  20. package/examples/js/effects/AsciiEffect.js +10 -29
  21. package/examples/js/exporters/ColladaExporter.js +29 -7
  22. package/examples/js/exporters/EXRExporter.js +458 -0
  23. package/examples/js/exporters/GLTFExporter.js +233 -105
  24. package/examples/js/exporters/MMDExporter.js +1 -1
  25. package/examples/js/exporters/OBJExporter.js +12 -18
  26. package/examples/js/exporters/PLYExporter.js +15 -20
  27. package/examples/js/exporters/USDZExporter.js +13 -0
  28. package/examples/js/geometries/ConvexGeometry.js +1 -1
  29. package/examples/js/geometries/DecalGeometry.js +0 -7
  30. package/examples/js/geometries/LightningStrike.js +2 -2
  31. package/examples/js/geometries/ParametricGeometries.js +3 -3
  32. package/examples/js/geometries/TextGeometry.js +12 -10
  33. package/examples/js/helpers/OctreeHelper.js +74 -0
  34. package/examples/js/helpers/VertexNormalsHelper.js +4 -23
  35. package/examples/js/helpers/VertexTangentsHelper.js +3 -13
  36. package/examples/js/helpers/ViewHelper.js +266 -0
  37. package/examples/js/interactive/HTMLMesh.js +249 -42
  38. package/examples/js/interactive/SelectionHelper.js +1 -1
  39. package/examples/js/libs/opentype.min.js +1 -118
  40. package/examples/js/lines/Line2.js +1 -2
  41. package/examples/js/lines/LineGeometry.js +10 -21
  42. package/examples/js/lines/LineMaterial.js +2 -3
  43. package/examples/js/lines/LineSegments2.js +214 -140
  44. package/examples/js/lines/LineSegmentsGeometry.js +3 -14
  45. package/examples/js/lines/Wireframe.js +2 -3
  46. package/examples/js/lines/WireframeGeometry2.js +1 -2
  47. package/examples/js/loaders/3MFLoader.js +21 -17
  48. package/examples/js/loaders/AMFLoader.js +1 -1
  49. package/examples/js/loaders/BasisTextureLoader.js +1 -0
  50. package/examples/js/loaders/ColladaLoader.js +33 -12
  51. package/examples/js/loaders/DDSLoader.js +23 -30
  52. package/examples/js/loaders/EXRLoader.js +314 -294
  53. package/examples/js/loaders/FBXLoader.js +11 -0
  54. package/examples/js/loaders/FontLoader.js +1 -2
  55. package/examples/js/loaders/GCodeLoader.js +0 -1
  56. package/examples/js/loaders/GLTFLoader.js +250 -61
  57. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -2
  58. package/examples/js/loaders/KMZLoader.js +1 -1
  59. package/examples/js/loaders/KTX2Loader.js +1 -9
  60. package/examples/js/loaders/LDrawLoader.js +1342 -962
  61. package/examples/js/loaders/LUT3dlLoader.js +18 -11
  62. package/examples/js/loaders/LUTCubeLoader.js +4 -5
  63. package/examples/js/loaders/LWOLoader.js +4 -2
  64. package/examples/js/loaders/LogLuvLoader.js +1 -2
  65. package/examples/js/loaders/MD2Loader.js +5 -5
  66. package/examples/js/loaders/MMDLoader.js +18 -4
  67. package/examples/js/loaders/MTLLoader.js +10 -3
  68. package/examples/js/loaders/NRRDLoader.js +1 -1
  69. package/examples/js/loaders/OBJLoader.js +9 -5
  70. package/examples/js/loaders/PCDLoader.js +24 -15
  71. package/examples/js/loaders/PDBLoader.js +11 -11
  72. package/examples/js/loaders/PLYLoader.js +5 -1
  73. package/examples/js/loaders/RGBELoader.js +9 -17
  74. package/examples/js/loaders/RGBMLoader.js +13 -16
  75. package/examples/js/loaders/STLLoader.js +1 -1
  76. package/examples/js/loaders/SVGLoader.js +21 -11
  77. package/examples/js/loaders/VOXLoader.js +3 -4
  78. package/examples/js/loaders/VRMLLoader.js +9 -21
  79. package/examples/js/loaders/VTKLoader.js +260 -295
  80. package/examples/js/loaders/lwo/LWO2Parser.js +4 -4
  81. package/examples/js/loaders/lwo/LWO3Parser.js +4 -4
  82. package/examples/js/math/ConvexHull.js +13 -28
  83. package/examples/js/math/Lut.js +27 -26
  84. package/examples/js/misc/MorphAnimMesh.js +2 -2
  85. package/examples/js/misc/ProgressiveLightMap.js +1 -1
  86. package/examples/js/misc/Volume.js +39 -48
  87. package/examples/js/misc/VolumeSlice.js +21 -21
  88. package/examples/js/modifiers/CurveModifier.js +8 -7
  89. package/examples/js/modifiers/EdgeSplitModifier.js +0 -13
  90. package/examples/js/modifiers/SimplifyModifier.js +1 -18
  91. package/examples/js/modifiers/TessellateModifier.js +0 -7
  92. package/examples/js/objects/Lensflare.js +4 -4
  93. package/examples/js/objects/LightningStorm.js +4 -5
  94. package/examples/js/objects/MarchingCubes.js +6 -11
  95. package/examples/js/objects/Reflector.js +10 -16
  96. package/examples/js/objects/ReflectorForSSRPass.js +1 -11
  97. package/examples/js/objects/Refractor.js +10 -16
  98. package/examples/js/objects/ShadowMesh.js +1 -2
  99. package/examples/js/objects/Sky.js +1 -1
  100. package/examples/js/objects/Water.js +2 -15
  101. package/examples/js/objects/Water2.js +1 -1
  102. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +6 -10
  103. package/examples/js/postprocessing/AfterimagePass.js +2 -6
  104. package/examples/js/postprocessing/BloomPass.js +50 -19
  105. package/examples/js/postprocessing/DotScreenPass.js +1 -1
  106. package/examples/js/postprocessing/EffectComposer.js +1 -6
  107. package/examples/js/postprocessing/GlitchPass.js +4 -5
  108. package/examples/js/postprocessing/LUTPass.js +2 -2
  109. package/examples/js/postprocessing/OutlinePass.js +8 -17
  110. package/examples/js/postprocessing/SAOPass.js +2 -7
  111. package/examples/js/postprocessing/SMAAPass.js +2 -9
  112. package/examples/js/postprocessing/SSAARenderPass.js +1 -6
  113. package/examples/js/postprocessing/SSAOPass.js +9 -21
  114. package/examples/js/postprocessing/SSRPass.js +3 -8
  115. package/examples/js/postprocessing/SavePass.js +1 -5
  116. package/examples/js/postprocessing/TAARenderPass.js +4 -4
  117. package/examples/js/postprocessing/UnrealBloomPass.js +3 -12
  118. package/examples/js/renderers/CSS2DRenderer.js +20 -19
  119. package/examples/js/renderers/CSS3DRenderer.js +40 -36
  120. package/examples/js/renderers/Projector.js +97 -124
  121. package/examples/js/renderers/SVGRenderer.js +3 -4
  122. package/examples/js/shaders/BlendShader.js +2 -1
  123. package/examples/js/shaders/CopyShader.js +4 -3
  124. package/examples/js/shaders/DigitalGlitch.js +3 -3
  125. package/examples/js/shaders/FXAAShader.js +239 -1069
  126. package/examples/js/shaders/FreiChenShader.js +1 -1
  127. package/examples/js/shaders/HorizontalBlurShader.js +1 -1
  128. package/examples/js/shaders/HorizontalTiltShiftShader.js +1 -1
  129. package/examples/js/shaders/MMDToonShader.js +0 -1
  130. package/examples/js/shaders/SSAOShader.js +1 -1
  131. package/examples/js/shaders/SSRShader.js +3 -3
  132. package/examples/js/shaders/ToneMapShader.js +1 -1
  133. package/examples/js/utils/BufferGeometryUtils.js +282 -22
  134. package/examples/js/utils/GPUStatsPanel.js +1 -1
  135. package/examples/js/utils/LDrawUtils.js +182 -0
  136. package/examples/js/utils/SceneUtils.js +59 -0
  137. package/examples/js/utils/SkeletonUtils.js +1 -1
  138. package/examples/js/utils/UVsDebug.js +23 -33
  139. package/examples/jsm/animation/CCDIKSolver.js +3 -9
  140. package/examples/jsm/animation/MMDPhysics.js +2 -2
  141. package/examples/jsm/cameras/CinematicCamera.js +2 -5
  142. package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
  143. package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +7 -1
  144. package/examples/jsm/controls/ArcballControls.js +3 -1
  145. package/examples/jsm/controls/PointerLockControls.js +4 -2
  146. package/examples/jsm/controls/TrackballControls.js +1 -4
  147. package/examples/jsm/controls/TransformControls.js +6 -6
  148. package/examples/jsm/controls/experimental/CameraControls.js +2 -2
  149. package/examples/jsm/csm/CSMFrustum.js +1 -1
  150. package/examples/jsm/csm/CSMShader.js +51 -35
  151. package/examples/jsm/curves/CurveExtras.js +15 -17
  152. package/examples/jsm/effects/AnaglyphEffect.js +4 -4
  153. package/examples/jsm/effects/AsciiEffect.js +9 -22
  154. package/examples/jsm/exporters/ColladaExporter.js +31 -6
  155. package/examples/jsm/exporters/EXRExporter.js +507 -0
  156. package/examples/jsm/exporters/GLTFExporter.js +261 -103
  157. package/examples/jsm/exporters/KTX2Exporter.js +281 -0
  158. package/examples/jsm/exporters/MMDExporter.js +1 -1
  159. package/examples/jsm/exporters/OBJExporter.js +11 -18
  160. package/examples/jsm/exporters/PLYExporter.js +23 -21
  161. package/examples/jsm/exporters/USDZExporter.js +12 -0
  162. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  163. package/examples/jsm/geometries/DecalGeometry.js +0 -7
  164. package/examples/jsm/geometries/LightningStrike.js +2 -2
  165. package/examples/jsm/geometries/ParametricGeometries.js +3 -3
  166. package/examples/jsm/geometries/TextGeometry.js +13 -13
  167. package/examples/jsm/helpers/OctreeHelper.js +58 -0
  168. package/examples/jsm/helpers/VertexNormalsHelper.js +4 -25
  169. package/examples/jsm/helpers/VertexTangentsHelper.js +3 -15
  170. package/examples/jsm/helpers/ViewHelper.js +295 -0
  171. package/examples/jsm/interactive/HTMLMesh.js +268 -36
  172. package/examples/jsm/interactive/SelectionHelper.js +1 -1
  173. package/examples/jsm/libs/flow.module.js +947 -183
  174. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  175. package/examples/jsm/libs/lil-gui.module.min.js +2 -2
  176. package/examples/jsm/libs/mikktspace.module.js +128 -0
  177. package/examples/jsm/libs/opentype.module.js +14568 -0
  178. package/examples/jsm/lines/Line2.js +2 -2
  179. package/examples/jsm/lines/LineGeometry.js +11 -19
  180. package/examples/jsm/lines/LineMaterial.js +3 -3
  181. package/examples/jsm/lines/LineSegments2.js +210 -145
  182. package/examples/jsm/lines/LineSegmentsGeometry.js +3 -12
  183. package/examples/jsm/lines/Wireframe.js +3 -3
  184. package/examples/jsm/lines/WireframeGeometry2.js +2 -2
  185. package/examples/jsm/loaders/3DMLoader.js +3 -2
  186. package/examples/jsm/loaders/3MFLoader.js +21 -17
  187. package/examples/jsm/loaders/AMFLoader.js +1 -1
  188. package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
  189. package/examples/jsm/loaders/ColladaLoader.js +40 -12
  190. package/examples/jsm/loaders/DDSLoader.js +21 -28
  191. package/examples/jsm/loaders/EXRLoader.js +309 -293
  192. package/examples/jsm/loaders/FBXLoader.js +11 -0
  193. package/examples/jsm/loaders/FontLoader.js +2 -2
  194. package/examples/jsm/loaders/GCodeLoader.js +0 -1
  195. package/examples/jsm/loaders/GLTFLoader.js +263 -68
  196. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -4
  197. package/examples/jsm/loaders/KMZLoader.js +1 -1
  198. package/examples/jsm/loaders/KTX2Loader.js +1 -10
  199. package/examples/jsm/loaders/LDrawLoader.js +1335 -988
  200. package/examples/jsm/loaders/LUT3dlLoader.js +19 -14
  201. package/examples/jsm/loaders/LUTCubeLoader.js +5 -7
  202. package/examples/jsm/loaders/LWOLoader.js +5 -3
  203. package/examples/jsm/loaders/LogLuvLoader.js +2 -2
  204. package/examples/jsm/loaders/MD2Loader.js +5 -5
  205. package/examples/jsm/loaders/MMDLoader.js +21 -3
  206. package/examples/jsm/loaders/MTLLoader.js +11 -4
  207. package/examples/jsm/loaders/NRRDLoader.js +1 -2
  208. package/examples/jsm/loaders/OBJLoader.js +11 -7
  209. package/examples/jsm/loaders/PCDLoader.js +25 -17
  210. package/examples/jsm/loaders/PDBLoader.js +11 -11
  211. package/examples/jsm/loaders/PLYLoader.js +10 -2
  212. package/examples/jsm/loaders/RGBELoader.js +11 -20
  213. package/examples/jsm/loaders/RGBMLoader.js +15 -12
  214. package/examples/jsm/loaders/STLLoader.js +1 -1
  215. package/examples/jsm/loaders/SVGLoader.js +26 -11
  216. package/examples/jsm/loaders/TTFLoader.js +1 -1
  217. package/examples/jsm/loaders/VOXLoader.js +5 -5
  218. package/examples/jsm/loaders/VRMLLoader.js +9 -23
  219. package/examples/jsm/loaders/VTKLoader.js +256 -284
  220. package/examples/jsm/loaders/ifc/web-ifc-api.js +9 -8
  221. package/examples/jsm/loaders/lwo/LWO2Parser.js +4 -4
  222. package/examples/jsm/loaders/lwo/LWO3Parser.js +4 -4
  223. package/examples/jsm/math/ConvexHull.js +13 -28
  224. package/examples/jsm/math/Lut.js +35 -25
  225. package/examples/jsm/misc/MorphAnimMesh.js +2 -2
  226. package/examples/jsm/misc/ProgressiveLightMap.js +1 -1
  227. package/examples/jsm/misc/Volume.js +39 -46
  228. package/examples/jsm/misc/VolumeSlice.js +21 -21
  229. package/examples/jsm/modifiers/CurveModifier.js +9 -8
  230. package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -13
  231. package/examples/jsm/modifiers/SimplifyModifier.js +1 -18
  232. package/examples/jsm/modifiers/TessellateModifier.js +0 -7
  233. package/examples/jsm/node-editor/NodeEditor.js +485 -163
  234. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
  235. package/examples/jsm/node-editor/accessors/NormalEditor.js +9 -9
  236. package/examples/jsm/node-editor/accessors/PositionEditor.js +9 -9
  237. package/examples/jsm/node-editor/accessors/UVEditor.js +7 -8
  238. package/examples/jsm/node-editor/core/BaseNode.js +89 -0
  239. package/examples/jsm/node-editor/core/DataFile.js +59 -0
  240. package/examples/jsm/node-editor/core/FileEditor.js +20 -0
  241. package/examples/jsm/node-editor/core/FileURLEditor.js +29 -0
  242. package/examples/jsm/node-editor/display/BlendEditor.js +10 -9
  243. package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
  244. package/examples/jsm/node-editor/examples/animate-uv.json +1 -1
  245. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -1
  246. package/examples/jsm/node-editor/examples/matcap.json +1 -0
  247. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -1
  248. package/examples/jsm/node-editor/examples/rim.json +1 -1
  249. package/examples/jsm/node-editor/inputs/ColorEditor.js +18 -13
  250. package/examples/jsm/node-editor/inputs/FloatEditor.js +8 -9
  251. package/examples/jsm/node-editor/inputs/SliderEditor.js +6 -7
  252. package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
  253. package/examples/jsm/node-editor/inputs/Vector2Editor.js +9 -9
  254. package/examples/jsm/node-editor/inputs/Vector3Editor.js +11 -11
  255. package/examples/jsm/node-editor/inputs/Vector4Editor.js +12 -12
  256. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +87 -0
  257. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +102 -0
  258. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +31 -18
  259. package/examples/jsm/node-editor/math/AngleEditor.js +40 -0
  260. package/examples/jsm/node-editor/math/DotEditor.js +8 -9
  261. package/examples/jsm/node-editor/math/InvertEditor.js +8 -7
  262. package/examples/jsm/node-editor/math/LimiterEditor.js +28 -14
  263. package/examples/jsm/node-editor/math/NormalizeEditor.js +9 -7
  264. package/examples/jsm/node-editor/math/OperatorEditor.js +29 -16
  265. package/examples/jsm/node-editor/math/PowerEditor.js +20 -10
  266. package/examples/jsm/node-editor/math/TrigonometryEditor.js +15 -9
  267. package/examples/jsm/node-editor/procedural/CheckerEditor.js +7 -6
  268. package/examples/jsm/node-editor/scene/MeshEditor.js +99 -0
  269. package/examples/jsm/node-editor/scene/Object3DEditor.js +160 -0
  270. package/examples/jsm/node-editor/scene/PointsEditor.js +99 -0
  271. package/examples/jsm/node-editor/utils/JoinEditor.js +58 -0
  272. package/examples/jsm/node-editor/utils/OscillatorEditor.js +9 -8
  273. package/examples/jsm/node-editor/utils/PreviewEditor.js +166 -0
  274. package/examples/jsm/node-editor/utils/SplitEditor.js +39 -0
  275. package/examples/jsm/node-editor/utils/TimerEditor.js +7 -6
  276. package/examples/jsm/nodes/Nodes.js +283 -94
  277. package/examples/jsm/nodes/accessors/BufferNode.js +24 -0
  278. package/examples/jsm/nodes/accessors/CameraNode.js +27 -196
  279. package/examples/jsm/nodes/accessors/CubeTextureNode.js +103 -0
  280. package/examples/jsm/nodes/accessors/InstanceNode.js +58 -0
  281. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialNode.js +49 -11
  282. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialReferenceNode.js +0 -0
  283. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelNode.js +8 -0
  284. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelViewProjectionNode.js +0 -0
  285. package/examples/jsm/nodes/accessors/NormalNode.js +39 -99
  286. package/examples/jsm/{renderers/nodes → nodes}/accessors/Object3DNode.js +34 -17
  287. package/examples/jsm/{renderers/nodes → nodes}/accessors/PointUVNode.js +2 -2
  288. package/examples/jsm/nodes/accessors/PositionNode.js +41 -110
  289. package/examples/jsm/nodes/accessors/ReferenceNode.js +65 -0
  290. package/examples/jsm/nodes/accessors/ReflectNode.js +34 -121
  291. package/examples/jsm/nodes/accessors/SkinningNode.js +102 -0
  292. package/examples/jsm/nodes/accessors/StorageBufferNode.js +21 -0
  293. package/examples/jsm/nodes/accessors/TextureNode.js +100 -0
  294. package/examples/jsm/nodes/accessors/UVNode.js +17 -43
  295. package/examples/jsm/nodes/accessors/UserDataNode.js +23 -0
  296. package/examples/jsm/nodes/core/ArrayUniformNode.js +23 -0
  297. package/examples/jsm/nodes/core/AttributeNode.js +33 -30
  298. package/examples/jsm/{renderers/nodes → nodes}/core/BypassNode.js +2 -2
  299. package/examples/jsm/{renderers/nodes → nodes}/core/CodeNode.js +2 -30
  300. package/examples/jsm/nodes/core/ConstNode.js +10 -106
  301. package/examples/jsm/{renderers/nodes → nodes}/core/ContextNode.js +17 -3
  302. package/examples/jsm/nodes/core/ExpressionNode.js +24 -7
  303. package/examples/jsm/nodes/core/FunctionCallNode.js +26 -67
  304. package/examples/jsm/nodes/core/FunctionNode.js +43 -216
  305. package/examples/jsm/nodes/core/InputNode.js +28 -60
  306. package/examples/jsm/nodes/core/InstanceIndexNode.js +21 -0
  307. package/examples/jsm/nodes/core/Node.js +228 -94
  308. package/examples/jsm/{renderers/nodes → nodes}/core/NodeAttribute.js +2 -2
  309. package/examples/jsm/nodes/core/NodeBuilder.js +388 -560
  310. package/examples/jsm/{renderers/nodes → nodes}/core/NodeCode.js +0 -0
  311. package/examples/jsm/nodes/core/NodeFrame.js +30 -23
  312. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunction.js +0 -0
  313. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunctionInput.js +0 -0
  314. package/examples/jsm/{renderers/nodes → nodes}/core/NodeKeywords.js +0 -0
  315. package/examples/jsm/{renderers/nodes → nodes}/core/NodeParser.js +0 -0
  316. package/examples/jsm/nodes/core/NodeUniform.js +8 -6
  317. package/examples/jsm/nodes/core/NodeUtils.js +69 -37
  318. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVar.js +2 -2
  319. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVary.js +2 -2
  320. package/examples/jsm/{renderers/nodes → nodes}/core/PropertyNode.js +0 -0
  321. package/examples/jsm/nodes/core/TempNode.js +20 -112
  322. package/examples/jsm/nodes/core/UniformNode.js +46 -0
  323. package/examples/jsm/nodes/core/VarNode.js +58 -27
  324. package/examples/jsm/{renderers/nodes → nodes}/core/VaryNode.js +0 -0
  325. package/examples/jsm/{renderers/nodes → nodes}/core/constants.js +0 -0
  326. package/examples/jsm/nodes/display/ColorSpaceNode.js +95 -0
  327. package/examples/jsm/nodes/display/FrontFacingNode.js +21 -0
  328. package/examples/jsm/nodes/display/NormalMapNode.js +86 -0
  329. package/examples/jsm/nodes/display/ToneMappingNode.js +51 -0
  330. package/examples/jsm/nodes/fog/FogNode.js +31 -0
  331. package/examples/jsm/nodes/fog/FogRangeNode.js +27 -0
  332. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +33 -0
  333. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  334. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +27 -0
  335. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
  336. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +18 -0
  337. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
  338. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +94 -0
  339. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +22 -0
  340. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +12 -0
  341. package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
  342. package/examples/jsm/nodes/gpgpu/ComputeNode.js +63 -0
  343. package/examples/jsm/nodes/lighting/AONode.js +25 -0
  344. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +37 -0
  345. package/examples/jsm/nodes/lighting/EnvironmentNode.js +65 -0
  346. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +50 -0
  347. package/examples/jsm/nodes/lighting/LightingContextNode.js +75 -0
  348. package/examples/jsm/nodes/lighting/LightingNode.js +19 -0
  349. package/examples/jsm/nodes/lighting/LightsNode.js +120 -0
  350. package/examples/jsm/nodes/lighting/PunctualLightNode.js +68 -0
  351. package/examples/jsm/nodes/loaders/NodeLoader.js +107 -0
  352. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +42 -0
  353. package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
  354. package/examples/jsm/{renderers/nodes → nodes}/materials/LineBasicNodeMaterial.js +11 -4
  355. package/examples/jsm/nodes/materials/Materials.js +65 -0
  356. package/examples/jsm/{renderers/nodes → nodes}/materials/MeshBasicNodeMaterial.js +13 -4
  357. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +162 -22
  358. package/examples/jsm/nodes/materials/NodeMaterial.js +128 -113
  359. package/examples/jsm/{renderers/nodes → nodes}/materials/PointsNodeMaterial.js +13 -4
  360. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +84 -16
  361. package/examples/jsm/nodes/math/CondNode.js +26 -95
  362. package/examples/jsm/nodes/math/MathNode.js +164 -187
  363. package/examples/jsm/nodes/math/OperatorNode.js +161 -41
  364. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeFunction.js +2 -2
  365. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeParser.js +0 -0
  366. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeFunction.js +20 -5
  367. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeParser.js +0 -0
  368. package/examples/jsm/nodes/procedural/CheckerNode.js +16 -57
  369. package/examples/jsm/nodes/shadernode/ShaderNode.js +262 -0
  370. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +274 -0
  371. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +106 -0
  372. package/examples/jsm/{renderers/nodes → nodes}/utils/ArrayElementNode.js +3 -3
  373. package/examples/jsm/{renderers/nodes → nodes}/utils/ConvertNode.js +11 -3
  374. package/examples/jsm/nodes/utils/JoinNode.js +17 -89
  375. package/examples/jsm/nodes/utils/MatcapUVNode.js +25 -0
  376. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +32 -0
  377. package/examples/jsm/{renderers/nodes → nodes}/utils/OscNode.js +18 -2
  378. package/examples/jsm/{renderers/nodes → nodes}/utils/SplitNode.js +35 -4
  379. package/examples/jsm/{renderers/nodes → nodes}/utils/SpriteSheetUVNode.js +3 -3
  380. package/examples/jsm/nodes/utils/TimerNode.js +30 -65
  381. package/examples/jsm/objects/Lensflare.js +6 -6
  382. package/examples/jsm/objects/LightningStorm.js +4 -4
  383. package/examples/jsm/objects/MarchingCubes.js +5 -9
  384. package/examples/jsm/objects/Reflector.js +8 -19
  385. package/examples/jsm/objects/ReflectorForSSRPass.js +2 -14
  386. package/examples/jsm/objects/Refractor.js +8 -19
  387. package/examples/jsm/objects/ShadowMesh.js +2 -2
  388. package/examples/jsm/objects/Sky.js +2 -2
  389. package/examples/jsm/objects/Water.js +3 -18
  390. package/examples/jsm/objects/Water2.js +2 -2
  391. package/examples/jsm/offscreen/jank.js +5 -5
  392. package/examples/jsm/offscreen/offscreen.js +1 -1
  393. package/examples/jsm/offscreen/scene.js +11 -11
  394. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +5 -7
  395. package/examples/jsm/postprocessing/AfterimagePass.js +0 -10
  396. package/examples/jsm/postprocessing/BloomPass.js +48 -20
  397. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  398. package/examples/jsm/postprocessing/EffectComposer.js +1 -9
  399. package/examples/jsm/postprocessing/GlitchPass.js +7 -6
  400. package/examples/jsm/postprocessing/LUTPass.js +2 -2
  401. package/examples/jsm/postprocessing/OutlinePass.js +8 -15
  402. package/examples/jsm/postprocessing/SAOPass.js +2 -9
  403. package/examples/jsm/postprocessing/SMAAPass.js +2 -11
  404. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -4
  405. package/examples/jsm/postprocessing/SSAOPass.js +13 -25
  406. package/examples/jsm/postprocessing/SSRPass.js +3 -9
  407. package/examples/jsm/postprocessing/SavePass.js +1 -3
  408. package/examples/jsm/postprocessing/TAARenderPass.js +4 -4
  409. package/examples/jsm/postprocessing/UnrealBloomPass.js +3 -8
  410. package/examples/jsm/renderers/CSS2DRenderer.js +21 -19
  411. package/examples/jsm/renderers/CSS3DRenderer.js +39 -34
  412. package/examples/jsm/renderers/Projector.js +101 -128
  413. package/examples/jsm/renderers/SVGRenderer.js +4 -4
  414. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +1 -1
  415. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +127 -23
  416. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +14 -3
  417. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +5 -5
  418. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +4 -4
  419. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +16 -10
  420. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +8 -7
  421. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +43 -0
  422. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +14 -7
  423. package/examples/jsm/renderers/webgpu/WebGPUInfo.js +1 -1
  424. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -6
  425. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +20 -20
  426. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +2 -1
  427. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +66 -0
  428. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +49 -28
  429. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +14 -14
  430. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +2 -2
  431. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +5 -8
  432. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +23 -20
  433. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +38 -20
  434. package/examples/jsm/renderers/webgpu/WebGPUUniform.js +14 -14
  435. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +5 -32
  436. package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +2 -2
  437. package/examples/jsm/renderers/webgpu/constants.js +3 -2
  438. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +276 -278
  439. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +20 -2
  440. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +24 -14
  441. package/examples/jsm/shaders/BlendShader.js +2 -1
  442. package/examples/jsm/shaders/CopyShader.js +4 -3
  443. package/examples/jsm/shaders/DigitalGlitch.js +3 -3
  444. package/examples/jsm/shaders/FXAAShader.js +219 -1051
  445. package/examples/jsm/shaders/FreiChenShader.js +1 -1
  446. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -1
  447. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +1 -1
  448. package/examples/jsm/shaders/MMDToonShader.js +0 -1
  449. package/examples/jsm/shaders/SSAOShader.js +1 -1
  450. package/examples/jsm/shaders/SSRShader.js +3 -3
  451. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  452. package/examples/jsm/utils/BufferGeometryUtils.js +292 -22
  453. package/examples/jsm/utils/GPUStatsPanel.js +1 -1
  454. package/examples/jsm/utils/LDrawUtils.js +202 -0
  455. package/examples/jsm/utils/SceneUtils.js +76 -2
  456. package/examples/jsm/utils/SkeletonUtils.js +1 -1
  457. package/examples/jsm/utils/UVsDebug.js +23 -32
  458. package/examples/jsm/webxr/ARButton.js +14 -4
  459. package/examples/jsm/webxr/OculusHandPointerModel.js +3 -3
  460. package/examples/jsm/webxr/Text2D.js +1 -1
  461. package/examples/jsm/webxr/VRButton.js +39 -1
  462. package/examples/jsm/webxr/XREstimatedLight.js +2 -0
  463. package/examples/jsm/webxr/XRHandMeshModel.js +3 -7
  464. package/examples/jsm/webxr/XRHandModelFactory.js +3 -0
  465. package/package.json +53 -25
  466. package/src/Three.Legacy.js +41 -1912
  467. package/src/Three.js +6 -3
  468. package/src/animation/AnimationClip.js +1 -1
  469. package/src/animation/AnimationMixer.js +6 -3
  470. package/src/animation/AnimationObjectGroup.js +2 -2
  471. package/src/animation/PropertyBinding.js +8 -18
  472. package/src/audio/PositionalAudio.js +8 -0
  473. package/src/cameras/ArrayCamera.js +2 -3
  474. package/src/cameras/Camera.js +2 -2
  475. package/src/cameras/CubeCamera.js +8 -1
  476. package/src/cameras/OrthographicCamera.js +2 -2
  477. package/src/cameras/PerspectiveCamera.js +2 -2
  478. package/src/constants.js +8 -18
  479. package/src/core/BufferAttribute.js +7 -12
  480. package/src/core/BufferGeometry.js +6 -6
  481. package/src/core/GLBufferAttribute.js +2 -2
  482. package/src/core/InstancedBufferAttribute.js +2 -2
  483. package/src/core/InstancedBufferGeometry.js +2 -2
  484. package/src/core/InstancedInterleavedBuffer.js +2 -2
  485. package/src/core/InterleavedBuffer.js +2 -2
  486. package/src/core/InterleavedBufferAttribute.js +5 -11
  487. package/src/core/Object3D.js +6 -3
  488. package/src/core/Raycaster.js +2 -2
  489. package/src/extras/DataUtils.js +127 -40
  490. package/src/extras/Earcut.js +2 -2
  491. package/src/extras/ImageUtils.js +63 -0
  492. package/src/extras/PMREMGenerator.js +152 -174
  493. package/src/extras/core/CurvePath.js +3 -3
  494. package/src/extras/core/ShapePath.js +5 -6
  495. package/src/extras/curves/ArcCurve.js +2 -2
  496. package/src/extras/curves/CatmullRomCurve3.js +2 -2
  497. package/src/extras/curves/CubicBezierCurve.js +2 -2
  498. package/src/extras/curves/CubicBezierCurve3.js +2 -2
  499. package/src/extras/curves/EllipseCurve.js +2 -2
  500. package/src/extras/curves/LineCurve.js +2 -2
  501. package/src/extras/curves/LineCurve3.js +2 -1
  502. package/src/extras/curves/QuadraticBezierCurve.js +2 -2
  503. package/src/extras/curves/QuadraticBezierCurve3.js +2 -2
  504. package/src/extras/curves/SplineCurve.js +2 -2
  505. package/src/geometries/CapsuleGeometry.js +33 -0
  506. package/src/geometries/ExtrudeGeometry.js +2 -0
  507. package/src/geometries/Geometries.js +1 -0
  508. package/src/geometries/LatheGeometry.js +1 -1
  509. package/src/geometries/TorusKnotGeometry.js +2 -2
  510. package/src/geometries/WireframeGeometry.js +3 -2
  511. package/src/helpers/BoxHelper.js +2 -2
  512. package/src/helpers/PointLightHelper.js +1 -1
  513. package/src/helpers/SkeletonHelper.js +3 -2
  514. package/src/lights/AmbientLight.js +2 -2
  515. package/src/lights/AmbientLightProbe.js +2 -2
  516. package/src/lights/DirectionalLight.js +2 -2
  517. package/src/lights/DirectionalLightShadow.js +2 -2
  518. package/src/lights/HemisphereLight.js +4 -4
  519. package/src/lights/HemisphereLightProbe.js +2 -2
  520. package/src/lights/Light.js +4 -4
  521. package/src/lights/LightProbe.js +2 -2
  522. package/src/lights/PointLight.js +4 -4
  523. package/src/lights/PointLightShadow.js +2 -2
  524. package/src/lights/RectAreaLight.js +2 -2
  525. package/src/lights/SpotLight.js +4 -4
  526. package/src/lights/SpotLightShadow.js +2 -2
  527. package/src/loaders/FileLoader.js +23 -4
  528. package/src/loaders/ImageBitmapLoader.js +2 -2
  529. package/src/loaders/ImageLoader.js +1 -1
  530. package/src/loaders/LoaderUtils.js +1 -1
  531. package/src/loaders/MaterialLoader.js +8 -3
  532. package/src/loaders/ObjectLoader.js +23 -25
  533. package/src/materials/LineBasicMaterial.js +6 -13
  534. package/src/materials/LineDashedMaterial.js +2 -15
  535. package/src/materials/Material.js +49 -15
  536. package/src/materials/Materials.js +66 -18
  537. package/src/materials/MeshBasicMaterial.js +6 -31
  538. package/src/materials/MeshDepthMaterial.js +2 -22
  539. package/src/materials/MeshDistanceMaterial.js +2 -22
  540. package/src/materials/MeshLambertMaterial.js +6 -34
  541. package/src/materials/MeshMatcapMaterial.js +6 -28
  542. package/src/materials/MeshNormalMaterial.js +2 -26
  543. package/src/materials/MeshPhongMaterial.js +6 -48
  544. package/src/materials/MeshPhysicalMaterial.js +32 -35
  545. package/src/materials/MeshStandardMaterial.js +6 -54
  546. package/src/materials/MeshToonMaterial.js +6 -38
  547. package/src/materials/PointsMaterial.js +6 -15
  548. package/src/materials/RawShaderMaterial.js +2 -2
  549. package/src/materials/ShaderMaterial.js +3 -17
  550. package/src/materials/ShadowMaterial.js +6 -8
  551. package/src/materials/SpriteMaterial.js +6 -12
  552. package/src/math/Box2.js +2 -2
  553. package/src/math/Box3.js +29 -15
  554. package/src/math/Color.js +85 -36
  555. package/src/math/ColorManagement.js +74 -0
  556. package/src/math/Euler.js +16 -14
  557. package/src/math/Interpolant.js +4 -9
  558. package/src/math/MathUtils.js +76 -7
  559. package/src/math/Matrix3.js +2 -2
  560. package/src/math/Matrix4.js +2 -3
  561. package/src/math/Plane.js +2 -2
  562. package/src/math/Quaternion.js +12 -3
  563. package/src/math/Spherical.js +1 -1
  564. package/src/math/SphericalHarmonics3.js +2 -2
  565. package/src/math/Vector2.js +2 -2
  566. package/src/math/Vector3.js +12 -3
  567. package/src/math/Vector4.js +2 -2
  568. package/src/math/interpolants/DiscreteInterpolant.js +1 -1
  569. package/src/objects/Bone.js +2 -2
  570. package/src/objects/Group.js +2 -2
  571. package/src/objects/InstancedMesh.js +4 -4
  572. package/src/objects/Line.js +76 -107
  573. package/src/objects/LineLoop.js +2 -2
  574. package/src/objects/LineSegments.js +15 -23
  575. package/src/objects/Mesh.js +82 -104
  576. package/src/objects/Points.js +32 -54
  577. package/src/objects/SkinnedMesh.js +5 -8
  578. package/src/objects/Sprite.js +4 -4
  579. package/src/renderers/WebGL3DRenderTarget.js +22 -0
  580. package/src/renderers/WebGLArrayRenderTarget.js +22 -0
  581. package/src/renderers/WebGLCubeRenderTarget.js +7 -16
  582. package/src/renderers/WebGLMultipleRenderTargets.js +8 -5
  583. package/src/renderers/WebGLRenderTarget.js +19 -18
  584. package/src/renderers/WebGLRenderer.js +112 -133
  585. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +46 -0
  586. package/src/renderers/shaders/ShaderChunk/common.glsl.js +1 -0
  587. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +12 -13
  588. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +1 -1
  589. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
  590. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -4
  591. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
  592. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -19
  593. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +107 -0
  594. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  595. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -7
  596. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +25 -0
  597. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -7
  598. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +25 -2
  599. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +43 -5
  600. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
  601. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
  602. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
  603. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +1 -1
  604. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +7 -7
  605. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +1 -9
  606. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +16 -31
  607. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +9 -8
  608. package/src/renderers/shaders/ShaderChunk.js +6 -0
  609. package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -2
  610. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
  611. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  612. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +3 -2
  613. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
  614. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +2 -2
  615. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +6 -0
  616. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
  617. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +10 -0
  618. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  619. package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  620. package/src/renderers/shaders/ShaderLib.js +8 -2
  621. package/src/renderers/shaders/UniformsLib.js +2 -2
  622. package/src/renderers/webgl/WebGLAttributes.js +6 -6
  623. package/src/renderers/webgl/WebGLBackground.js +5 -2
  624. package/src/renderers/webgl/WebGLBindingStates.js +57 -29
  625. package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
  626. package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
  627. package/src/renderers/webgl/WebGLGeometries.js +2 -2
  628. package/src/renderers/webgl/WebGLLights.js +0 -1
  629. package/src/renderers/webgl/WebGLMaterials.js +72 -187
  630. package/src/renderers/webgl/WebGLMorphtargets.js +59 -23
  631. package/src/renderers/webgl/WebGLProgram.js +56 -30
  632. package/src/renderers/webgl/WebGLPrograms.js +80 -130
  633. package/src/renderers/webgl/WebGLShaderCache.js +4 -3
  634. package/src/renderers/webgl/WebGLShadowMap.js +6 -8
  635. package/src/renderers/webgl/WebGLState.js +83 -2
  636. package/src/renderers/webgl/WebGLTextures.js +618 -375
  637. package/src/renderers/webgl/WebGLUniforms.js +79 -80
  638. package/src/renderers/webgl/WebGLUtils.js +97 -30
  639. package/src/renderers/webxr/WebXRManager.js +64 -47
  640. package/src/scenes/Fog.js +2 -2
  641. package/src/scenes/FogExp2.js +2 -2
  642. package/src/scenes/Scene.js +2 -2
  643. package/src/textures/CanvasTexture.js +2 -2
  644. package/src/textures/CompressedTexture.js +2 -2
  645. package/src/textures/CubeTexture.js +2 -2
  646. package/src/textures/{DataTexture3D.js → Data3DTexture.js} +4 -4
  647. package/src/textures/{DataTexture2DArray.js → DataArrayTexture.js} +4 -4
  648. package/src/textures/DataTexture.js +2 -5
  649. package/src/textures/DepthTexture.js +5 -5
  650. package/src/textures/FramebufferTexture.js +2 -2
  651. package/src/textures/Source.js +123 -0
  652. package/src/textures/Texture.js +29 -98
  653. package/src/textures/VideoTexture.js +2 -4
  654. package/src/utils.js +15 -1
  655. package/examples/js/WebGL.js +0 -90
  656. package/examples/js/csm/Frustum.js +0 -133
  657. package/examples/js/deprecated/Geometry.js +0 -1656
  658. package/examples/js/loaders/VRMLoader.js +0 -72
  659. package/examples/js/objects/ReflectorRTT.js +0 -16
  660. package/examples/js/postprocessing/SSRrPass.js +0 -494
  661. package/examples/js/shaders/SSRrShader.js +0 -336
  662. package/examples/js/utils/RoughnessMipmapper.js +0 -268
  663. package/examples/jsm/deprecated/Geometry.js +0 -1869
  664. package/examples/jsm/libs/opentype.module.min.js +0 -119
  665. package/examples/jsm/loaders/NodeMaterialLoader.js +0 -263
  666. package/examples/jsm/loaders/VRMLoader.js +0 -78
  667. package/examples/jsm/nodes/accessors/ColorsNode.js +0 -56
  668. package/examples/jsm/nodes/accessors/LightNode.js +0 -60
  669. package/examples/jsm/nodes/accessors/ResolutionNode.js +0 -64
  670. package/examples/jsm/nodes/accessors/ScreenUVNode.js +0 -64
  671. package/examples/jsm/nodes/core/NodeLib.js +0 -64
  672. package/examples/jsm/nodes/core/StructNode.js +0 -106
  673. package/examples/jsm/nodes/effects/BlurNode.js +0 -171
  674. package/examples/jsm/nodes/effects/ColorAdjustmentNode.js +0 -140
  675. package/examples/jsm/nodes/effects/LuminanceNode.js +0 -75
  676. package/examples/jsm/nodes/inputs/BoolNode.js +0 -51
  677. package/examples/jsm/nodes/inputs/ColorNode.js +0 -58
  678. package/examples/jsm/nodes/inputs/CubeTextureNode.js +0 -108
  679. package/examples/jsm/nodes/inputs/FloatNode.js +0 -51
  680. package/examples/jsm/nodes/inputs/IntNode.js +0 -51
  681. package/examples/jsm/nodes/inputs/Matrix3Node.js +0 -63
  682. package/examples/jsm/nodes/inputs/Matrix4Node.js +0 -63
  683. package/examples/jsm/nodes/inputs/PropertyNode.js +0 -47
  684. package/examples/jsm/nodes/inputs/RTTNode.js +0 -157
  685. package/examples/jsm/nodes/inputs/ReflectorNode.js +0 -90
  686. package/examples/jsm/nodes/inputs/ScreenNode.js +0 -28
  687. package/examples/jsm/nodes/inputs/TextureNode.js +0 -116
  688. package/examples/jsm/nodes/inputs/Vector2Node.js +0 -57
  689. package/examples/jsm/nodes/inputs/Vector3Node.js +0 -58
  690. package/examples/jsm/nodes/inputs/Vector4Node.js +0 -59
  691. package/examples/jsm/nodes/materials/BasicNodeMaterial.js +0 -26
  692. package/examples/jsm/nodes/materials/PhongNodeMaterial.js +0 -36
  693. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +0 -40
  694. package/examples/jsm/nodes/materials/nodes/BasicNode.js +0 -154
  695. package/examples/jsm/nodes/materials/nodes/MeshStandardNode.js +0 -116
  696. package/examples/jsm/nodes/materials/nodes/PhongNode.js +0 -409
  697. package/examples/jsm/nodes/materials/nodes/RawNode.js +0 -62
  698. package/examples/jsm/nodes/materials/nodes/SpriteNode.js +0 -236
  699. package/examples/jsm/nodes/materials/nodes/StandardNode.js +0 -609
  700. package/examples/jsm/nodes/misc/BumpMapNode.js +0 -163
  701. package/examples/jsm/nodes/misc/NormalMapNode.js +0 -138
  702. package/examples/jsm/nodes/misc/TextureCubeNode.js +0 -86
  703. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +0 -280
  704. package/examples/jsm/nodes/postprocessing/NodePass.js +0 -93
  705. package/examples/jsm/nodes/postprocessing/NodePostProcessing.js +0 -148
  706. package/examples/jsm/nodes/procedural/Fractal3DNode.js +0 -104
  707. package/examples/jsm/nodes/procedural/Noise2DNode.js +0 -149
  708. package/examples/jsm/nodes/procedural/Noise3DNode.js +0 -141
  709. package/examples/jsm/nodes/utils/BypassNode.js +0 -85
  710. package/examples/jsm/nodes/utils/ColorSpaceNode.js +0 -154
  711. package/examples/jsm/nodes/utils/MaxMIPLevelNode.js +0 -56
  712. package/examples/jsm/nodes/utils/RemapNode.js +0 -155
  713. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -101
  714. package/examples/jsm/nodes/utils/SubSlotNode.js +0 -77
  715. package/examples/jsm/nodes/utils/SwitchNode.js +0 -103
  716. package/examples/jsm/nodes/utils/UVTransformNode.js +0 -66
  717. package/examples/jsm/nodes/utils/VelocityNode.js +0 -170
  718. package/examples/jsm/objects/ReflectorRTT.js +0 -15
  719. package/examples/jsm/postprocessing/SSRrPass.js +0 -579
  720. package/examples/jsm/renderers/nodes/Nodes.js +0 -164
  721. package/examples/jsm/renderers/nodes/ShaderNode.js +0 -346
  722. package/examples/jsm/renderers/nodes/accessors/CameraNode.js +0 -68
  723. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +0 -63
  724. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +0 -67
  725. package/examples/jsm/renderers/nodes/accessors/ReferenceNode.js +0 -91
  726. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +0 -107
  727. package/examples/jsm/renderers/nodes/accessors/UVNode.js +0 -25
  728. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +0 -23
  729. package/examples/jsm/renderers/nodes/core/AttributeNode.js +0 -54
  730. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +0 -32
  731. package/examples/jsm/renderers/nodes/core/FunctionCallNode.js +0 -67
  732. package/examples/jsm/renderers/nodes/core/FunctionNode.js +0 -87
  733. package/examples/jsm/renderers/nodes/core/InputNode.js +0 -66
  734. package/examples/jsm/renderers/nodes/core/Node.js +0 -104
  735. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +0 -633
  736. package/examples/jsm/renderers/nodes/core/NodeFrame.js +0 -59
  737. package/examples/jsm/renderers/nodes/core/NodeUniform.js +0 -28
  738. package/examples/jsm/renderers/nodes/core/TempNode.js +0 -43
  739. package/examples/jsm/renderers/nodes/core/VarNode.js +0 -51
  740. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +0 -133
  741. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +0 -87
  742. package/examples/jsm/renderers/nodes/functions/BSDFs.js +0 -122
  743. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +0 -27
  744. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +0 -25
  745. package/examples/jsm/renderers/nodes/inputs/ColorNode.js +0 -18
  746. package/examples/jsm/renderers/nodes/inputs/FloatNode.js +0 -17
  747. package/examples/jsm/renderers/nodes/inputs/IntNode.js +0 -17
  748. package/examples/jsm/renderers/nodes/inputs/Matrix3Node.js +0 -18
  749. package/examples/jsm/renderers/nodes/inputs/Matrix4Node.js +0 -18
  750. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +0 -79
  751. package/examples/jsm/renderers/nodes/inputs/Vector2Node.js +0 -18
  752. package/examples/jsm/renderers/nodes/inputs/Vector3Node.js +0 -18
  753. package/examples/jsm/renderers/nodes/inputs/Vector4Node.js +0 -18
  754. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +0 -59
  755. package/examples/jsm/renderers/nodes/lights/LightNode.js +0 -79
  756. package/examples/jsm/renderers/nodes/lights/LightsNode.js +0 -44
  757. package/examples/jsm/renderers/nodes/materials/Materials.js +0 -11
  758. package/examples/jsm/renderers/nodes/materials/MeshStandardNodeMaterial.js +0 -63
  759. package/examples/jsm/renderers/nodes/math/CondNode.js +0 -60
  760. package/examples/jsm/renderers/nodes/math/MathNode.js +0 -241
  761. package/examples/jsm/renderers/nodes/math/OperatorNode.js +0 -174
  762. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +0 -36
  763. package/examples/jsm/renderers/nodes/utils/JoinNode.js +0 -42
  764. package/examples/jsm/renderers/nodes/utils/TimerNode.js +0 -47
  765. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +0 -20
  766. package/examples/jsm/shaders/SSRrShader.js +0 -307
  767. package/examples/jsm/utils/RoughnessMipmapper.js +0 -288
  768. package/src/renderers/WebGLMultisampleRenderTarget.js +0 -33
@@ -1,11 +1,11 @@
1
1
  // http://download.autodesk.com/us/systemdocs/help/2011/lustre/index.html?url=./files/WSc4e151a45a3b785a24c3d9a411df9298473-7ffd.htm,topicNumber=d0e9492
2
-
2
+ // https://community.foundry.com/discuss/topic/103636/format-spec-for-3dl?mode=Post&postID=895258
3
3
  import {
4
4
  Loader,
5
5
  FileLoader,
6
6
  DataTexture,
7
- DataTexture3D,
8
- RGBFormat,
7
+ Data3DTexture,
8
+ RGBAFormat,
9
9
  UnsignedByteType,
10
10
  ClampToEdgeWrapping,
11
11
  LinearFilter,
@@ -69,7 +69,7 @@ export class LUT3dlLoader extends Loader {
69
69
 
70
70
  }
71
71
 
72
- const dataArray = new Array( size * size * size * 3 );
72
+ const dataArray = new Array( size * size * size * 4 );
73
73
  let index = 0;
74
74
  let maxOutputValue = 0.0;
75
75
  for ( let i = 1, l = lines.length; i < l; i ++ ) {
@@ -88,21 +88,26 @@ export class LUT3dlLoader extends Loader {
88
88
 
89
89
  // b grows first, then g, then r
90
90
  const pixelIndex = bLayer * size * size + gLayer * size + rLayer;
91
- dataArray[ 3 * pixelIndex + 0 ] = r;
92
- dataArray[ 3 * pixelIndex + 1 ] = g;
93
- dataArray[ 3 * pixelIndex + 2 ] = b;
91
+ dataArray[ 4 * pixelIndex + 0 ] = r;
92
+ dataArray[ 4 * pixelIndex + 1 ] = g;
93
+ dataArray[ 4 * pixelIndex + 2 ] = b;
94
+ dataArray[ 4 * pixelIndex + 3 ] = 1.0;
94
95
  index += 1;
95
96
 
96
97
  }
97
98
 
98
- // Find the apparent bit depth of the stored RGB values and scale the
99
+ // Find the apparent bit depth of the stored RGB values and map the
99
100
  // values to [ 0, 255 ].
100
101
  const bits = Math.ceil( Math.log2( maxOutputValue ) );
101
102
  const maxBitValue = Math.pow( 2.0, bits );
102
- for ( let i = 0, l = dataArray.length; i < l; i ++ ) {
103
+ for ( let i = 0, l = dataArray.length; i < l; i += 4 ) {
103
104
 
104
- const val = dataArray[ i ];
105
- dataArray[ i ] = 255 * val / maxBitValue;
105
+ const r = dataArray[ i + 0 ];
106
+ const g = dataArray[ i + 1 ];
107
+ const b = dataArray[ i + 2 ];
108
+ dataArray[ i + 0 ] = 255 * r / maxBitValue; // r
109
+ dataArray[ i + 1 ] = 255 * g / maxBitValue; // g
110
+ dataArray[ i + 2 ] = 255 * b / maxBitValue; // b
106
111
 
107
112
  }
108
113
 
@@ -111,7 +116,7 @@ export class LUT3dlLoader extends Loader {
111
116
  texture.image.data = data;
112
117
  texture.image.width = size;
113
118
  texture.image.height = size * size;
114
- texture.format = RGBFormat;
119
+ texture.format = RGBAFormat;
115
120
  texture.type = UnsignedByteType;
116
121
  texture.magFilter = LinearFilter;
117
122
  texture.minFilter = LinearFilter;
@@ -120,12 +125,12 @@ export class LUT3dlLoader extends Loader {
120
125
  texture.generateMipmaps = false;
121
126
  texture.needsUpdate = true;
122
127
 
123
- const texture3D = new DataTexture3D();
128
+ const texture3D = new Data3DTexture();
124
129
  texture3D.image.data = data;
125
130
  texture3D.image.width = size;
126
131
  texture3D.image.height = size;
127
132
  texture3D.image.depth = size;
128
- texture3D.format = RGBFormat;
133
+ texture3D.format = RGBAFormat;
129
134
  texture3D.type = UnsignedByteType;
130
135
  texture3D.magFilter = LinearFilter;
131
136
  texture3D.minFilter = LinearFilter;
@@ -5,8 +5,7 @@ import {
5
5
  FileLoader,
6
6
  Vector3,
7
7
  DataTexture,
8
- DataTexture3D,
9
- RGBFormat,
8
+ Data3DTexture,
10
9
  UnsignedByteType,
11
10
  ClampToEdgeWrapping,
12
11
  LinearFilter,
@@ -77,7 +76,7 @@ export class LUTCubeLoader extends Loader {
77
76
  // more precision than can be captured with Uint8Array.
78
77
  const sizeToken = split[ 1 ];
79
78
  size = parseFloat( sizeToken );
80
- data = new Uint8Array( size * size * size * 3 );
79
+ data = new Uint8Array( size * size * size * 4 );
81
80
  break;
82
81
  case 'DOMAIN_MIN':
83
82
  domainMin.x = parseFloat( split[ 1 ] );
@@ -107,7 +106,8 @@ export class LUTCubeLoader extends Loader {
107
106
  data[ currIndex + 0 ] = r * 255;
108
107
  data[ currIndex + 1 ] = g * 255;
109
108
  data[ currIndex + 2 ] = b * 255;
110
- currIndex += 3;
109
+ data[ currIndex + 3 ] = 255;
110
+ currIndex += 4;
111
111
 
112
112
  }
113
113
 
@@ -117,7 +117,6 @@ export class LUTCubeLoader extends Loader {
117
117
  texture.image.data = data;
118
118
  texture.image.width = size;
119
119
  texture.image.height = size * size;
120
- texture.format = RGBFormat;
121
120
  texture.type = UnsignedByteType;
122
121
  texture.magFilter = LinearFilter;
123
122
  texture.minFilter = LinearFilter;
@@ -126,12 +125,11 @@ export class LUTCubeLoader extends Loader {
126
125
  texture.generateMipmaps = false;
127
126
  texture.needsUpdate = true;
128
127
 
129
- const texture3D = new DataTexture3D();
128
+ const texture3D = new Data3DTexture();
130
129
  texture3D.image.data = data;
131
130
  texture3D.image.width = size;
132
131
  texture3D.image.height = size;
133
132
  texture3D.image.depth = size;
134
- texture3D.format = RGBFormat;
135
133
  texture3D.type = UnsignedByteType;
136
134
  texture3D.magFilter = LinearFilter;
137
135
  texture3D.minFilter = LinearFilter;
@@ -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
@@ -30,6 +31,8 @@ const _vC = new Vector3();
30
31
  const _ab = new Vector3();
31
32
  const _cb = new Vector3();
32
33
 
34
+ const _color = new Color();
35
+
33
36
  function ParserState() {
34
37
 
35
38
  const state = {
@@ -536,12 +539,13 @@ class OBJLoader extends Loader {
536
539
  );
537
540
  if ( data.length >= 7 ) {
538
541
 
539
- state.colors.push(
542
+ _color.setRGB(
540
543
  parseFloat( data[ 4 ] ),
541
544
  parseFloat( data[ 5 ] ),
542
545
  parseFloat( data[ 6 ] )
546
+ ).convertSRGBToLinear();
543
547
 
544
- );
548
+ state.colors.push( _color.r, _color.g, _color.b );
545
549
 
546
550
  } else {
547
551
 
@@ -570,7 +574,7 @@ class OBJLoader extends Loader {
570
574
 
571
575
  } else if ( lineFirstChar === 'f' ) {
572
576
 
573
- const lineData = line.substr( 1 ).trim();
577
+ const lineData = line.slice( 1 ).trim();
574
578
  const vertexData = lineData.split( /\s+/ );
575
579
  const faceVertices = [];
576
580
 
@@ -633,7 +637,7 @@ class OBJLoader extends Loader {
633
637
 
634
638
  } else if ( lineFirstChar === 'p' ) {
635
639
 
636
- const lineData = line.substr( 1 ).trim();
640
+ const lineData = line.slice( 1 ).trim();
637
641
  const pointData = lineData.split( ' ' );
638
642
 
639
643
  state.addPointGeometry( pointData );
@@ -645,8 +649,8 @@ class OBJLoader extends Loader {
645
649
  // g group_name
646
650
 
647
651
  // 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 );
652
+ // let name = result[ 0 ].slice( 1 ).trim();
653
+ const name = ( ' ' + result[ 0 ].slice( 1 ).trim() ).slice( 1 );
650
654
 
651
655
  state.startObject( name );
652
656
 
@@ -31,7 +31,7 @@ class PCDLoader extends Loader {
31
31
 
32
32
  try {
33
33
 
34
- onLoad( scope.parse( data, url ) );
34
+ onLoad( scope.parse( data ) );
35
35
 
36
36
  } catch ( e ) {
37
37
 
@@ -53,7 +53,7 @@ class PCDLoader extends Loader {
53
53
 
54
54
  }
55
55
 
56
- parse( data, url ) {
56
+ parse( data ) {
57
57
 
58
58
  // from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js
59
59
 
@@ -114,11 +114,11 @@ class PCDLoader extends Loader {
114
114
 
115
115
  const PCDheader = {};
116
116
  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 ) );
117
+ const result2 = /[\r\n]DATA\s(\S*)\s/i.exec( data.slice( result1 - 1 ) );
118
118
 
119
119
  PCDheader.data = result2[ 1 ];
120
120
  PCDheader.headerLen = result2[ 0 ].length + result1;
121
- PCDheader.str = data.substr( 0, PCDheader.headerLen );
121
+ PCDheader.str = data.slice( 0, PCDheader.headerLen );
122
122
 
123
123
  // remove comments
124
124
 
@@ -141,8 +141,7 @@ class PCDLoader extends Loader {
141
141
  if ( PCDheader.version !== null )
142
142
  PCDheader.version = parseFloat( PCDheader.version[ 1 ] );
143
143
 
144
- if ( PCDheader.fields !== null )
145
- PCDheader.fields = PCDheader.fields[ 1 ].split( ' ' );
144
+ PCDheader.fields = ( PCDheader.fields !== null ) ? PCDheader.fields[ 1 ].split( ' ' ) : [];
146
145
 
147
146
  if ( PCDheader.type !== null )
148
147
  PCDheader.type = PCDheader.type[ 1 ].split( ' ' );
@@ -236,7 +235,7 @@ class PCDLoader extends Loader {
236
235
  if ( PCDheader.data === 'ascii' ) {
237
236
 
238
237
  const offset = PCDheader.offset;
239
- const pcdData = textData.substr( PCDheader.headerLen );
238
+ const pcdData = textData.slice( PCDheader.headerLen );
240
239
  const lines = pcdData.split( '\n' );
241
240
 
242
241
  for ( let i = 0, l = lines.length; i < l; i ++ ) {
@@ -255,7 +254,22 @@ class PCDLoader extends Loader {
255
254
 
256
255
  if ( offset.rgb !== undefined ) {
257
256
 
258
- const rgb = parseFloat( line[ offset.rgb ] );
257
+ const rgb_field_index = PCDheader.fields.findIndex( ( field ) => field === 'rgb' );
258
+ const rgb_type = PCDheader.type[ rgb_field_index ];
259
+
260
+ const float = parseFloat( line[ offset.rgb ] );
261
+ let rgb = float;
262
+
263
+ if ( rgb_type === 'F' ) {
264
+
265
+ // treat float values as int
266
+ // https://github.com/daavoo/pyntcloud/pull/204/commits/7b4205e64d5ed09abe708b2e91b615690c24d518
267
+ const farr = new Float32Array( 1 );
268
+ farr[ 0 ] = float;
269
+ rgb = new Int32Array( farr.buffer )[ 0 ];
270
+
271
+ }
272
+
259
273
  const r = ( rgb >> 16 ) & 0x0000ff;
260
274
  const g = ( rgb >> 8 ) & 0x0000ff;
261
275
  const b = ( rgb >> 0 ) & 0x0000ff;
@@ -303,9 +317,9 @@ class PCDLoader extends Loader {
303
317
 
304
318
  if ( offset.rgb !== undefined ) {
305
319
 
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
320
  color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ 3 ] * i + 2 ) / 255.0 );
321
+ color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ 3 ] * i + 1 ) / 255.0 );
322
+ color.push( dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ 3 ] * i + 0 ) / 255.0 );
309
323
 
310
324
  }
311
325
 
@@ -384,13 +398,7 @@ class PCDLoader extends Loader {
384
398
 
385
399
  // build point cloud
386
400
 
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;
401
+ return new Points( geometry, material );
394
402
 
395
403
  }
396
404
 
@@ -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
 
@@ -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
 
@@ -4,8 +4,7 @@ import {
4
4
  FloatType,
5
5
  HalfFloatType,
6
6
  LinearEncoding,
7
- LinearFilter,
8
- RGBFormat,
7
+ LinearFilter
9
8
  } from 'three';
10
9
 
11
10
  // https://github.com/mrdoob/three.js/issues/5552
@@ -169,13 +168,13 @@ class RGBELoader extends DataTextureLoader {
169
168
 
170
169
  if ( match = line.match( gamma_re ) ) {
171
170
 
172
- header.gamma = parseFloat( match[ 1 ], 10 );
171
+ header.gamma = parseFloat( match[ 1 ] );
173
172
 
174
173
  }
175
174
 
176
175
  if ( match = line.match( exposure_re ) ) {
177
176
 
178
- header.exposure = parseFloat( match[ 1 ], 10 );
177
+ header.exposure = parseFloat( match[ 1 ] );
179
178
 
180
179
  }
181
180
 
@@ -342,6 +341,7 @@ class RGBELoader extends DataTextureLoader {
342
341
  destArray[ destOffset + 0 ] = sourceArray[ sourceOffset + 0 ] * scale;
343
342
  destArray[ destOffset + 1 ] = sourceArray[ sourceOffset + 1 ] * scale;
344
343
  destArray[ destOffset + 2 ] = sourceArray[ sourceOffset + 2 ] * scale;
344
+ destArray[ destOffset + 3 ] = 1;
345
345
 
346
346
  };
347
347
 
@@ -354,6 +354,7 @@ class RGBELoader extends DataTextureLoader {
354
354
  destArray[ destOffset + 0 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 0 ] * scale, 65504 ) );
355
355
  destArray[ destOffset + 1 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 1 ] * scale, 65504 ) );
356
356
  destArray[ destOffset + 2 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 2 ] * scale, 65504 ) );
357
+ destArray[ destOffset + 3 ] = DataUtils.toHalfFloat( 1 );
357
358
 
358
359
  };
359
360
 
@@ -369,7 +370,7 @@ class RGBELoader extends DataTextureLoader {
369
370
 
370
371
  if ( RGBE_RETURN_FAILURE !== image_rgba_data ) {
371
372
 
372
- let data, format, type;
373
+ let data, type;
373
374
  let numElements;
374
375
 
375
376
  switch ( this.type ) {
@@ -377,32 +378,30 @@ class RGBELoader extends DataTextureLoader {
377
378
  case FloatType:
378
379
 
379
380
  numElements = image_rgba_data.length / 4;
380
- const floatArray = new Float32Array( numElements * 3 );
381
+ const floatArray = new Float32Array( numElements * 4 );
381
382
 
382
383
  for ( let j = 0; j < numElements; j ++ ) {
383
384
 
384
- RGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 3 );
385
+ RGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 4 );
385
386
 
386
387
  }
387
388
 
388
389
  data = floatArray;
389
- format = RGBFormat;
390
390
  type = FloatType;
391
391
  break;
392
392
 
393
393
  case HalfFloatType:
394
394
 
395
395
  numElements = image_rgba_data.length / 4;
396
- const halfArray = new Uint16Array( numElements * 3 );
396
+ const halfArray = new Uint16Array( numElements * 4 );
397
397
 
398
398
  for ( let j = 0; j < numElements; j ++ ) {
399
399
 
400
- RGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 3 );
400
+ RGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 4 );
401
401
 
402
402
  }
403
403
 
404
404
  data = halfArray;
405
- format = RGBFormat;
406
405
  type = HalfFloatType;
407
406
  break;
408
407
 
@@ -419,7 +418,6 @@ class RGBELoader extends DataTextureLoader {
419
418
  header: rgbe_header_info.string,
420
419
  gamma: rgbe_header_info.gamma,
421
420
  exposure: rgbe_header_info.exposure,
422
- format: format,
423
421
  type: type
424
422
  };
425
423
 
@@ -445,14 +443,6 @@ class RGBELoader extends DataTextureLoader {
445
443
  switch ( texture.type ) {
446
444
 
447
445
  case FloatType:
448
-
449
- texture.encoding = LinearEncoding;
450
- texture.minFilter = LinearFilter;
451
- texture.magFilter = LinearFilter;
452
- texture.generateMipmaps = false;
453
- texture.flipY = true;
454
- break;
455
-
456
446
  case HalfFloatType:
457
447
 
458
448
  texture.encoding = LinearEncoding;
@@ -460,6 +450,7 @@ class RGBELoader extends DataTextureLoader {
460
450
  texture.magFilter = LinearFilter;
461
451
  texture.generateMipmaps = false;
462
452
  texture.flipY = true;
453
+
463
454
  break;
464
455
 
465
456
  }