super-three 0.165.0 → 0.168.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 (462) hide show
  1. package/build/three.cjs +854 -410
  2. package/build/three.module.js +849 -411
  3. package/build/three.module.min.js +1 -1
  4. package/build/three.webgpu.js +77755 -0
  5. package/build/three.webgpu.min.js +6 -0
  6. package/examples/jsm/Addons.js +5 -2
  7. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  8. package/examples/jsm/capabilities/WebGL.js +27 -21
  9. package/examples/jsm/controls/ArcballControls.js +174 -158
  10. package/examples/jsm/controls/DragControls.js +260 -132
  11. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  12. package/examples/jsm/controls/FlyControls.js +194 -188
  13. package/examples/jsm/controls/OrbitControls.js +777 -786
  14. package/examples/jsm/controls/PointerLockControls.js +24 -15
  15. package/examples/jsm/controls/TrackballControls.js +453 -452
  16. package/examples/jsm/csm/CSMShader.js +4 -4
  17. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  18. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  19. package/examples/jsm/effects/StereoEffect.js +6 -1
  20. package/examples/jsm/environments/RoomEnvironment.js +1 -1
  21. package/examples/jsm/exporters/GLTFExporter.js +13 -4
  22. package/examples/jsm/exporters/USDZExporter.js +29 -8
  23. package/examples/jsm/geometries/TeapotGeometry.js +1 -1
  24. package/examples/jsm/helpers/LightProbeHelper.js +42 -43
  25. package/examples/jsm/helpers/ViewHelper.js +51 -2
  26. package/examples/jsm/libs/tween.module.js +64 -75
  27. package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
  28. package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
  29. package/examples/jsm/lines/webgpu/Line2.js +20 -0
  30. package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
  31. package/examples/jsm/loaders/FBXLoader.js +23 -45
  32. package/examples/jsm/loaders/GLTFLoader.js +10 -4
  33. package/examples/jsm/loaders/KTX2Loader.js +19 -7
  34. package/examples/jsm/loaders/MaterialXLoader.js +10 -10
  35. package/examples/jsm/loaders/PCDLoader.js +9 -9
  36. package/examples/jsm/loaders/USDZLoader.js +124 -76
  37. package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
  38. package/examples/jsm/loaders/VTKLoader.js +76 -3
  39. package/examples/jsm/misc/GPUComputationRenderer.js +9 -19
  40. package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
  41. package/examples/jsm/objects/InstancedPoints.js +2 -2
  42. package/examples/jsm/objects/SkyMesh.js +188 -0
  43. package/examples/jsm/objects/Water2Mesh.js +159 -0
  44. package/examples/jsm/objects/WaterMesh.js +102 -0
  45. package/examples/jsm/physics/RapierPhysics.js +20 -0
  46. package/examples/jsm/postprocessing/OutlinePass.js +31 -46
  47. package/examples/jsm/postprocessing/RenderTransitionPass.js +13 -38
  48. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  49. package/examples/jsm/postprocessing/SSAOPass.js +6 -9
  50. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
  51. package/examples/jsm/shaders/BleachBypassShader.js +1 -2
  52. package/examples/jsm/shaders/ColorifyShader.js +1 -2
  53. package/examples/jsm/shaders/FXAAShader.js +0 -2
  54. package/examples/jsm/shaders/GTAOShader.js +1 -1
  55. package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
  56. package/examples/jsm/shaders/OutputShader.js +1 -1
  57. package/examples/jsm/transpiler/GLSLDecoder.js +46 -4
  58. package/examples/jsm/transpiler/TSLEncoder.js +24 -22
  59. package/examples/jsm/utils/TextureUtils.js +1 -1
  60. package/package.json +8 -6
  61. package/src/Three.WebGPU.js +200 -0
  62. package/src/Three.js +3 -0
  63. package/src/constants.js +4 -1
  64. package/src/core/Object3D.js +22 -22
  65. package/src/extras/Controls.js +32 -0
  66. package/src/extras/TextureUtils.js +210 -0
  67. package/src/lights/Light.js +1 -0
  68. package/src/lights/LightShadow.js +5 -0
  69. package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
  70. package/src/loaders/ObjectLoader.js +33 -2
  71. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeLoader.js +6 -4
  72. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeMaterialLoader.js +2 -2
  73. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeObjectLoader.js +2 -1
  74. package/src/materials/Material.js +7 -1
  75. package/{examples/jsm/nodes/materials → src/materials/nodes}/InstancedPointsNodeMaterial.js +36 -27
  76. package/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +37 -40
  77. package/src/materials/nodes/LineBasicNodeMaterial.js +27 -0
  78. package/{examples/jsm/nodes/materials → src/materials/nodes}/LineDashedNodeMaterial.js +10 -11
  79. package/src/materials/nodes/MeshBasicNodeMaterial.js +73 -0
  80. package/src/materials/nodes/MeshLambertNodeMaterial.js +43 -0
  81. package/src/materials/nodes/MeshMatcapNodeMaterial.js +53 -0
  82. package/src/materials/nodes/MeshNormalNodeMaterial.js +40 -0
  83. package/src/materials/nodes/MeshPhongNodeMaterial.js +74 -0
  84. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshPhysicalNodeMaterial.js +22 -20
  85. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshSSSNodeMaterial.js +6 -6
  86. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshStandardNodeMaterial.js +28 -11
  87. package/src/materials/nodes/MeshToonNodeMaterial.js +34 -0
  88. package/{examples/jsm/nodes/materials → src/materials/nodes}/NodeMaterial.js +142 -96
  89. package/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +1 -1
  90. package/{examples/jsm/nodes/materials → src/materials/nodes}/PointsNodeMaterial.js +5 -6
  91. package/src/materials/nodes/ShadowNodeMaterial.js +34 -0
  92. package/{examples/jsm/nodes/materials → src/materials/nodes}/SpriteNodeMaterial.js +13 -13
  93. package/{examples/jsm/nodes/materials → src/materials/nodes}/VolumeNodeMaterial.js +14 -16
  94. package/src/math/Box2.js +4 -4
  95. package/src/math/Box3.js +6 -6
  96. package/src/math/ColorManagement.js +10 -0
  97. package/src/math/Matrix2.js +54 -0
  98. package/src/math/Vector4.js +13 -0
  99. package/src/nodes/Nodes.js +164 -0
  100. package/src/nodes/TSL.js +176 -0
  101. package/{examples/jsm → src}/nodes/accessors/AccessorsUtils.js +8 -8
  102. package/src/nodes/accessors/BatchNode.js +124 -0
  103. package/{examples/jsm/nodes/accessors/BitangentNode.js → src/nodes/accessors/Bitangent.js} +9 -9
  104. package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +41 -6
  105. package/{examples/jsm → src}/nodes/accessors/BufferNode.js +4 -4
  106. package/src/nodes/accessors/Camera.js +19 -0
  107. package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +16 -14
  108. package/src/nodes/accessors/CubeTextureNode.js +76 -0
  109. package/src/nodes/accessors/InstanceNode.js +144 -0
  110. package/src/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
  111. package/{examples/jsm → src}/nodes/accessors/MaterialNode.js +66 -49
  112. package/src/nodes/accessors/MaterialProperties.js +3 -0
  113. package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +6 -4
  114. package/src/nodes/accessors/ModelNode.js +37 -0
  115. package/{examples/jsm → src}/nodes/accessors/ModelViewProjectionNode.js +6 -7
  116. package/{examples/jsm → src}/nodes/accessors/MorphNode.js +35 -31
  117. package/src/nodes/accessors/Normal.js +62 -0
  118. package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +11 -11
  119. package/src/nodes/accessors/PointUVNode.js +26 -0
  120. package/src/nodes/accessors/Position.js +10 -0
  121. package/src/nodes/accessors/ReferenceBaseNode.js +143 -0
  122. package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +14 -8
  123. package/src/nodes/accessors/ReflectVector.js +10 -0
  124. package/{examples/jsm → src}/nodes/accessors/RendererReferenceNode.js +6 -6
  125. package/{examples/jsm → src}/nodes/accessors/SceneNode.js +5 -6
  126. package/src/nodes/accessors/SkinningNode.js +187 -0
  127. package/{examples/jsm → src}/nodes/accessors/StorageBufferNode.js +54 -6
  128. package/{examples/jsm → src}/nodes/accessors/StorageTextureNode.js +16 -7
  129. package/src/nodes/accessors/Tangent.js +22 -0
  130. package/{examples/jsm → src}/nodes/accessors/Texture3DNode.js +11 -11
  131. package/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +3 -32
  132. package/{examples/jsm → src}/nodes/accessors/TextureNode.js +69 -37
  133. package/{examples/jsm → src}/nodes/accessors/TextureSizeNode.js +4 -6
  134. package/{examples/jsm/nodes/accessors/UniformsNode.js → src/nodes/accessors/UniformArrayNode.js} +24 -9
  135. package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +4 -4
  136. package/src/nodes/accessors/VelocityNode.js +83 -0
  137. package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +6 -5
  138. package/{examples/jsm → src}/nodes/code/CodeNode.js +5 -5
  139. package/{examples/jsm → src}/nodes/code/ExpressionNode.js +4 -4
  140. package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +5 -5
  141. package/{examples/jsm → src}/nodes/code/FunctionNode.js +5 -23
  142. package/{examples/jsm → src}/nodes/code/ScriptableNode.js +18 -6
  143. package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +6 -7
  144. package/{examples/jsm → src}/nodes/core/AssignNode.js +5 -5
  145. package/{examples/jsm → src}/nodes/core/AttributeNode.js +22 -21
  146. package/{examples/jsm → src}/nodes/core/BypassNode.js +5 -5
  147. package/src/nodes/core/CacheNode.js +46 -0
  148. package/{examples/jsm → src}/nodes/core/ConstNode.js +2 -2
  149. package/{examples/jsm → src}/nodes/core/ContextNode.js +17 -11
  150. package/{examples/jsm → src}/nodes/core/IndexNode.js +17 -6
  151. package/{examples/jsm → src}/nodes/core/InputNode.js +2 -2
  152. package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
  153. package/src/nodes/core/MRTNode.js +82 -0
  154. package/{examples/jsm → src}/nodes/core/Node.js +57 -31
  155. package/{examples/jsm → src}/nodes/core/NodeBuilder.js +216 -65
  156. package/src/nodes/core/NodeCache.js +36 -0
  157. package/{examples/jsm → src}/nodes/core/NodeFrame.js +42 -0
  158. package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
  159. package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
  160. package/{examples/jsm → src}/nodes/core/NodeUtils.js +7 -1
  161. package/{examples/jsm → src}/nodes/core/OutputStructNode.js +4 -4
  162. package/{examples/jsm → src}/nodes/core/ParameterNode.js +4 -4
  163. package/src/nodes/core/PropertyNode.js +84 -0
  164. package/{examples/jsm → src}/nodes/core/StackNode.js +26 -10
  165. package/{examples/jsm → src}/nodes/core/StructTypeNode.js +2 -2
  166. package/{examples/jsm → src}/nodes/core/TempNode.js +4 -4
  167. package/src/nodes/core/UniformGroupNode.js +55 -0
  168. package/{examples/jsm → src}/nodes/core/UniformNode.js +14 -5
  169. package/{examples/jsm → src}/nodes/core/VarNode.js +8 -12
  170. package/{examples/jsm → src}/nodes/core/VaryingNode.js +13 -5
  171. package/{examples/jsm → src}/nodes/display/AfterImageNode.js +27 -35
  172. package/src/nodes/display/AnaglyphPassNode.js +61 -0
  173. package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +27 -30
  174. package/src/nodes/display/BleachBypass.js +26 -0
  175. package/src/nodes/display/BlendMode.js +54 -0
  176. package/src/nodes/display/BloomNode.js +335 -0
  177. package/{examples/jsm → src}/nodes/display/BumpMapNode.js +7 -12
  178. package/src/nodes/display/ColorAdjustment.js +46 -0
  179. package/src/nodes/display/ColorSpaceFunctions.js +38 -0
  180. package/src/nodes/display/ColorSpaceNode.js +85 -0
  181. package/src/nodes/display/DenoiseNode.js +201 -0
  182. package/src/nodes/display/DepthOfFieldNode.js +121 -0
  183. package/src/nodes/display/DotScreenNode.js +63 -0
  184. package/src/nodes/display/FXAANode.js +329 -0
  185. package/src/nodes/display/FilmNode.js +53 -0
  186. package/src/nodes/display/FrontFacingNode.js +41 -0
  187. package/src/nodes/display/GTAONode.js +328 -0
  188. package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +44 -24
  189. package/src/nodes/display/Lut3DNode.js +54 -0
  190. package/src/nodes/display/MotionBlur.js +25 -0
  191. package/{examples/jsm → src}/nodes/display/NormalMapNode.js +9 -11
  192. package/src/nodes/display/ParallaxBarrierPassNode.js +55 -0
  193. package/src/nodes/display/PassNode.js +367 -0
  194. package/src/nodes/display/PixelationPassNode.js +206 -0
  195. package/{examples/jsm → src}/nodes/display/PosterizeNode.js +4 -6
  196. package/src/nodes/display/RGBShiftNode.js +50 -0
  197. package/src/nodes/display/RenderOutputNode.js +56 -0
  198. package/src/nodes/display/SSAAPassNode.js +284 -0
  199. package/src/nodes/display/Sepia.js +17 -0
  200. package/src/nodes/display/SobelOperatorNode.js +123 -0
  201. package/src/nodes/display/StereoCompositePassNode.js +107 -0
  202. package/src/nodes/display/StereoPassNode.js +80 -0
  203. package/src/nodes/display/ToneMappingFunctions.js +190 -0
  204. package/src/nodes/display/ToneMappingNode.js +66 -0
  205. package/src/nodes/display/TransitionNode.js +77 -0
  206. package/src/nodes/display/ViewportDepthNode.js +121 -0
  207. package/src/nodes/display/ViewportDepthTextureNode.js +30 -0
  208. package/{examples/jsm → src}/nodes/display/ViewportNode.js +28 -26
  209. package/src/nodes/display/ViewportSharedTextureNode.js +36 -0
  210. package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +12 -12
  211. package/{examples/jsm → src}/nodes/fog/FogExp2Node.js +4 -6
  212. package/{examples/jsm → src}/nodes/fog/FogNode.js +5 -7
  213. package/{examples/jsm → src}/nodes/fog/FogRangeNode.js +4 -6
  214. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_GGX.js +4 -4
  215. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  216. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  217. package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +2 -2
  218. package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
  219. package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
  220. package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  221. package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
  222. package/src/nodes/functions/BSDF/LTC.js +131 -0
  223. package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  224. package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  225. package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  226. package/src/nodes/functions/BasicLightingModel.js +78 -0
  227. package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +10 -8
  228. package/{examples/jsm → src}/nodes/functions/PhysicalLightingModel.js +73 -31
  229. package/{examples/jsm → src}/nodes/functions/ShadowMaskModel.js +1 -1
  230. package/{examples/jsm → src}/nodes/functions/ToonLightingModel.js +6 -4
  231. package/src/nodes/functions/material/getGeometryRoughness.js +13 -0
  232. package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
  233. package/{examples/jsm → src}/nodes/geometry/RangeNode.js +23 -10
  234. package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +5 -5
  235. package/src/nodes/lighting/AONode.js +24 -0
  236. package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +2 -7
  237. package/src/nodes/lighting/AnalyticLightNode.js +354 -0
  238. package/src/nodes/lighting/BasicEnvironmentNode.js +27 -0
  239. package/src/nodes/lighting/BasicLightMapNode.js +29 -0
  240. package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +3 -9
  241. package/{examples/jsm → src}/nodes/lighting/EnvironmentNode.js +23 -21
  242. package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +4 -7
  243. package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +3 -8
  244. package/{examples/jsm → src}/nodes/lighting/IrradianceNode.js +2 -2
  245. package/{examples/jsm → src}/nodes/lighting/LightNode.js +5 -5
  246. package/src/nodes/lighting/LightProbeNode.js +76 -0
  247. package/{examples/jsm → src}/nodes/lighting/LightUtils.js +3 -3
  248. package/src/nodes/lighting/LightingContextNode.js +64 -0
  249. package/{examples/jsm → src}/nodes/lighting/LightingNode.js +4 -2
  250. package/src/nodes/lighting/LightsNode.js +231 -0
  251. package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +4 -10
  252. package/src/nodes/lighting/RectAreaLightNode.js +93 -0
  253. package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +4 -10
  254. package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +2 -2
  255. package/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +43 -46
  256. package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +500 -603
  257. package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
  258. package/{examples/jsm/nodes/math/CondNode.js → src/nodes/math/ConditionalNode.js} +31 -13
  259. package/src/nodes/math/Hash.js +13 -0
  260. package/src/nodes/math/MathNode.js +404 -0
  261. package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -7
  262. package/{examples/jsm → src}/nodes/math/OperatorNode.js +100 -58
  263. package/{examples/jsm → src}/nodes/math/TriNoise3D.js +19 -29
  264. package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
  265. package/{examples/jsm → src}/nodes/pmrem/PMREMNode.js +60 -16
  266. package/{examples/jsm → src}/nodes/pmrem/PMREMUtils.js +46 -46
  267. package/src/nodes/procedural/Checker.js +14 -0
  268. package/src/nodes/tsl/TSLBase.js +30 -0
  269. package/{examples/jsm/nodes/shadernode/ShaderNode.js → src/nodes/tsl/TSLCore.js} +106 -96
  270. package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +2 -2
  271. package/{examples/jsm → src}/nodes/utils/ConvertNode.js +2 -2
  272. package/src/nodes/utils/CubeMapNode.js +157 -0
  273. package/src/nodes/utils/Discard.js +8 -0
  274. package/{examples/jsm → src}/nodes/utils/EquirectUVNode.js +5 -5
  275. package/src/nodes/utils/FlipNode.js +65 -0
  276. package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +7 -5
  277. package/{examples/jsm → src}/nodes/utils/JoinNode.js +2 -2
  278. package/{examples/jsm → src}/nodes/utils/LoopNode.js +19 -12
  279. package/{examples/jsm → src}/nodes/utils/MatcapUVNode.js +6 -6
  280. package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +12 -6
  281. package/{examples/jsm → src}/nodes/utils/OscNode.js +7 -7
  282. package/src/nodes/utils/Packing.js +4 -0
  283. package/src/nodes/utils/RTTNode.js +130 -0
  284. package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +17 -4
  285. package/{examples/jsm → src}/nodes/utils/RemapNode.js +7 -7
  286. package/{examples/jsm → src}/nodes/utils/RotateNode.js +4 -12
  287. package/{examples/jsm → src}/nodes/utils/SetNode.js +2 -2
  288. package/{examples/jsm → src}/nodes/utils/SplitNode.js +2 -2
  289. package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +5 -5
  290. package/src/nodes/utils/SpriteUtils.js +47 -0
  291. package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +4 -6
  292. package/{examples/jsm → src}/nodes/utils/TimerNode.js +5 -5
  293. package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +7 -9
  294. package/src/nodes/utils/UVUtils.js +19 -0
  295. package/src/nodes/utils/ViewportUtils.js +14 -0
  296. package/src/objects/BatchedMesh.js +169 -190
  297. package/src/objects/InstancedMesh.js +1 -1
  298. package/src/renderers/WebGLRenderer.js +60 -23
  299. package/{examples/jsm → src}/renderers/common/Attributes.js +2 -1
  300. package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
  301. package/{examples/jsm → src}/renderers/common/Background.js +12 -4
  302. package/src/renderers/common/BindGroup.js +18 -0
  303. package/{examples/jsm → src}/renderers/common/Bindings.js +45 -32
  304. package/{examples/jsm → src}/renderers/common/ClippingContext.js +18 -7
  305. package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
  306. package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +16 -4
  307. package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
  308. package/{examples/jsm → src}/renderers/common/Info.js +34 -6
  309. package/src/renderers/common/PostProcessing.js +90 -0
  310. package/{examples/jsm/objects → src/renderers/common}/QuadMesh.js +8 -3
  311. package/{examples/jsm → src}/renderers/common/RenderContext.js +25 -1
  312. package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
  313. package/{examples/jsm → src}/renderers/common/RenderList.js +1 -1
  314. package/{examples/jsm → src}/renderers/common/RenderObject.js +45 -12
  315. package/{examples/jsm → src}/renderers/common/Renderer.js +151 -73
  316. package/{examples/jsm → src}/renderers/common/SampledTexture.js +14 -5
  317. package/src/renderers/common/StandardRenderer.js +18 -0
  318. package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
  319. package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
  320. package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
  321. package/{examples/jsm → src}/renderers/common/Textures.js +14 -14
  322. package/{examples/jsm → src}/renderers/common/Uniform.js +9 -4
  323. package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
  324. package/{examples/jsm → src}/renderers/common/extras/PMREMGenerator.js +25 -25
  325. package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
  326. package/src/renderers/common/nodes/NodeLibrary.js +118 -0
  327. package/{examples/jsm → src}/renderers/common/nodes/NodeSampledTexture.js +8 -7
  328. package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +2 -1
  329. package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
  330. package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
  331. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
  332. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
  333. package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +69 -21
  334. package/src/renderers/common/nodes/StandardNodeLibrary.js +105 -0
  335. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +16 -1
  336. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  337. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +1 -1
  338. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
  339. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
  340. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  341. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  342. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -4
  343. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  344. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  345. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
  346. package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
  347. package/src/renderers/shaders/UniformsLib.js +3 -0
  348. package/src/renderers/webgl/WebGLAttributes.js +2 -2
  349. package/src/renderers/webgl/WebGLBufferRenderer.js +6 -19
  350. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +6 -18
  351. package/src/renderers/webgl/WebGLLights.js +6 -0
  352. package/src/renderers/webgl/WebGLProgram.js +27 -1
  353. package/src/renderers/webgl/WebGLPrograms.js +1 -1
  354. package/src/renderers/webgl/WebGLProperties.js +7 -0
  355. package/src/renderers/webgl/WebGLTextures.js +75 -57
  356. package/src/renderers/webgl/WebGLUniforms.js +12 -2
  357. package/src/renderers/webgl/WebGLUniformsGroups.js +7 -7
  358. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +242 -120
  359. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +227 -44
  360. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +2 -2
  361. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +1 -0
  362. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
  363. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +22 -1
  364. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +62 -23
  365. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +1 -1
  366. package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +242 -136
  367. package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +9 -9
  368. package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +281 -107
  369. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
  370. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  371. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +64 -33
  372. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +4 -1
  373. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +34 -36
  374. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
  375. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +76 -44
  376. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +42 -4
  377. package/src/renderers/webxr/WebXRDepthSensing.js +6 -0
  378. package/src/renderers/webxr/WebXRManager.js +37 -24
  379. package/src/textures/CompressedArrayTexture.js +1 -1
  380. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  381. package/examples/jsm/nodes/Nodes.js +0 -202
  382. package/examples/jsm/nodes/accessors/BatchNode.js +0 -78
  383. package/examples/jsm/nodes/accessors/CameraNode.js +0 -12
  384. package/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
  385. package/examples/jsm/nodes/accessors/InstanceNode.js +0 -94
  386. package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  387. package/examples/jsm/nodes/accessors/ModelNode.js +0 -36
  388. package/examples/jsm/nodes/accessors/NormalNode.js +0 -14
  389. package/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
  390. package/examples/jsm/nodes/accessors/PositionNode.js +0 -10
  391. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -6
  392. package/examples/jsm/nodes/accessors/SkinningNode.js +0 -124
  393. package/examples/jsm/nodes/accessors/TangentNode.js +0 -23
  394. package/examples/jsm/nodes/core/CacheNode.js +0 -49
  395. package/examples/jsm/nodes/core/NodeCache.js +0 -26
  396. package/examples/jsm/nodes/core/NodeKeywords.js +0 -80
  397. package/examples/jsm/nodes/core/PropertyNode.js +0 -83
  398. package/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
  399. package/examples/jsm/nodes/display/BlendModeNode.js +0 -128
  400. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
  401. package/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
  402. package/examples/jsm/nodes/display/FrontFacingNode.js +0 -40
  403. package/examples/jsm/nodes/display/PassNode.js +0 -201
  404. package/examples/jsm/nodes/display/ToneMappingNode.js +0 -188
  405. package/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
  406. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
  407. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -37
  408. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
  409. package/examples/jsm/nodes/lighting/AONode.js +0 -27
  410. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -256
  411. package/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
  412. package/examples/jsm/nodes/lighting/LightsNode.js +0 -215
  413. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
  414. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  415. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
  416. package/examples/jsm/nodes/materials/MeshMatcapNodeMaterial.js +0 -52
  417. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -38
  418. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
  419. package/examples/jsm/nodes/materials/MeshToonNodeMaterial.js +0 -34
  420. package/examples/jsm/nodes/materials/ShadowNodeMaterial.js +0 -34
  421. package/examples/jsm/nodes/math/HashNode.js +0 -34
  422. package/examples/jsm/nodes/math/MathNode.js +0 -391
  423. package/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
  424. package/examples/jsm/nodes/utils/DiscardNode.js +0 -27
  425. package/examples/jsm/nodes/utils/PackingNode.js +0 -55
  426. package/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
  427. package/examples/jsm/renderers/common/PostProcessing.js +0 -33
  428. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  429. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  430. /package/{examples/jsm/nodes/accessors/UVNode.js → src/nodes/accessors/UV.js} +0 -0
  431. /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
  432. /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
  433. /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
  434. /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
  435. /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
  436. /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
  437. /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
  438. /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
  439. /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
  440. /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
  441. /package/{examples/jsm → src}/renderers/common/Animation.js +0 -0
  442. /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
  443. /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
  444. /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
  445. /package/{examples/jsm → src}/renderers/common/ChainMap.js +0 -0
  446. /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
  447. /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
  448. /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
  449. /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
  450. /package/{examples/jsm → src}/renderers/common/Pipelines.js +0 -0
  451. /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
  452. /package/{examples/jsm → src}/renderers/common/RenderBundle.js +0 -0
  453. /package/{examples/jsm → src}/renderers/common/RenderBundles.js +0 -0
  454. /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
  455. /package/{examples/jsm → src}/renderers/common/RenderObjects.js +0 -0
  456. /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
  457. /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
  458. /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
  459. /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
  460. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBufferRenderer.js +0 -0
  461. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
  462. /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
@@ -164,6 +164,7 @@ class ObjectLoader extends Loader {
164
164
  const skeletons = this.parseSkeletons( json.skeletons, object );
165
165
 
166
166
  this.bindSkeletons( object, skeletons );
167
+ this.bindLightTargets( object );
167
168
 
168
169
  //
169
170
 
@@ -205,6 +206,7 @@ class ObjectLoader extends Loader {
205
206
  const skeletons = this.parseSkeletons( json.skeletons, object );
206
207
 
207
208
  this.bindSkeletons( object, skeletons );
209
+ this.bindLightTargets( object );
208
210
 
209
211
  return object;
210
212
 
@@ -849,6 +851,7 @@ class ObjectLoader extends Loader {
849
851
  case 'DirectionalLight':
850
852
 
851
853
  object = new DirectionalLight( data.color, data.intensity );
854
+ object.target = data.target || '';
852
855
 
853
856
  break;
854
857
 
@@ -867,6 +870,7 @@ class ObjectLoader extends Loader {
867
870
  case 'SpotLight':
868
871
 
869
872
  object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );
873
+ object.target = data.target || '';
870
874
 
871
875
  break;
872
876
 
@@ -923,7 +927,7 @@ class ObjectLoader extends Loader {
923
927
  geometry = getGeometry( data.geometry );
924
928
  material = getMaterial( data.material );
925
929
 
926
- object = new BatchedMesh( data.maxGeometryCount, data.maxVertexCount, data.maxIndexCount, material );
930
+ object = new BatchedMesh( data.maxInstanceCount, data.maxVertexCount, data.maxIndexCount, material );
927
931
  object.geometry = geometry;
928
932
  object.perObjectFrustumCulled = data.perObjectFrustumCulled;
929
933
  object.sortObjects = data.sortObjects;
@@ -953,7 +957,7 @@ class ObjectLoader extends Loader {
953
957
 
954
958
  } );
955
959
 
956
- object._maxGeometryCount = data.maxGeometryCount;
960
+ object._maxInstanceCount = data.maxInstanceCount;
957
961
  object._maxVertexCount = data.maxVertexCount;
958
962
  object._maxIndexCount = data.maxIndexCount;
959
963
 
@@ -1047,6 +1051,7 @@ class ObjectLoader extends Loader {
1047
1051
 
1048
1052
  if ( data.shadow ) {
1049
1053
 
1054
+ if ( data.shadow.intensity !== undefined ) object.shadow.intensity = data.shadow.intensity;
1050
1055
  if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;
1051
1056
  if ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;
1052
1057
  if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;
@@ -1138,6 +1143,32 @@ class ObjectLoader extends Loader {
1138
1143
 
1139
1144
  }
1140
1145
 
1146
+ bindLightTargets( object ) {
1147
+
1148
+ object.traverse( function ( child ) {
1149
+
1150
+ if ( child.isDirectionalLight || child.isSpotLight ) {
1151
+
1152
+ const uuid = child.target;
1153
+
1154
+ const target = object.getObjectByProperty( 'uuid', uuid );
1155
+
1156
+ if ( target !== undefined ) {
1157
+
1158
+ child.target = target;
1159
+
1160
+ } else {
1161
+
1162
+ child.target = new Object3D();
1163
+
1164
+ }
1165
+
1166
+ }
1167
+
1168
+ } );
1169
+
1170
+ }
1171
+
1141
1172
  }
1142
1173
 
1143
1174
  const TEXTURE_MAPPING = {
@@ -1,6 +1,8 @@
1
- import { createNodeFromType } from '../core/Node.js';
2
- import { nodeObject } from '../shadernode/ShaderNode.js';
3
- import { FileLoader, Loader } from 'three';
1
+ import { createNodeFromType } from '../../nodes/core/Node.js';
2
+ import { nodeObject } from '../../nodes/tsl/TSLBase.js';
3
+
4
+ import { Loader } from '../Loader.js';
5
+ import { FileLoader } from '../../loaders/FileLoader.js';
4
6
 
5
7
  class NodeLoader extends Loader {
6
8
 
@@ -54,7 +56,7 @@ class NodeLoader extends Loader {
54
56
 
55
57
  const { uuid, type } = nodeJSON;
56
58
 
57
- nodes[ uuid ] = nodeObject( createNodeFromType( type ) ); // @TODO: Maybe nodeObjectify the node in createNodeFromType?
59
+ nodes[ uuid ] = nodeObject( createNodeFromType( type ) );
58
60
  nodes[ uuid ].uuid = uuid;
59
61
 
60
62
  }
@@ -1,5 +1,5 @@
1
- import { MaterialLoader } from 'three';
2
- import { createNodeMaterialFromType } from '../materials/Materials.js';
1
+ import { MaterialLoader } from '../../loaders/MaterialLoader.js';
2
+ import { createNodeMaterialFromType } from '../../materials/nodes/NodeMaterial.js';
3
3
 
4
4
  const superFromTypeFunction = MaterialLoader.createMaterialFromType;
5
5
 
@@ -1,6 +1,7 @@
1
1
  import NodeLoader from './NodeLoader.js';
2
2
  import NodeMaterialLoader from './NodeMaterialLoader.js';
3
- import { ObjectLoader } from 'three';
3
+
4
+ import { ObjectLoader } from '../../loaders/ObjectLoader.js';
4
5
 
5
6
  class NodeObjectLoader extends ObjectLoader {
6
7
 
@@ -100,7 +100,7 @@ class Material extends EventDispatcher {
100
100
 
101
101
  }
102
102
 
103
- onBuild( /* shaderobject, renderer */ ) {}
103
+ // onBeforeRender and onBeforeCompile only supported in WebGLRenderer
104
104
 
105
105
  onBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}
106
106
 
@@ -520,6 +520,12 @@ class Material extends EventDispatcher {
520
520
 
521
521
  }
522
522
 
523
+ onBuild( /* shaderobject, renderer */ ) {
524
+
525
+ console.warn( 'Material: onBuild() has been removed.' ); // @deprecated, r166
526
+
527
+ }
528
+
523
529
  }
524
530
 
525
531
  export { Material };
@@ -1,19 +1,18 @@
1
- import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js';
2
- import { varying } from '../core/VaryingNode.js';
3
- import { property } from '../core/PropertyNode.js';
4
- import { attribute } from '../core/AttributeNode.js';
5
- import { cameraProjectionMatrix } from '../accessors/CameraNode.js';
6
- import { materialColor, materialPointWidth } from '../accessors/MaterialNode.js'; // or should this be a property, instead?
7
- import { modelViewMatrix } from '../accessors/ModelNode.js';
8
- import { positionGeometry } from '../accessors/PositionNode.js';
9
- import { smoothstep } from '../math/MathNode.js';
10
- import { tslFn, vec2, vec4 } from '../shadernode/ShaderNode.js';
11
- import { uv } from '../accessors/UVNode.js';
12
- import { viewport } from '../display/ViewportNode.js';
13
-
14
- import { PointsMaterial } from 'three';
15
-
16
- const defaultValues = new PointsMaterial();
1
+ import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
2
+ import { property } from '../../nodes/core/PropertyNode.js';
3
+ import { attribute } from '../../nodes/core/AttributeNode.js';
4
+ import { cameraProjectionMatrix } from '../../nodes/accessors/Camera.js';
5
+ import { materialColor, materialOpacity, materialPointWidth } from '../../nodes/accessors/MaterialNode.js'; // or should this be a property, instead?
6
+ import { modelViewMatrix } from '../../nodes/accessors/ModelNode.js';
7
+ import { positionGeometry } from '../../nodes/accessors/Position.js';
8
+ import { smoothstep } from '../../nodes/math/MathNode.js';
9
+ import { Fn, varying, vec2, vec4 } from '../../nodes/tsl/TSLBase.js';
10
+ import { uv } from '../../nodes/accessors/UV.js';
11
+ import { viewport } from '../../nodes/display/ViewportNode.js';
12
+
13
+ import { PointsMaterial } from '../PointsMaterial.js';
14
+
15
+ const _defaultValues = /*@__PURE__*/ new PointsMaterial();
17
16
 
18
17
  class InstancedPointsNodeMaterial extends NodeMaterial {
19
18
 
@@ -21,8 +20,6 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
21
20
 
22
21
  super();
23
22
 
24
- this.normals = false;
25
-
26
23
  this.lights = false;
27
24
 
28
25
  this.useAlphaToCoverage = true;
@@ -33,7 +30,9 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
33
30
 
34
31
  this.pointColorNode = null;
35
32
 
36
- this.setDefaultValues( defaultValues );
33
+ this.pointWidthNode = null;
34
+
35
+ this.setDefaultValues( _defaultValues );
37
36
 
38
37
  this.setupShaders();
39
38
 
@@ -41,17 +40,25 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
41
40
 
42
41
  }
43
42
 
43
+ setup( builder ) {
44
+
45
+ this.setupShaders();
46
+
47
+ super.setup( builder );
48
+
49
+ }
50
+
44
51
  setupShaders() {
45
52
 
46
53
  const useAlphaToCoverage = this.alphaToCoverage;
47
54
  const useColor = this.useColor;
48
55
 
49
- this.vertexNode = tslFn( () => {
56
+ this.vertexNode = Fn( () => {
50
57
 
51
58
  //vUv = uv;
52
59
  varying( vec2(), 'vUv' ).assign( uv() ); // @TODO: Analyze other way to do this
53
60
 
54
- const instancePosition = attribute( 'instancePosition' );
61
+ const instancePosition = attribute( 'instancePosition' ).xyz;
55
62
 
56
63
  // camera space
57
64
  const mvPos = property( 'vec4', 'mvPos' );
@@ -65,7 +72,9 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
65
72
  // offset in ndc space
66
73
  const offset = property( 'vec2', 'offset' );
67
74
  offset.assign( positionGeometry.xy );
68
- offset.assign( offset.mul( materialPointWidth ) );
75
+
76
+ offset.mulAssign( this.pointWidthNode ? this.pointWidthNode : materialPointWidth );
77
+
69
78
  offset.assign( offset.div( viewport.z ) );
70
79
  offset.y.assign( offset.y.mul( aspect ) );
71
80
 
@@ -81,7 +90,7 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
81
90
 
82
91
  } )();
83
92
 
84
- this.fragmentNode = tslFn( () => {
93
+ this.fragmentNode = Fn( () => {
85
94
 
86
95
  const vUv = varying( vec2(), 'vUv' );
87
96
 
@@ -130,12 +139,12 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
130
139
 
131
140
  }
132
141
 
142
+ alpha.mulAssign( materialOpacity );
143
+
133
144
  return vec4( pointColorNode, alpha );
134
145
 
135
146
  } )();
136
147
 
137
- this.needsUpdate = true;
138
-
139
148
  }
140
149
 
141
150
  get alphaToCoverage() {
@@ -149,7 +158,7 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
149
158
  if ( this.useAlphaToCoverage !== value ) {
150
159
 
151
160
  this.useAlphaToCoverage = value;
152
- this.setupShaders();
161
+ this.needsUpdate = true;
153
162
 
154
163
  }
155
164
 
@@ -159,4 +168,4 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
159
168
 
160
169
  export default InstancedPointsNodeMaterial;
161
170
 
162
- addNodeMaterial( 'InstancedPointsNodeMaterial', InstancedPointsNodeMaterial );
171
+ InstancedPointsNodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'InstancedPoints', InstancedPointsNodeMaterial );
@@ -1,21 +1,19 @@
1
- import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js';
2
- import { temp } from '../core/VarNode.js';
3
- import { varying } from '../core/VaryingNode.js';
4
- import { property, varyingProperty } from '../core/PropertyNode.js';
5
- import { attribute } from '../core/AttributeNode.js';
6
- import { cameraProjectionMatrix } from '../accessors/CameraNode.js';
7
- import { materialColor, materialLineScale, materialLineDashSize, materialLineGapSize, materialLineDashOffset, materialLineWidth } from '../accessors/MaterialNode.js';
8
- import { modelViewMatrix } from '../accessors/ModelNode.js';
9
- import { positionGeometry } from '../accessors/PositionNode.js';
10
- import { mix, smoothstep } from '../math/MathNode.js';
11
- import { tslFn, float, vec2, vec3, vec4, If } from '../shadernode/ShaderNode.js';
12
- import { uv } from '../accessors/UVNode.js';
13
- import { viewport } from '../display/ViewportNode.js';
14
- import { dashSize, gapSize } from '../core/PropertyNode.js';
15
-
16
- import { LineDashedMaterial } from 'three';
17
-
18
- const defaultValues = new LineDashedMaterial();
1
+ import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
2
+ import { property, varyingProperty } from '../../nodes/core/PropertyNode.js';
3
+ import { attribute } from '../../nodes/core/AttributeNode.js';
4
+ import { cameraProjectionMatrix } from '../../nodes/accessors/Camera.js';
5
+ import { materialColor, materialLineScale, materialLineDashSize, materialLineGapSize, materialLineDashOffset, materialLineWidth } from '../../nodes/accessors/MaterialNode.js';
6
+ import { modelViewMatrix } from '../../nodes/accessors/ModelNode.js';
7
+ import { positionGeometry } from '../../nodes/accessors/Position.js';
8
+ import { mix, smoothstep } from '../../nodes/math/MathNode.js';
9
+ import { Fn, varying, float, vec2, vec3, vec4, If } from '../../nodes/tsl/TSLBase.js';
10
+ import { uv } from '../../nodes/accessors/UV.js';
11
+ import { viewport } from '../../nodes/display/ViewportNode.js';
12
+ import { dashSize, gapSize } from '../../nodes/core/PropertyNode.js';
13
+
14
+ import { LineDashedMaterial } from '../LineDashedMaterial.js';
15
+
16
+ const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
19
17
 
20
18
  class Line2NodeMaterial extends NodeMaterial {
21
19
 
@@ -23,10 +21,9 @@ class Line2NodeMaterial extends NodeMaterial {
23
21
 
24
22
  super();
25
23
 
26
- this.normals = false;
27
24
  this.lights = false;
28
25
 
29
- this.setDefaultValues( defaultValues );
26
+ this.setDefaultValues( _defaultValues );
30
27
 
31
28
  this.useAlphaToCoverage = true;
32
29
  this.useColor = params.vertexColors;
@@ -62,7 +59,7 @@ class Line2NodeMaterial extends NodeMaterial {
62
59
  const useDash = this.dashed;
63
60
  const useWorldUnits = this.worldUnits;
64
61
 
65
- const trimSegment = tslFn( ( { start, end } ) => {
62
+ const trimSegment = Fn( ( { start, end } ) => {
66
63
 
67
64
  const a = cameraProjectionMatrix.element( 2 ).element( 2 ); // 3nd entry in 3th column
68
65
  const b = cameraProjectionMatrix.element( 3 ).element( 2 ); // 3nd entry in 4th column
@@ -74,7 +71,7 @@ class Line2NodeMaterial extends NodeMaterial {
74
71
 
75
72
  } );
76
73
 
77
- this.vertexNode = tslFn( () => {
74
+ this.vertexNode = Fn( () => {
78
75
 
79
76
  varyingProperty( 'vec2', 'vUv' ).assign( uv() );
80
77
 
@@ -111,7 +108,7 @@ class Line2NodeMaterial extends NodeMaterial {
111
108
 
112
109
  end.assign( trimSegment( { start: start, end: end } ) );
113
110
 
114
- } ).elseif( end.z.lessThan( 0.0 ).and( start.z.greaterThanEqual( 0.0 ) ), () => {
111
+ } ).ElseIf( end.z.lessThan( 0.0 ).and( start.z.greaterThanEqual( 0.0 ) ), () => {
115
112
 
116
113
  start.assign( trimSegment( { start: end, end: start } ) );
117
114
 
@@ -128,13 +125,13 @@ class Line2NodeMaterial extends NodeMaterial {
128
125
  const ndcEnd = clipEnd.xyz.div( clipEnd.w );
129
126
 
130
127
  // direction
131
- const dir = ndcEnd.xy.sub( ndcStart.xy ).temp();
128
+ const dir = ndcEnd.xy.sub( ndcStart.xy ).toVar();
132
129
 
133
130
  // account for clip-space aspect ratio
134
131
  dir.x.assign( dir.x.mul( aspect ) );
135
132
  dir.assign( dir.normalize() );
136
133
 
137
- const clip = temp( vec4() );
134
+ const clip = vec4().toVar();
138
135
 
139
136
  if ( useWorldUnits ) {
140
137
 
@@ -147,18 +144,18 @@ class Line2NodeMaterial extends NodeMaterial {
147
144
 
148
145
  const worldPos = varyingProperty( 'vec4', 'worldPos' );
149
146
 
150
- worldPos.assign( positionGeometry.y.lessThan( 0.5 ).cond( start, end ) );
147
+ worldPos.assign( positionGeometry.y.lessThan( 0.5 ).select( start, end ) );
151
148
 
152
149
  // height offset
153
150
  const hw = materialLineWidth.mul( 0.5 );
154
- worldPos.addAssign( vec4( positionGeometry.x.lessThan( 0.0 ).cond( worldUp.mul( hw ), worldUp.mul( hw ).negate() ), 0 ) );
151
+ worldPos.addAssign( vec4( positionGeometry.x.lessThan( 0.0 ).select( worldUp.mul( hw ), worldUp.mul( hw ).negate() ), 0 ) );
155
152
 
156
153
  // don't extend the line if we're rendering dashes because we
157
154
  // won't be rendering the endcaps
158
155
  if ( ! useDash ) {
159
156
 
160
157
  // cap extension
161
- worldPos.addAssign( vec4( positionGeometry.y.lessThan( 0.5 ).cond( worldDir.mul( hw ).negate(), worldDir.mul( hw ) ), 0 ) );
158
+ worldPos.addAssign( vec4( positionGeometry.y.lessThan( 0.5 ).select( worldDir.mul( hw ).negate(), worldDir.mul( hw ) ), 0 ) );
162
159
 
163
160
  // add width to the box
164
161
  worldPos.addAssign( vec4( worldFwd.mul( hw ), 0 ) );
@@ -177,9 +174,9 @@ class Line2NodeMaterial extends NodeMaterial {
177
174
 
178
175
  // shift the depth of the projected points so the line
179
176
  // segments overlap neatly
180
- const clipPose = temp( vec3() );
177
+ const clipPose = vec3().toVar();
181
178
 
182
- clipPose.assign( positionGeometry.y.lessThan( 0.5 ).cond( ndcStart, ndcEnd ) );
179
+ clipPose.assign( positionGeometry.y.lessThan( 0.5 ).select( ndcStart, ndcEnd ) );
183
180
  clip.z.assign( clipPose.z.mul( clip.w ) );
184
181
 
185
182
  } else {
@@ -193,14 +190,14 @@ class Line2NodeMaterial extends NodeMaterial {
193
190
  offset.x.assign( offset.x.div( aspect ) );
194
191
 
195
192
  // sign flip
196
- offset.assign( positionGeometry.x.lessThan( 0.0 ).cond( offset.negate(), offset ) );
193
+ offset.assign( positionGeometry.x.lessThan( 0.0 ).select( offset.negate(), offset ) );
197
194
 
198
195
  // endcaps
199
196
  If( positionGeometry.y.lessThan( 0.0 ), () => {
200
197
 
201
198
  offset.assign( offset.sub( dir ) );
202
199
 
203
- } ).elseif( positionGeometry.y.greaterThan( 1.0 ), () => {
200
+ } ).ElseIf( positionGeometry.y.greaterThan( 1.0 ), () => {
204
201
 
205
202
  offset.assign( offset.add( dir ) );
206
203
 
@@ -213,7 +210,7 @@ class Line2NodeMaterial extends NodeMaterial {
213
210
  offset.assign( offset.div( viewport.w ) );
214
211
 
215
212
  // select end
216
- clip.assign( positionGeometry.y.lessThan( 0.5 ).cond( clipStart, clipEnd ) );
213
+ clip.assign( positionGeometry.y.lessThan( 0.5 ).select( clipStart, clipEnd ) );
217
214
 
218
215
  // back to clip space
219
216
  offset.assign( offset.mul( clip.w ) );
@@ -226,7 +223,7 @@ class Line2NodeMaterial extends NodeMaterial {
226
223
 
227
224
  } )();
228
225
 
229
- const closestLineToLine = tslFn( ( { p1, p2, p3, p4 } ) => {
226
+ const closestLineToLine = Fn( ( { p1, p2, p3, p4 } ) => {
230
227
 
231
228
  const p13 = p1.sub( p3 );
232
229
  const p43 = p4.sub( p3 );
@@ -249,7 +246,7 @@ class Line2NodeMaterial extends NodeMaterial {
249
246
 
250
247
  } );
251
248
 
252
- this.fragmentNode = tslFn( () => {
249
+ this.fragmentNode = Fn( () => {
253
250
 
254
251
  const vUv = varyingProperty( 'vec2', 'vUv' );
255
252
 
@@ -266,7 +263,7 @@ class Line2NodeMaterial extends NodeMaterial {
266
263
  const instanceDistanceStart = attribute( 'instanceDistanceStart' );
267
264
  const instanceDistanceEnd = attribute( 'instanceDistanceEnd' );
268
265
 
269
- const lineDistance = positionGeometry.y.lessThan( 0.5 ).cond( dashScaleNode.mul( instanceDistanceStart ), materialLineScale.mul( instanceDistanceEnd ) );
266
+ const lineDistance = positionGeometry.y.lessThan( 0.5 ).select( dashScaleNode.mul( instanceDistanceStart ), materialLineScale.mul( instanceDistanceEnd ) );
270
267
 
271
268
  const vLineDistance = varying( lineDistance.add( materialLineDashOffset ) );
272
269
  const vLineDistanceOffset = offsetNode ? vLineDistance.add( offsetNode ) : vLineDistance;
@@ -318,7 +315,7 @@ class Line2NodeMaterial extends NodeMaterial {
318
315
  if ( useAlphaToCoverage ) {
319
316
 
320
317
  const a = vUv.x;
321
- const b = vUv.y.greaterThan( 0.0 ).cond( vUv.y.sub( 1.0 ), vUv.y.add( 1.0 ) );
318
+ const b = vUv.y.greaterThan( 0.0 ).select( vUv.y.sub( 1.0 ), vUv.y.add( 1.0 ) );
322
319
 
323
320
  const len2 = a.mul( a ).add( b.mul( b ) );
324
321
 
@@ -337,7 +334,7 @@ class Line2NodeMaterial extends NodeMaterial {
337
334
  If( vUv.y.abs().greaterThan( 1.0 ), () => {
338
335
 
339
336
  const a = vUv.x;
340
- const b = vUv.y.greaterThan( 0.0 ).cond( vUv.y.sub( 1.0 ), vUv.y.add( 1.0 ) );
337
+ const b = vUv.y.greaterThan( 0.0 ).select( vUv.y.sub( 1.0 ), vUv.y.add( 1.0 ) );
341
338
  const len2 = a.mul( a ).add( b.mul( b ) );
342
339
 
343
340
  len2.greaterThan( 1.0 ).discard();
@@ -361,7 +358,7 @@ class Line2NodeMaterial extends NodeMaterial {
361
358
  const instanceColorStart = attribute( 'instanceColorStart' );
362
359
  const instanceColorEnd = attribute( 'instanceColorEnd' );
363
360
 
364
- const instanceColor = positionGeometry.y.lessThan( 0.5 ).cond( instanceColorStart, instanceColorEnd );
361
+ const instanceColor = positionGeometry.y.lessThan( 0.5 ).select( instanceColorStart, instanceColorEnd );
365
362
 
366
363
  lineColorNode = instanceColor.mul( materialColor );
367
364
 
@@ -437,4 +434,4 @@ class Line2NodeMaterial extends NodeMaterial {
437
434
 
438
435
  export default Line2NodeMaterial;
439
436
 
440
- addNodeMaterial( 'Line2NodeMaterial', Line2NodeMaterial );
437
+ Line2NodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'Line2', Line2NodeMaterial );
@@ -0,0 +1,27 @@
1
+ import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
2
+
3
+ import { LineBasicMaterial } from '../LineBasicMaterial.js';
4
+
5
+ const _defaultValues = /*@__PURE__*/ new LineBasicMaterial();
6
+
7
+ class LineBasicNodeMaterial extends NodeMaterial {
8
+
9
+ constructor( parameters ) {
10
+
11
+ super();
12
+
13
+ this.isLineBasicNodeMaterial = true;
14
+
15
+ this.lights = false;
16
+
17
+ this.setDefaultValues( _defaultValues );
18
+
19
+ this.setValues( parameters );
20
+
21
+ }
22
+
23
+ }
24
+
25
+ export default LineBasicNodeMaterial;
26
+
27
+ LineBasicNodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'LineBasic', LineBasicNodeMaterial );
@@ -1,12 +1,12 @@
1
- import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js';
2
- import { attribute } from '../core/AttributeNode.js';
3
- import { varying } from '../core/VaryingNode.js';
4
- import { materialLineDashSize, materialLineGapSize, materialLineScale } from '../accessors/MaterialNode.js';
5
- import { dashSize, gapSize } from '../core/PropertyNode.js';
6
- import { float } from '../shadernode/ShaderNode.js';
7
- import { LineDashedMaterial } from 'three';
1
+ import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
2
+ import { attribute } from '../../nodes/core/AttributeNode.js';
3
+ import { materialLineDashSize, materialLineGapSize, materialLineScale } from '../../nodes/accessors/MaterialNode.js';
4
+ import { dashSize, gapSize } from '../../nodes/core/PropertyNode.js';
5
+ import { varying, float } from '../../nodes/tsl/TSLBase.js';
8
6
 
9
- const defaultValues = new LineDashedMaterial();
7
+ import { LineDashedMaterial } from '../LineDashedMaterial.js';
8
+
9
+ const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
10
10
 
11
11
  class LineDashedNodeMaterial extends NodeMaterial {
12
12
 
@@ -17,9 +17,8 @@ class LineDashedNodeMaterial extends NodeMaterial {
17
17
  this.isLineDashedNodeMaterial = true;
18
18
 
19
19
  this.lights = false;
20
- this.normals = false;
21
20
 
22
- this.setDefaultValues( defaultValues );
21
+ this.setDefaultValues( _defaultValues );
23
22
 
24
23
  this.offsetNode = null;
25
24
  this.dashScaleNode = null;
@@ -51,4 +50,4 @@ class LineDashedNodeMaterial extends NodeMaterial {
51
50
 
52
51
  export default LineDashedNodeMaterial;
53
52
 
54
- addNodeMaterial( 'LineDashedNodeMaterial', LineDashedNodeMaterial );
53
+ LineDashedNodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'LineDashed', LineDashedNodeMaterial );
@@ -0,0 +1,73 @@
1
+ import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
2
+ import { materialLightMap } from '../../nodes/accessors/MaterialNode.js';
3
+ import BasicEnvironmentNode from '../../nodes/lighting/BasicEnvironmentNode.js';
4
+ import BasicLightMapNode from '../../nodes/lighting/BasicLightMapNode.js';
5
+ import BasicLightingModel from '../../nodes/functions/BasicLightingModel.js';
6
+ import { normalView } from '../../nodes/accessors/Normal.js';
7
+ import { diffuseColor } from '../../nodes/core/PropertyNode.js';
8
+
9
+ import { MeshBasicMaterial } from '../MeshBasicMaterial.js';
10
+
11
+ const _defaultValues = /*@__PURE__*/ new MeshBasicMaterial();
12
+
13
+ class MeshBasicNodeMaterial extends NodeMaterial {
14
+
15
+ constructor( parameters ) {
16
+
17
+ super();
18
+
19
+ this.isMeshBasicNodeMaterial = true;
20
+
21
+ this.lights = true;
22
+
23
+ this.setDefaultValues( _defaultValues );
24
+
25
+ this.setValues( parameters );
26
+
27
+ }
28
+
29
+ setupNormal() {
30
+
31
+ return normalView; // see #28839
32
+
33
+ }
34
+
35
+ setupEnvironment( builder ) {
36
+
37
+ const envNode = super.setupEnvironment( builder );
38
+
39
+ return envNode ? new BasicEnvironmentNode( envNode ) : null;
40
+
41
+ }
42
+
43
+ setupLightMap( builder ) {
44
+
45
+ let node = null;
46
+
47
+ if ( builder.material.lightMap ) {
48
+
49
+ node = new BasicLightMapNode( materialLightMap );
50
+
51
+ }
52
+
53
+ return node;
54
+
55
+ }
56
+
57
+ setupOutgoingLight() {
58
+
59
+ return diffuseColor.rgb;
60
+
61
+ }
62
+
63
+ setupLightingModel() {
64
+
65
+ return new BasicLightingModel();
66
+
67
+ }
68
+
69
+ }
70
+
71
+ export default MeshBasicNodeMaterial;
72
+
73
+ MeshBasicNodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'MeshBasic', MeshBasicNodeMaterial );
@@ -0,0 +1,43 @@
1
+ import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
2
+ import BasicEnvironmentNode from '../../nodes/lighting/BasicEnvironmentNode.js';
3
+ import PhongLightingModel from '../../nodes/functions/PhongLightingModel.js';
4
+
5
+ import { MeshLambertMaterial } from '../MeshLambertMaterial.js';
6
+
7
+ const _defaultValues = /*@__PURE__*/ new MeshLambertMaterial();
8
+
9
+ class MeshLambertNodeMaterial extends NodeMaterial {
10
+
11
+ constructor( parameters ) {
12
+
13
+ super();
14
+
15
+ this.isMeshLambertNodeMaterial = true;
16
+
17
+ this.lights = true;
18
+
19
+ this.setDefaultValues( _defaultValues );
20
+
21
+ this.setValues( parameters );
22
+
23
+ }
24
+
25
+ setupEnvironment( builder ) {
26
+
27
+ const envNode = super.setupEnvironment( builder );
28
+
29
+ return envNode ? new BasicEnvironmentNode( envNode ) : null;
30
+
31
+ }
32
+
33
+ setupLightingModel( /*builder*/ ) {
34
+
35
+ return new PhongLightingModel( false ); // ( specular ) -> force lambert
36
+
37
+ }
38
+
39
+ }
40
+
41
+ export default MeshLambertNodeMaterial;
42
+
43
+ MeshLambertNodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'MeshLambert', MeshLambertNodeMaterial );