super-three 0.133.3 → 0.136.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 (354) hide show
  1. package/build/three.js +1059 -783
  2. package/build/three.min.js +1 -1
  3. package/build/three.module.js +1424 -895
  4. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  5. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  6. package/examples/fonts/open-sans/open-sans.css +9 -0
  7. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  8. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +3966 -0
  9. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  10. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  11. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  12. package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
  13. package/examples/js/animation/CCDIKSolver.js +0 -1
  14. package/examples/js/animation/MMDPhysics.js +1 -3
  15. package/examples/js/controls/ArcballControls.js +99 -72
  16. package/examples/js/controls/DragControls.js +7 -0
  17. package/examples/js/controls/OrbitControls.js +5 -36
  18. package/examples/js/controls/TrackballControls.js +3 -2
  19. package/examples/js/controls/TransformControls.js +24 -1
  20. package/examples/js/csm/CSM.js +2 -2
  21. package/examples/js/csm/CSMFrustum.js +133 -0
  22. package/examples/js/curves/CurveExtras.js +0 -2
  23. package/examples/js/effects/AsciiEffect.js +2 -9
  24. package/examples/js/exporters/GLTFExporter.js +148 -64
  25. package/examples/js/exporters/USDZExporter.js +45 -26
  26. package/examples/js/geometries/TeapotGeometry.js +0 -1
  27. package/examples/js/interactive/SelectionBox.js +2 -0
  28. package/examples/js/interactive/SelectionHelper.js +22 -7
  29. package/examples/js/lights/RectAreaLightUniformsLib.js +4 -0
  30. package/examples/js/lines/LineMaterial.js +58 -20
  31. package/examples/js/lines/LineSegments2.js +29 -24
  32. package/examples/js/loaders/3DMLoader.js +24 -11
  33. package/examples/js/loaders/3MFLoader.js +2 -2
  34. package/examples/js/loaders/AMFLoader.js +0 -2
  35. package/examples/js/loaders/ColladaLoader.js +61 -4
  36. package/examples/js/loaders/EXRLoader.js +185 -262
  37. package/examples/js/loaders/FBXLoader.js +4 -5
  38. package/examples/js/loaders/GLTFLoader.js +96 -33
  39. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -8
  40. package/examples/js/loaders/KTX2Loader.js +23 -2
  41. package/examples/js/loaders/KTXLoader.js +1 -1
  42. package/examples/js/loaders/LDrawLoader.js +26 -30
  43. package/examples/js/loaders/LUT3dlLoader.js +2 -0
  44. package/examples/js/loaders/LUTCubeLoader.js +2 -0
  45. package/examples/js/loaders/LWOLoader.js +8 -6
  46. package/examples/js/loaders/LogLuvLoader.js +766 -0
  47. package/examples/js/loaders/MMDLoader.js +0 -1
  48. package/examples/js/loaders/NRRDLoader.js +9 -2
  49. package/examples/js/loaders/OBJLoader.js +0 -2
  50. package/examples/js/loaders/PLYLoader.js +33 -8
  51. package/examples/js/loaders/RGBELoader.js +2 -16
  52. package/examples/js/loaders/RGBMLoader.js +55 -5
  53. package/examples/js/loaders/SVGLoader.js +9 -5
  54. package/examples/js/loaders/TDSLoader.js +237 -271
  55. package/examples/js/loaders/VOXLoader.js +1 -0
  56. package/examples/js/loaders/VRMLLoader.js +2 -1
  57. package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
  58. package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
  59. package/examples/js/math/ImprovedNoise.js +1 -1
  60. package/examples/js/misc/GPUComputationRenderer.js +3 -1
  61. package/examples/js/objects/Lensflare.js +2 -10
  62. package/examples/js/objects/MarchingCubes.js +42 -128
  63. package/examples/js/objects/Reflector.js +7 -0
  64. package/examples/js/objects/Refractor.js +7 -0
  65. package/examples/js/objects/Sky.js +1 -1
  66. package/examples/js/objects/Water.js +2 -2
  67. package/examples/js/objects/Water2.js +4 -7
  68. package/examples/js/postprocessing/GlitchPass.js +3 -1
  69. package/examples/js/postprocessing/SSAOPass.js +1 -0
  70. package/examples/js/renderers/CSS2DRenderer.js +4 -4
  71. package/examples/js/renderers/CSS3DRenderer.js +4 -4
  72. package/examples/js/shaders/ConvolutionShader.js +0 -1
  73. package/examples/js/shaders/FXAAShader.js +1 -1
  74. package/examples/js/shaders/FilmShader.js +1 -1
  75. package/examples/js/shaders/GammaCorrectionShader.js +1 -1
  76. package/examples/js/shaders/HorizontalBlurShader.js +1 -2
  77. package/examples/js/shaders/SSRShader.js +1 -1
  78. package/examples/js/shaders/SSRrShader.js +1 -1
  79. package/examples/js/shaders/VerticalBlurShader.js +1 -2
  80. package/examples/js/utils/GeometryUtils.js +1 -1
  81. package/examples/js/utils/RoughnessMipmapper.js +18 -28
  82. package/examples/jsm/animation/CCDIKSolver.js +0 -1
  83. package/examples/jsm/animation/MMDPhysics.js +0 -2
  84. package/examples/jsm/controls/ArcballControls.js +80 -77
  85. package/examples/jsm/controls/DragControls.js +7 -0
  86. package/examples/jsm/controls/OrbitControls.js +9 -51
  87. package/examples/jsm/controls/TrackballControls.js +1 -1
  88. package/examples/jsm/controls/TransformControls.js +24 -1
  89. package/examples/jsm/csm/CSM.js +3 -3
  90. package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
  91. package/examples/jsm/curves/CurveExtras.js +0 -2
  92. package/examples/jsm/effects/AsciiEffect.js +2 -9
  93. package/examples/jsm/exporters/GLTFExporter.js +161 -75
  94. package/examples/jsm/exporters/USDZExporter.js +47 -26
  95. package/examples/jsm/geometries/TeapotGeometry.js +0 -1
  96. package/examples/jsm/interactive/SelectionBox.js +1 -0
  97. package/examples/jsm/interactive/SelectionHelper.js +19 -7
  98. package/examples/jsm/libs/flow.module.js +3338 -0
  99. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  100. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  101. package/examples/jsm/lights/RectAreaLightUniformsLib.js +7 -0
  102. package/examples/jsm/lines/LineMaterial.js +59 -23
  103. package/examples/jsm/lines/LineSegments2.js +22 -18
  104. package/examples/jsm/loaders/3DMLoader.js +18 -12
  105. package/examples/jsm/loaders/3MFLoader.js +2 -2
  106. package/examples/jsm/loaders/AMFLoader.js +0 -2
  107. package/examples/jsm/loaders/ColladaLoader.js +61 -4
  108. package/examples/jsm/loaders/EXRLoader.js +184 -293
  109. package/examples/jsm/loaders/FBXLoader.js +4 -5
  110. package/examples/jsm/loaders/GLTFLoader.js +101 -37
  111. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -14
  112. package/examples/jsm/loaders/KTX2Loader.js +30 -2
  113. package/examples/jsm/loaders/KTXLoader.js +1 -1
  114. package/examples/jsm/loaders/LDrawLoader.js +23 -24
  115. package/examples/jsm/loaders/LUT3dlLoader.js +2 -0
  116. package/examples/jsm/loaders/LUTCubeLoader.js +2 -0
  117. package/examples/jsm/loaders/LWOLoader.js +8 -6
  118. package/examples/jsm/loaders/LogLuvLoader.js +606 -0
  119. package/examples/jsm/loaders/MMDLoader.js +0 -1
  120. package/examples/jsm/loaders/NRRDLoader.js +10 -2
  121. package/examples/jsm/loaders/OBJLoader.js +0 -2
  122. package/examples/jsm/loaders/PLYLoader.js +34 -8
  123. package/examples/jsm/loaders/RGBELoader.js +0 -20
  124. package/examples/jsm/loaders/RGBMLoader.js +61 -7
  125. package/examples/jsm/loaders/SVGLoader.js +9 -6
  126. package/examples/jsm/loaders/TDSLoader.js +236 -275
  127. package/examples/jsm/loaders/VOXLoader.js +1 -0
  128. package/examples/jsm/loaders/VRMLLoader.js +2 -1
  129. package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
  130. package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
  131. package/examples/jsm/math/ImprovedNoise.js +1 -1
  132. package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
  133. package/examples/jsm/node-editor/NodeEditor.js +456 -0
  134. package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
  135. package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
  136. package/examples/jsm/node-editor/accessors/UVEditor.js +26 -0
  137. package/examples/jsm/node-editor/display/BlendEditor.js +43 -0
  138. package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
  139. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
  140. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
  141. package/examples/jsm/node-editor/examples/rim.json +1 -0
  142. package/examples/jsm/node-editor/inputs/ColorEditor.js +91 -0
  143. package/examples/jsm/node-editor/inputs/FloatEditor.js +24 -0
  144. package/examples/jsm/node-editor/inputs/SliderEditor.js +68 -0
  145. package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
  146. package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
  147. package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
  148. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +108 -0
  149. package/examples/jsm/node-editor/math/DotEditor.js +36 -0
  150. package/examples/jsm/node-editor/math/InvertEditor.js +38 -0
  151. package/examples/jsm/node-editor/math/LimiterEditor.js +48 -0
  152. package/examples/jsm/node-editor/math/NormalizeEditor.js +26 -0
  153. package/examples/jsm/node-editor/math/OperatorEditor.js +50 -0
  154. package/examples/jsm/node-editor/math/PowerEditor.js +34 -0
  155. package/examples/jsm/node-editor/math/TrigonometryEditor.js +39 -0
  156. package/examples/jsm/node-editor/procedural/CheckerEditor.js +26 -0
  157. package/examples/jsm/node-editor/utils/OscillatorEditor.js +42 -0
  158. package/examples/jsm/node-editor/utils/TimerEditor.js +57 -0
  159. package/examples/jsm/nodes/core/NodeBuilder.js +2 -2
  160. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
  161. package/examples/jsm/nodes/materials/nodes/StandardNode.js +7 -6
  162. package/examples/jsm/nodes/math/MathNode.js +12 -0
  163. package/examples/jsm/nodes/misc/BumpMapNode.js +1 -1
  164. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +1 -4
  165. package/examples/jsm/nodes/utils/ColorSpaceNode.js +1 -164
  166. package/examples/jsm/objects/Lensflare.js +3 -14
  167. package/examples/jsm/objects/MarchingCubes.js +46 -152
  168. package/examples/jsm/objects/Reflector.js +7 -0
  169. package/examples/jsm/objects/Refractor.js +7 -0
  170. package/examples/jsm/objects/Sky.js +1 -1
  171. package/examples/jsm/objects/Water.js +2 -2
  172. package/examples/jsm/objects/Water2.js +4 -8
  173. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
  174. package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
  175. package/examples/jsm/postprocessing/BloomPass.js +1 -1
  176. package/examples/jsm/postprocessing/BokehPass.js +1 -1
  177. package/examples/jsm/postprocessing/ClearPass.js +1 -1
  178. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
  179. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  180. package/examples/jsm/postprocessing/EffectComposer.js +3 -3
  181. package/examples/jsm/postprocessing/FilmPass.js +1 -1
  182. package/examples/jsm/postprocessing/GlitchPass.js +4 -2
  183. package/examples/jsm/postprocessing/HalftonePass.js +1 -1
  184. package/examples/jsm/postprocessing/MaskPass.js +1 -1
  185. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  186. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  187. package/examples/jsm/postprocessing/SAOPass.js +2 -2
  188. package/examples/jsm/postprocessing/SMAAPass.js +1 -1
  189. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
  190. package/examples/jsm/postprocessing/SSAOPass.js +2 -1
  191. package/examples/jsm/postprocessing/SSRPass.js +1 -1
  192. package/examples/jsm/postprocessing/SSRrPass.js +1 -1
  193. package/examples/jsm/postprocessing/SavePass.js +1 -1
  194. package/examples/jsm/postprocessing/ShaderPass.js +1 -1
  195. package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
  196. package/examples/jsm/postprocessing/TexturePass.js +1 -1
  197. package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
  198. package/examples/jsm/renderers/CSS2DRenderer.js +5 -4
  199. package/examples/jsm/renderers/CSS3DRenderer.js +5 -4
  200. package/examples/jsm/renderers/nodes/Nodes.js +15 -13
  201. package/examples/jsm/renderers/nodes/ShaderNode.js +194 -41
  202. package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
  203. package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
  204. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
  205. package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
  206. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
  207. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
  208. package/examples/jsm/renderers/nodes/accessors/UVNode.js +7 -5
  209. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
  210. package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
  211. package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
  212. package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
  213. package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
  214. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
  215. package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
  216. package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
  217. package/examples/jsm/renderers/nodes/core/Node.js +32 -10
  218. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +146 -128
  219. package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
  220. package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
  221. package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
  222. package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
  223. package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
  224. package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
  225. package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
  226. package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
  227. package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
  228. package/examples/jsm/renderers/nodes/core/constants.js +2 -0
  229. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +60 -43
  230. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
  231. package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
  232. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +27 -0
  233. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
  234. package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
  235. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +10 -2
  236. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
  237. package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
  238. package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
  239. package/examples/jsm/renderers/nodes/math/MathNode.js +90 -37
  240. package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
  241. package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
  242. package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
  243. package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
  244. package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
  245. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
  246. package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
  247. package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
  248. package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
  249. package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
  250. package/examples/jsm/renderers/nodes/utils/SplitNode.js +18 -8
  251. package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
  252. package/examples/jsm/renderers/nodes/utils/TimerNode.js +1 -1
  253. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
  254. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +192 -95
  255. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
  256. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
  257. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
  258. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +10 -9
  259. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
  260. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
  261. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
  262. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +44 -65
  263. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +12 -28
  264. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
  265. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +34 -27
  266. package/examples/jsm/renderers/webgpu/constants.js +2 -2
  267. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +453 -95
  268. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  269. package/examples/jsm/shaders/ConvolutionShader.js +0 -1
  270. package/examples/jsm/shaders/FXAAShader.js +1 -1
  271. package/examples/jsm/shaders/FilmShader.js +1 -1
  272. package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
  273. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -2
  274. package/examples/jsm/shaders/SSRShader.js +1 -1
  275. package/examples/jsm/shaders/SSRrShader.js +1 -1
  276. package/examples/jsm/shaders/VerticalBlurShader.js +1 -2
  277. package/examples/jsm/utils/GeometryUtils.js +1 -1
  278. package/examples/jsm/utils/RoughnessMipmapper.js +19 -31
  279. package/examples/jsm/utils/WorkerPool.js +11 -11
  280. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
  281. package/package.json +24 -18
  282. package/src/Three.Legacy.js +18 -0
  283. package/src/Three.js +1 -3
  284. package/src/cameras/StereoCamera.js +8 -7
  285. package/src/constants.js +1 -8
  286. package/src/core/Layers.js +7 -1
  287. package/src/core/Object3D.js +3 -1
  288. package/src/extras/PMREMGenerator.js +23 -109
  289. package/src/extras/core/Interpolations.js +1 -1
  290. package/src/geometries/LatheGeometry.js +70 -47
  291. package/src/helpers/CameraHelper.js +1 -1
  292. package/src/loaders/FileLoader.js +98 -144
  293. package/src/loaders/ImageLoader.js +9 -4
  294. package/src/loaders/LoaderUtils.js +26 -0
  295. package/src/loaders/MaterialLoader.js +7 -4
  296. package/src/loaders/ObjectLoader.js +2 -0
  297. package/src/materials/Material.js +4 -4
  298. package/src/materials/MeshPhysicalMaterial.js +20 -14
  299. package/src/math/Color.js +0 -38
  300. package/src/math/MathUtils.js +5 -16
  301. package/src/math/Ray.js +2 -2
  302. package/src/math/Sphere.js +10 -1
  303. package/src/objects/Skeleton.js +1 -0
  304. package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
  305. package/src/renderers/WebGLRenderer.js +105 -132
  306. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
  307. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +1 -1
  308. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +2 -24
  309. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -74
  310. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  311. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +1 -1
  312. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
  313. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +28 -2
  314. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  315. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  316. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +1 -1
  317. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +23 -5
  318. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
  319. package/src/renderers/shaders/ShaderLib.js +6 -4
  320. package/src/renderers/shaders/UniformsLib.js +1 -2
  321. package/src/renderers/webgl/WebGLCapabilities.js +0 -2
  322. package/src/renderers/webgl/WebGLExtensions.js +1 -0
  323. package/src/renderers/webgl/WebGLMaterials.js +27 -15
  324. package/src/renderers/webgl/WebGLMorphtargets.js +1 -0
  325. package/src/renderers/webgl/WebGLProgram.js +11 -24
  326. package/src/renderers/webgl/WebGLPrograms.js +194 -33
  327. package/src/renderers/webgl/WebGLRenderLists.js +4 -14
  328. package/src/renderers/webgl/WebGLShaderCache.js +120 -0
  329. package/src/renderers/webgl/WebGLShadowMap.js +14 -5
  330. package/src/renderers/webgl/WebGLState.js +76 -17
  331. package/src/renderers/webgl/WebGLTextures.js +367 -61
  332. package/src/renderers/webgl/WebGLUniforms.js +45 -1
  333. package/src/renderers/webxr/WebXRManager.js +77 -109
  334. package/src/scenes/Scene.js +1 -1
  335. package/src/textures/DataTexture.js +0 -2
  336. package/src/textures/DataTexture2DArray.js +0 -2
  337. package/src/textures/DataTexture3D.js +0 -2
  338. package/src/textures/FramebufferTexture.js +25 -0
  339. package/src/textures/Texture.js +6 -0
  340. package/examples/js/controls/DeviceOrientationControls.js +0 -147
  341. package/examples/js/libs/dat.gui.min.js +0 -14
  342. package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
  343. package/examples/jsm/libs/dat.gui.module.js +0 -3575
  344. package/examples/jsm/libs/glslang.js +0 -78
  345. package/examples/jsm/libs/glslang.wasm +0 -0
  346. package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
  347. package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
  348. package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
  349. package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
  350. package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
  351. package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
  352. package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
  353. package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
  354. package/src/extras/objects/ImmediateRenderObject.js +0 -31
@@ -19,19 +19,17 @@ class FileLoader extends Loader {
19
19
 
20
20
  url = this.manager.resolveURL( url );
21
21
 
22
- const scope = this;
23
-
24
22
  const cached = Cache.get( url );
25
23
 
26
24
  if ( cached !== undefined ) {
27
25
 
28
- scope.manager.itemStart( url );
26
+ this.manager.itemStart( url );
29
27
 
30
- setTimeout( function () {
28
+ setTimeout( () => {
31
29
 
32
30
  if ( onLoad ) onLoad( cached );
33
31
 
34
- scope.manager.itemEnd( url );
32
+ this.manager.itemEnd( url );
35
33
 
36
34
  }, 0 );
37
35
 
@@ -55,225 +53,181 @@ class FileLoader extends Loader {
55
53
 
56
54
  }
57
55
 
58
- // Check for data: URI
59
- const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;
60
- const dataUriRegexResult = url.match( dataUriRegex );
61
- let request;
62
-
63
- // Safari can not handle Data URIs through XMLHttpRequest so process manually
64
- if ( dataUriRegexResult ) {
65
-
66
- const mimeType = dataUriRegexResult[ 1 ];
67
- const isBase64 = !! dataUriRegexResult[ 2 ];
68
-
69
- let data = dataUriRegexResult[ 3 ];
70
- data = decodeURIComponent( data );
71
-
72
- if ( isBase64 ) data = atob( data );
56
+ // Initialise array for duplicate requests
57
+ loading[ url ] = [];
73
58
 
74
- try {
59
+ loading[ url ].push( {
60
+ onLoad: onLoad,
61
+ onProgress: onProgress,
62
+ onError: onError,
63
+ } );
75
64
 
76
- let response;
77
- const responseType = ( this.responseType || '' ).toLowerCase();
78
-
79
- switch ( responseType ) {
80
-
81
- case 'arraybuffer':
82
- case 'blob':
65
+ // create request
66
+ const req = new Request( url, {
67
+ headers: new Headers( this.requestHeader ),
68
+ credentials: this.withCredentials ? 'include' : 'same-origin',
69
+ // An abort controller could be added within a future PR
70
+ } );
83
71
 
84
- const view = new Uint8Array( data.length );
72
+ // start the fetch
73
+ fetch( req )
74
+ .then( response => {
85
75
 
86
- for ( let i = 0; i < data.length; i ++ ) {
76
+ if ( response.status === 200 || response.status === 0 ) {
87
77
 
88
- view[ i ] = data.charCodeAt( i );
89
-
90
- }
91
-
92
- if ( responseType === 'blob' ) {
93
-
94
- response = new Blob( [ view.buffer ], { type: mimeType } );
95
-
96
- } else {
97
-
98
- response = view.buffer;
99
-
100
- }
101
-
102
- break;
103
-
104
- case 'document':
105
-
106
- const parser = new DOMParser();
107
- response = parser.parseFromString( data, mimeType );
108
-
109
- break;
78
+ // Some browsers return HTTP Status 0 when using non-http protocol
79
+ // e.g. 'file://' or 'data://'. Handle as success.
110
80
 
111
- case 'json':
81
+ if ( response.status === 0 ) {
112
82
 
113
- response = JSON.parse( data );
83
+ console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );
114
84
 
115
- break;
85
+ }
116
86
 
117
- default: // 'text' or other
87
+ if ( typeof ReadableStream === 'undefined' || response.body.getReader === undefined ) {
118
88
 
119
- response = data;
89
+ return response;
120
90
 
121
- break;
91
+ }
122
92
 
123
- }
93
+ const callbacks = loading[ url ];
94
+ const reader = response.body.getReader();
95
+ const contentLength = response.headers.get( 'Content-Length' );
96
+ const total = contentLength ? parseInt( contentLength ) : 0;
97
+ const lengthComputable = total !== 0;
98
+ let loaded = 0;
124
99
 
125
- // Wait for next browser tick like standard XMLHttpRequest event dispatching does
126
- setTimeout( function () {
100
+ // periodically read data into the new stream tracking while download progress
101
+ const stream = new ReadableStream( {
102
+ start( controller ) {
127
103
 
128
- if ( onLoad ) onLoad( response );
104
+ readData();
129
105
 
130
- scope.manager.itemEnd( url );
106
+ function readData() {
131
107
 
132
- }, 0 );
108
+ reader.read().then( ( { done, value } ) => {
133
109
 
134
- } catch ( error ) {
110
+ if ( done ) {
135
111
 
136
- // Wait for next browser tick like standard XMLHttpRequest event dispatching does
137
- setTimeout( function () {
112
+ controller.close();
138
113
 
139
- if ( onError ) onError( error );
114
+ } else {
140
115
 
141
- scope.manager.itemError( url );
142
- scope.manager.itemEnd( url );
116
+ loaded += value.byteLength;
143
117
 
144
- }, 0 );
118
+ const event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );
119
+ for ( let i = 0, il = callbacks.length; i < il; i ++ ) {
145
120
 
146
- }
121
+ const callback = callbacks[ i ];
122
+ if ( callback.onProgress ) callback.onProgress( event );
147
123
 
148
- } else {
124
+ }
149
125
 
150
- // Initialise array for duplicate requests
126
+ controller.enqueue( value );
127
+ readData();
151
128
 
152
- loading[ url ] = [];
129
+ }
153
130
 
154
- loading[ url ].push( {
131
+ } );
155
132
 
156
- onLoad: onLoad,
157
- onProgress: onProgress,
158
- onError: onError
133
+ }
159
134
 
160
- } );
135
+ }
161
136
 
162
- request = new XMLHttpRequest();
137
+ } );
163
138
 
164
- request.open( 'GET', url, true );
139
+ return new Response( stream );
165
140
 
166
- request.addEventListener( 'load', function ( event ) {
141
+ } else {
167
142
 
168
- const response = this.response;
143
+ throw Error( `fetch for "${response.url}" responded with ${response.status}: ${response.statusText}` );
169
144
 
170
- const callbacks = loading[ url ];
145
+ }
171
146
 
172
- delete loading[ url ];
147
+ } )
148
+ .then( response => {
173
149
 
174
- if ( this.status === 200 || this.status === 0 ) {
150
+ switch ( this.responseType ) {
175
151
 
176
- // Some browsers return HTTP Status 0 when using non-http protocol
177
- // e.g. 'file://' or 'data://'. Handle as success.
152
+ case 'arraybuffer':
178
153
 
179
- if ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );
154
+ return response.arrayBuffer();
180
155
 
181
- // Add to cache only on HTTP success, so that we do not cache
182
- // error response bodies as proper responses to requests.
183
- Cache.add( url, response );
156
+ case 'blob':
184
157
 
185
- for ( let i = 0, il = callbacks.length; i < il; i ++ ) {
158
+ return response.blob();
186
159
 
187
- const callback = callbacks[ i ];
188
- if ( callback.onLoad ) callback.onLoad( response );
160
+ case 'document':
189
161
 
190
- }
162
+ return response.text()
163
+ .then( text => {
191
164
 
192
- scope.manager.itemEnd( url );
165
+ const parser = new DOMParser();
166
+ return parser.parseFromString( text, this.mimeType );
193
167
 
194
- } else {
168
+ } );
195
169
 
196
- for ( let i = 0, il = callbacks.length; i < il; i ++ ) {
170
+ case 'json':
197
171
 
198
- const callback = callbacks[ i ];
199
- if ( callback.onError ) callback.onError( event );
172
+ return response.json();
200
173
 
201
- }
174
+ default:
202
175
 
203
- scope.manager.itemError( url );
204
- scope.manager.itemEnd( url );
176
+ return response.text();
205
177
 
206
178
  }
207
179
 
208
- }, false );
180
+ } )
181
+ .then( data => {
209
182
 
210
- request.addEventListener( 'progress', function ( event ) {
183
+ // Add to cache only on HTTP success, so that we do not cache
184
+ // error response bodies as proper responses to requests.
185
+ Cache.add( url, data );
211
186
 
212
187
  const callbacks = loading[ url ];
188
+ delete loading[ url ];
213
189
 
214
190
  for ( let i = 0, il = callbacks.length; i < il; i ++ ) {
215
191
 
216
192
  const callback = callbacks[ i ];
217
- if ( callback.onProgress ) callback.onProgress( event );
193
+ if ( callback.onLoad ) callback.onLoad( data );
218
194
 
219
195
  }
220
196
 
221
- }, false );
197
+ } )
198
+ .catch( err => {
222
199
 
223
- request.addEventListener( 'error', function ( event ) {
200
+ // Abort errors and other errors are handled the same
224
201
 
225
202
  const callbacks = loading[ url ];
226
203
 
227
- delete loading[ url ];
228
-
229
- for ( let i = 0, il = callbacks.length; i < il; i ++ ) {
204
+ if ( callbacks === undefined ) {
230
205
 
231
- const callback = callbacks[ i ];
232
- if ( callback.onError ) callback.onError( event );
206
+ // When onLoad was called and url was deleted in `loading`
207
+ this.manager.itemError( url );
208
+ throw err;
233
209
 
234
210
  }
235
211
 
236
- scope.manager.itemError( url );
237
- scope.manager.itemEnd( url );
238
-
239
- }, false );
240
-
241
- request.addEventListener( 'abort', function ( event ) {
242
-
243
- const callbacks = loading[ url ];
244
-
245
212
  delete loading[ url ];
246
213
 
247
214
  for ( let i = 0, il = callbacks.length; i < il; i ++ ) {
248
215
 
249
216
  const callback = callbacks[ i ];
250
- if ( callback.onError ) callback.onError( event );
217
+ if ( callback.onError ) callback.onError( err );
251
218
 
252
219
  }
253
220
 
254
- scope.manager.itemError( url );
255
- scope.manager.itemEnd( url );
221
+ this.manager.itemError( url );
256
222
 
257
- }, false );
223
+ } )
224
+ .finally( () => {
258
225
 
259
- if ( this.responseType !== undefined ) request.responseType = this.responseType;
260
- if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;
226
+ this.manager.itemEnd( url );
261
227
 
262
- if ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );
263
-
264
- for ( const header in this.requestHeader ) {
265
-
266
- request.setRequestHeader( header, this.requestHeader[ header ] );
267
-
268
- }
269
-
270
- request.send( null );
271
-
272
- }
273
-
274
- scope.manager.itemStart( url );
228
+ } );
275
229
 
276
- return request;
230
+ this.manager.itemStart( url );
277
231
 
278
232
  }
279
233
 
@@ -40,8 +40,7 @@ class ImageLoader extends Loader {
40
40
 
41
41
  function onImageLoad() {
42
42
 
43
- image.removeEventListener( 'load', onImageLoad, false );
44
- image.removeEventListener( 'error', onImageError, false );
43
+ removeEventListeners();
45
44
 
46
45
  Cache.add( url, this );
47
46
 
@@ -53,8 +52,7 @@ class ImageLoader extends Loader {
53
52
 
54
53
  function onImageError( event ) {
55
54
 
56
- image.removeEventListener( 'load', onImageLoad, false );
57
- image.removeEventListener( 'error', onImageError, false );
55
+ removeEventListeners();
58
56
 
59
57
  if ( onError ) onError( event );
60
58
 
@@ -63,6 +61,13 @@ class ImageLoader extends Loader {
63
61
 
64
62
  }
65
63
 
64
+ function removeEventListeners() {
65
+
66
+ image.removeEventListener( 'load', onImageLoad, false );
67
+ image.removeEventListener( 'error', onImageError, false );
68
+
69
+ }
70
+
66
71
  image.addEventListener( 'load', onImageLoad, false );
67
72
  image.addEventListener( 'error', onImageError, false );
68
73
 
@@ -44,6 +44,32 @@ class LoaderUtils {
44
44
 
45
45
  }
46
46
 
47
+ static resolveURL( url, path ) {
48
+
49
+ // Invalid URL
50
+ if ( typeof url !== 'string' || url === '' ) return '';
51
+
52
+ // Host Relative URL
53
+ if ( /^https?:\/\//i.test( path ) && /^\//.test( url ) ) {
54
+
55
+ path = path.replace( /(^https?:\/\/[^\/]+).*/i, '$1' );
56
+
57
+ }
58
+
59
+ // Absolute URL http://,https://,//
60
+ if ( /^(https?:)?\/\//i.test( url ) ) return url;
61
+
62
+ // Data URI
63
+ if ( /^data:.*,.*$/i.test( url ) ) return url;
64
+
65
+ // Blob URL
66
+ if ( /^blob:.*$/i.test( url ) ) return url;
67
+
68
+ // Relative URL
69
+ return path + url;
70
+
71
+ }
72
+
47
73
  }
48
74
 
49
75
  export { LoaderUtils };
@@ -75,19 +75,19 @@ class MaterialLoader extends Loader {
75
75
  if ( json.roughness !== undefined ) material.roughness = json.roughness;
76
76
  if ( json.metalness !== undefined ) material.metalness = json.metalness;
77
77
  if ( json.sheen !== undefined ) material.sheen = json.sheen;
78
- if ( json.sheenTint !== undefined ) material.sheenTint = new Color().setHex( json.sheenTint );
78
+ if ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );
79
79
  if ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;
80
80
  if ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );
81
81
  if ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );
82
82
  if ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;
83
- if ( json.specularTint !== undefined && material.specularTint !== undefined ) material.specularTint.setHex( json.specularTint );
83
+ if ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );
84
84
  if ( json.shininess !== undefined ) material.shininess = json.shininess;
85
85
  if ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;
86
86
  if ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;
87
87
  if ( json.transmission !== undefined ) material.transmission = json.transmission;
88
88
  if ( json.thickness !== undefined ) material.thickness = json.thickness;
89
89
  if ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;
90
- if ( json.attenuationTint !== undefined && material.attenuationTint !== undefined ) material.attenuationTint.setHex( json.attenuationTint );
90
+ if ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );
91
91
  if ( json.fog !== undefined ) material.fog = json.fog;
92
92
  if ( json.flatShading !== undefined ) material.flatShading = json.flatShading;
93
93
  if ( json.blending !== undefined ) material.blending = json.blending;
@@ -264,7 +264,7 @@ class MaterialLoader extends Loader {
264
264
 
265
265
  if ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );
266
266
  if ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );
267
- if ( json.specularTintMap !== undefined ) material.specularTintMap = getTexture( json.specularTintMap );
267
+ if ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );
268
268
 
269
269
  if ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );
270
270
  if ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;
@@ -288,6 +288,9 @@ class MaterialLoader extends Loader {
288
288
  if ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );
289
289
  if ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );
290
290
 
291
+ if ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );
292
+ if ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );
293
+
291
294
  return material;
292
295
 
293
296
  }
@@ -706,6 +706,8 @@ class ObjectLoader extends Loader {
706
706
  if ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;
707
707
  if ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;
708
708
 
709
+ if ( data.userData !== undefined ) texture.userData = data.userData;
710
+
709
711
  textures[ data.uuid ] = texture;
710
712
 
711
713
  }
@@ -192,14 +192,14 @@ class Material extends EventDispatcher {
192
192
  if ( this.metalness !== undefined ) data.metalness = this.metalness;
193
193
 
194
194
  if ( this.sheen !== undefined ) data.sheen = this.sheen;
195
- if ( this.sheenTint && this.sheenTint.isColor ) data.sheenTint = this.sheenTint.getHex();
195
+ if ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();
196
196
  if ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;
197
197
  if ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();
198
198
  if ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;
199
199
 
200
200
  if ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();
201
201
  if ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;
202
- if ( this.specularTint && this.specularTint.isColor ) data.specularTint = this.specularTint.getHex();
202
+ if ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();
203
203
  if ( this.shininess !== undefined ) data.shininess = this.shininess;
204
204
  if ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;
205
205
  if ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;
@@ -270,7 +270,7 @@ class Material extends EventDispatcher {
270
270
  if ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;
271
271
  if ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;
272
272
  if ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;
273
- if ( this.specularTintMap && this.specularTintMap.isTexture ) data.specularTintMap = this.specularTintMap.toJSON( meta ).uuid;
273
+ if ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;
274
274
 
275
275
  if ( this.envMap && this.envMap.isTexture ) {
276
276
 
@@ -295,7 +295,7 @@ class Material extends EventDispatcher {
295
295
  if ( this.thickness !== undefined ) data.thickness = this.thickness;
296
296
  if ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;
297
297
  if ( this.attenuationDistance !== undefined ) data.attenuationDistance = this.attenuationDistance;
298
- if ( this.attenuationTint !== undefined ) data.attenuationTint = this.attenuationTint.getHex();
298
+ if ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();
299
299
 
300
300
  if ( this.size !== undefined ) data.size = this.size;
301
301
  if ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;
@@ -16,8 +16,10 @@ import * as MathUtils from '../math/MathUtils.js';
16
16
  * reflectivity: <float>,
17
17
  *
18
18
  * sheen: <float>,
19
- * sheenTint: <Color>,
19
+ * sheenColor: <Color>,
20
+ * sheenColorMap: new THREE.Texture( <Image> ),
20
21
  * sheenRoughness: <float>,
22
+ * sheenRoughnessMap: new THREE.Texture( <Image> ),
21
23
  *
22
24
  * transmission: <float>,
23
25
  * transmissionMap: new THREE.Texture( <Image> ),
@@ -25,12 +27,12 @@ import * as MathUtils from '../math/MathUtils.js';
25
27
  * thickness: <float>,
26
28
  * thicknessMap: new THREE.Texture( <Image> ),
27
29
  * attenuationDistance: <float>,
28
- * attenuationTint: <Color>,
30
+ * attenuationColor: <Color>,
29
31
  *
30
32
  * specularIntensity: <float>,
31
- * specularIntensityhMap: new THREE.Texture( <Image> ),
32
- * specularTint: <Color>,
33
- * specularTintMap: new THREE.Texture( <Image> )
33
+ * specularIntensityMap: new THREE.Texture( <Image> ),
34
+ * specularColor: <Color>,
35
+ * specularColorMap: new THREE.Texture( <Image> )
34
36
  * }
35
37
  */
36
38
 
@@ -70,20 +72,22 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
70
72
  }
71
73
  } );
72
74
 
73
- this.sheenTint = new Color( 0x000000 );
75
+ this.sheenColor = new Color( 0x000000 );
76
+ this.sheenColorMap = null;
74
77
  this.sheenRoughness = 1.0;
78
+ this.sheenRoughnessMap = null;
75
79
 
76
80
  this.transmissionMap = null;
77
81
 
78
- this.thickness = 0.01;
82
+ this.thickness = 0;
79
83
  this.thicknessMap = null;
80
84
  this.attenuationDistance = 0.0;
81
- this.attenuationTint = new Color( 1, 1, 1 );
85
+ this.attenuationColor = new Color( 1, 1, 1 );
82
86
 
83
87
  this.specularIntensity = 1.0;
84
88
  this.specularIntensityMap = null;
85
- this.specularTint = new Color( 1, 1, 1 );
86
- this.specularTintMap = null;
89
+ this.specularColor = new Color( 1, 1, 1 );
90
+ this.specularColorMap = null;
87
91
 
88
92
  this._sheen = 0.0;
89
93
  this._clearcoat = 0;
@@ -168,8 +172,10 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
168
172
  this.ior = source.ior;
169
173
 
170
174
  this.sheen = source.sheen;
171
- this.sheenTint.copy( source.sheenTint );
175
+ this.sheenColor.copy( source.sheenColor );
176
+ this.sheenColorMap = source.sheenColorMap;
172
177
  this.sheenRoughness = source.sheenRoughness;
178
+ this.sheenRoughnessMap = source.sheenRoughnessMap;
173
179
 
174
180
  this.transmission = source.transmission;
175
181
  this.transmissionMap = source.transmissionMap;
@@ -177,12 +183,12 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
177
183
  this.thickness = source.thickness;
178
184
  this.thicknessMap = source.thicknessMap;
179
185
  this.attenuationDistance = source.attenuationDistance;
180
- this.attenuationTint.copy( source.attenuationTint );
186
+ this.attenuationColor.copy( source.attenuationColor );
181
187
 
182
188
  this.specularIntensity = source.specularIntensity;
183
189
  this.specularIntensityMap = source.specularIntensityMap;
184
- this.specularTint.copy( source.specularTint );
185
- this.specularTintMap = source.specularTintMap;
190
+ this.specularColor.copy( source.specularColor );
191
+ this.specularColorMap = source.specularColorMap;
186
192
 
187
193
  return this;
188
194
 
package/src/math/Color.js CHANGED
@@ -298,44 +298,6 @@ class Color {
298
298
 
299
299
  }
300
300
 
301
- copyGammaToLinear( color, gammaFactor = 2.0 ) {
302
-
303
- this.r = Math.pow( color.r, gammaFactor );
304
- this.g = Math.pow( color.g, gammaFactor );
305
- this.b = Math.pow( color.b, gammaFactor );
306
-
307
- return this;
308
-
309
- }
310
-
311
- copyLinearToGamma( color, gammaFactor = 2.0 ) {
312
-
313
- const safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;
314
-
315
- this.r = Math.pow( color.r, safeInverse );
316
- this.g = Math.pow( color.g, safeInverse );
317
- this.b = Math.pow( color.b, safeInverse );
318
-
319
- return this;
320
-
321
- }
322
-
323
- convertGammaToLinear( gammaFactor ) {
324
-
325
- this.copyGammaToLinear( this, gammaFactor );
326
-
327
- return this;
328
-
329
- }
330
-
331
- convertLinearToGamma( gammaFactor ) {
332
-
333
- this.copyLinearToGamma( this, gammaFactor );
334
-
335
- return this;
336
-
337
- }
338
-
339
301
  copySRGBToLinear( color ) {
340
302
 
341
303
  this.r = SRGBToLinear( color.r );
@@ -1,10 +1,3 @@
1
- let _seed = 1234567;
2
-
3
- const DEG2RAD = Math.PI / 180;
4
- const RAD2DEG = 180 / Math.PI;
5
-
6
- //
7
-
8
1
  const _lut = [];
9
2
 
10
3
  for ( let i = 0; i < 256; i ++ ) {
@@ -13,18 +6,14 @@ for ( let i = 0; i < 256; i ++ ) {
13
6
 
14
7
  }
15
8
 
16
- const hasRandomUUID = typeof crypto !== 'undefined' && 'randomUUID' in crypto;
17
-
18
- function generateUUID() {
19
-
20
- if ( hasRandomUUID ) {
9
+ let _seed = 1234567;
21
10
 
22
- return crypto.randomUUID().toUpperCase();
23
11
 
24
- }
12
+ const DEG2RAD = Math.PI / 180;
13
+ const RAD2DEG = 180 / Math.PI;
25
14
 
26
- // TODO Remove this code when crypto.randomUUID() is available everywhere
27
- // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136
15
+ // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136
16
+ function generateUUID() {
28
17
 
29
18
  const d0 = Math.random() * 0xffffffff | 0;
30
19
  const d1 = Math.random() * 0xffffffff | 0;