super-three 0.165.0 → 0.168.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 (462) hide show
  1. package/build/three.cjs +854 -410
  2. package/build/three.module.js +849 -411
  3. package/build/three.module.min.js +1 -1
  4. package/build/three.webgpu.js +77755 -0
  5. package/build/three.webgpu.min.js +6 -0
  6. package/examples/jsm/Addons.js +5 -2
  7. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  8. package/examples/jsm/capabilities/WebGL.js +27 -21
  9. package/examples/jsm/controls/ArcballControls.js +174 -158
  10. package/examples/jsm/controls/DragControls.js +260 -132
  11. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  12. package/examples/jsm/controls/FlyControls.js +194 -188
  13. package/examples/jsm/controls/OrbitControls.js +777 -786
  14. package/examples/jsm/controls/PointerLockControls.js +24 -15
  15. package/examples/jsm/controls/TrackballControls.js +453 -452
  16. package/examples/jsm/csm/CSMShader.js +4 -4
  17. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  18. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  19. package/examples/jsm/effects/StereoEffect.js +6 -1
  20. package/examples/jsm/environments/RoomEnvironment.js +1 -1
  21. package/examples/jsm/exporters/GLTFExporter.js +13 -4
  22. package/examples/jsm/exporters/USDZExporter.js +29 -8
  23. package/examples/jsm/geometries/TeapotGeometry.js +1 -1
  24. package/examples/jsm/helpers/LightProbeHelper.js +42 -43
  25. package/examples/jsm/helpers/ViewHelper.js +51 -2
  26. package/examples/jsm/libs/tween.module.js +64 -75
  27. package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
  28. package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
  29. package/examples/jsm/lines/webgpu/Line2.js +20 -0
  30. package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
  31. package/examples/jsm/loaders/FBXLoader.js +23 -45
  32. package/examples/jsm/loaders/GLTFLoader.js +10 -4
  33. package/examples/jsm/loaders/KTX2Loader.js +19 -7
  34. package/examples/jsm/loaders/MaterialXLoader.js +10 -10
  35. package/examples/jsm/loaders/PCDLoader.js +9 -9
  36. package/examples/jsm/loaders/USDZLoader.js +124 -76
  37. package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
  38. package/examples/jsm/loaders/VTKLoader.js +76 -3
  39. package/examples/jsm/misc/GPUComputationRenderer.js +9 -19
  40. package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
  41. package/examples/jsm/objects/InstancedPoints.js +2 -2
  42. package/examples/jsm/objects/SkyMesh.js +188 -0
  43. package/examples/jsm/objects/Water2Mesh.js +159 -0
  44. package/examples/jsm/objects/WaterMesh.js +102 -0
  45. package/examples/jsm/physics/RapierPhysics.js +20 -0
  46. package/examples/jsm/postprocessing/OutlinePass.js +31 -46
  47. package/examples/jsm/postprocessing/RenderTransitionPass.js +13 -38
  48. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  49. package/examples/jsm/postprocessing/SSAOPass.js +6 -9
  50. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
  51. package/examples/jsm/shaders/BleachBypassShader.js +1 -2
  52. package/examples/jsm/shaders/ColorifyShader.js +1 -2
  53. package/examples/jsm/shaders/FXAAShader.js +0 -2
  54. package/examples/jsm/shaders/GTAOShader.js +1 -1
  55. package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
  56. package/examples/jsm/shaders/OutputShader.js +1 -1
  57. package/examples/jsm/transpiler/GLSLDecoder.js +46 -4
  58. package/examples/jsm/transpiler/TSLEncoder.js +24 -22
  59. package/examples/jsm/utils/TextureUtils.js +1 -1
  60. package/package.json +8 -6
  61. package/src/Three.WebGPU.js +200 -0
  62. package/src/Three.js +3 -0
  63. package/src/constants.js +4 -1
  64. package/src/core/Object3D.js +22 -22
  65. package/src/extras/Controls.js +32 -0
  66. package/src/extras/TextureUtils.js +210 -0
  67. package/src/lights/Light.js +1 -0
  68. package/src/lights/LightShadow.js +5 -0
  69. package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
  70. package/src/loaders/ObjectLoader.js +33 -2
  71. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeLoader.js +6 -4
  72. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeMaterialLoader.js +2 -2
  73. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeObjectLoader.js +2 -1
  74. package/src/materials/Material.js +7 -1
  75. package/{examples/jsm/nodes/materials → src/materials/nodes}/InstancedPointsNodeMaterial.js +36 -27
  76. package/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +37 -40
  77. package/src/materials/nodes/LineBasicNodeMaterial.js +27 -0
  78. package/{examples/jsm/nodes/materials → src/materials/nodes}/LineDashedNodeMaterial.js +10 -11
  79. package/src/materials/nodes/MeshBasicNodeMaterial.js +73 -0
  80. package/src/materials/nodes/MeshLambertNodeMaterial.js +43 -0
  81. package/src/materials/nodes/MeshMatcapNodeMaterial.js +53 -0
  82. package/src/materials/nodes/MeshNormalNodeMaterial.js +40 -0
  83. package/src/materials/nodes/MeshPhongNodeMaterial.js +74 -0
  84. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshPhysicalNodeMaterial.js +22 -20
  85. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshSSSNodeMaterial.js +6 -6
  86. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshStandardNodeMaterial.js +28 -11
  87. package/src/materials/nodes/MeshToonNodeMaterial.js +34 -0
  88. package/{examples/jsm/nodes/materials → src/materials/nodes}/NodeMaterial.js +142 -96
  89. package/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +1 -1
  90. package/{examples/jsm/nodes/materials → src/materials/nodes}/PointsNodeMaterial.js +5 -6
  91. package/src/materials/nodes/ShadowNodeMaterial.js +34 -0
  92. package/{examples/jsm/nodes/materials → src/materials/nodes}/SpriteNodeMaterial.js +13 -13
  93. package/{examples/jsm/nodes/materials → src/materials/nodes}/VolumeNodeMaterial.js +14 -16
  94. package/src/math/Box2.js +4 -4
  95. package/src/math/Box3.js +6 -6
  96. package/src/math/ColorManagement.js +10 -0
  97. package/src/math/Matrix2.js +54 -0
  98. package/src/math/Vector4.js +13 -0
  99. package/src/nodes/Nodes.js +164 -0
  100. package/src/nodes/TSL.js +176 -0
  101. package/{examples/jsm → src}/nodes/accessors/AccessorsUtils.js +8 -8
  102. package/src/nodes/accessors/BatchNode.js +124 -0
  103. package/{examples/jsm/nodes/accessors/BitangentNode.js → src/nodes/accessors/Bitangent.js} +9 -9
  104. package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +41 -6
  105. package/{examples/jsm → src}/nodes/accessors/BufferNode.js +4 -4
  106. package/src/nodes/accessors/Camera.js +19 -0
  107. package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +16 -14
  108. package/src/nodes/accessors/CubeTextureNode.js +76 -0
  109. package/src/nodes/accessors/InstanceNode.js +144 -0
  110. package/src/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
  111. package/{examples/jsm → src}/nodes/accessors/MaterialNode.js +66 -49
  112. package/src/nodes/accessors/MaterialProperties.js +3 -0
  113. package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +6 -4
  114. package/src/nodes/accessors/ModelNode.js +37 -0
  115. package/{examples/jsm → src}/nodes/accessors/ModelViewProjectionNode.js +6 -7
  116. package/{examples/jsm → src}/nodes/accessors/MorphNode.js +35 -31
  117. package/src/nodes/accessors/Normal.js +62 -0
  118. package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +11 -11
  119. package/src/nodes/accessors/PointUVNode.js +26 -0
  120. package/src/nodes/accessors/Position.js +10 -0
  121. package/src/nodes/accessors/ReferenceBaseNode.js +143 -0
  122. package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +14 -8
  123. package/src/nodes/accessors/ReflectVector.js +10 -0
  124. package/{examples/jsm → src}/nodes/accessors/RendererReferenceNode.js +6 -6
  125. package/{examples/jsm → src}/nodes/accessors/SceneNode.js +5 -6
  126. package/src/nodes/accessors/SkinningNode.js +187 -0
  127. package/{examples/jsm → src}/nodes/accessors/StorageBufferNode.js +54 -6
  128. package/{examples/jsm → src}/nodes/accessors/StorageTextureNode.js +16 -7
  129. package/src/nodes/accessors/Tangent.js +22 -0
  130. package/{examples/jsm → src}/nodes/accessors/Texture3DNode.js +11 -11
  131. package/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +3 -32
  132. package/{examples/jsm → src}/nodes/accessors/TextureNode.js +69 -37
  133. package/{examples/jsm → src}/nodes/accessors/TextureSizeNode.js +4 -6
  134. package/{examples/jsm/nodes/accessors/UniformsNode.js → src/nodes/accessors/UniformArrayNode.js} +24 -9
  135. package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +4 -4
  136. package/src/nodes/accessors/VelocityNode.js +83 -0
  137. package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +6 -5
  138. package/{examples/jsm → src}/nodes/code/CodeNode.js +5 -5
  139. package/{examples/jsm → src}/nodes/code/ExpressionNode.js +4 -4
  140. package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +5 -5
  141. package/{examples/jsm → src}/nodes/code/FunctionNode.js +5 -23
  142. package/{examples/jsm → src}/nodes/code/ScriptableNode.js +18 -6
  143. package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +6 -7
  144. package/{examples/jsm → src}/nodes/core/AssignNode.js +5 -5
  145. package/{examples/jsm → src}/nodes/core/AttributeNode.js +22 -21
  146. package/{examples/jsm → src}/nodes/core/BypassNode.js +5 -5
  147. package/src/nodes/core/CacheNode.js +46 -0
  148. package/{examples/jsm → src}/nodes/core/ConstNode.js +2 -2
  149. package/{examples/jsm → src}/nodes/core/ContextNode.js +17 -11
  150. package/{examples/jsm → src}/nodes/core/IndexNode.js +17 -6
  151. package/{examples/jsm → src}/nodes/core/InputNode.js +2 -2
  152. package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
  153. package/src/nodes/core/MRTNode.js +82 -0
  154. package/{examples/jsm → src}/nodes/core/Node.js +57 -31
  155. package/{examples/jsm → src}/nodes/core/NodeBuilder.js +216 -65
  156. package/src/nodes/core/NodeCache.js +36 -0
  157. package/{examples/jsm → src}/nodes/core/NodeFrame.js +42 -0
  158. package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
  159. package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
  160. package/{examples/jsm → src}/nodes/core/NodeUtils.js +7 -1
  161. package/{examples/jsm → src}/nodes/core/OutputStructNode.js +4 -4
  162. package/{examples/jsm → src}/nodes/core/ParameterNode.js +4 -4
  163. package/src/nodes/core/PropertyNode.js +84 -0
  164. package/{examples/jsm → src}/nodes/core/StackNode.js +26 -10
  165. package/{examples/jsm → src}/nodes/core/StructTypeNode.js +2 -2
  166. package/{examples/jsm → src}/nodes/core/TempNode.js +4 -4
  167. package/src/nodes/core/UniformGroupNode.js +55 -0
  168. package/{examples/jsm → src}/nodes/core/UniformNode.js +14 -5
  169. package/{examples/jsm → src}/nodes/core/VarNode.js +8 -12
  170. package/{examples/jsm → src}/nodes/core/VaryingNode.js +13 -5
  171. package/{examples/jsm → src}/nodes/display/AfterImageNode.js +27 -35
  172. package/src/nodes/display/AnaglyphPassNode.js +61 -0
  173. package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +27 -30
  174. package/src/nodes/display/BleachBypass.js +26 -0
  175. package/src/nodes/display/BlendMode.js +54 -0
  176. package/src/nodes/display/BloomNode.js +335 -0
  177. package/{examples/jsm → src}/nodes/display/BumpMapNode.js +7 -12
  178. package/src/nodes/display/ColorAdjustment.js +46 -0
  179. package/src/nodes/display/ColorSpaceFunctions.js +38 -0
  180. package/src/nodes/display/ColorSpaceNode.js +85 -0
  181. package/src/nodes/display/DenoiseNode.js +201 -0
  182. package/src/nodes/display/DepthOfFieldNode.js +121 -0
  183. package/src/nodes/display/DotScreenNode.js +63 -0
  184. package/src/nodes/display/FXAANode.js +329 -0
  185. package/src/nodes/display/FilmNode.js +53 -0
  186. package/src/nodes/display/FrontFacingNode.js +41 -0
  187. package/src/nodes/display/GTAONode.js +328 -0
  188. package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +44 -24
  189. package/src/nodes/display/Lut3DNode.js +54 -0
  190. package/src/nodes/display/MotionBlur.js +25 -0
  191. package/{examples/jsm → src}/nodes/display/NormalMapNode.js +9 -11
  192. package/src/nodes/display/ParallaxBarrierPassNode.js +55 -0
  193. package/src/nodes/display/PassNode.js +367 -0
  194. package/src/nodes/display/PixelationPassNode.js +206 -0
  195. package/{examples/jsm → src}/nodes/display/PosterizeNode.js +4 -6
  196. package/src/nodes/display/RGBShiftNode.js +50 -0
  197. package/src/nodes/display/RenderOutputNode.js +56 -0
  198. package/src/nodes/display/SSAAPassNode.js +284 -0
  199. package/src/nodes/display/Sepia.js +17 -0
  200. package/src/nodes/display/SobelOperatorNode.js +123 -0
  201. package/src/nodes/display/StereoCompositePassNode.js +107 -0
  202. package/src/nodes/display/StereoPassNode.js +80 -0
  203. package/src/nodes/display/ToneMappingFunctions.js +190 -0
  204. package/src/nodes/display/ToneMappingNode.js +66 -0
  205. package/src/nodes/display/TransitionNode.js +77 -0
  206. package/src/nodes/display/ViewportDepthNode.js +121 -0
  207. package/src/nodes/display/ViewportDepthTextureNode.js +30 -0
  208. package/{examples/jsm → src}/nodes/display/ViewportNode.js +28 -26
  209. package/src/nodes/display/ViewportSharedTextureNode.js +36 -0
  210. package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +12 -12
  211. package/{examples/jsm → src}/nodes/fog/FogExp2Node.js +4 -6
  212. package/{examples/jsm → src}/nodes/fog/FogNode.js +5 -7
  213. package/{examples/jsm → src}/nodes/fog/FogRangeNode.js +4 -6
  214. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_GGX.js +4 -4
  215. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  216. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  217. package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +2 -2
  218. package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
  219. package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
  220. package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  221. package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
  222. package/src/nodes/functions/BSDF/LTC.js +131 -0
  223. package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  224. package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  225. package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  226. package/src/nodes/functions/BasicLightingModel.js +78 -0
  227. package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +10 -8
  228. package/{examples/jsm → src}/nodes/functions/PhysicalLightingModel.js +73 -31
  229. package/{examples/jsm → src}/nodes/functions/ShadowMaskModel.js +1 -1
  230. package/{examples/jsm → src}/nodes/functions/ToonLightingModel.js +6 -4
  231. package/src/nodes/functions/material/getGeometryRoughness.js +13 -0
  232. package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
  233. package/{examples/jsm → src}/nodes/geometry/RangeNode.js +23 -10
  234. package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +5 -5
  235. package/src/nodes/lighting/AONode.js +24 -0
  236. package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +2 -7
  237. package/src/nodes/lighting/AnalyticLightNode.js +354 -0
  238. package/src/nodes/lighting/BasicEnvironmentNode.js +27 -0
  239. package/src/nodes/lighting/BasicLightMapNode.js +29 -0
  240. package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +3 -9
  241. package/{examples/jsm → src}/nodes/lighting/EnvironmentNode.js +23 -21
  242. package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +4 -7
  243. package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +3 -8
  244. package/{examples/jsm → src}/nodes/lighting/IrradianceNode.js +2 -2
  245. package/{examples/jsm → src}/nodes/lighting/LightNode.js +5 -5
  246. package/src/nodes/lighting/LightProbeNode.js +76 -0
  247. package/{examples/jsm → src}/nodes/lighting/LightUtils.js +3 -3
  248. package/src/nodes/lighting/LightingContextNode.js +64 -0
  249. package/{examples/jsm → src}/nodes/lighting/LightingNode.js +4 -2
  250. package/src/nodes/lighting/LightsNode.js +231 -0
  251. package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +4 -10
  252. package/src/nodes/lighting/RectAreaLightNode.js +93 -0
  253. package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +4 -10
  254. package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +2 -2
  255. package/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +43 -46
  256. package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +500 -603
  257. package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
  258. package/{examples/jsm/nodes/math/CondNode.js → src/nodes/math/ConditionalNode.js} +31 -13
  259. package/src/nodes/math/Hash.js +13 -0
  260. package/src/nodes/math/MathNode.js +404 -0
  261. package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -7
  262. package/{examples/jsm → src}/nodes/math/OperatorNode.js +100 -58
  263. package/{examples/jsm → src}/nodes/math/TriNoise3D.js +19 -29
  264. package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
  265. package/{examples/jsm → src}/nodes/pmrem/PMREMNode.js +60 -16
  266. package/{examples/jsm → src}/nodes/pmrem/PMREMUtils.js +46 -46
  267. package/src/nodes/procedural/Checker.js +14 -0
  268. package/src/nodes/tsl/TSLBase.js +30 -0
  269. package/{examples/jsm/nodes/shadernode/ShaderNode.js → src/nodes/tsl/TSLCore.js} +106 -96
  270. package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +2 -2
  271. package/{examples/jsm → src}/nodes/utils/ConvertNode.js +2 -2
  272. package/src/nodes/utils/CubeMapNode.js +157 -0
  273. package/src/nodes/utils/Discard.js +8 -0
  274. package/{examples/jsm → src}/nodes/utils/EquirectUVNode.js +5 -5
  275. package/src/nodes/utils/FlipNode.js +65 -0
  276. package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +7 -5
  277. package/{examples/jsm → src}/nodes/utils/JoinNode.js +2 -2
  278. package/{examples/jsm → src}/nodes/utils/LoopNode.js +19 -12
  279. package/{examples/jsm → src}/nodes/utils/MatcapUVNode.js +6 -6
  280. package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +12 -6
  281. package/{examples/jsm → src}/nodes/utils/OscNode.js +7 -7
  282. package/src/nodes/utils/Packing.js +4 -0
  283. package/src/nodes/utils/RTTNode.js +130 -0
  284. package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +17 -4
  285. package/{examples/jsm → src}/nodes/utils/RemapNode.js +7 -7
  286. package/{examples/jsm → src}/nodes/utils/RotateNode.js +4 -12
  287. package/{examples/jsm → src}/nodes/utils/SetNode.js +2 -2
  288. package/{examples/jsm → src}/nodes/utils/SplitNode.js +2 -2
  289. package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +5 -5
  290. package/src/nodes/utils/SpriteUtils.js +47 -0
  291. package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +4 -6
  292. package/{examples/jsm → src}/nodes/utils/TimerNode.js +5 -5
  293. package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +7 -9
  294. package/src/nodes/utils/UVUtils.js +19 -0
  295. package/src/nodes/utils/ViewportUtils.js +14 -0
  296. package/src/objects/BatchedMesh.js +169 -190
  297. package/src/objects/InstancedMesh.js +1 -1
  298. package/src/renderers/WebGLRenderer.js +60 -23
  299. package/{examples/jsm → src}/renderers/common/Attributes.js +2 -1
  300. package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
  301. package/{examples/jsm → src}/renderers/common/Background.js +12 -4
  302. package/src/renderers/common/BindGroup.js +18 -0
  303. package/{examples/jsm → src}/renderers/common/Bindings.js +45 -32
  304. package/{examples/jsm → src}/renderers/common/ClippingContext.js +18 -7
  305. package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
  306. package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +16 -4
  307. package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
  308. package/{examples/jsm → src}/renderers/common/Info.js +34 -6
  309. package/src/renderers/common/PostProcessing.js +90 -0
  310. package/{examples/jsm/objects → src/renderers/common}/QuadMesh.js +8 -3
  311. package/{examples/jsm → src}/renderers/common/RenderContext.js +25 -1
  312. package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
  313. package/{examples/jsm → src}/renderers/common/RenderList.js +1 -1
  314. package/{examples/jsm → src}/renderers/common/RenderObject.js +45 -12
  315. package/{examples/jsm → src}/renderers/common/Renderer.js +151 -73
  316. package/{examples/jsm → src}/renderers/common/SampledTexture.js +14 -5
  317. package/src/renderers/common/StandardRenderer.js +18 -0
  318. package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
  319. package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
  320. package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
  321. package/{examples/jsm → src}/renderers/common/Textures.js +14 -14
  322. package/{examples/jsm → src}/renderers/common/Uniform.js +9 -4
  323. package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
  324. package/{examples/jsm → src}/renderers/common/extras/PMREMGenerator.js +25 -25
  325. package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
  326. package/src/renderers/common/nodes/NodeLibrary.js +118 -0
  327. package/{examples/jsm → src}/renderers/common/nodes/NodeSampledTexture.js +8 -7
  328. package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +2 -1
  329. package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
  330. package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
  331. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
  332. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
  333. package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +69 -21
  334. package/src/renderers/common/nodes/StandardNodeLibrary.js +105 -0
  335. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +16 -1
  336. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  337. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +1 -1
  338. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
  339. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
  340. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  341. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  342. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -4
  343. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  344. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  345. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
  346. package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
  347. package/src/renderers/shaders/UniformsLib.js +3 -0
  348. package/src/renderers/webgl/WebGLAttributes.js +2 -2
  349. package/src/renderers/webgl/WebGLBufferRenderer.js +6 -19
  350. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +6 -18
  351. package/src/renderers/webgl/WebGLLights.js +6 -0
  352. package/src/renderers/webgl/WebGLProgram.js +27 -1
  353. package/src/renderers/webgl/WebGLPrograms.js +1 -1
  354. package/src/renderers/webgl/WebGLProperties.js +7 -0
  355. package/src/renderers/webgl/WebGLTextures.js +75 -57
  356. package/src/renderers/webgl/WebGLUniforms.js +12 -2
  357. package/src/renderers/webgl/WebGLUniformsGroups.js +7 -7
  358. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +242 -120
  359. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +227 -44
  360. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +2 -2
  361. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +1 -0
  362. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
  363. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +22 -1
  364. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +62 -23
  365. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +1 -1
  366. package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +242 -136
  367. package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +9 -9
  368. package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +281 -107
  369. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
  370. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  371. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +64 -33
  372. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +4 -1
  373. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +34 -36
  374. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
  375. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +76 -44
  376. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +42 -4
  377. package/src/renderers/webxr/WebXRDepthSensing.js +6 -0
  378. package/src/renderers/webxr/WebXRManager.js +37 -24
  379. package/src/textures/CompressedArrayTexture.js +1 -1
  380. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  381. package/examples/jsm/nodes/Nodes.js +0 -202
  382. package/examples/jsm/nodes/accessors/BatchNode.js +0 -78
  383. package/examples/jsm/nodes/accessors/CameraNode.js +0 -12
  384. package/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
  385. package/examples/jsm/nodes/accessors/InstanceNode.js +0 -94
  386. package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  387. package/examples/jsm/nodes/accessors/ModelNode.js +0 -36
  388. package/examples/jsm/nodes/accessors/NormalNode.js +0 -14
  389. package/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
  390. package/examples/jsm/nodes/accessors/PositionNode.js +0 -10
  391. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -6
  392. package/examples/jsm/nodes/accessors/SkinningNode.js +0 -124
  393. package/examples/jsm/nodes/accessors/TangentNode.js +0 -23
  394. package/examples/jsm/nodes/core/CacheNode.js +0 -49
  395. package/examples/jsm/nodes/core/NodeCache.js +0 -26
  396. package/examples/jsm/nodes/core/NodeKeywords.js +0 -80
  397. package/examples/jsm/nodes/core/PropertyNode.js +0 -83
  398. package/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
  399. package/examples/jsm/nodes/display/BlendModeNode.js +0 -128
  400. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
  401. package/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
  402. package/examples/jsm/nodes/display/FrontFacingNode.js +0 -40
  403. package/examples/jsm/nodes/display/PassNode.js +0 -201
  404. package/examples/jsm/nodes/display/ToneMappingNode.js +0 -188
  405. package/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
  406. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
  407. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -37
  408. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
  409. package/examples/jsm/nodes/lighting/AONode.js +0 -27
  410. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -256
  411. package/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
  412. package/examples/jsm/nodes/lighting/LightsNode.js +0 -215
  413. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
  414. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  415. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
  416. package/examples/jsm/nodes/materials/MeshMatcapNodeMaterial.js +0 -52
  417. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -38
  418. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
  419. package/examples/jsm/nodes/materials/MeshToonNodeMaterial.js +0 -34
  420. package/examples/jsm/nodes/materials/ShadowNodeMaterial.js +0 -34
  421. package/examples/jsm/nodes/math/HashNode.js +0 -34
  422. package/examples/jsm/nodes/math/MathNode.js +0 -391
  423. package/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
  424. package/examples/jsm/nodes/utils/DiscardNode.js +0 -27
  425. package/examples/jsm/nodes/utils/PackingNode.js +0 -55
  426. package/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
  427. package/examples/jsm/renderers/common/PostProcessing.js +0 -33
  428. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  429. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  430. /package/{examples/jsm/nodes/accessors/UVNode.js → src/nodes/accessors/UV.js} +0 -0
  431. /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
  432. /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
  433. /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
  434. /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
  435. /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
  436. /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
  437. /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
  438. /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
  439. /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
  440. /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
  441. /package/{examples/jsm → src}/renderers/common/Animation.js +0 -0
  442. /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
  443. /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
  444. /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
  445. /package/{examples/jsm → src}/renderers/common/ChainMap.js +0 -0
  446. /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
  447. /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
  448. /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
  449. /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
  450. /package/{examples/jsm → src}/renderers/common/Pipelines.js +0 -0
  451. /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
  452. /package/{examples/jsm → src}/renderers/common/RenderBundle.js +0 -0
  453. /package/{examples/jsm → src}/renderers/common/RenderBundles.js +0 -0
  454. /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
  455. /package/{examples/jsm → src}/renderers/common/RenderObjects.js +0 -0
  456. /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
  457. /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
  458. /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
  459. /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
  460. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBufferRenderer.js +0 -0
  461. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
  462. /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
@@ -9,6 +9,8 @@ class UniformsGroup extends UniformBuffer {
9
9
 
10
10
  this.isUniformsGroup = true;
11
11
 
12
+ this._values = null;
13
+
12
14
  // the order of uniforms in this array must match the order of uniforms in the shader
13
15
 
14
16
  this.uniforms = [];
@@ -37,6 +39,18 @@ class UniformsGroup extends UniformBuffer {
37
39
 
38
40
  }
39
41
 
42
+ get values() {
43
+
44
+ if ( this._values === null ) {
45
+
46
+ this._values = Array.from( this.buffer );
47
+
48
+ }
49
+
50
+ return this._values;
51
+
52
+ }
53
+
40
54
  get buffer() {
41
55
 
42
56
  let buffer = this._buffer;
@@ -116,7 +130,7 @@ class UniformsGroup extends UniformBuffer {
116
130
 
117
131
  updateByType( uniform ) {
118
132
 
119
- if ( uniform.isFloatUniform ) return this.updateNumber( uniform );
133
+ if ( uniform.isNumberUniform ) return this.updateNumber( uniform );
120
134
  if ( uniform.isVector2Uniform ) return this.updateVector2( uniform );
121
135
  if ( uniform.isVector3Uniform ) return this.updateVector3( uniform );
122
136
  if ( uniform.isVector4Uniform ) return this.updateVector4( uniform );
@@ -132,13 +146,15 @@ class UniformsGroup extends UniformBuffer {
132
146
 
133
147
  let updated = false;
134
148
 
135
- const a = this.buffer;
149
+ const a = this.values;
136
150
  const v = uniform.getValue();
137
151
  const offset = uniform.offset;
138
152
 
139
153
  if ( a[ offset ] !== v ) {
140
154
 
141
- a[ offset ] = v;
155
+ const b = this.buffer;
156
+
157
+ b[ offset ] = a[ offset ] = v;
142
158
  updated = true;
143
159
 
144
160
  }
@@ -151,14 +167,16 @@ class UniformsGroup extends UniformBuffer {
151
167
 
152
168
  let updated = false;
153
169
 
154
- const a = this.buffer;
170
+ const a = this.values;
155
171
  const v = uniform.getValue();
156
172
  const offset = uniform.offset;
157
173
 
158
174
  if ( a[ offset + 0 ] !== v.x || a[ offset + 1 ] !== v.y ) {
159
175
 
160
- a[ offset + 0 ] = v.x;
161
- a[ offset + 1 ] = v.y;
176
+ const b = this.buffer;
177
+
178
+ b[ offset + 0 ] = a[ offset + 0 ] = v.x;
179
+ b[ offset + 1 ] = a[ offset + 1 ] = v.y;
162
180
 
163
181
  updated = true;
164
182
 
@@ -172,15 +190,17 @@ class UniformsGroup extends UniformBuffer {
172
190
 
173
191
  let updated = false;
174
192
 
175
- const a = this.buffer;
193
+ const a = this.values;
176
194
  const v = uniform.getValue();
177
195
  const offset = uniform.offset;
178
196
 
179
197
  if ( a[ offset + 0 ] !== v.x || a[ offset + 1 ] !== v.y || a[ offset + 2 ] !== v.z ) {
180
198
 
181
- a[ offset + 0 ] = v.x;
182
- a[ offset + 1 ] = v.y;
183
- a[ offset + 2 ] = v.z;
199
+ const b = this.buffer;
200
+
201
+ b[ offset + 0 ] = a[ offset + 0 ] = v.x;
202
+ b[ offset + 1 ] = a[ offset + 1 ] = v.y;
203
+ b[ offset + 2 ] = a[ offset + 2 ] = v.z;
184
204
 
185
205
  updated = true;
186
206
 
@@ -194,16 +214,18 @@ class UniformsGroup extends UniformBuffer {
194
214
 
195
215
  let updated = false;
196
216
 
197
- const a = this.buffer;
217
+ const a = this.values;
198
218
  const v = uniform.getValue();
199
219
  const offset = uniform.offset;
200
220
 
201
221
  if ( a[ offset + 0 ] !== v.x || a[ offset + 1 ] !== v.y || a[ offset + 2 ] !== v.z || a[ offset + 4 ] !== v.w ) {
202
222
 
203
- a[ offset + 0 ] = v.x;
204
- a[ offset + 1 ] = v.y;
205
- a[ offset + 2 ] = v.z;
206
- a[ offset + 3 ] = v.w;
223
+ const b = this.buffer;
224
+
225
+ b[ offset + 0 ] = a[ offset + 0 ] = v.x;
226
+ b[ offset + 1 ] = a[ offset + 1 ] = v.y;
227
+ b[ offset + 2 ] = a[ offset + 2 ] = v.z;
228
+ b[ offset + 3 ] = a[ offset + 3 ] = v.w;
207
229
 
208
230
  updated = true;
209
231
 
@@ -217,15 +239,17 @@ class UniformsGroup extends UniformBuffer {
217
239
 
218
240
  let updated = false;
219
241
 
220
- const a = this.buffer;
242
+ const a = this.values;
221
243
  const c = uniform.getValue();
222
244
  const offset = uniform.offset;
223
245
 
224
246
  if ( a[ offset + 0 ] !== c.r || a[ offset + 1 ] !== c.g || a[ offset + 2 ] !== c.b ) {
225
247
 
226
- a[ offset + 0 ] = c.r;
227
- a[ offset + 1 ] = c.g;
228
- a[ offset + 2 ] = c.b;
248
+ const b = this.buffer;
249
+
250
+ b[ offset + 0 ] = a[ offset + 0 ] = c.r;
251
+ b[ offset + 1 ] = a[ offset + 1 ] = c.g;
252
+ b[ offset + 2 ] = a[ offset + 2 ] = c.b;
229
253
 
230
254
  updated = true;
231
255
 
@@ -239,7 +263,7 @@ class UniformsGroup extends UniformBuffer {
239
263
 
240
264
  let updated = false;
241
265
 
242
- const a = this.buffer;
266
+ const a = this.values;
243
267
  const e = uniform.getValue().elements;
244
268
  const offset = uniform.offset;
245
269
 
@@ -247,15 +271,17 @@ class UniformsGroup extends UniformBuffer {
247
271
  a[ offset + 4 ] !== e[ 3 ] || a[ offset + 5 ] !== e[ 4 ] || a[ offset + 6 ] !== e[ 5 ] ||
248
272
  a[ offset + 8 ] !== e[ 6 ] || a[ offset + 9 ] !== e[ 7 ] || a[ offset + 10 ] !== e[ 8 ] ) {
249
273
 
250
- a[ offset + 0 ] = e[ 0 ];
251
- a[ offset + 1 ] = e[ 1 ];
252
- a[ offset + 2 ] = e[ 2 ];
253
- a[ offset + 4 ] = e[ 3 ];
254
- a[ offset + 5 ] = e[ 4 ];
255
- a[ offset + 6 ] = e[ 5 ];
256
- a[ offset + 8 ] = e[ 6 ];
257
- a[ offset + 9 ] = e[ 7 ];
258
- a[ offset + 10 ] = e[ 8 ];
274
+ const b = this.buffer;
275
+
276
+ b[ offset + 0 ] = a[ offset + 0 ] = e[ 0 ];
277
+ b[ offset + 1 ] = a[ offset + 1 ] = e[ 1 ];
278
+ b[ offset + 2 ] = a[ offset + 2 ] = e[ 2 ];
279
+ b[ offset + 4 ] = a[ offset + 4 ] = e[ 3 ];
280
+ b[ offset + 5 ] = a[ offset + 5 ] = e[ 4 ];
281
+ b[ offset + 6 ] = a[ offset + 6 ] = e[ 5 ];
282
+ b[ offset + 8 ] = a[ offset + 8 ] = e[ 6 ];
283
+ b[ offset + 9 ] = a[ offset + 9 ] = e[ 7 ];
284
+ b[ offset + 10 ] = a[ offset + 10 ] = e[ 8 ];
259
285
 
260
286
  updated = true;
261
287
 
@@ -269,13 +295,15 @@ class UniformsGroup extends UniformBuffer {
269
295
 
270
296
  let updated = false;
271
297
 
272
- const a = this.buffer;
298
+ const a = this.values;
273
299
  const e = uniform.getValue().elements;
274
300
  const offset = uniform.offset;
275
301
 
276
302
  if ( arraysEqual( a, e, offset ) === false ) {
277
303
 
278
- a.set( e, offset );
304
+ const b = this.buffer;
305
+ b.set( e, offset );
306
+ setArray( a, e, offset );
279
307
  updated = true;
280
308
 
281
309
  }
@@ -286,6 +314,16 @@ class UniformsGroup extends UniformBuffer {
286
314
 
287
315
  }
288
316
 
317
+ function setArray( a, b, offset ) {
318
+
319
+ for ( let i = 0, l = b.length; i < l; i ++ ) {
320
+
321
+ a[ offset + i ] = b[ i ];
322
+
323
+ }
324
+
325
+ }
326
+
289
327
  function arraysEqual( a, b, offset ) {
290
328
 
291
329
  for ( let i = 0, l = b.length; i < l; i ++ ) {
@@ -1,21 +1,25 @@
1
- import NodeMaterial from '../../../nodes/materials/NodeMaterial.js';
1
+ import NodeMaterial from '../../../materials/nodes/NodeMaterial.js';
2
2
  import { getDirection, blur } from '../../../nodes/pmrem/PMREMUtils.js';
3
3
  import { equirectUV } from '../../../nodes/utils/EquirectUVNode.js';
4
4
  import { uniform } from '../../../nodes/core/UniformNode.js';
5
- import { uniforms } from '../../../nodes/accessors/UniformsNode.js';
5
+ import { uniformArray } from '../../../nodes/accessors/UniformArrayNode.js';
6
6
  import { texture } from '../../../nodes/accessors/TextureNode.js';
7
7
  import { cubeTexture } from '../../../nodes/accessors/CubeTextureNode.js';
8
- import { float, vec3 } from '../../../nodes/shadernode/ShaderNode.js';
9
- import { uv } from '../../../nodes/accessors/UVNode.js';
8
+ import { float, vec3 } from '../../../nodes/tsl/TSLBase.js';
9
+ import { uv } from '../../../nodes/accessors/UV.js';
10
10
  import { attribute } from '../../../nodes/core/AttributeNode.js';
11
+
12
+ import { OrthographicCamera } from '../../../cameras/OrthographicCamera.js';
13
+ import { Color } from '../../../math/Color.js';
14
+ import { Vector3 } from '../../../math/Vector3.js';
15
+ import { BufferGeometry } from '../../../core/BufferGeometry.js';
16
+ import { BufferAttribute } from '../../../core/BufferAttribute.js';
17
+ import { RenderTarget } from '../../../core/RenderTarget.js';
18
+ import { Mesh } from '../../../objects/Mesh.js';
19
+ import { PerspectiveCamera } from '../../../cameras/PerspectiveCamera.js';
20
+ import { MeshBasicMaterial } from '../../../materials/MeshBasicMaterial.js';
21
+ import { BoxGeometry } from '../../../geometries/BoxGeometry.js';
11
22
  import {
12
- OrthographicCamera,
13
- Color,
14
- Vector3,
15
- BufferGeometry,
16
- BufferAttribute,
17
- RenderTarget,
18
- Mesh,
19
23
  CubeReflectionMapping,
20
24
  CubeRefractionMapping,
21
25
  CubeUVReflectionMapping,
@@ -24,11 +28,8 @@ import {
24
28
  RGBAFormat,
25
29
  HalfFloatType,
26
30
  BackSide,
27
- LinearSRGBColorSpace,
28
- PerspectiveCamera,
29
- MeshBasicMaterial,
30
- BoxGeometry
31
- } from 'three';
31
+ LinearSRGBColorSpace
32
+ } from '../../../constants.js';
32
33
 
33
34
  const LOD_MIN = 4;
34
35
 
@@ -697,19 +698,18 @@ function _createRenderTarget( width, height, params ) {
697
698
 
698
699
  function _setViewport( target, x, y, width, height ) {
699
700
 
700
- const viewY = target.height - height - y;
701
-
702
- target.viewport.set( x, viewY, width, height );
703
- target.scissor.set( x, viewY, width, height );
701
+ target.viewport.set( x, y, width, height );
702
+ target.scissor.set( x, y, width, height );
704
703
 
705
704
  }
706
705
 
707
- function _getMaterial() {
706
+ function _getMaterial( type ) {
708
707
 
709
708
  const material = new NodeMaterial();
710
709
  material.depthTest = false;
711
710
  material.depthWrite = false;
712
711
  material.blending = NoBlending;
712
+ material.name = `PMREM_${ type }`;
713
713
 
714
714
  return material;
715
715
 
@@ -717,7 +717,7 @@ function _getMaterial() {
717
717
 
718
718
  function _getBlurShader( lodMax, width, height ) {
719
719
 
720
- const weights = uniforms( new Array( MAX_SAMPLES ).fill( 0 ) );
720
+ const weights = uniformArray( new Array( MAX_SAMPLES ).fill( 0 ) );
721
721
  const poleAxis = uniform( new Vector3( 0, 1, 0 ) );
722
722
  const dTheta = uniform( 0 );
723
723
  const n = float( MAX_SAMPLES );
@@ -744,7 +744,7 @@ function _getBlurShader( lodMax, width, height ) {
744
744
  CUBEUV_MAX_MIP
745
745
  };
746
746
 
747
- const material = _getMaterial();
747
+ const material = _getMaterial( 'blur' );
748
748
  material.uniforms = materialUniforms; // TODO: Move to outside of the material
749
749
  material.fragmentNode = blur( { ...materialUniforms, latitudinal: latitudinal.equal( 1 ) } );
750
750
 
@@ -754,7 +754,7 @@ function _getBlurShader( lodMax, width, height ) {
754
754
 
755
755
  function _getCubemapMaterial( envTexture ) {
756
756
 
757
- const material = _getMaterial();
757
+ const material = _getMaterial( 'cubemap' );
758
758
  material.fragmentNode = cubeTexture( envTexture, outputDirection );
759
759
 
760
760
  return material;
@@ -763,7 +763,7 @@ function _getCubemapMaterial( envTexture ) {
763
763
 
764
764
  function _getEquirectMaterial( envTexture ) {
765
765
 
766
- const material = _getMaterial();
766
+ const material = _getMaterial( 'equirect' );
767
767
  material.fragmentNode = texture( envTexture, equirectUV( outputDirection ), 0 );
768
768
 
769
769
  return material;
@@ -0,0 +1,58 @@
1
+ import BindGroup from '../BindGroup.js';
2
+
3
+ class NodeBuilderState {
4
+
5
+ constructor( vertexShader, fragmentShader, computeShader, nodeAttributes, bindings, updateNodes, updateBeforeNodes, updateAfterNodes, instanceBindGroups = true, transforms = [] ) {
6
+
7
+ this.vertexShader = vertexShader;
8
+ this.fragmentShader = fragmentShader;
9
+ this.computeShader = computeShader;
10
+ this.transforms = transforms;
11
+
12
+ this.nodeAttributes = nodeAttributes;
13
+ this.bindings = bindings;
14
+
15
+ this.updateNodes = updateNodes;
16
+ this.updateBeforeNodes = updateBeforeNodes;
17
+ this.updateAfterNodes = updateAfterNodes;
18
+
19
+ this.instanceBindGroups = instanceBindGroups;
20
+
21
+ this.usedTimes = 0;
22
+
23
+ }
24
+
25
+ createBindings() {
26
+
27
+ const bindings = [];
28
+
29
+ for ( const instanceGroup of this.bindings ) {
30
+
31
+ const shared = this.instanceBindGroups && instanceGroup.bindings[ 0 ].groupNode.shared;
32
+
33
+ if ( shared !== true ) {
34
+
35
+ const bindingsGroup = new BindGroup( instanceGroup.name, [], instanceGroup.index, instanceGroup );
36
+ bindings.push( bindingsGroup );
37
+
38
+ for ( const instanceBinding of instanceGroup.bindings ) {
39
+
40
+ bindingsGroup.bindings.push( instanceBinding.clone() );
41
+
42
+ }
43
+
44
+ } else {
45
+
46
+ bindings.push( instanceGroup );
47
+
48
+ }
49
+
50
+ }
51
+
52
+ return bindings;
53
+
54
+ }
55
+
56
+ }
57
+
58
+ export default NodeBuilderState;
@@ -0,0 +1,118 @@
1
+ class NodeLibrary {
2
+
3
+ constructor() {
4
+
5
+ this.lightNodes = new WeakMap();
6
+ this.materialNodes = new Map();
7
+ this.toneMappingNodes = new Map();
8
+ this.colorSpaceNodes = new Map();
9
+
10
+ }
11
+
12
+ fromMaterial( material ) {
13
+
14
+ if ( material.isNodeMaterial ) return material;
15
+
16
+ let nodeMaterial = null;
17
+
18
+ const nodeMaterialClass = this.getMaterialNodeClass( material.type );
19
+
20
+ if ( nodeMaterialClass !== null ) {
21
+
22
+ nodeMaterial = new nodeMaterialClass();
23
+
24
+ for ( const key in material ) {
25
+
26
+ nodeMaterial[ key ] = material[ key ];
27
+
28
+ }
29
+
30
+ }
31
+
32
+ return nodeMaterial;
33
+
34
+ }
35
+
36
+ addColorSpace( colorSpaceNode, colorSpace ) {
37
+
38
+ this.addType( colorSpaceNode, colorSpace, this.colorSpaceNodes );
39
+
40
+ }
41
+
42
+ getColorSpaceFunction( colorSpace ) {
43
+
44
+ return this.colorSpaceNodes.get( colorSpace ) || null;
45
+
46
+ }
47
+
48
+ addToneMapping( toneMappingNode, toneMapping ) {
49
+
50
+ this.addType( toneMappingNode, toneMapping, this.toneMappingNodes );
51
+
52
+ }
53
+
54
+ getToneMappingFunction( toneMapping ) {
55
+
56
+ return this.toneMappingNodes.get( toneMapping ) || null;
57
+
58
+ }
59
+
60
+ getMaterialNodeClass( materialType ) {
61
+
62
+ return this.materialNodes.get( materialType ) || null;
63
+
64
+ }
65
+
66
+ addMaterial( materialNodeClass, materialClass ) {
67
+
68
+ this.addType( materialNodeClass, materialClass.name, this.materialNodes );
69
+
70
+ }
71
+
72
+ getLightNodeClass( light ) {
73
+
74
+ return this.lightNodes.get( light ) || null;
75
+
76
+ }
77
+
78
+ addLight( lightNodeClass, lightClass ) {
79
+
80
+ this.addClass( lightNodeClass, lightClass, this.lightNodes );
81
+
82
+ }
83
+
84
+ addType( nodeClass, type, library ) {
85
+
86
+ if ( library.has( type ) ) {
87
+
88
+ console.warn( `Redefinition of node ${ type }` );
89
+ return;
90
+
91
+ }
92
+
93
+ if ( typeof nodeClass !== 'function' ) throw new Error( `Node class ${ nodeClass.name } is not a class.` );
94
+ if ( typeof type === 'function' || typeof type === 'object' ) throw new Error( `Base class ${ type } is not a class.` );
95
+
96
+ library.set( type, nodeClass );
97
+
98
+ }
99
+
100
+ addClass( nodeClass, baseClass, library ) {
101
+
102
+ if ( library.has( baseClass ) ) {
103
+
104
+ console.warn( `Redefinition of node ${ baseClass.name }` );
105
+ return;
106
+
107
+ }
108
+
109
+ if ( typeof nodeClass !== 'function' ) throw new Error( `Node class ${ nodeClass.name } is not a class.` );
110
+ if ( typeof baseClass !== 'function' ) throw new Error( `Base class ${ baseClass.name } is not a class.` );
111
+
112
+ library.set( baseClass, nodeClass );
113
+
114
+ }
115
+
116
+ }
117
+
118
+ export default NodeLibrary;
@@ -2,19 +2,20 @@ import { SampledTexture } from '../SampledTexture.js';
2
2
 
3
3
  class NodeSampledTexture extends SampledTexture {
4
4
 
5
- constructor( name, textureNode, access = null ) {
5
+ constructor( name, textureNode, groupNode, access = null ) {
6
6
 
7
7
  super( name, textureNode ? textureNode.value : null );
8
8
 
9
9
  this.textureNode = textureNode;
10
+ this.groupNode = groupNode;
10
11
 
11
12
  this.access = access;
12
13
 
13
14
  }
14
15
 
15
- get needsBindingsUpdate() {
16
+ needsBindingsUpdate( generation ) {
16
17
 
17
- return this.textureNode.value !== this.texture || super.needsBindingsUpdate;
18
+ return this.textureNode.value !== this.texture || super.needsBindingsUpdate( generation );
18
19
 
19
20
  }
20
21
 
@@ -38,9 +39,9 @@ class NodeSampledTexture extends SampledTexture {
38
39
 
39
40
  class NodeSampledCubeTexture extends NodeSampledTexture {
40
41
 
41
- constructor( name, textureNode, access ) {
42
+ constructor( name, textureNode, groupNode, access ) {
42
43
 
43
- super( name, textureNode, access );
44
+ super( name, textureNode, groupNode, access );
44
45
 
45
46
  this.isSampledCubeTexture = true;
46
47
 
@@ -50,9 +51,9 @@ class NodeSampledCubeTexture extends NodeSampledTexture {
50
51
 
51
52
  class NodeSampledTexture3D extends NodeSampledTexture {
52
53
 
53
- constructor( name, textureNode, access ) {
54
+ constructor( name, textureNode, groupNode, access ) {
54
55
 
55
- super( name, textureNode, access );
56
+ super( name, textureNode, groupNode, access );
56
57
 
57
58
  this.isSampledTexture3D = true;
58
59
 
@@ -2,11 +2,12 @@ import Sampler from '../Sampler.js';
2
2
 
3
3
  class NodeSampler extends Sampler {
4
4
 
5
- constructor( name, textureNode ) {
5
+ constructor( name, textureNode, groupNode ) {
6
6
 
7
7
  super( name, textureNode ? textureNode.value : null );
8
8
 
9
9
  this.textureNode = textureNode;
10
+ this.groupNode = groupNode;
10
11
 
11
12
  }
12
13
 
@@ -1,14 +1,18 @@
1
1
  import StorageBuffer from '../StorageBuffer.js';
2
+ import { GPUBufferBindingType } from '../../webgpu/utils/WebGPUConstants.js';
2
3
 
3
4
  let _id = 0;
4
5
 
5
6
  class NodeStorageBuffer extends StorageBuffer {
6
7
 
7
- constructor( nodeUniform ) {
8
+ constructor( nodeUniform, groupNode ) {
8
9
 
9
10
  super( 'StorageBuffer_' + _id ++, nodeUniform ? nodeUniform.value : null );
10
11
 
11
12
  this.nodeUniform = nodeUniform;
13
+ this.access = nodeUniform ? nodeUniform.access : GPUBufferBindingType.Storage;
14
+ this.groupNode = groupNode;
15
+
12
16
 
13
17
  }
14
18
 
@@ -1,9 +1,9 @@
1
1
  import {
2
- FloatUniform, Vector2Uniform, Vector3Uniform, Vector4Uniform,
2
+ NumberUniform, Vector2Uniform, Vector3Uniform, Vector4Uniform,
3
3
  ColorUniform, Matrix3Uniform, Matrix4Uniform
4
4
  } from '../Uniform.js';
5
5
 
6
- class FloatNodeUniform extends FloatUniform {
6
+ class NumberNodeUniform extends NumberUniform {
7
7
 
8
8
  constructor( nodeUniform ) {
9
9
 
@@ -130,6 +130,6 @@ class Matrix4NodeUniform extends Matrix4Uniform {
130
130
  }
131
131
 
132
132
  export {
133
- FloatNodeUniform, Vector2NodeUniform, Vector3NodeUniform, Vector4NodeUniform,
133
+ NumberNodeUniform, Vector2NodeUniform, Vector3NodeUniform, Vector4NodeUniform,
134
134
  ColorNodeUniform, Matrix3NodeUniform, Matrix4NodeUniform
135
135
  };
@@ -4,11 +4,12 @@ let _id = 0;
4
4
 
5
5
  class NodeUniformBuffer extends UniformBuffer {
6
6
 
7
- constructor( nodeUniform ) {
7
+ constructor( nodeUniform, groupNode ) {
8
8
 
9
9
  super( 'UniformBuffer_' + _id ++, nodeUniform ? nodeUniform.value : null );
10
10
 
11
11
  this.nodeUniform = nodeUniform;
12
+ this.groupNode = groupNode;
12
13
 
13
14
  }
14
15
 
@@ -1,6 +1,6 @@
1
1
  import UniformsGroup from '../UniformsGroup.js';
2
2
 
3
- let id = 0;
3
+ let _id = 0;
4
4
 
5
5
  class NodeUniformsGroup extends UniformsGroup {
6
6
 
@@ -8,19 +8,13 @@ class NodeUniformsGroup extends UniformsGroup {
8
8
 
9
9
  super( name );
10
10
 
11
- this.id = id ++;
11
+ this.id = _id ++;
12
12
  this.groupNode = groupNode;
13
13
 
14
14
  this.isNodeUniformsGroup = true;
15
15
 
16
16
  }
17
17
 
18
- get shared() {
19
-
20
- return this.groupNode.shared;
21
-
22
- }
23
-
24
18
  getNodes() {
25
19
 
26
20
  const nodes = [];