super-three 0.155.0 → 0.157.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 (268) hide show
  1. package/build/three.cjs +361 -324
  2. package/build/three.js +361 -324
  3. package/build/three.min.js +2 -2
  4. package/build/three.module.js +354 -323
  5. package/build/three.module.min.js +1 -1
  6. package/examples/jsm/capabilities/WebGL.js +17 -0
  7. package/examples/jsm/controls/DragControls.js +3 -2
  8. package/examples/jsm/controls/OrbitControls.js +13 -5
  9. package/examples/jsm/csm/CSMShader.js +59 -21
  10. package/examples/jsm/exporters/EXRExporter.js +102 -24
  11. package/examples/jsm/exporters/GLTFExporter.js +1 -1
  12. package/examples/jsm/libs/rhino3dm/rhino3dm.js +8726 -4
  13. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +8737 -4
  14. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  15. package/examples/jsm/libs/tween.module.js +790 -735
  16. package/examples/jsm/libs/utif.module.js +1644 -1558
  17. package/examples/jsm/lights/LightProbeGenerator.js +37 -3
  18. package/examples/jsm/lines/LineMaterial.js +90 -156
  19. package/examples/jsm/loaders/3DMLoader.js +378 -104
  20. package/examples/jsm/loaders/DDSLoader.js +46 -3
  21. package/examples/jsm/loaders/EXRLoader.js +4 -4
  22. package/examples/jsm/loaders/FBXLoader.js +2 -0
  23. package/examples/jsm/loaders/GLTFLoader.js +18 -8
  24. package/examples/jsm/loaders/KTX2Loader.js +126 -77
  25. package/examples/jsm/loaders/LDrawLoader.js +22 -16
  26. package/examples/jsm/loaders/LogLuvLoader.js +2 -2
  27. package/examples/jsm/loaders/MMDLoader.js +10 -7
  28. package/examples/jsm/loaders/RGBELoader.js +48 -66
  29. package/examples/jsm/loaders/STLLoader.js +7 -0
  30. package/examples/jsm/loaders/USDZLoader.js +215 -12
  31. package/examples/jsm/materials/MeshGouraudMaterial.js +22 -18
  32. package/examples/jsm/nodes/Nodes.js +8 -1
  33. package/examples/jsm/nodes/accessors/BitangentNode.js +1 -1
  34. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +30 -4
  35. package/examples/jsm/nodes/accessors/BufferNode.js +1 -1
  36. package/examples/jsm/nodes/accessors/CameraNode.js +1 -1
  37. package/examples/jsm/nodes/accessors/CubeTextureNode.js +19 -4
  38. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +4 -5
  39. package/examples/jsm/nodes/accessors/InstanceNode.js +2 -2
  40. package/examples/jsm/nodes/accessors/LineMaterialNode.js +29 -0
  41. package/examples/jsm/nodes/accessors/MaterialNode.js +23 -13
  42. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +12 -9
  43. package/examples/jsm/nodes/accessors/ModelNode.js +1 -1
  44. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +5 -4
  45. package/examples/jsm/nodes/accessors/MorphNode.js +4 -4
  46. package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
  47. package/examples/jsm/nodes/accessors/Object3DNode.js +3 -3
  48. package/examples/jsm/nodes/accessors/PointUVNode.js +1 -1
  49. package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
  50. package/examples/jsm/nodes/accessors/ReferenceNode.js +13 -7
  51. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +2 -2
  52. package/examples/jsm/nodes/accessors/SceneNode.js +2 -2
  53. package/examples/jsm/nodes/accessors/SkinningNode.js +2 -2
  54. package/examples/jsm/nodes/accessors/StorageBufferNode.js +1 -1
  55. package/examples/jsm/nodes/accessors/TangentNode.js +1 -1
  56. package/examples/jsm/nodes/accessors/TextureBicubicNode.js +2 -2
  57. package/examples/jsm/nodes/accessors/TextureNode.js +18 -8
  58. package/examples/jsm/nodes/accessors/TextureSizeNode.js +2 -2
  59. package/examples/jsm/nodes/accessors/TextureStoreNode.js +29 -0
  60. package/examples/jsm/nodes/accessors/UVNode.js +1 -1
  61. package/examples/jsm/nodes/accessors/UserDataNode.js +2 -2
  62. package/examples/jsm/nodes/code/CodeNode.js +1 -1
  63. package/examples/jsm/nodes/code/ExpressionNode.js +1 -1
  64. package/examples/jsm/nodes/code/FunctionCallNode.js +1 -1
  65. package/examples/jsm/nodes/code/FunctionNode.js +18 -7
  66. package/examples/jsm/nodes/code/ScriptableNode.js +2 -2
  67. package/examples/jsm/nodes/code/ScriptableValueNode.js +2 -2
  68. package/examples/jsm/nodes/core/ArrayUniformNode.js +1 -1
  69. package/examples/jsm/nodes/core/AttributeNode.js +3 -3
  70. package/examples/jsm/nodes/core/BypassNode.js +1 -1
  71. package/examples/jsm/nodes/core/CacheNode.js +1 -1
  72. package/examples/jsm/nodes/core/ConstNode.js +1 -1
  73. package/examples/jsm/nodes/core/ContextNode.js +2 -2
  74. package/examples/jsm/nodes/core/IndexNode.js +1 -1
  75. package/examples/jsm/nodes/core/InputNode.js +1 -1
  76. package/examples/jsm/nodes/core/Node.js +45 -14
  77. package/examples/jsm/nodes/core/NodeBuilder.js +83 -15
  78. package/examples/jsm/nodes/core/NodeFrame.js +37 -14
  79. package/examples/jsm/nodes/core/NodeUniform.js +1 -1
  80. package/examples/jsm/nodes/core/OutputStructNode.js +62 -0
  81. package/examples/jsm/nodes/core/PropertyNode.js +3 -1
  82. package/examples/jsm/nodes/core/StackNode.js +5 -5
  83. package/examples/jsm/nodes/core/StructTypeNode.js +24 -0
  84. package/examples/jsm/nodes/core/TempNode.js +1 -1
  85. package/examples/jsm/nodes/core/UniformNode.js +3 -1
  86. package/examples/jsm/nodes/core/VarNode.js +1 -1
  87. package/examples/jsm/nodes/core/VaryingNode.js +1 -1
  88. package/examples/jsm/nodes/core/constants.js +1 -1
  89. package/examples/jsm/nodes/display/BlendModeNode.js +2 -2
  90. package/examples/jsm/nodes/display/BumpMapNode.js +2 -2
  91. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -2
  92. package/examples/jsm/nodes/display/ColorSpaceNode.js +2 -2
  93. package/examples/jsm/nodes/display/FrontFacingNode.js +1 -1
  94. package/examples/jsm/nodes/display/NormalMapNode.js +2 -2
  95. package/examples/jsm/nodes/display/PosterizeNode.js +2 -2
  96. package/examples/jsm/nodes/display/ToneMappingNode.js +2 -2
  97. package/examples/jsm/nodes/display/ViewportDepthNode.js +2 -2
  98. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +1 -1
  99. package/examples/jsm/nodes/display/ViewportNode.js +21 -7
  100. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +1 -1
  101. package/examples/jsm/nodes/display/ViewportTextureNode.js +1 -1
  102. package/examples/jsm/nodes/fog/FogExp2Node.js +2 -2
  103. package/examples/jsm/nodes/fog/FogNode.js +2 -2
  104. package/examples/jsm/nodes/fog/FogRangeNode.js +2 -2
  105. package/examples/jsm/nodes/geometry/RangeNode.js +2 -2
  106. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  107. package/examples/jsm/nodes/lighting/AONode.js +2 -2
  108. package/examples/jsm/nodes/lighting/AmbientLightNode.js +3 -3
  109. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +4 -4
  110. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +4 -4
  111. package/examples/jsm/nodes/lighting/EnvironmentNode.js +2 -2
  112. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +3 -3
  113. package/examples/jsm/nodes/lighting/IESSpotLightNode.js +2 -2
  114. package/examples/jsm/nodes/lighting/LightNode.js +2 -2
  115. package/examples/jsm/nodes/lighting/LightingContextNode.js +3 -3
  116. package/examples/jsm/nodes/lighting/LightingNode.js +1 -1
  117. package/examples/jsm/nodes/lighting/LightsNode.js +4 -4
  118. package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
  119. package/examples/jsm/nodes/lighting/SpotLightNode.js +4 -4
  120. package/examples/jsm/nodes/materials/Line2NodeMaterial.js +449 -0
  121. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +1 -1
  122. package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +54 -0
  123. package/examples/jsm/nodes/materials/Materials.js +2 -0
  124. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -1
  125. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +2 -2
  126. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -2
  127. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
  128. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
  129. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +3 -3
  130. package/examples/jsm/nodes/materials/NodeMaterial.js +39 -29
  131. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +1 -1
  132. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +2 -2
  133. package/examples/jsm/nodes/math/CondNode.js +1 -1
  134. package/examples/jsm/nodes/math/HashNode.js +34 -0
  135. package/examples/jsm/nodes/math/MathNode.js +2 -2
  136. package/examples/jsm/nodes/math/OperatorNode.js +1 -1
  137. package/examples/jsm/nodes/procedural/CheckerNode.js +3 -3
  138. package/examples/jsm/nodes/shadernode/ShaderNode.js +85 -28
  139. package/examples/jsm/nodes/utils/ArrayElementNode.js +1 -1
  140. package/examples/jsm/nodes/utils/ConvertNode.js +1 -1
  141. package/examples/jsm/nodes/utils/DiscardNode.js +1 -1
  142. package/examples/jsm/nodes/utils/EquirectUVNode.js +2 -2
  143. package/examples/jsm/nodes/utils/JoinNode.js +1 -1
  144. package/examples/jsm/nodes/utils/LoopNode.js +11 -11
  145. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -2
  146. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  147. package/examples/jsm/nodes/utils/OscNode.js +2 -2
  148. package/examples/jsm/nodes/utils/PackingNode.js +2 -2
  149. package/examples/jsm/nodes/utils/RemapNode.js +2 -2
  150. package/examples/jsm/nodes/utils/RotateUVNode.js +2 -2
  151. package/examples/jsm/nodes/utils/SetNode.js +62 -0
  152. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +2 -2
  153. package/examples/jsm/nodes/utils/SplitNode.js +2 -2
  154. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +2 -2
  155. package/examples/jsm/nodes/utils/TimerNode.js +2 -2
  156. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +2 -2
  157. package/examples/jsm/objects/Sky.js +1 -3
  158. package/examples/jsm/postprocessing/FilmPass.js +3 -5
  159. package/examples/jsm/postprocessing/OutputPass.js +3 -2
  160. package/examples/jsm/postprocessing/RenderPass.js +30 -12
  161. package/examples/jsm/postprocessing/SAOPass.js +23 -98
  162. package/examples/jsm/postprocessing/SSAOPass.js +10 -30
  163. package/examples/jsm/renderers/common/Backend.js +11 -8
  164. package/examples/jsm/renderers/common/Background.js +2 -2
  165. package/examples/jsm/renderers/common/Binding.js +6 -0
  166. package/examples/jsm/renderers/common/Bindings.js +4 -5
  167. package/examples/jsm/renderers/common/Pipelines.js +9 -9
  168. package/examples/jsm/renderers/common/RenderContext.js +3 -0
  169. package/examples/jsm/renderers/common/RenderContexts.js +26 -1
  170. package/examples/jsm/renderers/common/RenderList.js +12 -4
  171. package/examples/jsm/renderers/common/RenderObject.js +43 -15
  172. package/examples/jsm/renderers/common/RenderObjects.js +8 -14
  173. package/examples/jsm/renderers/common/Renderer.js +52 -16
  174. package/examples/jsm/renderers/common/SampledTexture.js +6 -3
  175. package/examples/jsm/renderers/common/Sampler.js +1 -1
  176. package/examples/jsm/renderers/common/StorageBuffer.js +1 -1
  177. package/examples/jsm/renderers/common/StorageTexture.js +19 -0
  178. package/examples/jsm/renderers/common/Textures.js +166 -21
  179. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +35 -0
  180. package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +21 -11
  181. package/examples/jsm/renderers/common/nodes/NodeSampler.js +1 -7
  182. package/examples/jsm/renderers/common/nodes/Nodes.js +79 -18
  183. package/examples/jsm/renderers/webgl/WebGLBackend.js +702 -0
  184. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +207 -20
  185. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +84 -0
  186. package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +26 -0
  187. package/examples/jsm/renderers/webgl/utils/WebGLState.js +529 -0
  188. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +212 -0
  189. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +242 -0
  190. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +340 -0
  191. package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodeBuilder.js +4 -4
  192. package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodes.js +14 -2
  193. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +282 -43
  194. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +18 -2
  195. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +93 -60
  196. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +2 -2
  197. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +15 -2
  198. package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -14
  199. package/examples/jsm/renderers/webgpu/utils/WebGPUTexturePassUtils.js +285 -0
  200. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +205 -284
  201. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +6 -5
  202. package/examples/jsm/shaders/FilmShader.js +11 -54
  203. package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
  204. package/examples/jsm/shaders/MMDToonShader.js +4 -4
  205. package/examples/jsm/shaders/OutputShader.js +2 -2
  206. package/examples/jsm/shaders/SAOShader.js +0 -13
  207. package/examples/jsm/shaders/SSAOShader.js +33 -26
  208. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +6 -6
  209. package/examples/jsm/utils/BufferGeometryUtils.js +6 -4
  210. package/package.json +1 -1
  211. package/src/Three.js +1 -2
  212. package/src/animation/AnimationUtils.js +3 -20
  213. package/src/animation/KeyframeTrack.js +8 -8
  214. package/src/audio/Audio.js +6 -0
  215. package/src/cameras/Camera.js +1 -5
  216. package/src/cameras/CubeCamera.js +14 -8
  217. package/src/constants.js +10 -1
  218. package/src/core/Object3D.js +1 -14
  219. package/src/core/RenderTarget.js +16 -7
  220. package/src/core/UniformsGroup.js +2 -2
  221. package/src/extras/core/CurvePath.js +4 -1
  222. package/src/loaders/DataTextureLoader.js +0 -2
  223. package/src/loaders/MaterialLoader.js +1 -1
  224. package/src/loaders/ObjectLoader.js +6 -0
  225. package/src/materials/Material.js +10 -10
  226. package/src/math/Color.js +1 -5
  227. package/src/math/ColorManagement.js +82 -60
  228. package/src/math/Vector2.js +2 -2
  229. package/src/math/Vector3.js +3 -3
  230. package/src/math/Vector4.js +4 -4
  231. package/src/objects/Line.js +1 -1
  232. package/src/objects/Mesh.js +1 -1
  233. package/src/objects/Points.js +1 -1
  234. package/src/objects/Sprite.js +2 -2
  235. package/src/renderers/WebGLRenderer.js +42 -51
  236. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
  237. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +1 -1
  238. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +35 -2
  239. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -9
  240. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +19 -15
  241. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +2 -2
  242. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +4 -4
  243. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +3 -3
  244. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -6
  245. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +4 -4
  246. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +1 -1
  247. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +16 -16
  248. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +3 -3
  249. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +11 -1
  250. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +1 -1
  251. package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
  252. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -1
  253. package/src/renderers/shaders/UniformsUtils.js +2 -2
  254. package/src/renderers/webgl/WebGLBackground.js +9 -17
  255. package/src/renderers/webgl/WebGLLights.js +14 -3
  256. package/src/renderers/webgl/WebGLProgram.js +36 -5
  257. package/src/renderers/webgl/WebGLPrograms.js +9 -1
  258. package/src/renderers/webgl/WebGLTextures.js +19 -8
  259. package/src/renderers/webgl/WebGLUtils.js +25 -20
  260. package/src/scenes/Fog.js +1 -0
  261. package/src/scenes/FogExp2.js +1 -0
  262. package/src/textures/Source.js +2 -2
  263. package/src/textures/Texture.js +2 -2
  264. package/src/utils.js +9 -1
  265. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureMipmapUtils.js +0 -163
  266. package/src/lights/AmbientLightProbe.js +0 -21
  267. package/src/lights/HemisphereLightProbe.js +0 -30
  268. /package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/SlotNode.js +0 -0
@@ -48,7 +48,7 @@ class ColorAdjustmentNode extends TempNode {
48
48
 
49
49
  }
50
50
 
51
- construct() {
51
+ setup() {
52
52
 
53
53
  const { method, colorNode, adjustmentNode } = this;
54
54
 
@@ -97,4 +97,4 @@ addNodeElement( 'saturation', saturation );
97
97
  addNodeElement( 'vibrance', vibrance );
98
98
  addNodeElement( 'hue', hue );
99
99
 
100
- addNodeClass( ColorAdjustmentNode );
100
+ addNodeClass( 'ColorAdjustmentNode', ColorAdjustmentNode );
@@ -70,7 +70,7 @@ class ColorSpaceNode extends TempNode {
70
70
 
71
71
  }
72
72
 
73
- construct() {
73
+ setup() {
74
74
 
75
75
  const { method, node } = this;
76
76
 
@@ -105,4 +105,4 @@ addNodeElement( 'sRGBToLinear', sRGBToLinear );
105
105
  addNodeElement( 'linearToColorSpace', linearToColorSpace );
106
106
  addNodeElement( 'colorSpaceToLinear', colorSpaceToLinear );
107
107
 
108
- addNodeClass( ColorSpaceNode );
108
+ addNodeClass( 'ColorSpaceNode', ColorSpaceNode );
@@ -24,4 +24,4 @@ export default FrontFacingNode;
24
24
  export const frontFacing = nodeImmutable( FrontFacingNode );
25
25
  export const faceDirection = float( frontFacing ).mul( 2.0 ).sub( 1.0 );
26
26
 
27
- addNodeClass( FrontFacingNode );
27
+ addNodeClass( 'FrontFacingNode', FrontFacingNode );
@@ -52,7 +52,7 @@ class NormalMapNode extends TempNode {
52
52
 
53
53
  }
54
54
 
55
- construct( builder ) {
55
+ setup( builder ) {
56
56
 
57
57
  const { normalMapType, scaleNode } = this;
58
58
 
@@ -103,4 +103,4 @@ export const normalMap = nodeProxy( NormalMapNode );
103
103
 
104
104
  export const TBNViewMatrix = mat3( tangentView, bitangentView, normalView );
105
105
 
106
- addNodeClass( NormalMapNode );
106
+ addNodeClass( 'NormalMapNode', NormalMapNode );
@@ -13,7 +13,7 @@ class PosterizeNode extends TempNode {
13
13
 
14
14
  }
15
15
 
16
- construct() {
16
+ setup() {
17
17
 
18
18
  const { sourceNode, stepsNode } = this;
19
19
 
@@ -29,4 +29,4 @@ export const posterize = nodeProxy( PosterizeNode );
29
29
 
30
30
  addNodeElement( 'posterize', posterize );
31
31
 
32
- addNodeClass( PosterizeNode );
32
+ addNodeClass( 'PosterizeNode', PosterizeNode );
@@ -104,7 +104,7 @@ class ToneMappingNode extends TempNode {
104
104
 
105
105
  }
106
106
 
107
- construct( builder ) {
107
+ setup( builder ) {
108
108
 
109
109
  const colorNode = this.colorNode || builder.context.color;
110
110
  const toneMapping = this.toneMapping;
@@ -138,4 +138,4 @@ export default ToneMappingNode;
138
138
 
139
139
  export const toneMapping = ( mapping, exposure, color ) => nodeObject( new ToneMappingNode( mapping, nodeObject( exposure ), nodeObject( color ) ) );
140
140
 
141
- addNodeClass( ToneMappingNode );
141
+ addNodeClass( 'ToneMappingNode', ToneMappingNode );
@@ -17,7 +17,7 @@ class ViewportDepthNode extends Node {
17
17
 
18
18
  }
19
19
 
20
- construct( /*builder*/ ) {
20
+ setup( /*builder*/ ) {
21
21
 
22
22
  const { scope } = this;
23
23
 
@@ -66,4 +66,4 @@ export default ViewportDepthNode;
66
66
  export const depth = nodeImmutable( ViewportDepthNode, ViewportDepthNode.DEPTH );
67
67
  export const depthTexture = nodeProxy( ViewportDepthNode, ViewportDepthNode.DEPTH_TEXTURE );
68
68
 
69
- addNodeClass( ViewportDepthNode );
69
+ addNodeClass( 'ViewportDepthNode', ViewportDepthNode );
@@ -31,4 +31,4 @@ export const viewportDepthTexture = nodeProxy( ViewportDepthTextureNode );
31
31
 
32
32
  addNodeElement( 'viewportDepthTexture', viewportDepthTexture );
33
33
 
34
- addNodeClass( ViewportDepthTextureNode );
34
+ addNodeClass( 'ViewportDepthTextureNode', ViewportDepthTextureNode );
@@ -3,9 +3,9 @@ import { NodeUpdateType } from '../core/constants.js';
3
3
  import { uniform } from '../core/UniformNode.js';
4
4
  import { nodeImmutable, vec2 } from '../shadernode/ShaderNode.js';
5
5
 
6
- import { Vector2 } from 'three';
6
+ import { Vector2, Vector4 } from 'three';
7
7
 
8
- let resolution;
8
+ let resolution, viewportResult;
9
9
 
10
10
  class ViewportNode extends Node {
11
11
 
@@ -21,7 +21,7 @@ class ViewportNode extends Node {
21
21
 
22
22
  getNodeType() {
23
23
 
24
- return this.scope === ViewportNode.COORDINATE ? 'vec4' : 'vec2';
24
+ return this.scope === ViewportNode.COORDINATE || this.scope === ViewportNode.VIEWPORT ? 'vec4' : 'vec2';
25
25
 
26
26
  }
27
27
 
@@ -29,7 +29,7 @@ class ViewportNode extends Node {
29
29
 
30
30
  let updateType = NodeUpdateType.NONE;
31
31
 
32
- if ( this.scope === ViewportNode.RESOLUTION ) {
32
+ if ( this.scope === ViewportNode.RESOLUTION || this.scope === ViewportNode.VIEWPORT ) {
33
33
 
34
34
  updateType = NodeUpdateType.FRAME;
35
35
 
@@ -43,11 +43,19 @@ class ViewportNode extends Node {
43
43
 
44
44
  update( { renderer } ) {
45
45
 
46
- renderer.getDrawingBufferSize( resolution );
46
+ if ( this.scope === ViewportNode.VIEWPORT ) {
47
+
48
+ renderer.getViewport( viewportResult );
49
+
50
+ } else {
51
+
52
+ renderer.getDrawingBufferSize( resolution );
53
+
54
+ }
47
55
 
48
56
  }
49
57
 
50
- construct( builder ) {
58
+ setup( builder ) {
51
59
 
52
60
  const scope = this.scope;
53
61
 
@@ -59,6 +67,10 @@ class ViewportNode extends Node {
59
67
 
60
68
  output = uniform( resolution || ( resolution = new Vector2() ) );
61
69
 
70
+ } else if ( scope === ViewportNode.VIEWPORT ) {
71
+
72
+ output = uniform( viewportResult || ( viewportResult = new Vector4() ) );
73
+
62
74
  } else {
63
75
 
64
76
  const coordinateNode = vec2( new ViewportNode( ViewportNode.COORDINATE ) );
@@ -98,6 +110,7 @@ class ViewportNode extends Node {
98
110
 
99
111
  ViewportNode.COORDINATE = 'coordinate';
100
112
  ViewportNode.RESOLUTION = 'resolution';
113
+ ViewportNode.VIEWPORT = 'viewport';
101
114
  ViewportNode.TOP_LEFT = 'topLeft';
102
115
  ViewportNode.BOTTOM_LEFT = 'bottomLeft';
103
116
  ViewportNode.TOP_RIGHT = 'topRight';
@@ -107,9 +120,10 @@ export default ViewportNode;
107
120
 
108
121
  export const viewportCoordinate = nodeImmutable( ViewportNode, ViewportNode.COORDINATE );
109
122
  export const viewportResolution = nodeImmutable( ViewportNode, ViewportNode.RESOLUTION );
123
+ export const viewport = nodeImmutable( ViewportNode, ViewportNode.VIEWPORT );
110
124
  export const viewportTopLeft = nodeImmutable( ViewportNode, ViewportNode.TOP_LEFT );
111
125
  export const viewportBottomLeft = nodeImmutable( ViewportNode, ViewportNode.BOTTOM_LEFT );
112
126
  export const viewportTopRight = nodeImmutable( ViewportNode, ViewportNode.TOP_RIGHT );
113
127
  export const viewportBottomRight = nodeImmutable( ViewportNode, ViewportNode.BOTTOM_RIGHT );
114
128
 
115
- addNodeClass( ViewportNode );
129
+ addNodeClass( 'ViewportNode', ViewportNode );
@@ -28,4 +28,4 @@ export const viewportSharedTexture = nodeProxy( ViewportSharedTextureNode );
28
28
 
29
29
  addNodeElement( 'viewportSharedTexture', viewportSharedTexture );
30
30
 
31
- addNodeClass( ViewportSharedTextureNode );
31
+ addNodeClass( 'ViewportSharedTextureNode', ViewportSharedTextureNode );
@@ -72,4 +72,4 @@ export const viewportMipTexture = nodeProxy( ViewportTextureNode, null, null, {
72
72
  addNodeElement( 'viewportTexture', viewportTexture );
73
73
  addNodeElement( 'viewportMipTexture', viewportMipTexture );
74
74
 
75
- addNodeClass( ViewportTextureNode );
75
+ addNodeClass( 'ViewportTextureNode', ViewportTextureNode );
@@ -15,7 +15,7 @@ class FogExp2Node extends FogNode {
15
15
 
16
16
  }
17
17
 
18
- construct() {
18
+ setup() {
19
19
 
20
20
  const depthNode = positionView.z.negate();
21
21
  const densityNode = this.densityNode;
@@ -32,4 +32,4 @@ export const densityFog = nodeProxy( FogExp2Node );
32
32
 
33
33
  addNodeElement( 'densityFog', densityFog );
34
34
 
35
- addNodeClass( FogExp2Node );
35
+ addNodeClass( 'FogExp2Node', FogExp2Node );
@@ -20,7 +20,7 @@ class FogNode extends Node {
20
20
 
21
21
  }
22
22
 
23
- construct() {
23
+ setup() {
24
24
 
25
25
  return this.factorNode;
26
26
 
@@ -34,4 +34,4 @@ export const fog = nodeProxy( FogNode );
34
34
 
35
35
  addNodeElement( 'fog', fog );
36
36
 
37
- addNodeClass( FogNode );
37
+ addNodeClass( 'FogNode', FogNode );
@@ -17,7 +17,7 @@ class FogRangeNode extends FogNode {
17
17
 
18
18
  }
19
19
 
20
- construct() {
20
+ setup() {
21
21
 
22
22
  return smoothstep( this.nearNode, this.farNode, positionView.z.negate() );
23
23
 
@@ -31,4 +31,4 @@ export const rangeFog = nodeProxy( FogRangeNode );
31
31
 
32
32
  addNodeElement( 'rangeFog', rangeFog );
33
33
 
34
- addNodeClass( FogRangeNode );
34
+ addNodeClass( 'FogRangeNode', FogRangeNode );
@@ -36,7 +36,7 @@ class RangeNode extends Node {
36
36
 
37
37
  }
38
38
 
39
- construct( builder ) {
39
+ setup( builder ) {
40
40
 
41
41
  const object = builder.object;
42
42
 
@@ -101,4 +101,4 @@ export default RangeNode;
101
101
 
102
102
  export const range = nodeProxy( RangeNode );
103
103
 
104
- addNodeClass( RangeNode );
104
+ addNodeClass( 'RangeNode', RangeNode );
@@ -82,4 +82,4 @@ export const compute = ( node, count, workgroupSize ) => nodeObject( new Compute
82
82
 
83
83
  addNodeElement( 'compute', compute );
84
84
 
85
- addNodeClass( ComputeNode );
85
+ addNodeClass( 'ComputeNode', ComputeNode );
@@ -11,7 +11,7 @@ class AONode extends LightingNode {
11
11
 
12
12
  }
13
13
 
14
- construct( builder ) {
14
+ setup( builder ) {
15
15
 
16
16
  const aoIntensity = 1;
17
17
  const aoNode = this.aoNode.x.sub( 1.0 ).mul( aoIntensity ).add( 1.0 );
@@ -24,4 +24,4 @@ class AONode extends LightingNode {
24
24
 
25
25
  export default AONode;
26
26
 
27
- addNodeClass( AONode );
27
+ addNodeClass( 'AONode', AONode );
@@ -12,7 +12,7 @@ class AmbientLightNode extends AnalyticLightNode {
12
12
 
13
13
  }
14
14
 
15
- construct( { context } ) {
15
+ setup( { context } ) {
16
16
 
17
17
  context.irradiance.addAssign( this.colorNode );
18
18
 
@@ -22,6 +22,6 @@ class AmbientLightNode extends AnalyticLightNode {
22
22
 
23
23
  export default AmbientLightNode;
24
24
 
25
- addLightNode( AmbientLight, AmbientLightNode );
25
+ addNodeClass( 'AmbientLightNode', AmbientLightNode );
26
26
 
27
- addNodeClass( AmbientLightNode );
27
+ addLightNode( AmbientLight, AmbientLightNode );
@@ -37,7 +37,7 @@ class AnalyticLightNode extends LightingNode {
37
37
 
38
38
  }
39
39
 
40
- constructShadow( builder ) {
40
+ setupShadow( builder ) {
41
41
 
42
42
  let shadowNode = this.shadowNode;
43
43
 
@@ -136,9 +136,9 @@ class AnalyticLightNode extends LightingNode {
136
136
 
137
137
  }
138
138
 
139
- construct( builder ) {
139
+ setup( builder ) {
140
140
 
141
- if ( this.light.castShadow ) this.constructShadow( builder );
141
+ if ( this.light.castShadow ) this.setupShadow( builder );
142
142
 
143
143
  }
144
144
 
@@ -181,4 +181,4 @@ class AnalyticLightNode extends LightingNode {
181
181
 
182
182
  export default AnalyticLightNode;
183
183
 
184
- addNodeClass( AnalyticLightNode );
184
+ addNodeClass( 'AnalyticLightNode', AnalyticLightNode );
@@ -13,9 +13,9 @@ class DirectionalLightNode extends AnalyticLightNode {
13
13
 
14
14
  }
15
15
 
16
- construct( builder ) {
16
+ setup( builder ) {
17
17
 
18
- super.construct( builder );
18
+ super.setup( builder );
19
19
 
20
20
  const lightingModel = builder.context.lightingModel;
21
21
 
@@ -35,6 +35,6 @@ class DirectionalLightNode extends AnalyticLightNode {
35
35
 
36
36
  export default DirectionalLightNode;
37
37
 
38
- addLightNode( DirectionalLight, DirectionalLightNode );
38
+ addNodeClass( 'DirectionalLightNode', DirectionalLightNode );
39
39
 
40
- addNodeClass( DirectionalLightNode );
40
+ addLightNode( DirectionalLight, DirectionalLightNode );
@@ -24,7 +24,7 @@ class EnvironmentNode extends LightingNode {
24
24
 
25
25
  }
26
26
 
27
- construct( builder ) {
27
+ setup( builder ) {
28
28
 
29
29
  let envNode = this.envNode;
30
30
  const properties = builder.getNodeProperties( this );
@@ -188,4 +188,4 @@ const createIrradianceContext = ( normalWorldNode ) => {
188
188
 
189
189
  export default EnvironmentNode;
190
190
 
191
- addNodeClass( EnvironmentNode );
191
+ addNodeClass( 'EnvironmentNode', EnvironmentNode );
@@ -33,7 +33,7 @@ class HemisphereLightNode extends AnalyticLightNode {
33
33
 
34
34
  }
35
35
 
36
- construct( builder ) {
36
+ setup( builder ) {
37
37
 
38
38
  const { colorNode, groundColorNode, lightDirectionNode } = this;
39
39
 
@@ -50,6 +50,6 @@ class HemisphereLightNode extends AnalyticLightNode {
50
50
 
51
51
  export default HemisphereLightNode;
52
52
 
53
- addLightNode( HemisphereLight, HemisphereLightNode );
53
+ addNodeClass( 'HemisphereLightNode', HemisphereLightNode );
54
54
 
55
- addNodeClass( HemisphereLightNode );
55
+ addLightNode( HemisphereLight, HemisphereLightNode );
@@ -34,6 +34,6 @@ class IESSpotLightNode extends SpotLightNode {
34
34
 
35
35
  export default IESSpotLightNode;
36
36
 
37
- addLightNode( IESSpotLight, IESSpotLightNode );
37
+ addNodeClass( 'IESSpotLightNode', IESSpotLightNode );
38
38
 
39
- addNodeClass( IESSpotLightNode );
39
+ addLightNode( IESSpotLight, IESSpotLightNode );
@@ -14,7 +14,7 @@ class LightNode extends Node {
14
14
 
15
15
  }
16
16
 
17
- construct() {
17
+ setup() {
18
18
 
19
19
  const { scope, light } = this;
20
20
 
@@ -54,4 +54,4 @@ export default LightNode;
54
54
 
55
55
  export const lightTargetDirection = nodeProxy( LightNode, LightNode.TARGET_DIRECTION );
56
56
 
57
- addNodeClass( LightNode );
57
+ addNodeClass( 'LightNode', LightNode );
@@ -22,7 +22,7 @@ class LightingContextNode extends ContextNode {
22
22
 
23
23
  }
24
24
 
25
- construct( builder ) {
25
+ setup( builder ) {
26
26
 
27
27
  const { lightingModel, backdropNode, backdropAlphaNode } = this;
28
28
 
@@ -76,7 +76,7 @@ class LightingContextNode extends ContextNode {
76
76
 
77
77
  }
78
78
 
79
- return super.construct( builder );
79
+ return super.setup( builder );
80
80
 
81
81
  }
82
82
 
@@ -99,4 +99,4 @@ export const lightingContext = nodeProxy( LightingContextNode );
99
99
 
100
100
  addNodeElement( 'lightingContext', lightingContext );
101
101
 
102
- addNodeClass( LightingContextNode );
102
+ addNodeClass( 'LightingContextNode', LightingContextNode );
@@ -18,4 +18,4 @@ class LightingNode extends Node {
18
18
 
19
19
  export default LightingNode;
20
20
 
21
- addNodeClass( LightingNode );
21
+ addNodeClass( 'LightingNode', LightingNode );
@@ -28,7 +28,7 @@ class LightsNode extends Node {
28
28
 
29
29
  }
30
30
 
31
- construct( builder ) {
31
+ setup( builder ) {
32
32
 
33
33
  const lightNodes = this.lightNodes;
34
34
 
@@ -119,9 +119,9 @@ export const lightsWithoutWrap = nodeProxy( LightsNode );
119
119
 
120
120
  export function addLightNode( lightClass, lightNodeClass ) {
121
121
 
122
- if ( LightNodes.has( lightClass ) ) throw new Error( `Redefinition of light node ${ lightNodeClass.name }` );
123
- if ( typeof lightClass !== 'function' || ! lightClass.name ) throw new Error( `Light ${ lightClass.name } is not a class` );
124
- if ( typeof lightNodeClass !== 'function' || ! lightNodeClass.name ) throw new Error( `Light node ${ lightNodeClass.name } is not a class` );
122
+ if ( LightNodes.has( lightClass ) ) throw new Error( `Redefinition of light node ${ lightNodeClass.type }` );
123
+ if ( typeof lightClass !== 'function' ) throw new Error( `Light ${ lightClass.name } is not a class` );
124
+ if ( typeof lightNodeClass !== 'function' || ! lightNodeClass.type ) throw new Error( `Light node ${ lightNodeClass.type } is not a class` );
125
125
 
126
126
  LightNodes.set( lightClass, lightNodeClass );
127
127
 
@@ -30,7 +30,7 @@ class PointLightNode extends AnalyticLightNode {
30
30
 
31
31
  }
32
32
 
33
- construct( builder ) {
33
+ setup( builder ) {
34
34
 
35
35
  const { colorNode, cutoffDistanceNode, decayExponentNode, light } = this;
36
36
 
@@ -63,6 +63,6 @@ class PointLightNode extends AnalyticLightNode {
63
63
 
64
64
  export default PointLightNode;
65
65
 
66
- addLightNode( PointLight, PointLightNode );
66
+ addNodeClass( 'PointLightNode', PointLightNode );
67
67
 
68
- addNodeClass( PointLightNode );
68
+ addLightNode( PointLight, PointLightNode );
@@ -46,9 +46,9 @@ class SpotLightNode extends AnalyticLightNode {
46
46
 
47
47
  }
48
48
 
49
- construct( builder ) {
49
+ setup( builder ) {
50
50
 
51
- super.construct( builder );
51
+ super.setup( builder );
52
52
 
53
53
  const lightingModel = builder.context.lightingModel;
54
54
 
@@ -84,6 +84,6 @@ class SpotLightNode extends AnalyticLightNode {
84
84
 
85
85
  export default SpotLightNode;
86
86
 
87
- addLightNode( SpotLight, SpotLightNode );
87
+ addNodeClass( 'SpotLightNode', SpotLightNode );
88
88
 
89
- addNodeClass( SpotLightNode );
89
+ addLightNode( SpotLight, SpotLightNode );