Selaa lähdekoodia

Docs: Document nullable types according to JSDoc spec. (#30466)

* Docs: Document nullable types according to JSDoc spec.

* Clean up.
Michael Herzog 1 vuosi sitten
vanhempi
sitoutus
d995617a05
100 muutettua tiedostoa jossa 406 lisäystä ja 401 poistoa
  1. 4 4
      examples/jsm/controls/ArcballControls.js
  2. 10 10
      examples/jsm/exporters/GLTFExporter.js
  3. 1 1
      examples/jsm/loaders/KTX2Loader.js
  4. 1 1
      examples/jsm/math/OBB.js
  5. 2 2
      examples/jsm/tsl/display/BloomNode.js
  6. 3 3
      examples/jsm/tsl/display/DenoiseNode.js
  7. 8 6
      examples/jsm/tsl/display/FilmNode.js
  8. 3 3
      examples/jsm/tsl/display/GTAONode.js
  9. 2 1
      examples/jsm/tsl/display/SSAAPassNode.js
  10. 4 2
      examples/jsm/tsl/display/TRAAPassNode.js
  11. 1 1
      src/loaders/nodes/NodeLoader.js
  12. 1 1
      src/loaders/nodes/NodeMaterialLoader.js
  13. 2 2
      src/loaders/nodes/NodeObjectLoader.js
  14. 6 6
      src/materials/nodes/Line2NodeMaterial.js
  15. 1 1
      src/materials/nodes/LineBasicNodeMaterial.js
  16. 5 5
      src/materials/nodes/LineDashedNodeMaterial.js
  17. 3 3
      src/materials/nodes/MeshBasicNodeMaterial.js
  18. 2 2
      src/materials/nodes/MeshLambertNodeMaterial.js
  19. 1 1
      src/materials/nodes/MeshMatcapNodeMaterial.js
  20. 1 1
      src/materials/nodes/MeshNormalNodeMaterial.js
  21. 4 4
      src/materials/nodes/MeshPhongNodeMaterial.js
  22. 18 18
      src/materials/nodes/MeshPhysicalNodeMaterial.js
  23. 7 7
      src/materials/nodes/MeshSSSNodeMaterial.js
  24. 5 5
      src/materials/nodes/MeshStandardNodeMaterial.js
  25. 1 1
      src/materials/nodes/MeshToonNodeMaterial.js
  26. 19 19
      src/materials/nodes/NodeMaterial.js
  27. 2 2
      src/materials/nodes/PointsNodeMaterial.js
  28. 1 1
      src/materials/nodes/ShadowNodeMaterial.js
  29. 4 4
      src/materials/nodes/SpriteNodeMaterial.js
  30. 3 3
      src/materials/nodes/VolumeNodeMaterial.js
  31. 1 1
      src/nodes/accessors/BatchNode.js
  32. 6 6
      src/nodes/accessors/BufferAttributeNode.js
  33. 6 6
      src/nodes/accessors/CubeTextureNode.js
  34. 3 3
      src/nodes/accessors/MaterialReferenceNode.js
  35. 7 7
      src/nodes/accessors/Object3DNode.js
  36. 7 7
      src/nodes/accessors/ReferenceBaseNode.js
  37. 8 8
      src/nodes/accessors/ReferenceNode.js
  38. 3 3
      src/nodes/accessors/RendererReferenceNode.js
  39. 2 2
      src/nodes/accessors/SceneNode.js
  40. 1 1
      src/nodes/accessors/SkinningNode.js
  41. 6 6
      src/nodes/accessors/StorageBufferNode.js
  42. 4 4
      src/nodes/accessors/StorageTextureNode.js
  43. 4 4
      src/nodes/accessors/Texture3DNode.js
  44. 22 22
      src/nodes/accessors/TextureNode.js
  45. 2 2
      src/nodes/accessors/TextureSizeNode.js
  46. 2 2
      src/nodes/accessors/UniformArrayNode.js
  47. 3 3
      src/nodes/accessors/UserDataNode.js
  48. 1 1
      src/nodes/accessors/VelocityNode.js
  49. 2 2
      src/nodes/code/FunctionCallNode.js
  50. 4 4
      src/nodes/code/ScriptableNode.js
  51. 2 2
      src/nodes/code/ScriptableValueNode.js
  52. 4 4
      src/nodes/core/ArrayNode.js
  53. 2 2
      src/nodes/core/AttributeNode.js
  54. 1 1
      src/nodes/core/ConstNode.js
  55. 2 2
      src/nodes/core/InputNode.js
  56. 12 12
      src/nodes/core/Node.js
  57. 2 2
      src/nodes/core/NodeAttribute.js
  58. 38 38
      src/nodes/core/NodeBuilder.js
  59. 3 3
      src/nodes/core/NodeCache.js
  60. 5 5
      src/nodes/core/NodeFrame.js
  61. 2 2
      src/nodes/core/NodeFunctionInput.js
  62. 1 1
      src/nodes/core/NodeUtils.js
  63. 2 2
      src/nodes/core/NodeVar.js
  64. 2 2
      src/nodes/core/ParameterNode.js
  65. 4 4
      src/nodes/core/PropertyNode.js
  66. 4 4
      src/nodes/core/StackNode.js
  67. 1 1
      src/nodes/core/TempNode.js
  68. 2 2
      src/nodes/core/UniformNode.js
  69. 6 6
      src/nodes/core/VarNode.js
  70. 3 3
      src/nodes/core/VaryingNode.js
  71. 3 3
      src/nodes/display/BumpMapNode.js
  72. 1 1
      src/nodes/display/ColorAdjustment.js
  73. 3 3
      src/nodes/display/NormalMapNode.js
  74. 1 1
      src/nodes/display/PassNode.js
  75. 4 4
      src/nodes/display/RenderOutputNode.js
  76. 1 1
      src/nodes/display/ToneMappingNode.js
  77. 2 2
      src/nodes/display/ViewportDepthNode.js
  78. 2 2
      src/nodes/display/ViewportDepthTextureNode.js
  79. 2 2
      src/nodes/display/ViewportSharedTextureNode.js
  80. 6 6
      src/nodes/display/ViewportTextureNode.js
  81. 7 7
      src/nodes/functions/PhysicalLightingModel.js
  82. 13 13
      src/nodes/gpgpu/AtomicFunctionNode.js
  83. 2 2
      src/nodes/lighting/AONode.js
  84. 1 1
      src/nodes/lighting/AmbientLightNode.js
  85. 5 5
      src/nodes/lighting/AnalyticLightNode.js
  86. 2 2
      src/nodes/lighting/BasicLightMapNode.js
  87. 1 1
      src/nodes/lighting/DirectionalLightNode.js
  88. 1 1
      src/nodes/lighting/EnvironmentNode.js
  89. 1 1
      src/nodes/lighting/HemisphereLightNode.js
  90. 1 1
      src/nodes/lighting/LightProbeNode.js
  91. 6 6
      src/nodes/lighting/LightingContextNode.js
  92. 2 2
      src/nodes/lighting/LightsNode.js
  93. 1 1
      src/nodes/lighting/PointLightNode.js
  94. 2 2
      src/nodes/lighting/PointShadowNode.js
  95. 1 1
      src/nodes/lighting/RectAreaLightNode.js
  96. 8 8
      src/nodes/lighting/ShadowNode.js
  97. 1 1
      src/nodes/lighting/SpotLightNode.js
  98. 3 3
      src/nodes/math/ConditionalNode.js
  99. 5 5
      src/nodes/math/MathNode.js
  100. 1 1
      src/nodes/utils/Discard.js

+ 4 - 4
examples/jsm/controls/ArcballControls.js

@@ -79,8 +79,8 @@ class ArcballControls extends Controls {
 	/**
 	 *
 	 * @param {Camera} camera Virtual camera used in the scene
-	 * @param {HTMLElement?} [domElement=null] Renderer's dom element
-	 * @param {Scene?} [scene=null] The scene to be rendered
+	 * @param {?HTMLElement} [domElement=null] Renderer's dom element
+	 * @param {?Scene} [scene=null] The scene to be rendered
 	 */
 	constructor( camera, domElement = null, scene = null ) {
 
@@ -1250,7 +1250,7 @@ class ArcballControls extends Controls {
 	 * Get the operation associated to mouse and key combination and returns the corresponding FSA state
 	 * @param {0|1|2} mouse Mouse button index (0, 1, 2)
 	 * @param {'CTRL'|'SHIFT'|null} key Keyboard modifier
-	 * @returns {STATE?} The FSA state obtained from the operation associated to mouse/keyboard combination
+	 * @returns {?STATE} The FSA state obtained from the operation associated to mouse/keyboard combination
 	 */
 	getOpStateFromAction( mouse, key ) {
 
@@ -2328,7 +2328,7 @@ class ArcballControls extends Controls {
 	 *
 	 * @param {Vector2} cursor Cursor coordinates in NDC
 	 * @param {Camera} camera Virtual camera
-	 * @returns {Vector3?} The point of intersection with the model, if exist, null otherwise
+	 * @returns {?Vector3} The point of intersection with the model, if exist, null otherwise
 	 */
 	unprojectOnObj( cursor, camera ) {
 

+ 10 - 10
examples/jsm/exporters/GLTFExporter.js

@@ -987,11 +987,11 @@ class GLTFWriter {
 
 	/**
 	 * Process and generate a BufferView
-	 * @param  {BufferAttribute} attribute
-	 * @param  {number} componentType
-	 * @param  {number} start
-	 * @param  {number} count
-	 * @param  {number?} target Target usage of the BufferView
+	 * @param {BufferAttribute} attribute
+	 * @param {number} componentType
+	 * @param {number} start
+	 * @param {number} count
+	 * @param {?number} target Target usage of the BufferView
 	 * @return {Object}
 	 */
 	processBufferView( attribute, componentType, start, count, target ) {
@@ -1179,11 +1179,11 @@ class GLTFWriter {
 
 	/**
 	 * Process attribute to generate an accessor
-	 * @param  {BufferAttribute} attribute Attribute to process
-	 * @param  {THREE.BufferGeometry?} geometry Geometry used for truncated draw range
-	 * @param  {number} [start=0]
-	 * @param  {number} [count=Infinity]
-	 * @return {number?} Index of the processed accessor on the "accessors" array
+	 * @param {BufferAttribute} attribute Attribute to process
+	 * @param {?BufferGeometry} geometry Geometry used for truncated draw range
+	 * @param {number} [start=0]
+	 * @param {number} [count=Infinity]
+	 * @return {?number} Index of the processed accessor on the "accessors" array
 	 */
 	processAccessor( attribute, geometry, start, count ) {
 

+ 1 - 1
examples/jsm/loaders/KTX2Loader.js

@@ -324,7 +324,7 @@ class KTX2Loader extends Loader {
 
 	/**
 	 * @param {ArrayBuffer} buffer
-	 * @param {object?} config
+	 * @param {?Object} config
 	 * @return {Promise<CompressedTexture|CompressedArrayTexture|DataTexture|Data3DTexture>}
 	 */
 	async _createTexture( buffer, config = {} ) {

+ 1 - 1
examples/jsm/math/OBB.js

@@ -322,7 +322,7 @@ class OBB {
 	*
 	* @param {Ray} ray
 	* @param {Vector3} result
-	* @return {Vector3?}
+	* @return {?Vector3}
 	*/
 	intersectRay( ray, result ) {
 

+ 2 - 2
examples/jsm/tsl/display/BloomNode.js

@@ -154,7 +154,7 @@ class BloomNode extends TempNode {
 		 * The material for the composite pass.
 		 *
 		 * @private
-		 * @type {NodeMaterial?}
+		 * @type {?NodeMaterial}
 		 */
 		this._compositeMaterial = null;
 
@@ -162,7 +162,7 @@ class BloomNode extends TempNode {
 		 * The material for the luminance pass.
 		 *
 		 * @private
-		 * @type {NodeMaterial?}
+		 * @type {?NodeMaterial}
 		 */
 		this._highPassFilterMaterial = null;
 

+ 3 - 3
examples/jsm/tsl/display/DenoiseNode.js

@@ -25,7 +25,7 @@ class DenoiseNode extends TempNode {
 	 *
 	 * @param {TextureNode} textureNode - The texture node that represents the input of the effect (e.g. AO).
 	 * @param {Node<float>} depthNode - A node that represents the scene's depth.
-	 * @param {Node<vec3>?} normalNode - A node that represents the scene's normals.
+	 * @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
 	 * @param {Camera} camera - The camera the scene is rendered with.
 	 */
 	constructor( textureNode, depthNode, normalNode, camera ) {
@@ -51,7 +51,7 @@ class DenoiseNode extends TempNode {
 		 * constructor (because MRT is not available), normals can be automatically
 		 * reconstructed from depth values in the shader.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 */
 		this.normalNode = normalNode;
 
@@ -325,7 +325,7 @@ function generateDefaultNoise( size = 64 ) {
  * @function
  * @param {Node} node - The node that represents the input of the effect (e.g. AO).
  * @param {Node<float>} depthNode - A node that represents the scene's depth.
- * @param {Node<vec3>?} normalNode - A node that represents the scene's normals.
+ * @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
  * @param {Camera} camera - The camera the scene is rendered with.
  * @returns {DenoiseNode}
  */

+ 8 - 6
examples/jsm/tsl/display/FilmNode.js

@@ -18,8 +18,8 @@ class FilmNode extends TempNode {
 	 * Constructs a new film node.
 	 *
 	 * @param {Node} inputNode - The node that represents the input of the effect.
-	 * @param {Node<float>?} [intensityNode=null] - A node that represents the effect's intensity.
-	 * @param {Node<vec2>?} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
+	 * @param {?Node<float>} [intensityNode=null] - A node that represents the effect's intensity.
+	 * @param {?Node<vec2>} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
 	 */
 	constructor( inputNode, intensityNode = null, uvNode = null ) {
 
@@ -35,14 +35,16 @@ class FilmNode extends TempNode {
 		/**
 		 * A node that represents the effect's intensity.
 		 *
-		 * @type {Node<float>}
+		 * @type {?Node<float>}
+		 * @default null
 		 */
 		this.intensityNode = intensityNode;
 
 		/**
 		 * A node that allows to pass custom (e.g. animated) uv data.
 		 *
-		 * @type {Node<vec2>}
+		 * @type {?Node<vec2>}
+		 * @default null
 		 */
 		this.uvNode = uvNode;
 
@@ -91,8 +93,8 @@ export default FilmNode;
  * @tsl
  * @function
  * @param {Node<vec4>} inputNode - The node that represents the input of the effect.
- * @param {Node<float>?} [intensityNode=null] - A node that represents the effect's intensity.
- * @param {Node<vec2>?} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
+ * @param {?Node<float>} [intensityNode=null] - A node that represents the effect's intensity.
+ * @param {?Node<vec2>} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
  * @returns {FilmNode}
  */
 export const film = /*@__PURE__*/ nodeProxy( FilmNode );

+ 3 - 3
examples/jsm/tsl/display/GTAONode.js

@@ -42,7 +42,7 @@ class GTAONode extends TempNode {
 	 * Constructs a new GTAO node.
 	 *
 	 * @param {Node<float>} depthNode - A node that represents the scene's depth.
-	 * @param {Node<vec3>?} normalNode - A node that represents the scene's normals.
+	 * @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
 	 * @param {Camera} camera - The camera the scene is rendered with.
 	 */
 	constructor( depthNode, normalNode, camera ) {
@@ -61,7 +61,7 @@ class GTAONode extends TempNode {
 		 * constructor (because MRT is not available), normals can be automatically
 		 * reconstructed from depth values in the shader.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 */
 		this.normalNode = normalNode;
 
@@ -514,7 +514,7 @@ function generateMagicSquare( size ) {
  * @tsl
  * @function
  * @param {Node<float>} depthNode - A node that represents the scene's depth.
- * @param {Node<vec3>?} normalNode - A node that represents the scene's normals.
+ * @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
  * @param {Camera} camera - The camera the scene is rendered with.
  * @returns {GTAONode}
  */

+ 2 - 1
examples/jsm/tsl/display/SSAAPassNode.js

@@ -88,7 +88,8 @@ class SSAAPassNode extends PassNode {
 		 * Reference to the internal render target that holds the current sample.
 		 *
 		 * @private
-		 * @type {RenderTarget?}
+		 * @type {?RenderTarget}
+		 * @default null
 		 */
 		this._sampleRenderTarget = null;
 

+ 4 - 2
examples/jsm/tsl/display/TRAAPassNode.js

@@ -90,7 +90,8 @@ class TRAAPassNode extends PassNode {
 		 * The render target that holds the current sample.
 		 *
 		 * @private
-		 * @type {RenderTarget?}
+		 * @type {?RenderTarget}
+		 * @default null
 		 */
 		this._sampleRenderTarget = null;
 
@@ -98,7 +99,8 @@ class TRAAPassNode extends PassNode {
 		 * The render target that represents the history of frame data.
 		 *
 		 * @private
-		 * @type {RenderTarget?}
+		 * @type {?RenderTarget}
+		 * @default null
 		 */
 		this._historyRenderTarget = null;
 

+ 1 - 1
src/loaders/nodes/NodeLoader.js

@@ -13,7 +13,7 @@ class NodeLoader extends Loader {
 	/**
 	 * Constructs a new node loader.
 	 *
-	 * @param {LoadingManager?} manager - A reference to a loading manager.
+	 * @param {?LoadingManager} manager - A reference to a loading manager.
 	 */
 	constructor( manager ) {
 

+ 1 - 1
src/loaders/nodes/NodeMaterialLoader.js

@@ -10,7 +10,7 @@ class NodeMaterialLoader extends MaterialLoader {
 	/**
 	 * Constructs a new node material loader.
 	 *
-	 * @param {LoadingManager?} manager - A reference to a loading manager.
+	 * @param {?LoadingManager} manager - A reference to a loading manager.
 	 */
 	constructor( manager ) {
 

+ 2 - 2
src/loaders/nodes/NodeObjectLoader.js

@@ -14,7 +14,7 @@ class NodeObjectLoader extends ObjectLoader {
 	/**
 	 * Constructs a new node object loader.
 	 *
-	 * @param {LoadingManager?} manager - A reference to a loading manager.
+	 * @param {?LoadingManager} manager - A reference to a loading manager.
 	 */
 	constructor( manager ) {
 
@@ -38,7 +38,7 @@ class NodeObjectLoader extends ObjectLoader {
 		 * A reference to hold the `nodes` JSON property.
 		 *
 		 * @private
-		 * @type {Object?}
+		 * @type {?Object}
 		 */
 		this._nodesJSON = null;
 

+ 6 - 6
src/materials/nodes/Line2NodeMaterial.js

@@ -33,7 +33,7 @@ class Line2NodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new node material for wide line rendering.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters = {} ) {
 
@@ -77,7 +77,7 @@ class Line2NodeMaterial extends NodeMaterial {
 		/**
 		 * Defines the lines color.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.lineColorNode = null;
@@ -85,7 +85,7 @@ class Line2NodeMaterial extends NodeMaterial {
 		/**
 		 * Defines the offset.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.offsetNode = null;
@@ -93,7 +93,7 @@ class Line2NodeMaterial extends NodeMaterial {
 		/**
 		 * Defines the dash scale.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.dashScaleNode = null;
@@ -101,7 +101,7 @@ class Line2NodeMaterial extends NodeMaterial {
 		/**
 		 * Defines the dash size.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.dashSizeNode = null;
@@ -109,7 +109,7 @@ class Line2NodeMaterial extends NodeMaterial {
 		/**
 		 * Defines the gap size.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.gapSizeNode = null;

+ 1 - 1
src/materials/nodes/LineBasicNodeMaterial.js

@@ -20,7 +20,7 @@ class LineBasicNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new line basic node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 

+ 5 - 5
src/materials/nodes/LineDashedNodeMaterial.js

@@ -24,7 +24,7 @@ class LineDashedNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new line dashed node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 
@@ -57,7 +57,7 @@ class LineDashedNodeMaterial extends NodeMaterial {
 		 * If you don't want to overwrite the offset but modify the existing
 		 * value instead, use {@link materialLineDashOffset}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.offsetNode = null;
@@ -70,7 +70,7 @@ class LineDashedNodeMaterial extends NodeMaterial {
 		 * If you don't want to overwrite the scale but modify the existing
 		 * value instead, use {@link materialLineScale}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.dashScaleNode = null;
@@ -83,7 +83,7 @@ class LineDashedNodeMaterial extends NodeMaterial {
 		 * If you don't want to overwrite the dash size but modify the existing
 		 * value instead, use {@link materialLineDashSize}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.dashSizeNode = null;
@@ -96,7 +96,7 @@ class LineDashedNodeMaterial extends NodeMaterial {
 		 * If you don't want to overwrite the gap size but modify the existing
 		 * value instead, use {@link materialLineGapSize}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.gapSizeNode = null;

+ 3 - 3
src/materials/nodes/MeshBasicNodeMaterial.js

@@ -26,7 +26,7 @@ class MeshBasicNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new mesh basic node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 
@@ -74,7 +74,7 @@ class MeshBasicNodeMaterial extends NodeMaterial {
 	 * to implement the default environment mapping.
 	 *
 	 * @param {NodeBuilder} builder - The current node builder.
-	 * @return {BasicEnvironmentNode<vec3>?} The environment node.
+	 * @return {?BasicEnvironmentNode<vec3>} The environment node.
 	 */
 	setupEnvironment( builder ) {
 
@@ -89,7 +89,7 @@ class MeshBasicNodeMaterial extends NodeMaterial {
 	 * with a special scaling factor for basic materials.
 	 *
 	 * @param {NodeBuilder} builder - The current node builder.
-	 * @return {BasicLightMapNode<vec3>?} The light map node.
+	 * @return {?BasicLightMapNode<vec3>} The light map node.
 	 */
 	setupLightMap( builder ) {
 

+ 2 - 2
src/materials/nodes/MeshLambertNodeMaterial.js

@@ -22,7 +22,7 @@ class MeshLambertNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new mesh lambert node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 
@@ -56,7 +56,7 @@ class MeshLambertNodeMaterial extends NodeMaterial {
 	 * to implement the default environment mapping.
 	 *
 	 * @param {NodeBuilder} builder - The current node builder.
-	 * @return {BasicEnvironmentNode<vec3>?} The environment node.
+	 * @return {?BasicEnvironmentNode<vec3>} The environment node.
 	 */
 	setupEnvironment( builder ) {
 

+ 1 - 1
src/materials/nodes/MeshMatcapNodeMaterial.js

@@ -25,7 +25,7 @@ class MeshMatcapNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new mesh normal node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 

+ 1 - 1
src/materials/nodes/MeshNormalNodeMaterial.js

@@ -25,7 +25,7 @@ class MeshNormalNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new mesh normal node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 

+ 4 - 4
src/materials/nodes/MeshPhongNodeMaterial.js

@@ -25,7 +25,7 @@ class MeshPhongNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new mesh lambert node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 
@@ -56,7 +56,7 @@ class MeshPhongNodeMaterial extends NodeMaterial {
 		 * If you don't want to overwrite the shininess but modify the existing
 		 * value instead, use {@link materialShininess}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.shininessNode = null;
@@ -69,7 +69,7 @@ class MeshPhongNodeMaterial extends NodeMaterial {
 		 * If you don't want to overwrite the specular color but modify the existing
 		 * value instead, use {@link materialSpecular}.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.specularNode = null;
@@ -85,7 +85,7 @@ class MeshPhongNodeMaterial extends NodeMaterial {
 	 * to implement the default environment mapping.
 	 *
 	 * @param {NodeBuilder} builder - The current node builder.
-	 * @return {BasicEnvironmentNode<vec3>?} The environment node.
+	 * @return {?BasicEnvironmentNode<vec3>} The environment node.
 	 */
 	setupEnvironment( builder ) {
 

+ 18 - 18
src/materials/nodes/MeshPhysicalNodeMaterial.js

@@ -27,7 +27,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 	/**
 	 * Constructs a new mesh physical node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 
@@ -50,7 +50,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the clearcoat but modify the existing
 		 * value instead, use {@link materialClearcoat}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.clearcoatNode = null;
@@ -63,7 +63,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the clearcoat roughness but modify the existing
 		 * value instead, use {@link materialClearcoatRoughness}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.clearcoatRoughnessNode = null;
@@ -76,7 +76,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the clearcoat normal but modify the existing
 		 * value instead, use {@link materialClearcoatNormal}.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.clearcoatNormalNode = null;
@@ -89,7 +89,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the sheen but modify the existing
 		 * value instead, use {@link materialSheen}.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.sheenNode = null;
@@ -102,7 +102,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the sheen roughness but modify the existing
 		 * value instead, use {@link materialSheenRoughness}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.sheenRoughnessNode = null;
@@ -115,7 +115,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the iridescence but modify the existing
 		 * value instead, use {@link materialIridescence}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.iridescenceNode = null;
@@ -128,7 +128,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the iridescence IOR but modify the existing
 		 * value instead, use {@link materialIridescenceIOR}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.iridescenceIORNode = null;
@@ -141,7 +141,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the iridescence thickness but modify the existing
 		 * value instead, use {@link materialIridescenceThickness}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.iridescenceThicknessNode = null;
@@ -154,7 +154,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the specular intensity but modify the existing
 		 * value instead, use {@link materialSpecularIntensity}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.specularIntensityNode = null;
@@ -167,7 +167,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the specular color but modify the existing
 		 * value instead, use {@link materialSpecularColor}.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.specularColorNode = null;
@@ -180,7 +180,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the ior but modify the existing
 		 * value instead, use {@link materialIOR}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.iorNode = null;
@@ -193,7 +193,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the transmission but modify the existing
 		 * value instead, use {@link materialTransmission}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.transmissionNode = null;
@@ -206,7 +206,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the thickness but modify the existing
 		 * value instead, use {@link materialThickness}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.thicknessNode = null;
@@ -219,7 +219,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the attenuation distance but modify the existing
 		 * value instead, use {@link materialAttenuationDistance}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.attenuationDistanceNode = null;
@@ -232,7 +232,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the attenuation color but modify the existing
 		 * value instead, use {@link materialAttenuationColor}.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.attenuationColorNode = null;
@@ -245,7 +245,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the dispersion but modify the existing
 		 * value instead, use {@link materialDispersion}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.dispersionNode = null;
@@ -258,7 +258,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
 		 * If you don't want to overwrite the anisotropy but modify the existing
 		 * value instead, use {@link materialAnisotropy}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.anisotropyNode = null;

+ 7 - 7
src/materials/nodes/MeshSSSNodeMaterial.js

@@ -84,7 +84,7 @@ class MeshSSSNodeMaterial extends MeshPhysicalNodeMaterial {
 	/**
 	 * Constructs a new mesh SSS node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 
@@ -93,7 +93,7 @@ class MeshSSSNodeMaterial extends MeshPhysicalNodeMaterial {
 		/**
 		 * Represents the thickness color.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.thicknessColorNode = null;
@@ -101,35 +101,35 @@ class MeshSSSNodeMaterial extends MeshPhysicalNodeMaterial {
 		/**
 		 * Represents the distortion factor.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 */
 		this.thicknessDistortionNode = float( 0.1 );
 
 		/**
 		 * Represents the thickness ambient factor.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 */
 		this.thicknessAmbientNode = float( 0.0 );
 
 		/**
 		 * Represents the thickness attenuation.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 */
 		this.thicknessAttenuationNode = float( .1 );
 
 		/**
 		 * Represents the thickness power.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 */
 		this.thicknessPowerNode = float( 2.0 );
 
 		/**
 		 * Represents the thickness scale.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 */
 		this.thicknessScaleNode = float( 10.0 );
 

+ 5 - 5
src/materials/nodes/MeshStandardNodeMaterial.js

@@ -27,7 +27,7 @@ class MeshStandardNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new mesh standard node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 
@@ -58,7 +58,7 @@ class MeshStandardNodeMaterial extends NodeMaterial {
 		 * If you don't want to overwrite the emissive color but modify the existing
 		 * value instead, use {@link materialEmissive}.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.emissiveNode = null;
@@ -71,7 +71,7 @@ class MeshStandardNodeMaterial extends NodeMaterial {
 		 * If you don't want to overwrite the metalness but modify the existing
 		 * value instead, use {@link materialMetalness}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.metalnessNode = null;
@@ -84,7 +84,7 @@ class MeshStandardNodeMaterial extends NodeMaterial {
 		 * If you don't want to overwrite the roughness but modify the existing
 		 * value instead, use {@link materialRoughness}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.roughnessNode = null;
@@ -101,7 +101,7 @@ class MeshStandardNodeMaterial extends NodeMaterial {
 	 * method honors `Scene.environment`.
 	 *
 	 * @param {NodeBuilder} builder - The current node builder.
-	 * @return {EnvironmentNode<vec3>?} The environment node.
+	 * @return {?EnvironmentNode<vec3>} The environment node.
 	 */
 	setupEnvironment( builder ) {
 

+ 1 - 1
src/materials/nodes/MeshToonNodeMaterial.js

@@ -21,7 +21,7 @@ class MeshToonNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new mesh toon node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 

+ 19 - 19
src/materials/nodes/NodeMaterial.js

@@ -106,7 +106,7 @@ class NodeMaterial extends Material {
 		 * material.lightsNode = customLightsNode;
 		 * ```
 		 *
-		 * @type {LightsNode?}
+		 * @type {?LightsNode}
 		 * @default null
 		 */
 		this.lightsNode = null;
@@ -121,7 +121,7 @@ class NodeMaterial extends Material {
 		 * material.envNode = pmremTexture( renderTarget.texture );
 		 * ```
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.envNode = null;
@@ -135,7 +135,7 @@ class NodeMaterial extends Material {
 		 * If you don't want to overwrite the diffuse color but modify the existing
 		 * values instead, use {@link materialAO}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.aoNode = null;
@@ -156,7 +156,7 @@ class NodeMaterial extends Material {
 		 * material.colorNode = materialColor.mul( color( 0xff0000 ) ); // give diffuse colors a red tint
 		 * ```
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.colorNode = null;
@@ -169,7 +169,7 @@ class NodeMaterial extends Material {
 		 * If you don't want to overwrite the normals but modify the existing values instead,
 		 * use {@link materialNormal}.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.normalNode = null;
@@ -182,7 +182,7 @@ class NodeMaterial extends Material {
 		 * If you don't want to overwrite the normals but modify the existing
 		 * value instead, use {@link materialOpacity}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.opacityNode = null;
@@ -203,7 +203,7 @@ class NodeMaterial extends Material {
 		 *
 		 * Backdrop computations are part of the lighting so only lit materials can use this property.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.backdropNode = null;
@@ -211,7 +211,7 @@ class NodeMaterial extends Material {
 		/**
 		 * This node allows to modulate the influence of `backdropNode` to the outgoing light.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.backdropAlphaNode = null;
@@ -224,7 +224,7 @@ class NodeMaterial extends Material {
 		 * If you don't want to overwrite the alpha test but modify the existing
 		 * value instead, use {@link materialAlphaTest}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.alphaTestNode = null;
@@ -241,7 +241,7 @@ class NodeMaterial extends Material {
 		 * material.positionNode = positionLocal.add( displace );
 		 * ```
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.positionNode = null;
@@ -265,7 +265,7 @@ class NodeMaterial extends Material {
 		/**
 		 * Allows to overwrite depth values in the fragment shader.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.depthNode = null;
@@ -275,7 +275,7 @@ class NodeMaterial extends Material {
 		 * is by default {@link positionWorld}, the vertex position
 		 * in world space.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.shadowPositionNode = null;
@@ -292,7 +292,7 @@ class NodeMaterial extends Material {
 		 * 	return shadow.mix( color( 0xff0000 ), 1 ); // modify shadow color
 		 * } );
 		 *
-		 * @type {Node<vec4>?}
+		 * @type {?Node<vec4>}
 		 * @default null
 		 */
 		this.receivedShadowNode = null;
@@ -316,7 +316,7 @@ class NodeMaterial extends Material {
 		 * } )();
 		 *  ```
 		 *
-		 * @type {Node<vec4>?}
+		 * @type {?Node<vec4>}
 		 * @default null
 		 */
 		this.castShadowNode = null;
@@ -326,7 +326,7 @@ class NodeMaterial extends Material {
 		 *
 		 * TODO: Explain the differences to `fragmentNode`.
 		 *
-		 * @type {Node<vec4>?}
+		 * @type {?Node<vec4>}
 		 * @default null
 		 */
 		this.outputNode = null;
@@ -337,7 +337,7 @@ class NodeMaterial extends Material {
 		 * can be useful for implementing selective FX features that should only affect
 		 * specific objects.
 		 *
-		 * @type {MRTNode?}
+		 * @type {?MRTNode}
 		 * @default null
 		 */
 		this.mrtNode = null;
@@ -347,7 +347,7 @@ class NodeMaterial extends Material {
 		 * the fragment shader. Assigning a node will replace the built-in material
 		 * logic used in the fragment stage.
 		 *
-		 * @type {Node<vec4>?}
+		 * @type {?Node<vec4>}
 		 * @default null
 		 */
 		this.fragmentNode = null;
@@ -357,7 +357,7 @@ class NodeMaterial extends Material {
 		 * the vertex shader. Assigning a node will replace the built-in material logic
 		 * used in the vertex stage.
 		 *
-		 * @type {Node<vec4>?}
+		 * @type {?Node<vec4>}
 		 * @default null
 		 */
 		this.vertexNode = null;
@@ -1062,7 +1062,7 @@ class NodeMaterial extends Material {
 	/**
 	 * Serializes this material to JSON.
 	 *
-	 * @param {(Object|string)?} meta - The meta information for serialization.
+	 * @param {?(Object|string)} meta - The meta information for serialization.
 	 * @return {Object} The serialized node.
 	 */
 	toJSON( meta ) {

+ 2 - 2
src/materials/nodes/PointsNodeMaterial.js

@@ -26,7 +26,7 @@ class PointsNodeMaterial extends SpriteNodeMaterial {
 	/**
 	 * Constructs a new points node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 
@@ -35,7 +35,7 @@ class PointsNodeMaterial extends SpriteNodeMaterial {
 		/**
 		 * This node property provides an additional way to set the point size.
 		 *
-		 * @type {Node<vec2>?}
+		 * @type {?Node<vec2>}
 		 * @default null
 		 */
 		this.sizeNode = null;

+ 1 - 1
src/materials/nodes/ShadowNodeMaterial.js

@@ -21,7 +21,7 @@ class ShadowNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new shadow node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 

+ 4 - 4
src/materials/nodes/SpriteNodeMaterial.js

@@ -27,7 +27,7 @@ class SpriteNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new sprite node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 
@@ -58,7 +58,7 @@ class SpriteNodeMaterial extends NodeMaterial {
 		 * particleMaterial.positionNode = positionBuffer.toAttribute();
 		 * ```
 		 *
-		 * @type {Node<vec2>?}
+		 * @type {?Node<vec2>}
 		 * @default null
 		 */
 		this.positionNode = null;
@@ -71,7 +71,7 @@ class SpriteNodeMaterial extends NodeMaterial {
 		 * If you don't want to overwrite the rotation but modify the existing
 		 * value instead, use {@link materialRotation}.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.rotationNode = null;
@@ -81,7 +81,7 @@ class SpriteNodeMaterial extends NodeMaterial {
 		 * `Object3D.scale`. The scale transformation based in `Object3D.scale`
 		 * is multiplied with the scale value of this node in the vertex shader.
 		 *
-		 * @type {Node<vec2>?}
+		 * @type {?Node<vec2>}
 		 * @default null
 		 */
 		this.scaleNode = null;

+ 3 - 3
src/materials/nodes/VolumeNodeMaterial.js

@@ -27,7 +27,7 @@ class VolumeNodeMaterial extends NodeMaterial {
 	/**
 	 * Constructs a new volume node material.
 	 *
-	 * @param {Object?} parameters - The configuration parameter.
+	 * @param {?Object} parameters - The configuration parameter.
 	 */
 	constructor( parameters ) {
 
@@ -53,7 +53,7 @@ class VolumeNodeMaterial extends NodeMaterial {
 		/**
 		 * A 3D data texture holding the volumetric data.
 		 *
-		 * @type {Data3DTexture?}
+		 * @type {?Data3DTexture}
 		 * @default null
 		 */
 		this.map = null;
@@ -89,7 +89,7 @@ class VolumeNodeMaterial extends NodeMaterial {
 		 * where the rays enters the volume. The last parameter is a color
 		 * that allows the callback to determine the final color.
 		 *
-		 * @type {testNodeCallback?}
+		 * @type {?testNodeCallback}
 		 * @default null
 		 */
 		this.testNode = null;

+ 1 - 1
src/nodes/accessors/BatchNode.js

@@ -42,7 +42,7 @@ class BatchNode extends Node {
 		/**
 		 * The batching index node.
 		 *
-		 * @type {IndexNode?}
+		 * @type {?IndexNode}
 		 * @default null
 		 */
 		this.batchingIdNode = null;

+ 6 - 6
src/nodes/accessors/BufferAttributeNode.js

@@ -40,7 +40,7 @@ class BufferAttributeNode extends InputNode {
 	 * Constructs a new buffer attribute node.
 	 *
 	 * @param {BufferAttribute|InterleavedBuffer|TypedArray} value - The attribute data.
-	 * @param {string?} [bufferType=null] - The buffer type (e.g. `'vec3'`).
+	 * @param {?string} [bufferType=null] - The buffer type (e.g. `'vec3'`).
 	 * @param {number} [bufferStride=0] - The buffer stride.
 	 * @param {number} [bufferOffset=0] - The buffer offset.
 	 */
@@ -101,7 +101,7 @@ class BufferAttributeNode extends InputNode {
 		/**
 		 * A reference to the buffer attribute.
 		 *
-		 * @type {BufferAttribute?}
+		 * @type {?BufferAttribute}
 		 * @default null
 		 */
 		this.attribute = null;
@@ -290,7 +290,7 @@ export default BufferAttributeNode;
  * @tsl
  * @function
  * @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
- * @param {string?} [type=null] - The buffer type (e.g. `'vec3'`).
+ * @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
  * @param {number} [stride=0] - The buffer stride.
  * @param {number} [offset=0] - The buffer offset.
  * @returns {BufferAttributeNode}
@@ -304,7 +304,7 @@ export const bufferAttribute = ( array, type = null, stride = 0, offset = 0 ) =>
  * @tsl
  * @function
  * @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
- * @param {string?} [type=null] - The buffer type (e.g. `'vec3'`).
+ * @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
  * @param {number} [stride=0] - The buffer stride.
  * @param {number} [offset=0] - The buffer offset.
  * @returns {BufferAttributeNode}
@@ -317,7 +317,7 @@ export const dynamicBufferAttribute = ( array, type = null, stride = 0, offset =
  * @tsl
  * @function
  * @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
- * @param {string?} [type=null] - The buffer type (e.g. `'vec3'`).
+ * @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
  * @param {number} [stride=0] - The buffer stride.
  * @param {number} [offset=0] - The buffer offset.
  * @returns {BufferAttributeNode}
@@ -330,7 +330,7 @@ export const instancedBufferAttribute = ( array, type = null, stride = 0, offset
  * @tsl
  * @function
  * @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
- * @param {string?} [type=null] - The buffer type (e.g. `'vec3'`).
+ * @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
  * @param {number} [stride=0] - The buffer stride.
  * @param {number} [offset=0] - The buffer offset.
  * @returns {BufferAttributeNode}

+ 6 - 6
src/nodes/accessors/CubeTextureNode.js

@@ -21,9 +21,9 @@ class CubeTextureNode extends TextureNode {
 	 * Constructs a new cube texture node.
 	 *
 	 * @param {CubeTexture} value - The cube texture.
-	 * @param {Node<vec3>?} [uvNode=null] - The uv node.
-	 * @param {Node<int>?} [levelNode=null] - The level node.
-	 * @param {Node<float>?} [biasNode=null] - The bias node.
+	 * @param {?Node<vec3>} [uvNode=null] - The uv node.
+	 * @param {?Node<int>} [levelNode=null] - The level node.
+	 * @param {?Node<float>} [biasNode=null] - The bias node.
 	 */
 	constructor( value, uvNode = null, levelNode = null, biasNode = null ) {
 
@@ -134,9 +134,9 @@ export default CubeTextureNode;
  * @tsl
  * @function
  * @param {CubeTexture} value - The cube texture.
- * @param {Node<vec3>?} [uvNode=null] - The uv node.
- * @param {Node<int>?} [levelNode=null] - The level node.
- * @param {Node<float>?} [biasNode=null] - The bias node.
+ * @param {?Node<vec3>} [uvNode=null] - The uv node.
+ * @param {?Node<int>} [levelNode=null] - The level node.
+ * @param {?Node<float>} [biasNode=null] - The bias node.
  * @returns {CubeTextureNode}
  */
 export const cubeTexture = /*@__PURE__*/ nodeProxy( CubeTextureNode );

+ 3 - 3
src/nodes/accessors/MaterialReferenceNode.js

@@ -25,7 +25,7 @@ class MaterialReferenceNode extends ReferenceNode {
 	 *
 	 * @param {string} property - The name of the property the node refers to.
 	 * @param {string} inputType - The uniform type that should be used to represent the property value.
-	 * @param {Material?} [material=null] - The material the property belongs to. When no material is set,
+	 * @param {?Material} [material=null] - The material the property belongs to. When no material is set,
 	 * the node refers to the material of the current rendered object.
 	 */
 	constructor( property, inputType, material = null ) {
@@ -36,7 +36,7 @@ class MaterialReferenceNode extends ReferenceNode {
 		 * The material the property belongs to. When no material is set,
 		 * the node refers to the material of the current rendered object.
 		 *
-		 * @type {Material?}
+		 * @type {?Material}
 		 * @default null
 		 */
 		this.material = material;
@@ -78,7 +78,7 @@ export default MaterialReferenceNode;
  * @function
  * @param {string} name - The name of the property the node refers to.
  * @param {string} type - The uniform type that should be used to represent the property value.
- * @param {Material?} [material=null] - The material the property belongs to.
+ * @param {?Material} [material=null] - The material the property belongs to.
  * When no material is set, the node refers to the material of the current rendered object.
  * @returns {MaterialReferenceNode}
  */

+ 7 - 7
src/nodes/accessors/Object3DNode.js

@@ -29,7 +29,7 @@ class Object3DNode extends Node {
 	 * Constructs a new object 3D node.
 	 *
 	 * @param {('position'|'viewPosition'|'direction'|'scale'|'worldMatrix')} scope - The node represents a different type of transformation depending on the scope.
-	 * @param {Object3D?} [object3d=null] - The 3D object.
+	 * @param {?Object3D} [object3d=null] - The 3D object.
 	 */
 	constructor( scope, object3d = null ) {
 
@@ -45,7 +45,7 @@ class Object3DNode extends Node {
 		/**
 		 * The 3D object.
 		 *
-		 * @type {Object3D?}
+		 * @type {?Object3D}
 		 * @default null
 		 */
 		this.object3d = object3d;
@@ -191,7 +191,7 @@ export default Object3DNode;
  *
  * @tsl
  * @function
- * @param {Object3D?} [object3d=null] - The 3D object.
+ * @param {?Object3D} [object3d=null] - The 3D object.
  * @returns {Object3DNode<vec3>}
  */
 export const objectDirection = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.DIRECTION );
@@ -201,7 +201,7 @@ export const objectDirection = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNo
  *
  * @tsl
  * @function
- * @param {Object3D?} [object3d=null] - The 3D object.
+ * @param {?Object3D} [object3d=null] - The 3D object.
  * @returns {Object3DNode<mat4>}
  */
 export const objectWorldMatrix = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.WORLD_MATRIX );
@@ -211,7 +211,7 @@ export const objectWorldMatrix = /*@__PURE__*/ nodeProxy( Object3DNode, Object3D
  *
  * @tsl
  * @function
- * @param {Object3D?} [object3d=null] - The 3D object.
+ * @param {?Object3D} [object3d=null] - The 3D object.
  * @returns {Object3DNode<vec3>}
  */
 export const objectPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.POSITION );
@@ -221,7 +221,7 @@ export const objectPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNod
  *
  * @tsl
  * @function
- * @param {Object3D?} [object3d=null] - The 3D object.
+ * @param {?Object3D} [object3d=null] - The 3D object.
  * @returns {Object3DNode<vec3>}
  */
 export const objectScale = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.SCALE );
@@ -231,7 +231,7 @@ export const objectScale = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.S
  *
  * @tsl
  * @function
- * @param {Object3D?} [object3d=null] - The 3D object.
+ * @param {?Object3D} [object3d=null] - The 3D object.
  * @returns {Object3DNode<vec3>}
  */
 export const objectViewPosition = /*@__PURE__*/ nodeProxy( Object3DNode, Object3DNode.VIEW_POSITION );

+ 7 - 7
src/nodes/accessors/ReferenceBaseNode.js

@@ -24,7 +24,7 @@ class ReferenceElementNode extends ArrayElementNode {
 	/**
 	 * Constructs a new reference element node.
 	 *
-	 * @param {ReferenceBaseNode?} referenceNode - The reference node.
+	 * @param {?ReferenceBaseNode} referenceNode - The reference node.
 	 * @param {Node} indexNode - The index node that defines the element access.
 	 */
 	constructor( referenceNode, indexNode ) {
@@ -35,7 +35,7 @@ class ReferenceElementNode extends ArrayElementNode {
 		 * Similar to {@link ReferenceBaseNode#reference}, an additional
 		 * property references to the current node.
 		 *
-		 * @type {ReferenceBaseNode?}
+		 * @type {?ReferenceBaseNode}
 		 * @default null
 		 */
 		this.referenceNode = referenceNode;
@@ -96,8 +96,8 @@ class ReferenceBaseNode extends Node {
 	 *
 	 * @param {string} property - The name of the property the node refers to.
 	 * @param {string} uniformType - The uniform type that should be used to represent the property value.
-	 * @param {Object?} [object=null] - The object the property belongs to.
-	 * @param {number?} [count=null] - When the linked property is an array-like, this parameter defines its length.
+	 * @param {?Object} [object=null] - The object the property belongs to.
+	 * @param {?number} [count=null] - When the linked property is an array-like, this parameter defines its length.
 	 */
 	constructor( property, uniformType, object = null, count = null ) {
 
@@ -120,7 +120,7 @@ class ReferenceBaseNode extends Node {
 		/**
 		 * The object the property belongs to.
 		 *
-		 * @type {Object?}
+		 * @type {?Object}
 		 * @default null
 		 */
 		this.object = object;
@@ -128,7 +128,7 @@ class ReferenceBaseNode extends Node {
 		/**
 		 * When the linked property is an array, this parameter defines its length.
 		 *
-		 * @type {number?}
+		 * @type {?number}
 		 * @default null
 		 */
 		this.count = count;
@@ -145,7 +145,7 @@ class ReferenceBaseNode extends Node {
 		 * Points to the current referred object. This property exists next to {@link ReferenceNode#object}
 		 * since the final reference might be updated from calling code.
 		 *
-		 * @type {Object?}
+		 * @type {?Object}
 		 * @default null
 		 */
 		this.reference = object;

+ 8 - 8
src/nodes/accessors/ReferenceNode.js

@@ -28,7 +28,7 @@ class ReferenceElementNode extends ArrayElementNode {
 	/**
 	 * Constructs a new reference element node.
 	 *
-	 * @param {ReferenceNode?} referenceNode - The reference node.
+	 * @param {?ReferenceNode} referenceNode - The reference node.
 	 * @param {Node} indexNode - The index node that defines the element access.
 	 */
 	constructor( referenceNode, indexNode ) {
@@ -39,7 +39,7 @@ class ReferenceElementNode extends ArrayElementNode {
 		 * Similar to {@link ReferenceNode#reference}, an additional
 		 * property references to the current node.
 		 *
-		 * @type {ReferenceNode?}
+		 * @type {?ReferenceNode}
 		 * @default null
 		 */
 		this.referenceNode = referenceNode;
@@ -100,8 +100,8 @@ class ReferenceNode extends Node {
 	 *
 	 * @param {string} property - The name of the property the node refers to.
 	 * @param {string} uniformType - The uniform type that should be used to represent the property value.
-	 * @param {Object?} [object=null] - The object the property belongs to.
-	 * @param {number?} [count=null] - When the linked property is an array-like, this parameter defines its length.
+	 * @param {?Object} [object=null] - The object the property belongs to.
+	 * @param {?number} [count=null] - When the linked property is an array-like, this parameter defines its length.
 	 */
 	constructor( property, uniformType, object = null, count = null ) {
 
@@ -124,7 +124,7 @@ class ReferenceNode extends Node {
 		/**
 		 * The object the property belongs to.
 		 *
-		 * @type {Object?}
+		 * @type {?Object}
 		 * @default null
 		 */
 		this.object = object;
@@ -132,7 +132,7 @@ class ReferenceNode extends Node {
 		/**
 		 * When the linked property is an array, this parameter defines its length.
 		 *
-		 * @type {number?}
+		 * @type {?number}
 		 * @default null
 		 */
 		this.count = count;
@@ -149,7 +149,7 @@ class ReferenceNode extends Node {
 		 * Points to the current referred object. This property exists next to {@link ReferenceNode#object}
 		 * since the final reference might be updated from calling code.
 		 *
-		 * @type {Object?}
+		 * @type {?Object}
 		 * @default null
 		 */
 		this.reference = object;
@@ -173,7 +173,7 @@ class ReferenceNode extends Node {
 		/**
 		 * An optional label of the internal uniform node.
 		 *
-		 * @type {string?}
+		 * @type {?string}
 		 * @default null
 		 */
 		this.name = null;

+ 3 - 3
src/nodes/accessors/RendererReferenceNode.js

@@ -26,7 +26,7 @@ class RendererReferenceNode extends ReferenceBaseNode {
 	 *
 	 * @param {string} property - The name of the property the node refers to.
 	 * @param {string} inputType - The uniform type that should be used to represent the property value.
-	 * @param {Renderer?} [renderer=null] - The renderer the property belongs to. When no renderer is set,
+	 * @param {?Renderer} [renderer=null] - The renderer the property belongs to. When no renderer is set,
 	 * the node refers to the renderer of the current state.
 	 */
 	constructor( property, inputType, renderer = null ) {
@@ -37,7 +37,7 @@ class RendererReferenceNode extends ReferenceBaseNode {
 		 * The renderer the property belongs to. When no renderer is set,
 		 * the node refers to the renderer of the current state.
 		 *
-		 * @type {Renderer?}
+		 * @type {?Renderer}
 		 * @default null
 		 */
 		this.renderer = renderer;
@@ -72,7 +72,7 @@ export default RendererReferenceNode;
  * @function
  * @param {string} name - The name of the property the node refers to.
  * @param {string} type - The uniform type that should be used to represent the property value.
- * @param {Renderer?} [renderer=null] - The renderer the property belongs to. When no renderer is set,
+ * @param {?Renderer} [renderer=null] - The renderer the property belongs to. When no renderer is set,
  * the node refers to the renderer of the current state.
  * @returns {RendererReferenceNode}
  */

+ 2 - 2
src/nodes/accessors/SceneNode.js

@@ -31,7 +31,7 @@ class SceneNode extends Node {
 	 * Constructs a new scene node.
 	 *
 	 * @param {('backgroundBlurriness'|'backgroundIntensity'|'backgroundRotation')} scope - The scope defines the type of scene property that is accessed.
-	 * @param {Scene?} [scene=null] - A reference to the scene.
+	 * @param {?Scene} [scene=null] - A reference to the scene.
 	 */
 	constructor( scope = SceneNode.BACKGROUND_BLURRINESS, scene = null ) {
 
@@ -47,7 +47,7 @@ class SceneNode extends Node {
 		/**
 		 * A reference to the scene that is going to be accessed.
 		 *
-		 * @type {Scene?}
+		 * @type {?Scene}
 		 * @default null
 		 */
 		this.scene = scene;

+ 1 - 1
src/nodes/accessors/SkinningNode.js

@@ -116,7 +116,7 @@ class SkinningNode extends Node {
 		 * The previous bind matrices as a uniform buffer node.
 		 * Required for computing motion vectors.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.previousBoneMatricesNode = null;

+ 6 - 6
src/nodes/accessors/StorageBufferNode.js

@@ -48,7 +48,7 @@ class StorageBufferNode extends BufferNode {
 	 * Constructs a new storage buffer node.
 	 *
 	 * @param {StorageBufferAttribute|StorageInstancedBufferAttribute|BufferAttribute} value - The buffer data.
-	 * @param {(string|Struct)?} [bufferType=null] - The buffer type (e.g. `'vec3'`).
+	 * @param {?(string|Struct)} [bufferType=null] - The buffer type (e.g. `'vec3'`).
 	 * @param {number} [bufferCount=0] - The buffer count.
 	 */
 	constructor( value, bufferType = null, bufferCount = 0 ) {
@@ -86,7 +86,7 @@ class StorageBufferNode extends BufferNode {
 		/**
 		 * The buffer struct type.
 		 *
-		 * @type {structTypeNode?}
+		 * @type {?structTypeNode}
 		 * @default null
 		 */
 		this.structTypeNode = structTypeNode;
@@ -119,7 +119,7 @@ class StorageBufferNode extends BufferNode {
 		/**
 		 * A reference to the internal buffer attribute node.
 		 *
-		 * @type {BufferAttributeNode?}
+		 * @type {?BufferAttributeNode}
 		 * @default null
 		 */
 		this._attribute = null;
@@ -127,7 +127,7 @@ class StorageBufferNode extends BufferNode {
 		/**
 		 * A reference to the internal varying node.
 		 *
-		 * @type {VaryingNode?}
+		 * @type {?VaryingNode}
 		 * @default null
 		 */
 		this._varying = null;
@@ -365,7 +365,7 @@ export default StorageBufferNode;
  * @tsl
  * @function
  * @param {StorageBufferAttribute|StorageInstancedBufferAttribute|BufferAttribute} value - The buffer data.
- * @param {(string|Struct)?} [type=null] - The buffer type (e.g. `'vec3'`).
+ * @param {?(string|Struct)} [type=null] - The buffer type (e.g. `'vec3'`).
  * @param {number} [count=0] - The buffer count.
  * @returns {StorageBufferNode}
  */
@@ -377,7 +377,7 @@ export const storage = ( value, type = null, count = 0 ) => nodeObject( new Stor
  * @deprecated since r171. Use `storage().setPBO( true )` instead.
  *
  * @param {StorageBufferAttribute|StorageInstancedBufferAttribute|BufferAttribute} value - The buffer data.
- * @param {string?} type - The buffer type (e.g. `'vec3'`).
+ * @param {?string} type - The buffer type (e.g. `'vec3'`).
  * @param {number} count - The buffer count.
  * @returns {StorageBufferNode}
  */

+ 4 - 4
src/nodes/accessors/StorageTextureNode.js

@@ -46,7 +46,7 @@ class StorageTextureNode extends TextureNode {
 	 *
 	 * @param {StorageTexture} value - The storage texture.
 	 * @param {Node<vec2|vec3>} uvNode - The uv node.
-	 * @param {Node?} [storeNode=null] - The value node that should be stored in the texture.
+	 * @param {?Node} [storeNode=null] - The value node that should be stored in the texture.
 	 */
 	constructor( value, uvNode, storeNode = null ) {
 
@@ -55,7 +55,7 @@ class StorageTextureNode extends TextureNode {
 		/**
 		 * The value node that should be stored in the texture.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.storeNode = storeNode;
@@ -204,7 +204,7 @@ export default StorageTextureNode;
  * @function
  * @param {StorageTexture} value - The storage texture.
  * @param {Node<vec2|vec3>} uvNode - The uv node.
- * @param {Node?} [storeNode=null] - The value node that should be stored in the texture.
+ * @param {?Node} [storeNode=null] - The value node that should be stored in the texture.
  * @returns {StorageTextureNode}
  */
 export const storageTexture = /*@__PURE__*/ nodeProxy( StorageTextureNode );
@@ -217,7 +217,7 @@ export const storageTexture = /*@__PURE__*/ nodeProxy( StorageTextureNode );
  * @function
  * @param {StorageTexture} value - The storage texture.
  * @param {Node<vec2|vec3>} uvNode - The uv node.
- * @param {Node?} [storeNode=null] - The value node that should be stored in the texture.
+ * @param {?Node} [storeNode=null] - The value node that should be stored in the texture.
  * @returns {StorageTextureNode}
  */
 export const textureStore = ( value, uvNode, storeNode ) => {

+ 4 - 4
src/nodes/accessors/Texture3DNode.js

@@ -65,8 +65,8 @@ class Texture3DNode extends TextureNode {
 	 * Constructs a new 3D texture node.
 	 *
 	 * @param {Data3DTexture} value - The 3D texture.
-	 * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
-	 * @param {Node<int>?} [levelNode=null] - The level node.
+	 * @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
+	 * @param {?Node<int>} [levelNode=null] - The level node.
 	 */
 	constructor( value, uvNode = null, levelNode = null ) {
 
@@ -179,8 +179,8 @@ export default Texture3DNode;
  * @tsl
  * @function
  * @param {Data3DTexture} value - The 3D texture.
- * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
- * @param {Node<int>?} [levelNode=null] - The level node.
+ * @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
+ * @param {?Node<int>} [levelNode=null] - The level node.
  * @returns {Texture3DNode}
  */
 export const texture3D = /*@__PURE__*/ nodeProxy( Texture3DNode );

+ 22 - 22
src/nodes/accessors/TextureNode.js

@@ -26,9 +26,9 @@ class TextureNode extends UniformNode {
 	 * Constructs a new texture node.
 	 *
 	 * @param {Texture} value - The texture.
-	 * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
-	 * @param {Node<int>?} [levelNode=null] - The level node.
-	 * @param {Node<float>?} [biasNode=null] - The bias node.
+	 * @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
+	 * @param {?Node<int>} [levelNode=null] - The level node.
+	 * @param {?Node<float>} [biasNode=null] - The bias node.
 	 */
 	constructor( value, uvNode = null, levelNode = null, biasNode = null ) {
 
@@ -46,7 +46,7 @@ class TextureNode extends UniformNode {
 		/**
 		 * Represents the texture coordinates.
 		 *
-		 * @type {Node<vec2|vec3>?}
+		 * @type {?Node<vec2|vec3>}
 		 * @default null
 		 */
 		this.uvNode = uvNode;
@@ -54,7 +54,7 @@ class TextureNode extends UniformNode {
 		/**
 		 * Represents the mip level that should be selected.
 		 *
-		 * @type {Node<int>?}
+		 * @type {?Node<int>}
 		 * @default null
 		 */
 		this.levelNode = levelNode;
@@ -62,7 +62,7 @@ class TextureNode extends UniformNode {
 		/**
 		 * Represents the bias to be applied during level-of-detail computation.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.biasNode = biasNode;
@@ -70,7 +70,7 @@ class TextureNode extends UniformNode {
 		/**
 		 * Represents a reference value a texture sample is compared to.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.compareNode = null;
@@ -78,7 +78,7 @@ class TextureNode extends UniformNode {
 		/**
 		 * When using texture arrays, the depth node defines the layer to select.
 		 *
-		 * @type {Node<int>?}
+		 * @type {?Node<int>}
 		 * @default null
 		 */
 		this.depthNode = null;
@@ -86,7 +86,7 @@ class TextureNode extends UniformNode {
 		/**
 		 * When defined, a texture is sampled using explicit gradients.
 		 *
-		 * @type {Array<Node<vec2>>?}
+		 * @type {?Array<Node<vec2>>}
 		 * @default null
 		 */
 		this.gradNode = null;
@@ -122,7 +122,7 @@ class TextureNode extends UniformNode {
 		/**
 		 * The reference node.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.referenceNode = null;
@@ -139,7 +139,7 @@ class TextureNode extends UniformNode {
 		 * The uniform node that represents the uv transformation matrix.
 		 *
 		 * @private
-		 * @type {UniformNode<mat3>?}
+		 * @type {?UniformNode<mat3>}
 		 */
 		this._matrixUniform = null;
 
@@ -382,11 +382,11 @@ class TextureNode extends UniformNode {
 	 * @param {NodeBuilder} builder - The current node builder.
 	 * @param {string} textureProperty - The texture property.
 	 * @param {string} uvSnippet - The uv snippet.
-	 * @param {string?} levelSnippet - The level snippet.
-	 * @param {string?} biasSnippet - The bias snippet.
-	 * @param {string?} depthSnippet - The depth snippet.
-	 * @param {string?} compareSnippet - The compare snippet.
-	 * @param {Array<string>?} gradSnippet - The grad snippet.
+	 * @param {?string} levelSnippet - The level snippet.
+	 * @param {?string} biasSnippet - The bias snippet.
+	 * @param {?string} depthSnippet - The depth snippet.
+	 * @param {?string} compareSnippet - The compare snippet.
+	 * @param {?Array<string>} gradSnippet - The grad snippet.
 	 * @return {string} The generated code snippet.
 	 */
 	generateSnippet( builder, textureProperty, uvSnippet, levelSnippet, biasSnippet, depthSnippet, compareSnippet, gradSnippet ) {
@@ -725,9 +725,9 @@ export default TextureNode;
  * @tsl
  * @function
  * @param {Texture} value - The texture.
- * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
- * @param {Node<int>?} [levelNode=null] - The level node.
- * @param {Node<float>?} [biasNode=null] - The bias node.
+ * @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
+ * @param {?Node<int>} [levelNode=null] - The level node.
+ * @param {?Node<float>} [biasNode=null] - The bias node.
  * @returns {TextureNode}
  */
 export const texture = /*@__PURE__*/ nodeProxy( TextureNode );
@@ -738,9 +738,9 @@ export const texture = /*@__PURE__*/ nodeProxy( TextureNode );
  * @tsl
  * @function
  * @param {Texture} value - The texture.
- * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
- * @param {Node<int>?} [levelNode=null] - The level node.
- * @param {Node<float>?} [biasNode=null] - The bias node.
+ * @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
+ * @param {?Node<int>} [levelNode=null] - The level node.
+ * @param {?Node<float>} [biasNode=null] - The bias node.
  * @returns {TextureNode}
  */
 export const textureLoad = ( ...params ) => texture( ...params ).setSampler( false );

+ 2 - 2
src/nodes/accessors/TextureSizeNode.js

@@ -20,7 +20,7 @@ class TextureSizeNode extends Node {
 	 * Constructs a new texture size node.
 	 *
 	 * @param {TextureNode} textureNode - A texture node which size should be retrieved.
-	 * @param {Node<int>?} [levelNode=null] - A level node which defines the requested mip.
+	 * @param {?Node<int>} [levelNode=null] - A level node which defines the requested mip.
 	 */
 	constructor( textureNode, levelNode = null ) {
 
@@ -71,7 +71,7 @@ export default TextureSizeNode;
  * @tsl
  * @function
  * @param {TextureNode} textureNode - A texture node which size should be retrieved.
- * @param {Node<int>?} [levelNode=null] - A level node which defines the requested mip.
+ * @param {?Node<int>} [levelNode=null] - A level node which defines the requested mip.
  * @returns {TextureSizeNode}
  */
 export const textureSize = /*@__PURE__*/ nodeProxy( TextureSizeNode );

+ 2 - 2
src/nodes/accessors/UniformArrayNode.js

@@ -79,7 +79,7 @@ class UniformArrayNode extends BufferNode {
 	 * Constructs a new uniform array node.
 	 *
 	 * @param {Array<any>} value - Array holding the buffer data.
-	 * @param {string?} [elementType=null] - The data type of a buffer element.
+	 * @param {?string} [elementType=null] - The data type of a buffer element.
 	 */
 	constructor( value, elementType = null ) {
 
@@ -342,7 +342,7 @@ export default UniformArrayNode;
  * @tsl
  * @function
  * @param {Array<any>} values - Array-like data.
- * @param {string?} nodeType - The data type of the array elements.
+ * @param {?string} nodeType - The data type of the array elements.
  * @returns {UniformArrayNode}
  */
 export const uniformArray = ( values, nodeType ) => nodeObject( new UniformArrayNode( values, nodeType ) );

+ 3 - 3
src/nodes/accessors/UserDataNode.js

@@ -28,7 +28,7 @@ class UserDataNode extends ReferenceNode {
 	 *
 	 * @param {string} property - The property name that should be referenced by the node.
 	 * @param {string} inputType - The node data type of the reference.
-	 * @param {Object?} [userData=null] - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.
+	 * @param {?Object} [userData=null] - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.
 	 */
 	constructor( property, inputType, userData = null ) {
 
@@ -38,7 +38,7 @@ class UserDataNode extends ReferenceNode {
 		 * A reference to the `userData` object. If not provided, the `userData`
 		 * property of the 3D object that uses the node material is evaluated.
 		 *
-		 * @type {Object?}
+		 * @type {?Object}
 		 * @default null
 		 */
 		this.userData = userData;
@@ -71,7 +71,7 @@ export default UserDataNode;
  * @function
  * @param {string} name - The property name that should be referenced by the node.
  * @param {string} inputType - The node data type of the reference.
- * @param {Object?} userData - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.
+ * @param {?Object} userData - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.
  * @returns {UserDataNode}
  */
 export const userData = ( name, inputType, userData ) => nodeObject( new UserDataNode( name, inputType, userData ) );

+ 1 - 1
src/nodes/accessors/VelocityNode.js

@@ -39,7 +39,7 @@ class VelocityNode extends TempNode {
 		/**
 		 * The current projection matrix.
 		 *
-		 * @type {Matrix4?}
+		 * @type {?Matrix4}
 		 * @default null
 		 */
 		this.projectionMatrix = null;

+ 2 - 2
src/nodes/code/FunctionCallNode.js

@@ -19,7 +19,7 @@ class FunctionCallNode extends TempNode {
 	/**
 	 * Constructs a new function call node.
 	 *
-	 * @param {FunctionNode?} functionNode - The function node.
+	 * @param {?FunctionNode} functionNode - The function node.
 	 * @param {Object<string, Node>} [parameters={}] - The parameters for the function call.
 	 */
 	constructor( functionNode = null, parameters = {} ) {
@@ -29,7 +29,7 @@ class FunctionCallNode extends TempNode {
 		/**
 		 * The function node.
 		 *
-		 * @type {FunctionNode}
+		 * @type {?FunctionNode}
 		 * @default null
 		 */
 		this.functionNode = functionNode;

+ 4 - 4
src/nodes/code/ScriptableNode.js

@@ -117,7 +117,7 @@ class ScriptableNode extends Node {
 	/**
 	 * Constructs a new scriptable node.
 	 *
-	 * @param {CodeNode?} [codeNode=null] - The code node.
+	 * @param {?CodeNode} [codeNode=null] - The code node.
 	 * @param {Object} [parameters={}] - The parameters definition.
 	 */
 	constructor( codeNode = null, parameters = {} ) {
@@ -127,7 +127,7 @@ class ScriptableNode extends Node {
 		/**
 		 * The code node.
 		 *
-		 * @type {CodeNode?}
+		 * @type {?CodeNode}
 		 * @default null
 		 */
 		this.codeNode = codeNode;
@@ -444,7 +444,7 @@ class ScriptableNode extends Node {
 	/**
 	 * Refreshes the script node.
 	 *
-	 * @param {string?} [output=null] - An optional output.
+	 * @param {?string} [output=null] - An optional output.
 	 */
 	refresh( output = null ) {
 
@@ -719,7 +719,7 @@ export default ScriptableNode;
  *
  * @tsl
  * @function
- * @param {CodeNode?} [codeNode=null] - The code node.
+ * @param {?CodeNode} [codeNode=null] - The code node.
  * @param {Object} [parameters={}] - The parameters definition.
  * @returns {ScriptableNode}
  */

+ 2 - 2
src/nodes/code/ScriptableValueNode.js

@@ -45,7 +45,7 @@ class ScriptableValueNode extends Node {
 		/**
 		 * If this node represents an input, this property represents the input type.
 		 *
-		 * @type {string?}
+		 * @type {?string}
 		 * @default null
 		 */
 		this.inputType = null;
@@ -53,7 +53,7 @@ class ScriptableValueNode extends Node {
 		/**
 		 * If this node represents an output, this property represents the output type.
 		 *
-		 * @type {string?}
+		 * @type {?string}
 		 * @default null
 		 */
 		this.outputType = null;

+ 4 - 4
src/nodes/core/ArrayNode.js

@@ -27,7 +27,7 @@ class ArrayNode extends TempNode {
 	 *
 	 * @param {string} [nodeType] - The data type of the elements.
 	 * @param {number} [count] - Size of the array.
-	 * @param {Array<Node>?} [values=null] - Array default values.
+	 * @param {?Array<Node>} [values=null] - Array default values.
 	 */
 	constructor( nodeType, count, values = null ) {
 
@@ -36,14 +36,14 @@ class ArrayNode extends TempNode {
 		/**
 		 * Array size.
 		 *
-		 * @type {Array<Node>}
+		 * @type {number}
 		 */
 		this.count = count;
 
 		/**
 		 * Array default values.
 		 *
-		 * @type {Array<Node>}
+		 * @type {?Array<Node>}
 		 */
 		this.values = values;
 
@@ -95,7 +95,7 @@ export default ArrayNode;
  * @function
  * @param {string|Array<Node>} nodeTypeOrValues - A string representing the element type (e.g., 'vec3')
  * or an array containing the default values (e.g., [ vec3() ]).
- * @param {number?} [count] - Size of the array.
+ * @param {?number} [count] - Size of the array.
  * @returns {ArrayNode}
  */
 export const array = ( ...params ) => {

+ 2 - 2
src/nodes/core/AttributeNode.js

@@ -18,7 +18,7 @@ class AttributeNode extends Node {
 	 * Constructs a new attribute node.
 	 *
 	 * @param {string} attributeName - The name of the attribute.
-	 * @param {string?} nodeType - The node type.
+	 * @param {?string} nodeType - The node type.
 	 */
 	constructor( attributeName, nodeType = null ) {
 
@@ -161,7 +161,7 @@ export default AttributeNode;
  * @tsl
  * @function
  * @param {string} name - The name of the attribute.
- * @param {string?} nodeType - The node type.
+ * @param {?string} nodeType - The node type.
  * @returns {AttributeNode}
  */
 export const attribute = ( name, nodeType ) => nodeObject( new AttributeNode( name, nodeType ) );

+ 1 - 1
src/nodes/core/ConstNode.js

@@ -19,7 +19,7 @@ class ConstNode extends InputNode {
 	 * Constructs a new input node.
 	 *
 	 * @param {any} value - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color).
-	 * @param {string?} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
+	 * @param {?string} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
 	 */
 	constructor( value, nodeType = null ) {
 

+ 2 - 2
src/nodes/core/InputNode.js

@@ -18,7 +18,7 @@ class InputNode extends Node {
 	 * Constructs a new input node.
 	 *
 	 * @param {any} value - The value of this node. This can be a any JS primitive, functions, array buffers or even three.js objects (vector, matrices, colors).
-	 * @param {string?} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
+	 * @param {?string} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
 	 */
 	constructor( value, nodeType = null ) {
 
@@ -43,7 +43,7 @@ class InputNode extends Node {
 		/**
 		 * The precision of the value in the shader.
 		 *
-		 * @type {('low'|'medium'|'high')?}
+		 * @type {?('low'|'medium'|'high')}
 		 * @default null
 		 */
 		this.precision = null;

+ 12 - 12
src/nodes/core/Node.js

@@ -22,7 +22,7 @@ class Node extends EventDispatcher {
 	/**
 	 * Constructs a new node.
 	 *
-	 * @param {string?} nodeType - The node type.
+	 * @param {?string} nodeType - The node type.
 	 */
 	constructor( nodeType = null ) {
 
@@ -31,7 +31,7 @@ class Node extends EventDispatcher {
 		/**
 		 * The node type. This represents the result type of the node (e.g. `float` or `vec3`).
 		 *
-		 * @type {string?}
+		 * @type {?string}
 		 * @default null
 		 */
 		this.nodeType = nodeType;
@@ -102,7 +102,7 @@ class Node extends EventDispatcher {
 		 * The cache key of this node.
 		 *
 		 * @private
-		 * @type {number?}
+		 * @type {?number}
 		 * @default null
 		 */
 		this._cacheKey = null;
@@ -473,7 +473,7 @@ class Node extends EventDispatcher {
 	 * The output node must be returned in the `return` statement.
 	 *
 	 * @param {NodeBuilder} builder - The current node builder.
-	 * @return {Node?} The output node.
+	 * @return {?Node} The output node.
 	 */
 	setup( builder ) {
 
@@ -528,8 +528,8 @@ class Node extends EventDispatcher {
 	 * This state builds the output node and returns the resulting shader string.
 	 *
 	 * @param {NodeBuilder} builder - The current node builder.
-	 * @param {string?} output - Can be used to define the output type.
-	 * @return {string?} The generated shader string.
+	 * @param {?string} output - Can be used to define the output type.
+	 * @return {?string} The generated shader string.
 	 */
 	generate( builder, output ) {
 
@@ -549,7 +549,7 @@ class Node extends EventDispatcher {
 	 *
 	 * @abstract
 	 * @param {NodeFrame} frame - A reference to the current node frame.
-	 * @return {boolean?} An optional bool that indicates whether the implementation actually performed an update or not (e.g. due to caching).
+	 * @return {?boolean} An optional bool that indicates whether the implementation actually performed an update or not (e.g. due to caching).
 	 */
 	updateBefore( /*frame*/ ) {
 
@@ -563,7 +563,7 @@ class Node extends EventDispatcher {
 	 *
 	 * @abstract
 	 * @param {NodeFrame} frame - A reference to the current node frame.
-	 * @return {boolean?} An optional bool that indicates whether the implementation actually performed an update or not (e.g. due to caching).
+	 * @return {?boolean} An optional bool that indicates whether the implementation actually performed an update or not (e.g. due to caching).
 	 */
 	updateAfter( /*frame*/ ) {
 
@@ -577,7 +577,7 @@ class Node extends EventDispatcher {
 	 *
 	 * @abstract
 	 * @param {NodeFrame} frame - A reference to the current node frame.
-	 * @return {boolean?} An optional bool that indicates whether the implementation actually performed an update or not (e.g. due to caching).
+	 * @return {?boolean} An optional bool that indicates whether the implementation actually performed an update or not (e.g. due to caching).
 	 */
 	update( /*frame*/ ) {
 
@@ -590,8 +590,8 @@ class Node extends EventDispatcher {
 	 * on the current build stage (setup, analyze or generate).
 	 *
 	 * @param {NodeBuilder} builder - The current node builder.
-	 * @param {string?} output - Can be used to define the output type.
-	 * @return {string?} When this method is executed in the setup or analyze stage, `null` is returned. In the generate stage, the generated shader string.
+	 * @param {?string} output - Can be used to define the output type.
+	 * @return {?string} When this method is executed in the setup or analyze stage, `null` is returned. In the generate stage, the generated shader string.
 	 */
 	build( builder, output = null ) {
 
@@ -807,7 +807,7 @@ class Node extends EventDispatcher {
 	/**
 	 * Serializes the node into the three.js JSON Object/Scene format.
 	 *
-	 * @param {Object?} meta - An optional JSON object that already holds serialized data from other scene objects.
+	 * @param {?Object} meta - An optional JSON object that already holds serialized data from other scene objects.
 	 * @return {Object} The serialized node.
 	 */
 	toJSON( meta ) {

+ 2 - 2
src/nodes/core/NodeAttribute.js

@@ -11,7 +11,7 @@ class NodeAttribute {
 	 *
 	 * @param {string} name - The name of the attribute.
 	 * @param {string} type - The type of the attribute.
-	 * @param {Node?} node - An optional reference to the node.
+	 * @param {?Node} node - An optional reference to the node.
 	 */
 	constructor( name, type, node = null ) {
 
@@ -41,7 +41,7 @@ class NodeAttribute {
 		/**
 		 * An optional reference to the node.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.node = node;

+ 38 - 38
src/nodes/core/NodeBuilder.js

@@ -87,14 +87,14 @@ class NodeBuilder {
 		/**
 		 * The material of the 3D object.
 		 *
-		 * @type {Material?}
+		 * @type {?Material}
 		 */
 		this.material = ( object && object.material ) || null;
 
 		/**
 		 * The geometry of the 3D object.
 		 *
-		 * @type {BufferGeometry?}
+		 * @type {?BufferGeometry}
 		 */
 		this.geometry = ( object && object.geometry ) || null;
 
@@ -115,7 +115,7 @@ class NodeBuilder {
 		/**
 		 * The scene the 3D object belongs to.
 		 *
-		 * @type {Scene?}
+		 * @type {?Scene}
 		 * @default null
 		 */
 		this.scene = null;
@@ -123,7 +123,7 @@ class NodeBuilder {
 		/**
 		 * The camera the 3D object is rendered with.
 		 *
-		 * @type {Camera?}
+		 * @type {?Camera}
 		 * @default null
 		 */
 		this.camera = null;
@@ -174,7 +174,7 @@ class NodeBuilder {
 		/**
 		 * A reference to a node material observer.
 		 *
-		 * @type {NodeMaterialObserver?}
+		 * @type {?NodeMaterialObserver}
 		 * @default null
 		 */
 		this.observer = null;
@@ -182,7 +182,7 @@ class NodeBuilder {
 		/**
 		 * A reference to the current lights node.
 		 *
-		 * @type {LightsNode?}
+		 * @type {?LightsNode}
 		 * @default null
 		 */
 		this.lightsNode = null;
@@ -190,7 +190,7 @@ class NodeBuilder {
 		/**
 		 * A reference to the current environment node.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.environmentNode = null;
@@ -198,7 +198,7 @@ class NodeBuilder {
 		/**
 		 * A reference to the current fog node.
 		 *
-		 * @type {FogNode?}
+		 * @type {?FogNode}
 		 * @default null
 		 */
 		this.fogNode = null;
@@ -206,28 +206,28 @@ class NodeBuilder {
 		/**
 		 * The current clipping context.
 		 *
-		 * @type {ClippingContext?}
+		 * @type {?ClippingContext}
 		 */
 		this.clippingContext = null;
 
 		/**
 		 * The generated vertex shader.
 		 *
-		 * @type {string?}
+		 * @type {?string}
 		 */
 		this.vertexShader = null;
 
 		/**
 		 * The generated fragment shader.
 		 *
-		 * @type {string?}
+		 * @type {?string}
 		 */
 		this.fragmentShader = null;
 
 		/**
 		 * The generated compute shader.
 		 *
-		 * @type {string?}
+		 * @type {?string}
 		 */
 		this.computeShader = null;
 
@@ -278,7 +278,7 @@ class NodeBuilder {
 		/**
 		 * Reference to the array of bind groups.
 		 *
-		 * @type {Array<BindGroup>?}
+		 * @type {?Array<BindGroup>}
 		 */
 		this.bindGroups = null;
 
@@ -365,7 +365,7 @@ class NodeBuilder {
 		/**
 		 * Reference to the current function node.
 		 *
-		 * @type {FunctionNode?}
+		 * @type {?FunctionNode}
 		 * @default null
 		 */
 		this.currentFunctionNode = null;
@@ -401,14 +401,14 @@ class NodeBuilder {
 		/**
 		 * The current shader stage.
 		 *
-		 * @type {('vertex'|'fragment'|'compute'|'any')?}
+		 * @type {?('vertex'|'fragment'|'compute'|'any')}
 		 */
 		this.shaderStage = null;
 
 		/**
 		 * The current build stage.
 		 *
-		 * @type {('setup'|'analyze'|'generate')?}
+		 * @type {?('setup'|'analyze'|'generate')}
 		 */
 		this.buildStage = null;
 
@@ -1043,7 +1043,7 @@ class NodeBuilder {
 	 * @param {Texture} texture - The texture.
 	 * @param {string} textureProperty - The texture property name.
 	 * @param {string} uvSnippet - Snippet defining the texture coordinates.
-	 * @param {string?} depthSnippet - Snippet defining the 0-based texture array index to sample.
+	 * @param {?string} depthSnippet - Snippet defining the 0-based texture array index to sample.
 	 * @param {string} levelSnippet - Snippet defining the mip level.
 	 * @return {string} The generated shader string.
 	 */
@@ -1057,7 +1057,7 @@ class NodeBuilder {
 	 * Generates the array declaration string.
 	 *
 	 * @param {string} type - The type.
-	 * @param {number?} [count] - The count.
+	 * @param {?number} [count] - The count.
 	 * @return {string} The generated value as a shader string.
 	 */
 	generateArrayDeclaration( type, count ) {
@@ -1070,8 +1070,8 @@ class NodeBuilder {
 	 * Generates the array shader string for the given type and value.
 	 *
 	 * @param {string} type - The type.
-	 * @param {number?} [count] - The count.
-	 * @param {Array<Node>?} [values=null] - The default values.
+	 * @param {?number} [count] - The count.
+	 * @param {?Array<Node>} [values=null] - The default values.
 	 * @return {string} The generated value as a shader string.
 	 */
 	generateArray( type, count, values = null ) {
@@ -1107,7 +1107,7 @@ class NodeBuilder {
 	 *
 	 * @param {string} type - The type.
 	 * @param {Array<Object>} [membersLayout] - The count.
-	 * @param {Array<Node>?} [values=null] - The default values.
+	 * @param {?Array<Node>} [values=null] - The default values.
 	 * @return {string} The generated value as a shader string.
 	 */
 	generateStruct( type, membersLayout, values = null ) {
@@ -1139,7 +1139,7 @@ class NodeBuilder {
 	 * Generates the shader string for the given type and value.
 	 *
 	 * @param {string} type - The type.
-	 * @param {any?} [value=null] - The value.
+	 * @param {?any} [value=null] - The value.
 	 * @return {string} The generated value as a shader string.
 	 */
 	generateConst( type, value = null ) {
@@ -1558,7 +1558,7 @@ class NodeBuilder {
 	 *
 	 * @param {Node} node - The node to get the data for.
 	 * @param {('vertex'|'fragment'|'compute'|'any')} [shaderStage=this.shaderStage] - The shader stage.
-	 * @param {NodeCache?} cache - An optional cache.
+	 * @param {?NodeCache} cache - An optional cache.
 	 * @return {Object} The node data.
 	 */
 	getDataFromNode( node, shaderStage = this.shaderStage, cache = null ) {
@@ -1630,7 +1630,7 @@ class NodeBuilder {
 	 *
 	 * @param {OutputStructNode} node - The output struct node.
 	 * @param {Array<Object>} membersLayout - The output struct types.
-	 * @param {string?} [name=null] - The name of the struct.
+	 * @param {?string} [name=null] - The name of the struct.
 	 * @param {('vertex'|'fragment'|'compute'|'any')} [shaderStage=this.shaderStage] - The shader stage.
 	 * @return {StructType} The struct type attribute.
 	 */
@@ -1680,7 +1680,7 @@ class NodeBuilder {
 	 * @param {UniformNode} node - The uniform node.
 	 * @param {string} type - The uniform type.
 	 * @param {('vertex'|'fragment'|'compute'|'any')} [shaderStage=this.shaderStage] - The shader stage.
-	 * @param {string?} name - The name of the uniform.
+	 * @param {?string} name - The name of the uniform.
 	 * @return {NodeUniform} The node uniform.
 	 */
 	getUniformFromNode( node, type, shaderStage = this.shaderStage, name = null ) {
@@ -1709,7 +1709,7 @@ class NodeBuilder {
 	 * Returns the array length.
 	 *
 	 * @param {Node} node - The node.
-	 * @return {number?} The array length.
+	 * @return {?number} The array length.
 	 */
 	getArrayCount( node ) {
 
@@ -1726,7 +1726,7 @@ class NodeBuilder {
 	 * Returns an instance of {@link NodeVar} for the given variable node.
 	 *
 	 * @param {VarNode} node - The variable node.
-	 * @param {string?} name - The variable's name.
+	 * @param {?string} name - The variable's name.
 	 * @param {string} [type=node.getNodeType( this )] - The variable's type.
 	 * @param {('vertex'|'fragment'|'compute'|'any')} [shaderStage=this.shaderStage] - The shader stage.
 	 * @param {boolean} [readOnly=false] - Whether the variable is read-only or not.
@@ -1825,7 +1825,7 @@ class NodeBuilder {
 	 * Returns an instance of {@link NodeVarying} for the given varying node.
 	 *
 	 * @param {(VaryingNode|PropertyNode)} node - The varying node.
-	 * @param {string?} name - The varying's name.
+	 * @param {?string} name - The varying's name.
 	 * @param {string} [type=node.getNodeType( this )] - The varying's type.
 	 * @return {NodeVar} The node varying.
 	 */
@@ -1948,7 +1948,7 @@ class NodeBuilder {
 	 * Add a inline-code to the current flow.
 	 *
 	 * @param {string} code - The code to add.
-	 * @param {Node?} [node= null] - Optional Node, can help the system understand if the Node is part of a code-block.
+	 * @param {?Node} [node= null] - Optional Node, can help the system understand if the Node is part of a code-block.
 	 * @return {NodeBuilder} A reference to this node builder.
 	 */
 	addLineFlowCode( code, node = null ) {
@@ -2134,7 +2134,7 @@ class NodeBuilder {
 	 * Runs the node flow through all the steps of creation, 'setup', 'analyze', 'generate'.
 	 *
 	 * @param {Node} node - The node to execute.
-	 * @param {string?} output - Expected output type. For example 'vec3'.
+	 * @param {?string} output - Expected output type. For example 'vec3'.
 	 * @return {Object}
 	 */
 	flowStagesNode( node, output = null ) {
@@ -2193,7 +2193,7 @@ class NodeBuilder {
 	 * Generates a code flow based on a child Node.
 	 *
 	 * @param {Node} node - The node to execute.
-	 * @param {string?} output - Expected output type. For example 'vec3'.
+	 * @param {?string} output - Expected output type. For example 'vec3'.
 	 * @return {Object} The code flow.
 	 */
 	flowChildNode( node, output = null ) {
@@ -2222,8 +2222,8 @@ class NodeBuilder {
 	 *
 	 * @param {('vertex'|'fragment'|'compute'|'any')} shaderStage - The shader stage.
 	 * @param {Node} node - The node to execute.
-	 * @param {string?} output - Expected output type. For example 'vec3'.
-	 * @param {string?} propertyName - The property name to assign the result.
+	 * @param {?string} output - Expected output type. For example 'vec3'.
+	 * @param {?string} propertyName - The property name to assign the result.
 	 * @return {Object}
 	 */
 	flowNodeFromShaderStage( shaderStage, node, output = null, propertyName = null ) {
@@ -2290,7 +2290,7 @@ class NodeBuilder {
 	 *
 	 * @param {string} type - The variable's type.
 	 * @param {string} name - The variable's name.
-	 * @param {number?} [count=null] - The array length.
+	 * @param {?number} [count=null] - The array length.
 	 * @return {string} The shader string.
 	 */
 	getVar( type, name, count = null ) {
@@ -2378,7 +2378,7 @@ class NodeBuilder {
 	/**
 	 * Sets the current shader stage.
 	 *
-	 * @param {('vertex'|'fragment'|'compute'|'any')?} shaderStage - The shader stage to set.
+	 * @param {?('vertex'|'fragment'|'compute'|'any')} shaderStage - The shader stage to set.
 	 */
 	setShaderStage( shaderStage ) {
 
@@ -2389,7 +2389,7 @@ class NodeBuilder {
 	/**
 	 * Returns the current shader stage.
 	 *
-	 * @return {('vertex'|'fragment'|'compute'|'any')?} The current shader stage.
+	 * @return {?('vertex'|'fragment'|'compute'|'any')} The current shader stage.
 	 */
 	getShaderStage() {
 
@@ -2400,7 +2400,7 @@ class NodeBuilder {
 	/**
 	 * Sets the current build stage.
 	 *
-	 * @param {('setup'|'analyze'|'generate')?} buildStage - The build stage to set.
+	 * @param {?('setup'|'analyze'|'generate')} buildStage - The build stage to set.
 	 */
 	setBuildStage( buildStage ) {
 
@@ -2411,7 +2411,7 @@ class NodeBuilder {
 	/**
 	 * Returns the current build stage.
 	 *
-	 * @return {('setup'|'analyze'|'generate')?} The current build stage.
+	 * @return {?('setup'|'analyze'|'generate')} The current build stage.
 	 */
 	getBuildStage() {
 

+ 3 - 3
src/nodes/core/NodeCache.js

@@ -9,7 +9,7 @@ class NodeCache {
 	/**
 	 * Constructs a new node cache.
 	 *
-	 * @param {NodeCache?} parent - A reference to a parent cache.
+	 * @param {?NodeCache} parent - A reference to a parent cache.
 	 */
 	constructor( parent = null ) {
 
@@ -31,7 +31,7 @@ class NodeCache {
 		/**
 		 * Reference to a parent node cache.
 		 *
-		 * @type {NodeCache?}
+		 * @type {?NodeCache}
 		 * @default null
 		 */
 		this.parent = parent;
@@ -42,7 +42,7 @@ class NodeCache {
 	 * Returns the data for the given node.
 	 *
 	 * @param {Node} node - The node.
-	 * @return {Object?} The data for the node.
+	 * @return {?Object} The data for the node.
 	 */
 	getData( node ) {
 

+ 5 - 5
src/nodes/core/NodeFrame.js

@@ -69,7 +69,7 @@ class NodeFrame {
 		/**
 		 * A reference to the current renderer.
 		 *
-		 * @type {Renderer?}
+		 * @type {?Renderer}
 		 * @default null
 		 */
 		this.renderer = null;
@@ -77,7 +77,7 @@ class NodeFrame {
 		/**
 		 * A reference to the current material.
 		 *
-		 * @type {Material?}
+		 * @type {?Material}
 		 * @default null
 		 */
 		this.material = null;
@@ -85,7 +85,7 @@ class NodeFrame {
 		/**
 		 * A reference to the current camera.
 		 *
-		 * @type {Camera?}
+		 * @type {?Camera}
 		 * @default null
 		 */
 		this.camera = null;
@@ -93,7 +93,7 @@ class NodeFrame {
 		/**
 		 * A reference to the current 3D object.
 		 *
-		 * @type {Object3D?}
+		 * @type {?Object3D}
 		 * @default null
 		 */
 		this.object = null;
@@ -101,7 +101,7 @@ class NodeFrame {
 		/**
 		 * A reference to the current scene.
 		 *
-		 * @type {Scene?}
+		 * @type {?Scene}
 		 * @default null
 		 */
 		this.scene = null;

+ 2 - 2
src/nodes/core/NodeFunctionInput.js

@@ -8,7 +8,7 @@ class NodeFunctionInput {
 	 *
 	 * @param {string} type - The input type.
 	 * @param {string} name - The input name.
-	 * @param {number?} [count=null] - If the input is an Array, count will be the length.
+	 * @param {?number} [count=null] - If the input is an Array, count will be the length.
 	 * @param {('in'|'out'|'inout')} [qualifier=''] - The parameter qualifier (only relevant for GLSL).
 	 * @param {boolean} [isConst=false] - Whether the input uses a const qualifier or not (only relevant for GLSL).
 	 */
@@ -31,7 +31,7 @@ class NodeFunctionInput {
 		/**
 		 * If the input is an Array, count will be the length.
 		 *
-		 * @type {number?}
+		 * @type {?number}
 		 * @default null
 		 */
 		this.count = count;

+ 1 - 1
src/nodes/core/NodeUtils.js

@@ -241,7 +241,7 @@ export function getLengthFromType( type ) {
  *
  * @method
  * @param {any} value - The value.
- * @return {string?} The data type.
+ * @return {?string} The data type.
  */
 export function getValueType( value ) {
 

+ 2 - 2
src/nodes/core/NodeVar.js

@@ -12,7 +12,7 @@ class NodeVar {
 	 * @param {string} name - The name of the variable.
 	 * @param {string} type - The type of the variable.
 	 * @param {boolean} [readOnly=false] - The read-only flag.
-	 * @param {number?} [count=null] - The size.
+	 * @param {?number} [count=null] - The size.
 	 */
 	constructor( name, type, readOnly = false, count = null ) {
 
@@ -49,7 +49,7 @@ class NodeVar {
 		/**
 		 * The size.
 		 *
-		 * @type {number?}
+		 * @type {?number}
 		 */
 		this.count = count;
 

+ 2 - 2
src/nodes/core/ParameterNode.js

@@ -18,7 +18,7 @@ class ParameterNode extends PropertyNode {
 	 * Constructs a new parameter node.
 	 *
 	 * @param {string} nodeType - The type of the node.
-	 * @param {string?} [name=null] - The name of the parameter in the shader.
+	 * @param {?string} [name=null] - The name of the parameter in the shader.
 	 */
 	constructor( nodeType, name = null ) {
 
@@ -57,7 +57,7 @@ export default ParameterNode;
  * @tsl
  * @function
  * @param {string} type - The type of the node.
- * @param {string?} name - The name of the parameter in the shader.
+ * @param {?string} name - The name of the parameter in the shader.
  * @returns {ParameterNode}
  */
 export const parameter = ( type, name ) => nodeObject( new ParameterNode( type, name ) );

+ 4 - 4
src/nodes/core/PropertyNode.js

@@ -25,7 +25,7 @@ class PropertyNode extends Node {
 	 * Constructs a new property node.
 	 *
 	 * @param {string} nodeType - The type of the node.
-	 * @param {string?} [name=null] - The name of the property in the shader.
+	 * @param {?string} [name=null] - The name of the property in the shader.
 	 * @param {boolean} [varying=false] - Whether this property is a varying or not.
 	 */
 	constructor( nodeType, name = null, varying = false ) {
@@ -36,7 +36,7 @@ class PropertyNode extends Node {
 		 * The name of the property in the shader. If no name is defined,
 		 * the node system auto-generates one.
 		 *
-		 * @type {string?}
+		 * @type {?string}
 		 * @default null
 		 */
 		this.name = name;
@@ -107,7 +107,7 @@ export default PropertyNode;
  * @tsl
  * @function
  * @param {string} type - The type of the node.
- * @param {string?} [name=null] - The name of the property in the shader.
+ * @param {?string} [name=null] - The name of the property in the shader.
  * @returns {PropertyNode}
  */
 export const property = ( type, name ) => nodeObject( new PropertyNode( type, name ) );
@@ -118,7 +118,7 @@ export const property = ( type, name ) => nodeObject( new PropertyNode( type, na
  * @tsl
  * @function
  * @param {string} type - The type of the node.
- * @param {string?} [name=null] - The name of the varying in the shader.
+ * @param {?string} [name=null] - The name of the varying in the shader.
  * @returns {PropertyNode}
  */
 export const varyingProperty = ( type, name ) => nodeObject( new PropertyNode( type, name, true ) );

+ 4 - 4
src/nodes/core/StackNode.js

@@ -19,7 +19,7 @@ class StackNode extends Node {
 	/**
 	 * Constructs a new stack node.
 	 *
-	 * @param {StackNode?} [parent=null] - The parent stack node.
+	 * @param {?StackNode} [parent=null] - The parent stack node.
 	 */
 	constructor( parent = null ) {
 
@@ -35,7 +35,7 @@ class StackNode extends Node {
 		/**
 		 * The output node.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.outputNode = null;
@@ -43,7 +43,7 @@ class StackNode extends Node {
 		/**
 		 * The parent stack node.
 		 *
-		 * @type {StackNode}
+		 * @type {?StackNode}
 		 * @default null
 		 */
 		this.parent = parent;
@@ -199,7 +199,7 @@ export default StackNode;
  *
  * @tsl
  * @function
- * @param {StackNode?} [parent=null] - The parent stack node.
+ * @param {?StackNode} [parent=null] - The parent stack node.
  * @returns {StackNode}
  */
 export const stack = /*@__PURE__*/ nodeProxy( StackNode );

+ 1 - 1
src/nodes/core/TempNode.js

@@ -19,7 +19,7 @@ class TempNode extends Node {
 	/**
 	 * Constructs a temp node.
 	 *
-	 * @param {string?} nodeType - The node type.
+	 * @param {?string} nodeType - The node type.
 	 */
 	constructor( nodeType = null ) {
 

+ 2 - 2
src/nodes/core/UniformNode.js

@@ -19,7 +19,7 @@ class UniformNode extends InputNode {
 	 * Constructs a new uniform node.
 	 *
 	 * @param {any} value - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color, texture).
-	 * @param {string?} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
+	 * @param {?string} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
 	 */
 	constructor( value, nodeType = null ) {
 
@@ -162,7 +162,7 @@ export default UniformNode;
  * @tsl
  * @function
  * @param {any} arg1 - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color, texture).
- * @param {string?} arg2 - The node type. If no explicit type is defined, the node tries to derive the type from its value.
+ * @param {?string} arg2 - The node type. If no explicit type is defined, the node tries to derive the type from its value.
  * @returns {UniformNode}
  */
 export const uniform = ( arg1, arg2 ) => {

+ 6 - 6
src/nodes/core/VarNode.js

@@ -23,8 +23,8 @@ class VarNode extends Node {
 	 * Constructs a new variable node.
 	 *
 	 * @param {Node} node - The node for which a variable should be created.
-	 * @param {string?} name - The name of the variable in the shader.
-	 * @param {boolean?} readOnly - The read-only flag.
+	 * @param {?string} name - The name of the variable in the shader.
+	 * @param {?boolean} readOnly - The read-only flag.
 	 */
 	constructor( node, name = null, readOnly = false ) {
 
@@ -41,7 +41,7 @@ class VarNode extends Node {
 		 * The name of the variable in the shader. If no name is defined,
 		 * the node system auto-generates one.
 		 *
-		 * @type {string?}
+		 * @type {?string}
 		 * @default null
 		 */
 		this.name = name;
@@ -159,7 +159,7 @@ export default VarNode;
  * @tsl
  * @function
  * @param {Node} node - The node for which a variable should be created.
- * @param {string?} name - The name of the variable in the shader.
+ * @param {?string} name - The name of the variable in the shader.
  * @returns {VarNode}
  */
 const createVar = /*@__PURE__*/ nodeProxy( VarNode );
@@ -170,7 +170,7 @@ const createVar = /*@__PURE__*/ nodeProxy( VarNode );
  * @tsl
  * @function
  * @param {Node} node - The node for which a variable should be created.
- * @param {string?} name - The name of the variable in the shader.
+ * @param {?string} name - The name of the variable in the shader.
  * @returns {VarNode}
  */
 export const Var = ( node, name = null ) => createVar( node, name ).append();
@@ -181,7 +181,7 @@ export const Var = ( node, name = null ) => createVar( node, name ).append();
  * @tsl
  * @function
  * @param {Node} node - The node for which a constant should be created.
- * @param {string?} name - The name of the constant in the shader.
+ * @param {?string} name - The name of the constant in the shader.
  * @returns {VarNode}
  */
 export const Const = ( node, name = null ) => createVar( node, name, true ).append();

+ 3 - 3
src/nodes/core/VaryingNode.js

@@ -24,7 +24,7 @@ class VaryingNode extends Node {
 	 * Constructs a new varying node.
 	 *
 	 * @param {Node} node - The node for which a varying should be created.
-	 * @param {string?} name - The name of the varying in the shader.
+	 * @param {?string} name - The name of the varying in the shader.
 	 */
 	constructor( node, name = null ) {
 
@@ -41,7 +41,7 @@ class VaryingNode extends Node {
 		 * The name of the varying in the shader. If no name is defined,
 		 * the node system auto-generates one.
 		 *
-		 * @type {string?}
+		 * @type {?string}
 		 * @default null
 		 */
 		this.name = name;
@@ -170,7 +170,7 @@ export default VaryingNode;
  * @tsl
  * @function
  * @param {Node} node - The node for which a varying should be created.
- * @param {string?} name - The name of the varying in the shader.
+ * @param {?string} name - The name of the varying in the shader.
  * @returns {VaryingNode}
  */
 export const varying = /*@__PURE__*/ nodeProxy( VaryingNode );

+ 3 - 3
src/nodes/display/BumpMapNode.js

@@ -65,7 +65,7 @@ class BumpMapNode extends TempNode {
 	 * Constructs a new bump map node.
 	 *
 	 * @param {Node<float>} textureNode - Represents the bump map data.
-	 * @param {Node<float>?} [scaleNode=null] - Controls the intensity of the bump effect.
+	 * @param {?Node<float>} [scaleNode=null] - Controls the intensity of the bump effect.
 	 */
 	constructor( textureNode, scaleNode = null ) {
 
@@ -81,7 +81,7 @@ class BumpMapNode extends TempNode {
 		/**
 		 * Controls the intensity of the bump effect.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.scaleNode = scaleNode;
@@ -111,7 +111,7 @@ export default BumpMapNode;
  * @tsl
  * @function
  * @param {Node<float>} textureNode - Represents the bump map data.
- * @param {Node<float>?} [scaleNode=null] - Controls the intensity of the bump effect.
+ * @param {?Node<float>} [scaleNode=null] - Controls the intensity of the bump effect.
  * @returns {BumpMapNode}
  */
 export const bumpMap = /*@__PURE__*/ nodeProxy( BumpMapNode );

+ 1 - 1
src/nodes/display/ColorAdjustment.js

@@ -81,7 +81,7 @@ export const hue = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ] ) => {
  * @tsl
  * @function
  * @param {Node<vec3>} color - The color value to compute the luminance for.
- * @param {Node<vec3>?} luminanceCoefficients - The luminance coefficients. By default predefined values of the current working color space are used.
+ * @param {?Node<vec3>} luminanceCoefficients - The luminance coefficients. By default predefined values of the current working color space are used.
  * @return {Node<vec3>} The luminance.
  */
 export const luminance = (

+ 3 - 3
src/nodes/display/NormalMapNode.js

@@ -58,7 +58,7 @@ class NormalMapNode extends TempNode {
 	 * Constructs a new normal map node.
 	 *
 	 * @param {Node<vec3>} node - Represents the normal map data.
-	 * @param {Node<vec2>?} [scaleNode=null] - Controls the intensity of the effect.
+	 * @param {?Node<vec2>} [scaleNode=null] - Controls the intensity of the effect.
 	 */
 	constructor( node, scaleNode = null ) {
 
@@ -74,7 +74,7 @@ class NormalMapNode extends TempNode {
 		/**
 		 * Controls the intensity of the effect.
 		 *
-		 * @type {Node<vec2>?}
+		 * @type {?Node<vec2>}
 		 * @default null
 		 */
 		this.scaleNode = scaleNode;
@@ -142,7 +142,7 @@ export default NormalMapNode;
  * @tsl
  * @function
  * @param {Node<vec3>} node - Represents the normal map data.
- * @param {Node<vec2>?} [scaleNode=null] - Controls the intensity of the effect.
+ * @param {?Node<vec2>} [scaleNode=null] - Controls the intensity of the effect.
  * @returns {NormalMapNode}
  */
 export const normalMap = /*@__PURE__*/ nodeProxy( NormalMapNode );

+ 1 - 1
src/nodes/display/PassNode.js

@@ -309,7 +309,7 @@ class PassNode extends TempNode {
 		 * A MRT node configuring the MRT settings.
 		 *
 		 * @private
-		 * @type {MRTNode?}
+		 * @type {?MRTNode}
 		 * @default null
 		 */
 		this._mrt = null;

+ 4 - 4
src/nodes/display/RenderOutputNode.js

@@ -56,14 +56,14 @@ class RenderOutputNode extends TempNode {
 		/**
 		 * The tone mapping type.
 		 *
-		 * @type {number?}
+		 * @type {?number}
 		 */
 		this.toneMapping = toneMapping;
 
 		/**
 		 * The output color space.
 		 *
-		 * @type {string?}
+		 * @type {?string}
 		 */
 		this.outputColorSpace = outputColorSpace;
 
@@ -115,8 +115,8 @@ export default RenderOutputNode;
  * @tsl
  * @function
  * @param {Node} color - The color node to process.
- * @param {number?} [toneMapping=null] - The tone mapping type.
- * @param {string?} [outputColorSpace=null] - The output color space.
+ * @param {?number} [toneMapping=null] - The tone mapping type.
+ * @param {?string} [outputColorSpace=null] - The output color space.
  * @returns {RenderOutputNode}
  */
 export const renderOutput = ( color, toneMapping = null, outputColorSpace = null ) => nodeObject( new RenderOutputNode( nodeObject( color ), toneMapping, outputColorSpace ) );

+ 1 - 1
src/nodes/display/ToneMappingNode.js

@@ -47,7 +47,7 @@ class ToneMappingNode extends TempNode {
 		/**
 		 * Represents the color to process.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.colorNode = colorNode;

+ 2 - 2
src/nodes/display/ViewportDepthNode.js

@@ -23,7 +23,7 @@ class ViewportDepthNode extends Node {
 	 * Constructs a new viewport depth node.
 	 *
 	 * @param {('depth'|'depthBase'|'linearDepth')} scope - The node's scope.
-	 * @param {Node?} [valueNode=null] - The value node.
+	 * @param {?Node} [valueNode=null] - The value node.
 	 */
 	constructor( scope, valueNode = null ) {
 
@@ -45,7 +45,7 @@ class ViewportDepthNode extends Node {
 		 * Can be used to define a custom depth value.
 		 * The property is ignored in the `ViewportDepthNode.DEPTH` scope.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.valueNode = valueNode;

+ 2 - 2
src/nodes/display/ViewportDepthTextureNode.js

@@ -25,7 +25,7 @@ class ViewportDepthTextureNode extends ViewportTextureNode {
 	 * Constructs a new viewport depth texture node.
 	 *
 	 * @param {Node} [uvNode=screenUV] - The uv node.
-	 * @param {Node?} [levelNode=null] - The level node.
+	 * @param {?Node} [levelNode=null] - The level node.
 	 */
 	constructor( uvNode = screenUV, levelNode = null ) {
 
@@ -49,7 +49,7 @@ export default ViewportDepthTextureNode;
  * @tsl
  * @function
  * @param {Node} [uvNode=screenUV] - The uv node.
- * @param {Node?} [levelNode=null] - The level node.
+ * @param {?Node} [levelNode=null] - The level node.
  * @returns {ViewportDepthTextureNode}
  */
 export const viewportDepthTexture = /*@__PURE__*/ nodeProxy( ViewportDepthTextureNode );

+ 2 - 2
src/nodes/display/ViewportSharedTextureNode.js

@@ -25,7 +25,7 @@ class ViewportSharedTextureNode extends ViewportTextureNode {
 	 * Constructs a new viewport shared texture node.
 	 *
 	 * @param {Node} [uvNode=screenUV] - The uv node.
-	 * @param {Node?} [levelNode=null] - The level node.
+	 * @param {?Node} [levelNode=null] - The level node.
 	 */
 	constructor( uvNode = screenUV, levelNode = null ) {
 
@@ -55,7 +55,7 @@ export default ViewportSharedTextureNode;
  * @tsl
  * @function
  * @param {Node} [uvNode=screenUV] - The uv node.
- * @param {Node?} [levelNode=null] - The level node.
+ * @param {?Node} [levelNode=null] - The level node.
  * @returns {ViewportSharedTextureNode}
  */
 export const viewportSharedTexture = /*@__PURE__*/ nodeProxy( ViewportSharedTextureNode );

+ 6 - 6
src/nodes/display/ViewportTextureNode.js

@@ -30,8 +30,8 @@ class ViewportTextureNode extends TextureNode {
 	 * Constructs a new viewport texture node.
 	 *
 	 * @param {Node} [uvNode=screenUV] - The uv node.
-	 * @param {Node?} [levelNode=null] - The level node.
-	 * @param {Texture?} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
+	 * @param {?Node} [levelNode=null] - The level node.
+	 * @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
 	 */
 	constructor( uvNode = screenUV, levelNode = null, framebufferTexture = null ) {
 
@@ -119,8 +119,8 @@ export default ViewportTextureNode;
  * @tsl
  * @function
  * @param {Node} [uvNode=screenUV] - The uv node.
- * @param {Node?} [levelNode=null] - The level node.
- * @param {Texture?} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
+ * @param {?Node} [levelNode=null] - The level node.
+ * @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
  * @returns {ViewportTextureNode}
  */
 export const viewportTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode );
@@ -131,8 +131,8 @@ export const viewportTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode );
  * @tsl
  * @function
  * @param {Node} [uvNode=screenUV] - The uv node.
- * @param {Node?} [levelNode=null] - The level node.
- * @param {Texture?} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
+ * @param {?Node} [levelNode=null] - The level node.
+ * @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
  * @returns {ViewportTextureNode}
  */
 export const viewportMipTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode, null, null, { generateMipmaps: true } );

+ 7 - 7
src/nodes/functions/PhysicalLightingModel.js

@@ -414,7 +414,7 @@ class PhysicalLightingModel extends LightingModel {
 		/**
 		 * The clear coat radiance.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.clearcoatRadiance = null;
@@ -422,7 +422,7 @@ class PhysicalLightingModel extends LightingModel {
 		/**
 		 * The clear coat specular direct.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.clearcoatSpecularDirect = null;
@@ -430,7 +430,7 @@ class PhysicalLightingModel extends LightingModel {
 		/**
 		 * The clear coat specular indirect.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.clearcoatSpecularIndirect = null;
@@ -438,7 +438,7 @@ class PhysicalLightingModel extends LightingModel {
 		/**
 		 * The sheen specular direct.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.sheenSpecularDirect = null;
@@ -446,7 +446,7 @@ class PhysicalLightingModel extends LightingModel {
 		/**
 		 * The sheen specular indirect.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.sheenSpecularIndirect = null;
@@ -454,7 +454,7 @@ class PhysicalLightingModel extends LightingModel {
 		/**
 		 * The iridescence Fresnel.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.iridescenceFresnel = null;
@@ -462,7 +462,7 @@ class PhysicalLightingModel extends LightingModel {
 		/**
 		 * The iridescence F0.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.iridescenceF0 = null;

+ 13 - 13
src/nodes/gpgpu/AtomicFunctionNode.js

@@ -26,7 +26,7 @@ class AtomicFunctionNode extends TempNode {
 	 * @param {string} method - The signature of the atomic function to construct.
 	 * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
 	 * @param {Node} valueNode - The value that mutates the atomic variable.
-	 * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+	 * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
 	 */
 	constructor( method, pointerNode, valueNode, storeNode = null ) {
 
@@ -56,7 +56,7 @@ class AtomicFunctionNode extends TempNode {
 		/**
 		 * A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.storeNode = storeNode;
@@ -147,7 +147,7 @@ export default AtomicFunctionNode;
  * @param {string} method - The signature of the atomic function to construct.
  * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
  * @param {Node} valueNode - The value that mutates the atomic variable.
- * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+ * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
  * @returns {AtomicFunctionNode}
  */
 const atomicNode = nodeProxy( AtomicFunctionNode );
@@ -160,7 +160,7 @@ const atomicNode = nodeProxy( AtomicFunctionNode );
  * @param {string} method - The signature of the atomic function to construct.
  * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
  * @param {Node} valueNode - The value that mutates the atomic variable.
- * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+ * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
  * @returns {AtomicFunctionNode}
  */
 export const atomicFunc = ( method, pointerNode, valueNode, storeNode = null ) => {
@@ -178,7 +178,7 @@ export const atomicFunc = ( method, pointerNode, valueNode, storeNode = null ) =
  * @tsl
  * @function
  * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
- * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+ * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
  * @returns {AtomicFunctionNode}
  */
 export const atomicLoad = ( pointerNode, storeNode = null ) => atomicFunc( AtomicFunctionNode.ATOMIC_LOAD, pointerNode, null, storeNode );
@@ -190,7 +190,7 @@ export const atomicLoad = ( pointerNode, storeNode = null ) => atomicFunc( Atomi
  * @function
  * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
  * @param {Node} valueNode - The value that mutates the atomic variable.
- * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+ * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
  * @returns {AtomicFunctionNode}
  */
 export const atomicStore = ( pointerNode, valueNode, storeNode = null ) => atomicFunc( AtomicFunctionNode.ATOMIC_STORE, pointerNode, valueNode, storeNode );
@@ -202,7 +202,7 @@ export const atomicStore = ( pointerNode, valueNode, storeNode = null ) => atomi
  * @function
  * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
  * @param {Node} valueNode - The value that mutates the atomic variable.
- * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+ * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
  * @returns {AtomicFunctionNode}
  */
 export const atomicAdd = ( pointerNode, valueNode, storeNode = null ) => atomicFunc( AtomicFunctionNode.ATOMIC_ADD, pointerNode, valueNode, storeNode );
@@ -214,7 +214,7 @@ export const atomicAdd = ( pointerNode, valueNode, storeNode = null ) => atomicF
  * @function
  * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
  * @param {Node} valueNode - The value that mutates the atomic variable.
- * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+ * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
  * @returns {AtomicFunctionNode}
  */
 export const atomicSub = ( pointerNode, valueNode, storeNode = null ) => atomicFunc( AtomicFunctionNode.ATOMIC_SUB, pointerNode, valueNode, storeNode );
@@ -226,7 +226,7 @@ export const atomicSub = ( pointerNode, valueNode, storeNode = null ) => atomicF
  * @function
  * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
  * @param {Node} valueNode - The value that mutates the atomic variable.
- * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+ * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
  * @returns {AtomicFunctionNode}
  */
 export const atomicMax = ( pointerNode, valueNode, storeNode = null ) => atomicFunc( AtomicFunctionNode.ATOMIC_MAX, pointerNode, valueNode, storeNode );
@@ -238,7 +238,7 @@ export const atomicMax = ( pointerNode, valueNode, storeNode = null ) => atomicF
  * @function
  * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
  * @param {Node} valueNode - The value that mutates the atomic variable.
- * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+ * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
  * @returns {AtomicFunctionNode}
  */
 export const atomicMin = ( pointerNode, valueNode, storeNode = null ) => atomicFunc( AtomicFunctionNode.ATOMIC_MIN, pointerNode, valueNode, storeNode );
@@ -250,7 +250,7 @@ export const atomicMin = ( pointerNode, valueNode, storeNode = null ) => atomicF
  * @function
  * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
  * @param {Node} valueNode - The value that mutates the atomic variable.
- * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+ * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
  * @returns {AtomicFunctionNode}
  */
 export const atomicAnd = ( pointerNode, valueNode, storeNode = null ) => atomicFunc( AtomicFunctionNode.ATOMIC_AND, pointerNode, valueNode, storeNode );
@@ -262,7 +262,7 @@ export const atomicAnd = ( pointerNode, valueNode, storeNode = null ) => atomicF
  * @function
  * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
  * @param {Node} valueNode - The value that mutates the atomic variable.
- * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+ * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
  * @returns {AtomicFunctionNode}
  */
 export const atomicOr = ( pointerNode, valueNode, storeNode = null ) => atomicFunc( AtomicFunctionNode.ATOMIC_OR, pointerNode, valueNode, storeNode );
@@ -274,7 +274,7 @@ export const atomicOr = ( pointerNode, valueNode, storeNode = null ) => atomicFu
  * @function
  * @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
  * @param {Node} valueNode - The value that mutates the atomic variable.
- * @param {Node?} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
+ * @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
  * @returns {AtomicFunctionNode}
  */
 export const atomicXor = ( pointerNode, valueNode, storeNode = null ) => atomicFunc( AtomicFunctionNode.ATOMIC_XOR, pointerNode, valueNode, storeNode );

+ 2 - 2
src/nodes/lighting/AONode.js

@@ -18,7 +18,7 @@ class AONode extends LightingNode {
 	/**
 	 * Constructs a new AO node.
 	 *
-	 * @param {Node<float>?} [aoNode=null] - The ambient occlusion node.
+	 * @param {?Node<float>} [aoNode=null] - The ambient occlusion node.
 	 */
 	constructor( aoNode = null ) {
 
@@ -27,7 +27,7 @@ class AONode extends LightingNode {
 		/**
 		 * The ambient occlusion node.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.aoNode = aoNode;

+ 1 - 1
src/nodes/lighting/AmbientLightNode.js

@@ -16,7 +16,7 @@ class AmbientLightNode extends AnalyticLightNode {
 	/**
 	 * Constructs a new ambient light node.
 	 *
-	 * @param {AmbientLight?} [light=null] - The ambient light source.
+	 * @param {?AmbientLight} [light=null] - The ambient light source.
 	 */
 	constructor( light = null ) {
 

+ 5 - 5
src/nodes/lighting/AnalyticLightNode.js

@@ -23,7 +23,7 @@ class AnalyticLightNode extends LightingNode {
 	/**
 	 * Constructs a new analytic light node.
 	 *
-	 * @param {Light?} [light=null] - The light source.
+	 * @param {?Light} [light=null] - The light source.
 	 */
 	constructor( light = null ) {
 
@@ -32,7 +32,7 @@ class AnalyticLightNode extends LightingNode {
 		/**
 		 * The light source.
 		 *
-		 * @type {Light?}
+		 * @type {?Light}
 		 * @default null
 		 */
 		this.light = light;
@@ -56,7 +56,7 @@ class AnalyticLightNode extends LightingNode {
 		 * This property is used to retain a reference to the original value of {@link AnalyticLightNode#colorNode}.
 		 * The final color node is represented by a different node when using shadows.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.baseColorNode = null;
@@ -64,7 +64,7 @@ class AnalyticLightNode extends LightingNode {
 		/**
 		 * Represents the light's shadow.
 		 *
-		 * @type {ShadowNode?}
+		 * @type {?ShadowNode}
    		 * @default null
 		 */
 		this.shadowNode = null;
@@ -72,7 +72,7 @@ class AnalyticLightNode extends LightingNode {
 		/**
 		 * Represents the light's shadow color.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
    		 * @default null
 		 */
 		this.shadowColorNode = null;

+ 2 - 2
src/nodes/lighting/BasicLightMapNode.js

@@ -19,7 +19,7 @@ class BasicLightMapNode extends LightingNode {
 	/**
 	 * Constructs a new basic light map node.
 	 *
-	 * @param {Node<vec3>?} [lightMapNode=null] - The light map node.
+	 * @param {?Node<vec3>} [lightMapNode=null] - The light map node.
 	 */
 	constructor( lightMapNode = null ) {
 
@@ -28,7 +28,7 @@ class BasicLightMapNode extends LightingNode {
 		/**
 		 * The light map node.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 */
 		this.lightMapNode = lightMapNode;
 

+ 1 - 1
src/nodes/lighting/DirectionalLightNode.js

@@ -17,7 +17,7 @@ class DirectionalLightNode extends AnalyticLightNode {
 	/**
 	 * Constructs a new directional light node.
 	 *
-	 * @param {DirectionalLight?} [light=null] - The directional light source.
+	 * @param {?DirectionalLight} [light=null] - The directional light source.
 	 */
 	constructor( light = null ) {
 

+ 1 - 1
src/nodes/lighting/EnvironmentNode.js

@@ -38,7 +38,7 @@ class EnvironmentNode extends LightingNode {
 		/**
 		 * A node representing the environment.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.envNode = envNode;

+ 1 - 1
src/nodes/lighting/HemisphereLightNode.js

@@ -23,7 +23,7 @@ class HemisphereLightNode extends AnalyticLightNode {
 	/**
 	 * Constructs a new hemisphere light node.
 	 *
-	 * @param {HemisphereLight?} [light=null] - The hemisphere light source.
+	 * @param {?HemisphereLight} [light=null] - The hemisphere light source.
 	 */
 	constructor( light = null ) {
 

+ 1 - 1
src/nodes/lighting/LightProbeNode.js

@@ -20,7 +20,7 @@ class LightProbeNode extends AnalyticLightNode {
 	/**
 	 * Constructs a new light probe node.
 	 *
-	 * @param {LightProbe?} [light=null] - The light probe.
+	 * @param {?LightProbe} [light=null] - The light probe.
 	 */
 	constructor( light = null ) {
 

+ 6 - 6
src/nodes/lighting/LightingContextNode.js

@@ -20,9 +20,9 @@ class LightingContextNode extends ContextNode {
 	 * Constructs a new lighting context node.
 	 *
 	 * @param {LightsNode} node - The lights node.
-	 * @param {LightingModel?} [lightingModel=null] - The current lighting model.
-	 * @param {Node<vec3>?} [backdropNode=null] - A backdrop node.
-	 * @param {Node<float>?} [backdropAlphaNode=null] - A backdrop alpha node.
+	 * @param {?LightingModel} [lightingModel=null] - The current lighting model.
+	 * @param {?Node<vec3>} [backdropNode=null] - A backdrop node.
+	 * @param {?Node<float>} [backdropAlphaNode=null] - A backdrop alpha node.
 	 */
 	constructor( node, lightingModel = null, backdropNode = null, backdropAlphaNode = null ) {
 
@@ -31,7 +31,7 @@ class LightingContextNode extends ContextNode {
 		/**
 		 * The current lighting model.
 		 *
-		 * @type {LightingModel?}
+		 * @type {?LightingModel}
 		 * @default null
 		 */
 		this.lightingModel = lightingModel;
@@ -39,7 +39,7 @@ class LightingContextNode extends ContextNode {
 		/**
 		 * A backdrop node.
 		 *
-		 * @type {Node<vec3>?}
+		 * @type {?Node<vec3>}
 		 * @default null
 		 */
 		this.backdropNode = backdropNode;
@@ -47,7 +47,7 @@ class LightingContextNode extends ContextNode {
 		/**
 		 * A backdrop alpha node.
 		 *
-		 * @type {Node<float>?}
+		 * @type {?Node<float>}
 		 * @default null
 		 */
 		this.backdropAlphaNode = backdropAlphaNode;

+ 2 - 2
src/nodes/lighting/LightsNode.js

@@ -82,7 +82,7 @@ class LightsNode extends Node {
 		 * corresponding light node.
 		 *
 		 * @private
-		 * @type {Array<LightingNode>?}
+		 * @type {?Array<LightingNode>}
 		 * @default null
 		 */
 		this._lightNodes = null;
@@ -91,7 +91,7 @@ class LightsNode extends Node {
 		 * A hash for identifying the current light nodes setup.
 		 *
 		 * @private
-		 * @type {string?}
+		 * @type {?string}
 		 * @default null
 		 */
 		this._lightNodesHash = null;

+ 1 - 1
src/nodes/lighting/PointLightNode.js

@@ -50,7 +50,7 @@ class PointLightNode extends AnalyticLightNode {
 	/**
 	 * Constructs a new point light node.
 	 *
-	 * @param {PointLight?} [light=null] - The point light source.
+	 * @param {?PointLight} [light=null] - The point light source.
 	 */
 	constructor( light = null ) {
 

+ 2 - 2
src/nodes/lighting/PointShadowNode.js

@@ -175,7 +175,7 @@ class PointShadowNode extends ShadowNode {
 	 * Constructs a new point shadow node.
 	 *
 	 * @param {PointLight} light - The shadow casting point light.
-	 * @param {PointLightShadow?} [shadow=null] - An optional point light shadow.
+	 * @param {?PointLightShadow} [shadow=null] - An optional point light shadow.
 	 */
 	constructor( light, shadow = null ) {
 
@@ -300,7 +300,7 @@ export default PointShadowNode;
  * @tsl
  * @function
  * @param {PointLight} light - The shadow casting point light.
- * @param {PointLightShadow?} [shadow=null] - An optional point light shadow.
+ * @param {?PointLightShadow} [shadow=null] - An optional point light shadow.
  * @return {PointShadowNode} The created point shadow node.
  */
 export const pointShadow = ( light, shadow ) => nodeObject( new PointShadowNode( light, shadow ) );

+ 1 - 1
src/nodes/lighting/RectAreaLightNode.js

@@ -29,7 +29,7 @@ class RectAreaLightNode extends AnalyticLightNode {
 	/**
 	 * Constructs a new rect area light node.
 	 *
-	 * @param {RectAreaLight?} [light=null] - The rect area light source.
+	 * @param {?RectAreaLight} [light=null] - The rect area light source.
 	 */
 	constructor( light = null ) {
 

+ 8 - 8
src/nodes/lighting/ShadowNode.js

@@ -326,7 +326,7 @@ class ShadowNode extends ShadowBaseNode {
 	 * Constructs a new shadow node.
 	 *
 	 * @param {Light} light - The shadow casting light.
-	 * @param {LightShadow?} [shadow=null] - An optional light shadow.
+	 * @param {?LightShadow} [shadow=null] - An optional light shadow.
 	 */
 	constructor( light, shadow = null ) {
 
@@ -336,7 +336,7 @@ class ShadowNode extends ShadowBaseNode {
 		 * The light shadow which defines the properties light's
 		 * shadow.
 		 *
-		 * @type {LightShadow?}
+		 * @type {?LightShadow}
 		 * @default null
 		 */
 		this.shadow = shadow || light.shadow;
@@ -344,7 +344,7 @@ class ShadowNode extends ShadowBaseNode {
 		/**
 		 * A reference to the shadow map which is a render target.
 		 *
-		 * @type {RenderTarget?}
+		 * @type {?RenderTarget}
 		 * @default null
 		 */
 		this.shadowMap = null;
@@ -353,7 +353,7 @@ class ShadowNode extends ShadowBaseNode {
 		 * Only relevant for VSM shadows. Render target for the
 		 * first VSM render pass.
 		 *
-		 * @type {RenderTarget?}
+		 * @type {?RenderTarget}
 		 * @default null
 		 */
 		this.vsmShadowMapVertical = null;
@@ -362,7 +362,7 @@ class ShadowNode extends ShadowBaseNode {
 		 * Only relevant for VSM shadows. Render target for the
 		 * second VSM render pass.
 		 *
-		 * @type {RenderTarget?}
+		 * @type {?RenderTarget}
 		 * @default null
 		 */
 		this.vsmShadowMapHorizontal = null;
@@ -371,7 +371,7 @@ class ShadowNode extends ShadowBaseNode {
 		 * Only relevant for VSM shadows. Node material which
 		 * is used to render the first VSM pass.
 		 *
-		 * @type {NodeMaterial?}
+		 * @type {?NodeMaterial}
 		 * @default null
 		 */
 		this.vsmMaterialVertical = null;
@@ -380,7 +380,7 @@ class ShadowNode extends ShadowBaseNode {
 		 * Only relevant for VSM shadows. Node material which
 		 * is used to render the second VSM pass.
 		 *
-		 * @type {NodeMaterial?}
+		 * @type {?NodeMaterial}
 		 * @default null
 		 */
 		this.vsmMaterialHorizontal = null;
@@ -389,7 +389,7 @@ class ShadowNode extends ShadowBaseNode {
 		 * A reference to the output node which defines the
 		 * final result of this shadow node.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @private
 		 * @default null
 		 */

+ 1 - 1
src/nodes/lighting/SpotLightNode.js

@@ -23,7 +23,7 @@ class SpotLightNode extends AnalyticLightNode {
 	/**
 	 * Constructs a new spot light node.
 	 *
-	 * @param {SpotLight?} [light=null] - The spot light source.
+	 * @param {?SpotLight} [light=null] - The spot light source.
 	 */
 	constructor( light = null ) {
 

+ 3 - 3
src/nodes/math/ConditionalNode.js

@@ -28,7 +28,7 @@ class ConditionalNode extends Node {
 	 *
 	 * @param {Node} condNode - The node that defines the condition.
 	 * @param {Node} ifNode - The node that is evaluate when the condition ends up `true`.
-	 * @param {Node?} [elseNode=null] - The node that is evaluate when the condition ends up `false`.
+	 * @param {?Node} [elseNode=null] - The node that is evaluate when the condition ends up `false`.
 	 */
 	constructor( condNode, ifNode, elseNode = null ) {
 
@@ -51,7 +51,7 @@ class ConditionalNode extends Node {
 		/**
 		 * The node that is evaluate when the condition ends up `false`.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.elseNode = elseNode;
@@ -203,7 +203,7 @@ export default ConditionalNode;
  * @function
  * @param {Node} condNode - The node that defines the condition.
  * @param {Node} ifNode - The node that is evaluate when the condition ends up `true`.
- * @param {Node?} [elseNode=null] - The node that is evaluate when the condition ends up `false`.
+ * @param {?Node} [elseNode=null] - The node that is evaluate when the condition ends up `false`.
  * @returns {ConditionalNode}
  */
 export const select = /*@__PURE__*/ nodeProxy( ConditionalNode );

+ 5 - 5
src/nodes/math/MathNode.js

@@ -26,8 +26,8 @@ class MathNode extends TempNode {
 	 *
 	 * @param {string} method - The method name.
 	 * @param {Node} aNode - The first input.
-	 * @param {Node?} [bNode=null] - The second input.
-	 * @param {Node?} [cNode=null] - The third input.
+	 * @param {?Node} [bNode=null] - The second input.
+	 * @param {?Node} [cNode=null] - The third input.
 	 */
 	constructor( method, aNode, bNode = null, cNode = null ) {
 
@@ -50,7 +50,7 @@ class MathNode extends TempNode {
 		/**
 		 * The second input.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.bNode = bNode;
@@ -58,7 +58,7 @@ class MathNode extends TempNode {
 		/**
 		 * The third input.
 		 *
-		 * @type {Node?}
+		 * @type {?Node}
 		 * @default null
 		 */
 		this.cNode = cNode;
@@ -569,7 +569,7 @@ export const acos = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ACOS );
  * @tsl
  * @function
  * @param {Node | number} y - The y parameter.
- * @param {(Node | number)?} x - The x parameter.
+ * @param {?(Node | number)} x - The x parameter.
  * @returns {Node}
  */
 export const atan = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ATAN );

+ 1 - 1
src/nodes/utils/Discard.js

@@ -7,7 +7,7 @@ import { addMethodChaining } from '../tsl/TSLCore.js';
  *
  * @tsl
  * @function
- * @param {ConditionalNode?} conditional - An optional conditional node. It allows to decide whether the discard should be executed or not.
+ * @param {?ConditionalNode} conditional - An optional conditional node. It allows to decide whether the discard should be executed or not.
  * @return {Node} The `discard` expression.
  */
 export const Discard = ( conditional ) => ( conditional ? select( conditional, expression( 'discard' ) ) : expression( 'discard' ) ).append();

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä

粤ICP备19079148号