super-three 0.168.0 → 0.169.1

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 (288) hide show
  1. package/build/three.cjs +384 -700
  2. package/build/three.module.js +384 -700
  3. package/build/three.module.min.js +1 -1
  4. package/build/three.webgpu.js +24644 -22406
  5. package/build/three.webgpu.min.js +1 -1
  6. package/build/three.webgpu.nodes.js +79941 -0
  7. package/build/three.webgpu.nodes.min.js +6 -0
  8. package/examples/jsm/Addons.js +0 -6
  9. package/examples/jsm/controls/TrackballControls.js +32 -12
  10. package/examples/jsm/controls/TransformControls.js +97 -62
  11. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  12. package/examples/jsm/exporters/EXRExporter.js +19 -11
  13. package/examples/jsm/exporters/KTX2Exporter.js +21 -13
  14. package/examples/jsm/exporters/OBJExporter.js +5 -1
  15. package/examples/jsm/exporters/PLYExporter.js +9 -7
  16. package/examples/jsm/geometries/DecalGeometry.js +4 -1
  17. package/examples/jsm/geometries/InstancedPointsGeometry.js +1 -1
  18. package/examples/jsm/helpers/LightProbeHelper.js +1 -1
  19. package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
  20. package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  21. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  22. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  23. package/examples/jsm/lights/LightProbeGenerator.js +24 -10
  24. package/examples/jsm/loaders/ColladaLoader.js +9 -6
  25. package/examples/jsm/loaders/DRACOLoader.js +3 -1
  26. package/examples/jsm/loaders/FBXLoader.js +30 -20
  27. package/examples/jsm/loaders/GLTFLoader.js +5 -10
  28. package/examples/jsm/loaders/KTX2Loader.js +10 -7
  29. package/examples/jsm/loaders/MTLLoader.js +4 -3
  30. package/examples/jsm/loaders/MaterialXLoader.js +29 -10
  31. package/examples/jsm/loaders/OBJLoader.js +5 -3
  32. package/examples/jsm/loaders/PCDLoader.js +5 -4
  33. package/examples/jsm/loaders/PDBLoader.js +3 -2
  34. package/examples/jsm/loaders/PLYLoader.js +8 -5
  35. package/examples/jsm/loaders/STLLoader.js +3 -2
  36. package/examples/jsm/loaders/VRMLLoader.js +10 -10
  37. package/examples/jsm/loaders/VTKLoader.js +4 -3
  38. package/examples/jsm/loaders/XYZLoader.js +3 -2
  39. package/examples/jsm/misc/Timer.js +1 -1
  40. package/examples/jsm/modifiers/CurveModifierGPU.js +233 -0
  41. package/examples/jsm/objects/LensflareMesh.js +322 -0
  42. package/examples/jsm/objects/SkyMesh.js +1 -2
  43. package/examples/jsm/objects/Water2Mesh.js +2 -3
  44. package/examples/jsm/objects/WaterMesh.js +1 -2
  45. package/examples/jsm/physics/JoltPhysics.js +1 -1
  46. package/examples/jsm/physics/RapierPhysics.js +1 -1
  47. package/examples/jsm/transpiler/GLSLDecoder.js +1 -1
  48. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -2
  49. package/examples/jsm/utils/GeometryCompressionUtils.js +37 -122
  50. package/examples/jsm/utils/ShadowMapViewer.js +3 -8
  51. package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
  52. package/examples/jsm/utils/SkeletonUtils.js +84 -66
  53. package/examples/jsm/utils/TextureUtils.js +1 -0
  54. package/examples/jsm/utils/TextureUtilsGPU.js +63 -0
  55. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  56. package/package.json +2 -2
  57. package/src/Three.WebGPU.Nodes.js +200 -0
  58. package/src/Three.WebGPU.js +2 -1
  59. package/src/audio/Audio.js +2 -2
  60. package/src/constants.js +1 -1
  61. package/src/core/BufferAttribute.js +0 -9
  62. package/src/core/Clock.js +1 -1
  63. package/src/core/InterleavedBuffer.js +0 -9
  64. package/src/extras/Controls.js +1 -1
  65. package/src/geometries/CylinderGeometry.js +11 -4
  66. package/src/loaders/MaterialLoader.js +7 -1
  67. package/src/loaders/nodes/NodeLoader.js +24 -4
  68. package/src/loaders/nodes/NodeMaterialLoader.js +21 -17
  69. package/src/loaders/nodes/NodeObjectLoader.js +19 -0
  70. package/src/materials/nodes/InstancedPointsNodeMaterial.js +19 -34
  71. package/src/materials/nodes/Line2NodeMaterial.js +26 -26
  72. package/src/materials/nodes/LineBasicNodeMaterial.js +7 -3
  73. package/src/materials/nodes/LineDashedNodeMaterial.js +7 -3
  74. package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -3
  75. package/src/materials/nodes/MeshLambertNodeMaterial.js +7 -3
  76. package/src/materials/nodes/MeshMatcapNodeMaterial.js +7 -3
  77. package/src/materials/nodes/MeshNormalNodeMaterial.js +7 -3
  78. package/src/materials/nodes/MeshPhongNodeMaterial.js +7 -3
  79. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +6 -3
  80. package/src/materials/nodes/MeshSSSNodeMaterial.js +6 -3
  81. package/src/materials/nodes/MeshStandardNodeMaterial.js +7 -3
  82. package/src/materials/nodes/MeshToonNodeMaterial.js +7 -3
  83. package/src/materials/nodes/NodeMaterial.js +20 -45
  84. package/src/materials/nodes/NodeMaterials.js +2 -0
  85. package/src/materials/nodes/PointsNodeMaterial.js +7 -3
  86. package/src/materials/nodes/ShadowNodeMaterial.js +7 -3
  87. package/src/materials/nodes/SpriteNodeMaterial.js +39 -6
  88. package/src/materials/nodes/VolumeNodeMaterial.js +13 -9
  89. package/src/materials/nodes/manager/NodeMaterialObserver.js +302 -0
  90. package/src/math/Triangle.js +24 -0
  91. package/src/nodes/Nodes.js +3 -3
  92. package/src/nodes/TSL.js +96 -93
  93. package/src/nodes/accessors/BatchNode.js +7 -3
  94. package/src/nodes/accessors/BufferAttributeNode.js +6 -3
  95. package/src/nodes/accessors/BufferNode.js +6 -3
  96. package/src/nodes/accessors/Camera.js +10 -16
  97. package/src/nodes/accessors/ClippingNode.js +7 -3
  98. package/src/nodes/accessors/CubeTextureNode.js +6 -3
  99. package/src/nodes/accessors/InstanceNode.js +11 -11
  100. package/src/nodes/accessors/InstancedPointsMaterialNode.js +6 -3
  101. package/src/nodes/accessors/Lights.js +51 -0
  102. package/src/nodes/accessors/MaterialNode.js +8 -4
  103. package/src/nodes/accessors/MaterialReferenceNode.js +6 -3
  104. package/src/nodes/accessors/ModelNode.js +42 -7
  105. package/src/nodes/accessors/ModelViewProjectionNode.js +9 -5
  106. package/src/nodes/accessors/MorphNode.js +7 -3
  107. package/src/nodes/accessors/Normal.js +32 -6
  108. package/src/nodes/accessors/Object3DNode.js +11 -27
  109. package/src/nodes/accessors/PointUVNode.js +7 -3
  110. package/src/nodes/accessors/ReferenceBaseNode.js +32 -4
  111. package/src/nodes/accessors/ReferenceNode.js +40 -3
  112. package/src/nodes/accessors/RendererReferenceNode.js +9 -3
  113. package/src/nodes/accessors/SceneNode.js +7 -3
  114. package/src/nodes/accessors/SkinningNode.js +7 -3
  115. package/src/nodes/accessors/StorageBufferNode.js +21 -3
  116. package/src/nodes/accessors/StorageTextureNode.js +7 -4
  117. package/src/nodes/accessors/Texture3DNode.js +7 -4
  118. package/src/nodes/accessors/TextureNode.js +19 -8
  119. package/src/nodes/accessors/TextureSizeNode.js +8 -5
  120. package/src/nodes/accessors/UniformArrayNode.js +12 -9
  121. package/src/nodes/accessors/UserDataNode.js +9 -6
  122. package/src/nodes/accessors/VelocityNode.js +74 -23
  123. package/src/nodes/accessors/VertexColorNode.js +6 -3
  124. package/src/nodes/code/CodeNode.js +7 -3
  125. package/src/nodes/code/ExpressionNode.js +8 -4
  126. package/src/nodes/code/FunctionCallNode.js +6 -3
  127. package/src/nodes/code/FunctionNode.js +6 -3
  128. package/src/nodes/code/ScriptableNode.js +11 -6
  129. package/src/nodes/code/ScriptableValueNode.js +7 -3
  130. package/src/nodes/core/AssignNode.js +9 -6
  131. package/src/nodes/core/AttributeNode.js +7 -3
  132. package/src/nodes/core/BypassNode.js +8 -4
  133. package/src/nodes/core/CacheNode.js +8 -4
  134. package/src/nodes/core/ConstNode.js +6 -3
  135. package/src/nodes/core/ContextNode.js +7 -3
  136. package/src/nodes/core/IndexNode.js +25 -3
  137. package/src/nodes/core/InputNode.js +7 -3
  138. package/src/nodes/core/MRTNode.js +6 -3
  139. package/src/nodes/core/Node.js +10 -51
  140. package/src/nodes/core/NodeBuilder.js +71 -5
  141. package/src/nodes/core/NodeUtils.js +48 -6
  142. package/src/nodes/core/OutputStructNode.js +8 -4
  143. package/src/nodes/core/ParameterNode.js +6 -3
  144. package/src/nodes/core/PropertyNode.js +7 -3
  145. package/src/nodes/core/StackNode.js +7 -3
  146. package/src/nodes/core/StructTypeNode.js +7 -3
  147. package/src/nodes/core/TempNode.js +8 -4
  148. package/src/nodes/core/UniformGroupNode.js +10 -6
  149. package/src/nodes/core/UniformNode.js +6 -3
  150. package/src/nodes/core/VarNode.js +8 -4
  151. package/src/nodes/core/VaryingNode.js +7 -3
  152. package/src/nodes/display/AfterImageNode.js +6 -0
  153. package/src/nodes/display/AnaglyphPassNode.js +6 -0
  154. package/src/nodes/display/AnamorphicNode.js +6 -0
  155. package/src/nodes/display/BloomNode.js +6 -0
  156. package/src/nodes/display/BumpMapNode.js +6 -0
  157. package/src/nodes/display/ColorSpaceFunctions.js +4 -4
  158. package/src/nodes/display/ColorSpaceNode.js +43 -14
  159. package/src/nodes/display/DenoiseNode.js +6 -3
  160. package/src/nodes/display/DepthOfFieldNode.js +6 -3
  161. package/src/nodes/display/DotScreenNode.js +8 -5
  162. package/src/nodes/display/FXAANode.js +6 -3
  163. package/src/nodes/display/FilmNode.js +6 -3
  164. package/src/nodes/display/FrontFacingNode.js +7 -3
  165. package/src/nodes/display/GTAONode.js +6 -3
  166. package/src/nodes/display/GaussianBlurNode.js +6 -3
  167. package/src/nodes/display/Lut3DNode.js +6 -3
  168. package/src/nodes/display/NormalMapNode.js +8 -6
  169. package/src/nodes/display/ParallaxBarrierPassNode.js +8 -5
  170. package/src/nodes/display/PassNode.js +18 -7
  171. package/src/nodes/display/PixelationPassNode.js +12 -5
  172. package/src/nodes/display/PosterizeNode.js +6 -3
  173. package/src/nodes/display/RGBShiftNode.js +6 -3
  174. package/src/nodes/display/RenderOutputNode.js +12 -8
  175. package/src/nodes/display/SSAAPassNode.js +6 -3
  176. package/src/nodes/display/ScreenNode.js +181 -0
  177. package/src/nodes/display/SobelOperatorNode.js +6 -3
  178. package/src/nodes/display/StereoCompositePassNode.js +6 -3
  179. package/src/nodes/display/StereoPassNode.js +6 -3
  180. package/src/nodes/display/ToneMappingFunctions.js +12 -12
  181. package/src/nodes/display/ToneMappingNode.js +8 -7
  182. package/src/nodes/display/ToonOutlinePassNode.js +111 -0
  183. package/src/nodes/display/TransitionNode.js +6 -3
  184. package/src/nodes/display/ViewportDepthNode.js +7 -3
  185. package/src/nodes/display/ViewportDepthTextureNode.js +8 -5
  186. package/src/nodes/display/ViewportSharedTextureNode.js +8 -5
  187. package/src/nodes/display/ViewportTextureNode.js +8 -5
  188. package/src/nodes/fog/FogExp2Node.js +6 -3
  189. package/src/nodes/fog/FogNode.js +7 -3
  190. package/src/nodes/fog/FogRangeNode.js +6 -3
  191. package/src/nodes/functions/PhysicalLightingModel.js +2 -2
  192. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  193. package/src/nodes/geometry/RangeNode.js +7 -3
  194. package/src/nodes/gpgpu/AtomicFunctionNode.js +99 -0
  195. package/src/nodes/gpgpu/BarrierNode.js +40 -0
  196. package/src/nodes/gpgpu/ComputeBuiltinNode.js +98 -0
  197. package/src/nodes/gpgpu/ComputeNode.js +8 -4
  198. package/src/nodes/gpgpu/WorkgroupInfoNode.js +100 -0
  199. package/src/nodes/lighting/AONode.js +6 -3
  200. package/src/nodes/lighting/AmbientLightNode.js +6 -3
  201. package/src/nodes/lighting/AnalyticLightNode.js +198 -30
  202. package/src/nodes/lighting/BasicEnvironmentNode.js +6 -3
  203. package/src/nodes/lighting/BasicLightMapNode.js +6 -3
  204. package/src/nodes/lighting/DirectionalLightNode.js +7 -4
  205. package/src/nodes/lighting/EnvironmentNode.js +6 -3
  206. package/src/nodes/lighting/HemisphereLightNode.js +10 -6
  207. package/src/nodes/lighting/IESSpotLightNode.js +6 -3
  208. package/src/nodes/lighting/IrradianceNode.js +6 -3
  209. package/src/nodes/lighting/LightProbeNode.js +8 -31
  210. package/src/nodes/lighting/LightingContextNode.js +6 -3
  211. package/src/nodes/lighting/LightingNode.js +7 -3
  212. package/src/nodes/lighting/LightsNode.js +24 -5
  213. package/src/nodes/lighting/PointLightNode.js +11 -7
  214. package/src/nodes/lighting/RectAreaLightNode.js +11 -7
  215. package/src/nodes/lighting/SpotLightNode.js +13 -10
  216. package/src/nodes/math/ConditionalNode.js +23 -6
  217. package/src/nodes/math/MathNode.js +6 -3
  218. package/src/nodes/math/OperatorNode.js +6 -3
  219. package/src/nodes/pmrem/PMREMNode.js +6 -3
  220. package/src/nodes/utils/ArrayElementNode.js +8 -4
  221. package/src/nodes/utils/ConvertNode.js +7 -3
  222. package/src/nodes/utils/CubeMapNode.js +6 -3
  223. package/src/nodes/utils/EquirectUVNode.js +6 -3
  224. package/src/nodes/utils/FlipNode.js +7 -4
  225. package/src/nodes/utils/FunctionOverloadingNode.js +7 -3
  226. package/src/nodes/utils/JoinNode.js +6 -3
  227. package/src/nodes/utils/LoopNode.js +7 -3
  228. package/src/nodes/utils/MatcapUVNode.js +6 -3
  229. package/src/nodes/utils/MaxMipLevelNode.js +6 -3
  230. package/src/nodes/utils/OscNode.js +7 -3
  231. package/src/nodes/utils/RTTNode.js +6 -3
  232. package/src/nodes/utils/ReflectorNode.js +8 -5
  233. package/src/nodes/utils/RemapNode.js +7 -3
  234. package/src/nodes/utils/RotateNode.js +6 -3
  235. package/src/nodes/utils/SetNode.js +7 -4
  236. package/src/nodes/utils/SplitNode.js +7 -3
  237. package/src/nodes/utils/SpriteSheetUVNode.js +7 -3
  238. package/src/nodes/utils/StorageArrayElementNode.js +9 -8
  239. package/src/nodes/utils/TimerNode.js +6 -3
  240. package/src/nodes/utils/TriplanarTexturesNode.js +7 -3
  241. package/src/nodes/utils/ViewportUtils.js +2 -2
  242. package/src/objects/BatchedMesh.js +76 -10
  243. package/src/objects/LOD.js +21 -0
  244. package/src/objects/Line.js +1 -0
  245. package/src/objects/Mesh.js +7 -23
  246. package/src/objects/Points.js +2 -0
  247. package/src/renderers/WebGLRenderer.js +65 -50
  248. package/src/renderers/common/BundleGroup.js +26 -0
  249. package/src/renderers/common/ClippingContext.js +4 -3
  250. package/src/renderers/common/RenderContext.js +4 -5
  251. package/src/renderers/common/RenderObject.js +116 -5
  252. package/src/renderers/common/RenderObjects.js +8 -1
  253. package/src/renderers/common/Renderer.js +57 -49
  254. package/src/renderers/common/extras/PMREMGenerator.js +7 -9
  255. package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
  256. package/src/renderers/common/nodes/Nodes.js +33 -14
  257. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  258. package/src/renderers/webgl/WebGLAttributes.js +45 -14
  259. package/src/renderers/webgl/WebGLCapabilities.js +9 -0
  260. package/src/renderers/webgl/WebGLProgram.js +2 -0
  261. package/src/renderers/webgl/WebGLPrograms.js +21 -17
  262. package/src/renderers/webgl/WebGLState.js +21 -0
  263. package/src/renderers/webgl/WebGLTextures.js +22 -0
  264. package/src/renderers/webgl-fallback/WebGLBackend.js +50 -45
  265. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +4 -4
  266. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +6 -0
  267. package/src/renderers/webgl-fallback/utils/WebGLState.js +1 -4
  268. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +61 -16
  269. package/src/renderers/webgpu/WebGPUBackend.js +33 -25
  270. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +42 -0
  271. package/src/renderers/webgpu/WebGPURenderer.js +5 -2
  272. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +59 -0
  273. package/src/renderers/{common → webgpu}/nodes/StandardNodeLibrary.js +11 -11
  274. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +91 -11
  275. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +6 -16
  276. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +1 -1
  277. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +7 -5
  278. package/src/renderers/webgpu/utils/WebGPUUtils.js +1 -1
  279. package/src/utils.js +33 -1
  280. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  281. package/examples/jsm/loaders/TiltLoader.js +0 -520
  282. package/examples/jsm/utils/GPUStatsPanel.js +0 -95
  283. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  284. package/src/nodes/display/ViewportNode.js +0 -138
  285. package/src/nodes/lighting/LightNode.js +0 -57
  286. package/src/renderers/common/StandardRenderer.js +0 -18
  287. package/src/renderers/webvr/WebVRManager.js +0 -495
  288. package/src/renderers/webvr/WebVRUtils.js +0 -66
@@ -0,0 +1,302 @@
1
+ const refreshUniforms = [
2
+ 'alphaMap',
3
+ 'alphaTest',
4
+ 'anisotropy',
5
+ 'anisotropyMap',
6
+ 'anisotropyRotation',
7
+ 'aoMap',
8
+ 'attenuationColor',
9
+ 'attenuationDistance',
10
+ 'bumpMap',
11
+ 'clearcoat',
12
+ 'clearcoatMap',
13
+ 'clearcoatNormalMap',
14
+ 'clearcoatNormalScale',
15
+ 'clearcoatRoughness',
16
+ 'color',
17
+ 'dispersion',
18
+ 'displacementMap',
19
+ 'emissive',
20
+ 'emissiveMap',
21
+ 'envMap',
22
+ 'gradientMap',
23
+ 'ior',
24
+ 'iridescence',
25
+ 'iridescenceIOR',
26
+ 'iridescenceMap',
27
+ 'iridescenceThicknessMap',
28
+ 'lightMap',
29
+ 'map',
30
+ 'matcap',
31
+ 'metalness',
32
+ 'metalnessMap',
33
+ 'normalMap',
34
+ 'normalScale',
35
+ 'opacity',
36
+ 'roughness',
37
+ 'roughnessMap',
38
+ 'sheen',
39
+ 'sheenColor',
40
+ 'sheenColorMap',
41
+ 'sheenRoughnessMap',
42
+ 'shininess',
43
+ 'specular',
44
+ 'specularColor',
45
+ 'specularColorMap',
46
+ 'specularIntensity',
47
+ 'specularIntensityMap',
48
+ 'specularMap',
49
+ 'thickness',
50
+ 'transmission',
51
+ 'transmissionMap'
52
+ ];
53
+
54
+ class NodeMaterialObserver {
55
+
56
+ constructor( builder ) {
57
+
58
+ this.renderObjects = new WeakMap();
59
+ this.hasNode = this.containsNode( builder );
60
+ this.hasAnimation = builder.object.isSkinnedMesh === true;
61
+ this.refreshUniforms = refreshUniforms;
62
+ this.renderId = 0;
63
+
64
+ }
65
+
66
+ firstInitialization( renderObject ) {
67
+
68
+ const hasInitialized = this.renderObjects.has( renderObject );
69
+
70
+ if ( hasInitialized === false ) {
71
+
72
+ this.getRenderObjectData( renderObject );
73
+
74
+ return true;
75
+
76
+ }
77
+
78
+ return false;
79
+
80
+ }
81
+
82
+ getRenderObjectData( renderObject ) {
83
+
84
+ let data = this.renderObjects.get( renderObject );
85
+
86
+ if ( data === undefined ) {
87
+
88
+ data = {
89
+ material: this.getMaterialData( renderObject.material ),
90
+ worldMatrix: renderObject.object.matrixWorld.clone()
91
+ };
92
+
93
+ if ( renderObject.object.center ) {
94
+
95
+ data.center = renderObject.object.center.clone();
96
+
97
+ }
98
+
99
+ if ( renderObject.object.morphTargetInfluences ) {
100
+
101
+ data.morphTargetInfluences = renderObject.object.morphTargetInfluences.slice();
102
+
103
+ }
104
+
105
+ if ( renderObject.bundle !== null ) {
106
+
107
+ data.version = renderObject.bundle.version;
108
+
109
+ }
110
+
111
+ this.renderObjects.set( renderObject, data );
112
+
113
+ }
114
+
115
+ return data;
116
+
117
+ }
118
+
119
+ containsNode( builder ) {
120
+
121
+ const material = builder.material;
122
+
123
+ for ( const property in material ) {
124
+
125
+ if ( material[ property ] && material[ property ].isNode )
126
+ return true;
127
+
128
+ }
129
+
130
+ if ( builder.renderer.nodes.modelViewMatrix !== null || builder.renderer.nodes.modelNormalViewMatrix !== null )
131
+ return true;
132
+
133
+ return false;
134
+
135
+ }
136
+
137
+ getMaterialData( material ) {
138
+
139
+ const data = {};
140
+
141
+ for ( const property of this.refreshUniforms ) {
142
+
143
+ const value = material[ property ];
144
+
145
+ if ( value === null || value === undefined ) continue;
146
+
147
+ if ( typeof value === 'object' && value.clone !== undefined ) {
148
+
149
+ if ( value.isTexture === true ) {
150
+
151
+ data[ property ] = { id: value.id, version: value.version };
152
+
153
+ } else {
154
+
155
+ data[ property ] = value.clone();
156
+
157
+ }
158
+
159
+ } else {
160
+
161
+ data[ property ] = value;
162
+
163
+ }
164
+
165
+ }
166
+
167
+ return data;
168
+
169
+ }
170
+
171
+ equals( renderObject ) {
172
+
173
+ const { object, material } = renderObject;
174
+
175
+ const renderObjectData = this.getRenderObjectData( renderObject );
176
+
177
+ // world matrix
178
+
179
+ if ( renderObjectData.worldMatrix.equals( object.matrixWorld ) !== true ) {
180
+
181
+ renderObjectData.worldMatrix.copy( object.matrixWorld );
182
+
183
+ return false;
184
+
185
+ }
186
+
187
+ // material
188
+
189
+ const materialData = renderObjectData.material;
190
+
191
+ for ( const property in materialData ) {
192
+
193
+ const value = materialData[ property ];
194
+ const mtlValue = material[ property ];
195
+
196
+ if ( value.equals !== undefined ) {
197
+
198
+ if ( value.equals( mtlValue ) === false ) {
199
+
200
+ value.copy( mtlValue );
201
+
202
+ return false;
203
+
204
+ }
205
+
206
+ } else if ( mtlValue.isTexture === true ) {
207
+
208
+ if ( value.id !== mtlValue.id || value.version !== mtlValue.version ) {
209
+
210
+ value.id = mtlValue.id;
211
+ value.version = mtlValue.version;
212
+
213
+ return false;
214
+
215
+ }
216
+
217
+ } else if ( value !== mtlValue ) {
218
+
219
+ materialData[ property ] = mtlValue;
220
+
221
+ return false;
222
+
223
+ }
224
+
225
+ }
226
+
227
+ // morph targets
228
+
229
+ if ( renderObjectData.morphTargetInfluences ) {
230
+
231
+ let morphChanged = false;
232
+
233
+ for ( let i = 0; i < renderObjectData.morphTargetInfluences.length; i ++ ) {
234
+
235
+ if ( renderObjectData.morphTargetInfluences[ i ] !== object.morphTargetInfluences[ i ] ) {
236
+
237
+ morphChanged = true;
238
+
239
+ }
240
+
241
+ }
242
+
243
+ if ( morphChanged ) return true;
244
+
245
+ }
246
+
247
+ // center
248
+
249
+ if ( renderObjectData.center ) {
250
+
251
+ if ( renderObjectData.center.equals( object.center ) === false ) {
252
+
253
+ renderObjectData.center.copy( object.center );
254
+
255
+ return true;
256
+
257
+ }
258
+
259
+ }
260
+
261
+ // bundle
262
+
263
+ if ( renderObject.bundle !== null ) {
264
+
265
+ renderObjectData.version = renderObject.bundle.version;
266
+
267
+ }
268
+
269
+ return true;
270
+
271
+ }
272
+
273
+ needsRefresh( renderObject, nodeFrame ) {
274
+
275
+ if ( this.hasNode || this.hasAnimation || this.firstInitialization( renderObject ) )
276
+ return true;
277
+
278
+ const { renderId } = nodeFrame;
279
+
280
+ if ( this.renderId !== renderId ) {
281
+
282
+ this.renderId = renderId;
283
+
284
+ return true;
285
+
286
+ }
287
+
288
+ const isStatic = renderObject.object.static === true;
289
+ const isBundle = renderObject.bundle !== null && renderObject.bundle.static === true && this.getRenderObjectData( renderObject ).version === renderObject.bundle.version;
290
+
291
+ if ( isStatic || isBundle )
292
+ return false;
293
+
294
+ const notEqual = this.equals( renderObject ) !== true;
295
+
296
+ return notEqual;
297
+
298
+ }
299
+
300
+ }
301
+
302
+ export default NodeMaterialObserver;
@@ -1,4 +1,5 @@
1
1
  import { Vector3 } from './Vector3.js';
2
+ import { Vector4 } from './Vector4.js';
2
3
 
3
4
  const _v0 = /*@__PURE__*/ new Vector3();
4
5
  const _v1 = /*@__PURE__*/ new Vector3();
@@ -12,6 +13,10 @@ const _vap = /*@__PURE__*/ new Vector3();
12
13
  const _vbp = /*@__PURE__*/ new Vector3();
13
14
  const _vcp = /*@__PURE__*/ new Vector3();
14
15
 
16
+ const _v40 = /*@__PURE__*/ new Vector4();
17
+ const _v41 = /*@__PURE__*/ new Vector4();
18
+ const _v42 = /*@__PURE__*/ new Vector4();
19
+
15
20
  class Triangle {
16
21
 
17
22
  constructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {
@@ -106,6 +111,25 @@ class Triangle {
106
111
 
107
112
  }
108
113
 
114
+ static getInterpolatedAttribute( attr, i1, i2, i3, barycoord, target ) {
115
+
116
+ _v40.setScalar( 0 );
117
+ _v41.setScalar( 0 );
118
+ _v42.setScalar( 0 );
119
+
120
+ _v40.fromBufferAttribute( attr, i1 );
121
+ _v41.fromBufferAttribute( attr, i2 );
122
+ _v42.fromBufferAttribute( attr, i3 );
123
+
124
+ target.setScalar( 0 );
125
+ target.addScaledVector( _v40, barycoord.x );
126
+ target.addScaledVector( _v41, barycoord.y );
127
+ target.addScaledVector( _v42, barycoord.z );
128
+
129
+ return target;
130
+
131
+ }
132
+
109
133
  static isFrontFacing( a, b, c, direction ) {
110
134
 
111
135
  _v0.subVectors( c, b );
@@ -10,7 +10,7 @@ export { default as ConstNode } from './core/ConstNode.js';
10
10
  export { default as ContextNode } from './core/ContextNode.js';
11
11
  export { default as IndexNode } from './core/IndexNode.js';
12
12
  export { default as LightingModel } from './core/LightingModel.js';
13
- export { default as Node, registerNode } from './core/Node.js';
13
+ export { default as Node } from './core/Node.js';
14
14
  export { default as VarNode } from './core/VarNode.js';
15
15
  export { default as NodeAttribute } from './core/NodeAttribute.js';
16
16
  export { default as NodeBuilder } from './core/NodeBuilder.js';
@@ -88,7 +88,7 @@ export { default as FrontFacingNode } from './display/FrontFacingNode.js';
88
88
  export { default as NormalMapNode } from './display/NormalMapNode.js';
89
89
  export { default as PosterizeNode } from './display/PosterizeNode.js';
90
90
  export { default as ToneMappingNode } from './display/ToneMappingNode.js';
91
- export { default as ViewportNode } from './display/ViewportNode.js';
91
+ export { default as ScreenNode } from './display/ScreenNode.js';
92
92
  export { default as ViewportTextureNode } from './display/ViewportTextureNode.js';
93
93
  export { default as ViewportSharedTextureNode } from './display/ViewportSharedTextureNode.js';
94
94
  export { default as ViewportDepthTextureNode } from './display/ViewportDepthTextureNode.js';
@@ -114,6 +114,7 @@ export { default as StereoPassNode } from './display/StereoPassNode.js';
114
114
  export { default as AnaglyphPassNode } from './display/AnaglyphPassNode.js';
115
115
  export { default as ParallaxBarrierPassNode } from './display/ParallaxBarrierPassNode.js';
116
116
  export { default as PassNode } from './display/PassNode.js';
117
+ export { default as ToonOutlinePassNode } from './display/ToonOutlinePassNode.js';
117
118
 
118
119
  // code
119
120
  export { default as ExpressionNode } from './code/ExpressionNode.js';
@@ -135,7 +136,6 @@ export { default as RangeNode } from './geometry/RangeNode.js';
135
136
  export { default as ComputeNode } from './gpgpu/ComputeNode.js';
136
137
 
137
138
  // lighting
138
- export { default as LightNode } from './lighting/LightNode.js';
139
139
  export { default as PointLightNode } from './lighting/PointLightNode.js';
140
140
  export { default as DirectionalLightNode } from './lighting/DirectionalLightNode.js';
141
141
  export { default as RectAreaLightNode } from './lighting/RectAreaLightNode.js';
package/src/nodes/TSL.js CHANGED
@@ -23,136 +23,138 @@ export * from './math/MathUtils.js';
23
23
  export * from './math/TriNoise3D.js';
24
24
 
25
25
  // utils
26
- export { default as EquirectUVNode, equirectUV } from './utils/EquirectUVNode.js';
27
- export { default as FunctionOverloadingNode, overloadingFn } from './utils/FunctionOverloadingNode.js';
28
- export { default as LoopNode, Loop, Continue, Break } from './utils/LoopNode.js';
29
- export { default as MatcapUVNode, matcapUV } from './utils/MatcapUVNode.js';
30
- export { default as MaxMipLevelNode, maxMipLevel } from './utils/MaxMipLevelNode.js';
31
- export { default as OscNode, oscSine, oscSquare, oscTriangle, oscSawtooth } from './utils/OscNode.js';
26
+ export * from './utils/EquirectUVNode.js';
27
+ export * from './utils/FunctionOverloadingNode.js';
28
+ export * from './utils/LoopNode.js';
29
+ export * from './utils/MatcapUVNode.js';
30
+ export * from './utils/MaxMipLevelNode.js';
31
+ export * from './utils/OscNode.js';
32
32
  export * from './utils/Packing.js';
33
- export { default as RemapNode, remap, remapClamp } from './utils/RemapNode.js';
33
+ export * from './utils/RemapNode.js';
34
34
  export * from './utils/UVUtils.js';
35
35
  export * from './utils/SpriteUtils.js';
36
36
  export * from './utils/ViewportUtils.js';
37
- export { default as RotateNode, rotate } from './utils/RotateNode.js';
38
- export { default as SpriteSheetUVNode, spritesheetUV } from './utils/SpriteSheetUVNode.js';
39
- export { default as TimerNode, timerLocal, timerGlobal, timerDelta, frameId } from './utils/TimerNode.js';
40
- export { default as TriplanarTexturesNode, triplanarTextures, triplanarTexture } from './utils/TriplanarTexturesNode.js';
41
- export { default as ReflectorNode, reflector } from './utils/ReflectorNode.js';
42
- export { default as RTTNode, rtt, convertToTexture } from './utils/RTTNode.js';
37
+ export * from './utils/RotateNode.js';
38
+ export * from './utils/SpriteSheetUVNode.js';
39
+ export * from './utils/TimerNode.js';
40
+ export * from './utils/TriplanarTexturesNode.js';
41
+ export * from './utils/ReflectorNode.js';
42
+ export * from './utils/RTTNode.js';
43
43
 
44
44
  // three.js shading language
45
45
  export * from './tsl/TSLBase.js';
46
46
 
47
47
  // accessors
48
48
  export * from './accessors/AccessorsUtils.js';
49
- export { default as UniformArrayNode, uniformArray } from './accessors/UniformArrayNode.js';
49
+ export * from './accessors/UniformArrayNode.js';
50
50
  export * from './accessors/Bitangent.js';
51
- export { default as BufferAttributeNode, bufferAttribute, dynamicBufferAttribute, instancedBufferAttribute, instancedDynamicBufferAttribute } from './accessors/BufferAttributeNode.js';
52
- export { default as BufferNode, buffer } from './accessors/BufferNode.js';
51
+ export * from './accessors/BufferAttributeNode.js';
52
+ export * from './accessors/BufferNode.js';
53
53
  export * from './accessors/Camera.js';
54
- export { default as VertexColorNode, vertexColor } from './accessors/VertexColorNode.js';
55
- export { default as CubeTextureNode, cubeTexture } from './accessors/CubeTextureNode.js';
56
- export { default as InstanceNode, instance } from './accessors/InstanceNode.js';
57
- export { default as BatchNode, batch } from './accessors/BatchNode.js';
58
- export { default as MaterialNode, materialAlphaTest, materialColor, materialShininess, materialEmissive, materialOpacity, materialSpecular, materialSpecularStrength, materialReflectivity, materialRoughness, materialMetalness, materialNormal, materialClearcoat, materialClearcoatRoughness, materialClearcoatNormal, materialRotation, materialSheen, materialSheenRoughness, materialIridescence, materialIridescenceIOR, materialIridescenceThickness, materialLineScale, materialLineDashSize, materialLineGapSize, materialLineWidth, materialLineDashOffset, materialPointWidth, materialAnisotropy, materialAnisotropyVector, materialDispersion, materialLightMap, materialAOMap } from './accessors/MaterialNode.js';
54
+ export * from './accessors/VertexColorNode.js';
55
+ export * from './accessors/CubeTextureNode.js';
56
+ export * from './accessors/InstanceNode.js';
57
+ export * from './accessors/BatchNode.js';
58
+ export * from './accessors/MaterialNode.js';
59
59
  export * from './accessors/MaterialProperties.js';
60
- export { default as MaterialReferenceNode, materialReference } from './accessors/MaterialReferenceNode.js';
61
- export { default as RendererReferenceNode, rendererReference } from './accessors/RendererReferenceNode.js';
62
- export { default as MorphNode, morphReference } from './accessors/MorphNode.js';
60
+ export * from './accessors/MaterialReferenceNode.js';
61
+ export * from './accessors/RendererReferenceNode.js';
62
+ export * from './accessors/MorphNode.js';
63
63
  export * from './accessors/TextureBicubic.js';
64
- export { default as ModelNode, modelDirection, modelViewMatrix, modelNormalMatrix, modelWorldMatrix, modelPosition, modelViewPosition, modelScale, modelWorldMatrixInverse } from './accessors/ModelNode.js';
65
- export { default as ModelViewProjectionNode, modelViewProjection } from './accessors/ModelViewProjectionNode.js';
64
+ export * from './accessors/ModelNode.js';
65
+ export * from './accessors/ModelViewProjectionNode.js';
66
66
  export * from './accessors/Normal.js';
67
- export { default as Object3DNode, objectDirection, objectViewMatrix, objectNormalMatrix, objectWorldMatrix, objectPosition, objectScale, objectViewPosition } from './accessors/Object3DNode.js';
68
- export { default as PointUVNode, pointUV } from './accessors/PointUVNode.js';
67
+ export * from './accessors/Object3DNode.js';
68
+ export * from './accessors/PointUVNode.js';
69
69
  export * from './accessors/Position.js';
70
- export { default as ReferenceNode, reference, referenceBuffer } from './accessors/ReferenceNode.js';
70
+ export * from './accessors/ReferenceNode.js';
71
71
  export * from './accessors/ReflectVector.js';
72
- export { default as SkinningNode, skinning, skinningReference } from './accessors/SkinningNode.js';
73
- export { default as SceneNode, backgroundBlurriness, backgroundIntensity } from './accessors/SceneNode.js';
74
- export { default as StorageBufferNode, storage, storageObject } from './accessors/StorageBufferNode.js';
72
+ export * from './accessors/SkinningNode.js';
73
+ export * from './accessors/SceneNode.js';
74
+ export * from './accessors/StorageBufferNode.js';
75
75
  export * from './accessors/Tangent.js';
76
- export { default as TextureNode, texture, textureLoad, /*textureLevel,*/ sampler } from './accessors/TextureNode.js';
77
- export { default as TextureSizeNode, textureSize } from './accessors/TextureSizeNode.js';
78
- export { default as StorageTextureNode, storageTexture, textureStore } from './accessors/StorageTextureNode.js';
79
- export { default as Texture3DNode, texture3D } from './accessors/Texture3DNode.js';
76
+ export * from './accessors/TextureNode.js';
77
+ export * from './accessors/TextureSizeNode.js';
78
+ export * from './accessors/StorageTextureNode.js';
79
+ export * from './accessors/Texture3DNode.js';
80
80
  export * from './accessors/UV.js';
81
- export { default as UserDataNode, userData } from './accessors/UserDataNode.js';
81
+ export * from './accessors/UserDataNode.js';
82
82
  export * from './accessors/VelocityNode.js';
83
83
 
84
84
  // display
85
85
  export * from './display/BlendMode.js';
86
- export { default as BumpMapNode, bumpMap } from './display/BumpMapNode.js';
86
+ export * from './display/BumpMapNode.js';
87
87
  export * from './display/ColorAdjustment.js';
88
- export { default as ColorSpaceNode, toOutputColorSpace, toWorkingColorSpace } from './display/ColorSpaceNode.js';
89
- export { default as FrontFacingNode, frontFacing, faceDirection } from './display/FrontFacingNode.js';
90
- export { default as NormalMapNode, normalMap } from './display/NormalMapNode.js';
91
- export { default as PosterizeNode, posterize } from './display/PosterizeNode.js';
92
- export { default as ToneMappingNode, toneMapping } from './display/ToneMappingNode.js';
93
- export { default as ViewportNode, viewport, viewportCoordinate, viewportResolution, viewportUV, viewportTopLeft, viewportBottomLeft } from './display/ViewportNode.js';
94
- export { default as ViewportTextureNode, viewportTexture, viewportMipTexture } from './display/ViewportTextureNode.js';
95
- export { default as ViewportSharedTextureNode, viewportSharedTexture } from './display/ViewportSharedTextureNode.js';
96
- export { default as ViewportDepthTextureNode, viewportDepthTexture } from './display/ViewportDepthTextureNode.js';
97
- export { default as ViewportDepthNode, viewZToOrthographicDepth, orthographicDepthToViewZ, viewZToPerspectiveDepth, perspectiveDepthToViewZ, depth, linearDepth, viewportLinearDepth } from './display/ViewportDepthNode.js';
98
- export { default as GaussianBlurNode, gaussianBlur } from './display/GaussianBlurNode.js';
99
- export { default as AfterImageNode, afterImage } from './display/AfterImageNode.js';
100
- export { default as AnamorphicNode, anamorphic } from './display/AnamorphicNode.js';
101
- export { default as SobelOperatorNode, sobel } from './display/SobelOperatorNode.js';
102
- export { default as DepthOfFieldNode, dof } from './display/DepthOfFieldNode.js';
103
- export { default as DotScreenNode, dotScreen } from './display/DotScreenNode.js';
104
- export { default as RGBShiftNode, rgbShift } from './display/RGBShiftNode.js';
105
- export { default as FilmNode, film } from './display/FilmNode.js';
106
- export { default as Lut3DNode, lut3D } from './display/Lut3DNode.js';
88
+ export * from './display/ColorSpaceNode.js';
89
+ export * from './display/FrontFacingNode.js';
90
+ export * from './display/NormalMapNode.js';
91
+ export * from './display/PosterizeNode.js';
92
+ export * from './display/ToneMappingNode.js';
93
+ export * from './display/ScreenNode.js';
94
+ export * from './display/ViewportTextureNode.js';
95
+ export * from './display/ViewportSharedTextureNode.js';
96
+ export * from './display/ViewportDepthTextureNode.js';
97
+ export * from './display/ViewportDepthNode.js';
98
+ export * from './display/GaussianBlurNode.js';
99
+ export * from './display/AfterImageNode.js';
100
+ export * from './display/AnamorphicNode.js';
101
+ export * from './display/SobelOperatorNode.js';
102
+ export * from './display/DepthOfFieldNode.js';
103
+ export * from './display/DotScreenNode.js';
104
+ export * from './display/RGBShiftNode.js';
105
+ export * from './display/FilmNode.js';
106
+ export * from './display/Lut3DNode.js';
107
107
  export * from './display/MotionBlur.js';
108
- export { default as GTAONode, ao } from './display/GTAONode.js';
109
- export { default as DenoiseNode, denoise } from './display/DenoiseNode.js';
110
- export { default as FXAANode, fxaa } from './display/FXAANode.js';
111
- export { default as BloomNode, bloom } from './display/BloomNode.js';
112
- export { default as TransitionNode, transition } from './display/TransitionNode.js';
113
- export { default as RenderOutputNode, renderOutput } from './display/RenderOutputNode.js';
114
- export { default as PixelationPassNode, pixelationPass } from './display/PixelationPassNode.js';
115
- export { default as SSAAPassNode, ssaaPass } from './display/SSAAPassNode.js';
116
- export { default as StereoPassNode, stereoPass } from './display/StereoPassNode.js';
117
- export { default as AnaglyphPassNode, anaglyphPass } from './display/AnaglyphPassNode.js';
118
- export { default as ParallaxBarrierPassNode, parallaxBarrierPass } from './display/ParallaxBarrierPassNode.js';
119
- export { bleach } from './display/BleachBypass.js';
120
- export { sepia } from './display/Sepia.js';
121
-
122
- export { default as PassNode, pass, passTexture, depthPass } from './display/PassNode.js';
123
-
124
- import * as ColorSpaceFunctions from './display/ColorSpaceFunctions.js';
125
- export { ColorSpaceFunctions };
126
-
127
- import * as ToneMappingFunctions from './display/ToneMappingFunctions.js';
128
- export { ToneMappingFunctions };
108
+ export * from './display/GTAONode.js';
109
+ export * from './display/DenoiseNode.js';
110
+ export * from './display/FXAANode.js';
111
+ export * from './display/BloomNode.js';
112
+ export * from './display/TransitionNode.js';
113
+ export * from './display/RenderOutputNode.js';
114
+ export * from './display/PixelationPassNode.js';
115
+ export * from './display/SSAAPassNode.js';
116
+ export * from './display/StereoPassNode.js';
117
+ export * from './display/AnaglyphPassNode.js';
118
+ export * from './display/ParallaxBarrierPassNode.js';
119
+ export * from './display/BleachBypass.js';
120
+ export * from './display/Sepia.js';
121
+ export * from './display/ToonOutlinePassNode.js';
122
+
123
+ export * from './display/PassNode.js';
124
+
125
+ export * from './display/ColorSpaceFunctions.js';
126
+ export * from './display/ToneMappingFunctions.js';
129
127
 
130
128
  // code
131
- export { default as ExpressionNode, expression } from './code/ExpressionNode.js';
132
- export { default as CodeNode, code, js, wgsl, glsl } from './code/CodeNode.js';
133
- export { default as FunctionCallNode, call } from './code/FunctionCallNode.js';
134
- export { default as FunctionNode, wgslFn, glslFn } from './code/FunctionNode.js';
135
- export { default as ScriptableNode, scriptable, global } from './code/ScriptableNode.js';
136
- export { default as ScriptableValueNode, scriptableValue } from './code/ScriptableValueNode.js';
129
+ export * from './code/ExpressionNode.js';
130
+ export * from './code/CodeNode.js';
131
+ export * from './code/FunctionCallNode.js';
132
+ export * from './code/FunctionNode.js';
133
+ export * from './code/ScriptableNode.js';
134
+ export * from './code/ScriptableValueNode.js';
137
135
 
138
136
  // fog
139
- export { default as FogNode, fog } from './fog/FogNode.js';
140
- export { default as FogRangeNode, rangeFog } from './fog/FogRangeNode.js';
141
- export { default as FogExp2Node, densityFog } from './fog/FogExp2Node.js';
137
+ export * from './fog/FogNode.js';
138
+ export * from './fog/FogRangeNode.js';
139
+ export * from './fog/FogExp2Node.js';
142
140
 
143
141
  // geometry
144
- export { default as RangeNode, range } from './geometry/RangeNode.js';
142
+ export * from './geometry/RangeNode.js';
145
143
 
146
144
  // gpgpu
147
- export { default as ComputeNode, compute } from './gpgpu/ComputeNode.js';
145
+ export * from './gpgpu/ComputeNode.js';
146
+ export * from './gpgpu/ComputeBuiltinNode.js';
147
+ export * from './gpgpu/BarrierNode.js';
148
+ export * from './gpgpu/WorkgroupInfoNode.js';
149
+ export * from './gpgpu/AtomicFunctionNode.js';
148
150
 
149
151
  // lighting
150
- export { default as LightNode, lightTargetDirection } from './lighting/LightNode.js';
151
- export { default as LightsNode, lights } from './lighting/LightsNode.js';
152
- export { default as LightingContextNode, lightingContext } from './lighting/LightingContextNode.js';
152
+ export * from './accessors/Lights.js';
153
+ export * from './lighting/LightsNode.js';
154
+ export * from './lighting/LightingContextNode.js';
153
155
 
154
156
  // pmrem
155
- export { default as PMREMNode, pmremTexture } from './pmrem/PMREMNode.js';
157
+ export * from './pmrem/PMREMNode.js';
156
158
  export * from './pmrem/PMREMUtils.js';
157
159
 
158
160
  // procedural
@@ -174,3 +176,4 @@ export * from './lighting/LightUtils.js';
174
176
 
175
177
  export { default as getGeometryRoughness } from './functions/material/getGeometryRoughness.js';
176
178
  export { default as getRoughness } from './functions/material/getRoughness.js';
179
+ export { default as getShIrradianceAt } from './functions/material/getShIrradianceAt.js';
@@ -1,4 +1,4 @@
1
- import Node, { registerNode } from '../core/Node.js';
1
+ import Node from '../core/Node.js';
2
2
  import { normalLocal } from './Normal.js';
3
3
  import { positionLocal } from './Position.js';
4
4
  import { nodeProxy, vec3, mat3, mat4, int, ivec2, float, Fn } from '../tsl/TSLBase.js';
@@ -10,6 +10,12 @@ import { varyingProperty } from '../core/PropertyNode.js';
10
10
 
11
11
  class BatchNode extends Node {
12
12
 
13
+ static get type() {
14
+
15
+ return 'BatchNode';
16
+
17
+ }
18
+
13
19
  constructor( batchMesh ) {
14
20
 
15
21
  super( 'void' );
@@ -119,6 +125,4 @@ class BatchNode extends Node {
119
125
 
120
126
  export default BatchNode;
121
127
 
122
- BatchNode.type = /*@__PURE__*/ registerNode( 'Batch', BatchNode );
123
-
124
128
  export const batch = /*@__PURE__*/ nodeProxy( BatchNode );
@@ -1,4 +1,3 @@
1
- import { registerNode } from '../core/Node.js';
2
1
  import InputNode from '../core/InputNode.js';
3
2
  import { nodeObject, addMethodChaining } from '../tsl/TSLCore.js';
4
3
  import { varying } from '../core/VaryingNode.js';
@@ -9,6 +8,12 @@ import { StaticDrawUsage, DynamicDrawUsage } from '../../constants.js';
9
8
 
10
9
  class BufferAttributeNode extends InputNode {
11
10
 
11
+ static get type() {
12
+
13
+ return 'BufferAttributeNode';
14
+
15
+ }
16
+
12
17
  constructor( value, bufferType = null, bufferStride = 0, bufferOffset = 0 ) {
13
18
 
14
19
  super( value, bufferType );
@@ -151,8 +156,6 @@ class BufferAttributeNode extends InputNode {
151
156
 
152
157
  export default BufferAttributeNode;
153
158
 
154
- BufferAttributeNode.type = /*@__PURE__*/ registerNode( 'BufferAttribute', BufferAttributeNode );
155
-
156
159
  export const bufferAttribute = ( array, type, stride, offset ) => nodeObject( new BufferAttributeNode( array, type, stride, offset ) );
157
160
  export const dynamicBufferAttribute = ( array, type, stride, offset ) => bufferAttribute( array, type, stride, offset ).setUsage( DynamicDrawUsage );
158
161