super-three 0.141.0 → 0.144.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/README.md +8 -8
  2. package/build/three.cjs +1558 -1034
  3. package/build/three.js +1558 -1034
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +2012 -1243
  6. package/examples/js/animation/MMDPhysics.js +1 -16
  7. package/examples/js/controls/ArcballControls.js +16 -3
  8. package/examples/js/controls/FirstPersonControls.js +0 -7
  9. package/examples/js/controls/FlyControls.js +0 -8
  10. package/examples/js/controls/OrbitControls.js +0 -4
  11. package/examples/js/controls/PointerLockControls.js +0 -8
  12. package/examples/js/controls/TrackballControls.js +0 -2
  13. package/examples/js/controls/TransformControls.js +20 -16
  14. package/examples/js/effects/AnaglyphEffect.js +2 -2
  15. package/examples/js/effects/OutlineEffect.js +4 -24
  16. package/examples/js/effects/ParallaxBarrierEffect.js +2 -2
  17. package/examples/js/effects/PeppersGhostEffect.js +2 -2
  18. package/examples/js/effects/StereoEffect.js +2 -2
  19. package/examples/js/environments/RoomEnvironment.js +22 -0
  20. package/examples/js/exporters/ColladaExporter.js +4 -13
  21. package/examples/js/exporters/DRACOExporter.js +0 -12
  22. package/examples/js/exporters/GLTFExporter.js +28 -29
  23. package/examples/js/exporters/OBJExporter.js +2 -23
  24. package/examples/js/exporters/PLYExporter.js +12 -24
  25. package/examples/js/exporters/STLExporter.js +0 -7
  26. package/examples/js/exporters/USDZExporter.js +6 -0
  27. package/examples/js/geometries/ConvexGeometry.js +1 -1
  28. package/examples/js/geometries/ParametricGeometry.js +1 -8
  29. package/examples/js/interactive/SelectionHelper.js +2 -0
  30. package/examples/js/libs/ktx-parse.umd.js +1 -0
  31. package/examples/js/libs/meshopt_decoder.js +98 -32
  32. package/examples/js/loaders/ColladaLoader.js +1 -0
  33. package/examples/js/loaders/DRACOLoader.js +2 -25
  34. package/examples/js/loaders/EXRLoader.js +2 -13
  35. package/examples/js/loaders/FBXLoader.js +10 -3
  36. package/examples/js/loaders/FontLoader.js +3 -16
  37. package/examples/js/loaders/GLTFLoader.js +52 -36
  38. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -11
  39. package/examples/js/loaders/LDrawLoader.js +139 -74
  40. package/examples/js/loaders/OBJLoader.js +7 -13
  41. package/examples/js/loaders/PCDLoader.js +59 -14
  42. package/examples/js/loaders/PLYLoader.js +3 -3
  43. package/examples/js/loaders/SVGLoader.js +4 -3
  44. package/examples/js/loaders/TIFFLoader.js +31 -0
  45. package/examples/js/loaders/VRMLLoader.js +33 -24
  46. package/examples/js/loaders/VTKLoader.js +1 -1
  47. package/examples/js/loaders/lwo/LWO2Parser.js +8 -7
  48. package/examples/js/loaders/lwo/LWO3Parser.js +8 -7
  49. package/examples/js/materials/MeshGouraudMaterial.js +385 -0
  50. package/examples/js/math/ColorConverter.js +0 -50
  51. package/examples/js/misc/GPUComputationRenderer.js +23 -0
  52. package/examples/js/misc/Volume.js +198 -190
  53. package/examples/js/misc/VolumeSlice.js +90 -88
  54. package/examples/js/modifiers/SimplifyModifier.js +1 -1
  55. package/examples/js/objects/GroundProjectedEnv.js +193 -0
  56. package/examples/js/objects/Reflector.js +9 -2
  57. package/examples/js/objects/ReflectorForSSRPass.js +3 -4
  58. package/examples/js/objects/Refractor.js +10 -4
  59. package/examples/js/objects/ShadowMesh.js +5 -1
  60. package/examples/js/postprocessing/OutlinePass.js +5 -3
  61. package/examples/js/renderers/CSS2DRenderer.js +2 -2
  62. package/examples/js/renderers/CSS3DRenderer.js +2 -2
  63. package/examples/js/renderers/Projector.js +2 -23
  64. package/examples/js/shaders/LuminosityShader.js +1 -1
  65. package/examples/js/shaders/MMDToonShader.js +6 -2
  66. package/examples/js/shaders/ToneMapShader.js +1 -1
  67. package/examples/js/utils/BufferGeometryUtils.js +1 -1
  68. package/examples/js/utils/GeometryUtils.js +2 -18
  69. package/examples/js/utils/PackedPhongMaterial.js +1 -1
  70. package/examples/js/utils/SceneUtils.js +0 -16
  71. package/examples/jsm/animation/MMDPhysics.js +3 -22
  72. package/examples/jsm/controls/ArcballControls.js +17 -2
  73. package/examples/jsm/controls/FirstPersonControls.js +0 -7
  74. package/examples/jsm/controls/FlyControls.js +0 -7
  75. package/examples/jsm/controls/OrbitControls.js +0 -5
  76. package/examples/jsm/controls/PointerLockControls.js +0 -7
  77. package/examples/jsm/controls/TrackballControls.js +0 -3
  78. package/examples/jsm/controls/TransformControls.js +18 -16
  79. package/examples/jsm/effects/AnaglyphEffect.js +2 -2
  80. package/examples/jsm/effects/OutlineEffect.js +4 -25
  81. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
  82. package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
  83. package/examples/jsm/effects/StereoEffect.js +2 -2
  84. package/examples/jsm/environments/RoomEnvironment.js +23 -0
  85. package/examples/jsm/exporters/ColladaExporter.js +4 -13
  86. package/examples/jsm/exporters/DRACOExporter.js +0 -13
  87. package/examples/jsm/exporters/GLTFExporter.js +29 -31
  88. package/examples/jsm/exporters/KTX2Exporter.js +29 -29
  89. package/examples/jsm/exporters/OBJExporter.js +0 -18
  90. package/examples/jsm/exporters/PLYExporter.js +14 -22
  91. package/examples/jsm/exporters/STLExporter.js +1 -9
  92. package/examples/jsm/exporters/USDZExporter.js +14 -3
  93. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  94. package/examples/jsm/geometries/ParametricGeometry.js +0 -6
  95. package/examples/jsm/interactive/HTMLMesh.js +9 -9
  96. package/examples/jsm/interactive/SelectionHelper.js +5 -3
  97. package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
  98. package/examples/jsm/libs/utif.module.js +1579 -0
  99. package/examples/jsm/libs/zstddec.module.js +1 -0
  100. package/examples/jsm/loaders/ColladaLoader.js +1 -0
  101. package/examples/jsm/loaders/DRACOLoader.js +2 -28
  102. package/examples/jsm/loaders/EXRLoader.js +3 -13
  103. package/examples/jsm/loaders/FBXLoader.js +10 -3
  104. package/examples/jsm/loaders/FontLoader.js +3 -16
  105. package/examples/jsm/loaders/GLTFLoader.js +52 -36
  106. package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
  107. package/examples/jsm/loaders/KTX2Loader.js +192 -30
  108. package/examples/jsm/loaders/LDrawLoader.js +135 -74
  109. package/examples/jsm/loaders/OBJLoader.js +6 -14
  110. package/examples/jsm/loaders/PCDLoader.js +59 -13
  111. package/examples/jsm/loaders/PLYLoader.js +3 -3
  112. package/examples/jsm/loaders/RGBELoader.js +1 -1
  113. package/examples/jsm/loaders/SVGLoader.js +4 -3
  114. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  115. package/examples/jsm/loaders/USDZLoader.js +393 -0
  116. package/examples/jsm/loaders/VRMLLoader.js +23 -25
  117. package/examples/jsm/loaders/VTKLoader.js +1 -1
  118. package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
  119. package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
  120. package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
  121. package/examples/jsm/math/ColorConverter.js +1 -49
  122. package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
  123. package/examples/jsm/misc/Volume.js +169 -171
  124. package/examples/jsm/misc/VolumeSlice.js +78 -80
  125. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  126. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
  127. package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
  128. package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
  129. package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
  130. package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
  131. package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
  132. package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
  133. package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
  134. package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
  135. package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
  136. package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
  137. package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
  138. package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
  139. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +1 -1
  140. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
  141. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +1 -1
  142. package/examples/jsm/node-editor/math/AngleEditor.js +1 -1
  143. package/examples/jsm/node-editor/math/DotEditor.js +1 -1
  144. package/examples/jsm/node-editor/math/InvertEditor.js +1 -1
  145. package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
  146. package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
  147. package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
  148. package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
  149. package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
  150. package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
  151. package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
  152. package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
  153. package/examples/jsm/node-editor/utils/PreviewEditor.js +3 -3
  154. package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
  155. package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
  156. package/examples/jsm/nodes/Nodes.js +43 -13
  157. package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
  158. package/examples/jsm/nodes/accessors/NormalNode.js +4 -4
  159. package/examples/jsm/nodes/accessors/PositionNode.js +5 -5
  160. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
  161. package/examples/jsm/nodes/core/AttributeNode.js +3 -3
  162. package/examples/jsm/nodes/core/CodeNode.js +3 -3
  163. package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
  164. package/examples/jsm/nodes/core/FunctionNode.js +2 -2
  165. package/examples/jsm/nodes/core/Node.js +14 -12
  166. package/examples/jsm/nodes/core/NodeBuilder.js +12 -12
  167. package/examples/jsm/nodes/core/NodeUtils.js +23 -1
  168. package/examples/jsm/nodes/core/{NodeVary.js → NodeVarying.js} +3 -3
  169. package/examples/jsm/nodes/core/{VaryNode.js → VaryingNode.js} +7 -7
  170. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +94 -0
  171. package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
  172. package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -0
  173. package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
  174. package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
  175. package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
  176. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +31 -0
  177. package/examples/jsm/nodes/materials/Materials.js +13 -25
  178. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
  179. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
  180. package/examples/jsm/nodes/materials/NodeMaterial.js +2 -2
  181. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
  182. package/examples/jsm/nodes/materialx/Disclaimer.md +199 -0
  183. package/examples/jsm/nodes/materialx/functions/lib/mx_hsv.js +56 -0
  184. package/examples/jsm/nodes/materialx/functions/lib/mx_noise.js +607 -0
  185. package/examples/jsm/nodes/math/MathNode.js +2 -12
  186. package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
  187. package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
  188. package/examples/jsm/nodes/shadernode/ShaderNode.js +5 -5
  189. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +8 -5
  190. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +20 -6
  191. package/examples/jsm/nodes/utils/ConvertNode.js +8 -3
  192. package/examples/jsm/nodes/utils/JoinNode.js +7 -7
  193. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +2 -1
  194. package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
  195. package/examples/jsm/nodes/utils/SplitNode.js +21 -5
  196. package/examples/jsm/nodes/utils/TimerNode.js +2 -2
  197. package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
  198. package/examples/jsm/objects/Reflector.js +12 -5
  199. package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
  200. package/examples/jsm/objects/Refractor.js +12 -6
  201. package/examples/jsm/objects/ShadowMesh.js +8 -2
  202. package/examples/jsm/postprocessing/OutlinePass.js +5 -3
  203. package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
  204. package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
  205. package/examples/jsm/renderers/Projector.js +2 -24
  206. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
  207. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +329 -218
  208. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
  209. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +39 -3
  210. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
  211. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
  212. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  213. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
  214. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
  215. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
  216. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +66 -81
  217. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
  218. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
  219. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
  220. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +25 -30
  221. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  222. package/examples/jsm/shaders/LuminosityShader.js +1 -1
  223. package/examples/jsm/shaders/MMDToonShader.js +2 -2
  224. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  225. package/examples/jsm/utils/BufferGeometryUtils.js +2 -1
  226. package/examples/jsm/utils/GeometryUtils.js +17 -25
  227. package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
  228. package/examples/jsm/utils/SceneUtils.js +1 -21
  229. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
  230. package/examples/jsm/webxr/VRButton.js +1 -7
  231. package/package.json +18 -14
  232. package/src/Three.Legacy.js +262 -36
  233. package/src/Three.js +3 -2
  234. package/src/animation/AnimationAction.js +6 -5
  235. package/src/animation/AnimationClip.js +1 -1
  236. package/src/animation/AnimationMixer.js +1 -1
  237. package/src/animation/AnimationUtils.js +204 -199
  238. package/src/animation/KeyframeTrack.js +1 -1
  239. package/src/animation/PropertyBinding.js +24 -5
  240. package/src/cameras/CubeCamera.js +0 -7
  241. package/src/constants.js +2 -4
  242. package/src/core/BufferAttribute.js +81 -111
  243. package/src/core/BufferGeometry.js +3 -41
  244. package/src/core/InstancedBufferAttribute.js +0 -10
  245. package/src/core/InterleavedBuffer.js +1 -1
  246. package/src/core/InterleavedBufferAttribute.js +56 -7
  247. package/src/core/Object3D.js +22 -5
  248. package/src/core/Uniform.js +0 -7
  249. package/src/core/UniformsGroup.js +92 -0
  250. package/src/extras/DataUtils.js +104 -88
  251. package/src/extras/core/Path.js +1 -0
  252. package/src/extras/core/ShapePath.js +1 -4
  253. package/src/extras/curves/CatmullRomCurve3.js +4 -2
  254. package/src/geometries/BoxGeometry.js +1 -1
  255. package/src/geometries/CapsuleGeometry.js +1 -1
  256. package/src/geometries/CircleGeometry.js +1 -1
  257. package/src/geometries/ConeGeometry.js +1 -1
  258. package/src/geometries/CylinderGeometry.js +2 -1
  259. package/src/geometries/DodecahedronGeometry.js +1 -1
  260. package/src/geometries/EdgesGeometry.js +5 -4
  261. package/src/geometries/ExtrudeGeometry.js +2 -11
  262. package/src/geometries/IcosahedronGeometry.js +1 -1
  263. package/src/geometries/LatheGeometry.js +2 -2
  264. package/src/geometries/OctahedronGeometry.js +1 -1
  265. package/src/geometries/PlaneGeometry.js +2 -1
  266. package/src/geometries/PolyhedronGeometry.js +1 -1
  267. package/src/geometries/RingGeometry.js +1 -1
  268. package/src/geometries/ShapeGeometry.js +2 -1
  269. package/src/geometries/SphereGeometry.js +2 -1
  270. package/src/geometries/TetrahedronGeometry.js +1 -1
  271. package/src/geometries/TorusGeometry.js +2 -1
  272. package/src/geometries/TorusKnotGeometry.js +2 -1
  273. package/src/geometries/TubeGeometry.js +2 -1
  274. package/src/geometries/WireframeGeometry.js +1 -0
  275. package/src/helpers/CameraHelper.js +97 -38
  276. package/src/helpers/DirectionalLightHelper.js +1 -0
  277. package/src/helpers/HemisphereLightHelper.js +1 -0
  278. package/src/helpers/PlaneHelper.js +6 -9
  279. package/src/helpers/PolarGridHelper.js +18 -14
  280. package/src/helpers/SpotLightHelper.js +1 -0
  281. package/src/lights/SpotLight.js +2 -0
  282. package/src/loaders/FileLoader.js +12 -1
  283. package/src/loaders/LoadingManager.js +1 -1
  284. package/src/loaders/MaterialLoader.js +49 -7
  285. package/src/loaders/ObjectLoader.js +4 -41
  286. package/src/materials/Material.js +1 -33
  287. package/src/materials/Materials.js +0 -27
  288. package/src/materials/MeshLambertMaterial.js +28 -1
  289. package/src/materials/ShaderMaterial.js +3 -7
  290. package/src/math/Color.js +3 -13
  291. package/src/math/MathUtils.js +1 -7
  292. package/src/math/Matrix3.js +1 -7
  293. package/src/math/Matrix4.js +3 -27
  294. package/src/math/Quaternion.js +1 -21
  295. package/src/math/Vector2.js +4 -24
  296. package/src/math/Vector3.js +7 -46
  297. package/src/math/Vector4.js +4 -24
  298. package/src/renderers/WebGLRenderer.js +84 -8
  299. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
  300. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
  301. package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
  302. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
  303. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
  304. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
  305. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
  306. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
  307. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -12
  308. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  309. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
  310. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
  311. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
  312. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
  313. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
  314. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
  315. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
  316. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
  317. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  318. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
  319. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
  320. package/src/renderers/shaders/ShaderChunk.js +4 -2
  321. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
  322. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
  323. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
  324. package/src/renderers/shaders/ShaderLib.js +31 -31
  325. package/src/renderers/shaders/UniformsLib.js +12 -11
  326. package/src/renderers/shaders/UniformsUtils.js +14 -0
  327. package/src/renderers/webgl/WebGLBackground.js +2 -2
  328. package/src/renderers/webgl/WebGLLights.js +37 -13
  329. package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
  330. package/src/renderers/webgl/WebGLProgram.js +6 -11
  331. package/src/renderers/webgl/WebGLPrograms.js +30 -26
  332. package/src/renderers/webgl/WebGLRenderLists.js +5 -4
  333. package/src/renderers/webgl/WebGLRenderStates.js +5 -4
  334. package/src/renderers/webgl/WebGLShaderCache.js +9 -6
  335. package/src/renderers/webgl/WebGLShadowMap.js +10 -15
  336. package/src/renderers/webgl/WebGLState.js +47 -0
  337. package/src/renderers/webgl/WebGLUniforms.js +4 -4
  338. package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
  339. package/src/renderers/webgl/WebGLUtils.js +2 -0
  340. package/src/renderers/webvr/WebVRManager.js +42 -9
  341. package/src/renderers/webvr/WebVRUtils.js +1 -1
  342. package/src/renderers/webxr/WebXRController.js +45 -37
  343. package/src/renderers/webxr/WebXRManager.js +58 -33
  344. package/src/scenes/Scene.js +16 -3
  345. package/src/textures/Source.js +1 -1
  346. package/src/utils.js +1 -1
  347. package/examples/js/controls/experimental/CameraControls.js +0 -1048
  348. package/examples/js/loaders/KTX2Loader.js +0 -558
  349. package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
  350. package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
  351. package/examples/jsm/package.json +0 -3
  352. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
  353. package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
@@ -258,19 +258,17 @@ class VRMLLoader extends Loader {
258
258
 
259
259
  // the visitor is created dynmaically based on the given base class
260
260
 
261
- function VRMLToASTVisitor() {
261
+ class VRMLToASTVisitor extends BaseVRMLVisitor {
262
262
 
263
- BaseVRMLVisitor.call( this );
263
+ constructor() {
264
264
 
265
- this.validateVisitor();
265
+ super();
266
266
 
267
- }
268
-
269
- VRMLToASTVisitor.prototype = Object.assign( Object.create( BaseVRMLVisitor.prototype ), {
267
+ this.validateVisitor();
270
268
 
271
- constructor: VRMLToASTVisitor,
269
+ }
272
270
 
273
- vrml: function ( ctx ) {
271
+ vrml( ctx ) {
274
272
 
275
273
  const data = {
276
274
  version: this.visit( ctx.version ),
@@ -300,15 +298,15 @@ class VRMLLoader extends Loader {
300
298
 
301
299
  return data;
302
300
 
303
- },
301
+ }
304
302
 
305
- version: function ( ctx ) {
303
+ version( ctx ) {
306
304
 
307
305
  return ctx.Version[ 0 ].image;
308
306
 
309
- },
307
+ }
310
308
 
311
- node: function ( ctx ) {
309
+ node( ctx ) {
312
310
 
313
311
  const data = {
314
312
  name: ctx.NodeName[ 0 ].image,
@@ -337,9 +335,9 @@ class VRMLLoader extends Loader {
337
335
 
338
336
  return data;
339
337
 
340
- },
338
+ }
341
339
 
342
- field: function ( ctx ) {
340
+ field( ctx ) {
343
341
 
344
342
  const data = {
345
343
  name: ctx.Identifier[ 0 ].image,
@@ -370,33 +368,33 @@ class VRMLLoader extends Loader {
370
368
 
371
369
  return data;
372
370
 
373
- },
371
+ }
374
372
 
375
- def: function ( ctx ) {
373
+ def( ctx ) {
376
374
 
377
375
  return ( ctx.Identifier || ctx.NodeName )[ 0 ].image;
378
376
 
379
- },
377
+ }
380
378
 
381
- use: function ( ctx ) {
379
+ use( ctx ) {
382
380
 
383
381
  return { USE: ( ctx.Identifier || ctx.NodeName )[ 0 ].image };
384
382
 
385
- },
383
+ }
386
384
 
387
- singleFieldValue: function ( ctx ) {
385
+ singleFieldValue( ctx ) {
388
386
 
389
387
  return processField( this, ctx );
390
388
 
391
- },
389
+ }
392
390
 
393
- multiFieldValue: function ( ctx ) {
391
+ multiFieldValue( ctx ) {
394
392
 
395
393
  return processField( this, ctx );
396
394
 
397
- },
395
+ }
398
396
 
399
- route: function ( ctx ) {
397
+ route( ctx ) {
400
398
 
401
399
  const data = {
402
400
  FROM: ctx.RouteIdentifier[ 0 ].image,
@@ -407,7 +405,7 @@ class VRMLLoader extends Loader {
407
405
 
408
406
  }
409
407
 
410
- } );
408
+ }
411
409
 
412
410
  function processField( scope, ctx ) {
413
411
 
@@ -910,7 +910,7 @@ class VTKLoader extends Loader {
910
910
 
911
911
  let arr;
912
912
 
913
- if ( Object.prototype.toString.call( section.DataArray ) === '[object Array]' ) {
913
+ if ( Array.isArray( section.DataArray ) ) {
914
914
 
915
915
  arr = section.DataArray;
916
916
 
@@ -1,14 +1,12 @@
1
- function LWO2Parser( IFFParser ) {
1
+ class LWO2Parser {
2
2
 
3
- this.IFF = IFFParser;
3
+ constructor( IFFParser ) {
4
4
 
5
- }
6
-
7
- LWO2Parser.prototype = {
5
+ this.IFF = IFFParser;
8
6
 
9
- constructor: LWO2Parser,
7
+ }
10
8
 
11
- parseBlock: function () {
9
+ parseBlock() {
12
10
 
13
11
  this.IFF.debugger.offset = this.IFF.reader.offset;
14
12
  this.IFF.debugger.closeForms();
@@ -411,6 +409,6 @@ LWO2Parser.prototype = {
411
409
 
412
410
  }
413
411
 
414
- };
412
+ }
415
413
 
416
414
  export { LWO2Parser };
@@ -1,14 +1,12 @@
1
- function LWO3Parser( IFFParser ) {
1
+ class LWO3Parser {
2
2
 
3
- this.IFF = IFFParser;
3
+ constructor( IFFParser ) {
4
4
 
5
- }
6
-
7
- LWO3Parser.prototype = {
5
+ this.IFF = IFFParser;
8
6
 
9
- constructor: LWO3Parser,
7
+ }
10
8
 
11
- parseBlock: function () {
9
+ parseBlock() {
12
10
 
13
11
  this.IFF.debugger.offset = this.IFF.reader.offset;
14
12
  this.IFF.debugger.closeForms();
@@ -370,6 +368,6 @@ LWO3Parser.prototype = {
370
368
 
371
369
  }
372
370
 
373
- };
371
+ }
374
372
 
375
373
  export { LWO3Parser };
@@ -0,0 +1,423 @@
1
+ /**
2
+ * MeshGouraudMaterial
3
+ *
4
+ * Lambert illumination model with Gouraud (per-vertex) shading
5
+ *
6
+ */
7
+
8
+ import { UniformsUtils, UniformsLib, ShaderMaterial, Color, MultiplyOperation } from 'three';
9
+
10
+ const GouraudShader = {
11
+
12
+ uniforms: UniformsUtils.merge( [
13
+ UniformsLib.common,
14
+ UniformsLib.specularmap,
15
+ UniformsLib.envmap,
16
+ UniformsLib.aomap,
17
+ UniformsLib.lightmap,
18
+ UniformsLib.emissivemap,
19
+ UniformsLib.fog,
20
+ UniformsLib.lights,
21
+ {
22
+ emissive: { value: new Color( 0x000000 ) }
23
+ }
24
+ ] ),
25
+
26
+ vertexShader: /* glsl */`
27
+
28
+ #define GOURAUD
29
+
30
+ varying vec3 vLightFront;
31
+ varying vec3 vIndirectFront;
32
+
33
+ #ifdef DOUBLE_SIDED
34
+ varying vec3 vLightBack;
35
+ varying vec3 vIndirectBack;
36
+ #endif
37
+
38
+ #include <common>
39
+ #include <uv_pars_vertex>
40
+ #include <uv2_pars_vertex>
41
+ #include <envmap_pars_vertex>
42
+ #include <bsdfs>
43
+ #include <lights_pars_begin>
44
+ #include <color_pars_vertex>
45
+ #include <fog_pars_vertex>
46
+ #include <morphtarget_pars_vertex>
47
+ #include <skinning_pars_vertex>
48
+ #include <shadowmap_pars_vertex>
49
+ #include <logdepthbuf_pars_vertex>
50
+ #include <clipping_planes_pars_vertex>
51
+
52
+ void main() {
53
+
54
+ #include <uv_vertex>
55
+ #include <uv2_vertex>
56
+ #include <color_vertex>
57
+ #include <morphcolor_vertex>
58
+
59
+ #include <beginnormal_vertex>
60
+ #include <morphnormal_vertex>
61
+ #include <skinbase_vertex>
62
+ #include <skinnormal_vertex>
63
+ #include <defaultnormal_vertex>
64
+
65
+ #include <begin_vertex>
66
+ #include <morphtarget_vertex>
67
+ #include <skinning_vertex>
68
+ #include <project_vertex>
69
+ #include <logdepthbuf_vertex>
70
+ #include <clipping_planes_vertex>
71
+
72
+ #include <worldpos_vertex>
73
+ #include <envmap_vertex>
74
+
75
+ // inlining legacy <lights_lambert_vertex>
76
+
77
+ vec3 diffuse = vec3( 1.0 );
78
+
79
+ GeometricContext geometry;
80
+ geometry.position = mvPosition.xyz;
81
+ geometry.normal = normalize( transformedNormal );
82
+ geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
83
+
84
+ GeometricContext backGeometry;
85
+ backGeometry.position = geometry.position;
86
+ backGeometry.normal = -geometry.normal;
87
+ backGeometry.viewDir = geometry.viewDir;
88
+
89
+ vLightFront = vec3( 0.0 );
90
+ vIndirectFront = vec3( 0.0 );
91
+ #ifdef DOUBLE_SIDED
92
+ vLightBack = vec3( 0.0 );
93
+ vIndirectBack = vec3( 0.0 );
94
+ #endif
95
+
96
+ IncidentLight directLight;
97
+ float dotNL;
98
+ vec3 directLightColor_Diffuse;
99
+
100
+ vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
101
+
102
+ vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
103
+
104
+ #ifdef DOUBLE_SIDED
105
+
106
+ vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
107
+
108
+ vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
109
+
110
+ #endif
111
+
112
+ #if NUM_POINT_LIGHTS > 0
113
+
114
+ #pragma unroll_loop_start
115
+ for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
116
+
117
+ getPointLightInfo( pointLights[ i ], geometry, directLight );
118
+
119
+ dotNL = dot( geometry.normal, directLight.direction );
120
+ directLightColor_Diffuse = directLight.color;
121
+
122
+ vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
123
+
124
+ #ifdef DOUBLE_SIDED
125
+
126
+ vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
127
+
128
+ #endif
129
+
130
+ }
131
+ #pragma unroll_loop_end
132
+
133
+ #endif
134
+
135
+ #if NUM_SPOT_LIGHTS > 0
136
+
137
+ #pragma unroll_loop_start
138
+ for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
139
+
140
+ getSpotLightInfo( spotLights[ i ], geometry, directLight );
141
+
142
+ dotNL = dot( geometry.normal, directLight.direction );
143
+ directLightColor_Diffuse = directLight.color;
144
+
145
+ vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
146
+
147
+ #ifdef DOUBLE_SIDED
148
+
149
+ vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
150
+
151
+ #endif
152
+ }
153
+ #pragma unroll_loop_end
154
+
155
+ #endif
156
+
157
+ #if NUM_DIR_LIGHTS > 0
158
+
159
+ #pragma unroll_loop_start
160
+ for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
161
+
162
+ getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
163
+
164
+ dotNL = dot( geometry.normal, directLight.direction );
165
+ directLightColor_Diffuse = directLight.color;
166
+
167
+ vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
168
+
169
+ #ifdef DOUBLE_SIDED
170
+
171
+ vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
172
+
173
+ #endif
174
+
175
+ }
176
+ #pragma unroll_loop_end
177
+
178
+ #endif
179
+
180
+ #if NUM_HEMI_LIGHTS > 0
181
+
182
+ #pragma unroll_loop_start
183
+ for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
184
+
185
+ vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
186
+
187
+ #ifdef DOUBLE_SIDED
188
+
189
+ vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
190
+
191
+ #endif
192
+
193
+ }
194
+ #pragma unroll_loop_end
195
+
196
+ #endif
197
+
198
+ #include <shadowmap_vertex>
199
+ #include <fog_vertex>
200
+
201
+ }`,
202
+
203
+ fragmentShader: /* glsl */`
204
+
205
+ #define GOURAUD
206
+
207
+ uniform vec3 diffuse;
208
+ uniform vec3 emissive;
209
+ uniform float opacity;
210
+
211
+ varying vec3 vLightFront;
212
+ varying vec3 vIndirectFront;
213
+
214
+ #ifdef DOUBLE_SIDED
215
+ varying vec3 vLightBack;
216
+ varying vec3 vIndirectBack;
217
+ #endif
218
+
219
+ #include <common>
220
+ #include <packing>
221
+ #include <dithering_pars_fragment>
222
+ #include <color_pars_fragment>
223
+ #include <uv_pars_fragment>
224
+ #include <uv2_pars_fragment>
225
+ #include <map_pars_fragment>
226
+ #include <alphamap_pars_fragment>
227
+ #include <alphatest_pars_fragment>
228
+ #include <aomap_pars_fragment>
229
+ #include <lightmap_pars_fragment>
230
+ #include <emissivemap_pars_fragment>
231
+ #include <envmap_common_pars_fragment>
232
+ #include <envmap_pars_fragment>
233
+ #include <bsdfs>
234
+ #include <lights_pars_begin>
235
+ #include <fog_pars_fragment>
236
+ #include <shadowmap_pars_fragment>
237
+ #include <shadowmask_pars_fragment>
238
+ #include <specularmap_pars_fragment>
239
+ #include <logdepthbuf_pars_fragment>
240
+ #include <clipping_planes_pars_fragment>
241
+
242
+ void main() {
243
+
244
+ #include <clipping_planes_fragment>
245
+
246
+ vec4 diffuseColor = vec4( diffuse, opacity );
247
+ ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
248
+ vec3 totalEmissiveRadiance = emissive;
249
+
250
+ #include <logdepthbuf_fragment>
251
+ #include <map_fragment>
252
+ #include <color_fragment>
253
+ #include <alphamap_fragment>
254
+ #include <alphatest_fragment>
255
+ #include <specularmap_fragment>
256
+ #include <emissivemap_fragment>
257
+
258
+ // accumulation
259
+
260
+ #ifdef DOUBLE_SIDED
261
+
262
+ reflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;
263
+
264
+ #else
265
+
266
+ reflectedLight.indirectDiffuse += vIndirectFront;
267
+
268
+ #endif
269
+
270
+ #include <lightmap_fragment>
271
+
272
+ reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );
273
+
274
+ #ifdef DOUBLE_SIDED
275
+
276
+ reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;
277
+
278
+ #else
279
+
280
+ reflectedLight.directDiffuse = vLightFront;
281
+
282
+ #endif
283
+
284
+ reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();
285
+
286
+ // modulation
287
+
288
+ #include <aomap_fragment>
289
+
290
+ vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
291
+
292
+ #include <envmap_fragment>
293
+
294
+ #include <output_fragment>
295
+ #include <tonemapping_fragment>
296
+ #include <encodings_fragment>
297
+ #include <fog_fragment>
298
+ #include <premultiplied_alpha_fragment>
299
+ #include <dithering_fragment>
300
+
301
+ }`
302
+
303
+ };
304
+
305
+ //
306
+
307
+ class MeshGouraudMaterial extends ShaderMaterial {
308
+
309
+ constructor( parameters ) {
310
+
311
+ super();
312
+
313
+ this.isMeshGouraudMaterial = true;
314
+
315
+ this.type = 'MeshGouraudMaterial';
316
+
317
+ //this.color = new THREE.Color( 0xffffff ); // diffuse
318
+
319
+ //this.map = null;
320
+
321
+ //this.lightMap = null;
322
+ //this.lightMapIntensity = 1.0;
323
+
324
+ //this.aoMap = null;
325
+ //this.aoMapIntensity = 1.0;
326
+
327
+ //this.emissive = new THREE.Color( 0x000000 );
328
+ //this.emissiveIntensity = 1.0;
329
+ //this.emissiveMap = null;
330
+
331
+ //this.specularMap = null;
332
+
333
+ //this.alphaMap = null;
334
+
335
+ //this.envMap = null;
336
+ this.combine = MultiplyOperation; // combine has no uniform
337
+ //this.reflectivity = 1;
338
+ //this.refractionRatio = 0.98;
339
+
340
+ this.fog = false; // set to use scene fog
341
+ this.lights = true; // set to use scene lights
342
+ this.clipping = false; // set to use user-defined clipping planes
343
+
344
+ const shader = GouraudShader;
345
+
346
+ this.defines = Object.assign( {}, shader.defines );
347
+ this.uniforms = UniformsUtils.clone( shader.uniforms );
348
+ this.vertexShader = shader.vertexShader;
349
+ this.fragmentShader = shader.fragmentShader;
350
+
351
+ const exposePropertyNames = [
352
+ 'map', 'lightMap', 'lightMapIntensity', 'aoMap', 'aoMapIntensity',
353
+ 'emissive', 'emissiveIntensity', 'emissiveMap', 'specularMap', 'alphaMap',
354
+ 'envMap', 'reflectivity', 'refractionRatio', 'opacity', 'diffuse'
355
+ ];
356
+
357
+ for ( const propertyName of exposePropertyNames ) {
358
+
359
+ Object.defineProperty( this, propertyName, {
360
+
361
+ get: function () {
362
+
363
+ return this.uniforms[ propertyName ].value;
364
+
365
+ },
366
+
367
+ set: function ( value ) {
368
+
369
+ this.uniforms[ propertyName ].value = value;
370
+
371
+ }
372
+
373
+ } );
374
+
375
+ }
376
+
377
+ Object.defineProperty( this, 'color', Object.getOwnPropertyDescriptor( this, 'diffuse' ) );
378
+
379
+ this.setValues( parameters );
380
+
381
+ }
382
+
383
+ copy( source ) {
384
+
385
+ super.copy( source );
386
+
387
+ this.color.copy( source.color );
388
+
389
+ this.map = source.map;
390
+
391
+ this.lightMap = source.lightMap;
392
+ this.lightMapIntensity = source.lightMapIntensity;
393
+
394
+ this.aoMap = source.aoMap;
395
+ this.aoMapIntensity = source.aoMapIntensity;
396
+
397
+ this.emissive.copy( source.emissive );
398
+ this.emissiveMap = source.emissiveMap;
399
+ this.emissiveIntensity = source.emissiveIntensity;
400
+
401
+ this.specularMap = source.specularMap;
402
+
403
+ this.alphaMap = source.alphaMap;
404
+
405
+ this.envMap = source.envMap;
406
+ this.combine = source.combine;
407
+ this.reflectivity = source.reflectivity;
408
+ this.refractionRatio = source.refractionRatio;
409
+
410
+ this.wireframe = source.wireframe;
411
+ this.wireframeLinewidth = source.wireframeLinewidth;
412
+ this.wireframeLinecap = source.wireframeLinecap;
413
+ this.wireframeLinejoin = source.wireframeLinejoin;
414
+
415
+ this.fog = source.fog;
416
+
417
+ return this;
418
+
419
+ }
420
+
421
+ }
422
+
423
+ export { MeshGouraudMaterial };
@@ -1,6 +1,4 @@
1
- import {
2
- MathUtils
3
- } from 'three';
1
+ import { MathUtils } from 'three';
4
2
 
5
3
  const _hsl = {};
6
4
 
@@ -20,13 +18,6 @@ class ColorConverter {
20
18
 
21
19
  static getHSV( color, target ) {
22
20
 
23
- if ( target === undefined ) {
24
-
25
- console.warn( 'THREE.ColorConverter: .getHSV() target is now required' );
26
- target = { h: 0, s: 0, l: 0 };
27
-
28
- }
29
-
30
21
  color.getHSL( _hsl );
31
22
 
32
23
  // based on https://gist.github.com/xpansive/1337890#file-index-js
@@ -40,45 +31,6 @@ class ColorConverter {
40
31
 
41
32
  }
42
33
 
43
- // where c, m, y, k is between 0 and 1
44
-
45
- static setCMYK( color, c, m, y, k ) {
46
-
47
- const r = ( 1 - c ) * ( 1 - k );
48
- const g = ( 1 - m ) * ( 1 - k );
49
- const b = ( 1 - y ) * ( 1 - k );
50
-
51
- return color.setRGB( r, g, b );
52
-
53
- }
54
-
55
- static getCMYK( color, target ) {
56
-
57
- if ( target === undefined ) {
58
-
59
- console.warn( 'THREE.ColorConverter: .getCMYK() target is now required' );
60
- target = { c: 0, m: 0, y: 0, k: 0 };
61
-
62
- }
63
-
64
- const r = color.r;
65
- const g = color.g;
66
- const b = color.b;
67
-
68
- const k = 1 - Math.max( r, g, b );
69
- const c = ( 1 - r - k ) / ( 1 - k );
70
- const m = ( 1 - g - k ) / ( 1 - k );
71
- const y = ( 1 - b - k ) / ( 1 - k );
72
-
73
- target.c = c;
74
- target.m = m;
75
- target.y = y;
76
- target.k = k;
77
-
78
- return target;
79
-
80
- }
81
-
82
34
  }
83
35
 
84
36
  export { ColorConverter };