super-three 0.164.0 → 0.167.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 (416) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +1273 -503
  3. package/build/three.module.js +1269 -504
  4. package/build/three.module.min.js +1 -1
  5. package/build/three.webgpu.js +76086 -0
  6. package/build/three.webgpu.min.js +6 -0
  7. package/examples/jsm/Addons.js +2 -1
  8. package/examples/jsm/controls/TransformControls.js +1 -1
  9. package/examples/jsm/csm/CSMShader.js +4 -4
  10. package/examples/jsm/environments/RoomEnvironment.js +1 -5
  11. package/examples/jsm/exporters/GLTFExporter.js +8 -4
  12. package/examples/jsm/exporters/USDZExporter.js +6 -4
  13. package/examples/jsm/geometries/TeapotGeometry.js +1 -1
  14. package/examples/jsm/helpers/ViewHelper.js +75 -61
  15. package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
  16. package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
  17. package/examples/jsm/lines/LineMaterial.js +1 -15
  18. package/examples/jsm/lines/LineSegments2.js +15 -0
  19. package/examples/jsm/lines/Wireframe.js +16 -1
  20. package/examples/jsm/lines/webgpu/Line2.js +20 -0
  21. package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
  22. package/examples/jsm/loaders/DRACOLoader.js +1 -1
  23. package/examples/jsm/loaders/FBXLoader.js +47 -58
  24. package/examples/jsm/loaders/GLTFLoader.js +12 -4
  25. package/examples/jsm/loaders/LDrawLoader.js +3 -2
  26. package/examples/jsm/loaders/MMDLoader.js +31 -12
  27. package/examples/jsm/loaders/MaterialXLoader.js +2 -9
  28. package/examples/jsm/loaders/USDZLoader.js +124 -76
  29. package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
  30. package/examples/jsm/loaders/VTKLoader.js +76 -3
  31. package/examples/jsm/misc/GPUComputationRenderer.js +9 -19
  32. package/examples/jsm/modifiers/CurveModifier.js +11 -9
  33. package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
  34. package/examples/jsm/objects/InstancedPoints.js +2 -2
  35. package/examples/jsm/objects/Lensflare.js +2 -2
  36. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  37. package/examples/jsm/postprocessing/RenderTransitionPass.js +13 -38
  38. package/examples/jsm/postprocessing/SSAOPass.js +6 -9
  39. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
  40. package/examples/jsm/renderers/CSS2DRenderer.js +25 -5
  41. package/examples/jsm/renderers/CSS3DRenderer.js +24 -3
  42. package/examples/jsm/shaders/ColorifyShader.js +1 -2
  43. package/examples/jsm/shaders/FXAAShader.js +0 -2
  44. package/examples/jsm/shaders/GTAOShader.js +1 -1
  45. package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
  46. package/examples/jsm/transpiler/GLSLDecoder.js +46 -4
  47. package/examples/jsm/transpiler/TSLEncoder.js +17 -15
  48. package/examples/jsm/utils/BufferGeometryUtils.js +18 -16
  49. package/examples/jsm/utils/GPUStatsPanel.js +2 -0
  50. package/examples/jsm/utils/SortUtils.js +8 -5
  51. package/package.json +9 -7
  52. package/src/Three.WebGPU.js +194 -0
  53. package/src/Three.js +2 -0
  54. package/src/animation/tracks/BooleanKeyframeTrack.js +10 -1
  55. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -2
  56. package/src/animation/tracks/StringKeyframeTrack.js +10 -1
  57. package/src/constants.js +4 -1
  58. package/src/core/Object3D.js +24 -22
  59. package/src/core/Raycaster.js +6 -2
  60. package/src/extras/TextureUtils.js +210 -0
  61. package/src/lights/Light.js +1 -0
  62. package/src/lights/LightShadow.js +5 -0
  63. package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
  64. package/src/loaders/FileLoader.js +4 -0
  65. package/src/loaders/LoaderUtils.js +3 -1
  66. package/src/loaders/ObjectLoader.js +34 -2
  67. package/src/materials/Material.js +13 -4
  68. package/src/math/Box2.js +4 -4
  69. package/src/math/Box3.js +6 -6
  70. package/src/math/ColorManagement.js +10 -0
  71. package/src/math/Matrix2.js +54 -0
  72. package/src/math/Vector4.js +13 -0
  73. package/{examples/jsm → src}/nodes/Nodes.js +39 -20
  74. package/{examples/jsm → src}/nodes/accessors/BatchNode.js +28 -10
  75. package/src/nodes/accessors/BitangentNode.js +13 -0
  76. package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +36 -1
  77. package/{examples/jsm → src}/nodes/accessors/BufferNode.js +6 -0
  78. package/src/nodes/accessors/CameraNode.js +19 -0
  79. package/{examples/jsm → src}/nodes/accessors/CubeTextureNode.js +22 -5
  80. package/src/nodes/accessors/InstanceNode.js +140 -0
  81. package/{examples/jsm → src}/nodes/accessors/MaterialNode.js +24 -2
  82. package/{examples/jsm → src}/nodes/accessors/ModelNode.js +4 -0
  83. package/{examples/jsm → src}/nodes/accessors/MorphNode.js +24 -20
  84. package/src/nodes/accessors/NormalNode.js +14 -0
  85. package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +1 -1
  86. package/src/nodes/accessors/PositionNode.js +10 -0
  87. package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +7 -1
  88. package/src/nodes/accessors/ReflectVectorNode.js +10 -0
  89. package/{examples/jsm → src}/nodes/accessors/StorageBufferNode.js +50 -1
  90. package/{examples/jsm/nodes/accessors/TextureStoreNode.js → src/nodes/accessors/StorageTextureNode.js} +28 -6
  91. package/src/nodes/accessors/TangentNode.js +23 -0
  92. package/src/nodes/accessors/Texture3DNode.js +100 -0
  93. package/{examples/jsm → src}/nodes/accessors/TextureNode.js +55 -18
  94. package/src/nodes/accessors/UVNode.js +3 -0
  95. package/{examples/jsm → src}/nodes/accessors/UniformsNode.js +7 -1
  96. package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +2 -1
  97. package/{examples/jsm → src}/nodes/code/ScriptableNode.js +14 -0
  98. package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +2 -1
  99. package/{examples/jsm → src}/nodes/core/AttributeNode.js +34 -8
  100. package/{examples/jsm → src}/nodes/core/CacheNode.js +7 -10
  101. package/{examples/jsm → src}/nodes/core/ContextNode.js +6 -0
  102. package/{examples/jsm → src}/nodes/core/IndexNode.js +6 -0
  103. package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
  104. package/src/nodes/core/MRTNode.js +76 -0
  105. package/{examples/jsm → src}/nodes/core/Node.js +33 -14
  106. package/{examples/jsm → src}/nodes/core/NodeBuilder.js +194 -45
  107. package/src/nodes/core/NodeCache.js +36 -0
  108. package/{examples/jsm → src}/nodes/core/NodeFrame.js +42 -0
  109. package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
  110. package/{examples/jsm → src}/nodes/core/NodeKeywords.js +1 -1
  111. package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
  112. package/{examples/jsm → src}/nodes/core/NodeUtils.js +6 -1
  113. package/{examples/jsm → src}/nodes/core/OutputStructNode.js +1 -5
  114. package/{examples/jsm → src}/nodes/core/PropertyNode.js +2 -0
  115. package/{examples/jsm → src}/nodes/core/TempNode.js +2 -2
  116. package/{examples/jsm → src}/nodes/core/UniformGroupNode.js +20 -0
  117. package/{examples/jsm → src}/nodes/core/UniformNode.js +10 -1
  118. package/{examples/jsm → src}/nodes/core/VarNode.js +2 -6
  119. package/src/nodes/core/VaryingNode.js +104 -0
  120. package/{examples/jsm → src}/nodes/display/AfterImageNode.js +24 -20
  121. package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +18 -21
  122. package/src/nodes/display/BloomNode.js +333 -0
  123. package/{examples/jsm → src}/nodes/display/ColorAdjustmentNode.js +7 -2
  124. package/{examples/jsm → src}/nodes/display/ColorSpaceNode.js +1 -1
  125. package/src/nodes/display/DenoiseNode.js +198 -0
  126. package/src/nodes/display/DepthOfFieldNode.js +119 -0
  127. package/src/nodes/display/DotScreenNode.js +75 -0
  128. package/src/nodes/display/FXAANode.js +327 -0
  129. package/src/nodes/display/FilmNode.js +52 -0
  130. package/{examples/jsm → src}/nodes/display/FrontFacingNode.js +2 -1
  131. package/src/nodes/display/GTAONode.js +324 -0
  132. package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +34 -17
  133. package/src/nodes/display/Lut3DNode.js +53 -0
  134. package/{examples/jsm → src}/nodes/display/NormalMapNode.js +1 -1
  135. package/src/nodes/display/PassNode.js +291 -0
  136. package/src/nodes/display/PixelationPassNode.js +201 -0
  137. package/src/nodes/display/RGBShiftNode.js +49 -0
  138. package/src/nodes/display/RenderOutputNode.js +56 -0
  139. package/src/nodes/display/SobelOperatorNode.js +121 -0
  140. package/{examples/jsm → src}/nodes/display/ToneMappingNode.js +44 -5
  141. package/src/nodes/display/TransitionNode.js +76 -0
  142. package/{examples/jsm → src}/nodes/display/ViewportDepthNode.js +39 -16
  143. package/{examples/jsm → src}/nodes/display/ViewportDepthTextureNode.js +2 -1
  144. package/{examples/jsm → src}/nodes/display/ViewportNode.js +3 -2
  145. package/{examples/jsm → src}/nodes/display/ViewportSharedTextureNode.js +2 -1
  146. package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +5 -2
  147. package/src/nodes/functions/BSDF/LTC.js +131 -0
  148. package/src/nodes/functions/BasicLightingModel.js +78 -0
  149. package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +5 -3
  150. package/{examples/jsm → src}/nodes/functions/PhysicalLightingModel.js +103 -18
  151. package/src/nodes/functions/ToonLightingModel.js +51 -0
  152. package/{examples/jsm → src}/nodes/geometry/RangeNode.js +19 -6
  153. package/{examples/jsm → src}/nodes/lighting/AONode.js +1 -4
  154. package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +1 -1
  155. package/src/nodes/lighting/AnalyticLightNode.js +333 -0
  156. package/src/nodes/lighting/BasicEnvironmentNode.js +26 -0
  157. package/src/nodes/lighting/BasicLightMapNode.js +29 -0
  158. package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +2 -3
  159. package/{examples/jsm → src}/nodes/lighting/EnvironmentNode.js +5 -4
  160. package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +2 -1
  161. package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +1 -1
  162. package/{examples/jsm → src}/nodes/lighting/LightingNode.js +2 -0
  163. package/{examples/jsm → src}/nodes/lighting/LightsNode.js +18 -3
  164. package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +2 -3
  165. package/src/nodes/lighting/RectAreaLightNode.js +97 -0
  166. package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +2 -3
  167. package/{examples/jsm → src}/nodes/loaders/NodeLoader.js +3 -1
  168. package/{examples/jsm → src}/nodes/loaders/NodeMaterialLoader.js +2 -1
  169. package/{examples/jsm → src}/nodes/loaders/NodeObjectLoader.js +2 -1
  170. package/{examples/jsm → src}/nodes/materials/InstancedPointsNodeMaterial.js +3 -3
  171. package/{examples/jsm → src}/nodes/materials/Line2NodeMaterial.js +4 -4
  172. package/{examples/jsm → src}/nodes/materials/LineBasicNodeMaterial.js +3 -3
  173. package/{examples/jsm → src}/nodes/materials/LineDashedNodeMaterial.js +4 -3
  174. package/{examples/jsm → src}/nodes/materials/Materials.js +3 -0
  175. package/src/nodes/materials/MeshBasicNodeMaterial.js +73 -0
  176. package/{examples/jsm → src}/nodes/materials/MeshLambertNodeMaterial.js +12 -3
  177. package/src/nodes/materials/MeshMatcapNodeMaterial.js +53 -0
  178. package/{examples/jsm → src}/nodes/materials/MeshNormalNodeMaterial.js +5 -3
  179. package/{examples/jsm → src}/nodes/materials/MeshPhongNodeMaterial.js +11 -3
  180. package/{examples/jsm → src}/nodes/materials/MeshPhysicalNodeMaterial.js +26 -8
  181. package/{examples/jsm → src}/nodes/materials/MeshStandardNodeMaterial.js +14 -3
  182. package/src/nodes/materials/MeshToonNodeMaterial.js +34 -0
  183. package/{examples/jsm → src}/nodes/materials/NodeMaterial.js +97 -24
  184. package/{examples/jsm → src}/nodes/materials/PointsNodeMaterial.js +3 -3
  185. package/{examples/jsm → src}/nodes/materials/ShadowNodeMaterial.js +3 -3
  186. package/{examples/jsm → src}/nodes/materials/SpriteNodeMaterial.js +3 -3
  187. package/src/nodes/materials/VolumeNodeMaterial.js +106 -0
  188. package/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +9 -17
  189. package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +474 -577
  190. package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +2 -8
  191. package/{examples/jsm → src}/nodes/math/CondNode.js +13 -6
  192. package/{examples/jsm → src}/nodes/math/HashNode.js +2 -2
  193. package/{examples/jsm → src}/nodes/math/MathNode.js +14 -1
  194. package/{examples/jsm → src}/nodes/math/OperatorNode.js +6 -6
  195. package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
  196. package/{examples/jsm → src}/nodes/pmrem/PMREMNode.js +2 -1
  197. package/{examples/jsm → src}/nodes/shadernode/ShaderNode.js +57 -33
  198. package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +1 -1
  199. package/{examples/jsm → src}/nodes/utils/DiscardNode.js +1 -0
  200. package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +2 -0
  201. package/{examples/jsm → src}/nodes/utils/LoopNode.js +7 -6
  202. package/{examples/jsm → src}/nodes/utils/MatcapUVNode.js +1 -1
  203. package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +8 -2
  204. package/src/nodes/utils/RTTNode.js +130 -0
  205. package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +9 -1
  206. package/{examples/jsm → src}/nodes/utils/TimerNode.js +1 -1
  207. package/src/objects/BatchedMesh.js +232 -162
  208. package/src/objects/InstancedMesh.js +1 -1
  209. package/src/renderers/WebGLRenderer.js +312 -68
  210. package/{examples/jsm → src}/renderers/common/Attributes.js +4 -1
  211. package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
  212. package/{examples/jsm → src}/renderers/common/Background.js +9 -3
  213. package/src/renderers/common/BindGroup.js +16 -0
  214. package/{examples/jsm → src}/renderers/common/Bindings.js +54 -22
  215. package/src/renderers/common/ChainMap.js +59 -0
  216. package/{examples/jsm → src}/renderers/common/ClippingContext.js +8 -6
  217. package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
  218. package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +7 -1
  219. package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
  220. package/{examples/jsm → src}/renderers/common/Info.js +34 -6
  221. package/{examples/jsm → src}/renderers/common/Pipelines.js +2 -2
  222. package/src/renderers/common/PostProcessing.js +87 -0
  223. package/{examples/jsm/objects → src/renderers/common}/QuadMesh.js +6 -3
  224. package/src/renderers/common/RenderBundle.js +18 -0
  225. package/src/renderers/common/RenderBundles.js +38 -0
  226. package/{examples/jsm → src}/renderers/common/RenderContext.js +1 -1
  227. package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
  228. package/{examples/jsm → src}/renderers/common/RenderList.js +9 -0
  229. package/{examples/jsm → src}/renderers/common/RenderObject.js +50 -11
  230. package/{examples/jsm → src}/renderers/common/Renderer.js +220 -40
  231. package/{examples/jsm → src}/renderers/common/SampledTexture.js +2 -2
  232. package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
  233. package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
  234. package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
  235. package/{examples/jsm → src}/renderers/common/Textures.js +6 -2
  236. package/{examples/jsm → src}/renderers/common/Uniform.js +10 -5
  237. package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
  238. package/{examples/jsm → src}/renderers/common/extras/PMREMGenerator.js +13 -12
  239. package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
  240. package/{examples/jsm → src}/renderers/common/nodes/NodeSampledTexture.js +19 -4
  241. package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +8 -1
  242. package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
  243. package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
  244. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
  245. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
  246. package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +37 -16
  247. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
  248. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  249. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
  250. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
  251. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
  252. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
  253. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  254. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
  255. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
  256. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +1 -1
  257. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
  258. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +10 -31
  259. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
  260. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  261. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -4
  262. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  263. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  264. package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
  265. package/src/renderers/shaders/UniformsLib.js +3 -0
  266. package/src/renderers/webgl/WebGLAttributes.js +2 -2
  267. package/src/renderers/webgl/WebGLBackground.js +6 -0
  268. package/src/renderers/webgl/WebGLBufferRenderer.js +6 -19
  269. package/src/renderers/webgl/WebGLExtensions.js +3 -1
  270. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +6 -18
  271. package/src/renderers/webgl/WebGLLights.js +15 -12
  272. package/src/renderers/webgl/WebGLMaterials.js +1 -5
  273. package/src/renderers/webgl/WebGLMorphtargets.js +1 -2
  274. package/src/renderers/webgl/WebGLProgram.js +28 -31
  275. package/src/renderers/webgl/WebGLPrograms.js +15 -15
  276. package/src/renderers/webgl/WebGLRenderStates.js +2 -2
  277. package/src/renderers/webgl/WebGLTextures.js +100 -70
  278. package/src/renderers/webgl/WebGLUniforms.js +12 -2
  279. package/src/renderers/webgl/WebGLUniformsGroups.js +7 -7
  280. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +156 -54
  281. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +188 -41
  282. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +2 -2
  283. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +1 -0
  284. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
  285. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +1 -1
  286. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +126 -7
  287. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +1 -1
  288. package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +212 -78
  289. package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +2 -2
  290. package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +245 -49
  291. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
  292. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  293. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +30 -14
  294. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +9 -1
  295. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +74 -24
  296. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +101 -25
  297. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +24 -3
  298. package/src/renderers/webxr/WebXRDepthSensing.js +9 -3
  299. package/src/renderers/webxr/WebXRManager.js +12 -2
  300. package/src/textures/CompressedArrayTexture.js +14 -0
  301. package/src/textures/DataArrayTexture.js +14 -0
  302. package/src/textures/DepthTexture.js +1 -3
  303. package/src/utils.js +30 -1
  304. package/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
  305. package/examples/jsm/nodes/accessors/CameraNode.js +0 -119
  306. package/examples/jsm/nodes/accessors/InstanceNode.js +0 -94
  307. package/examples/jsm/nodes/accessors/NormalNode.js +0 -106
  308. package/examples/jsm/nodes/accessors/PositionNode.js +0 -104
  309. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
  310. package/examples/jsm/nodes/accessors/TangentNode.js +0 -109
  311. package/examples/jsm/nodes/accessors/UVNode.js +0 -47
  312. package/examples/jsm/nodes/core/NodeCache.js +0 -26
  313. package/examples/jsm/nodes/core/VaryingNode.js +0 -65
  314. package/examples/jsm/nodes/display/PassNode.js +0 -199
  315. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -255
  316. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  317. package/examples/jsm/renderers/common/ChainMap.js +0 -89
  318. package/examples/jsm/renderers/common/PostProcessing.js +0 -33
  319. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  320. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  321. /package/{examples/jsm → src}/nodes/accessors/AccessorsUtils.js +0 -0
  322. /package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +0 -0
  323. /package/{examples/jsm → src}/nodes/accessors/InstancedPointsMaterialNode.js +0 -0
  324. /package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +0 -0
  325. /package/{examples/jsm → src}/nodes/accessors/ModelViewProjectionNode.js +0 -0
  326. /package/{examples/jsm → src}/nodes/accessors/PointUVNode.js +0 -0
  327. /package/{examples/jsm → src}/nodes/accessors/RendererReferenceNode.js +0 -0
  328. /package/{examples/jsm → src}/nodes/accessors/SceneNode.js +0 -0
  329. /package/{examples/jsm → src}/nodes/accessors/SkinningNode.js +0 -0
  330. /package/{examples/jsm → src}/nodes/accessors/TextureBicubicNode.js +0 -0
  331. /package/{examples/jsm → src}/nodes/accessors/TextureSizeNode.js +0 -0
  332. /package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +0 -0
  333. /package/{examples/jsm → src}/nodes/code/CodeNode.js +0 -0
  334. /package/{examples/jsm → src}/nodes/code/ExpressionNode.js +0 -0
  335. /package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +0 -0
  336. /package/{examples/jsm → src}/nodes/code/FunctionNode.js +0 -0
  337. /package/{examples/jsm → src}/nodes/core/AssignNode.js +0 -0
  338. /package/{examples/jsm → src}/nodes/core/BypassNode.js +0 -0
  339. /package/{examples/jsm → src}/nodes/core/ConstNode.js +0 -0
  340. /package/{examples/jsm → src}/nodes/core/InputNode.js +0 -0
  341. /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
  342. /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
  343. /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
  344. /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
  345. /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
  346. /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
  347. /package/{examples/jsm → src}/nodes/core/ParameterNode.js +0 -0
  348. /package/{examples/jsm → src}/nodes/core/StackNode.js +0 -0
  349. /package/{examples/jsm → src}/nodes/core/StructTypeNode.js +0 -0
  350. /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
  351. /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
  352. /package/{examples/jsm → src}/nodes/display/BlendModeNode.js +0 -0
  353. /package/{examples/jsm → src}/nodes/display/BumpMapNode.js +0 -0
  354. /package/{examples/jsm → src}/nodes/display/PosterizeNode.js +0 -0
  355. /package/{examples/jsm → src}/nodes/fog/FogExp2Node.js +0 -0
  356. /package/{examples/jsm → src}/nodes/fog/FogNode.js +0 -0
  357. /package/{examples/jsm → src}/nodes/fog/FogRangeNode.js +0 -0
  358. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_GGX.js +0 -0
  359. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +0 -0
  360. /package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +0 -0
  361. /package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +0 -0
  362. /package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +0 -0
  363. /package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX_Anisotropic.js +0 -0
  364. /package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +0 -0
  365. /package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +0 -0
  366. /package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +0 -0
  367. /package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +0 -0
  368. /package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +0 -0
  369. /package/{examples/jsm → src}/nodes/functions/ShadowMaskModel.js +0 -0
  370. /package/{examples/jsm → src}/nodes/functions/material/getGeometryRoughness.js +0 -0
  371. /package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +0 -0
  372. /package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +0 -0
  373. /package/{examples/jsm → src}/nodes/lighting/IrradianceNode.js +0 -0
  374. /package/{examples/jsm → src}/nodes/lighting/LightNode.js +0 -0
  375. /package/{examples/jsm → src}/nodes/lighting/LightUtils.js +0 -0
  376. /package/{examples/jsm → src}/nodes/lighting/LightingContextNode.js +0 -0
  377. /package/{examples/jsm → src}/nodes/materials/MeshSSSNodeMaterial.js +0 -0
  378. /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
  379. /package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +0 -0
  380. /package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -0
  381. /package/{examples/jsm → src}/nodes/math/TriNoise3D.js +0 -0
  382. /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
  383. /package/{examples/jsm → src}/nodes/pmrem/PMREMUtils.js +0 -0
  384. /package/{examples/jsm → src}/nodes/procedural/CheckerNode.js +0 -0
  385. /package/{examples/jsm → src}/nodes/utils/ConvertNode.js +0 -0
  386. /package/{examples/jsm → src}/nodes/utils/EquirectUVNode.js +0 -0
  387. /package/{examples/jsm → src}/nodes/utils/JoinNode.js +0 -0
  388. /package/{examples/jsm → src}/nodes/utils/OscNode.js +0 -0
  389. /package/{examples/jsm → src}/nodes/utils/PackingNode.js +0 -0
  390. /package/{examples/jsm → src}/nodes/utils/RemapNode.js +0 -0
  391. /package/{examples/jsm → src}/nodes/utils/RotateNode.js +0 -0
  392. /package/{examples/jsm → src}/nodes/utils/RotateUVNode.js +0 -0
  393. /package/{examples/jsm → src}/nodes/utils/SetNode.js +0 -0
  394. /package/{examples/jsm → src}/nodes/utils/SplitNode.js +0 -0
  395. /package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +0 -0
  396. /package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +0 -0
  397. /package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +0 -0
  398. /package/{examples/jsm → src}/renderers/common/Animation.js +0 -0
  399. /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
  400. /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
  401. /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
  402. /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
  403. /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
  404. /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
  405. /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
  406. /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
  407. /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
  408. /package/{examples/jsm → src}/renderers/common/RenderObjects.js +0 -0
  409. /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
  410. /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
  411. /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
  412. /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
  413. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBufferRenderer.js +0 -0
  414. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
  415. /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
  416. /package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +0 -0
@@ -11,9 +11,9 @@ import { tslFn, vec2, vec4 } from '../shadernode/ShaderNode.js';
11
11
  import { uv } from '../accessors/UVNode.js';
12
12
  import { viewport } from '../display/ViewportNode.js';
13
13
 
14
- import { PointsMaterial } from 'three';
14
+ import { PointsMaterial } from '../../materials/PointsMaterial.js';
15
15
 
16
- const defaultValues = new PointsMaterial();
16
+ const _defaultValues = /*@__PURE__*/ new PointsMaterial();
17
17
 
18
18
  class InstancedPointsNodeMaterial extends NodeMaterial {
19
19
 
@@ -33,7 +33,7 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
33
33
 
34
34
  this.pointColorNode = null;
35
35
 
36
- this.setDefaultValues( defaultValues );
36
+ this.setDefaultValues( _defaultValues );
37
37
 
38
38
  this.setupShaders();
39
39
 
@@ -13,9 +13,9 @@ import { uv } from '../accessors/UVNode.js';
13
13
  import { viewport } from '../display/ViewportNode.js';
14
14
  import { dashSize, gapSize } from '../core/PropertyNode.js';
15
15
 
16
- import { LineDashedMaterial } from 'three';
16
+ import { LineDashedMaterial } from '../../materials/LineDashedMaterial.js';
17
17
 
18
- const defaultValues = new LineDashedMaterial();
18
+ const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
19
19
 
20
20
  class Line2NodeMaterial extends NodeMaterial {
21
21
 
@@ -26,7 +26,7 @@ class Line2NodeMaterial extends NodeMaterial {
26
26
  this.normals = false;
27
27
  this.lights = false;
28
28
 
29
- this.setDefaultValues( defaultValues );
29
+ this.setDefaultValues( _defaultValues );
30
30
 
31
31
  this.useAlphaToCoverage = true;
32
32
  this.useColor = params.vertexColors;
@@ -147,7 +147,7 @@ class Line2NodeMaterial extends NodeMaterial {
147
147
 
148
148
  const worldPos = varyingProperty( 'vec4', 'worldPos' );
149
149
 
150
- worldPos.assign( positionGeometry.y.lessThan( 0.5 ).cond( start, end) );
150
+ worldPos.assign( positionGeometry.y.lessThan( 0.5 ).cond( start, end ) );
151
151
 
152
152
  // height offset
153
153
  const hw = materialLineWidth.mul( 0.5 );
@@ -1,8 +1,8 @@
1
1
  import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js';
2
2
 
3
- import { LineBasicMaterial } from 'three';
3
+ import { LineBasicMaterial } from '../../materials/LineBasicMaterial.js';
4
4
 
5
- const defaultValues = new LineBasicMaterial();
5
+ const _defaultValues = /*@__PURE__*/ new LineBasicMaterial();
6
6
 
7
7
  class LineBasicNodeMaterial extends NodeMaterial {
8
8
 
@@ -15,7 +15,7 @@ class LineBasicNodeMaterial extends NodeMaterial {
15
15
  this.lights = false;
16
16
  this.normals = false;
17
17
 
18
- this.setDefaultValues( defaultValues );
18
+ this.setDefaultValues( _defaultValues );
19
19
 
20
20
  this.setValues( parameters );
21
21
 
@@ -4,9 +4,10 @@ import { varying } from '../core/VaryingNode.js';
4
4
  import { materialLineDashSize, materialLineGapSize, materialLineScale } from '../accessors/MaterialNode.js';
5
5
  import { dashSize, gapSize } from '../core/PropertyNode.js';
6
6
  import { float } from '../shadernode/ShaderNode.js';
7
- import { LineDashedMaterial } from 'three';
8
7
 
9
- const defaultValues = new LineDashedMaterial();
8
+ import { LineDashedMaterial } from '../../materials/LineDashedMaterial.js';
9
+
10
+ const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
10
11
 
11
12
  class LineDashedNodeMaterial extends NodeMaterial {
12
13
 
@@ -19,7 +20,7 @@ class LineDashedNodeMaterial extends NodeMaterial {
19
20
  this.lights = false;
20
21
  this.normals = false;
21
22
 
22
- this.setDefaultValues( defaultValues );
23
+ this.setDefaultValues( _defaultValues );
23
24
 
24
25
  this.offsetNode = null;
25
26
  this.dashScaleNode = null;
@@ -12,6 +12,9 @@ export { default as MeshPhongNodeMaterial } from './MeshPhongNodeMaterial.js';
12
12
  export { default as MeshStandardNodeMaterial } from './MeshStandardNodeMaterial.js';
13
13
  export { default as MeshPhysicalNodeMaterial } from './MeshPhysicalNodeMaterial.js';
14
14
  export { default as MeshSSSNodeMaterial } from './MeshSSSNodeMaterial.js';
15
+ export { default as MeshToonNodeMaterial } from './MeshToonNodeMaterial.js';
16
+ export { default as MeshMatcapNodeMaterial } from './MeshMatcapNodeMaterial.js';
15
17
  export { default as PointsNodeMaterial } from './PointsNodeMaterial.js';
16
18
  export { default as SpriteNodeMaterial } from './SpriteNodeMaterial.js';
17
19
  export { default as ShadowNodeMaterial } from './ShadowNodeMaterial.js';
20
+ export { default as VolumeNodeMaterial } from './VolumeNodeMaterial.js';
@@ -0,0 +1,73 @@
1
+ import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js';
2
+ import { materialLightMap } from '../accessors/MaterialNode.js';
3
+ import { MeshBasicMaterial } from '../../materials/MeshBasicMaterial.js';
4
+ import BasicEnvironmentNode from '../lighting/BasicEnvironmentNode.js';
5
+ import BasicLightMapNode from '../lighting/BasicLightMapNode.js';
6
+ import BasicLightingModel from '../functions/BasicLightingModel.js';
7
+ import { transformedNormalView, normalView } from '../accessors/NormalNode.js';
8
+ import { diffuseColor } from '../core/PropertyNode.js';
9
+
10
+ const _defaultValues = /*@__PURE__*/ new MeshBasicMaterial();
11
+
12
+ class MeshBasicNodeMaterial extends NodeMaterial {
13
+
14
+ constructor( parameters ) {
15
+
16
+ super();
17
+
18
+ this.isMeshBasicNodeMaterial = true;
19
+
20
+ this.lights = true;
21
+ //this.normals = false; @TODO: normals usage by context
22
+
23
+ this.setDefaultValues( _defaultValues );
24
+
25
+ this.setValues( parameters );
26
+
27
+ }
28
+
29
+ setupNormal() {
30
+
31
+ transformedNormalView.assign( normalView ); // see #28839
32
+
33
+ }
34
+
35
+ setupEnvironment( builder ) {
36
+
37
+ const envNode = super.setupEnvironment( builder );
38
+
39
+ return envNode ? new BasicEnvironmentNode( envNode ) : null;
40
+
41
+ }
42
+
43
+ setupLightMap( builder ) {
44
+
45
+ let node = null;
46
+
47
+ if ( builder.material.lightMap ) {
48
+
49
+ node = new BasicLightMapNode( materialLightMap );
50
+
51
+ }
52
+
53
+ return node;
54
+
55
+ }
56
+
57
+ setupOutgoingLight() {
58
+
59
+ return diffuseColor.rgb;
60
+
61
+ }
62
+
63
+ setupLightingModel() {
64
+
65
+ return new BasicLightingModel();
66
+
67
+ }
68
+
69
+ }
70
+
71
+ export default MeshBasicNodeMaterial;
72
+
73
+ addNodeMaterial( 'MeshBasicNodeMaterial', MeshBasicNodeMaterial );
@@ -1,9 +1,10 @@
1
1
  import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js';
2
+ import BasicEnvironmentNode from '../lighting/BasicEnvironmentNode.js';
2
3
  import PhongLightingModel from '../functions/PhongLightingModel.js';
3
4
 
4
- import { MeshLambertMaterial } from 'three';
5
+ import { MeshLambertMaterial } from '../../materials/MeshLambertMaterial.js';
5
6
 
6
- const defaultValues = new MeshLambertMaterial();
7
+ const _defaultValues = /*@__PURE__*/ new MeshLambertMaterial();
7
8
 
8
9
  class MeshLambertNodeMaterial extends NodeMaterial {
9
10
 
@@ -15,12 +16,20 @@ class MeshLambertNodeMaterial extends NodeMaterial {
15
16
 
16
17
  this.lights = true;
17
18
 
18
- this.setDefaultValues( defaultValues );
19
+ this.setDefaultValues( _defaultValues );
19
20
 
20
21
  this.setValues( parameters );
21
22
 
22
23
  }
23
24
 
25
+ setupEnvironment( builder ) {
26
+
27
+ const envNode = super.setupEnvironment( builder );
28
+
29
+ return envNode ? new BasicEnvironmentNode( envNode ) : null;
30
+
31
+ }
32
+
24
33
  setupLightingModel( /*builder*/ ) {
25
34
 
26
35
  return new PhongLightingModel( false ); // ( specular ) -> force lambert
@@ -0,0 +1,53 @@
1
+ import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js';
2
+ import { materialReference } from '../accessors/MaterialReferenceNode.js';
3
+ import { diffuseColor } from '../core/PropertyNode.js';
4
+ import { vec3 } from '../shadernode/ShaderNode.js';
5
+ import { mix } from '../math/MathNode.js';
6
+ import { matcapUV } from '../utils/MatcapUVNode.js';
7
+
8
+ import { MeshMatcapMaterial } from '../../materials/MeshMatcapMaterial.js';
9
+
10
+ const _defaultValues = /*@__PURE__*/ new MeshMatcapMaterial();
11
+
12
+ class MeshMatcapNodeMaterial extends NodeMaterial {
13
+
14
+ constructor( parameters ) {
15
+
16
+ super();
17
+
18
+ this.lights = false;
19
+
20
+ this.isMeshMatcapNodeMaterial = true;
21
+
22
+ this.setDefaultValues( _defaultValues );
23
+
24
+ this.setValues( parameters );
25
+
26
+ }
27
+
28
+ setupVariants( builder ) {
29
+
30
+ const uv = matcapUV;
31
+
32
+ let matcapColor;
33
+
34
+ if ( builder.material.matcap ) {
35
+
36
+ matcapColor = materialReference( 'matcap', 'texture' ).context( { getUV: () => uv } );
37
+
38
+ } else {
39
+
40
+ matcapColor = vec3( mix( 0.2, 0.8, uv.y ) ); // default if matcap is missing
41
+
42
+ }
43
+
44
+ diffuseColor.rgb.mulAssign( matcapColor.rgb );
45
+
46
+ }
47
+
48
+ }
49
+
50
+
51
+ export default MeshMatcapNodeMaterial;
52
+
53
+ addNodeMaterial( 'MeshMatcapNodeMaterial', MeshMatcapNodeMaterial );
@@ -5,9 +5,9 @@ import { materialOpacity } from '../accessors/MaterialNode.js';
5
5
  import { transformedNormalView } from '../accessors/NormalNode.js';
6
6
  import { float, vec4 } from '../shadernode/ShaderNode.js';
7
7
 
8
- import { MeshNormalMaterial } from 'three';
8
+ import { MeshNormalMaterial } from '../../materials/MeshNormalMaterial.js';
9
9
 
10
- const defaultValues = new MeshNormalMaterial();
10
+ const _defaultValues = /*@__PURE__*/ new MeshNormalMaterial();
11
11
 
12
12
  class MeshNormalNodeMaterial extends NodeMaterial {
13
13
 
@@ -15,9 +15,11 @@ class MeshNormalNodeMaterial extends NodeMaterial {
15
15
 
16
16
  super();
17
17
 
18
+ this.lights = false;
19
+
18
20
  this.isMeshNormalNodeMaterial = true;
19
21
 
20
- this.setDefaultValues( defaultValues );
22
+ this.setDefaultValues( _defaultValues );
21
23
 
22
24
  this.setValues( parameters );
23
25
 
@@ -2,11 +2,12 @@ import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js';
2
2
  import { shininess, specularColor } from '../core/PropertyNode.js';
3
3
  import { materialShininess, materialSpecular } from '../accessors/MaterialNode.js';
4
4
  import { float } from '../shadernode/ShaderNode.js';
5
+ import BasicEnvironmentNode from '../lighting/BasicEnvironmentNode.js';
5
6
  import PhongLightingModel from '../functions/PhongLightingModel.js';
6
7
 
7
- import { MeshPhongMaterial } from 'three';
8
+ import { MeshPhongMaterial } from '../../materials/MeshPhongMaterial.js';
8
9
 
9
- const defaultValues = new MeshPhongMaterial();
10
+ const _defaultValues = /*@__PURE__*/ new MeshPhongMaterial();
10
11
 
11
12
  class MeshPhongNodeMaterial extends NodeMaterial {
12
13
 
@@ -21,12 +22,19 @@ class MeshPhongNodeMaterial extends NodeMaterial {
21
22
  this.shininessNode = null;
22
23
  this.specularNode = null;
23
24
 
24
- this.setDefaultValues( defaultValues );
25
+ this.setDefaultValues( _defaultValues );
25
26
 
26
27
  this.setValues( parameters );
27
28
 
28
29
  }
29
30
 
31
+ setupEnvironment( builder ) {
32
+
33
+ const envNode = super.setupEnvironment( builder );
34
+
35
+ return envNode ? new BasicEnvironmentNode( envNode ) : null;
36
+
37
+ }
30
38
  setupLightingModel( /*builder*/ ) {
31
39
 
32
40
  return new PhongLightingModel();
@@ -1,15 +1,17 @@
1
1
  import { addNodeMaterial } from './NodeMaterial.js';
2
2
  import { transformedClearcoatNormalView } from '../accessors/NormalNode.js';
3
- import { clearcoat, clearcoatRoughness, sheen, sheenRoughness, iridescence, iridescenceIOR, iridescenceThickness, specularColor, specularF90, diffuseColor, metalness, roughness, anisotropy, alphaT, anisotropyT, anisotropyB, ior, transmission, thickness, attenuationDistance, attenuationColor } from '../core/PropertyNode.js';
4
- import { materialClearcoat, materialClearcoatRoughness, materialClearcoatNormal, materialSheen, materialSheenRoughness, materialIridescence, materialIridescenceIOR, materialIridescenceThickness, materialSpecularIntensity, materialSpecularColor, materialAnisotropy, materialIOR, materialTransmission, materialThickness, materialAttenuationDistance, materialAttenuationColor } from '../accessors/MaterialNode.js';
3
+ import { clearcoat, clearcoatRoughness, sheen, sheenRoughness, iridescence, iridescenceIOR, iridescenceThickness, specularColor, specularF90, diffuseColor, metalness, roughness, anisotropy, alphaT, anisotropyT, anisotropyB, ior, transmission, thickness, attenuationDistance, attenuationColor, dispersion } from '../core/PropertyNode.js';
4
+ import { materialClearcoat, materialClearcoatRoughness, materialClearcoatNormal, materialSheen, materialSheenRoughness, materialIridescence, materialIridescenceIOR, materialIridescenceThickness, materialSpecularIntensity, materialSpecularColor, materialAnisotropy, materialIOR, materialTransmission, materialThickness, materialAttenuationDistance, materialAttenuationColor, materialDispersion } from '../accessors/MaterialNode.js';
5
5
  import { float, vec2, vec3, If } from '../shadernode/ShaderNode.js';
6
+ import getRoughness from '../functions/material/getRoughness.js';
6
7
  import { TBNViewMatrix } from '../accessors/AccessorsUtils.js';
7
8
  import PhysicalLightingModel from '../functions/PhysicalLightingModel.js';
8
9
  import MeshStandardNodeMaterial from './MeshStandardNodeMaterial.js';
9
10
  import { mix, pow2, min } from '../math/MathNode.js';
10
- import { MeshPhysicalMaterial } from 'three';
11
11
 
12
- const defaultValues = new MeshPhysicalMaterial();
12
+ import { MeshPhysicalMaterial } from '../../materials/MeshPhysicalMaterial.js';
13
+
14
+ const _defaultValues = /*@__PURE__*/ new MeshPhysicalMaterial();
13
15
 
14
16
  class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
15
17
 
@@ -38,10 +40,11 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
38
40
  this.thicknessNode = null;
39
41
  this.attenuationDistanceNode = null;
40
42
  this.attenuationColorNode = null;
43
+ this.dispersionNode = null;
41
44
 
42
45
  this.anisotropyNode = null;
43
46
 
44
- this.setDefaultValues( defaultValues );
47
+ this.setDefaultValues( _defaultValues );
45
48
 
46
49
  this.setValues( parameters );
47
50
 
@@ -77,6 +80,12 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
77
80
 
78
81
  }
79
82
 
83
+ get useDispersion() {
84
+
85
+ return this.dispersion > 0 || this.dispersionNode !== null;
86
+
87
+ }
88
+
80
89
  setupSpecular() {
81
90
 
82
91
  const iorNode = this.iorNode ? float( this.iorNode ) : materialIOR;
@@ -89,7 +98,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
89
98
 
90
99
  setupLightingModel( /*builder*/ ) {
91
100
 
92
- return new PhysicalLightingModel( this.useClearcoat, this.useSheen, this.useIridescence, this.useAnisotropy, this.useTransmission );
101
+ return new PhysicalLightingModel( this.useClearcoat, this.useSheen, this.useIridescence, this.useAnisotropy, this.useTransmission, this.useDispersion );
93
102
 
94
103
  }
95
104
 
@@ -105,7 +114,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
105
114
  const clearcoatRoughnessNode = this.clearcoatRoughnessNode ? float( this.clearcoatRoughnessNode ) : materialClearcoatRoughness;
106
115
 
107
116
  clearcoat.assign( clearcoatNode );
108
- clearcoatRoughness.assign( clearcoatRoughnessNode );
117
+ clearcoatRoughness.assign( getRoughness( { roughness: clearcoatRoughnessNode } ) );
109
118
 
110
119
  }
111
120
 
@@ -149,7 +158,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
149
158
 
150
159
  } ).else( () => {
151
160
 
152
- anisotropyV.divAssign( anisotropy );
161
+ anisotropyV.divAssign( vec2( anisotropy ) );
153
162
  anisotropy.assign( anisotropy.saturate() );
154
163
 
155
164
  } );
@@ -176,6 +185,14 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
176
185
  attenuationDistance.assign( attenuationDistanceNode );
177
186
  attenuationColor.assign( attenuationColorNode );
178
187
 
188
+ if ( this.useDispersion ) {
189
+
190
+ const dispersionNode = this.dispersionNode ? float( this.dispersionNode ) : materialDispersion;
191
+
192
+ dispersion.assign( dispersionNode );
193
+
194
+ }
195
+
179
196
  }
180
197
 
181
198
  }
@@ -212,6 +229,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
212
229
  this.thicknessNode = source.thicknessNode;
213
230
  this.attenuationDistanceNode = source.attenuationDistanceNode;
214
231
  this.attenuationColorNode = source.attenuationColorNode;
232
+ this.dispersionNode = source.dispersionNode;
215
233
 
216
234
  this.anisotropyNode = source.anisotropyNode;
217
235
 
@@ -4,11 +4,12 @@ import { mix } from '../math/MathNode.js';
4
4
  import { materialRoughness, materialMetalness } from '../accessors/MaterialNode.js';
5
5
  import getRoughness from '../functions/material/getRoughness.js';
6
6
  import PhysicalLightingModel from '../functions/PhysicalLightingModel.js';
7
+ import EnvironmentNode from '../lighting/EnvironmentNode.js';
7
8
  import { float, vec3, vec4 } from '../shadernode/ShaderNode.js';
8
9
 
9
- import { MeshStandardMaterial } from 'three';
10
+ import { MeshStandardMaterial } from '../../materials/MeshStandardMaterial.js';
10
11
 
11
- const defaultValues = new MeshStandardMaterial();
12
+ const _defaultValues = /*@__PURE__*/ new MeshStandardMaterial();
12
13
 
13
14
  class MeshStandardNodeMaterial extends NodeMaterial {
14
15
 
@@ -18,17 +19,27 @@ class MeshStandardNodeMaterial extends NodeMaterial {
18
19
 
19
20
  this.isMeshStandardNodeMaterial = true;
20
21
 
22
+ this.lights = true;
23
+
21
24
  this.emissiveNode = null;
22
25
 
23
26
  this.metalnessNode = null;
24
27
  this.roughnessNode = null;
25
28
 
26
- this.setDefaultValues( defaultValues );
29
+ this.setDefaultValues( _defaultValues );
27
30
 
28
31
  this.setValues( parameters );
29
32
 
30
33
  }
31
34
 
35
+ setupEnvironment( builder ) {
36
+
37
+ const envNode = super.setupEnvironment( builder );
38
+
39
+ return envNode ? new EnvironmentNode( envNode ) : null;
40
+
41
+ }
42
+
32
43
  setupLightingModel( /*builder*/ ) {
33
44
 
34
45
  return new PhysicalLightingModel();
@@ -0,0 +1,34 @@
1
+ import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js';
2
+ import ToonLightingModel from '../functions/ToonLightingModel.js';
3
+
4
+ import { MeshToonMaterial } from '../../materials/MeshToonMaterial.js';
5
+
6
+ const _defaultValues = /*@__PURE__*/ new MeshToonMaterial();
7
+
8
+ class MeshToonNodeMaterial extends NodeMaterial {
9
+
10
+ constructor( parameters ) {
11
+
12
+ super();
13
+
14
+ this.isMeshToonNodeMaterial = true;
15
+
16
+ this.lights = true;
17
+
18
+ this.setDefaultValues( _defaultValues );
19
+
20
+ this.setValues( parameters );
21
+
22
+ }
23
+
24
+ setupLightingModel( /*builder*/ ) {
25
+
26
+ return new ToonLightingModel();
27
+
28
+ }
29
+
30
+ }
31
+
32
+ export default MeshToonNodeMaterial;
33
+
34
+ addNodeMaterial( 'MeshToonNodeMaterial', MeshToonNodeMaterial );