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
@@ -1,9 +1,14 @@
1
- import { registerNode } from '../core/Node.js';
2
1
  import UniformNode from '../core/UniformNode.js';
3
2
  import { nodeObject } from '../tsl/TSLBase.js';
4
3
 
5
4
  class BufferNode extends UniformNode {
6
5
 
6
+ static get type() {
7
+
8
+ return 'BufferNode';
9
+
10
+ }
11
+
7
12
  constructor( value, bufferType, bufferCount = 0 ) {
8
13
 
9
14
  super( value, bufferType );
@@ -31,6 +36,4 @@ class BufferNode extends UniformNode {
31
36
 
32
37
  export default BufferNode;
33
38
 
34
- BufferNode.type = /*@__PURE__*/ registerNode( 'Buffer', BufferNode );
35
-
36
39
  export const buffer = ( value, type, count ) => nodeObject( new BufferNode( value, type, count ) );
@@ -1,19 +1,13 @@
1
1
  import { uniform } from '../core/UniformNode.js';
2
- import { sharedUniformGroup } from '../core/UniformGroupNode.js';
2
+ import { renderGroup } from '../core/UniformGroupNode.js';
3
3
  import { Vector3 } from '../../math/Vector3.js';
4
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 ) );
5
+ export const cameraNear = /*@__PURE__*/ uniform( 'float' ).label( 'cameraNear' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.near );
6
+ export const cameraFar = /*@__PURE__*/ uniform( 'float' ).label( 'cameraFar' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.far );
7
+ export const cameraLogDepth = /*@__PURE__*/ uniform( 'float' ).label( 'cameraLogDepth' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );
8
+ export const cameraProjectionMatrix = /*@__PURE__*/ uniform( 'mat4' ).label( 'cameraProjectionMatrix' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.projectionMatrix );
9
+ export const cameraProjectionMatrixInverse = /*@__PURE__*/ uniform( 'mat4' ).label( 'cameraProjectionMatrixInverse' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.projectionMatrixInverse );
10
+ export const cameraViewMatrix = /*@__PURE__*/ uniform( 'mat4' ).label( 'cameraViewMatrix' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.matrixWorldInverse );
11
+ export const cameraWorldMatrix = /*@__PURE__*/ uniform( 'mat4' ).label( 'cameraWorldMatrix' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.matrixWorld );
12
+ export const cameraNormalMatrix = /*@__PURE__*/ uniform( 'mat3' ).label( 'cameraNormalMatrix' ).setGroup( renderGroup ).onRenderUpdate( ( { camera } ) => camera.normalMatrix );
13
+ export const cameraPosition = /*@__PURE__*/ uniform( new Vector3() ).label( 'cameraPosition' ).setGroup( renderGroup ).onRenderUpdate( ( { camera }, self ) => self.value.setFromMatrixPosition( camera.matrixWorld ) );
@@ -1,5 +1,5 @@
1
1
 
2
- import Node, { registerNode } from '../core/Node.js';
2
+ import Node from '../core/Node.js';
3
3
  import { nodeObject } from '../tsl/TSLBase.js';
4
4
  import { positionView } from './Position.js';
5
5
  import { diffuseColor, property } from '../core/PropertyNode.js';
@@ -10,6 +10,12 @@ import { uniformArray } from './UniformArrayNode.js';
10
10
 
11
11
  class ClippingNode extends Node {
12
12
 
13
+ static get type() {
14
+
15
+ return 'ClippingNode';
16
+
17
+ }
18
+
13
19
  constructor( scope = ClippingNode.DEFAULT ) {
14
20
 
15
21
  super();
@@ -140,8 +146,6 @@ ClippingNode.DEFAULT = 'default';
140
146
 
141
147
  export default ClippingNode;
142
148
 
143
- ClippingNode.type = /*@__PURE__*/ registerNode( 'Clipping', ClippingNode );
144
-
145
149
  export const clipping = () => nodeObject( new ClippingNode() );
146
150
 
147
151
  export const clippingAlpha = () => nodeObject( new ClippingNode( ClippingNode.ALPHA_TO_COVERAGE ) );
@@ -1,4 +1,3 @@
1
- import { registerNode } from '../core/Node.js';
2
1
  import TextureNode from './TextureNode.js';
3
2
  import { reflectVector, refractVector } from './ReflectVector.js';
4
3
  import { nodeProxy, vec3 } from '../tsl/TSLBase.js';
@@ -7,6 +6,12 @@ import { CubeReflectionMapping, CubeRefractionMapping, WebGPUCoordinateSystem }
7
6
 
8
7
  class CubeTextureNode extends TextureNode {
9
8
 
9
+ static get type() {
10
+
11
+ return 'CubeTextureNode';
12
+
13
+ }
14
+
10
15
  constructor( value, uvNode = null, levelNode = null, biasNode = null ) {
11
16
 
12
17
  super( value, uvNode, levelNode, biasNode );
@@ -71,6 +76,4 @@ class CubeTextureNode extends TextureNode {
71
76
 
72
77
  export default CubeTextureNode;
73
78
 
74
- CubeTextureNode.type = /*@__PURE__*/ registerNode( 'CubeTexture', CubeTextureNode );
75
-
76
79
  export const cubeTexture = /*@__PURE__*/ nodeProxy( CubeTextureNode );
@@ -1,9 +1,9 @@
1
- import Node, { registerNode } from '../core/Node.js';
1
+ import Node from '../core/Node.js';
2
2
  import { varyingProperty } from '../core/PropertyNode.js';
3
3
  import { instancedBufferAttribute, instancedDynamicBufferAttribute } from './BufferAttributeNode.js';
4
- import { normalLocal } from './Normal.js';
4
+ import { normalLocal, transformNormal } from './Normal.js';
5
5
  import { positionLocal } from './Position.js';
6
- import { nodeProxy, vec3, mat3, mat4 } from '../tsl/TSLBase.js';
6
+ import { nodeProxy, vec3, mat4 } from '../tsl/TSLBase.js';
7
7
  import { NodeUpdateType } from '../core/constants.js';
8
8
  import { buffer } from '../accessors/BufferNode.js';
9
9
  import { instanceIndex } from '../core/IndexNode.js';
@@ -14,6 +14,12 @@ import { DynamicDrawUsage } from '../../constants.js';
14
14
 
15
15
  class InstanceNode extends Node {
16
16
 
17
+ static get type() {
18
+
19
+ return 'InstanceNode';
20
+
21
+ }
22
+
17
23
  constructor( instanceMesh ) {
18
24
 
19
25
  super( 'void' );
@@ -46,7 +52,7 @@ class InstanceNode extends Node {
46
52
 
47
53
  if ( instanceMesh.count <= 1000 ) {
48
54
 
49
- instanceMatrixNode = buffer( instanceAttribute.array, 'mat4', instanceMesh.count ).element( instanceIndex );
55
+ instanceMatrixNode = buffer( instanceAttribute.array, 'mat4', Math.max( instanceMesh.count, 1 ) ).element( instanceIndex );
50
56
 
51
57
  } else {
52
58
 
@@ -97,11 +103,7 @@ class InstanceNode extends Node {
97
103
 
98
104
  if ( builder.hasGeometryAttribute( 'normal' ) ) {
99
105
 
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;
106
+ const instanceNormal = transformNormal( normalLocal, instanceMatrixNode );
105
107
 
106
108
  // ASSIGNS
107
109
 
@@ -139,6 +141,4 @@ class InstanceNode extends Node {
139
141
 
140
142
  export default InstanceNode;
141
143
 
142
- InstanceNode.type = /*@__PURE__*/ registerNode( 'Instance', InstanceNode );
143
-
144
144
  export const instance = /*@__PURE__*/ nodeProxy( InstanceNode );
@@ -1,9 +1,14 @@
1
- import { registerNode } from '../core/Node.js';
2
1
  import MaterialNode from './MaterialNode.js';
3
2
  import { nodeImmutable } from '../tsl/TSLBase.js';
4
3
 
5
4
  class InstancedPointsMaterialNode extends MaterialNode {
6
5
 
6
+ static get type() {
7
+
8
+ return 'InstancedPointsMaterialNode';
9
+
10
+ }
11
+
7
12
  setup( /*builder*/ ) {
8
13
 
9
14
  return this.getFloat( this.scope );
@@ -16,6 +21,4 @@ InstancedPointsMaterialNode.POINT_WIDTH = 'pointWidth';
16
21
 
17
22
  export default InstancedPointsMaterialNode;
18
23
 
19
- InstancedPointsMaterialNode.type = /*@__PURE__*/ registerNode( 'InstancedPointsMaterial', InstancedPointsMaterialNode );
20
-
21
24
  export const materialPointWidth = /*@__PURE__*/ nodeImmutable( InstancedPointsMaterialNode, InstancedPointsMaterialNode.POINT_WIDTH );
@@ -0,0 +1,51 @@
1
+ import { uniform } from '../core/UniformNode.js';
2
+ import { renderGroup } from '../core/UniformGroupNode.js';
3
+ import { Vector3 } from '../../math/Vector3.js';
4
+ import { cameraViewMatrix } from './Camera.js';
5
+
6
+ let uniformsLib;
7
+
8
+ function getLightData( light ) {
9
+
10
+ uniformsLib = uniformsLib || new WeakMap();
11
+
12
+ let uniforms = uniformsLib.get( light );
13
+
14
+ if ( uniforms === undefined ) uniformsLib.set( light, uniforms = {} );
15
+
16
+ return uniforms;
17
+
18
+ }
19
+
20
+ export function lightPosition( light ) {
21
+
22
+ const data = getLightData( light );
23
+
24
+ return data.position || ( data.position = uniform( new Vector3() ).setGroup( renderGroup ).onRenderUpdate( ( _, self ) => self.value.setFromMatrixPosition( light.matrixWorld ) ) );
25
+
26
+ }
27
+
28
+ export function lightTargetPosition( light ) {
29
+
30
+ const data = getLightData( light );
31
+
32
+ return data.targetPosition || ( data.targetPosition = uniform( new Vector3() ).setGroup( renderGroup ).onRenderUpdate( ( _, self ) => self.value.setFromMatrixPosition( light.target.matrixWorld ) ) );
33
+
34
+ }
35
+
36
+ export function lightViewPosition( light ) {
37
+
38
+ const data = getLightData( light );
39
+
40
+ return data.viewPosition || ( data.viewPosition = uniform( new Vector3() ).setGroup( renderGroup ).onRenderUpdate( ( { camera }, self ) => {
41
+
42
+ self.value = self.value || new Vector3();
43
+ self.value.setFromMatrixPosition( light.matrixWorld );
44
+
45
+ self.value.applyMatrix4( camera.matrixWorldInverse );
46
+
47
+ } ) );
48
+
49
+ }
50
+
51
+ export const lightTargetDirection = ( light ) => cameraViewMatrix.transformDirection( lightPosition( light ).sub( lightTargetPosition( light ) ) );
@@ -1,4 +1,4 @@
1
- import Node, { registerNode } from '../core/Node.js';
1
+ import Node from '../core/Node.js';
2
2
  import { reference } from './ReferenceNode.js';
3
3
  import { materialReference } from './MaterialReferenceNode.js';
4
4
  import { normalView } from './Normal.js';
@@ -13,6 +13,12 @@ const _propertyCache = new Map();
13
13
 
14
14
  class MaterialNode extends Node {
15
15
 
16
+ static get type() {
17
+
18
+ return 'MaterialNode';
19
+
20
+ }
21
+
16
22
  constructor( scope ) {
17
23
 
18
24
  super();
@@ -178,6 +184,7 @@ class MaterialNode extends Node {
178
184
  if ( material.normalMap ) {
179
185
 
180
186
  node = normalMap( this.getTexture( 'normal' ), this.getCache( 'normalScale', 'vec2' ) );
187
+ node.normalMapType = material.normalMapType;
181
188
 
182
189
  } else if ( material.bumpMap ) {
183
190
 
@@ -384,8 +391,6 @@ MaterialNode.AO_MAP = 'ao';
384
391
 
385
392
  export default MaterialNode;
386
393
 
387
- MaterialNode.type = /*@__PURE__*/ registerNode( 'Material', MaterialNode );
388
-
389
394
  export const materialAlphaTest = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ALPHA_TEST );
390
395
  export const materialColor = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.COLOR );
391
396
  export const materialShininess = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SHININESS );
@@ -425,7 +430,6 @@ export const materialPointWidth = /*@__PURE__*/ nodeImmutable( MaterialNode, Mat
425
430
  export const materialDispersion = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.DISPERSION );
426
431
  export const materialLightMap = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LIGHT_MAP );
427
432
  export const materialAOMap = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.AO_MAP );
428
- export const materialRefractionRatio = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.REFRACTION_RATIO );
429
433
  export const materialAnisotropyVector = /*@__PURE__*/ uniform( new Vector2() ).onReference( function ( frame ) {
430
434
 
431
435
  return frame.material;
@@ -1,4 +1,3 @@
1
- import { registerNode } from '../core/Node.js';
2
1
  import ReferenceNode from './ReferenceNode.js';
3
2
  //import { renderGroup } from '../core/UniformGroupNode.js';
4
3
  //import { NodeUpdateType } from '../core/constants.js';
@@ -6,6 +5,12 @@ import { nodeObject } from '../tsl/TSLBase.js';
6
5
 
7
6
  class MaterialReferenceNode extends ReferenceNode {
8
7
 
8
+ static get type() {
9
+
10
+ return 'MaterialReferenceNode';
11
+
12
+ }
13
+
9
14
  constructor( property, inputType, material = null ) {
10
15
 
11
16
  super( property, inputType, material );
@@ -38,6 +43,4 @@ class MaterialReferenceNode extends ReferenceNode {
38
43
 
39
44
  export default MaterialReferenceNode;
40
45
 
41
- MaterialReferenceNode.type = /*@__PURE__*/ registerNode( 'MaterialReference', MaterialReferenceNode );
42
-
43
46
  export const materialReference = ( name, type, material ) => nodeObject( new MaterialReferenceNode( name, type, material ) );
@@ -1,13 +1,20 @@
1
- import { registerNode } from '../core/Node.js';
2
1
  import Object3DNode from './Object3DNode.js';
3
- import { nodeImmutable } from '../tsl/TSLBase.js';
2
+ import { Fn, nodeImmutable } from '../tsl/TSLBase.js';
4
3
  import { uniform } from '../core/UniformNode.js';
5
4
 
6
5
  import { Matrix4 } from '../../math/Matrix4.js';
6
+ import { cameraViewMatrix } from './Camera.js';
7
+ import { Matrix3 } from '../../math/Matrix3.js';
7
8
 
8
9
  class ModelNode extends Object3DNode {
9
10
 
10
- constructor( scope = ModelNode.VIEW_MATRIX ) {
11
+ static get type() {
12
+
13
+ return 'ModelNode';
14
+
15
+ }
16
+
17
+ constructor( scope ) {
11
18
 
12
19
  super( scope );
13
20
 
@@ -25,13 +32,41 @@ class ModelNode extends Object3DNode {
25
32
 
26
33
  export default ModelNode;
27
34
 
28
- ModelNode.type = /*@__PURE__*/ registerNode( 'Model', ModelNode );
29
-
30
35
  export const modelDirection = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.DIRECTION );
31
- export const modelViewMatrix = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.VIEW_MATRIX ).label( 'modelViewMatrix' ).toVar( 'ModelViewMatrix' );
32
- export const modelNormalMatrix = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.NORMAL_MATRIX );
33
36
  export const modelWorldMatrix = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.WORLD_MATRIX );
34
37
  export const modelPosition = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.POSITION );
35
38
  export const modelScale = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.SCALE );
36
39
  export const modelViewPosition = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.VIEW_POSITION );
40
+ export const modelNormalMatrix = /*@__PURE__*/ uniform( new Matrix3() ).onObjectUpdate( ( { object }, self ) => self.value.getNormalMatrix( object.matrixWorld ) );
37
41
  export const modelWorldMatrixInverse = /*@__PURE__*/ uniform( new Matrix4() ).onObjectUpdate( ( { object }, self ) => self.value.copy( object.matrixWorld ).invert() );
42
+ export const modelViewMatrix = /*@__PURE__*/ cameraViewMatrix.mul( modelWorldMatrix ).toVar( 'modelViewMatrix' );
43
+
44
+ export const highPrecisionModelViewMatrix = /*@__PURE__*/ ( Fn( ( builder ) => {
45
+
46
+ builder.context.isHighPrecisionModelViewMatrix = true;
47
+
48
+ return uniform( 'mat4' ).onObjectUpdate( ( { object, camera } ) => {
49
+
50
+ return object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
51
+
52
+ } );
53
+
54
+ } ).once() )().toVar( 'highPrecisionModelViewMatrix' );
55
+
56
+ export const highPrecisionModelNormalViewMatrix = /*@__PURE__*/ ( Fn( ( builder ) => {
57
+
58
+ const isHighPrecisionModelViewMatrix = builder.context.isHighPrecisionModelViewMatrix;
59
+
60
+ return uniform( 'mat3' ).onObjectUpdate( ( { object, camera } ) => {
61
+
62
+ if ( isHighPrecisionModelViewMatrix !== true ) {
63
+
64
+ object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
65
+
66
+ }
67
+
68
+ return object.normalMatrix.getNormalMatrix( object.modelViewMatrix );
69
+
70
+ } );
71
+
72
+ } ).once() )().toVar( 'highPrecisionModelNormalMatrix' );
@@ -1,12 +1,17 @@
1
- import { registerNode } from '../core/Node.js';
2
1
  import TempNode from '../core/TempNode.js';
3
2
  import { cameraProjectionMatrix } from './Camera.js';
4
- import { modelViewMatrix } from './ModelNode.js';
5
3
  import { positionLocal } from './Position.js';
6
4
  import { nodeProxy, varying } from '../tsl/TSLBase.js';
5
+ import { modelViewMatrix } from './ModelNode.js';
7
6
 
8
7
  class ModelViewProjectionNode extends TempNode {
9
8
 
9
+ static get type() {
10
+
11
+ return 'ModelViewProjectionNode';
12
+
13
+ }
14
+
10
15
  constructor( positionNode = null ) {
11
16
 
12
17
  super( 'vec4' );
@@ -24,8 +29,9 @@ class ModelViewProjectionNode extends TempNode {
24
29
  }
25
30
 
26
31
  const position = this.positionNode || positionLocal;
32
+ const viewMatrix = builder.renderer.nodes.modelViewMatrix || modelViewMatrix;
27
33
 
28
- return cameraProjectionMatrix.mul( modelViewMatrix ).mul( position );
34
+ return cameraProjectionMatrix.mul( viewMatrix ).mul( position );
29
35
 
30
36
  }
31
37
 
@@ -33,6 +39,4 @@ class ModelViewProjectionNode extends TempNode {
33
39
 
34
40
  export default ModelViewProjectionNode;
35
41
 
36
- ModelViewProjectionNode.type = /*@__PURE__*/ registerNode( 'ModelViewProjection', ModelViewProjectionNode );
37
-
38
42
  export const modelViewProjection = /*@__PURE__*/ nodeProxy( ModelViewProjectionNode );
@@ -1,4 +1,4 @@
1
- import Node, { registerNode } from '../core/Node.js';
1
+ import Node from '../core/Node.js';
2
2
  import { NodeUpdateType } from '../core/constants.js';
3
3
  import { float, nodeProxy, Fn } from '../tsl/TSLBase.js';
4
4
  import { uniform } from '../core/UniformNode.js';
@@ -160,6 +160,12 @@ function getEntry( geometry ) {
160
160
 
161
161
  class MorphNode extends Node {
162
162
 
163
+ static get type() {
164
+
165
+ return 'MorphNode';
166
+
167
+ }
168
+
163
169
  constructor( mesh ) {
164
170
 
165
171
  super( 'void' );
@@ -254,6 +260,4 @@ class MorphNode extends Node {
254
260
 
255
261
  export default MorphNode;
256
262
 
257
- MorphNode.type = /*@__PURE__*/ registerNode( 'Morph', MorphNode );
258
-
259
263
  export const morphReference = /*@__PURE__*/ nodeProxy( MorphNode );
@@ -1,7 +1,7 @@
1
1
  import { attribute } from '../core/AttributeNode.js';
2
2
  import { cameraViewMatrix } from './Camera.js';
3
- import { modelNormalMatrix } from './ModelNode.js';
4
- import { vec3 } from '../tsl/TSLBase.js';
3
+ import { modelNormalMatrix, modelWorldMatrix } from './ModelNode.js';
4
+ import { mat3, vec3 } from '../tsl/TSLBase.js';
5
5
  import { positionView } from './Position.js';
6
6
  import { Fn, varying } from '../tsl/TSLBase.js';
7
7
  import { faceDirection } from '../display/FrontFacingNode.js';
@@ -24,8 +24,6 @@ export const normalLocal = /*@__PURE__*/ ( Fn( ( builder ) => {
24
24
 
25
25
  export const normalFlat = /*@__PURE__*/ positionView.dFdx().cross( positionView.dFdy() ).normalize().toVar( 'normalFlat' );
26
26
 
27
- let normalViewVarying = null;
28
-
29
27
  export const normalView = /*@__PURE__*/ ( Fn( ( builder ) => {
30
28
 
31
29
  let node;
@@ -36,7 +34,7 @@ export const normalView = /*@__PURE__*/ ( Fn( ( builder ) => {
36
34
 
37
35
  } else {
38
36
 
39
- node = normalViewVarying || ( normalViewVarying = varying( modelNormalMatrix.mul( normalLocal ), 'v_normalView' ).normalize() );
37
+ node = varying( transformNormalToView( normalLocal ), 'v_normalView' ).normalize();
40
38
 
41
39
  }
42
40
 
@@ -53,10 +51,38 @@ export const transformedNormalView = /*@__PURE__*/ ( Fn( ( builder ) => {
53
51
  }, 'vec3' ).once() )().mul( faceDirection ).toVar( 'transformedNormalView' );
54
52
 
55
53
 
56
- export const transformedNormalWorld = /*@__PURE__*/ transformedNormalView.transformDirection( cameraViewMatrix ).normalize().toVar( 'transformedNormalWorld' );
54
+ export const transformedNormalWorld = /*@__PURE__*/ transformedNormalView.transformDirection( cameraViewMatrix ).toVar( 'transformedNormalWorld' );
57
55
 
58
56
  export const transformedClearcoatNormalView = /*@__PURE__*/ ( Fn( ( builder ) => {
59
57
 
60
58
  return builder.context.setupClearcoatNormal();
61
59
 
62
60
  }, 'vec3' ).once() )().mul( faceDirection ).toVar( 'transformedClearcoatNormalView' );
61
+
62
+ export const transformNormal = /*@__PURE__*/ Fn( ( [ normal, matrix = modelWorldMatrix ] ) => {
63
+
64
+ const m = mat3( matrix );
65
+
66
+ const transformedNormal = normal.div( vec3( m[ 0 ].dot( m[ 0 ] ), m[ 1 ].dot( m[ 1 ] ), m[ 2 ].dot( m[ 2 ] ) ) );
67
+
68
+ return m.mul( transformedNormal ).xyz;
69
+
70
+ } );
71
+
72
+ export const transformNormalToView = /*@__PURE__*/ Fn( ( [ normal ], builder ) => {
73
+
74
+ const modelNormalViewMatrix = builder.renderer.nodes.modelNormalViewMatrix;
75
+
76
+ if ( modelNormalViewMatrix !== null ) {
77
+
78
+ return modelNormalViewMatrix.transformDirection( normal );
79
+
80
+ }
81
+
82
+ //
83
+
84
+ const transformedNormal = modelNormalMatrix.mul( normal );
85
+
86
+ return cameraViewMatrix.transformDirection( transformedNormal );
87
+
88
+ } );
@@ -1,4 +1,4 @@
1
- import Node, { registerNode } from '../core/Node.js';
1
+ import Node from '../core/Node.js';
2
2
  import { NodeUpdateType } from '../core/constants.js';
3
3
  import UniformNode from '../core/UniformNode.js';
4
4
  import { nodeProxy } from '../tsl/TSLBase.js';
@@ -7,7 +7,13 @@ import { Vector3 } from '../../math/Vector3.js';
7
7
 
8
8
  class Object3DNode extends Node {
9
9
 
10
- constructor( scope = Object3DNode.VIEW_MATRIX, object3d = null ) {
10
+ static get type() {
11
+
12
+ return 'Object3DNode';
13
+
14
+ }
15
+
16
+ constructor( scope, object3d = null ) {
11
17
 
12
18
  super();
13
19
 
@@ -24,14 +30,10 @@ class Object3DNode extends Node {
24
30
 
25
31
  const scope = this.scope;
26
32
 
27
- if ( scope === Object3DNode.WORLD_MATRIX || scope === Object3DNode.VIEW_MATRIX ) {
33
+ if ( scope === Object3DNode.WORLD_MATRIX ) {
28
34
 
29
35
  return 'mat4';
30
36
 
31
- } else if ( scope === Object3DNode.NORMAL_MATRIX ) {
32
-
33
- return 'mat3';
34
-
35
37
  } else if ( scope === Object3DNode.POSITION || scope === Object3DNode.VIEW_POSITION || scope === Object3DNode.DIRECTION || scope === Object3DNode.SCALE ) {
36
38
 
37
39
  return 'vec3';
@@ -46,15 +48,7 @@ class Object3DNode extends Node {
46
48
  const uniformNode = this._uniformNode;
47
49
  const scope = this.scope;
48
50
 
49
- if ( scope === Object3DNode.VIEW_MATRIX ) {
50
-
51
- uniformNode.value = object.modelViewMatrix;
52
-
53
- } else if ( scope === Object3DNode.NORMAL_MATRIX ) {
54
-
55
- uniformNode.value = object.normalMatrix;
56
-
57
- } else if ( scope === Object3DNode.WORLD_MATRIX ) {
51
+ if ( scope === Object3DNode.WORLD_MATRIX ) {
58
52
 
59
53
  uniformNode.value = object.matrixWorld;
60
54
 
@@ -93,14 +87,10 @@ class Object3DNode extends Node {
93
87
 
94
88
  const scope = this.scope;
95
89
 
96
- if ( scope === Object3DNode.WORLD_MATRIX || scope === Object3DNode.VIEW_MATRIX ) {
90
+ if ( scope === Object3DNode.WORLD_MATRIX ) {
97
91
 
98
92
  this._uniformNode.nodeType = 'mat4';
99
93
 
100
- } else if ( scope === Object3DNode.NORMAL_MATRIX ) {
101
-
102
- this._uniformNode.nodeType = 'mat3';
103
-
104
94
  } else if ( scope === Object3DNode.POSITION || scope === Object3DNode.VIEW_POSITION || scope === Object3DNode.DIRECTION || scope === Object3DNode.SCALE ) {
105
95
 
106
96
  this._uniformNode.nodeType = 'vec3';
@@ -129,8 +119,6 @@ class Object3DNode extends Node {
129
119
 
130
120
  }
131
121
 
132
- Object3DNode.VIEW_MATRIX = 'viewMatrix';
133
- Object3DNode.NORMAL_MATRIX = 'normalMatrix';
134
122
  Object3DNode.WORLD_MATRIX = 'worldMatrix';
135
123
  Object3DNode.POSITION = 'position';
136
124
  Object3DNode.SCALE = 'scale';
@@ -139,11 +127,7 @@ Object3DNode.DIRECTION = 'direction';
139
127
 
140
128
  export default Object3DNode;
141
129
 
142
- Object3DNode.type = /*@__PURE__*/ registerNode( 'Object3D', Object3DNode );
143
-
144
130
  export const objectDirection = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.DIRECTION );
145
- export const objectViewMatrix = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.VIEW_MATRIX );
146
- export const objectNormalMatrix = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.NORMAL_MATRIX );
147
131
  export const objectWorldMatrix = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.WORLD_MATRIX );
148
132
  export const objectPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.POSITION );
149
133
  export const objectScale = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.SCALE );
@@ -1,8 +1,14 @@
1
- import Node, { registerNode } from '../core/Node.js';
1
+ import Node from '../core/Node.js';
2
2
  import { nodeImmutable } from '../tsl/TSLBase.js';
3
3
 
4
4
  class PointUVNode extends Node {
5
5
 
6
+ static get type() {
7
+
8
+ return 'PointUVNode';
9
+
10
+ }
11
+
6
12
  constructor() {
7
13
 
8
14
  super( 'vec2' );
@@ -21,6 +27,4 @@ class PointUVNode extends Node {
21
27
 
22
28
  export default PointUVNode;
23
29
 
24
- PointUVNode.type = /*@__PURE__*/ registerNode( 'PointUV', PointUVNode );
25
-
26
30
  export const pointUV = /*@__PURE__*/ nodeImmutable( PointUVNode );