super-three 0.167.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 (311) hide show
  1. package/build/three.cjs +165 -44
  2. package/build/three.module.js +165 -45
  3. package/build/three.module.min.js +1 -1
  4. package/build/three.webgpu.js +23600 -21931
  5. package/build/three.webgpu.min.js +1 -1
  6. package/examples/jsm/Addons.js +3 -1
  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/effects/AnaglyphEffect.js +6 -13
  17. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  18. package/examples/jsm/effects/StereoEffect.js +6 -1
  19. package/examples/jsm/environments/RoomEnvironment.js +1 -1
  20. package/examples/jsm/exporters/GLTFExporter.js +6 -1
  21. package/examples/jsm/exporters/USDZExporter.js +29 -8
  22. package/examples/jsm/helpers/LightProbeHelper.js +42 -43
  23. package/examples/jsm/loaders/KTX2Loader.js +19 -7
  24. package/examples/jsm/loaders/MaterialXLoader.js +11 -4
  25. package/examples/jsm/loaders/PCDLoader.js +9 -9
  26. package/examples/jsm/objects/SkyMesh.js +188 -0
  27. package/examples/jsm/objects/Water2Mesh.js +159 -0
  28. package/examples/jsm/objects/WaterMesh.js +102 -0
  29. package/examples/jsm/physics/RapierPhysics.js +20 -0
  30. package/examples/jsm/postprocessing/OutlinePass.js +31 -46
  31. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  32. package/examples/jsm/shaders/BleachBypassShader.js +1 -2
  33. package/examples/jsm/shaders/OutputShader.js +1 -1
  34. package/examples/jsm/transpiler/TSLEncoder.js +8 -8
  35. package/examples/jsm/utils/TextureUtils.js +1 -1
  36. package/package.json +2 -1
  37. package/src/Three.WebGPU.js +6 -0
  38. package/src/Three.js +1 -0
  39. package/src/constants.js +1 -1
  40. package/src/extras/Controls.js +32 -0
  41. package/src/loaders/ObjectLoader.js +3 -3
  42. package/src/{nodes/loaders → loaders/nodes}/NodeLoader.js +4 -4
  43. package/src/{nodes/loaders → loaders/nodes}/NodeMaterialLoader.js +1 -2
  44. package/src/materials/Material.js +4 -7
  45. package/src/{nodes/materials → materials/nodes}/InstancedPointsNodeMaterial.js +33 -24
  46. package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +34 -37
  47. package/src/{nodes/materials → materials/nodes}/LineBasicNodeMaterial.js +3 -4
  48. package/src/{nodes/materials → materials/nodes}/LineDashedNodeMaterial.js +7 -9
  49. package/src/{nodes/materials → materials/nodes}/MeshBasicNodeMaterial.js +11 -11
  50. package/src/{nodes/materials → materials/nodes}/MeshLambertNodeMaterial.js +5 -5
  51. package/src/{nodes/materials → materials/nodes}/MeshMatcapNodeMaterial.js +8 -8
  52. package/src/materials/nodes/MeshNormalNodeMaterial.js +40 -0
  53. package/src/{nodes/materials → materials/nodes}/MeshPhongNodeMaterial.js +9 -8
  54. package/src/{nodes/materials → materials/nodes}/MeshPhysicalNodeMaterial.js +18 -17
  55. package/src/{nodes/materials → materials/nodes}/MeshSSSNodeMaterial.js +6 -6
  56. package/src/{nodes/materials → materials/nodes}/MeshStandardNodeMaterial.js +17 -11
  57. package/src/{nodes/materials → materials/nodes}/MeshToonNodeMaterial.js +4 -4
  58. package/src/{nodes/materials → materials/nodes}/NodeMaterial.js +67 -86
  59. package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +1 -1
  60. package/src/{nodes/materials → materials/nodes}/PointsNodeMaterial.js +3 -4
  61. package/src/{nodes/materials → materials/nodes}/ShadowNodeMaterial.js +4 -4
  62. package/src/{nodes/materials → materials/nodes}/SpriteNodeMaterial.js +11 -11
  63. package/src/{nodes/materials → materials/nodes}/VolumeNodeMaterial.js +14 -16
  64. package/src/nodes/Nodes.js +103 -159
  65. package/src/nodes/TSL.js +176 -0
  66. package/src/nodes/accessors/AccessorsUtils.js +8 -8
  67. package/src/nodes/accessors/BatchNode.js +48 -20
  68. package/src/nodes/accessors/{BitangentNode.js → Bitangent.js} +9 -9
  69. package/src/nodes/accessors/BufferAttributeNode.js +5 -5
  70. package/src/nodes/accessors/BufferNode.js +4 -4
  71. package/src/nodes/accessors/{CameraNode.js → Camera.js} +10 -10
  72. package/src/nodes/accessors/ClippingNode.js +16 -14
  73. package/src/nodes/accessors/CubeTextureNode.js +5 -7
  74. package/src/nodes/accessors/InstanceNode.js +17 -13
  75. package/src/nodes/accessors/InstancedPointsMaterialNode.js +4 -4
  76. package/src/nodes/accessors/MaterialNode.js +52 -55
  77. package/src/nodes/accessors/MaterialProperties.js +3 -0
  78. package/src/nodes/accessors/MaterialReferenceNode.js +6 -4
  79. package/src/nodes/accessors/ModelNode.js +11 -11
  80. package/src/nodes/accessors/ModelViewProjectionNode.js +6 -7
  81. package/src/nodes/accessors/MorphNode.js +12 -12
  82. package/src/nodes/accessors/Normal.js +62 -0
  83. package/src/nodes/accessors/Object3DNode.js +10 -10
  84. package/src/nodes/accessors/PointUVNode.js +4 -4
  85. package/src/nodes/accessors/Position.js +10 -0
  86. package/src/nodes/accessors/ReferenceBaseNode.js +143 -0
  87. package/src/nodes/accessors/ReferenceNode.js +13 -7
  88. package/src/nodes/accessors/ReflectVector.js +10 -0
  89. package/src/nodes/accessors/RendererReferenceNode.js +6 -6
  90. package/src/nodes/accessors/SceneNode.js +5 -6
  91. package/src/nodes/accessors/SkinningNode.js +84 -21
  92. package/src/nodes/accessors/StorageBufferNode.js +4 -5
  93. package/src/nodes/accessors/StorageTextureNode.js +5 -5
  94. package/src/nodes/accessors/Tangent.js +22 -0
  95. package/src/nodes/accessors/Texture3DNode.js +11 -11
  96. package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +3 -32
  97. package/src/nodes/accessors/TextureNode.js +16 -21
  98. package/src/nodes/accessors/TextureSizeNode.js +4 -6
  99. package/src/nodes/accessors/{UniformsNode.js → UniformArrayNode.js} +17 -8
  100. package/src/nodes/accessors/UserDataNode.js +4 -4
  101. package/src/nodes/accessors/VelocityNode.js +83 -0
  102. package/src/nodes/accessors/VertexColorNode.js +4 -4
  103. package/src/nodes/code/CodeNode.js +5 -5
  104. package/src/nodes/code/ExpressionNode.js +4 -4
  105. package/src/nodes/code/FunctionCallNode.js +5 -5
  106. package/src/nodes/code/FunctionNode.js +5 -23
  107. package/src/nodes/code/ScriptableNode.js +4 -6
  108. package/src/nodes/code/ScriptableValueNode.js +4 -6
  109. package/src/nodes/core/AssignNode.js +5 -5
  110. package/src/nodes/core/AttributeNode.js +7 -20
  111. package/src/nodes/core/BypassNode.js +5 -5
  112. package/src/nodes/core/CacheNode.js +5 -5
  113. package/src/nodes/core/ConstNode.js +2 -2
  114. package/src/nodes/core/ContextNode.js +17 -11
  115. package/src/nodes/core/IndexNode.js +12 -7
  116. package/src/nodes/core/InputNode.js +2 -2
  117. package/src/nodes/core/MRTNode.js +12 -6
  118. package/src/nodes/core/Node.js +39 -19
  119. package/src/nodes/core/NodeBuilder.js +46 -33
  120. package/src/nodes/core/NodeUtils.js +1 -0
  121. package/src/nodes/core/OutputStructNode.js +4 -4
  122. package/src/nodes/core/ParameterNode.js +4 -4
  123. package/src/nodes/core/PropertyNode.js +32 -32
  124. package/src/nodes/core/StackNode.js +26 -10
  125. package/src/nodes/core/StructTypeNode.js +2 -2
  126. package/src/nodes/core/TempNode.js +2 -2
  127. package/src/nodes/core/UniformGroupNode.js +8 -9
  128. package/src/nodes/core/UniformNode.js +4 -4
  129. package/src/nodes/core/VarNode.js +6 -6
  130. package/src/nodes/core/VaryingNode.js +5 -5
  131. package/src/nodes/display/AfterImageNode.js +9 -9
  132. package/src/nodes/display/AnaglyphPassNode.js +61 -0
  133. package/src/nodes/display/AnamorphicNode.js +11 -11
  134. package/src/nodes/display/BleachBypass.js +26 -0
  135. package/src/nodes/display/BlendMode.js +54 -0
  136. package/src/nodes/display/BloomNode.js +21 -19
  137. package/src/nodes/display/BumpMapNode.js +7 -12
  138. package/src/nodes/display/ColorAdjustment.js +46 -0
  139. package/src/nodes/display/ColorSpaceFunctions.js +38 -0
  140. package/src/nodes/display/ColorSpaceNode.js +40 -63
  141. package/src/nodes/display/DenoiseNode.js +20 -17
  142. package/src/nodes/display/DepthOfFieldNode.js +8 -6
  143. package/src/nodes/display/DotScreenNode.js +10 -22
  144. package/src/nodes/display/FXAANode.js +17 -15
  145. package/src/nodes/display/FilmNode.js +7 -6
  146. package/src/nodes/display/FrontFacingNode.js +5 -5
  147. package/src/nodes/display/GTAONode.js +19 -15
  148. package/src/nodes/display/GaussianBlurNode.js +11 -8
  149. package/src/nodes/display/Lut3DNode.js +6 -5
  150. package/src/nodes/display/MotionBlur.js +25 -0
  151. package/src/nodes/display/NormalMapNode.js +8 -10
  152. package/src/nodes/display/ParallaxBarrierPassNode.js +55 -0
  153. package/src/nodes/display/PassNode.js +84 -8
  154. package/src/nodes/display/PixelationPassNode.js +12 -7
  155. package/src/nodes/display/PosterizeNode.js +4 -6
  156. package/src/nodes/display/RGBShiftNode.js +8 -7
  157. package/src/nodes/display/RenderOutputNode.js +9 -9
  158. package/src/nodes/display/SSAAPassNode.js +284 -0
  159. package/src/nodes/display/Sepia.js +17 -0
  160. package/src/nodes/display/SobelOperatorNode.js +9 -7
  161. package/src/nodes/display/StereoCompositePassNode.js +107 -0
  162. package/src/nodes/display/StereoPassNode.js +80 -0
  163. package/src/nodes/display/ToneMappingFunctions.js +190 -0
  164. package/src/nodes/display/ToneMappingNode.js +12 -173
  165. package/src/nodes/display/TransitionNode.js +9 -8
  166. package/src/nodes/display/ViewportDepthNode.js +30 -29
  167. package/src/nodes/display/ViewportDepthTextureNode.js +6 -8
  168. package/src/nodes/display/ViewportNode.js +26 -25
  169. package/src/nodes/display/ViewportSharedTextureNode.js +6 -8
  170. package/src/nodes/display/ViewportTextureNode.js +7 -10
  171. package/src/nodes/fog/FogExp2Node.js +4 -6
  172. package/src/nodes/fog/FogNode.js +5 -7
  173. package/src/nodes/fog/FogRangeNode.js +4 -6
  174. package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
  175. package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  176. package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  177. package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
  178. package/src/nodes/functions/BSDF/D_GGX.js +2 -2
  179. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
  180. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  181. package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
  182. package/src/nodes/functions/BSDF/LTC.js +6 -6
  183. package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  184. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  185. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  186. package/src/nodes/functions/BasicLightingModel.js +1 -1
  187. package/src/nodes/functions/PhongLightingModel.js +5 -5
  188. package/src/nodes/functions/PhysicalLightingModel.js +32 -31
  189. package/src/nodes/functions/ShadowMaskModel.js +1 -1
  190. package/src/nodes/functions/ToonLightingModel.js +3 -3
  191. package/src/nodes/functions/material/getGeometryRoughness.js +4 -4
  192. package/src/nodes/functions/material/getRoughness.js +2 -2
  193. package/src/nodes/geometry/RangeNode.js +4 -4
  194. package/src/nodes/gpgpu/ComputeNode.js +5 -5
  195. package/src/nodes/lighting/AONode.js +2 -2
  196. package/src/nodes/lighting/AmbientLightNode.js +2 -7
  197. package/src/nodes/lighting/AnalyticLightNode.js +34 -13
  198. package/src/nodes/lighting/BasicEnvironmentNode.js +4 -3
  199. package/src/nodes/lighting/BasicLightMapNode.js +3 -3
  200. package/src/nodes/lighting/DirectionalLightNode.js +2 -7
  201. package/src/nodes/lighting/EnvironmentNode.js +20 -19
  202. package/src/nodes/lighting/HemisphereLightNode.js +3 -7
  203. package/src/nodes/lighting/IESSpotLightNode.js +3 -8
  204. package/src/nodes/lighting/IrradianceNode.js +2 -2
  205. package/src/nodes/lighting/LightNode.js +5 -5
  206. package/src/nodes/lighting/LightProbeNode.js +76 -0
  207. package/src/nodes/lighting/LightUtils.js +3 -3
  208. package/src/nodes/lighting/LightingContextNode.js +15 -17
  209. package/src/nodes/lighting/LightingNode.js +2 -2
  210. package/src/nodes/lighting/LightsNode.js +94 -76
  211. package/src/nodes/lighting/PointLightNode.js +3 -8
  212. package/src/nodes/lighting/RectAreaLightNode.js +2 -6
  213. package/src/nodes/lighting/SpotLightNode.js +3 -8
  214. package/src/nodes/materialx/MaterialXNodes.js +2 -2
  215. package/src/nodes/materialx/lib/mx_hsv.js +36 -31
  216. package/src/nodes/materialx/lib/mx_noise.js +96 -96
  217. package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
  218. package/src/nodes/math/{CondNode.js → ConditionalNode.js} +18 -7
  219. package/src/nodes/math/Hash.js +13 -0
  220. package/src/nodes/math/MathNode.js +124 -124
  221. package/src/nodes/math/MathUtils.js +0 -7
  222. package/src/nodes/math/OperatorNode.js +94 -52
  223. package/src/nodes/math/TriNoise3D.js +19 -29
  224. package/src/nodes/pmrem/PMREMNode.js +58 -15
  225. package/src/nodes/pmrem/PMREMUtils.js +46 -46
  226. package/src/nodes/procedural/Checker.js +14 -0
  227. package/src/nodes/tsl/TSLBase.js +30 -0
  228. package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +105 -97
  229. package/src/nodes/utils/ArrayElementNode.js +2 -2
  230. package/src/nodes/utils/ConvertNode.js +2 -2
  231. package/src/nodes/utils/CubeMapNode.js +157 -0
  232. package/src/nodes/utils/Discard.js +8 -0
  233. package/src/nodes/utils/EquirectUVNode.js +5 -5
  234. package/src/nodes/utils/FlipNode.js +65 -0
  235. package/src/nodes/utils/FunctionOverloadingNode.js +5 -5
  236. package/src/nodes/utils/JoinNode.js +2 -2
  237. package/src/nodes/utils/LoopNode.js +12 -6
  238. package/src/nodes/utils/MatcapUVNode.js +6 -6
  239. package/src/nodes/utils/MaxMipLevelNode.js +4 -4
  240. package/src/nodes/utils/OscNode.js +7 -7
  241. package/src/nodes/utils/Packing.js +4 -0
  242. package/src/nodes/utils/RTTNode.js +8 -8
  243. package/src/nodes/utils/ReflectorNode.js +8 -3
  244. package/src/nodes/utils/RemapNode.js +7 -7
  245. package/src/nodes/utils/RotateNode.js +4 -12
  246. package/src/nodes/utils/SetNode.js +2 -2
  247. package/src/nodes/utils/SplitNode.js +2 -2
  248. package/src/nodes/utils/SpriteSheetUVNode.js +5 -5
  249. package/src/nodes/utils/SpriteUtils.js +47 -0
  250. package/src/nodes/utils/StorageArrayElementNode.js +4 -6
  251. package/src/nodes/utils/TimerNode.js +5 -5
  252. package/src/nodes/utils/TriplanarTexturesNode.js +7 -9
  253. package/src/nodes/utils/UVUtils.js +19 -0
  254. package/src/nodes/utils/ViewportUtils.js +14 -0
  255. package/src/objects/BatchedMesh.js +2 -3
  256. package/src/renderers/WebGLRenderer.js +24 -0
  257. package/src/renderers/common/Backend.js +2 -2
  258. package/src/renderers/common/Background.js +3 -1
  259. package/src/renderers/common/BindGroup.js +3 -1
  260. package/src/renderers/common/Bindings.js +13 -15
  261. package/src/renderers/common/ClippingContext.js +14 -5
  262. package/src/renderers/common/CubeRenderTarget.js +9 -3
  263. package/src/renderers/common/PostProcessing.js +4 -1
  264. package/src/renderers/common/QuadMesh.js +2 -0
  265. package/src/renderers/common/RenderContext.js +24 -0
  266. package/src/renderers/common/RenderList.js +1 -1
  267. package/src/renderers/common/RenderObject.js +2 -2
  268. package/src/renderers/common/Renderer.js +75 -49
  269. package/src/renderers/common/SampledTexture.js +12 -3
  270. package/src/renderers/common/StandardRenderer.js +18 -0
  271. package/src/renderers/common/Textures.js +8 -12
  272. package/src/renderers/common/extras/PMREMGenerator.js +12 -13
  273. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  274. package/src/renderers/common/nodes/NodeLibrary.js +118 -0
  275. package/src/renderers/common/nodes/NodeSampledTexture.js +2 -2
  276. package/src/renderers/common/nodes/Nodes.js +36 -9
  277. package/src/renderers/common/nodes/StandardNodeLibrary.js +105 -0
  278. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
  279. package/src/renderers/webgl/WebGLProgram.js +1 -1
  280. package/src/renderers/webgl/WebGLProperties.js +7 -0
  281. package/src/renderers/webgl/WebGLTextures.js +61 -4
  282. package/src/renderers/webgl-fallback/WebGLBackend.js +88 -68
  283. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +57 -9
  284. package/src/renderers/webgl-fallback/utils/WebGLState.js +21 -0
  285. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +28 -21
  286. package/src/renderers/webgpu/WebGPUBackend.js +86 -68
  287. package/src/renderers/webgpu/WebGPURenderer.js +8 -8
  288. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +99 -63
  289. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +45 -21
  290. package/src/renderers/webgpu/utils/WebGPUConstants.js +2 -1
  291. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +6 -15
  292. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
  293. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +36 -21
  294. package/src/renderers/webgpu/utils/WebGPUUtils.js +18 -1
  295. package/src/renderers/webxr/WebXRManager.js +32 -25
  296. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  297. package/src/nodes/accessors/NormalNode.js +0 -14
  298. package/src/nodes/accessors/PositionNode.js +0 -10
  299. package/src/nodes/accessors/ReflectVectorNode.js +0 -10
  300. package/src/nodes/accessors/TangentNode.js +0 -23
  301. package/src/nodes/core/NodeKeywords.js +0 -80
  302. package/src/nodes/display/BlendModeNode.js +0 -128
  303. package/src/nodes/display/ColorAdjustmentNode.js +0 -104
  304. package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  305. package/src/nodes/math/HashNode.js +0 -34
  306. package/src/nodes/procedural/CheckerNode.js +0 -42
  307. package/src/nodes/utils/DiscardNode.js +0 -28
  308. package/src/nodes/utils/PackingNode.js +0 -55
  309. package/src/nodes/utils/RotateUVNode.js +0 -35
  310. /package/src/{nodes/loaders → loaders/nodes}/NodeObjectLoader.js +0 -0
  311. /package/src/nodes/accessors/{UVNode.js → UV.js} +0 -0
@@ -1,15 +1,12 @@
1
- import Node, { addNodeClass } from './Node.js';
2
- import { varying } from './VaryingNode.js';
3
- import { nodeObject } from '../shadernode/ShaderNode.js';
1
+ import Node, { registerNode } from './Node.js';
2
+ import { nodeObject, varying } from '../tsl/TSLBase.js';
4
3
 
5
4
  class AttributeNode extends Node {
6
5
 
7
- constructor( attributeName, nodeType = null, defaultNode = null ) {
6
+ constructor( attributeName, nodeType = null ) {
8
7
 
9
8
  super( nodeType );
10
9
 
11
- this.defaultNode = defaultNode;
12
-
13
10
  this.global = true;
14
11
 
15
12
  this._attributeName = attributeName;
@@ -24,7 +21,7 @@ class AttributeNode extends Node {
24
21
 
25
22
  getNodeType( builder ) {
26
23
 
27
- let nodeType = super.getNodeType( builder );
24
+ let nodeType = this.nodeType;
28
25
 
29
26
  if ( nodeType === null ) {
30
27
 
@@ -91,17 +88,7 @@ class AttributeNode extends Node {
91
88
 
92
89
  console.warn( `AttributeNode: Vertex attribute "${ attributeName }" not found on geometry.` );
93
90
 
94
- const { defaultNode } = this;
95
-
96
- if ( defaultNode !== null ) {
97
-
98
- return defaultNode.build( builder, nodeType );
99
-
100
- } else {
101
-
102
- return builder.generateConst( nodeType );
103
-
104
- }
91
+ return builder.generateConst( nodeType );
105
92
 
106
93
  }
107
94
 
@@ -129,6 +116,6 @@ class AttributeNode extends Node {
129
116
 
130
117
  export default AttributeNode;
131
118
 
132
- export const attribute = ( name, nodeType, defaultNode ) => nodeObject( new AttributeNode( name, nodeType, nodeObject( defaultNode ) ) );
119
+ AttributeNode.type = /*@__PURE__*/ registerNode( 'Attribute', AttributeNode );
133
120
 
134
- addNodeClass( 'AttributeNode', AttributeNode );
121
+ export const attribute = ( name, nodeType ) => nodeObject( new AttributeNode( name, nodeType ) );
@@ -1,5 +1,5 @@
1
- import Node, { addNodeClass } from './Node.js';
2
- import { addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js';
1
+ import Node, { registerNode } from './Node.js';
2
+ import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
3
3
 
4
4
  class BypassNode extends Node {
5
5
 
@@ -38,8 +38,8 @@ class BypassNode extends Node {
38
38
 
39
39
  export default BypassNode;
40
40
 
41
- export const bypass = nodeProxy( BypassNode );
41
+ BypassNode.type = /*@__PURE__*/ registerNode( 'Bypass', BypassNode );
42
42
 
43
- addNodeElement( 'bypass', bypass );
43
+ export const bypass = /*@__PURE__*/ nodeProxy( BypassNode );
44
44
 
45
- addNodeClass( 'BypassNode', BypassNode );
45
+ addMethodChaining( 'bypass', bypass );
@@ -1,5 +1,5 @@
1
- import Node, { addNodeClass } from './Node.js';
2
- import { addNodeElement, nodeObject } from '../shadernode/ShaderNode.js';
1
+ import Node, { registerNode } from './Node.js';
2
+ import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
3
3
 
4
4
  class CacheNode extends Node {
5
5
 
@@ -39,8 +39,8 @@ class CacheNode extends Node {
39
39
 
40
40
  export default CacheNode;
41
41
 
42
- export const cache = ( node, ...params ) => nodeObject( new CacheNode( nodeObject( node ), ...params ) );
42
+ CacheNode.type = /*@__PURE__*/ registerNode( 'Cache', CacheNode );
43
43
 
44
- addNodeElement( 'cache', cache );
44
+ export const cache = ( node, ...params ) => nodeObject( new CacheNode( nodeObject( node ), ...params ) );
45
45
 
46
- addNodeClass( 'CacheNode', CacheNode );
46
+ addMethodChaining( 'cache', cache );
@@ -1,5 +1,5 @@
1
+ import { registerNode } from './Node.js';
1
2
  import InputNode from './InputNode.js';
2
- import { addNodeClass } from './Node.js';
3
3
 
4
4
  class ConstNode extends InputNode {
5
5
 
@@ -29,4 +29,4 @@ class ConstNode extends InputNode {
29
29
 
30
30
  export default ConstNode;
31
31
 
32
- addNodeClass( 'ConstNode', ConstNode );
32
+ ConstNode.type = /*@__PURE__*/ registerNode( 'Const', ConstNode );
@@ -1,16 +1,22 @@
1
- import Node, { addNodeClass } from './Node.js';
2
- import { addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js';
1
+ import Node, { registerNode } from './Node.js';
2
+ import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
3
3
 
4
4
  class ContextNode extends Node {
5
5
 
6
- constructor( node, context = {} ) {
6
+ constructor( node, value = {} ) {
7
7
 
8
8
  super();
9
9
 
10
10
  this.isContextNode = true;
11
11
 
12
12
  this.node = node;
13
- this.context = context;
13
+ this.value = value;
14
+
15
+ }
16
+
17
+ getScope() {
18
+
19
+ return this.node.getScope();
14
20
 
15
21
  }
16
22
 
@@ -30,7 +36,7 @@ class ContextNode extends Node {
30
36
 
31
37
  const previousContext = builder.getContext();
32
38
 
33
- builder.setContext( { ...builder.context, ...this.context } );
39
+ builder.setContext( { ...builder.context, ...this.value } );
34
40
 
35
41
  const node = this.node.build( builder );
36
42
 
@@ -44,7 +50,7 @@ class ContextNode extends Node {
44
50
 
45
51
  const previousContext = builder.getContext();
46
52
 
47
- builder.setContext( { ...builder.context, ...this.context } );
53
+ builder.setContext( { ...builder.context, ...this.value } );
48
54
 
49
55
  const snippet = this.node.build( builder, output );
50
56
 
@@ -58,10 +64,10 @@ class ContextNode extends Node {
58
64
 
59
65
  export default ContextNode;
60
66
 
61
- export const context = nodeProxy( ContextNode );
62
- export const label = ( node, name ) => context( node, { label: name } );
67
+ ContextNode.type = /*@__PURE__*/ registerNode( 'Context', ContextNode );
63
68
 
64
- addNodeElement( 'context', context );
65
- addNodeElement( 'label', label );
69
+ export const context = /*@__PURE__*/ nodeProxy( ContextNode );
70
+ export const label = ( node, name ) => context( node, { label: name } );
66
71
 
67
- addNodeClass( 'ContextNode', ContextNode );
72
+ addMethodChaining( 'context', context );
73
+ addMethodChaining( 'label', label );
@@ -1,6 +1,5 @@
1
- import Node, { addNodeClass } from './Node.js';
2
- import { varying } from './VaryingNode.js';
3
- import { nodeImmutable } from '../shadernode/ShaderNode.js';
1
+ import Node, { registerNode } from './Node.js';
2
+ import { nodeImmutable, varying } from '../tsl/TSLBase.js';
4
3
 
5
4
  class IndexNode extends Node {
6
5
 
@@ -33,6 +32,10 @@ class IndexNode extends Node {
33
32
 
34
33
  propertyName = builder.getDrawIndex();
35
34
 
35
+ } else if ( scope === IndexNode.INVOCATION_LOCAL ) {
36
+
37
+ propertyName = builder.getInvocationLocalIndex();
38
+
36
39
  } else {
37
40
 
38
41
  throw new Error( 'THREE.IndexNode: Unknown scope: ' + scope );
@@ -61,12 +64,14 @@ class IndexNode extends Node {
61
64
 
62
65
  IndexNode.VERTEX = 'vertex';
63
66
  IndexNode.INSTANCE = 'instance';
67
+ IndexNode.INVOCATION_LOCAL = 'invocationLocal';
64
68
  IndexNode.DRAW = 'draw';
65
69
 
66
70
  export default IndexNode;
67
71
 
68
- export const vertexIndex = nodeImmutable( IndexNode, IndexNode.VERTEX );
69
- export const instanceIndex = nodeImmutable( IndexNode, IndexNode.INSTANCE );
70
- export const drawIndex = nodeImmutable( IndexNode, IndexNode.DRAW );
72
+ IndexNode.type = /*@__PURE__*/ registerNode( 'Index', IndexNode );
71
73
 
72
- addNodeClass( 'IndexNode', IndexNode );
74
+ export const vertexIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.VERTEX );
75
+ export const instanceIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.INSTANCE );
76
+ export const invocationLocalIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.INVOCATION_LOCAL );
77
+ export const drawIndex = /*@__PURE__*/ nodeImmutable( IndexNode, IndexNode.DRAW );
@@ -1,4 +1,4 @@
1
- import Node, { addNodeClass } from './Node.js';
1
+ import Node, { registerNode } from './Node.js';
2
2
  import { getValueType, getValueFromType, arrayBufferToBase64 } from './NodeUtils.js';
3
3
 
4
4
  class InputNode extends Node {
@@ -80,4 +80,4 @@ class InputNode extends Node {
80
80
 
81
81
  export default InputNode;
82
82
 
83
- addNodeClass( 'InputNode', InputNode );
83
+ InputNode.type = /*@__PURE__*/ registerNode( 'Input', InputNode );
@@ -1,8 +1,8 @@
1
- import { addNodeClass } from './Node.js';
1
+ import { registerNode } from './Node.js';
2
2
  import OutputStructNode from './OutputStructNode.js';
3
- import { nodeProxy, vec4 } from '../shadernode/ShaderNode.js';
3
+ import { nodeProxy, vec4 } from '../tsl/TSLBase.js';
4
4
 
5
- function getTextureIndex( textures, name ) {
5
+ export function getTextureIndex( textures, name ) {
6
6
 
7
7
  for ( let i = 0; i < textures.length; i ++ ) {
8
8
 
@@ -30,7 +30,13 @@ class MRTNode extends OutputStructNode {
30
30
 
31
31
  }
32
32
 
33
- getNode( name ) {
33
+ has( name ) {
34
+
35
+ return this.outputNodes[ name ] !== undefined;
36
+
37
+ }
38
+
39
+ get( name ) {
34
40
 
35
41
  return this.outputNodes[ name ];
36
42
 
@@ -71,6 +77,6 @@ class MRTNode extends OutputStructNode {
71
77
 
72
78
  export default MRTNode;
73
79
 
74
- export const mrt = nodeProxy( MRTNode );
80
+ MRTNode.type = /*@__PURE__*/ registerNode( 'MRT', MRTNode );
75
81
 
76
- addNodeClass( 'MRTNode', MRTNode );
82
+ export const mrt = /*@__PURE__*/ nodeProxy( MRTNode );
@@ -4,7 +4,7 @@ import { getNodeChildren, getCacheKey } from './NodeUtils.js';
4
4
  import { EventDispatcher } from '../../core/EventDispatcher.js';
5
5
  import { MathUtils } from '../../math/MathUtils.js';
6
6
 
7
- const NodeClasses = new Map();
7
+ const Nodes = new Map();
8
8
 
9
9
  let _nodeId = 0;
10
10
 
@@ -149,6 +149,12 @@ class Node extends EventDispatcher {
149
149
 
150
150
  }
151
151
 
152
+ getScope() {
153
+
154
+ return this;
155
+
156
+ }
157
+
152
158
  getHash( /*builder*/ ) {
153
159
 
154
160
  return this.uuid;
@@ -222,18 +228,9 @@ class Node extends EventDispatcher {
222
228
 
223
229
  }
224
230
 
225
- increaseUsage( builder ) {
226
-
227
- const nodeData = builder.getDataFromNode( this );
228
- nodeData.usageCount = nodeData.usageCount === undefined ? 1 : nodeData.usageCount + 1;
229
-
230
- return nodeData.usageCount;
231
-
232
- }
233
-
234
231
  analyze( builder ) {
235
232
 
236
- const usageCount = this.increaseUsage( builder );
233
+ const usageCount = builder.increaseUsage( this );
237
234
 
238
235
  if ( usageCount === 1 ) {
239
236
 
@@ -322,7 +319,8 @@ class Node extends EventDispatcher {
322
319
 
323
320
  if ( properties.outputNode !== null && builder.stack.nodes.length !== stackNodesBeforeSetup ) {
324
321
 
325
- properties.outputNode = builder.stack;
322
+ // !! no outputNode !!
323
+ //properties.outputNode = builder.stack;
326
324
 
327
325
  }
328
326
 
@@ -543,24 +541,39 @@ class Node extends EventDispatcher {
543
541
 
544
542
  export default Node;
545
543
 
546
- export function addNodeClass( type, nodeClass ) {
544
+ Node.type = /*@__PURE__*/ registerNode( '', Node );
545
+
546
+ export function registerNode( type, nodeClass ) {
547
+
548
+ const suffix = 'Node';
549
+ const nodeType = type + suffix;
547
550
 
548
- if ( typeof nodeClass !== 'function' || ! type ) throw new Error( `Node class ${ type } is not a class` );
549
- if ( NodeClasses.has( type ) ) {
551
+ if ( typeof nodeClass !== 'function' ) throw new Error( `TSL.Node: Node class ${ type } is not a class` );
550
552
 
551
- console.warn( `Redefinition of node class ${ type }` );
553
+ if ( Nodes.has( nodeType ) ) {
554
+
555
+ console.warn( `TSL.Node: Redefinition of node class ${ nodeType }` );
556
+ return;
557
+
558
+ }
559
+
560
+ if ( type.slice( - suffix.length ) === suffix ) {
561
+
562
+ console.warn( `TSL.Node: Node class ${ nodeType } should not have '${ suffix }' suffix.` );
552
563
  return;
553
564
 
554
565
  }
555
566
 
556
- NodeClasses.set( type, nodeClass );
557
- nodeClass.type = type;
567
+ Nodes.set( nodeType, nodeClass );
568
+ nodeClass.type = nodeType;
569
+
570
+ return nodeType;
558
571
 
559
572
  }
560
573
 
561
574
  export function createNodeFromType( type ) {
562
575
 
563
- const Class = NodeClasses.get( type );
576
+ const Class = Nodes.get( type );
564
577
 
565
578
  if ( Class !== undefined ) {
566
579
 
@@ -569,3 +582,10 @@ export function createNodeFromType( type ) {
569
582
  }
570
583
 
571
584
  }
585
+
586
+ export function addNodeClass( type, nodeClass ) {
587
+
588
+ console.warn( 'TSL.Node: Function addNodeClass() is deprecated. Use /*@__PURE__*/ registerNode() instead.' );
589
+ /*@__PURE__*/ registerNode( type.slice( 0, - 4 ), nodeClass );
590
+
591
+ }
@@ -3,11 +3,10 @@ import NodeAttribute from './NodeAttribute.js';
3
3
  import NodeVarying from './NodeVarying.js';
4
4
  import NodeVar from './NodeVar.js';
5
5
  import NodeCode from './NodeCode.js';
6
- import NodeKeywords from './NodeKeywords.js';
7
6
  import NodeCache from './NodeCache.js';
8
7
  import ParameterNode from './ParameterNode.js';
9
8
  import FunctionNode from '../code/FunctionNode.js';
10
- import { createNodeMaterialFromType, default as NodeMaterial } from '../materials/NodeMaterial.js';
9
+ import NodeMaterial from '../../materials/nodes/NodeMaterial.js';
11
10
  import { NodeUpdateType, defaultBuildStages, shaderStages } from './constants.js';
12
11
 
13
12
  import {
@@ -16,7 +15,7 @@ import {
16
15
  } from '../../renderers/common/nodes/NodeUniform.js';
17
16
 
18
17
  import { stack } from './StackNode.js';
19
- import { getCurrentStack, setCurrentStack } from '../shadernode/ShaderNode.js';
18
+ import { getCurrentStack, setCurrentStack } from '../tsl/TSLBase.js';
20
19
 
21
20
  import CubeRenderTarget from '../../renderers/common/CubeRenderTarget.js';
22
21
  import ChainMap from '../../renderers/common/ChainMap.js';
@@ -113,7 +112,6 @@ class NodeBuilder {
113
112
  this.currentFunctionNode = null;
114
113
 
115
114
  this.context = {
116
- keywords: new NodeKeywords(),
117
115
  material: this.material
118
116
  };
119
117
 
@@ -125,9 +123,11 @@ class NodeBuilder {
125
123
  this.shaderStage = null;
126
124
  this.buildStage = null;
127
125
 
126
+ this.useComparisonMethod = false;
127
+
128
128
  }
129
129
 
130
- getBingGroupsCache() {
130
+ getBindGroupsCache() {
131
131
 
132
132
  let bindGroupsCache = rendererCache.get( this.renderer );
133
133
 
@@ -171,7 +171,7 @@ class NodeBuilder {
171
171
 
172
172
  _getBindGroup( groupName, bindings ) {
173
173
 
174
- const bindGroupsCache = this.getBingGroupsCache();
174
+ const bindGroupsCache = this.getBindGroupsCache();
175
175
 
176
176
  //
177
177
 
@@ -197,14 +197,15 @@ class NodeBuilder {
197
197
 
198
198
  if ( bindGroup === undefined ) {
199
199
 
200
- bindGroup = new BindGroup( groupName, bindingsArray );
200
+ bindGroup = new BindGroup( groupName, bindingsArray, this.bindingsIndexes[ groupName ].group, bindingsArray );
201
+
201
202
  bindGroupsCache.set( bindingsArray, bindGroup );
202
203
 
203
204
  }
204
205
 
205
206
  } else {
206
207
 
207
- bindGroup = new BindGroup( groupName, bindingsArray );
208
+ bindGroup = new BindGroup( groupName, bindingsArray, this.bindingsIndexes[ groupName ].group, bindingsArray );
208
209
 
209
210
  }
210
211
 
@@ -399,7 +400,6 @@ class NodeBuilder {
399
400
 
400
401
  const context = { ...this.context };
401
402
 
402
- delete context.keywords;
403
403
  delete context.material;
404
404
 
405
405
  return this.context;
@@ -469,6 +469,15 @@ class NodeBuilder {
469
469
 
470
470
  }
471
471
 
472
+ increaseUsage( node ) {
473
+
474
+ const nodeData = this.getDataFromNode( node );
475
+ nodeData.usageCount = nodeData.usageCount === undefined ? 1 : nodeData.usageCount + 1;
476
+
477
+ return nodeData.usageCount;
478
+
479
+ }
480
+
472
481
  generateTexture( /* texture, textureProperty, uvSnippet */ ) {
473
482
 
474
483
  console.warn( 'Abstract function.' );
@@ -596,7 +605,7 @@ class NodeBuilder {
596
605
 
597
606
  }
598
607
 
599
- needsColorSpaceToLinear( /*texture*/ ) {
608
+ needsToWorkingColorSpace( /*texture*/ ) {
600
609
 
601
610
  return false;
602
611
 
@@ -995,27 +1004,24 @@ class NodeBuilder {
995
1004
 
996
1005
  const layout = shaderNode.layout;
997
1006
 
998
- let inputs;
999
-
1000
- if ( shaderNode.isArrayInput ) {
1001
-
1002
- inputs = [];
1007
+ const inputs = {
1008
+ [ Symbol.iterator ]() {
1003
1009
 
1004
- for ( const input of layout.inputs ) {
1005
-
1006
- inputs.push( new ParameterNode( input.type, input.name ) );
1010
+ let index = 0;
1011
+ const values = Object.values( this );
1012
+ return {
1013
+ next: () => ( {
1014
+ value: values[ index ],
1015
+ done: index ++ >= values.length
1016
+ } )
1017
+ };
1007
1018
 
1008
1019
  }
1020
+ };
1009
1021
 
1010
- } else {
1011
-
1012
- inputs = {};
1013
-
1014
- for ( const input of layout.inputs ) {
1015
-
1016
- inputs[ input.name ] = new ParameterNode( input.type, input.name );
1022
+ for ( const input of layout.inputs ) {
1017
1023
 
1018
- }
1024
+ inputs[ input.name ] = new ParameterNode( input.type, input.name );
1019
1025
 
1020
1026
  }
1021
1027
 
@@ -1224,12 +1230,21 @@ class NodeBuilder {
1224
1230
 
1225
1231
  build() {
1226
1232
 
1227
- const { object, material } = this;
1228
-
1233
+ const { object, material, renderer } = this;
1229
1234
 
1230
1235
  if ( material !== null ) {
1231
1236
 
1232
- NodeMaterial.fromMaterial( material ).build( this );
1237
+ let nodeMaterial = renderer.nodes.library.fromMaterial( material );
1238
+
1239
+ if ( nodeMaterial === null ) {
1240
+
1241
+ console.error( `NodeMaterial: Material "${ material.type }" is not compatible.` );
1242
+
1243
+ nodeMaterial = new NodeMaterial();
1244
+
1245
+ }
1246
+
1247
+ nodeMaterial.build( this );
1233
1248
 
1234
1249
  } else {
1235
1250
 
@@ -1301,11 +1316,9 @@ class NodeBuilder {
1301
1316
 
1302
1317
  }
1303
1318
 
1304
- createNodeMaterial( type = 'NodeMaterial' ) {
1305
-
1306
- // TODO: Move Materials.js to outside of the Nodes.js in order to remove this function and improve tree-shaking support
1319
+ createNodeMaterial( type = 'NodeMaterial' ) { // @deprecated, r168
1307
1320
 
1308
- return createNodeMaterialFromType( type );
1321
+ throw new Error( `THREE.NodeBuilder: createNodeMaterial() was deprecated. Use new ${ type }() instead.` );
1309
1322
 
1310
1323
  }
1311
1324
 
@@ -12,6 +12,7 @@ export function getCacheKey( object, force = false ) {
12
12
  if ( object.isNode === true ) {
13
13
 
14
14
  cacheKey += object.id;
15
+ object = object.getSelf();
15
16
 
16
17
  }
17
18
 
@@ -1,6 +1,6 @@
1
- import Node, { addNodeClass } from './Node.js';
1
+ import Node, { registerNode } from './Node.js';
2
2
  import StructTypeNode from './StructTypeNode.js';
3
- import { nodeProxy } from '../shadernode/ShaderNode.js';
3
+ import { nodeProxy } from '../tsl/TSLBase.js';
4
4
 
5
5
  class OutputStructNode extends Node {
6
6
 
@@ -54,6 +54,6 @@ class OutputStructNode extends Node {
54
54
 
55
55
  export default OutputStructNode;
56
56
 
57
- export const outputStruct = nodeProxy( OutputStructNode );
57
+ OutputStructNode.type = /*@__PURE__*/ registerNode( 'OutputStruct', OutputStructNode );
58
58
 
59
- addNodeClass( 'OutputStructNode', OutputStructNode );
59
+ export const outputStruct = /*@__PURE__*/ nodeProxy( OutputStructNode );
@@ -1,5 +1,5 @@
1
- import { addNodeClass } from './Node.js';
2
- import { nodeObject } from '../shadernode/ShaderNode.js';
1
+ import { registerNode } from './Node.js';
2
+ import { nodeObject } from '../tsl/TSLBase.js';
3
3
  import PropertyNode from './PropertyNode.js';
4
4
 
5
5
  class ParameterNode extends PropertyNode {
@@ -28,6 +28,6 @@ class ParameterNode extends PropertyNode {
28
28
 
29
29
  export default ParameterNode;
30
30
 
31
- export const parameter = ( type, name ) => nodeObject( new ParameterNode( type, name ) );
31
+ ParameterNode.type = /*@__PURE__*/ registerNode( 'Parameter', ParameterNode );
32
32
 
33
- addNodeClass( 'ParameterNode', ParameterNode );
33
+ export const parameter = ( type, name ) => nodeObject( new ParameterNode( type, name ) );
@@ -1,5 +1,5 @@
1
- import Node, { addNodeClass } from './Node.js';
2
- import { nodeImmutable, nodeObject } from '../shadernode/ShaderNode.js';
1
+ import Node, { registerNode } from './Node.js';
2
+ import { nodeImmutable, nodeObject } from '../tsl/TSLCore.js';
3
3
 
4
4
  class PropertyNode extends Node {
5
5
 
@@ -49,36 +49,36 @@ class PropertyNode extends Node {
49
49
 
50
50
  export default PropertyNode;
51
51
 
52
+ PropertyNode.type = /*@__PURE__*/ registerNode( 'Property', PropertyNode );
53
+
52
54
  export const property = ( type, name ) => nodeObject( new PropertyNode( type, name ) );
53
55
  export const varyingProperty = ( type, name ) => nodeObject( new PropertyNode( type, name, true ) );
54
56
 
55
- export const diffuseColor = nodeImmutable( PropertyNode, 'vec4', 'DiffuseColor' );
56
- export const emissive = nodeImmutable( PropertyNode, 'vec3', 'EmissiveColor' );
57
- export const roughness = nodeImmutable( PropertyNode, 'float', 'Roughness' );
58
- export const metalness = nodeImmutable( PropertyNode, 'float', 'Metalness' );
59
- export const clearcoat = nodeImmutable( PropertyNode, 'float', 'Clearcoat' );
60
- export const clearcoatRoughness = nodeImmutable( PropertyNode, 'float', 'ClearcoatRoughness' );
61
- export const sheen = nodeImmutable( PropertyNode, 'vec3', 'Sheen' );
62
- export const sheenRoughness = nodeImmutable( PropertyNode, 'float', 'SheenRoughness' );
63
- export const iridescence = nodeImmutable( PropertyNode, 'float', 'Iridescence' );
64
- export const iridescenceIOR = nodeImmutable( PropertyNode, 'float', 'IridescenceIOR' );
65
- export const iridescenceThickness = nodeImmutable( PropertyNode, 'float', 'IridescenceThickness' );
66
- export const alphaT = nodeImmutable( PropertyNode, 'float', 'AlphaT' );
67
- export const anisotropy = nodeImmutable( PropertyNode, 'float', 'Anisotropy' );
68
- export const anisotropyT = nodeImmutable( PropertyNode, 'vec3', 'AnisotropyT' );
69
- export const anisotropyB = nodeImmutable( PropertyNode, 'vec3', 'AnisotropyB' );
70
- export const specularColor = nodeImmutable( PropertyNode, 'color', 'SpecularColor' );
71
- export const specularF90 = nodeImmutable( PropertyNode, 'float', 'SpecularF90' );
72
- export const shininess = nodeImmutable( PropertyNode, 'float', 'Shininess' );
73
- export const output = nodeImmutable( PropertyNode, 'vec4', 'Output' );
74
- export const dashSize = nodeImmutable( PropertyNode, 'float', 'dashSize' );
75
- export const gapSize = nodeImmutable( PropertyNode, 'float', 'gapSize' );
76
- export const pointWidth = nodeImmutable( PropertyNode, 'float', 'pointWidth' );
77
- export const ior = nodeImmutable( PropertyNode, 'float', 'IOR' );
78
- export const transmission = nodeImmutable( PropertyNode, 'float', 'Transmission' );
79
- export const thickness = nodeImmutable( PropertyNode, 'float', 'Thickness' );
80
- export const attenuationDistance = nodeImmutable( PropertyNode, 'float', 'AttenuationDistance' );
81
- export const attenuationColor = nodeImmutable( PropertyNode, 'color', 'AttenuationColor' );
82
- export const dispersion = nodeImmutable( PropertyNode, 'float', 'Dispersion' );
83
-
84
- addNodeClass( 'PropertyNode', PropertyNode );
57
+ export const diffuseColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec4', 'DiffuseColor' );
58
+ export const emissive = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'EmissiveColor' );
59
+ export const roughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Roughness' );
60
+ export const metalness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Metalness' );
61
+ export const clearcoat = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Clearcoat' );
62
+ export const clearcoatRoughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'ClearcoatRoughness' );
63
+ export const sheen = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'Sheen' );
64
+ export const sheenRoughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'SheenRoughness' );
65
+ export const iridescence = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Iridescence' );
66
+ export const iridescenceIOR = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IridescenceIOR' );
67
+ export const iridescenceThickness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IridescenceThickness' );
68
+ export const alphaT = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'AlphaT' );
69
+ export const anisotropy = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Anisotropy' );
70
+ export const anisotropyT = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'AnisotropyT' );
71
+ export const anisotropyB = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'AnisotropyB' );
72
+ export const specularColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'color', 'SpecularColor' );
73
+ export const specularF90 = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'SpecularF90' );
74
+ export const shininess = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Shininess' );
75
+ export const output = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec4', 'Output' );
76
+ export const dashSize = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'dashSize' );
77
+ export const gapSize = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'gapSize' );
78
+ export const pointWidth = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'pointWidth' );
79
+ export const ior = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IOR' );
80
+ export const transmission = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Transmission' );
81
+ export const thickness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Thickness' );
82
+ export const attenuationDistance = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'AttenuationDistance' );
83
+ export const attenuationColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'color', 'AttenuationColor' );
84
+ export const dispersion = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Dispersion' );