super-three 0.171.0 → 0.172.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +157 -49
  3. package/build/three.core.js +104 -42
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +53 -8
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +10 -5
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +21191 -1008
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +21189 -1008
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +0 -5
  14. package/examples/jsm/animation/CCDIKSolver.js +3 -2
  15. package/examples/jsm/controls/ArcballControls.js +28 -19
  16. package/examples/jsm/controls/OrbitControls.js +5 -4
  17. package/examples/jsm/csm/CSMShadowNode.js +16 -11
  18. package/examples/jsm/curves/NURBSCurve.js +1 -1
  19. package/examples/jsm/curves/NURBSUtils.js +3 -0
  20. package/examples/jsm/effects/OutlineEffect.js +1 -1
  21. package/examples/jsm/exporters/GLTFExporter.js +11 -7
  22. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  23. package/examples/jsm/exporters/PLYExporter.js +2 -2
  24. package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
  25. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  26. package/examples/jsm/lights/LightProbeGenerator.js +3 -3
  27. package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
  28. package/examples/jsm/loaders/3MFLoader.js +6 -3
  29. package/examples/jsm/loaders/BVHLoader.js +1 -1
  30. package/examples/jsm/loaders/ColladaLoader.js +5 -5
  31. package/examples/jsm/loaders/DDSLoader.js +42 -0
  32. package/examples/jsm/loaders/GCodeLoader.js +1 -1
  33. package/examples/jsm/loaders/GLTFLoader.js +22 -2
  34. package/examples/jsm/loaders/KTX2Loader.js +6 -1
  35. package/examples/jsm/loaders/KTXLoader.js +4 -4
  36. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  37. package/examples/jsm/loaders/LottieLoader.js +1 -1
  38. package/examples/jsm/loaders/MTLLoader.js +1 -0
  39. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  40. package/examples/jsm/loaders/PLYLoader.js +7 -7
  41. package/examples/jsm/loaders/PVRLoader.js +1 -1
  42. package/examples/jsm/loaders/SVGLoader.js +2 -2
  43. package/examples/jsm/loaders/TDSLoader.js +1 -1
  44. package/examples/jsm/loaders/VRMLLoader.js +7 -7
  45. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  46. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
  47. package/examples/jsm/math/ConvexHull.js +1 -1
  48. package/examples/jsm/math/OBB.js +17 -0
  49. package/examples/jsm/misc/ProgressiveLightMapGPU.js +10 -10
  50. package/examples/jsm/misc/Volume.js +20 -12
  51. package/examples/jsm/misc/VolumeSlice.js +2 -2
  52. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  53. package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
  54. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  55. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  56. package/examples/jsm/objects/Sky.js +2 -2
  57. package/examples/jsm/objects/SkyMesh.js +3 -3
  58. package/examples/jsm/objects/Water2.js +1 -1
  59. package/examples/jsm/objects/Water2Mesh.js +2 -2
  60. package/examples/jsm/objects/WaterMesh.js +4 -4
  61. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  62. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  63. package/examples/jsm/postprocessing/OutlinePass.js +4 -4
  64. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  65. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  66. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  67. package/examples/jsm/postprocessing/SSRPass.js +2 -4
  68. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  69. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  70. package/examples/jsm/shaders/BokehShader2.js +1 -1
  71. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  72. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  73. package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
  74. package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
  75. package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
  76. package/examples/jsm/tsl/display/BleachBypass.js +10 -0
  77. package/examples/jsm/tsl/display/BloomNode.js +233 -26
  78. package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
  79. package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
  80. package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
  81. package/examples/jsm/tsl/display/FXAANode.js +52 -3
  82. package/examples/jsm/tsl/display/FilmNode.js +47 -1
  83. package/examples/jsm/tsl/display/GTAONode.js +210 -14
  84. package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
  85. package/examples/jsm/tsl/display/LensflareNode.js +131 -13
  86. package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
  87. package/examples/jsm/tsl/display/MotionBlur.js +12 -2
  88. package/examples/jsm/tsl/display/OutlineNode.js +343 -26
  89. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
  90. package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
  91. package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
  92. package/examples/jsm/tsl/display/SMAANode.js +187 -46
  93. package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
  94. package/examples/jsm/tsl/display/SSRNode.js +194 -21
  95. package/examples/jsm/tsl/display/Sepia.js +9 -0
  96. package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
  97. package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
  98. package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
  99. package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
  100. package/examples/jsm/tsl/display/TransitionNode.js +71 -6
  101. package/examples/jsm/tsl/display/hashBlur.js +14 -3
  102. package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
  103. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  104. package/examples/jsm/utils/CameraUtils.js +4 -1
  105. package/examples/jsm/utils/GeometryUtils.js +22 -19
  106. package/examples/jsm/utils/SceneUtils.js +2 -2
  107. package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
  108. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  109. package/package.json +8 -3
  110. package/src/Three.Core.js +2 -0
  111. package/src/Three.Legacy.js +0 -21
  112. package/src/Three.TSL.js +9 -4
  113. package/src/Three.WebGPU.Nodes.js +2 -2
  114. package/src/Three.WebGPU.js +2 -2
  115. package/src/animation/PropertyBinding.js +2 -2
  116. package/src/cameras/PerspectiveCamera.js +18 -2
  117. package/src/constants.js +1 -1
  118. package/src/core/RenderTarget.js +18 -0
  119. package/src/core/RenderTarget3D.js +22 -0
  120. package/src/core/RenderTargetArray.js +22 -0
  121. package/src/extras/Earcut.js +1 -1
  122. package/src/extras/PMREMGenerator.js +20 -0
  123. package/src/extras/TextureUtils.js +6 -0
  124. package/src/helpers/CameraHelper.js +16 -13
  125. package/src/loaders/nodes/NodeLoader.js +59 -0
  126. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  127. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  128. package/src/materials/nodes/InstancedPointsNodeMaterial.js +72 -19
  129. package/src/materials/nodes/Line2NodeMaterial.js +128 -34
  130. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  131. package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
  132. package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
  133. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  134. package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
  135. package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
  136. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  137. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
  138. package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
  139. package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
  140. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  141. package/src/materials/nodes/NodeMaterial.js +474 -21
  142. package/src/materials/nodes/PointsNodeMaterial.js +22 -13
  143. package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
  144. package/src/materials/nodes/SpriteNodeMaterial.js +77 -19
  145. package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
  146. package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -0
  147. package/src/nodes/Nodes.js +1 -6
  148. package/src/nodes/TSL.js +2 -3
  149. package/src/nodes/accessors/AccessorsUtils.js +27 -0
  150. package/src/nodes/accessors/Arrays.js +24 -5
  151. package/src/nodes/accessors/BatchNode.js +39 -3
  152. package/src/nodes/accessors/Bitangent.js +37 -0
  153. package/src/nodes/accessors/BufferAttributeNode.js +178 -5
  154. package/src/nodes/accessors/BufferNode.js +63 -0
  155. package/src/nodes/accessors/BuiltinNode.js +38 -0
  156. package/src/nodes/accessors/Camera.js +49 -0
  157. package/src/nodes/accessors/ClippingNode.js +71 -2
  158. package/src/nodes/accessors/CubeTextureNode.js +64 -0
  159. package/src/nodes/accessors/InstanceNode.js +85 -2
  160. package/src/nodes/accessors/InstancedMeshNode.js +28 -3
  161. package/src/nodes/accessors/InstancedPointsMaterialNode.js +13 -0
  162. package/src/nodes/accessors/Lights.js +50 -1
  163. package/src/nodes/accessors/MaterialNode.js +302 -8
  164. package/src/nodes/accessors/MaterialProperties.js +7 -0
  165. package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
  166. package/src/nodes/accessors/ModelNode.js +100 -5
  167. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
  168. package/src/nodes/accessors/MorphNode.js +48 -4
  169. package/src/nodes/accessors/Normal.js +59 -3
  170. package/src/nodes/accessors/Object3DNode.js +102 -1
  171. package/src/nodes/accessors/PointUVNode.js +26 -0
  172. package/src/nodes/accessors/Position.js +53 -4
  173. package/src/nodes/accessors/ReferenceBaseNode.js +188 -0
  174. package/src/nodes/accessors/ReferenceNode.js +202 -2
  175. package/src/nodes/accessors/ReflectVector.js +24 -0
  176. package/src/nodes/accessors/RendererReferenceNode.js +46 -1
  177. package/src/nodes/accessors/SceneNode.js +54 -0
  178. package/src/nodes/accessors/SkinningNode.js +127 -1
  179. package/src/nodes/accessors/StorageBufferNode.js +168 -4
  180. package/src/nodes/accessors/StorageTextureNode.js +118 -0
  181. package/src/nodes/accessors/Tangent.js +36 -0
  182. package/src/nodes/accessors/Texture3DNode.js +89 -5
  183. package/src/nodes/accessors/TextureBicubic.js +12 -2
  184. package/src/nodes/accessors/TextureNode.js +309 -10
  185. package/src/nodes/accessors/TextureSizeNode.js +42 -0
  186. package/src/nodes/accessors/UV.js +10 -1
  187. package/src/nodes/accessors/UniformArrayNode.js +223 -23
  188. package/src/nodes/accessors/UserDataNode.js +46 -0
  189. package/src/nodes/accessors/VelocityNode.js +82 -0
  190. package/src/nodes/accessors/VertexColorNode.js +39 -2
  191. package/src/nodes/code/CodeNode.js +95 -1
  192. package/src/nodes/code/ExpressionNode.js +28 -0
  193. package/src/nodes/code/FunctionCallNode.js +37 -0
  194. package/src/nodes/code/FunctionNode.js +45 -0
  195. package/src/nodes/code/ScriptableNode.js +223 -1
  196. package/src/nodes/code/ScriptableValueNode.js +85 -1
  197. package/src/nodes/core/AssignNode.js +48 -2
  198. package/src/nodes/core/AttributeNode.js +43 -0
  199. package/src/nodes/core/BypassNode.js +47 -2
  200. package/src/nodes/core/CacheNode.js +53 -2
  201. package/src/nodes/core/ConstNode.js +24 -0
  202. package/src/nodes/core/ContextNode.js +65 -0
  203. package/src/nodes/core/IndexNode.js +68 -7
  204. package/src/nodes/core/InputNode.js +48 -0
  205. package/src/nodes/core/LightingModel.js +60 -0
  206. package/src/nodes/core/MRTNode.js +66 -0
  207. package/src/nodes/core/Node.js +337 -12
  208. package/src/nodes/core/NodeAttribute.js +38 -0
  209. package/src/nodes/core/NodeBuilder.js +945 -15
  210. package/src/nodes/core/NodeCache.js +41 -2
  211. package/src/nodes/core/NodeCode.js +31 -0
  212. package/src/nodes/core/NodeFrame.js +123 -2
  213. package/src/nodes/core/NodeFunction.js +46 -0
  214. package/src/nodes/core/NodeFunctionInput.js +44 -0
  215. package/src/nodes/core/NodeParser.js +11 -0
  216. package/src/nodes/core/NodeUniform.js +52 -0
  217. package/src/nodes/core/NodeUtils.js +141 -0
  218. package/src/nodes/core/NodeVar.js +30 -0
  219. package/src/nodes/core/NodeVarying.js +28 -0
  220. package/src/nodes/core/OutputStructNode.js +33 -2
  221. package/src/nodes/core/ParameterNode.js +28 -0
  222. package/src/nodes/core/PropertyNode.js +232 -0
  223. package/src/nodes/core/StackNode.js +78 -0
  224. package/src/nodes/core/StructTypeNode.js +39 -1
  225. package/src/nodes/core/TempNode.js +30 -4
  226. package/src/nodes/core/UniformGroupNode.js +82 -7
  227. package/src/nodes/core/UniformNode.js +66 -0
  228. package/src/nodes/core/VarNode.js +52 -0
  229. package/src/nodes/core/VaryingNode.js +83 -2
  230. package/src/nodes/core/constants.js +36 -0
  231. package/src/nodes/display/BumpMapNode.js +37 -0
  232. package/src/nodes/display/ColorAdjustment.js +53 -11
  233. package/src/nodes/display/ColorSpaceFunctions.js +16 -0
  234. package/src/nodes/display/ColorSpaceNode.js +82 -0
  235. package/src/nodes/display/FrontFacingNode.js +29 -0
  236. package/src/nodes/display/NormalMapNode.js +43 -0
  237. package/src/nodes/display/PassNode.js +298 -7
  238. package/src/nodes/display/PosterizeNode.js +33 -0
  239. package/src/nodes/display/RenderOutputNode.js +66 -1
  240. package/src/nodes/display/ScreenNode.js +87 -0
  241. package/src/nodes/display/ToneMappingFunctions.js +58 -10
  242. package/src/nodes/display/ToneMappingNode.js +55 -2
  243. package/src/nodes/display/ToonOutlinePassNode.js +73 -0
  244. package/src/nodes/display/ViewportDepthNode.js +122 -8
  245. package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
  246. package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
  247. package/src/nodes/display/ViewportTextureNode.js +57 -0
  248. package/src/nodes/fog/Fog.js +93 -0
  249. package/src/nodes/functions/BasicLightingModel.js +24 -0
  250. package/src/nodes/functions/PhongLightingModel.js +34 -2
  251. package/src/nodes/functions/PhysicalLightingModel.js +167 -8
  252. package/src/nodes/functions/ShadowMaskModel.js +23 -0
  253. package/src/nodes/functions/ToonLightingModel.js +20 -0
  254. package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
  255. package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
  256. package/src/nodes/geometry/RangeNode.js +54 -2
  257. package/src/nodes/gpgpu/AtomicFunctionNode.js +157 -1
  258. package/src/nodes/gpgpu/BarrierNode.js +47 -0
  259. package/src/nodes/gpgpu/ComputeBuiltinNode.js +126 -0
  260. package/src/nodes/gpgpu/ComputeNode.js +106 -2
  261. package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
  262. package/src/nodes/lighting/AONode.js +18 -0
  263. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  264. package/src/nodes/lighting/AnalyticLightNode.js +97 -2
  265. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  266. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  267. package/src/nodes/lighting/DirectionalLightNode.js +10 -0
  268. package/src/nodes/lighting/EnvironmentNode.js +18 -0
  269. package/src/nodes/lighting/HemisphereLightNode.js +31 -0
  270. package/src/nodes/lighting/IESSpotLightNode.js +11 -0
  271. package/src/nodes/lighting/IrradianceNode.js +17 -0
  272. package/src/nodes/lighting/LightProbeNode.js +20 -0
  273. package/src/nodes/lighting/LightUtils.js +12 -0
  274. package/src/nodes/lighting/LightingContextNode.js +48 -0
  275. package/src/nodes/lighting/LightingNode.js +15 -6
  276. package/src/nodes/lighting/LightsNode.js +132 -1
  277. package/src/nodes/lighting/PointLightNode.js +32 -1
  278. package/src/nodes/lighting/PointShadowNode.js +54 -1
  279. package/src/nodes/lighting/RectAreaLightNode.js +44 -6
  280. package/src/nodes/lighting/ShadowBaseNode.js +93 -0
  281. package/src/nodes/lighting/ShadowNode.js +240 -34
  282. package/src/nodes/lighting/SpotLightNode.js +43 -0
  283. package/src/nodes/math/ConditionalNode.js +70 -3
  284. package/src/nodes/math/Hash.js +9 -0
  285. package/src/nodes/math/MathNode.js +614 -11
  286. package/src/nodes/math/MathUtils.js +45 -1
  287. package/src/nodes/math/OperatorNode.js +233 -0
  288. package/src/nodes/math/TriNoise3D.js +18 -7
  289. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  290. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  291. package/src/nodes/pmrem/PMREMNode.js +133 -0
  292. package/src/nodes/pmrem/PMREMUtils.js +1 -1
  293. package/src/nodes/procedural/Checker.js +9 -0
  294. package/src/nodes/tsl/TSLBase.js +2 -2
  295. package/src/nodes/utils/ArrayElementNode.js +38 -2
  296. package/src/nodes/utils/ConvertNode.js +31 -0
  297. package/src/nodes/utils/CubeMapNode.js +78 -0
  298. package/src/nodes/utils/Discard.js +16 -0
  299. package/src/nodes/utils/EquirectUVNode.js +31 -1
  300. package/src/nodes/utils/FlipNode.js +38 -0
  301. package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
  302. package/src/nodes/utils/JoinNode.js +25 -0
  303. package/src/nodes/utils/LoopNode.js +74 -1
  304. package/src/nodes/utils/MatcapUVNode.js +17 -0
  305. package/src/nodes/utils/MaxMipLevelNode.js +49 -0
  306. package/src/nodes/utils/Oscillators.js +33 -0
  307. package/src/nodes/utils/Packing.js +17 -0
  308. package/src/nodes/utils/PostProcessingUtils.js +28 -23
  309. package/src/nodes/utils/RTTNode.js +123 -2
  310. package/src/nodes/utils/ReflectorNode.js +174 -4
  311. package/src/nodes/utils/RemapNode.js +79 -0
  312. package/src/nodes/utils/RotateNode.js +41 -0
  313. package/src/nodes/utils/SetNode.js +44 -1
  314. package/src/nodes/utils/SplitNode.js +55 -3
  315. package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
  316. package/src/nodes/utils/SpriteUtils.js +17 -0
  317. package/src/nodes/utils/StorageArrayElementNode.js +40 -0
  318. package/src/nodes/utils/Timer.js +19 -0
  319. package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
  320. package/src/nodes/utils/UVUtils.js +20 -0
  321. package/src/nodes/utils/ViewportUtils.js +13 -0
  322. package/src/objects/BatchedMesh.js +1 -2
  323. package/src/objects/ClippingGroup.js +49 -0
  324. package/src/renderers/WebGLRenderer.js +23 -4
  325. package/src/renderers/common/Animation.js +63 -0
  326. package/src/renderers/common/Attributes.js +36 -0
  327. package/src/renderers/common/Backend.js +467 -52
  328. package/src/renderers/common/Background.js +34 -1
  329. package/src/renderers/common/BindGroup.js +43 -0
  330. package/src/renderers/common/Binding.js +35 -0
  331. package/src/renderers/common/Bindings.js +93 -1
  332. package/src/renderers/common/Buffer.js +49 -0
  333. package/src/renderers/common/BufferUtils.js +27 -0
  334. package/src/renderers/common/BundleGroup.js +57 -0
  335. package/src/renderers/common/ChainMap.js +38 -1
  336. package/src/renderers/common/ClippingContext.js +107 -14
  337. package/src/renderers/common/Color4.js +36 -0
  338. package/src/renderers/common/ComputePipeline.js +24 -0
  339. package/src/renderers/common/CubeRenderTarget.js +13 -0
  340. package/src/renderers/common/DataMap.js +37 -1
  341. package/src/renderers/common/Geometries.js +98 -0
  342. package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
  343. package/src/renderers/common/Info.js +87 -0
  344. package/src/renderers/common/Lighting.js +26 -0
  345. package/src/renderers/common/Pipeline.js +22 -0
  346. package/src/renderers/common/Pipelines.js +148 -5
  347. package/src/renderers/common/PostProcessing.js +75 -3
  348. package/src/renderers/common/ProgrammableStage.js +60 -2
  349. package/src/renderers/common/QuadMesh.js +54 -5
  350. package/src/renderers/common/RenderBundle.js +14 -8
  351. package/src/renderers/common/RenderBundles.js +33 -10
  352. package/src/renderers/common/RenderContext.js +169 -4
  353. package/src/renderers/common/RenderContexts.js +42 -2
  354. package/src/renderers/common/RenderList.js +178 -0
  355. package/src/renderers/common/RenderLists.js +31 -0
  356. package/src/renderers/common/RenderObject.js +328 -4
  357. package/src/renderers/common/RenderObjects.js +101 -7
  358. package/src/renderers/common/RenderPipeline.js +24 -0
  359. package/src/renderers/common/Renderer.js +1096 -31
  360. package/src/renderers/common/RendererUtils.js +193 -0
  361. package/src/renderers/common/SampledTexture.js +121 -0
  362. package/src/renderers/common/Sampler.js +30 -0
  363. package/src/renderers/common/StorageBuffer.js +24 -0
  364. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  365. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  366. package/src/renderers/common/StorageTexture.js +38 -0
  367. package/src/renderers/common/Textures.js +83 -0
  368. package/src/renderers/common/Uniform.js +188 -2
  369. package/src/renderers/common/UniformBuffer.js +19 -0
  370. package/src/renderers/common/UniformsGroup.js +139 -2
  371. package/src/renderers/common/extras/PMREMGenerator.js +24 -3
  372. package/src/renderers/common/nodes/NodeBuilderState.js +95 -1
  373. package/src/renderers/common/nodes/NodeLibrary.js +89 -0
  374. package/src/renderers/common/nodes/NodeSampledTexture.js +91 -2
  375. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  376. package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
  377. package/src/renderers/common/nodes/NodeUniform.js +189 -0
  378. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  379. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  380. package/src/renderers/common/nodes/Nodes.js +327 -60
  381. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  382. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  383. package/src/renderers/webgl-fallback/WebGLBackend.js +547 -29
  384. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +0 -1
  385. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
  386. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1 -1
  387. package/src/renderers/webgpu/WebGPUBackend.js +480 -49
  388. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +34 -0
  389. package/src/renderers/webgpu/WebGPURenderer.js +35 -0
  390. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
  391. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
  392. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +59 -11
  393. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
  394. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  395. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +10 -8
  396. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +9 -1
  397. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +5 -9
  398. package/src/renderers/webgpu/utils/WebGPUUtils.js +30 -0
  399. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  400. package/src/renderers/webxr/WebXRManager.js +7 -1
  401. package/src/textures/Data3DTexture.js +2 -2
  402. package/src/textures/Texture.js +4 -0
  403. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
  404. package/examples/jsm/animation/MMDPhysics.js +0 -1408
  405. package/examples/jsm/exporters/MMDExporter.js +0 -223
  406. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  407. package/examples/jsm/loaders/MMDLoader.js +0 -2298
  408. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  409. package/src/nodes/core/UniformGroup.js +0 -13
  410. package/src/nodes/fog/FogExp2Node.js +0 -35
  411. package/src/nodes/fog/FogNode.js +0 -50
  412. package/src/nodes/fog/FogRangeNode.js +0 -36
  413. package/src/renderers/common/PostProcessingUtils.js +0 -86
@@ -1,5 +1,5 @@
1
1
  import NodeMaterial from './NodeMaterial.js';
2
- import { varyingProperty } from '../../nodes/core/PropertyNode.js';
2
+ import { dashSize, gapSize, varyingProperty } from '../../nodes/core/PropertyNode.js';
3
3
  import { attribute } from '../../nodes/core/AttributeNode.js';
4
4
  import { cameraProjectionMatrix } from '../../nodes/accessors/Camera.js';
5
5
  import { materialColor, materialLineScale, materialLineDashSize, materialLineGapSize, materialLineDashOffset, materialLineWidth, materialOpacity } from '../../nodes/accessors/MaterialNode.js';
@@ -9,7 +9,6 @@ import { mix, smoothstep } from '../../nodes/math/MathNode.js';
9
9
  import { Fn, float, vec2, vec3, vec4, If } from '../../nodes/tsl/TSLBase.js';
10
10
  import { uv } from '../../nodes/accessors/UV.js';
11
11
  import { viewport } from '../../nodes/display/ScreenNode.js';
12
- import { dashSize, gapSize } from '../../nodes/core/PropertyNode.js';
13
12
  import { viewportSharedTexture } from '../../nodes/display/ViewportSharedTextureNode.js';
14
13
 
15
14
  import { LineDashedMaterial } from '../LineDashedMaterial.js';
@@ -17,6 +16,12 @@ import { NoBlending } from '../../constants.js';
17
16
 
18
17
  const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
19
18
 
19
+ /**
20
+ * This node material can be used to render lines with a size larger than one
21
+ * by representing them as instanced meshes.
22
+ *
23
+ * @augments NodeMaterial
24
+ */
20
25
  class Line2NodeMaterial extends NodeMaterial {
21
26
 
22
27
  static get type() {
@@ -25,49 +30,120 @@ class Line2NodeMaterial extends NodeMaterial {
25
30
 
26
31
  }
27
32
 
28
- constructor( params = {} ) {
33
+ /**
34
+ * Constructs a new node material for wide line rendering.
35
+ *
36
+ * @param {Object?} parameters - The configuration parameter.
37
+ */
38
+ constructor( parameters = {} ) {
29
39
 
30
40
  super();
31
41
 
32
- this.lights = false;
42
+ /**
43
+ * This flag can be used for type testing.
44
+ *
45
+ * @type {Boolean}
46
+ * @readonly
47
+ * @default true
48
+ */
49
+ this.isLine2NodeMaterial = true;
33
50
 
34
51
  this.setDefaultValues( _defaultValues );
35
52
 
36
- this.useAlphaToCoverage = true;
37
- this.useColor = params.vertexColors;
38
- this.useDash = params.dashed;
39
- this.useWorldUnits = false;
40
-
53
+ /**
54
+ * Whether vertex colors should be used or not.
55
+ *
56
+ * @type {Boolean}
57
+ * @default false
58
+ */
59
+ this.useColor = parameters.vertexColors;
60
+
61
+ /**
62
+ * The dash offset.
63
+ *
64
+ * @type {Number}
65
+ * @default 0
66
+ */
41
67
  this.dashOffset = 0;
68
+
69
+ /**
70
+ * The line width.
71
+ *
72
+ * @type {Number}
73
+ * @default 0
74
+ */
42
75
  this.lineWidth = 1;
43
76
 
77
+ /**
78
+ * Defines the lines color.
79
+ *
80
+ * @type {Node<vec3>?}
81
+ * @default null
82
+ */
44
83
  this.lineColorNode = null;
45
84
 
85
+ /**
86
+ * Defines the offset.
87
+ *
88
+ * @type {Node<float>?}
89
+ * @default null
90
+ */
46
91
  this.offsetNode = null;
92
+
93
+ /**
94
+ * Defines the dash scale.
95
+ *
96
+ * @type {Node<float>?}
97
+ * @default null
98
+ */
47
99
  this.dashScaleNode = null;
100
+
101
+ /**
102
+ * Defines the dash size.
103
+ *
104
+ * @type {Node<float>?}
105
+ * @default null
106
+ */
48
107
  this.dashSizeNode = null;
108
+
109
+ /**
110
+ * Defines the gap size.
111
+ *
112
+ * @type {Node<float>?}
113
+ * @default null
114
+ */
49
115
  this.gapSizeNode = null;
50
116
 
117
+ /**
118
+ * Blending is set to `NoBlending` since transparency
119
+ * is not supported, yet.
120
+ *
121
+ * @type {Number}
122
+ * @default 0
123
+ */
51
124
  this.blending = NoBlending;
52
125
 
53
- this.setValues( params );
126
+ this._useDash = parameters.dashed;
127
+ this._useAlphaToCoverage = true;
128
+ this._useWorldUnits = false;
129
+
130
+ this.setValues( parameters );
54
131
 
55
132
  }
56
133
 
134
+ /**
135
+ * Setups the vertex and fragment stage of this node material.
136
+ *
137
+ * @param {NodeBuilder} builder - The current node builder.
138
+ */
57
139
  setup( builder ) {
58
140
 
59
- this.setupShaders( builder );
60
-
61
- super.setup( builder );
62
-
63
- }
64
-
65
- setupShaders( { renderer } ) {
141
+ const { renderer } = builder;
66
142
 
67
- const useAlphaToCoverage = this.alphaToCoverage;
143
+ const useAlphaToCoverage = this._useAlphaToCoverage;
68
144
  const useColor = this.useColor;
69
- const useDash = this.dashed;
70
- const useWorldUnits = this.worldUnits;
145
+ const useDash = this._useDash;
146
+ const useWorldUnits = this._useWorldUnits;
71
147
 
72
148
  const trimSegment = Fn( ( { start, end } ) => {
73
149
 
@@ -101,7 +177,7 @@ class Line2NodeMaterial extends NodeMaterial {
101
177
  if ( useDash ) {
102
178
 
103
179
  const dashScaleNode = this.dashScaleNode ? float( this.dashScaleNode ) : materialLineScale;
104
- const offsetNode = this.offsetNode ? float( this.offsetNodeNode ) : materialLineDashOffset;
180
+ const offsetNode = this.offsetNode ? float( this.offsetNode ) : materialLineDashOffset;
105
181
 
106
182
  const instanceDistanceStart = attribute( 'instanceDistanceStart' );
107
183
  const instanceDistanceEnd = attribute( 'instanceDistanceEnd' );
@@ -278,7 +354,7 @@ class Line2NodeMaterial extends NodeMaterial {
278
354
  if ( useDash ) {
279
355
 
280
356
  const dashSizeNode = this.dashSizeNode ? float( this.dashSizeNode ) : materialLineDashSize;
281
- const gapSizeNode = this.dashSizeNode ? float( this.dashGapNode ) : materialLineGapSize;
357
+ const gapSizeNode = this.gapSizeNode ? float( this.gapSizeNode ) : materialLineGapSize;
282
358
 
283
359
  dashSize.assign( dashSizeNode );
284
360
  gapSize.assign( gapSizeNode );
@@ -395,56 +471,74 @@ class Line2NodeMaterial extends NodeMaterial {
395
471
 
396
472
  }
397
473
 
398
- }
474
+ super.setup( builder );
399
475
 
476
+ }
400
477
 
478
+ /**
479
+ * Whether the lines should sized in world units or not.
480
+ * When set to `false` the unit is pixel.
481
+ *
482
+ * @type {Boolean}
483
+ * @default false
484
+ */
401
485
  get worldUnits() {
402
486
 
403
- return this.useWorldUnits;
487
+ return this._useWorldUnits;
404
488
 
405
489
  }
406
490
 
407
491
  set worldUnits( value ) {
408
492
 
409
- if ( this.useWorldUnits !== value ) {
493
+ if ( this._useWorldUnits !== value ) {
410
494
 
411
- this.useWorldUnits = value;
495
+ this._useWorldUnits = value;
412
496
  this.needsUpdate = true;
413
497
 
414
498
  }
415
499
 
416
500
  }
417
501
 
418
-
502
+ /**
503
+ * Whether the lines should be dashed or not.
504
+ *
505
+ * @type {Boolean}
506
+ * @default false
507
+ */
419
508
  get dashed() {
420
509
 
421
- return this.useDash;
510
+ return this._useDash;
422
511
 
423
512
  }
424
513
 
425
514
  set dashed( value ) {
426
515
 
427
- if ( this.useDash !== value ) {
516
+ if ( this._useDash !== value ) {
428
517
 
429
- this.useDash = value;
518
+ this._useDash = value;
430
519
  this.needsUpdate = true;
431
520
 
432
521
  }
433
522
 
434
523
  }
435
524
 
436
-
525
+ /**
526
+ * Whether alpha to coverage should be used or not.
527
+ *
528
+ * @type {Boolean}
529
+ * @default true
530
+ */
437
531
  get alphaToCoverage() {
438
532
 
439
- return this.useAlphaToCoverage;
533
+ return this._useAlphaToCoverage;
440
534
 
441
535
  }
442
536
 
443
537
  set alphaToCoverage( value ) {
444
538
 
445
- if ( this.useAlphaToCoverage !== value ) {
539
+ if ( this._useAlphaToCoverage !== value ) {
446
540
 
447
- this.useAlphaToCoverage = value;
541
+ this._useAlphaToCoverage = value;
448
542
  this.needsUpdate = true;
449
543
 
450
544
  }
@@ -4,6 +4,11 @@ import { LineBasicMaterial } from '../LineBasicMaterial.js';
4
4
 
5
5
  const _defaultValues = /*@__PURE__*/ new LineBasicMaterial();
6
6
 
7
+ /**
8
+ * Node material version of `LineBasicMaterial`.
9
+ *
10
+ * @augments NodeMaterial
11
+ */
7
12
  class LineBasicNodeMaterial extends NodeMaterial {
8
13
 
9
14
  static get type() {
@@ -12,14 +17,24 @@ class LineBasicNodeMaterial extends NodeMaterial {
12
17
 
13
18
  }
14
19
 
20
+ /**
21
+ * Constructs a new line basic node material.
22
+ *
23
+ * @param {Object?} parameters - The configuration parameter.
24
+ */
15
25
  constructor( parameters ) {
16
26
 
17
27
  super();
18
28
 
29
+ /**
30
+ * This flag can be used for type testing.
31
+ *
32
+ * @type {Boolean}
33
+ * @readonly
34
+ * @default true
35
+ */
19
36
  this.isLineBasicNodeMaterial = true;
20
37
 
21
- this.lights = false;
22
-
23
38
  this.setDefaultValues( _defaultValues );
24
39
 
25
40
  this.setValues( parameters );
@@ -8,6 +8,11 @@ import { LineDashedMaterial } from '../LineDashedMaterial.js';
8
8
 
9
9
  const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
10
10
 
11
+ /**
12
+ * Node material version of `LineDashedMaterial`.
13
+ *
14
+ * @augments NodeMaterial
15
+ */
11
16
  class LineDashedNodeMaterial extends NodeMaterial {
12
17
 
13
18
  static get type() {
@@ -16,33 +21,101 @@ class LineDashedNodeMaterial extends NodeMaterial {
16
21
 
17
22
  }
18
23
 
24
+ /**
25
+ * Constructs a new line dashed node material.
26
+ *
27
+ * @param {Object?} parameters - The configuration parameter.
28
+ */
19
29
  constructor( parameters ) {
20
30
 
21
31
  super();
22
32
 
33
+ /**
34
+ * This flag can be used for type testing.
35
+ *
36
+ * @type {Boolean}
37
+ * @readonly
38
+ * @default true
39
+ */
23
40
  this.isLineDashedNodeMaterial = true;
24
41
 
25
- this.lights = false;
26
-
27
42
  this.setDefaultValues( _defaultValues );
28
43
 
44
+ /**
45
+ * The dash offset.
46
+ *
47
+ * @type {Number}
48
+ * @default 0
49
+ */
29
50
  this.dashOffset = 0;
30
51
 
52
+ /**
53
+ * The offset of dash materials is by default inferred from the `dashOffset`
54
+ * property. This node property allows to overwrite the default
55
+ * and define the offset with a node instead.
56
+ *
57
+ * If you don't want to overwrite the offset but modify the existing
58
+ * value instead, use {@link module:MaterialNode.materialLineDashOffset}.
59
+ *
60
+ * @type {Node<float>?}
61
+ * @default null
62
+ */
31
63
  this.offsetNode = null;
64
+
65
+ /**
66
+ * The scale of dash materials is by default inferred from the `scale`
67
+ * property. This node property allows to overwrite the default
68
+ * and define the scale with a node instead.
69
+ *
70
+ * If you don't want to overwrite the scale but modify the existing
71
+ * value instead, use {@link module:MaterialNode.materialLineScale}.
72
+ *
73
+ * @type {Node<float>?}
74
+ * @default null
75
+ */
32
76
  this.dashScaleNode = null;
77
+
78
+ /**
79
+ * The dash size of dash materials is by default inferred from the `dashSize`
80
+ * property. This node property allows to overwrite the default
81
+ * and define the dash size with a node instead.
82
+ *
83
+ * If you don't want to overwrite the dash size but modify the existing
84
+ * value instead, use {@link module:MaterialNode.materialLineDashSize}.
85
+ *
86
+ * @type {Node<float>?}
87
+ * @default null
88
+ */
33
89
  this.dashSizeNode = null;
90
+
91
+ /**
92
+ * The gap size of dash materials is by default inferred from the `gapSize`
93
+ * property. This node property allows to overwrite the default
94
+ * and define the gap size with a node instead.
95
+ *
96
+ * If you don't want to overwrite the gap size but modify the existing
97
+ * value instead, use {@link module:MaterialNode.materialLineGapSize}.
98
+ *
99
+ * @type {Node<float>?}
100
+ * @default null
101
+ */
34
102
  this.gapSizeNode = null;
35
103
 
36
104
  this.setValues( parameters );
37
105
 
38
106
  }
39
107
 
40
- setupVariants() {
108
+ /**
109
+ * Setups the dash specific node variables.
110
+ *
111
+ * @param {NodeBuilder} builder - The current node builder.
112
+ */
113
+ setupVariants( /* builder */ ) {
41
114
 
42
- const offsetNode = this.offsetNode ? float( this.offsetNodeNode ) : materialLineDashOffset;
115
+ const offsetNode = this.offsetNode ? float( this.offsetNode ) : materialLineDashOffset;
43
116
  const dashScaleNode = this.dashScaleNode ? float( this.dashScaleNode ) : materialLineScale;
44
117
  const dashSizeNode = this.dashSizeNode ? float( this.dashSizeNode ) : materialLineDashSize;
45
- const gapSizeNode = this.dashSizeNode ? float( this.dashGapNode ) : materialLineGapSize;
118
+ const gapSizeNode = this.gapSizeNode ? float( this.gapSizeNode ) : materialLineGapSize;
46
119
 
47
120
  dashSize.assign( dashSizeNode );
48
121
  gapSize.assign( gapSizeNode );
@@ -10,6 +10,11 @@ import { MeshBasicMaterial } from '../MeshBasicMaterial.js';
10
10
 
11
11
  const _defaultValues = /*@__PURE__*/ new MeshBasicMaterial();
12
12
 
13
+ /**
14
+ * Node material version of `MeshBasicMaterial`.
15
+ *
16
+ * @augments NodeMaterial
17
+ */
13
18
  class MeshBasicNodeMaterial extends NodeMaterial {
14
19
 
15
20
  static get type() {
@@ -18,12 +23,32 @@ class MeshBasicNodeMaterial extends NodeMaterial {
18
23
 
19
24
  }
20
25
 
26
+ /**
27
+ * Constructs a new mesh basic node material.
28
+ *
29
+ * @param {Object?} parameters - The configuration parameter.
30
+ */
21
31
  constructor( parameters ) {
22
32
 
23
33
  super();
24
34
 
35
+ /**
36
+ * This flag can be used for type testing.
37
+ *
38
+ * @type {Boolean}
39
+ * @readonly
40
+ * @default true
41
+ */
25
42
  this.isMeshBasicNodeMaterial = true;
26
43
 
44
+ /**
45
+ * Although the basic material is by definition unlit, we set
46
+ * this property to `true` since we use a lighting model to compute
47
+ * the outgoing light of the fragment shader.
48
+ *
49
+ * @type {Boolean}
50
+ * @default true
51
+ */
27
52
  this.lights = true;
28
53
 
29
54
  this.setDefaultValues( _defaultValues );
@@ -32,12 +57,25 @@ class MeshBasicNodeMaterial extends NodeMaterial {
32
57
 
33
58
  }
34
59
 
60
+ /**
61
+ * Basic materials are not affected by normal and bump maps so we
62
+ * return by default {@link module:Normal.normalView}.
63
+ *
64
+ * @return {Node<vec3>} The normal node.
65
+ */
35
66
  setupNormal() {
36
67
 
37
68
  return normalView; // see #28839
38
69
 
39
70
  }
40
71
 
72
+ /**
73
+ * Overwritten since this type of material uses {@link BasicEnvironmentNode}
74
+ * to implement the default environment mapping.
75
+ *
76
+ * @param {NodeBuilder} builder - The current node builder.
77
+ * @return {BasicEnvironmentNode<vec3>?} The environment node.
78
+ */
41
79
  setupEnvironment( builder ) {
42
80
 
43
81
  const envNode = super.setupEnvironment( builder );
@@ -46,6 +84,13 @@ class MeshBasicNodeMaterial extends NodeMaterial {
46
84
 
47
85
  }
48
86
 
87
+ /**
88
+ * This method must be overwriten since light maps are evaluated
89
+ * with a special scaling factor for basic materials.
90
+ *
91
+ * @param {NodeBuilder} builder - The current node builder.
92
+ * @return {BasicLightMapNode<vec3>?} The light map node.
93
+ */
49
94
  setupLightMap( builder ) {
50
95
 
51
96
  let node = null;
@@ -60,12 +105,23 @@ class MeshBasicNodeMaterial extends NodeMaterial {
60
105
 
61
106
  }
62
107
 
108
+ /**
109
+ * The material overwrites this method because `lights` is set to `true` but
110
+ * we still want to return the diffuse color as the outgoing light.
111
+ *
112
+ * @return {Node<vec3>} The outgoing light node.
113
+ */
63
114
  setupOutgoingLight() {
64
115
 
65
116
  return diffuseColor.rgb;
66
117
 
67
118
  }
68
119
 
120
+ /**
121
+ * Setups the lighting model.
122
+ *
123
+ * @return {BasicLightingModel} The lighting model.
124
+ */
69
125
  setupLightingModel() {
70
126
 
71
127
  return new BasicLightingModel();
@@ -6,6 +6,11 @@ import { MeshLambertMaterial } from '../MeshLambertMaterial.js';
6
6
 
7
7
  const _defaultValues = /*@__PURE__*/ new MeshLambertMaterial();
8
8
 
9
+ /**
10
+ * Node material version of `MeshLambertMaterial`.
11
+ *
12
+ * @augments NodeMaterial
13
+ */
9
14
  class MeshLambertNodeMaterial extends NodeMaterial {
10
15
 
11
16
  static get type() {
@@ -14,12 +19,30 @@ class MeshLambertNodeMaterial extends NodeMaterial {
14
19
 
15
20
  }
16
21
 
22
+ /**
23
+ * Constructs a new mesh lambert node material.
24
+ *
25
+ * @param {Object?} parameters - The configuration parameter.
26
+ */
17
27
  constructor( parameters ) {
18
28
 
19
29
  super();
20
30
 
31
+ /**
32
+ * This flag can be used for type testing.
33
+ *
34
+ * @type {Boolean}
35
+ * @readonly
36
+ * @default true
37
+ */
21
38
  this.isMeshLambertNodeMaterial = true;
22
39
 
40
+ /**
41
+ * Set to `true` because lambert materials react on lights.
42
+ *
43
+ * @type {Boolean}
44
+ * @default true
45
+ */
23
46
  this.lights = true;
24
47
 
25
48
  this.setDefaultValues( _defaultValues );
@@ -28,6 +51,13 @@ class MeshLambertNodeMaterial extends NodeMaterial {
28
51
 
29
52
  }
30
53
 
54
+ /**
55
+ * Overwritten since this type of material uses {@link BasicEnvironmentNode}
56
+ * to implement the default environment mapping.
57
+ *
58
+ * @param {NodeBuilder} builder - The current node builder.
59
+ * @return {BasicEnvironmentNode<vec3>?} The environment node.
60
+ */
31
61
  setupEnvironment( builder ) {
32
62
 
33
63
  const envNode = super.setupEnvironment( builder );
@@ -36,6 +66,11 @@ class MeshLambertNodeMaterial extends NodeMaterial {
36
66
 
37
67
  }
38
68
 
69
+ /**
70
+ * Setups the lighting model.
71
+ *
72
+ * @return {PhongLightingModel} The lighting model.
73
+ */
39
74
  setupLightingModel( /*builder*/ ) {
40
75
 
41
76
  return new PhongLightingModel( false ); // ( specular ) -> force lambert
@@ -9,6 +9,11 @@ import { MeshMatcapMaterial } from '../MeshMatcapMaterial.js';
9
9
 
10
10
  const _defaultValues = /*@__PURE__*/ new MeshMatcapMaterial();
11
11
 
12
+ /**
13
+ * Node material version of `MeshMatcapMaterial`.
14
+ *
15
+ * @augments NodeMaterial
16
+ */
12
17
  class MeshMatcapNodeMaterial extends NodeMaterial {
13
18
 
14
19
  static get type() {
@@ -17,12 +22,22 @@ class MeshMatcapNodeMaterial extends NodeMaterial {
17
22
 
18
23
  }
19
24
 
25
+ /**
26
+ * Constructs a new mesh normal node material.
27
+ *
28
+ * @param {Object?} parameters - The configuration parameter.
29
+ */
20
30
  constructor( parameters ) {
21
31
 
22
32
  super();
23
33
 
24
- this.lights = false;
25
-
34
+ /**
35
+ * This flag can be used for type testing.
36
+ *
37
+ * @type {Boolean}
38
+ * @readonly
39
+ * @default true
40
+ */
26
41
  this.isMeshMatcapNodeMaterial = true;
27
42
 
28
43
  this.setDefaultValues( _defaultValues );
@@ -31,6 +46,11 @@ class MeshMatcapNodeMaterial extends NodeMaterial {
31
46
 
32
47
  }
33
48
 
49
+ /**
50
+ * Setups the matcap specific node variables.
51
+ *
52
+ * @param {NodeBuilder} builder - The current node builder.
53
+ */
34
54
  setupVariants( builder ) {
35
55
 
36
56
  const uv = matcapUV;
@@ -9,6 +9,11 @@ import { MeshNormalMaterial } from '../MeshNormalMaterial.js';
9
9
 
10
10
  const _defaultValues = /*@__PURE__*/ new MeshNormalMaterial();
11
11
 
12
+ /**
13
+ * Node material version of `MeshNormalMaterial`.
14
+ *
15
+ * @augments NodeMaterial
16
+ */
12
17
  class MeshNormalNodeMaterial extends NodeMaterial {
13
18
 
14
19
  static get type() {
@@ -17,12 +22,22 @@ class MeshNormalNodeMaterial extends NodeMaterial {
17
22
 
18
23
  }
19
24
 
25
+ /**
26
+ * Constructs a new mesh normal node material.
27
+ *
28
+ * @param {Object?} parameters - The configuration parameter.
29
+ */
20
30
  constructor( parameters ) {
21
31
 
22
32
  super();
23
33
 
24
- this.lights = false;
25
-
34
+ /**
35
+ * This flag can be used for type testing.
36
+ *
37
+ * @type {Boolean}
38
+ * @readonly
39
+ * @default true
40
+ */
26
41
  this.isMeshNormalNodeMaterial = true;
27
42
 
28
43
  this.setDefaultValues( _defaultValues );
@@ -31,6 +46,10 @@ class MeshNormalNodeMaterial extends NodeMaterial {
31
46
 
32
47
  }
33
48
 
49
+ /**
50
+ * Overwrites the default implementation by computing the diffuse color
51
+ * based on the normal data.
52
+ */
34
53
  setupDiffuseColor() {
35
54
 
36
55
  const opacityNode = this.opacityNode ? float( this.opacityNode ) : materialOpacity;