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
@@ -1,8 +1,11 @@
1
+ import { registerNode } from '../core/Node.js';
1
2
  import InputNode from '../core/InputNode.js';
2
- import { addNodeClass } from '../core/Node.js';
3
+ import { nodeObject, addMethodChaining } from '../tsl/TSLCore.js';
3
4
  import { varying } from '../core/VaryingNode.js';
4
- import { nodeObject, addNodeElement } from '../shadernode/ShaderNode.js';
5
- import { InterleavedBufferAttribute, InterleavedBuffer, StaticDrawUsage, DynamicDrawUsage } from 'three';
5
+
6
+ import { InterleavedBufferAttribute } from '../../core/InterleavedBufferAttribute.js';
7
+ import { InterleavedBuffer } from '../../core/InterleavedBuffer.js';
8
+ import { StaticDrawUsage, DynamicDrawUsage } from '../../constants.js';
6
9
 
7
10
  class BufferAttributeNode extends InputNode {
8
11
 
@@ -21,6 +24,8 @@ class BufferAttributeNode extends InputNode {
21
24
 
22
25
  this.attribute = null;
23
26
 
27
+ this.global = true;
28
+
24
29
  if ( value && value.isBufferAttribute === true ) {
25
30
 
26
31
  this.attribute = value;
@@ -31,6 +36,30 @@ class BufferAttributeNode extends InputNode {
31
36
 
32
37
  }
33
38
 
39
+ getHash( builder ) {
40
+
41
+ if ( this.bufferStride === 0 && this.bufferOffset === 0 ) {
42
+
43
+ let bufferData = builder.globalCache.getData( this.value );
44
+
45
+ if ( bufferData === undefined ) {
46
+
47
+ bufferData = {
48
+ node: this
49
+ };
50
+
51
+ builder.globalCache.setData( this.value, bufferData );
52
+
53
+ }
54
+
55
+ return bufferData.node.uuid;
56
+
57
+ }
58
+
59
+ return this.uuid;
60
+
61
+ }
62
+
34
63
  getNodeType( builder ) {
35
64
 
36
65
  if ( this.bufferType === null ) {
@@ -100,6 +129,12 @@ class BufferAttributeNode extends InputNode {
100
129
 
101
130
  this.usage = value;
102
131
 
132
+ if ( this.attribute && this.attribute.isBufferAttribute === true ) {
133
+
134
+ this.attribute.usage = value;
135
+
136
+ }
137
+
103
138
  return this;
104
139
 
105
140
  }
@@ -116,12 +151,12 @@ class BufferAttributeNode extends InputNode {
116
151
 
117
152
  export default BufferAttributeNode;
118
153
 
154
+ BufferAttributeNode.type = /*@__PURE__*/ registerNode( 'BufferAttribute', BufferAttributeNode );
155
+
119
156
  export const bufferAttribute = ( array, type, stride, offset ) => nodeObject( new BufferAttributeNode( array, type, stride, offset ) );
120
157
  export const dynamicBufferAttribute = ( array, type, stride, offset ) => bufferAttribute( array, type, stride, offset ).setUsage( DynamicDrawUsage );
121
158
 
122
159
  export const instancedBufferAttribute = ( array, type, stride, offset ) => bufferAttribute( array, type, stride, offset ).setInstanced( true );
123
160
  export const instancedDynamicBufferAttribute = ( array, type, stride, offset ) => dynamicBufferAttribute( array, type, stride, offset ).setInstanced( true );
124
161
 
125
- addNodeElement( 'toAttribute', ( bufferNode ) => bufferAttribute( bufferNode.value ) );
126
-
127
- addNodeClass( 'BufferAttributeNode', BufferAttributeNode );
162
+ addMethodChaining( 'toAttribute', ( bufferNode ) => bufferAttribute( bufferNode.value ) );
@@ -1,6 +1,6 @@
1
+ import { registerNode } from '../core/Node.js';
1
2
  import UniformNode from '../core/UniformNode.js';
2
- import { addNodeClass } from '../core/Node.js';
3
- import { nodeObject } from '../shadernode/ShaderNode.js';
3
+ import { nodeObject } from '../tsl/TSLBase.js';
4
4
 
5
5
  class BufferNode extends UniformNode {
6
6
 
@@ -31,6 +31,6 @@ class BufferNode extends UniformNode {
31
31
 
32
32
  export default BufferNode;
33
33
 
34
- export const buffer = ( value, type, count ) => nodeObject( new BufferNode( value, type, count ) );
34
+ BufferNode.type = /*@__PURE__*/ registerNode( 'Buffer', BufferNode );
35
35
 
36
- addNodeClass( 'BufferNode', BufferNode );
36
+ export const buffer = ( value, type, count ) => nodeObject( new BufferNode( value, type, count ) );
@@ -0,0 +1,19 @@
1
+ import { uniform } from '../core/UniformNode.js';
2
+ import { sharedUniformGroup } from '../core/UniformGroupNode.js';
3
+ import { Vector3 } from '../../math/Vector3.js';
4
+
5
+ const cameraGroup = /*@__PURE__*/ sharedUniformGroup( 'camera' ).onRenderUpdate( () => {
6
+
7
+ cameraGroup.needsUpdate = true;
8
+
9
+ } );
10
+
11
+ export const cameraNear = /*@__PURE__*/ uniform( 'float' ).label( 'cameraNear' ).setGroup( cameraGroup ).onRenderUpdate( ( { camera } ) => camera.near );
12
+ export const cameraFar = /*@__PURE__*/ uniform( 'float' ).label( 'cameraFar' ).setGroup( cameraGroup ).onRenderUpdate( ( { camera } ) => camera.far );
13
+ export const cameraLogDepth = /*@__PURE__*/ uniform( 'float' ).label( 'cameraLogDepth' ).setGroup( cameraGroup ).onRenderUpdate( ( { camera } ) => 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );
14
+ export const cameraProjectionMatrix = /*@__PURE__*/ uniform( 'mat4' ).label( 'cameraProjectionMatrix' ).setGroup( cameraGroup ).onRenderUpdate( ( { camera } ) => camera.projectionMatrix );
15
+ export const cameraProjectionMatrixInverse = /*@__PURE__*/ uniform( 'mat4' ).label( 'cameraProjectionMatrixInverse' ).setGroup( cameraGroup ).onRenderUpdate( ( { camera } ) => camera.projectionMatrixInverse );
16
+ export const cameraViewMatrix = /*@__PURE__*/ uniform( 'mat4' ).label( 'cameraViewMatrix' ).setGroup( cameraGroup ).onRenderUpdate( ( { camera } ) => camera.matrixWorldInverse );
17
+ export const cameraWorldMatrix = /*@__PURE__*/ uniform( 'mat4' ).label( 'cameraWorldMatrix' ).setGroup( cameraGroup ).onRenderUpdate( ( { camera } ) => camera.matrixWorld );
18
+ export const cameraNormalMatrix = /*@__PURE__*/ uniform( 'mat3' ).label( 'cameraNormalMatrix' ).setGroup( cameraGroup ).onRenderUpdate( ( { camera } ) => camera.normalMatrix );
19
+ export const cameraPosition = /*@__PURE__*/ uniform( new Vector3() ).label( 'cameraPosition' ).setGroup( cameraGroup ).onRenderUpdate( ( { camera }, self ) => self.value.setFromMatrixPosition( camera.matrixWorld ) );
@@ -1,12 +1,12 @@
1
1
 
2
- import Node from '../core/Node.js';
3
- import { nodeObject } from '../shadernode/ShaderNode.js';
4
- import { positionView } from './PositionNode.js';
2
+ import Node, { registerNode } from '../core/Node.js';
3
+ import { nodeObject } from '../tsl/TSLBase.js';
4
+ import { positionView } from './Position.js';
5
5
  import { diffuseColor, property } from '../core/PropertyNode.js';
6
- import { tslFn } from '../shadernode/ShaderNode.js';
7
- import { loop } from '../utils/LoopNode.js';
6
+ import { Fn } from '../tsl/TSLBase.js';
7
+ import { Loop } from '../utils/LoopNode.js';
8
8
  import { smoothstep } from '../math/MathNode.js';
9
- import { uniforms } from './UniformsNode.js';
9
+ import { uniformArray } from './UniformArrayNode.js';
10
10
 
11
11
  class ClippingNode extends Node {
12
12
 
@@ -42,9 +42,9 @@ class ClippingNode extends Node {
42
42
 
43
43
  setupAlphaToCoverage( planes, numClippingPlanes, numUnionClippingPlanes ) {
44
44
 
45
- return tslFn( () => {
45
+ return Fn( () => {
46
46
 
47
- const clippingPlanes = uniforms( planes );
47
+ const clippingPlanes = uniformArray( planes );
48
48
 
49
49
  const distanceToPlane = property( 'float', 'distanceToPlane' );
50
50
  const distanceGradient = property( 'float', 'distanceToGradient' );
@@ -55,7 +55,7 @@ class ClippingNode extends Node {
55
55
 
56
56
  let plane;
57
57
 
58
- loop( numUnionClippingPlanes, ( { i } ) => {
58
+ Loop( numUnionClippingPlanes, ( { i } ) => {
59
59
 
60
60
  plane = clippingPlanes.element( i );
61
61
 
@@ -74,7 +74,7 @@ class ClippingNode extends Node {
74
74
 
75
75
  unionClipOpacity.assign( 1 );
76
76
 
77
- loop( { start: numUnionClippingPlanes, end: numClippingPlanes }, ( { i } ) => {
77
+ Loop( { start: numUnionClippingPlanes, end: numClippingPlanes }, ( { i } ) => {
78
78
 
79
79
  plane = clippingPlanes.element( i );
80
80
 
@@ -99,13 +99,13 @@ class ClippingNode extends Node {
99
99
 
100
100
  setupDefault( planes, numClippingPlanes, numUnionClippingPlanes ) {
101
101
 
102
- return tslFn( () => {
102
+ return Fn( () => {
103
103
 
104
- const clippingPlanes = uniforms( planes );
104
+ const clippingPlanes = uniformArray( planes );
105
105
 
106
106
  let plane;
107
107
 
108
- loop( numUnionClippingPlanes, ( { i } ) => {
108
+ Loop( numUnionClippingPlanes, ( { i } ) => {
109
109
 
110
110
  plane = clippingPlanes.element( i );
111
111
  positionView.dot( plane.xyz ).greaterThan( plane.w ).discard();
@@ -118,7 +118,7 @@ class ClippingNode extends Node {
118
118
 
119
119
  clipped.assign( true );
120
120
 
121
- loop( { start: numUnionClippingPlanes, end: numClippingPlanes }, ( { i } ) => {
121
+ Loop( { start: numUnionClippingPlanes, end: numClippingPlanes }, ( { i } ) => {
122
122
 
123
123
  plane = clippingPlanes.element( i );
124
124
  clipped.assign( positionView.dot( plane.xyz ).greaterThan( plane.w ).and( clipped ) );
@@ -140,6 +140,8 @@ ClippingNode.DEFAULT = 'default';
140
140
 
141
141
  export default ClippingNode;
142
142
 
143
+ ClippingNode.type = /*@__PURE__*/ registerNode( 'Clipping', ClippingNode );
144
+
143
145
  export const clipping = () => nodeObject( new ClippingNode() );
144
146
 
145
147
  export const clippingAlpha = () => nodeObject( new ClippingNode( ClippingNode.ALPHA_TO_COVERAGE ) );
@@ -0,0 +1,76 @@
1
+ import { registerNode } from '../core/Node.js';
2
+ import TextureNode from './TextureNode.js';
3
+ import { reflectVector, refractVector } from './ReflectVector.js';
4
+ import { nodeProxy, vec3 } from '../tsl/TSLBase.js';
5
+
6
+ import { CubeReflectionMapping, CubeRefractionMapping, WebGPUCoordinateSystem } from '../../constants.js';
7
+
8
+ class CubeTextureNode extends TextureNode {
9
+
10
+ constructor( value, uvNode = null, levelNode = null, biasNode = null ) {
11
+
12
+ super( value, uvNode, levelNode, biasNode );
13
+
14
+ this.isCubeTextureNode = true;
15
+
16
+ }
17
+
18
+ getInputType( /*builder*/ ) {
19
+
20
+ return 'cubeTexture';
21
+
22
+ }
23
+
24
+ getDefaultUV() {
25
+
26
+ const texture = this.value;
27
+
28
+ if ( texture.mapping === CubeReflectionMapping ) {
29
+
30
+ return reflectVector;
31
+
32
+ } else if ( texture.mapping === CubeRefractionMapping ) {
33
+
34
+ return refractVector;
35
+
36
+ } else {
37
+
38
+ console.error( 'THREE.CubeTextureNode: Mapping "%s" not supported.', texture.mapping );
39
+
40
+ return vec3( 0, 0, 0 );
41
+
42
+ }
43
+
44
+ }
45
+
46
+ setUpdateMatrix( /*updateMatrix*/ ) { } // Ignore .updateMatrix for CubeTextureNode
47
+
48
+ setupUV( builder, uvNode ) {
49
+
50
+ const texture = this.value;
51
+
52
+ if ( builder.renderer.coordinateSystem === WebGPUCoordinateSystem || ! texture.isRenderTargetTexture ) {
53
+
54
+ return vec3( uvNode.x.negate(), uvNode.yz );
55
+
56
+ } else {
57
+
58
+ return uvNode;
59
+
60
+ }
61
+
62
+ }
63
+
64
+ generateUV( builder, cubeUV ) {
65
+
66
+ return cubeUV.build( builder, 'vec3' );
67
+
68
+ }
69
+
70
+ }
71
+
72
+ export default CubeTextureNode;
73
+
74
+ CubeTextureNode.type = /*@__PURE__*/ registerNode( 'CubeTexture', CubeTextureNode );
75
+
76
+ export const cubeTexture = /*@__PURE__*/ nodeProxy( CubeTextureNode );
@@ -0,0 +1,144 @@
1
+ import Node, { registerNode } from '../core/Node.js';
2
+ import { varyingProperty } from '../core/PropertyNode.js';
3
+ import { instancedBufferAttribute, instancedDynamicBufferAttribute } from './BufferAttributeNode.js';
4
+ import { normalLocal } from './Normal.js';
5
+ import { positionLocal } from './Position.js';
6
+ import { nodeProxy, vec3, mat3, mat4 } from '../tsl/TSLBase.js';
7
+ import { NodeUpdateType } from '../core/constants.js';
8
+ import { buffer } from '../accessors/BufferNode.js';
9
+ import { instanceIndex } from '../core/IndexNode.js';
10
+
11
+ import { InstancedInterleavedBuffer } from '../../core/InstancedInterleavedBuffer.js';
12
+ import { InstancedBufferAttribute } from '../../core/InstancedBufferAttribute.js';
13
+ import { DynamicDrawUsage } from '../../constants.js';
14
+
15
+ class InstanceNode extends Node {
16
+
17
+ constructor( instanceMesh ) {
18
+
19
+ super( 'void' );
20
+
21
+ this.instanceMesh = instanceMesh;
22
+
23
+ this.instanceMatrixNode = null;
24
+
25
+ this.instanceColorNode = null;
26
+
27
+ this.updateType = NodeUpdateType.FRAME;
28
+
29
+ this.buffer = null;
30
+ this.bufferColor = null;
31
+
32
+ }
33
+
34
+ setup( builder ) {
35
+
36
+ let instanceMatrixNode = this.instanceMatrixNode;
37
+ let instanceColorNode = this.instanceColorNode;
38
+
39
+ const instanceMesh = this.instanceMesh;
40
+
41
+ if ( instanceMatrixNode === null ) {
42
+
43
+ const instanceAttribute = instanceMesh.instanceMatrix;
44
+
45
+ // Both WebGPU and WebGL backends have UBO max limited to 64kb. Matrix count number bigger than 1000 ( 16 * 4 * 1000 = 64kb ) will fallback to attribute.
46
+
47
+ if ( instanceMesh.count <= 1000 ) {
48
+
49
+ instanceMatrixNode = buffer( instanceAttribute.array, 'mat4', instanceMesh.count ).element( instanceIndex );
50
+
51
+ } else {
52
+
53
+ const buffer = new InstancedInterleavedBuffer( instanceAttribute.array, 16, 1 );
54
+
55
+ this.buffer = buffer;
56
+
57
+ const bufferFn = instanceAttribute.usage === DynamicDrawUsage ? instancedDynamicBufferAttribute : instancedBufferAttribute;
58
+
59
+ const instanceBuffers = [
60
+ // F.Signature -> bufferAttribute( array, type, stride, offset )
61
+ bufferFn( buffer, 'vec4', 16, 0 ),
62
+ bufferFn( buffer, 'vec4', 16, 4 ),
63
+ bufferFn( buffer, 'vec4', 16, 8 ),
64
+ bufferFn( buffer, 'vec4', 16, 12 )
65
+ ];
66
+
67
+ instanceMatrixNode = mat4( ...instanceBuffers );
68
+
69
+ }
70
+
71
+ this.instanceMatrixNode = instanceMatrixNode;
72
+
73
+ }
74
+
75
+ const instanceColorAttribute = instanceMesh.instanceColor;
76
+
77
+ if ( instanceColorAttribute && instanceColorNode === null ) {
78
+
79
+ const buffer = new InstancedBufferAttribute( instanceColorAttribute.array, 3 );
80
+
81
+ const bufferFn = instanceColorAttribute.usage === DynamicDrawUsage ? instancedDynamicBufferAttribute : instancedBufferAttribute;
82
+
83
+ this.bufferColor = buffer;
84
+
85
+ instanceColorNode = vec3( bufferFn( buffer, 'vec3', 3, 0 ) );
86
+
87
+ this.instanceColorNode = instanceColorNode;
88
+
89
+ }
90
+
91
+ // POSITION
92
+
93
+ const instancePosition = instanceMatrixNode.mul( positionLocal ).xyz;
94
+ positionLocal.assign( instancePosition );
95
+
96
+ // NORMAL
97
+
98
+ if ( builder.hasGeometryAttribute( 'normal' ) ) {
99
+
100
+ const m = mat3( instanceMatrixNode );
101
+
102
+ const transformedNormal = normalLocal.div( vec3( m[ 0 ].dot( m[ 0 ] ), m[ 1 ].dot( m[ 1 ] ), m[ 2 ].dot( m[ 2 ] ) ) );
103
+
104
+ const instanceNormal = m.mul( transformedNormal ).xyz;
105
+
106
+ // ASSIGNS
107
+
108
+ normalLocal.assign( instanceNormal );
109
+
110
+ }
111
+
112
+ // COLOR
113
+
114
+ if ( this.instanceColorNode !== null ) {
115
+
116
+ varyingProperty( 'vec3', 'vInstanceColor' ).assign( this.instanceColorNode );
117
+
118
+ }
119
+
120
+ }
121
+
122
+ update( /*frame*/ ) {
123
+
124
+ if ( this.instanceMesh.instanceMatrix.usage !== DynamicDrawUsage && this.buffer != null && this.instanceMesh.instanceMatrix.version !== this.buffer.version ) {
125
+
126
+ this.buffer.version = this.instanceMesh.instanceMatrix.version;
127
+
128
+ }
129
+
130
+ if ( this.instanceMesh.instanceColor && this.instanceMesh.instanceColor.usage !== DynamicDrawUsage && this.bufferColor != null && this.instanceMesh.instanceColor.version !== this.bufferColor.version ) {
131
+
132
+ this.bufferColor.version = this.instanceMesh.instanceColor.version;
133
+
134
+ }
135
+
136
+ }
137
+
138
+ }
139
+
140
+ export default InstanceNode;
141
+
142
+ InstanceNode.type = /*@__PURE__*/ registerNode( 'Instance', InstanceNode );
143
+
144
+ export const instance = /*@__PURE__*/ nodeProxy( InstanceNode );
@@ -0,0 +1,21 @@
1
+ import { registerNode } from '../core/Node.js';
2
+ import MaterialNode from './MaterialNode.js';
3
+ import { nodeImmutable } from '../tsl/TSLBase.js';
4
+
5
+ class InstancedPointsMaterialNode extends MaterialNode {
6
+
7
+ setup( /*builder*/ ) {
8
+
9
+ return this.getFloat( this.scope );
10
+
11
+ }
12
+
13
+ }
14
+
15
+ InstancedPointsMaterialNode.POINT_WIDTH = 'pointWidth';
16
+
17
+ export default InstancedPointsMaterialNode;
18
+
19
+ InstancedPointsMaterialNode.type = /*@__PURE__*/ registerNode( 'InstancedPointsMaterial', InstancedPointsMaterialNode );
20
+
21
+ export const materialPointWidth = /*@__PURE__*/ nodeImmutable( InstancedPointsMaterialNode, InstancedPointsMaterialNode.POINT_WIDTH );
@@ -1,10 +1,13 @@
1
- import Node, { addNodeClass } from '../core/Node.js';
1
+ import Node, { registerNode } from '../core/Node.js';
2
2
  import { reference } from './ReferenceNode.js';
3
3
  import { materialReference } from './MaterialReferenceNode.js';
4
- import { normalView } from './NormalNode.js';
5
- import { nodeImmutable, float, vec2, mat2 } from '../shadernode/ShaderNode.js';
4
+ import { normalView } from './Normal.js';
5
+ import { nodeImmutable, float, vec2, vec3, mat2 } from '../tsl/TSLBase.js';
6
6
  import { uniform } from '../core/UniformNode.js';
7
- import { Vector2 } from 'three';
7
+ import { normalMap } from '../display/NormalMapNode.js';
8
+ import { bumpMap } from '../display/BumpMapNode.js';
9
+
10
+ import { Vector2 } from '../../math/Vector2.js';
8
11
 
9
12
  const _propertyCache = new Map();
10
13
 
@@ -61,7 +64,7 @@ class MaterialNode extends Node {
61
64
 
62
65
  if ( scope === MaterialNode.COLOR ) {
63
66
 
64
- const colorNode = this.getColor( scope );
67
+ const colorNode = material.color !== undefined ? this.getColor( scope ) : vec3();
65
68
 
66
69
  if ( material.map && material.map.isTexture === true ) {
67
70
 
@@ -157,7 +160,8 @@ class MaterialNode extends Node {
157
160
 
158
161
  } else if ( scope === MaterialNode.EMISSIVE ) {
159
162
 
160
- const emissiveNode = this.getColor( scope );
163
+ const emissiveIntensityNode = this.getFloat( 'emissiveIntensity' );
164
+ const emissiveNode = this.getColor( scope ).mul( emissiveIntensityNode );
161
165
 
162
166
  if ( material.emissiveMap && material.emissiveMap.isTexture === true ) {
163
167
 
@@ -173,11 +177,11 @@ class MaterialNode extends Node {
173
177
 
174
178
  if ( material.normalMap ) {
175
179
 
176
- node = this.getTexture( 'normal' ).normalMap( this.getCache( 'normalScale', 'vec2' ) );
180
+ node = normalMap( this.getTexture( 'normal' ), this.getCache( 'normalScale', 'vec2' ) );
177
181
 
178
182
  } else if ( material.bumpMap ) {
179
183
 
180
- node = this.getTexture( 'bump' ).r.bumpMap( this.getFloat( 'bumpScale' ) );
184
+ node = bumpMap( this.getTexture( 'bump' ).r, this.getFloat( 'bumpScale' ) );
181
185
 
182
186
  } else {
183
187
 
@@ -217,7 +221,7 @@ class MaterialNode extends Node {
217
221
 
218
222
  if ( material.clearcoatNormalMap ) {
219
223
 
220
- node = this.getTexture( scope ).normalMap( this.getCache( scope + 'Scale', 'vec2' ) );
224
+ node = normalMap( this.getTexture( scope ), this.getCache( scope + 'Scale', 'vec2' ) );
221
225
 
222
226
  } else {
223
227
 
@@ -318,6 +322,14 @@ class MaterialNode extends Node {
318
322
 
319
323
  node = this.getFloat( scope );
320
324
 
325
+ } else if ( scope === MaterialNode.LIGHT_MAP ) {
326
+
327
+ node = this.getTexture( scope ).rgb.mul( this.getFloat( 'lightMapIntensity' ) );
328
+
329
+ } else if ( scope === MaterialNode.AO_MAP ) {
330
+
331
+ node = this.getTexture( scope ).r.sub( 1.0 ).mul( this.getFloat( 'aoMapIntensity' ) ).add( 1.0 );
332
+
321
333
  } else {
322
334
 
323
335
  const outputType = this.getNodeType( builder );
@@ -367,47 +379,54 @@ MaterialNode.LINE_WIDTH = 'linewidth';
367
379
  MaterialNode.LINE_DASH_OFFSET = 'dashOffset';
368
380
  MaterialNode.POINT_WIDTH = 'pointWidth';
369
381
  MaterialNode.DISPERSION = 'dispersion';
382
+ MaterialNode.LIGHT_MAP = 'light';
383
+ MaterialNode.AO_MAP = 'ao';
370
384
 
371
385
  export default MaterialNode;
372
386
 
373
- export const materialAlphaTest = nodeImmutable( MaterialNode, MaterialNode.ALPHA_TEST );
374
- export const materialColor = nodeImmutable( MaterialNode, MaterialNode.COLOR );
375
- export const materialShininess = nodeImmutable( MaterialNode, MaterialNode.SHININESS );
376
- export const materialEmissive = nodeImmutable( MaterialNode, MaterialNode.EMISSIVE );
377
- export const materialOpacity = nodeImmutable( MaterialNode, MaterialNode.OPACITY );
378
- export const materialSpecular = nodeImmutable( MaterialNode, MaterialNode.SPECULAR );
379
-
380
- export const materialSpecularIntensity = nodeImmutable( MaterialNode, MaterialNode.SPECULAR_INTENSITY );
381
- export const materialSpecularColor = nodeImmutable( MaterialNode, MaterialNode.SPECULAR_COLOR );
382
-
383
- export const materialSpecularStrength = nodeImmutable( MaterialNode, MaterialNode.SPECULAR_STRENGTH );
384
- export const materialReflectivity = nodeImmutable( MaterialNode, MaterialNode.REFLECTIVITY );
385
- export const materialRoughness = nodeImmutable( MaterialNode, MaterialNode.ROUGHNESS );
386
- export const materialMetalness = nodeImmutable( MaterialNode, MaterialNode.METALNESS );
387
- export const materialNormal = nodeImmutable( MaterialNode, MaterialNode.NORMAL );
388
- export const materialClearcoat = nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT );
389
- export const materialClearcoatRoughness = nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT_ROUGHNESS );
390
- export const materialClearcoatNormal = nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT_NORMAL );
391
- export const materialRotation = nodeImmutable( MaterialNode, MaterialNode.ROTATION );
392
- export const materialSheen = nodeImmutable( MaterialNode, MaterialNode.SHEEN );
393
- export const materialSheenRoughness = nodeImmutable( MaterialNode, MaterialNode.SHEEN_ROUGHNESS );
394
- export const materialAnisotropy = nodeImmutable( MaterialNode, MaterialNode.ANISOTROPY );
395
- export const materialIridescence = nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE );
396
- export const materialIridescenceIOR = nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE_IOR );
397
- export const materialIridescenceThickness = nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE_THICKNESS );
398
- export const materialTransmission = nodeImmutable( MaterialNode, MaterialNode.TRANSMISSION );
399
- export const materialThickness = nodeImmutable( MaterialNode, MaterialNode.THICKNESS );
400
- export const materialIOR = nodeImmutable( MaterialNode, MaterialNode.IOR );
401
- export const materialAttenuationDistance = nodeImmutable( MaterialNode, MaterialNode.ATTENUATION_DISTANCE );
402
- export const materialAttenuationColor = nodeImmutable( MaterialNode, MaterialNode.ATTENUATION_COLOR );
403
- export const materialLineScale = nodeImmutable( MaterialNode, MaterialNode.LINE_SCALE );
404
- export const materialLineDashSize = nodeImmutable( MaterialNode, MaterialNode.LINE_DASH_SIZE );
405
- export const materialLineGapSize = nodeImmutable( MaterialNode, MaterialNode.LINE_GAP_SIZE );
406
- export const materialLineWidth = nodeImmutable( MaterialNode, MaterialNode.LINE_WIDTH );
407
- export const materialLineDashOffset = nodeImmutable( MaterialNode, MaterialNode.LINE_DASH_OFFSET );
408
- export const materialPointWidth = nodeImmutable( MaterialNode, MaterialNode.POINT_WIDTH );
409
- export const materialDispersion = nodeImmutable( MaterialNode, MaterialNode.DISPERSION );
410
- export const materialAnisotropyVector = uniform( new Vector2() ).onReference( function ( frame ) {
387
+ MaterialNode.type = /*@__PURE__*/ registerNode( 'Material', MaterialNode );
388
+
389
+ export const materialAlphaTest = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ALPHA_TEST );
390
+ export const materialColor = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.COLOR );
391
+ export const materialShininess = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SHININESS );
392
+ export const materialEmissive = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.EMISSIVE );
393
+ export const materialOpacity = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.OPACITY );
394
+ export const materialSpecular = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SPECULAR );
395
+
396
+ export const materialSpecularIntensity = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SPECULAR_INTENSITY );
397
+ export const materialSpecularColor = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SPECULAR_COLOR );
398
+
399
+ export const materialSpecularStrength = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SPECULAR_STRENGTH );
400
+ export const materialReflectivity = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.REFLECTIVITY );
401
+ export const materialRoughness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ROUGHNESS );
402
+ export const materialMetalness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.METALNESS );
403
+ export const materialNormal = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.NORMAL ).context( { getUV: null } );
404
+ export const materialClearcoat = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT );
405
+ export const materialClearcoatRoughness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT_ROUGHNESS );
406
+ export const materialClearcoatNormal = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT_NORMAL ).context( { getUV: null } );
407
+ export const materialRotation = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ROTATION );
408
+ export const materialSheen = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SHEEN );
409
+ export const materialSheenRoughness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SHEEN_ROUGHNESS );
410
+ export const materialAnisotropy = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ANISOTROPY );
411
+ export const materialIridescence = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE );
412
+ export const materialIridescenceIOR = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE_IOR );
413
+ export const materialIridescenceThickness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE_THICKNESS );
414
+ export const materialTransmission = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.TRANSMISSION );
415
+ export const materialThickness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.THICKNESS );
416
+ export const materialIOR = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.IOR );
417
+ export const materialAttenuationDistance = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ATTENUATION_DISTANCE );
418
+ export const materialAttenuationColor = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ATTENUATION_COLOR );
419
+ export const materialLineScale = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LINE_SCALE );
420
+ export const materialLineDashSize = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LINE_DASH_SIZE );
421
+ export const materialLineGapSize = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LINE_GAP_SIZE );
422
+ export const materialLineWidth = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LINE_WIDTH );
423
+ export const materialLineDashOffset = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LINE_DASH_OFFSET );
424
+ export const materialPointWidth = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.POINT_WIDTH );
425
+ export const materialDispersion = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.DISPERSION );
426
+ export const materialLightMap = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LIGHT_MAP );
427
+ export const materialAOMap = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.AO_MAP );
428
+ export const materialRefractionRatio = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.REFRACTION_RATIO );
429
+ export const materialAnisotropyVector = /*@__PURE__*/ uniform( new Vector2() ).onReference( function ( frame ) {
411
430
 
412
431
  return frame.material;
413
432
 
@@ -416,5 +435,3 @@ export const materialAnisotropyVector = uniform( new Vector2() ).onReference( fu
416
435
  this.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );
417
436
 
418
437
  } );
419
-
420
- addNodeClass( 'MaterialNode', MaterialNode );
@@ -0,0 +1,3 @@
1
+ import { uniform } from '../core/UniformNode.js';
2
+
3
+ export const materialRefractionRatio = /*@__PURE__*/ uniform( 0 ).onReference( ( { material } ) => material ).onRenderUpdate( ( { material } ) => material.refractionRatio );
@@ -1,8 +1,8 @@
1
+ import { registerNode } from '../core/Node.js';
1
2
  import ReferenceNode from './ReferenceNode.js';
2
3
  //import { renderGroup } from '../core/UniformGroupNode.js';
3
4
  //import { NodeUpdateType } from '../core/constants.js';
4
- import { addNodeClass } from '../core/Node.js';
5
- import { nodeObject } from '../shadernode/ShaderNode.js';
5
+ import { nodeObject } from '../tsl/TSLBase.js';
6
6
 
7
7
  class MaterialReferenceNode extends ReferenceNode {
8
8
 
@@ -14,6 +14,8 @@ class MaterialReferenceNode extends ReferenceNode {
14
14
 
15
15
  //this.updateType = NodeUpdateType.RENDER;
16
16
 
17
+ this.isMaterialReferenceNode = true;
18
+
17
19
  }
18
20
 
19
21
  /*setNodeType( node ) {
@@ -36,6 +38,6 @@ class MaterialReferenceNode extends ReferenceNode {
36
38
 
37
39
  export default MaterialReferenceNode;
38
40
 
39
- export const materialReference = ( name, type, material ) => nodeObject( new MaterialReferenceNode( name, type, material ) );
41
+ MaterialReferenceNode.type = /*@__PURE__*/ registerNode( 'MaterialReference', MaterialReferenceNode );
40
42
 
41
- addNodeClass( 'MaterialReferenceNode', MaterialReferenceNode );
43
+ export const materialReference = ( name, type, material ) => nodeObject( new MaterialReferenceNode( name, type, material ) );