super-three 0.147.0 → 0.152.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 (757) hide show
  1. package/LICENSE +1 -1
  2. package/build/three.cjs +36408 -21117
  3. package/build/three.js +37007 -21715
  4. package/build/three.min.js +3 -2
  5. package/build/three.module.js +6387 -5510
  6. package/build/three.module.min.js +6 -0
  7. package/examples/jsm/animation/AnimationClipCreator.js +5 -3
  8. package/examples/jsm/capabilities/WebGPU.js +2 -4
  9. package/examples/jsm/controls/ArcballControls.js +1828 -1821
  10. package/examples/jsm/controls/MapControls.js +28 -0
  11. package/examples/jsm/controls/OrbitControls.js +20 -45
  12. package/examples/jsm/controls/PointerLockControls.js +70 -65
  13. package/examples/jsm/controls/TrackballControls.js +18 -4
  14. package/examples/jsm/controls/TransformControls.js +0 -1
  15. package/examples/jsm/csm/CSM.js +11 -3
  16. package/examples/jsm/csm/CSMShader.js +7 -6
  17. package/examples/jsm/effects/AsciiEffect.js +3 -6
  18. package/examples/jsm/effects/OutlineEffect.js +1 -15
  19. package/examples/jsm/exporters/ColladaExporter.js +26 -14
  20. package/examples/jsm/exporters/DRACOExporter.js +53 -11
  21. package/examples/jsm/exporters/EXRExporter.js +3 -9
  22. package/examples/jsm/exporters/GLTFExporter.js +524 -111
  23. package/examples/jsm/exporters/KTX2Exporter.js +34 -23
  24. package/examples/jsm/exporters/MMDExporter.js +1 -1
  25. package/examples/jsm/exporters/PLYExporter.js +8 -1
  26. package/examples/jsm/exporters/STLExporter.js +8 -4
  27. package/examples/jsm/exporters/USDZExporter.js +22 -3
  28. package/examples/jsm/geometries/ConvexGeometry.js +0 -6
  29. package/examples/jsm/geometries/ParametricGeometry.js +10 -0
  30. package/examples/jsm/helpers/OctreeHelper.js +1 -0
  31. package/examples/jsm/helpers/ViewHelper.js +70 -56
  32. package/examples/jsm/interactive/HTMLMesh.js +16 -3
  33. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  34. package/examples/{js → jsm}/libs/basis/README.md +4 -4
  35. package/examples/jsm/libs/draco/draco_decoder.js +34 -0
  36. package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  37. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  38. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  39. package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  40. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  41. package/examples/jsm/libs/lil-gui.module.min.js +2 -2
  42. package/examples/jsm/libs/tween.module.js +803 -0
  43. package/examples/jsm/lights/IESSpotLight.js +25 -0
  44. package/examples/jsm/lights/LightProbeGenerator.js +11 -9
  45. package/examples/jsm/lines/LineSegments2.js +12 -10
  46. package/examples/jsm/loaders/3DMLoader.js +8 -5
  47. package/examples/jsm/loaders/3MFLoader.js +12 -11
  48. package/examples/jsm/loaders/AMFLoader.js +2 -3
  49. package/examples/jsm/loaders/BVHLoader.js +2 -2
  50. package/examples/jsm/loaders/ColladaLoader.js +15 -16
  51. package/examples/jsm/loaders/DRACOLoader.js +67 -18
  52. package/examples/jsm/loaders/EXRLoader.js +23 -24
  53. package/examples/jsm/loaders/FBXLoader.js +32 -50
  54. package/examples/jsm/loaders/GCodeLoader.js +1 -2
  55. package/examples/jsm/loaders/GLTFLoader.js +249 -215
  56. package/examples/jsm/loaders/HDRCubeTextureLoader.js +4 -4
  57. package/examples/jsm/loaders/IESLoader.js +337 -0
  58. package/examples/jsm/loaders/KMZLoader.js +4 -4
  59. package/examples/jsm/loaders/KTX2Loader.js +41 -24
  60. package/examples/jsm/loaders/LDrawLoader.js +20 -18
  61. package/examples/jsm/loaders/LWOLoader.js +12 -29
  62. package/examples/jsm/loaders/LottieLoader.js +3 -1
  63. package/examples/jsm/loaders/MMDLoader.js +17 -13
  64. package/examples/jsm/loaders/MTLLoader.js +2 -2
  65. package/examples/jsm/loaders/MaterialXLoader.js +9 -3
  66. package/examples/jsm/loaders/NRRDLoader.js +33 -5
  67. package/examples/jsm/loaders/OBJLoader.js +1 -1
  68. package/examples/jsm/loaders/PCDLoader.js +1 -2
  69. package/examples/jsm/loaders/PLYLoader.js +238 -105
  70. package/examples/jsm/loaders/RGBELoader.js +3 -3
  71. package/examples/jsm/loaders/STLLoader.js +1 -2
  72. package/examples/jsm/loaders/SVGLoader.js +36 -27
  73. package/examples/jsm/loaders/TTFLoader.js +1 -8
  74. package/examples/jsm/loaders/TiltLoader.js +13 -7
  75. package/examples/jsm/loaders/USDZLoader.js +5 -5
  76. package/examples/jsm/loaders/VOXLoader.js +8 -2
  77. package/examples/jsm/loaders/VRMLLoader.js +5 -13
  78. package/examples/jsm/loaders/VTKLoader.js +7 -6
  79. package/examples/jsm/loaders/lwo/IFFParser.js +19 -19
  80. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -3
  81. package/examples/jsm/math/MeshSurfaceSampler.js +0 -6
  82. package/examples/jsm/misc/ConvexObjectBreaker.js +2 -8
  83. package/examples/jsm/misc/GPUComputationRenderer.js +5 -5
  84. package/examples/jsm/misc/MD2Character.js +2 -2
  85. package/examples/jsm/misc/MD2CharacterComplex.js +2 -2
  86. package/examples/jsm/misc/ProgressiveLightMap.js +12 -10
  87. package/examples/jsm/misc/RollerCoaster.js +7 -1
  88. package/examples/jsm/misc/Volume.js +20 -5
  89. package/examples/jsm/modifiers/CurveModifier.js +1 -0
  90. package/examples/jsm/modifiers/TessellateModifier.js +19 -19
  91. package/examples/jsm/nodes/Nodes.js +143 -335
  92. package/examples/jsm/nodes/accessors/BitangentNode.js +43 -16
  93. package/examples/jsm/nodes/accessors/BufferNode.js +6 -0
  94. package/examples/jsm/nodes/accessors/CameraNode.js +12 -2
  95. package/examples/jsm/nodes/accessors/CubeTextureNode.js +27 -33
  96. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +58 -0
  97. package/examples/jsm/nodes/accessors/InstanceNode.js +17 -21
  98. package/examples/jsm/nodes/accessors/MaterialNode.js +155 -38
  99. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +16 -0
  100. package/examples/jsm/nodes/accessors/ModelNode.js +11 -0
  101. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +12 -8
  102. package/examples/jsm/nodes/accessors/NormalNode.js +35 -19
  103. package/examples/jsm/nodes/accessors/Object3DNode.js +32 -12
  104. package/examples/jsm/nodes/accessors/PointUVNode.js +6 -1
  105. package/examples/jsm/nodes/accessors/PositionNode.js +38 -23
  106. package/examples/jsm/nodes/accessors/ReferenceNode.js +21 -14
  107. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +11 -7
  108. package/examples/jsm/nodes/accessors/SkinningNode.js +43 -40
  109. package/examples/jsm/nodes/accessors/StorageBufferNode.js +6 -0
  110. package/examples/jsm/nodes/accessors/TangentNode.js +28 -20
  111. package/examples/jsm/nodes/accessors/TextureNode.js +80 -12
  112. package/examples/jsm/nodes/accessors/UVNode.js +6 -0
  113. package/examples/jsm/nodes/accessors/UserDataNode.js +6 -0
  114. package/examples/jsm/nodes/{core → code}/CodeNode.js +27 -2
  115. package/examples/jsm/nodes/code/ExpressionNode.js +37 -0
  116. package/examples/jsm/nodes/{core → code}/FunctionCallNode.js +15 -1
  117. package/examples/jsm/nodes/{core → code}/FunctionNode.js +8 -7
  118. package/examples/jsm/nodes/code/ScriptableNode.js +488 -0
  119. package/examples/jsm/nodes/code/ScriptableValueNode.js +167 -0
  120. package/examples/jsm/nodes/core/ArrayUniformNode.js +3 -0
  121. package/examples/jsm/nodes/core/AttributeNode.js +16 -8
  122. package/examples/jsm/nodes/core/BypassNode.js +9 -2
  123. package/examples/jsm/nodes/core/CacheNode.js +46 -0
  124. package/examples/jsm/nodes/core/ConstNode.js +3 -0
  125. package/examples/jsm/nodes/core/ContextNode.js +8 -1
  126. package/examples/jsm/nodes/core/InputNode.js +26 -5
  127. package/examples/jsm/nodes/core/InstanceIndexNode.js +6 -1
  128. package/examples/jsm/nodes/core/LightingModel.js +16 -0
  129. package/examples/jsm/nodes/core/Node.js +128 -34
  130. package/examples/jsm/nodes/core/NodeBuilder.js +209 -118
  131. package/examples/jsm/nodes/core/NodeCache.js +26 -0
  132. package/examples/jsm/nodes/core/NodeFrame.js +56 -5
  133. package/examples/jsm/nodes/core/NodeUtils.js +105 -28
  134. package/examples/jsm/nodes/core/PropertyNode.js +19 -2
  135. package/examples/jsm/nodes/core/StackNode.js +92 -0
  136. package/examples/jsm/nodes/core/TempNode.js +11 -3
  137. package/examples/jsm/nodes/core/UniformNode.js +15 -0
  138. package/examples/jsm/nodes/core/VarNode.js +21 -29
  139. package/examples/jsm/nodes/core/VaryingNode.js +15 -2
  140. package/examples/jsm/nodes/core/constants.js +6 -0
  141. package/examples/jsm/nodes/display/BlendModeNode.js +25 -11
  142. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +30 -14
  143. package/examples/jsm/nodes/display/ColorSpaceNode.js +39 -27
  144. package/examples/jsm/nodes/display/FrontFacingNode.js +7 -1
  145. package/examples/jsm/nodes/display/NormalMapNode.js +31 -18
  146. package/examples/jsm/nodes/display/PosterizeNode.js +10 -3
  147. package/examples/jsm/nodes/display/ToneMappingNode.js +92 -11
  148. package/examples/jsm/nodes/display/ViewportNode.js +27 -18
  149. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +30 -0
  150. package/examples/jsm/nodes/display/ViewportTextureNode.js +61 -0
  151. package/examples/jsm/nodes/fog/FogExp2Node.js +35 -0
  152. package/examples/jsm/nodes/fog/FogNode.js +12 -6
  153. package/examples/jsm/nodes/fog/FogRangeNode.js +12 -5
  154. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +30 -0
  155. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -13
  156. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  157. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -6
  158. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +4 -4
  159. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +3 -3
  160. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +7 -5
  161. package/examples/jsm/nodes/functions/PhongLightingModel.js +28 -0
  162. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +33 -36
  163. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +4 -3
  164. package/examples/jsm/nodes/functions/material/getRoughness.js +4 -4
  165. package/examples/jsm/nodes/geometry/RangeNode.js +32 -19
  166. package/examples/jsm/nodes/gpgpu/ComputeNode.js +9 -2
  167. package/examples/jsm/nodes/lighting/AONode.js +5 -3
  168. package/examples/jsm/nodes/lighting/AmbientLightNode.js +27 -0
  169. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +112 -6
  170. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +43 -0
  171. package/examples/jsm/nodes/lighting/EnvironmentNode.js +104 -34
  172. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +15 -10
  173. package/examples/jsm/nodes/lighting/IESSpotLightNode.js +39 -0
  174. package/examples/jsm/nodes/lighting/LightNode.js +57 -0
  175. package/examples/jsm/nodes/lighting/LightUtils.js +17 -0
  176. package/examples/jsm/nodes/lighting/LightingContextNode.js +30 -8
  177. package/examples/jsm/nodes/lighting/LightingNode.js +3 -1
  178. package/examples/jsm/nodes/lighting/LightsNode.js +18 -10
  179. package/examples/jsm/nodes/lighting/PointLightNode.js +71 -0
  180. package/examples/jsm/nodes/lighting/SpotLightNode.js +92 -0
  181. package/examples/jsm/nodes/loaders/NodeLoader.js +5 -4
  182. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +4 -20
  183. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +6 -9
  184. package/examples/jsm/nodes/materials/Materials.js +11 -55
  185. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +5 -11
  186. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +48 -0
  187. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +74 -0
  188. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
  189. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +21 -96
  190. package/examples/jsm/nodes/materials/NodeMaterial.js +244 -61
  191. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +7 -1
  192. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +29 -25
  193. package/examples/jsm/nodes/materialx/MaterialXNodes.js +31 -22
  194. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +1 -1
  195. package/examples/jsm/nodes/materialx/lib/mx_noise.js +2 -1
  196. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +2 -1
  197. package/examples/jsm/nodes/math/CondNode.js +43 -17
  198. package/examples/jsm/nodes/math/MathNode.js +178 -73
  199. package/examples/jsm/nodes/math/OperatorNode.js +52 -2
  200. package/examples/jsm/nodes/procedural/CheckerNode.js +14 -6
  201. package/examples/jsm/nodes/shadernode/ShaderNode.js +158 -42
  202. package/examples/jsm/nodes/utils/ArrayElementNode.js +4 -2
  203. package/examples/jsm/nodes/utils/ConvertNode.js +19 -1
  204. package/examples/jsm/nodes/utils/DiscardNode.js +26 -0
  205. package/examples/jsm/nodes/utils/EquirectUVNode.js +11 -4
  206. package/examples/jsm/nodes/utils/JoinNode.js +4 -1
  207. package/examples/jsm/nodes/utils/MatcapUVNode.js +11 -4
  208. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +18 -5
  209. package/examples/jsm/nodes/utils/OscNode.js +21 -14
  210. package/examples/jsm/nodes/utils/PackingNode.js +55 -0
  211. package/examples/jsm/nodes/utils/RemapNode.js +13 -5
  212. package/examples/jsm/nodes/utils/RotateUVNode.js +18 -7
  213. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +37 -0
  214. package/examples/jsm/nodes/utils/SplitNode.js +7 -5
  215. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +15 -30
  216. package/examples/jsm/nodes/utils/TimerNode.js +16 -6
  217. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +21 -10
  218. package/examples/jsm/objects/GroundProjectedSkybox.js +172 -0
  219. package/examples/jsm/objects/Reflector.js +4 -4
  220. package/examples/jsm/objects/Refractor.js +4 -4
  221. package/examples/jsm/objects/ShadowMesh.js +3 -3
  222. package/examples/jsm/physics/AmmoPhysics.js +27 -28
  223. package/examples/jsm/physics/{OimoPhysics.js → RapierPhysics.js} +59 -51
  224. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +0 -8
  225. package/examples/jsm/postprocessing/AfterimagePass.js +0 -2
  226. package/examples/jsm/postprocessing/BloomPass.js +0 -2
  227. package/examples/jsm/postprocessing/BokehPass.js +0 -6
  228. package/examples/jsm/postprocessing/DotScreenPass.js +0 -2
  229. package/examples/jsm/postprocessing/EffectComposer.js +3 -94
  230. package/examples/jsm/postprocessing/FilmPass.js +0 -2
  231. package/examples/jsm/postprocessing/GlitchPass.js +0 -2
  232. package/examples/jsm/postprocessing/HalftonePass.js +0 -6
  233. package/examples/jsm/postprocessing/OutlinePass.js +0 -1
  234. package/examples/jsm/postprocessing/Pass.js +2 -0
  235. package/examples/jsm/postprocessing/SAOPass.js +0 -24
  236. package/examples/jsm/postprocessing/SMAAPass.js +0 -6
  237. package/examples/jsm/postprocessing/SSAARenderPass.js +13 -5
  238. package/examples/jsm/postprocessing/SSAOPass.js +0 -12
  239. package/examples/jsm/postprocessing/SSRPass.js +0 -6
  240. package/examples/jsm/postprocessing/SavePass.js +0 -2
  241. package/examples/jsm/postprocessing/TexturePass.js +0 -2
  242. package/examples/jsm/postprocessing/UnrealBloomPass.js +0 -8
  243. package/examples/jsm/renderers/CSS2DRenderer.js +6 -1
  244. package/examples/jsm/renderers/CSS3DRenderer.js +27 -5
  245. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +35 -31
  246. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +2 -2
  247. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +14 -4
  248. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +72 -55
  249. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +34 -19
  250. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +1 -1
  251. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +158 -26
  252. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +1 -1
  253. package/examples/jsm/renderers/webgpu/WebGPUProperties.js +6 -0
  254. package/examples/jsm/renderers/webgpu/WebGPURenderLists.js +30 -14
  255. package/examples/jsm/renderers/webgpu/WebGPURenderObject.js +40 -0
  256. package/examples/jsm/renderers/webgpu/WebGPURenderObjects.js +50 -0
  257. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +49 -111
  258. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +40 -62
  259. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +14 -26
  260. package/examples/jsm/renderers/webgpu/WebGPURenderTarget.js +15 -0
  261. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +244 -100
  262. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +3 -1
  263. package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +2 -4
  264. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +2 -0
  265. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +366 -110
  266. package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +1 -1
  267. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +13 -6
  268. package/examples/jsm/renderers/webgpu/WebGPUWeakMap.js +83 -0
  269. package/examples/jsm/renderers/webgpu/constants.js +68 -6
  270. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +74 -57
  271. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +241 -22
  272. package/examples/jsm/shaders/MMDToonShader.js +15 -4
  273. package/examples/jsm/shaders/RGBShiftShader.js +2 -2
  274. package/examples/jsm/shaders/VelocityShader.js +1 -1
  275. package/examples/jsm/utils/BufferGeometryUtils.js +37 -35
  276. package/examples/jsm/utils/LDrawUtils.js +4 -4
  277. package/examples/jsm/utils/PackedPhongMaterial.js +5 -78
  278. package/examples/jsm/utils/SceneUtils.js +8 -4
  279. package/examples/jsm/utils/SkeletonUtils.js +27 -210
  280. package/examples/jsm/webxr/VRButton.js +1 -2
  281. package/examples/jsm/webxr/XRButton.js +198 -0
  282. package/package.json +33 -87
  283. package/src/Three.Legacy.js +19 -110
  284. package/src/Three.js +4 -3
  285. package/src/animation/AnimationUtils.js +13 -1
  286. package/src/animation/PropertyBinding.js +2 -2
  287. package/src/audio/Audio.js +7 -2
  288. package/src/constants.js +10 -2
  289. package/src/core/BufferAttribute.js +147 -8
  290. package/src/core/BufferGeometry.js +3 -9
  291. package/src/core/GLBufferAttribute.js +2 -0
  292. package/src/core/InterleavedBufferAttribute.js +1 -1
  293. package/src/core/Object3D.js +36 -7
  294. package/src/extras/DataUtils.js +7 -1
  295. package/src/extras/ImageUtils.js +2 -2
  296. package/src/extras/PMREMGenerator.js +5 -5
  297. package/src/extras/curves/LineCurve.js +6 -4
  298. package/src/extras/curves/LineCurve3.js +13 -0
  299. package/src/geometries/BoxGeometry.js +10 -0
  300. package/src/geometries/CircleGeometry.js +11 -1
  301. package/src/geometries/ConeGeometry.js +1 -1
  302. package/src/geometries/CylinderGeometry.js +11 -1
  303. package/src/geometries/EdgesGeometry.js +10 -0
  304. package/src/geometries/ExtrudeGeometry.js +11 -1
  305. package/src/geometries/LatheGeometry.js +10 -0
  306. package/src/geometries/PlaneGeometry.js +10 -0
  307. package/src/geometries/PolyhedronGeometry.js +10 -0
  308. package/src/geometries/RingGeometry.js +11 -1
  309. package/src/geometries/ShapeGeometry.js +10 -0
  310. package/src/geometries/SphereGeometry.js +12 -2
  311. package/src/geometries/TorusGeometry.js +11 -1
  312. package/src/geometries/TorusKnotGeometry.js +10 -0
  313. package/src/geometries/TubeGeometry.js +10 -0
  314. package/src/geometries/WireframeGeometry.js +10 -0
  315. package/src/helpers/Box3Helper.js +1 -2
  316. package/src/lights/DirectionalLight.js +1 -1
  317. package/src/lights/HemisphereLight.js +1 -1
  318. package/src/lights/SpotLight.js +1 -1
  319. package/src/loaders/AudioLoader.js +14 -8
  320. package/src/loaders/DataTextureLoader.js +5 -1
  321. package/src/loaders/MaterialLoader.js +4 -0
  322. package/src/loaders/ObjectLoader.js +9 -2
  323. package/src/materials/LineBasicMaterial.js +4 -0
  324. package/src/materials/Material.js +6 -3
  325. package/src/materials/MeshDistanceMaterial.js +0 -9
  326. package/src/materials/ShaderMaterial.js +6 -1
  327. package/src/math/Box2.js +3 -2
  328. package/src/math/Box3.js +49 -64
  329. package/src/math/Color.js +72 -55
  330. package/src/math/ColorManagement.js +75 -16
  331. package/src/math/Euler.js +2 -11
  332. package/src/math/Frustum.js +13 -3
  333. package/src/math/MathUtils.js +27 -1
  334. package/src/math/Plane.js +2 -2
  335. package/src/math/Quaternion.js +6 -0
  336. package/src/math/Ray.js +7 -7
  337. package/src/math/Triangle.js +37 -7
  338. package/src/math/Vector2.js +16 -0
  339. package/src/math/Vector3.js +10 -0
  340. package/src/math/interpolants/CubicInterpolant.js +1 -2
  341. package/src/objects/InstancedMesh.js +79 -1
  342. package/src/objects/Mesh.js +101 -73
  343. package/src/objects/SkinnedMesh.js +95 -8
  344. package/src/objects/Sprite.js +1 -1
  345. package/src/renderers/WebGLCubeRenderTarget.js +12 -3
  346. package/src/renderers/WebGLMultipleRenderTargets.js +4 -2
  347. package/src/renderers/WebGLRenderTarget.js +14 -2
  348. package/src/renderers/WebGLRenderer.js +1340 -1258
  349. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +1 -1
  350. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
  351. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +0 -271
  352. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +5 -5
  353. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +2 -10
  354. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +5 -5
  355. package/src/renderers/shaders/ShaderChunk/common.glsl.js +32 -0
  356. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +1 -1
  357. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +1 -1
  358. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +1 -1
  359. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
  360. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  361. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
  362. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -11
  363. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +13 -13
  364. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +256 -10
  365. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +1 -11
  366. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +9 -1
  367. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +10 -2
  368. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +1 -1
  369. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +32 -10
  370. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -13
  371. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +7 -7
  372. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +11 -5
  373. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +1 -1
  374. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +4 -11
  375. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +2 -2
  376. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +39 -34
  377. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +1 -1
  378. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
  379. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +91 -11
  380. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +108 -1
  381. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +128 -6
  382. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +111 -1
  383. package/src/renderers/shaders/ShaderChunk.js +0 -6
  384. package/src/renderers/shaders/ShaderLib/background.glsl.js +0 -8
  385. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +5 -0
  386. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -4
  387. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -3
  388. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +3 -3
  389. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -3
  390. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +8 -12
  391. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -3
  392. package/src/renderers/shaders/ShaderLib/points.glsl.js +13 -0
  393. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +5 -0
  394. package/src/renderers/shaders/ShaderLib.js +15 -4
  395. package/src/renderers/shaders/UniformsLib.js +25 -15
  396. package/src/renderers/shaders/UniformsUtils.js +12 -3
  397. package/src/renderers/webgl/WebGLBackground.js +23 -12
  398. package/src/renderers/webgl/WebGLCapabilities.js +1 -2
  399. package/src/renderers/webgl/WebGLClipping.js +7 -3
  400. package/src/renderers/webgl/WebGLLights.js +2 -2
  401. package/src/renderers/webgl/WebGLMaterials.js +105 -234
  402. package/src/renderers/webgl/WebGLMorphtargets.js +1 -1
  403. package/src/renderers/webgl/WebGLProgram.js +111 -48
  404. package/src/renderers/webgl/WebGLPrograms.js +200 -129
  405. package/src/renderers/webgl/WebGLRenderStates.js +2 -2
  406. package/src/renderers/webgl/WebGLShadowMap.js +40 -27
  407. package/src/renderers/webgl/WebGLState.js +23 -9
  408. package/src/renderers/webgl/WebGLTextures.js +21 -19
  409. package/src/renderers/webgl/WebGLUniformsGroups.js +74 -33
  410. package/src/renderers/webgl/WebGLUtils.js +41 -29
  411. package/src/renderers/webxr/WebXRController.js +3 -0
  412. package/src/renderers/webxr/WebXRManager.js +70 -48
  413. package/src/scenes/Scene.js +4 -6
  414. package/src/textures/CompressedTexture.js +2 -2
  415. package/src/textures/CubeTexture.js +2 -2
  416. package/src/textures/DataTexture.js +2 -2
  417. package/src/textures/Texture.js +41 -12
  418. package/src/utils.js +13 -1
  419. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  420. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  421. package/examples/fonts/open-sans/open-sans.css +0 -9
  422. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  423. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +0 -3966
  424. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  425. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  426. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  427. package/examples/fonts/tabler-icons/tabler-icons.min.css +0 -4
  428. package/examples/js/animation/AnimationClipCreator.js +0 -89
  429. package/examples/js/animation/CCDIKSolver.js +0 -416
  430. package/examples/js/animation/MMDAnimationHelper.js +0 -1046
  431. package/examples/js/animation/MMDPhysics.js +0 -1174
  432. package/examples/js/cameras/CinematicCamera.js +0 -168
  433. package/examples/js/controls/ArcballControls.js +0 -2770
  434. package/examples/js/controls/DragControls.js +0 -205
  435. package/examples/js/controls/FirstPersonControls.js +0 -312
  436. package/examples/js/controls/FlyControls.js +0 -321
  437. package/examples/js/controls/OrbitControls.js +0 -1101
  438. package/examples/js/controls/PointerLockControls.js +0 -144
  439. package/examples/js/controls/TrackballControls.js +0 -729
  440. package/examples/js/controls/TransformControls.js +0 -1301
  441. package/examples/js/csm/CSM.js +0 -347
  442. package/examples/js/csm/CSMFrustum.js +0 -127
  443. package/examples/js/csm/CSMHelper.js +0 -165
  444. package/examples/js/csm/CSMShader.js +0 -253
  445. package/examples/js/curves/CurveExtras.js +0 -348
  446. package/examples/js/curves/NURBSCurve.js +0 -63
  447. package/examples/js/curves/NURBSSurface.js +0 -48
  448. package/examples/js/curves/NURBSUtils.js +0 -439
  449. package/examples/js/effects/AnaglyphEffect.js +0 -86
  450. package/examples/js/effects/AsciiEffect.js +0 -260
  451. package/examples/js/effects/OutlineEffect.js +0 -450
  452. package/examples/js/effects/ParallaxBarrierEffect.js +0 -62
  453. package/examples/js/effects/PeppersGhostEffect.js +0 -139
  454. package/examples/js/effects/StereoEffect.js +0 -46
  455. package/examples/js/environments/DebugEnvironment.js +0 -53
  456. package/examples/js/environments/RoomEnvironment.js +0 -124
  457. package/examples/js/exporters/ColladaExporter.js +0 -487
  458. package/examples/js/exporters/DRACOExporter.js +0 -212
  459. package/examples/js/exporters/EXRExporter.js +0 -455
  460. package/examples/js/exporters/GLTFExporter.js +0 -2367
  461. package/examples/js/exporters/MMDExporter.js +0 -187
  462. package/examples/js/exporters/OBJExporter.js +0 -260
  463. package/examples/js/exporters/PLYExporter.js +0 -427
  464. package/examples/js/exporters/STLExporter.js +0 -188
  465. package/examples/js/exporters/USDZExporter.js +0 -608
  466. package/examples/js/geometries/BoxLineGeometry.js +0 -59
  467. package/examples/js/geometries/ConvexGeometry.js +0 -53
  468. package/examples/js/geometries/DecalGeometry.js +0 -324
  469. package/examples/js/geometries/LightningStrike.js +0 -861
  470. package/examples/js/geometries/ParametricGeometries.js +0 -216
  471. package/examples/js/geometries/ParametricGeometry.js +0 -121
  472. package/examples/js/geometries/RoundedBoxGeometry.js +0 -142
  473. package/examples/js/geometries/TeapotGeometry.js +0 -335
  474. package/examples/js/geometries/TextGeometry.js +0 -53
  475. package/examples/js/helpers/LightProbeHelper.js +0 -48
  476. package/examples/js/helpers/OctreeHelper.js +0 -76
  477. package/examples/js/helpers/PositionalAudioHelper.js +0 -91
  478. package/examples/js/helpers/RectAreaLightHelper.js +0 -73
  479. package/examples/js/helpers/VertexNormalsHelper.js +0 -74
  480. package/examples/js/helpers/VertexTangentsHelper.js +0 -68
  481. package/examples/js/helpers/ViewHelper.js +0 -281
  482. package/examples/js/interactive/HTMLMesh.js +0 -497
  483. package/examples/js/interactive/InteractiveGroup.js +0 -95
  484. package/examples/js/interactive/SelectionBox.js +0 -195
  485. package/examples/js/interactive/SelectionHelper.js +0 -83
  486. package/examples/js/libs/chevrotain.min.js +0 -3
  487. package/examples/js/libs/draco/draco_decoder.js +0 -52
  488. package/examples/js/libs/draco/draco_decoder.wasm +0 -0
  489. package/examples/js/libs/draco/draco_wasm_wrapper.js +0 -104
  490. package/examples/js/libs/draco/gltf/draco_decoder.js +0 -48
  491. package/examples/js/libs/draco/gltf/draco_decoder.wasm +0 -0
  492. package/examples/js/libs/draco/gltf/draco_wasm_wrapper.js +0 -104
  493. package/examples/js/libs/fflate.min.js +0 -7
  494. package/examples/js/libs/ktx-parse.umd.js +0 -1
  495. package/examples/js/libs/meshopt_decoder.js +0 -188
  496. package/examples/js/libs/opentype.min.js +0 -1
  497. package/examples/js/libs/stats.min.js +0 -5
  498. package/examples/js/lights/LightProbeGenerator.js +0 -221
  499. package/examples/js/lights/RectAreaLightUniformsLib.js +0 -60
  500. package/examples/js/lines/Line2.js +0 -19
  501. package/examples/js/lines/LineGeometry.js +0 -69
  502. package/examples/js/lines/LineMaterial.js +0 -635
  503. package/examples/js/lines/LineSegments2.js +0 -313
  504. package/examples/js/lines/LineSegmentsGeometry.js +0 -198
  505. package/examples/js/lines/Wireframe.js +0 -47
  506. package/examples/js/lines/WireframeGeometry2.js +0 -20
  507. package/examples/js/loaders/3DMLoader.js +0 -1273
  508. package/examples/js/loaders/3MFLoader.js +0 -1306
  509. package/examples/js/loaders/AMFLoader.js +0 -504
  510. package/examples/js/loaders/BVHLoader.js +0 -395
  511. package/examples/js/loaders/BasisTextureLoader.js +0 -706
  512. package/examples/js/loaders/ColladaLoader.js +0 -3690
  513. package/examples/js/loaders/DDSLoader.js +0 -244
  514. package/examples/js/loaders/DRACOLoader.js +0 -511
  515. package/examples/js/loaders/EXRLoader.js +0 -2039
  516. package/examples/js/loaders/FBXLoader.js +0 -3681
  517. package/examples/js/loaders/FontLoader.js +0 -160
  518. package/examples/js/loaders/GCodeLoader.js +0 -255
  519. package/examples/js/loaders/GLTFLoader.js +0 -3862
  520. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -87
  521. package/examples/js/loaders/KMZLoader.js +0 -121
  522. package/examples/js/loaders/KTXLoader.js +0 -159
  523. package/examples/js/loaders/LDrawLoader.js +0 -2263
  524. package/examples/js/loaders/LUT3dlLoader.js +0 -135
  525. package/examples/js/loaders/LUTCubeLoader.js +0 -132
  526. package/examples/js/loaders/LWOLoader.js +0 -901
  527. package/examples/js/loaders/LogLuvLoader.js +0 -715
  528. package/examples/js/loaders/LottieLoader.js +0 -62
  529. package/examples/js/loaders/MD2Loader.js +0 -248
  530. package/examples/js/loaders/MDDLoader.js +0 -91
  531. package/examples/js/loaders/MMDLoader.js +0 -1915
  532. package/examples/js/loaders/MTLLoader.js +0 -472
  533. package/examples/js/loaders/NRRDLoader.js +0 -609
  534. package/examples/js/loaders/OBJLoader.js +0 -789
  535. package/examples/js/loaders/PCDLoader.js +0 -413
  536. package/examples/js/loaders/PDBLoader.js +0 -317
  537. package/examples/js/loaders/PLYLoader.js +0 -576
  538. package/examples/js/loaders/PRWMLoader.js +0 -249
  539. package/examples/js/loaders/PVRLoader.js +0 -218
  540. package/examples/js/loaders/RGBELoader.js +0 -442
  541. package/examples/js/loaders/RGBMLoader.js +0 -1354
  542. package/examples/js/loaders/STLLoader.js +0 -364
  543. package/examples/js/loaders/SVGLoader.js +0 -2783
  544. package/examples/js/loaders/TDSLoader.js +0 -992
  545. package/examples/js/loaders/TGALoader.js +0 -484
  546. package/examples/js/loaders/TIFFLoader.js +0 -30
  547. package/examples/js/loaders/TTFLoader.js +0 -203
  548. package/examples/js/loaders/TiltLoader.js +0 -459
  549. package/examples/js/loaders/VOXLoader.js +0 -240
  550. package/examples/js/loaders/VRMLLoader.js +0 -3140
  551. package/examples/js/loaders/VTKLoader.js +0 -1078
  552. package/examples/js/loaders/XYZLoader.js +0 -89
  553. package/examples/js/loaders/lwo/IFFParser.js +0 -1067
  554. package/examples/js/loaders/lwo/LWO2Parser.js +0 -397
  555. package/examples/js/loaders/lwo/LWO3Parser.js +0 -360
  556. package/examples/js/materials/MeshGouraudMaterial.js +0 -387
  557. package/examples/js/math/Capsule.js +0 -103
  558. package/examples/js/math/ColorConverter.js +0 -33
  559. package/examples/js/math/ConvexHull.js +0 -1154
  560. package/examples/js/math/ImprovedNoise.js +0 -66
  561. package/examples/js/math/Lut.js +0 -164
  562. package/examples/js/math/MeshSurfaceSampler.js +0 -171
  563. package/examples/js/math/OBB.js +0 -382
  564. package/examples/js/math/Octree.js +0 -410
  565. package/examples/js/math/SimplexNoise.js +0 -445
  566. package/examples/js/misc/ConvexObjectBreaker.js +0 -474
  567. package/examples/js/misc/GPUComputationRenderer.js +0 -393
  568. package/examples/js/misc/Gyroscope.js +0 -56
  569. package/examples/js/misc/MD2Character.js +0 -235
  570. package/examples/js/misc/MD2CharacterComplex.js +0 -513
  571. package/examples/js/misc/MorphAnimMesh.js +0 -63
  572. package/examples/js/misc/MorphBlendMesh.js +0 -265
  573. package/examples/js/misc/ProgressiveLightMap.js +0 -335
  574. package/examples/js/misc/RollerCoaster.js +0 -430
  575. package/examples/js/misc/TubePainter.js +0 -167
  576. package/examples/js/misc/Volume.js +0 -437
  577. package/examples/js/misc/VolumeSlice.js +0 -214
  578. package/examples/js/modifiers/CurveModifier.js +0 -309
  579. package/examples/js/modifiers/EdgeSplitModifier.js +0 -228
  580. package/examples/js/modifiers/SimplifyModifier.js +0 -465
  581. package/examples/js/modifiers/TessellateModifier.js +0 -276
  582. package/examples/js/objects/GroundProjectedEnv.js +0 -181
  583. package/examples/js/objects/Lensflare.js +0 -356
  584. package/examples/js/objects/LightningStorm.js +0 -206
  585. package/examples/js/objects/MarchingCubes.js +0 -759
  586. package/examples/js/objects/Reflector.js +0 -216
  587. package/examples/js/objects/ReflectorForSSRPass.js +0 -315
  588. package/examples/js/objects/Refractor.js +0 -283
  589. package/examples/js/objects/ShadowMesh.js +0 -59
  590. package/examples/js/objects/Sky.js +0 -218
  591. package/examples/js/objects/Water.js +0 -292
  592. package/examples/js/objects/Water2.js +0 -307
  593. package/examples/js/physics/AmmoPhysics.js +0 -259
  594. package/examples/js/physics/OimoPhysics.js +0 -217
  595. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +0 -335
  596. package/examples/js/postprocessing/AfterimagePass.js +0 -77
  597. package/examples/js/postprocessing/BloomPass.js +0 -135
  598. package/examples/js/postprocessing/BokehPass.js +0 -120
  599. package/examples/js/postprocessing/ClearPass.js +0 -39
  600. package/examples/js/postprocessing/CubeTexturePass.js +0 -60
  601. package/examples/js/postprocessing/DotScreenPass.js +0 -51
  602. package/examples/js/postprocessing/EffectComposer.js +0 -272
  603. package/examples/js/postprocessing/FilmPass.js +0 -52
  604. package/examples/js/postprocessing/GlitchPass.js +0 -104
  605. package/examples/js/postprocessing/HalftonePass.js +0 -75
  606. package/examples/js/postprocessing/LUTPass.js +0 -171
  607. package/examples/js/postprocessing/MaskPass.js +0 -95
  608. package/examples/js/postprocessing/OutlinePass.js +0 -598
  609. package/examples/js/postprocessing/Pass.js +0 -72
  610. package/examples/js/postprocessing/RenderPass.js +0 -70
  611. package/examples/js/postprocessing/RenderPixelatedPass.js +0 -215
  612. package/examples/js/postprocessing/SAOPass.js +0 -374
  613. package/examples/js/postprocessing/SMAAPass.js +0 -170
  614. package/examples/js/postprocessing/SSAARenderPass.js +0 -156
  615. package/examples/js/postprocessing/SSAOPass.js +0 -365
  616. package/examples/js/postprocessing/SSRPass.js +0 -567
  617. package/examples/js/postprocessing/SavePass.js +0 -59
  618. package/examples/js/postprocessing/ShaderPass.js +0 -64
  619. package/examples/js/postprocessing/TAARenderPass.js +0 -130
  620. package/examples/js/postprocessing/TexturePass.js +0 -49
  621. package/examples/js/postprocessing/UnrealBloomPass.js +0 -375
  622. package/examples/js/renderers/CSS2DRenderer.js +0 -178
  623. package/examples/js/renderers/CSS3DRenderer.js +0 -237
  624. package/examples/js/renderers/Projector.js +0 -818
  625. package/examples/js/renderers/SVGRenderer.js +0 -491
  626. package/examples/js/shaders/ACESFilmicToneMappingShader.js +0 -89
  627. package/examples/js/shaders/AfterimageShader.js +0 -60
  628. package/examples/js/shaders/BasicShader.js +0 -27
  629. package/examples/js/shaders/BleachBypassShader.js +0 -62
  630. package/examples/js/shaders/BlendShader.js +0 -54
  631. package/examples/js/shaders/BokehShader.js +0 -156
  632. package/examples/js/shaders/BokehShader2.js +0 -419
  633. package/examples/js/shaders/BrightnessContrastShader.js +0 -58
  634. package/examples/js/shaders/ColorCorrectionShader.js +0 -52
  635. package/examples/js/shaders/ColorifyShader.js +0 -47
  636. package/examples/js/shaders/ConvolutionShader.js +0 -92
  637. package/examples/js/shaders/CopyShader.js +0 -45
  638. package/examples/js/shaders/DOFMipMapShader.js +0 -60
  639. package/examples/js/shaders/DepthLimitedBlurShader.js +0 -173
  640. package/examples/js/shaders/DigitalGlitch.js +0 -127
  641. package/examples/js/shaders/DotScreenShader.js +0 -72
  642. package/examples/js/shaders/FXAAShader.js +0 -284
  643. package/examples/js/shaders/FilmShader.js +0 -110
  644. package/examples/js/shaders/FocusShader.js +0 -95
  645. package/examples/js/shaders/FreiChenShader.js +0 -93
  646. package/examples/js/shaders/GammaCorrectionShader.js +0 -41
  647. package/examples/js/shaders/GodRaysShader.js +0 -284
  648. package/examples/js/shaders/HalftoneShader.js +0 -336
  649. package/examples/js/shaders/HorizontalBlurShader.js +0 -59
  650. package/examples/js/shaders/HorizontalTiltShiftShader.js +0 -65
  651. package/examples/js/shaders/HueSaturationShader.js +0 -69
  652. package/examples/js/shaders/KaleidoShader.js +0 -60
  653. package/examples/js/shaders/LuminosityHighPassShader.js +0 -67
  654. package/examples/js/shaders/LuminosityShader.js +0 -46
  655. package/examples/js/shaders/MMDToonShader.js +0 -94
  656. package/examples/js/shaders/MirrorShader.js +0 -56
  657. package/examples/js/shaders/NormalMapShader.js +0 -55
  658. package/examples/js/shaders/RGBShiftShader.js +0 -56
  659. package/examples/js/shaders/SAOShader.js +0 -209
  660. package/examples/js/shaders/SMAAShader.js +0 -454
  661. package/examples/js/shaders/SSAOShader.js +0 -295
  662. package/examples/js/shaders/SSRShader.js +0 -381
  663. package/examples/js/shaders/SepiaShader.js +0 -52
  664. package/examples/js/shaders/SobelOperatorShader.js +0 -88
  665. package/examples/js/shaders/SubsurfaceScatteringShader.js +0 -49
  666. package/examples/js/shaders/TechnicolorShader.js +0 -43
  667. package/examples/js/shaders/ToneMapShader.js +0 -84
  668. package/examples/js/shaders/ToonShader.js +0 -335
  669. package/examples/js/shaders/TriangleBlurShader.js +0 -70
  670. package/examples/js/shaders/UnpackDepthRGBAShader.js +0 -47
  671. package/examples/js/shaders/VelocityShader.js +0 -126
  672. package/examples/js/shaders/VerticalBlurShader.js +0 -59
  673. package/examples/js/shaders/VerticalTiltShiftShader.js +0 -65
  674. package/examples/js/shaders/VignetteShader.js +0 -53
  675. package/examples/js/shaders/VolumeShader.js +0 -296
  676. package/examples/js/shaders/WaterRefractionShader.js +0 -84
  677. package/examples/js/textures/FlakesTexture.js +0 -40
  678. package/examples/js/utils/BufferGeometryUtils.js +0 -1160
  679. package/examples/js/utils/CameraUtils.js +0 -71
  680. package/examples/js/utils/GPUStatsPanel.js +0 -125
  681. package/examples/js/utils/GeometryCompressionUtils.js +0 -549
  682. package/examples/js/utils/GeometryUtils.js +0 -168
  683. package/examples/js/utils/LDrawUtils.js +0 -179
  684. package/examples/js/utils/PackedPhongMaterial.js +0 -109
  685. package/examples/js/utils/SceneUtils.js +0 -214
  686. package/examples/js/utils/ShadowMapViewer.js +0 -183
  687. package/examples/js/utils/SkeletonUtils.js +0 -493
  688. package/examples/js/utils/UVsDebug.js +0 -143
  689. package/examples/js/utils/WorkerPool.js +0 -105
  690. package/examples/jsm/libs/OimoPhysics/OimoPhysics.js +0 -37071
  691. package/examples/jsm/libs/OimoPhysics/index.js +0 -43
  692. package/examples/jsm/libs/flow.module.js +0 -4552
  693. package/examples/jsm/libs/tween.module.min.js +0 -3
  694. package/examples/jsm/loaders/BasisTextureLoader.js +0 -790
  695. package/examples/jsm/loaders/IFCLoader.js +0 -2431
  696. package/examples/jsm/loaders/ifc/web-ifc-api.js +0 -47504
  697. package/examples/jsm/loaders/ifc/web-ifc.wasm +0 -0
  698. package/examples/jsm/node-editor/NodeEditor.js +0 -857
  699. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +0 -14
  700. package/examples/jsm/node-editor/accessors/NormalEditor.js +0 -30
  701. package/examples/jsm/node-editor/accessors/PositionEditor.js +0 -30
  702. package/examples/jsm/node-editor/accessors/UVEditor.js +0 -25
  703. package/examples/jsm/node-editor/core/BaseNode.js +0 -96
  704. package/examples/jsm/node-editor/core/DataFile.js +0 -59
  705. package/examples/jsm/node-editor/core/FileEditor.js +0 -20
  706. package/examples/jsm/node-editor/core/FileURLEditor.js +0 -29
  707. package/examples/jsm/node-editor/display/BlendEditor.js +0 -44
  708. package/examples/jsm/node-editor/display/NormalMapEditor.js +0 -49
  709. package/examples/jsm/node-editor/examples/animate-uv.json +0 -1
  710. package/examples/jsm/node-editor/examples/fake-top-light.json +0 -1
  711. package/examples/jsm/node-editor/examples/matcap.json +0 -1
  712. package/examples/jsm/node-editor/examples/oscillator-color.json +0 -1
  713. package/examples/jsm/node-editor/examples/rim.json +0 -1
  714. package/examples/jsm/node-editor/inputs/ColorEditor.js +0 -96
  715. package/examples/jsm/node-editor/inputs/FloatEditor.js +0 -23
  716. package/examples/jsm/node-editor/inputs/SliderEditor.js +0 -67
  717. package/examples/jsm/node-editor/inputs/TextureEditor.js +0 -155
  718. package/examples/jsm/node-editor/inputs/Vector2Editor.js +0 -28
  719. package/examples/jsm/node-editor/inputs/Vector3Editor.js +0 -30
  720. package/examples/jsm/node-editor/inputs/Vector4Editor.js +0 -37
  721. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +0 -84
  722. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +0 -102
  723. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +0 -118
  724. package/examples/jsm/node-editor/math/AngleEditor.js +0 -40
  725. package/examples/jsm/node-editor/math/DotEditor.js +0 -35
  726. package/examples/jsm/node-editor/math/InvertEditor.js +0 -39
  727. package/examples/jsm/node-editor/math/LimiterEditor.js +0 -62
  728. package/examples/jsm/node-editor/math/NormalizeEditor.js +0 -28
  729. package/examples/jsm/node-editor/math/OperatorEditor.js +0 -63
  730. package/examples/jsm/node-editor/math/PowerEditor.js +0 -44
  731. package/examples/jsm/node-editor/math/TrigonometryEditor.js +0 -45
  732. package/examples/jsm/node-editor/procedural/CheckerEditor.js +0 -27
  733. package/examples/jsm/node-editor/scene/MeshEditor.js +0 -102
  734. package/examples/jsm/node-editor/scene/Object3DEditor.js +0 -160
  735. package/examples/jsm/node-editor/scene/PointsEditor.js +0 -99
  736. package/examples/jsm/node-editor/utils/JoinEditor.js +0 -58
  737. package/examples/jsm/node-editor/utils/OscillatorEditor.js +0 -43
  738. package/examples/jsm/node-editor/utils/PreviewEditor.js +0 -170
  739. package/examples/jsm/node-editor/utils/SplitEditor.js +0 -39
  740. package/examples/jsm/node-editor/utils/TimerEditor.js +0 -58
  741. package/examples/jsm/nodes/core/ExpressionNode.js +0 -32
  742. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +0 -22
  743. package/examples/jsm/nodes/lighting/PunctualLightNode.js +0 -68
  744. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +0 -301
  745. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +0 -149
  746. package/examples/jsm/objects/GroundProjectedEnv.js +0 -186
  747. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -36
  748. package/src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl.js +0 -7
  749. package/src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl.js +0 -10
  750. package/src/renderers/shaders/ShaderChunk/uv2_vertex.glsl.js +0 -7
  751. /package/examples/{js → jsm}/libs/ammo.wasm.js +0 -0
  752. /package/examples/{js → jsm}/libs/ammo.wasm.wasm +0 -0
  753. /package/examples/{js → jsm}/libs/basis/basis_transcoder.js +0 -0
  754. /package/examples/{js → jsm}/libs/basis/basis_transcoder.wasm +0 -0
  755. /package/examples/{js → jsm}/libs/draco/README.md +0 -0
  756. /package/examples/{js → jsm}/libs/draco/draco_encoder.js +0 -0
  757. /package/examples/{js → jsm}/libs/draco/gltf/draco_encoder.js +0 -0
@@ -1,8 +1,8 @@
1
1
  import TextureNode from './TextureNode.js';
2
2
  import UniformNode from '../core/UniformNode.js';
3
- import ReflectVectorNode from './ReflectVectorNode.js';
4
-
5
- import { negate, vec3, nodeObject } from '../shadernode/ShaderNodeBaseElements.js';
3
+ import { reflectVector } from './ReflectVectorNode.js';
4
+ import { addNodeClass } from '../core/Node.js';
5
+ import { addNodeElement, nodeProxy, vec3 } from '../shadernode/ShaderNode.js';
6
6
 
7
7
  class CubeTextureNode extends TextureNode {
8
8
 
@@ -20,29 +20,9 @@ class CubeTextureNode extends TextureNode {
20
20
 
21
21
  }
22
22
 
23
- getConstructHash( builder ) {
23
+ getDefaultUV() {
24
24
 
25
- return `${ this.uuid } / ${ builder.context.environmentContext?.uuid || '' }`;
26
-
27
- }
28
-
29
- construct( builder ) {
30
-
31
- const properties = builder.getNodeProperties( this );
32
-
33
- const uvNode = this.uvNode || builder.context.uvNode || new ReflectVectorNode();
34
- let levelNode = this.levelNode || builder.context.levelNode;
35
-
36
- if ( levelNode?.isNode === true ) {
37
-
38
- const texture = this.value;
39
-
40
- levelNode = builder.context.levelShaderNode ? builder.context.levelShaderNode.call( { texture, levelNode }, builder ) : levelNode;
41
-
42
- }
43
-
44
- properties.uvNode = uvNode;
45
- properties.levelNode = levelNode;
25
+ return reflectVector;
46
26
 
47
27
  }
48
28
 
@@ -72,31 +52,39 @@ class CubeTextureNode extends TextureNode {
72
52
 
73
53
  const nodeData = builder.getDataFromNode( this );
74
54
 
75
- let snippet = nodeData.snippet;
55
+ let propertyName = nodeData.propertyName;
76
56
 
77
- if ( snippet === undefined || builder.context.tempRead === false ) {
57
+ if ( propertyName === undefined ) {
78
58
 
79
- const uvNodeObject = nodeObject( uvNode );
80
- const cubeUV = vec3( negate( uvNodeObject.x ), uvNodeObject.yz );
59
+ const cubeUV = vec3( uvNode.x.negate(), uvNode.yz );
81
60
  const uvSnippet = cubeUV.build( builder, 'vec3' );
82
61
 
83
- if ( levelNode ) {
62
+ const nodeVar = builder.getVarFromNode( this, 'vec4' );
63
+
64
+ propertyName = builder.getPropertyName( nodeVar );
65
+
66
+ let snippet = null;
67
+
68
+ if ( levelNode && levelNode.isNode === true ) {
84
69
 
85
70
  const levelSnippet = levelNode.build( builder, 'float' );
86
71
 
87
- snippet = builder.getCubeTextureLevel( textureProperty, uvSnippet, levelSnippet );
72
+ snippet = builder.getTextureLevel( this, textureProperty, uvSnippet, levelSnippet );
88
73
 
89
74
  } else {
90
75
 
91
- snippet = builder.getCubeTexture( textureProperty, uvSnippet );
76
+ snippet = builder.getTexture( this, textureProperty, uvSnippet );
92
77
 
93
78
  }
94
79
 
80
+ builder.addLineFlowCode( `${propertyName} = ${snippet}` );
81
+
95
82
  nodeData.snippet = snippet;
83
+ nodeData.propertyName = propertyName;
96
84
 
97
85
  }
98
86
 
99
- return builder.format( snippet, 'vec4', output );
87
+ return builder.format( propertyName, 'vec4', output );
100
88
 
101
89
  }
102
90
 
@@ -105,3 +93,9 @@ class CubeTextureNode extends TextureNode {
105
93
  }
106
94
 
107
95
  export default CubeTextureNode;
96
+
97
+ export const cubeTexture = nodeProxy( CubeTextureNode );
98
+
99
+ addNodeElement( 'cubeTexture', cubeTexture );
100
+
101
+ addNodeClass( CubeTextureNode );
@@ -0,0 +1,58 @@
1
+ // @TODO: Is this needed? Can it be moved in MaterialNode?
2
+
3
+ import MaterialNode from './MaterialNode.js';
4
+ import { materialReference } from './MaterialReferenceNode.js';
5
+ import { normalView } from './NormalNode.js';
6
+ import { normalMap } from '../display/NormalMapNode.js';
7
+ import { addNodeClass } from '../core/Node.js';
8
+ import { nodeImmutable } from '../shadernode/ShaderNode.js';
9
+
10
+ class ExtendedMaterialNode extends MaterialNode {
11
+
12
+ constructor( scope ) {
13
+
14
+ super( scope );
15
+
16
+ }
17
+
18
+ getNodeType( builder ) {
19
+
20
+ const scope = this.scope;
21
+ let type = null;
22
+
23
+ if ( scope === ExtendedMaterialNode.NORMAL ) {
24
+
25
+ type = 'vec3';
26
+
27
+ }
28
+
29
+ return type || super.getNodeType( builder );
30
+
31
+ }
32
+
33
+ construct( builder ) {
34
+
35
+ const material = builder.material;
36
+ const scope = this.scope;
37
+
38
+ let node = null;
39
+
40
+ if ( scope === ExtendedMaterialNode.NORMAL ) {
41
+
42
+ node = material.normalMap ? normalMap( this.getTexture( 'normalMap' ), materialReference( 'normalScale', 'vec2' ) ) : normalView;
43
+
44
+ }
45
+
46
+ return node || super.construct( builder );
47
+
48
+ }
49
+
50
+ }
51
+
52
+ ExtendedMaterialNode.NORMAL = 'normal';
53
+
54
+ export default ExtendedMaterialNode;
55
+
56
+ export const materialNormal = nodeImmutable( ExtendedMaterialNode, ExtendedMaterialNode.NORMAL );
57
+
58
+ addNodeClass( ExtendedMaterialNode );
@@ -1,18 +1,10 @@
1
- import Node from '../core/Node.js';
2
- import {
3
- vec3,
4
- mat3,
5
- mul,
6
- assign,
7
- buffer,
8
- element,
9
- dot,
10
- div,
11
- temp,
12
- instanceIndex,
13
- positionLocal,
14
- normalLocal
15
- } from '../shadernode/ShaderNodeBaseElements.js';
1
+ import Node, { addNodeClass } from '../core/Node.js';
2
+ import { instanceIndex } from '../core/InstanceIndexNode.js';
3
+ import { temp } from '../core/VarNode.js';
4
+ import { buffer } from './BufferNode.js';
5
+ import { normalLocal } from './NormalNode.js';
6
+ import { positionLocal } from './PositionNode.js';
7
+ import { nodeProxy, vec3, mat3 } from '../shadernode/ShaderNode.js';
16
8
 
17
9
  class InstanceNode extends Node {
18
10
 
@@ -26,7 +18,7 @@ class InstanceNode extends Node {
26
18
 
27
19
  const instanceBufferNode = buffer( instanceMesh.instanceMatrix.array, 'mat4', instanceMesh.count );
28
20
 
29
- this.instanceMatrixNode = temp( element( instanceBufferNode, instanceIndex ) ); // @TODO: a possible caching issue here?
21
+ this.instanceMatrixNode = temp( instanceBufferNode.element( instanceIndex ) ); // @TODO: a possible caching issue here?
30
22
 
31
23
  }
32
24
 
@@ -36,23 +28,27 @@ class InstanceNode extends Node {
36
28
 
37
29
  // POSITION
38
30
 
39
- const instancePosition = mul( instanceMatrixNode, positionLocal ).xyz;
31
+ const instancePosition = instanceMatrixNode.mul( positionLocal ).xyz;
40
32
 
41
33
  // NORMAL
42
34
 
43
35
  const m = mat3( instanceMatrixNode[ 0 ].xyz, instanceMatrixNode[ 1 ].xyz, instanceMatrixNode[ 2 ].xyz );
44
36
 
45
- const transformedNormal = div( normalLocal, vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) ) );
37
+ const transformedNormal = normalLocal.div( vec3( m[ 0 ].dot( m[ 0 ] ), m[ 1 ].dot( m[ 1 ] ), m[ 2 ].dot( m[ 2 ] ) ) );
46
38
 
47
- const instanceNormal = mul( m, transformedNormal ).xyz;
39
+ const instanceNormal = m.mul( transformedNormal ).xyz;
48
40
 
49
41
  // ASSIGNS
50
42
 
51
- assign( positionLocal, instancePosition ).build( builder );
52
- assign( normalLocal, instanceNormal ).build( builder );
43
+ positionLocal.assign( instancePosition ).build( builder );
44
+ normalLocal.assign( instanceNormal ).build( builder );
53
45
 
54
46
  }
55
47
 
56
48
  }
57
49
 
58
50
  export default InstanceNode;
51
+
52
+ export const instance = nodeProxy( InstanceNode );
53
+
54
+ addNodeClass( InstanceNode );
@@ -1,20 +1,12 @@
1
- import Node from '../core/Node.js';
2
- import OperatorNode from '../math/OperatorNode.js';
3
- import MaterialReferenceNode from './MaterialReferenceNode.js';
4
- import TextureNode from './TextureNode.js';
5
- import SplitNode from '../utils/SplitNode.js';
1
+ import Node, { addNodeClass } from '../core/Node.js';
2
+ import { uniform } from '../core/UniformNode.js';
3
+ import { materialReference } from './MaterialReferenceNode.js';
4
+ import { uv } from './UVNode.js';
5
+ import { nodeImmutable, vec3 } from '../shadernode/ShaderNode.js';
6
6
 
7
7
  class MaterialNode extends Node {
8
8
 
9
- static ALPHA_TEST = 'alphaTest';
10
- static COLOR = 'color';
11
- static OPACITY = 'opacity';
12
- static ROUGHNESS = 'roughness';
13
- static METALNESS = 'metalness';
14
- static EMISSIVE = 'emissive';
15
- static ROTATION = 'rotation';
16
-
17
- constructor( scope = MaterialNode.COLOR ) {
9
+ constructor( scope ) {
18
10
 
19
11
  super();
20
12
 
@@ -35,11 +27,15 @@ class MaterialNode extends Node {
35
27
 
36
28
  return 'float';
37
29
 
30
+ } else if ( scope === MaterialNode.UV ) {
31
+
32
+ return 'vec2';
33
+
38
34
  } else if ( scope === MaterialNode.EMISSIVE ) {
39
35
 
40
36
  return 'vec3';
41
37
 
42
- } else if ( scope === MaterialNode.ROUGHNESS || scope === MaterialNode.METALNESS ) {
38
+ } else if ( scope === MaterialNode.ROUGHNESS || scope === MaterialNode.METALNESS || scope === MaterialNode.SPECULAR || scope === MaterialNode.SHININESS ) {
43
39
 
44
40
  return 'float';
45
41
 
@@ -47,7 +43,34 @@ class MaterialNode extends Node {
47
43
 
48
44
  }
49
45
 
50
- generate( builder, output ) {
46
+ getFloat( property ) {
47
+
48
+ //@TODO: Check if it can be cached by property name.
49
+
50
+ return materialReference( property, 'float' );
51
+
52
+ }
53
+
54
+ getColor( property ) {
55
+
56
+ //@TODO: Check if it can be cached by property name.
57
+
58
+ return materialReference( property, 'color' );
59
+
60
+ }
61
+
62
+ getTexture( property ) {
63
+
64
+ //@TODO: Check if it can be cached by property name.
65
+
66
+ const textureRefNode = materialReference( property, 'texture' );
67
+ textureRefNode.node.uvNode = materialUV;
68
+
69
+ return textureRefNode;
70
+
71
+ }
72
+
73
+ construct( builder ) {
51
74
 
52
75
  const material = builder.context.material;
53
76
  const scope = this.scope;
@@ -56,18 +79,15 @@ class MaterialNode extends Node {
56
79
 
57
80
  if ( scope === MaterialNode.ALPHA_TEST ) {
58
81
 
59
- node = new MaterialReferenceNode( 'alphaTest', 'float' );
82
+ node = this.getFloat( 'alphaTest' );
60
83
 
61
84
  } else if ( scope === MaterialNode.COLOR ) {
62
85
 
63
- const colorNode = new MaterialReferenceNode( 'color', 'color' );
64
-
65
- if ( material.map?.isTexture === true ) {
86
+ const colorNode = this.getColor( 'color' );
66
87
 
67
- //new MaterialReferenceNode( 'map', 'texture' )
68
- const map = new TextureNode( material.map );
88
+ if ( material.map && material.map.isTexture === true ) {
69
89
 
70
- node = new OperatorNode( '*', colorNode, map );
90
+ node = colorNode.mul( this.getTexture( 'map' ) );
71
91
 
72
92
  } else {
73
93
 
@@ -77,11 +97,11 @@ class MaterialNode extends Node {
77
97
 
78
98
  } else if ( scope === MaterialNode.OPACITY ) {
79
99
 
80
- const opacityNode = new MaterialReferenceNode( 'opacity', 'float' );
100
+ const opacityNode = this.getFloat( 'opacity' );
81
101
 
82
- if ( material.alphaMap?.isTexture === true ) {
102
+ if ( material.alphaMap && material.alphaMap.isTexture === true ) {
83
103
 
84
- node = new OperatorNode( '*', opacityNode, new MaterialReferenceNode( 'alphaMap', 'texture' ) );
104
+ node = opacityNode.mul( this.getTexture( 'alphaMap' ) );
85
105
 
86
106
  } else {
87
107
 
@@ -89,13 +109,35 @@ class MaterialNode extends Node {
89
109
 
90
110
  }
91
111
 
112
+ } else if ( scope === MaterialNode.SHININESS ) {
113
+
114
+ node = this.getFloat( 'shininess' );
115
+
116
+ } else if ( scope === MaterialNode.SPECULAR_COLOR ) {
117
+
118
+ node = this.getColor( 'specular' );
119
+
120
+ } else if ( scope === MaterialNode.REFLECTIVITY ) {
121
+
122
+ const reflectivityNode = this.getFloat( 'reflectivity' );
123
+
124
+ if ( material.specularMap && material.specularMap.isTexture === true ) {
125
+
126
+ node = reflectivityNode.mul( this.getTexture( 'specularMap' ).r );
127
+
128
+ } else {
129
+
130
+ node = reflectivityNode;
131
+
132
+ }
133
+
92
134
  } else if ( scope === MaterialNode.ROUGHNESS ) {
93
135
 
94
- const roughnessNode = new MaterialReferenceNode( 'roughness', 'float' );
136
+ const roughnessNode = this.getFloat( 'roughness' );
95
137
 
96
- if ( material.roughnessMap?.isTexture === true ) {
138
+ if ( material.roughnessMap && material.roughnessMap.isTexture === true ) {
97
139
 
98
- node = new OperatorNode( '*', roughnessNode, new SplitNode( new TextureNode( material.roughnessMap ), 'g' ) );
140
+ node = roughnessNode.mul( this.getTexture( 'roughnessMap' ).g );
99
141
 
100
142
  } else {
101
143
 
@@ -105,11 +147,11 @@ class MaterialNode extends Node {
105
147
 
106
148
  } else if ( scope === MaterialNode.METALNESS ) {
107
149
 
108
- const metalnessNode = new MaterialReferenceNode( 'metalness', 'float' );
150
+ const metalnessNode = this.getFloat( 'metalness' );
109
151
 
110
- if ( material.metalnessMap?.isTexture === true ) {
152
+ if ( material.metalnessMap && material.metalnessMap.isTexture === true ) {
111
153
 
112
- node = new OperatorNode( '*', metalnessNode, new SplitNode( new TextureNode( material.metalnessMap ), 'b' ) );
154
+ node = metalnessNode.mul( this.getTexture( 'metalnessMap' ).b );
113
155
 
114
156
  } else {
115
157
 
@@ -119,11 +161,11 @@ class MaterialNode extends Node {
119
161
 
120
162
  } else if ( scope === MaterialNode.EMISSIVE ) {
121
163
 
122
- const emissiveNode = new MaterialReferenceNode( 'emissive', 'color' );
164
+ const emissiveNode = this.getColor( 'emissive' );
123
165
 
124
- if ( material.emissiveMap?.isTexture === true ) {
166
+ if ( material.emissiveMap && material.emissiveMap.isTexture === true ) {
125
167
 
126
- node = new OperatorNode( '*', emissiveNode, new TextureNode( material.emissiveMap ) );
168
+ node = emissiveNode.mul( this.getTexture( 'emissiveMap' ) );
127
169
 
128
170
  } else {
129
171
 
@@ -133,20 +175,95 @@ class MaterialNode extends Node {
133
175
 
134
176
  } else if ( scope === MaterialNode.ROTATION ) {
135
177
 
136
- node = new MaterialReferenceNode( 'rotation', 'float' );
178
+ node = this.getFloat( 'rotation' );
179
+
180
+ } else if ( scope === MaterialNode.UV ) {
181
+
182
+ // uv repeat and offset setting priorities
183
+
184
+ let uvScaleMap =
185
+ material.map ||
186
+ material.specularMap ||
187
+ material.displacementMap ||
188
+ material.normalMap ||
189
+ material.bumpMap ||
190
+ material.roughnessMap ||
191
+ material.metalnessMap ||
192
+ material.alphaMap ||
193
+ material.emissiveMap ||
194
+ material.clearcoatMap ||
195
+ material.clearcoatNormalMap ||
196
+ material.clearcoatRoughnessMap ||
197
+ material.iridescenceMap ||
198
+ material.iridescenceThicknessMap ||
199
+ material.specularIntensityMap ||
200
+ material.specularColorMap ||
201
+ material.transmissionMap ||
202
+ material.thicknessMap ||
203
+ material.sheenColorMap ||
204
+ material.sheenRoughnessMap;
205
+
206
+ if ( uvScaleMap ) {
207
+
208
+ // backwards compatibility
209
+ if ( uvScaleMap.isWebGLRenderTarget ) {
210
+
211
+ uvScaleMap = uvScaleMap.texture;
212
+
213
+ }
214
+
215
+ if ( uvScaleMap.matrixAutoUpdate === true ) {
216
+
217
+ uvScaleMap.updateMatrix();
218
+
219
+ }
220
+
221
+ node = uniform( uvScaleMap.matrix ).mul( vec3( uv(), 1 ) );
222
+
223
+ } else {
224
+
225
+ node = uv();
226
+
227
+ }
137
228
 
138
229
  } else {
139
230
 
140
231
  const outputType = this.getNodeType( builder );
141
232
 
142
- node = new MaterialReferenceNode( scope, outputType );
233
+ node = materialReference( scope, outputType );
143
234
 
144
235
  }
145
236
 
146
- return node.build( builder, output );
237
+ return node;
147
238
 
148
239
  }
149
240
 
150
241
  }
151
242
 
243
+ MaterialNode.ALPHA_TEST = 'alphaTest';
244
+ MaterialNode.COLOR = 'color';
245
+ MaterialNode.OPACITY = 'opacity';
246
+ MaterialNode.SHININESS = 'shininess';
247
+ MaterialNode.SPECULAR_COLOR = 'specularColor';
248
+ MaterialNode.REFLECTIVITY = 'reflectivity';
249
+ MaterialNode.ROUGHNESS = 'roughness';
250
+ MaterialNode.METALNESS = 'metalness';
251
+ MaterialNode.EMISSIVE = 'emissive';
252
+ MaterialNode.ROTATION = 'rotation';
253
+ MaterialNode.UV = 'uv';
254
+
152
255
  export default MaterialNode;
256
+
257
+ export const materialUV = nodeImmutable( MaterialNode, MaterialNode.UV );
258
+ export const materialAlphaTest = nodeImmutable( MaterialNode, MaterialNode.ALPHA_TEST );
259
+ export const materialColor = nodeImmutable( MaterialNode, MaterialNode.COLOR );
260
+ export const materialShininess = nodeImmutable( MaterialNode, MaterialNode.SHININESS );
261
+ export const materialEmissive = nodeImmutable( MaterialNode, MaterialNode.EMISSIVE );
262
+ export const materialOpacity = nodeImmutable( MaterialNode, MaterialNode.OPACITY );
263
+ export const materialSpecularColor = nodeImmutable( MaterialNode, MaterialNode.SPECULAR_COLOR );
264
+ export const materialReflectivity = nodeImmutable( MaterialNode, MaterialNode.REFLECTIVITY );
265
+ export const materialRoughness = nodeImmutable( MaterialNode, MaterialNode.ROUGHNESS );
266
+ export const materialMetalness = nodeImmutable( MaterialNode, MaterialNode.METALNESS );
267
+ export const materialRotation = nodeImmutable( MaterialNode, MaterialNode.ROTATION );
268
+
269
+ addNodeClass( MaterialNode );
@@ -1,4 +1,6 @@
1
1
  import ReferenceNode from './ReferenceNode.js';
2
+ import { addNodeClass } from '../core/Node.js';
3
+ import { nodeObject, getConstNodeType } from '../shadernode/ShaderNode.js';
2
4
 
3
5
  class MaterialReferenceNode extends ReferenceNode {
4
6
 
@@ -10,6 +12,16 @@ class MaterialReferenceNode extends ReferenceNode {
10
12
 
11
13
  }
12
14
 
15
+ construct( builder ) {
16
+
17
+ const material = this.material !== null ? this.material : builder.material;
18
+
19
+ this.node.value = material[ this.property ];
20
+
21
+ return super.construct( builder );
22
+
23
+ }
24
+
13
25
  update( frame ) {
14
26
 
15
27
  this.object = this.material !== null ? this.material : frame.material;
@@ -21,3 +33,7 @@ class MaterialReferenceNode extends ReferenceNode {
21
33
  }
22
34
 
23
35
  export default MaterialReferenceNode;
36
+
37
+ export const materialReference = ( name, nodeOrType, material ) => nodeObject( new MaterialReferenceNode( name, getConstNodeType( nodeOrType ), material ) );
38
+
39
+ addNodeClass( MaterialReferenceNode );
@@ -1,4 +1,6 @@
1
1
  import Object3DNode from './Object3DNode.js';
2
+ import { addNodeClass } from '../core/Node.js';
3
+ import { nodeImmutable } from '../shadernode/ShaderNode.js';
2
4
 
3
5
  class ModelNode extends Object3DNode {
4
6
 
@@ -19,3 +21,12 @@ class ModelNode extends Object3DNode {
19
21
  }
20
22
 
21
23
  export default ModelNode;
24
+
25
+ export const modelDirection = nodeImmutable( ModelNode, ModelNode.DIRECTION );
26
+ export const modelViewMatrix = nodeImmutable( ModelNode, ModelNode.VIEW_MATRIX );
27
+ export const modelNormalMatrix = nodeImmutable( ModelNode, ModelNode.NORMAL_MATRIX );
28
+ export const modelWorldMatrix = nodeImmutable( ModelNode, ModelNode.WORLD_MATRIX );
29
+ export const modelPosition = nodeImmutable( ModelNode, ModelNode.POSITION );
30
+ export const modelViewPosition = nodeImmutable( ModelNode, ModelNode.VIEW_POSITION );
31
+
32
+ addNodeClass( ModelNode );
@@ -1,12 +1,12 @@
1
- import Node from '../core/Node.js';
2
- import CameraNode from '../accessors/CameraNode.js';
3
- import ModelNode from '../accessors/ModelNode.js';
4
- import OperatorNode from '../math/OperatorNode.js';
5
- import PositionNode from '../accessors/PositionNode.js';
1
+ import Node, { addNodeClass } from '../core/Node.js';
2
+ import { cameraProjectionMatrix } from './CameraNode.js';
3
+ import { modelViewMatrix } from './ModelNode.js';
4
+ import { positionLocal } from './PositionNode.js';
5
+ import { nodeProxy } from '../shadernode/ShaderNode.js';
6
6
 
7
7
  class ModelViewProjectionNode extends Node {
8
8
 
9
- constructor( position = new PositionNode() ) {
9
+ constructor( position = positionLocal ) {
10
10
 
11
11
  super( 'vec4' );
12
12
 
@@ -18,8 +18,8 @@ class ModelViewProjectionNode extends Node {
18
18
 
19
19
  const position = this.position;
20
20
 
21
- const mvpMatrix = new OperatorNode( '*', new CameraNode( CameraNode.PROJECTION_MATRIX ), new ModelNode( ModelNode.VIEW_MATRIX ) );
22
- const mvpNode = new OperatorNode( '*', mvpMatrix, position );
21
+ const mvpMatrix = cameraProjectionMatrix.mul( modelViewMatrix );
22
+ const mvpNode = mvpMatrix.mul( position );
23
23
 
24
24
  return mvpNode.build( builder );
25
25
 
@@ -28,3 +28,7 @@ class ModelViewProjectionNode extends Node {
28
28
  }
29
29
 
30
30
  export default ModelViewProjectionNode;
31
+
32
+ export const modelViewProjection = nodeProxy( ModelViewProjectionNode );
33
+
34
+ addNodeClass( ModelViewProjectionNode );
@@ -1,18 +1,14 @@
1
- import Node from '../core/Node.js';
2
- import AttributeNode from '../core/AttributeNode.js';
3
- import VaryingNode from '../core/VaryingNode.js';
4
- import ModelNode from '../accessors/ModelNode.js';
5
- import CameraNode from '../accessors/CameraNode.js';
6
- import OperatorNode from '../math/OperatorNode.js';
7
- import MathNode from '../math/MathNode.js';
1
+ import Node, { addNodeClass } from '../core/Node.js';
2
+ import { attribute } from '../core/AttributeNode.js';
3
+ import { label } from '../core/VarNode.js';
4
+ import { varying } from '../core/VaryingNode.js';
5
+ import { normalize } from '../math/MathNode.js';
6
+ import { cameraViewMatrix } from './CameraNode.js';
7
+ import { modelNormalMatrix } from './ModelNode.js';
8
+ import { nodeImmutable } from '../shadernode/ShaderNode.js';
8
9
 
9
10
  class NormalNode extends Node {
10
11
 
11
- static GEOMETRY = 'geometry';
12
- static LOCAL = 'local';
13
- static VIEW = 'view';
14
- static WORLD = 'world';
15
-
16
12
  constructor( scope = NormalNode.LOCAL ) {
17
13
 
18
14
  super( 'vec3' );
@@ -21,6 +17,12 @@ class NormalNode extends Node {
21
17
 
22
18
  }
23
19
 
20
+ isGlobal() {
21
+
22
+ return true;
23
+
24
+ }
25
+
24
26
  getHash( /*builder*/ ) {
25
27
 
26
28
  return `normal-${this.scope}`;
@@ -35,22 +37,22 @@ class NormalNode extends Node {
35
37
 
36
38
  if ( scope === NormalNode.GEOMETRY ) {
37
39
 
38
- outputNode = new AttributeNode( 'normal', 'vec3' );
40
+ outputNode = attribute( 'normal', 'vec3' );
39
41
 
40
42
  } else if ( scope === NormalNode.LOCAL ) {
41
43
 
42
- outputNode = new VaryingNode( new NormalNode( NormalNode.GEOMETRY ) );
44
+ outputNode = varying( normalGeometry );
43
45
 
44
46
  } else if ( scope === NormalNode.VIEW ) {
45
47
 
46
- const vertexNode = new OperatorNode( '*', new ModelNode( ModelNode.NORMAL_MATRIX ), new NormalNode( NormalNode.LOCAL ) );
47
- outputNode = new MathNode( MathNode.NORMALIZE, new VaryingNode( vertexNode ) );
48
+ const vertexNode = modelNormalMatrix.mul( normalLocal );
49
+ outputNode = normalize( varying( vertexNode ) );
48
50
 
49
51
  } else if ( scope === NormalNode.WORLD ) {
50
52
 
51
- // To use INVERSE_TRANSFORM_DIRECTION only inverse the param order like this: MathNode( ..., Vector, Matrix );
52
- const vertexNode = new MathNode( MathNode.TRANSFORM_DIRECTION, new NormalNode( NormalNode.VIEW ), new CameraNode( CameraNode.VIEW_MATRIX ) );
53
- outputNode = new MathNode( MathNode.NORMALIZE, new VaryingNode( vertexNode ) );
53
+ // To use inverseTransformDirection only inverse the param order like this: cameraViewMatrix.transformDirection( normalView )
54
+ const vertexNode = normalView.transformDirection( cameraViewMatrix );
55
+ outputNode = normalize( varying( vertexNode ) );
54
56
 
55
57
  }
56
58
 
@@ -76,4 +78,18 @@ class NormalNode extends Node {
76
78
 
77
79
  }
78
80
 
81
+ NormalNode.GEOMETRY = 'geometry';
82
+ NormalNode.LOCAL = 'local';
83
+ NormalNode.VIEW = 'view';
84
+ NormalNode.WORLD = 'world';
85
+
79
86
  export default NormalNode;
87
+
88
+ export const normalGeometry = nodeImmutable( NormalNode, NormalNode.GEOMETRY );
89
+ export const normalLocal = nodeImmutable( NormalNode, NormalNode.LOCAL );
90
+ export const normalView = nodeImmutable( NormalNode, NormalNode.VIEW );
91
+ export const normalWorld = nodeImmutable( NormalNode, NormalNode.WORLD );
92
+ export const transformedNormalView = label( normalView, 'TransformedNormalView' );
93
+ export const transformedNormalWorld = transformedNormalView.transformDirection( cameraViewMatrix ).normalize();
94
+
95
+ addNodeClass( NormalNode );