super-three 0.137.0 → 0.141.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 (703) hide show
  1. package/README.md +23 -25
  2. package/build/three.cjs +3721 -4964
  3. package/build/three.js +3723 -4966
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +5705 -7216
  6. package/examples/js/animation/CCDIKSolver.js +3 -2
  7. package/examples/js/animation/MMDPhysics.js +2 -2
  8. package/examples/js/controls/ArcballControls.js +3 -1
  9. package/examples/js/controls/PointerLockControls.js +3 -2
  10. package/examples/js/controls/TrackballControls.js +1 -4
  11. package/examples/js/controls/TransformControls.js +5 -6
  12. package/examples/js/controls/experimental/CameraControls.js +2 -2
  13. package/examples/js/csm/CSMFrustum.js +1 -1
  14. package/examples/js/csm/CSMShader.js +51 -35
  15. package/examples/js/curves/CurveExtras.js +14 -18
  16. package/examples/js/effects/AnaglyphEffect.js +7 -4
  17. package/examples/js/effects/AsciiEffect.js +10 -29
  18. package/examples/js/exporters/ColladaExporter.js +29 -7
  19. package/examples/js/exporters/EXRExporter.js +458 -0
  20. package/examples/js/exporters/GLTFExporter.js +213 -128
  21. package/examples/js/exporters/OBJExporter.js +12 -18
  22. package/examples/js/exporters/PLYExporter.js +15 -20
  23. package/examples/js/exporters/USDZExporter.js +13 -0
  24. package/examples/js/geometries/DecalGeometry.js +0 -7
  25. package/examples/js/geometries/LightningStrike.js +2 -2
  26. package/examples/js/geometries/ParametricGeometries.js +3 -3
  27. package/examples/js/helpers/OctreeHelper.js +74 -0
  28. package/examples/js/helpers/VertexNormalsHelper.js +4 -23
  29. package/examples/js/helpers/VertexTangentsHelper.js +3 -13
  30. package/examples/js/helpers/ViewHelper.js +266 -0
  31. package/examples/js/interactive/HTMLMesh.js +235 -40
  32. package/examples/js/interactive/SelectionHelper.js +1 -1
  33. package/examples/js/libs/opentype.min.js +1 -118
  34. package/examples/js/lines/Line2.js +1 -2
  35. package/examples/js/lines/LineGeometry.js +10 -21
  36. package/examples/js/lines/LineMaterial.js +2 -3
  37. package/examples/js/lines/LineSegments2.js +214 -140
  38. package/examples/js/lines/LineSegmentsGeometry.js +3 -14
  39. package/examples/js/lines/Wireframe.js +2 -3
  40. package/examples/js/lines/WireframeGeometry2.js +1 -2
  41. package/examples/js/loaders/3MFLoader.js +21 -17
  42. package/examples/js/loaders/AMFLoader.js +1 -1
  43. package/examples/js/loaders/ColladaLoader.js +33 -12
  44. package/examples/js/loaders/DDSLoader.js +23 -30
  45. package/examples/js/loaders/EXRLoader.js +269 -266
  46. package/examples/js/loaders/FBXLoader.js +11 -0
  47. package/examples/js/loaders/FontLoader.js +1 -2
  48. package/examples/js/loaders/GCodeLoader.js +0 -1
  49. package/examples/js/loaders/GLTFLoader.js +249 -60
  50. package/examples/js/loaders/KMZLoader.js +1 -1
  51. package/examples/js/loaders/KTX2Loader.js +1 -9
  52. package/examples/js/loaders/LDrawLoader.js +3 -11
  53. package/examples/js/loaders/LUT3dlLoader.js +1 -1
  54. package/examples/js/loaders/LUTCubeLoader.js +1 -1
  55. package/examples/js/loaders/LWOLoader.js +4 -2
  56. package/examples/js/loaders/LogLuvLoader.js +1 -2
  57. package/examples/js/loaders/MMDLoader.js +18 -4
  58. package/examples/js/loaders/NRRDLoader.js +1 -1
  59. package/examples/js/loaders/OBJLoader.js +9 -5
  60. package/examples/js/loaders/PCDLoader.js +22 -13
  61. package/examples/js/loaders/PDBLoader.js +11 -11
  62. package/examples/js/loaders/PLYLoader.js +5 -1
  63. package/examples/js/loaders/RGBELoader.js +3 -11
  64. package/examples/js/loaders/RGBMLoader.js +12 -15
  65. package/examples/js/loaders/SVGLoader.js +16 -9
  66. package/examples/js/loaders/VOXLoader.js +3 -4
  67. package/examples/js/loaders/VTKLoader.js +260 -295
  68. package/examples/js/loaders/lwo/LWO2Parser.js +4 -4
  69. package/examples/js/loaders/lwo/LWO3Parser.js +4 -4
  70. package/examples/js/math/ConvexHull.js +6 -15
  71. package/examples/js/math/Lut.js +27 -26
  72. package/examples/js/misc/MorphAnimMesh.js +2 -2
  73. package/examples/js/misc/ProgressiveLightMap.js +1 -1
  74. package/examples/js/misc/Volume.js +37 -46
  75. package/examples/js/misc/VolumeSlice.js +21 -21
  76. package/examples/js/modifiers/EdgeSplitModifier.js +0 -7
  77. package/examples/js/modifiers/SimplifyModifier.js +1 -8
  78. package/examples/js/modifiers/TessellateModifier.js +0 -7
  79. package/examples/js/objects/Lensflare.js +2 -2
  80. package/examples/js/objects/LightningStorm.js +4 -5
  81. package/examples/js/objects/MarchingCubes.js +6 -11
  82. package/examples/js/objects/Reflector.js +10 -4
  83. package/examples/js/objects/ReflectorForSSRPass.js +1 -1
  84. package/examples/js/objects/Refractor.js +10 -4
  85. package/examples/js/objects/ShadowMesh.js +1 -2
  86. package/examples/js/objects/Sky.js +1 -1
  87. package/examples/js/objects/Water.js +1 -2
  88. package/examples/js/objects/Water2.js +1 -1
  89. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +6 -10
  90. package/examples/js/postprocessing/AfterimagePass.js +2 -6
  91. package/examples/js/postprocessing/BloomPass.js +50 -19
  92. package/examples/js/postprocessing/DotScreenPass.js +1 -1
  93. package/examples/js/postprocessing/EffectComposer.js +1 -6
  94. package/examples/js/postprocessing/LUTPass.js +2 -2
  95. package/examples/js/postprocessing/OutlinePass.js +7 -12
  96. package/examples/js/postprocessing/SAOPass.js +2 -7
  97. package/examples/js/postprocessing/SSAARenderPass.js +1 -6
  98. package/examples/js/postprocessing/SSRPass.js +3 -8
  99. package/examples/js/postprocessing/TAARenderPass.js +4 -4
  100. package/examples/js/postprocessing/UnrealBloomPass.js +3 -12
  101. package/examples/js/renderers/CSS2DRenderer.js +20 -25
  102. package/examples/js/renderers/CSS3DRenderer.js +6 -7
  103. package/examples/js/renderers/Projector.js +97 -124
  104. package/examples/js/renderers/SVGRenderer.js +3 -4
  105. package/examples/js/shaders/BlendShader.js +2 -1
  106. package/examples/js/shaders/CopyShader.js +4 -3
  107. package/examples/js/shaders/FXAAShader.js +239 -1069
  108. package/examples/js/shaders/FreiChenShader.js +1 -1
  109. package/examples/js/shaders/HorizontalBlurShader.js +1 -1
  110. package/examples/js/shaders/HorizontalTiltShiftShader.js +1 -1
  111. package/examples/js/shaders/SSRShader.js +3 -3
  112. package/examples/js/shaders/ToneMapShader.js +1 -1
  113. package/examples/js/utils/BufferGeometryUtils.js +282 -22
  114. package/examples/js/utils/GPUStatsPanel.js +1 -1
  115. package/examples/js/utils/LDrawUtils.js +6 -6
  116. package/examples/js/utils/SceneUtils.js +59 -0
  117. package/examples/js/utils/SkeletonUtils.js +1 -1
  118. package/examples/js/utils/UVsDebug.js +23 -33
  119. package/examples/jsm/animation/CCDIKSolver.js +3 -9
  120. package/examples/jsm/animation/MMDPhysics.js +1 -1
  121. package/examples/jsm/capabilities/WebGPU.js +6 -0
  122. package/examples/jsm/controls/ArcballControls.js +3 -1
  123. package/examples/jsm/controls/PointerLockControls.js +4 -2
  124. package/examples/jsm/controls/TrackballControls.js +1 -4
  125. package/examples/jsm/controls/TransformControls.js +6 -6
  126. package/examples/jsm/controls/experimental/CameraControls.js +2 -2
  127. package/examples/jsm/csm/CSMFrustum.js +1 -1
  128. package/examples/jsm/csm/CSMShader.js +51 -35
  129. package/examples/jsm/curves/CurveExtras.js +15 -17
  130. package/examples/jsm/effects/AnaglyphEffect.js +4 -4
  131. package/examples/jsm/effects/AsciiEffect.js +9 -22
  132. package/examples/jsm/exporters/ColladaExporter.js +31 -6
  133. package/examples/jsm/exporters/EXRExporter.js +507 -0
  134. package/examples/jsm/exporters/GLTFExporter.js +231 -125
  135. package/examples/jsm/exporters/KTX2Exporter.js +281 -0
  136. package/examples/jsm/exporters/OBJExporter.js +11 -18
  137. package/examples/jsm/exporters/PLYExporter.js +23 -21
  138. package/examples/jsm/exporters/USDZExporter.js +12 -0
  139. package/examples/jsm/geometries/DecalGeometry.js +0 -7
  140. package/examples/jsm/geometries/LightningStrike.js +2 -2
  141. package/examples/jsm/geometries/ParametricGeometries.js +3 -3
  142. package/examples/jsm/helpers/OctreeHelper.js +58 -0
  143. package/examples/jsm/helpers/VertexNormalsHelper.js +4 -25
  144. package/examples/jsm/helpers/VertexTangentsHelper.js +3 -15
  145. package/examples/jsm/helpers/ViewHelper.js +295 -0
  146. package/examples/jsm/interactive/HTMLMesh.js +252 -34
  147. package/examples/jsm/interactive/SelectionHelper.js +1 -1
  148. package/examples/jsm/libs/flow.module.js +30 -27
  149. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  150. package/examples/jsm/libs/mikktspace.module.js +128 -0
  151. package/examples/jsm/libs/opentype.module.js +14568 -0
  152. package/examples/jsm/lines/Line2.js +2 -2
  153. package/examples/jsm/lines/LineGeometry.js +11 -19
  154. package/examples/jsm/lines/LineMaterial.js +3 -3
  155. package/examples/jsm/lines/LineSegments2.js +210 -145
  156. package/examples/jsm/lines/LineSegmentsGeometry.js +3 -12
  157. package/examples/jsm/lines/Wireframe.js +3 -3
  158. package/examples/jsm/lines/WireframeGeometry2.js +2 -2
  159. package/examples/jsm/loaders/3DMLoader.js +3 -2
  160. package/examples/jsm/loaders/3MFLoader.js +21 -17
  161. package/examples/jsm/loaders/AMFLoader.js +1 -1
  162. package/examples/jsm/loaders/ColladaLoader.js +40 -12
  163. package/examples/jsm/loaders/DDSLoader.js +21 -28
  164. package/examples/jsm/loaders/EXRLoader.js +268 -265
  165. package/examples/jsm/loaders/FBXLoader.js +11 -0
  166. package/examples/jsm/loaders/FontLoader.js +2 -2
  167. package/examples/jsm/loaders/GCodeLoader.js +0 -1
  168. package/examples/jsm/loaders/GLTFLoader.js +263 -66
  169. package/examples/jsm/loaders/KMZLoader.js +1 -1
  170. package/examples/jsm/loaders/KTX2Loader.js +1 -10
  171. package/examples/jsm/loaders/LDrawLoader.js +4 -11
  172. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  173. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  174. package/examples/jsm/loaders/LWOLoader.js +5 -3
  175. package/examples/jsm/loaders/LogLuvLoader.js +2 -2
  176. package/examples/jsm/loaders/MMDLoader.js +21 -3
  177. package/examples/jsm/loaders/NRRDLoader.js +1 -2
  178. package/examples/jsm/loaders/OBJLoader.js +11 -7
  179. package/examples/jsm/loaders/PCDLoader.js +23 -15
  180. package/examples/jsm/loaders/PDBLoader.js +11 -11
  181. package/examples/jsm/loaders/PLYLoader.js +10 -2
  182. package/examples/jsm/loaders/RGBELoader.js +4 -12
  183. package/examples/jsm/loaders/RGBMLoader.js +14 -11
  184. package/examples/jsm/loaders/SVGLoader.js +17 -9
  185. package/examples/jsm/loaders/TTFLoader.js +1 -1
  186. package/examples/jsm/loaders/VOXLoader.js +5 -5
  187. package/examples/jsm/loaders/VTKLoader.js +256 -284
  188. package/examples/jsm/loaders/ifc/web-ifc-api.js +9 -8
  189. package/examples/jsm/loaders/lwo/LWO2Parser.js +4 -4
  190. package/examples/jsm/loaders/lwo/LWO3Parser.js +4 -4
  191. package/examples/jsm/math/ConvexHull.js +6 -15
  192. package/examples/jsm/math/Lut.js +35 -25
  193. package/examples/jsm/misc/MorphAnimMesh.js +2 -2
  194. package/examples/jsm/misc/ProgressiveLightMap.js +1 -1
  195. package/examples/jsm/misc/Volume.js +37 -44
  196. package/examples/jsm/misc/VolumeSlice.js +21 -21
  197. package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -7
  198. package/examples/jsm/modifiers/SimplifyModifier.js +1 -8
  199. package/examples/jsm/modifiers/TessellateModifier.js +0 -7
  200. package/examples/jsm/node-editor/NodeEditor.js +78 -9
  201. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
  202. package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
  203. package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
  204. package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
  205. package/examples/jsm/node-editor/core/BaseNode.js +17 -11
  206. package/examples/jsm/node-editor/core/DataFile.js +59 -0
  207. package/examples/jsm/node-editor/core/FileEditor.js +20 -0
  208. package/examples/jsm/node-editor/core/FileURLEditor.js +29 -0
  209. package/examples/jsm/node-editor/display/BlendEditor.js +3 -3
  210. package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
  211. package/examples/jsm/node-editor/examples/matcap.json +1 -0
  212. package/examples/jsm/node-editor/inputs/ColorEditor.js +7 -6
  213. package/examples/jsm/node-editor/inputs/FloatEditor.js +2 -2
  214. package/examples/jsm/node-editor/inputs/SliderEditor.js +2 -2
  215. package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
  216. package/examples/jsm/node-editor/inputs/Vector2Editor.js +3 -2
  217. package/examples/jsm/node-editor/inputs/Vector3Editor.js +3 -2
  218. package/examples/jsm/node-editor/inputs/Vector4Editor.js +4 -3
  219. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +3 -3
  220. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +16 -11
  221. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +15 -5
  222. package/examples/jsm/node-editor/math/AngleEditor.js +3 -2
  223. package/examples/jsm/node-editor/math/DotEditor.js +2 -2
  224. package/examples/jsm/node-editor/math/InvertEditor.js +4 -4
  225. package/examples/jsm/node-editor/math/LimiterEditor.js +22 -9
  226. package/examples/jsm/node-editor/math/NormalizeEditor.js +3 -2
  227. package/examples/jsm/node-editor/math/OperatorEditor.js +20 -8
  228. package/examples/jsm/node-editor/math/PowerEditor.js +17 -8
  229. package/examples/jsm/node-editor/math/TrigonometryEditor.js +3 -2
  230. package/examples/jsm/node-editor/procedural/CheckerEditor.js +4 -4
  231. package/examples/jsm/node-editor/utils/JoinEditor.js +2 -2
  232. package/examples/jsm/node-editor/utils/OscillatorEditor.js +2 -2
  233. package/examples/jsm/node-editor/utils/PreviewEditor.js +166 -0
  234. package/examples/jsm/node-editor/utils/SplitEditor.js +2 -2
  235. package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
  236. package/examples/jsm/nodes/Nodes.js +283 -94
  237. package/examples/jsm/nodes/accessors/BufferNode.js +24 -0
  238. package/examples/jsm/nodes/accessors/CameraNode.js +27 -196
  239. package/examples/jsm/nodes/accessors/CubeTextureNode.js +103 -0
  240. package/examples/jsm/nodes/accessors/InstanceNode.js +58 -0
  241. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialNode.js +49 -11
  242. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialReferenceNode.js +0 -0
  243. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelNode.js +8 -0
  244. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelViewProjectionNode.js +0 -0
  245. package/examples/jsm/nodes/accessors/NormalNode.js +39 -99
  246. package/examples/jsm/{renderers/nodes → nodes}/accessors/Object3DNode.js +34 -17
  247. package/examples/jsm/{renderers/nodes → nodes}/accessors/PointUVNode.js +2 -2
  248. package/examples/jsm/nodes/accessors/PositionNode.js +41 -110
  249. package/examples/jsm/nodes/accessors/ReferenceNode.js +65 -0
  250. package/examples/jsm/nodes/accessors/ReflectNode.js +34 -121
  251. package/examples/jsm/nodes/accessors/SkinningNode.js +102 -0
  252. package/examples/jsm/nodes/accessors/StorageBufferNode.js +21 -0
  253. package/examples/jsm/nodes/accessors/TextureNode.js +100 -0
  254. package/examples/jsm/nodes/accessors/UVNode.js +17 -43
  255. package/examples/jsm/nodes/accessors/UserDataNode.js +23 -0
  256. package/examples/jsm/nodes/core/ArrayUniformNode.js +23 -0
  257. package/examples/jsm/nodes/core/AttributeNode.js +33 -30
  258. package/examples/jsm/{renderers/nodes → nodes}/core/BypassNode.js +2 -2
  259. package/examples/jsm/{renderers/nodes → nodes}/core/CodeNode.js +2 -30
  260. package/examples/jsm/nodes/core/ConstNode.js +10 -106
  261. package/examples/jsm/{renderers/nodes → nodes}/core/ContextNode.js +17 -3
  262. package/examples/jsm/nodes/core/ExpressionNode.js +24 -7
  263. package/examples/jsm/nodes/core/FunctionCallNode.js +26 -67
  264. package/examples/jsm/nodes/core/FunctionNode.js +43 -216
  265. package/examples/jsm/nodes/core/InputNode.js +28 -60
  266. package/examples/jsm/nodes/core/InstanceIndexNode.js +21 -0
  267. package/examples/jsm/nodes/core/Node.js +228 -94
  268. package/examples/jsm/{renderers/nodes → nodes}/core/NodeAttribute.js +2 -2
  269. package/examples/jsm/nodes/core/NodeBuilder.js +388 -560
  270. package/examples/jsm/{renderers/nodes → nodes}/core/NodeCode.js +0 -0
  271. package/examples/jsm/nodes/core/NodeFrame.js +30 -23
  272. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunction.js +0 -0
  273. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunctionInput.js +0 -0
  274. package/examples/jsm/{renderers/nodes → nodes}/core/NodeKeywords.js +0 -0
  275. package/examples/jsm/{renderers/nodes → nodes}/core/NodeParser.js +0 -0
  276. package/examples/jsm/nodes/core/NodeUniform.js +8 -6
  277. package/examples/jsm/nodes/core/NodeUtils.js +69 -37
  278. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVar.js +2 -2
  279. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVary.js +2 -2
  280. package/examples/jsm/{renderers/nodes → nodes}/core/PropertyNode.js +0 -0
  281. package/examples/jsm/nodes/core/TempNode.js +20 -112
  282. package/examples/jsm/nodes/core/UniformNode.js +46 -0
  283. package/examples/jsm/nodes/core/VarNode.js +58 -27
  284. package/examples/jsm/{renderers/nodes → nodes}/core/VaryNode.js +0 -0
  285. package/examples/jsm/{renderers/nodes → nodes}/core/constants.js +0 -0
  286. package/examples/jsm/{renderers/nodes → nodes}/display/ColorSpaceNode.js +10 -11
  287. package/examples/jsm/nodes/display/FrontFacingNode.js +21 -0
  288. package/examples/jsm/nodes/display/NormalMapNode.js +86 -0
  289. package/examples/jsm/nodes/display/ToneMappingNode.js +51 -0
  290. package/examples/jsm/nodes/fog/FogNode.js +31 -0
  291. package/examples/jsm/nodes/fog/FogRangeNode.js +27 -0
  292. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +33 -0
  293. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  294. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +27 -0
  295. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
  296. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +18 -0
  297. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
  298. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +94 -0
  299. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +22 -0
  300. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +12 -0
  301. package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
  302. package/examples/jsm/nodes/gpgpu/ComputeNode.js +63 -0
  303. package/examples/jsm/nodes/lighting/AONode.js +25 -0
  304. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +37 -0
  305. package/examples/jsm/nodes/lighting/EnvironmentNode.js +65 -0
  306. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +50 -0
  307. package/examples/jsm/nodes/lighting/LightingContextNode.js +75 -0
  308. package/examples/jsm/nodes/lighting/LightingNode.js +19 -0
  309. package/examples/jsm/nodes/lighting/LightsNode.js +120 -0
  310. package/examples/jsm/nodes/lighting/PunctualLightNode.js +68 -0
  311. package/examples/jsm/nodes/loaders/NodeLoader.js +107 -0
  312. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +42 -0
  313. package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
  314. package/examples/jsm/{renderers/nodes → nodes}/materials/LineBasicNodeMaterial.js +11 -4
  315. package/examples/jsm/nodes/materials/Materials.js +65 -0
  316. package/examples/jsm/{renderers/nodes → nodes}/materials/MeshBasicNodeMaterial.js +13 -4
  317. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +162 -22
  318. package/examples/jsm/nodes/materials/NodeMaterial.js +128 -113
  319. package/examples/jsm/{renderers/nodes → nodes}/materials/PointsNodeMaterial.js +13 -4
  320. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +84 -16
  321. package/examples/jsm/nodes/math/CondNode.js +26 -95
  322. package/examples/jsm/nodes/math/MathNode.js +164 -187
  323. package/examples/jsm/nodes/math/OperatorNode.js +161 -41
  324. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeFunction.js +2 -2
  325. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeParser.js +0 -0
  326. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeFunction.js +20 -5
  327. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeParser.js +0 -0
  328. package/examples/jsm/nodes/procedural/CheckerNode.js +16 -57
  329. package/examples/jsm/nodes/shadernode/ShaderNode.js +262 -0
  330. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +274 -0
  331. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +106 -0
  332. package/examples/jsm/{renderers/nodes → nodes}/utils/ArrayElementNode.js +3 -3
  333. package/examples/jsm/{renderers/nodes → nodes}/utils/ConvertNode.js +11 -3
  334. package/examples/jsm/nodes/utils/JoinNode.js +17 -89
  335. package/examples/jsm/nodes/utils/MatcapUVNode.js +25 -0
  336. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +32 -0
  337. package/examples/jsm/{renderers/nodes → nodes}/utils/OscNode.js +18 -2
  338. package/examples/jsm/{renderers/nodes → nodes}/utils/SplitNode.js +16 -0
  339. package/examples/jsm/{renderers/nodes → nodes}/utils/SpriteSheetUVNode.js +3 -3
  340. package/examples/jsm/nodes/utils/TimerNode.js +30 -65
  341. package/examples/jsm/objects/Lensflare.js +2 -2
  342. package/examples/jsm/objects/LightningStorm.js +4 -4
  343. package/examples/jsm/objects/MarchingCubes.js +5 -9
  344. package/examples/jsm/objects/Reflector.js +8 -4
  345. package/examples/jsm/objects/ReflectorForSSRPass.js +2 -2
  346. package/examples/jsm/objects/Refractor.js +8 -4
  347. package/examples/jsm/objects/ShadowMesh.js +2 -2
  348. package/examples/jsm/objects/Sky.js +2 -2
  349. package/examples/jsm/objects/Water.js +2 -2
  350. package/examples/jsm/objects/Water2.js +2 -2
  351. package/examples/jsm/offscreen/jank.js +5 -5
  352. package/examples/jsm/offscreen/offscreen.js +1 -1
  353. package/examples/jsm/offscreen/scene.js +11 -11
  354. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +5 -7
  355. package/examples/jsm/postprocessing/AfterimagePass.js +0 -10
  356. package/examples/jsm/postprocessing/BloomPass.js +48 -20
  357. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  358. package/examples/jsm/postprocessing/EffectComposer.js +1 -9
  359. package/examples/jsm/postprocessing/LUTPass.js +2 -2
  360. package/examples/jsm/postprocessing/OutlinePass.js +7 -11
  361. package/examples/jsm/postprocessing/SAOPass.js +2 -9
  362. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -4
  363. package/examples/jsm/postprocessing/SSRPass.js +3 -9
  364. package/examples/jsm/postprocessing/TAARenderPass.js +4 -4
  365. package/examples/jsm/postprocessing/UnrealBloomPass.js +3 -8
  366. package/examples/jsm/renderers/CSS2DRenderer.js +21 -24
  367. package/examples/jsm/renderers/CSS3DRenderer.js +7 -8
  368. package/examples/jsm/renderers/Projector.js +101 -128
  369. package/examples/jsm/renderers/SVGRenderer.js +4 -4
  370. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +1 -1
  371. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +127 -23
  372. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +14 -3
  373. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +5 -5
  374. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +4 -4
  375. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +16 -10
  376. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +8 -7
  377. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +43 -0
  378. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +14 -7
  379. package/examples/jsm/renderers/webgpu/WebGPUInfo.js +1 -1
  380. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -6
  381. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +20 -20
  382. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +2 -1
  383. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +66 -0
  384. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -24
  385. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +14 -14
  386. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +2 -2
  387. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +5 -8
  388. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +23 -20
  389. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +37 -18
  390. package/examples/jsm/renderers/webgpu/WebGPUUniform.js +14 -14
  391. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +5 -32
  392. package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +2 -2
  393. package/examples/jsm/renderers/webgpu/constants.js +3 -2
  394. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +276 -284
  395. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +20 -2
  396. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +24 -14
  397. package/examples/jsm/shaders/BlendShader.js +2 -1
  398. package/examples/jsm/shaders/CopyShader.js +4 -3
  399. package/examples/jsm/shaders/FXAAShader.js +219 -1051
  400. package/examples/jsm/shaders/FreiChenShader.js +1 -1
  401. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -1
  402. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +1 -1
  403. package/examples/jsm/shaders/SSRShader.js +3 -3
  404. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  405. package/examples/jsm/utils/BufferGeometryUtils.js +292 -22
  406. package/examples/jsm/utils/GPUStatsPanel.js +1 -1
  407. package/examples/jsm/utils/LDrawUtils.js +6 -6
  408. package/examples/jsm/utils/SceneUtils.js +76 -2
  409. package/examples/jsm/utils/SkeletonUtils.js +1 -1
  410. package/examples/jsm/utils/UVsDebug.js +23 -32
  411. package/examples/jsm/webxr/ARButton.js +14 -4
  412. package/examples/jsm/webxr/OculusHandPointerModel.js +3 -3
  413. package/examples/jsm/webxr/Text2D.js +1 -1
  414. package/examples/jsm/webxr/VRButton.js +15 -1
  415. package/examples/jsm/webxr/XRHandMeshModel.js +3 -7
  416. package/examples/jsm/webxr/XRHandModelFactory.js +3 -0
  417. package/package.json +37 -19
  418. package/src/Three.Legacy.js +41 -1912
  419. package/src/Three.js +6 -3
  420. package/src/animation/AnimationClip.js +1 -1
  421. package/src/animation/AnimationMixer.js +5 -3
  422. package/src/animation/AnimationObjectGroup.js +2 -2
  423. package/src/animation/PropertyBinding.js +8 -18
  424. package/src/audio/PositionalAudio.js +8 -0
  425. package/src/cameras/ArrayCamera.js +2 -3
  426. package/src/cameras/Camera.js +2 -2
  427. package/src/cameras/CubeCamera.js +6 -1
  428. package/src/cameras/OrthographicCamera.js +2 -2
  429. package/src/cameras/PerspectiveCamera.js +2 -2
  430. package/src/constants.js +7 -2
  431. package/src/core/BufferAttribute.js +7 -12
  432. package/src/core/BufferGeometry.js +4 -4
  433. package/src/core/GLBufferAttribute.js +2 -2
  434. package/src/core/InstancedBufferAttribute.js +2 -2
  435. package/src/core/InstancedBufferGeometry.js +2 -2
  436. package/src/core/InstancedInterleavedBuffer.js +2 -2
  437. package/src/core/InterleavedBuffer.js +2 -2
  438. package/src/core/InterleavedBufferAttribute.js +5 -11
  439. package/src/core/Object3D.js +6 -3
  440. package/src/core/Raycaster.js +2 -2
  441. package/src/extras/DataUtils.js +127 -40
  442. package/src/extras/Earcut.js +2 -2
  443. package/src/extras/PMREMGenerator.js +132 -104
  444. package/src/extras/core/CurvePath.js +3 -3
  445. package/src/extras/core/ShapePath.js +5 -6
  446. package/src/extras/curves/ArcCurve.js +2 -2
  447. package/src/extras/curves/CatmullRomCurve3.js +2 -2
  448. package/src/extras/curves/CubicBezierCurve.js +2 -2
  449. package/src/extras/curves/CubicBezierCurve3.js +2 -2
  450. package/src/extras/curves/EllipseCurve.js +2 -2
  451. package/src/extras/curves/LineCurve.js +2 -2
  452. package/src/extras/curves/LineCurve3.js +2 -1
  453. package/src/extras/curves/QuadraticBezierCurve.js +2 -2
  454. package/src/extras/curves/QuadraticBezierCurve3.js +2 -2
  455. package/src/extras/curves/SplineCurve.js +2 -2
  456. package/src/geometries/CapsuleGeometry.js +33 -0
  457. package/src/geometries/ExtrudeGeometry.js +2 -0
  458. package/src/geometries/Geometries.js +1 -0
  459. package/src/geometries/TorusKnotGeometry.js +2 -2
  460. package/src/geometries/WireframeGeometry.js +3 -2
  461. package/src/helpers/BoxHelper.js +2 -2
  462. package/src/helpers/PointLightHelper.js +1 -1
  463. package/src/helpers/SkeletonHelper.js +3 -2
  464. package/src/lights/AmbientLight.js +2 -2
  465. package/src/lights/AmbientLightProbe.js +2 -2
  466. package/src/lights/DirectionalLight.js +2 -2
  467. package/src/lights/DirectionalLightShadow.js +2 -2
  468. package/src/lights/HemisphereLight.js +4 -4
  469. package/src/lights/HemisphereLightProbe.js +2 -2
  470. package/src/lights/Light.js +4 -4
  471. package/src/lights/LightProbe.js +2 -2
  472. package/src/lights/PointLight.js +4 -4
  473. package/src/lights/PointLightShadow.js +2 -2
  474. package/src/lights/RectAreaLight.js +2 -2
  475. package/src/lights/SpotLight.js +4 -4
  476. package/src/lights/SpotLightShadow.js +2 -2
  477. package/src/loaders/FileLoader.js +3 -1
  478. package/src/loaders/ImageBitmapLoader.js +2 -2
  479. package/src/loaders/ImageLoader.js +1 -1
  480. package/src/loaders/LoaderUtils.js +1 -1
  481. package/src/loaders/MaterialLoader.js +8 -3
  482. package/src/loaders/ObjectLoader.js +23 -25
  483. package/src/materials/LineBasicMaterial.js +6 -13
  484. package/src/materials/LineDashedMaterial.js +2 -15
  485. package/src/materials/Material.js +48 -14
  486. package/src/materials/Materials.js +66 -18
  487. package/src/materials/MeshBasicMaterial.js +6 -31
  488. package/src/materials/MeshDepthMaterial.js +2 -22
  489. package/src/materials/MeshDistanceMaterial.js +2 -22
  490. package/src/materials/MeshLambertMaterial.js +6 -34
  491. package/src/materials/MeshMatcapMaterial.js +6 -28
  492. package/src/materials/MeshNormalMaterial.js +2 -26
  493. package/src/materials/MeshPhongMaterial.js +6 -48
  494. package/src/materials/MeshPhysicalMaterial.js +32 -35
  495. package/src/materials/MeshStandardMaterial.js +6 -54
  496. package/src/materials/MeshToonMaterial.js +6 -38
  497. package/src/materials/PointsMaterial.js +6 -15
  498. package/src/materials/RawShaderMaterial.js +2 -2
  499. package/src/materials/ShaderMaterial.js +3 -17
  500. package/src/materials/ShadowMaterial.js +6 -8
  501. package/src/materials/SpriteMaterial.js +6 -12
  502. package/src/math/Box2.js +2 -2
  503. package/src/math/Box3.js +5 -5
  504. package/src/math/Color.js +84 -35
  505. package/src/math/ColorManagement.js +74 -0
  506. package/src/math/Euler.js +16 -14
  507. package/src/math/Interpolant.js +4 -9
  508. package/src/math/MathUtils.js +76 -7
  509. package/src/math/Matrix3.js +2 -2
  510. package/src/math/Matrix4.js +2 -3
  511. package/src/math/Plane.js +2 -2
  512. package/src/math/Quaternion.js +11 -2
  513. package/src/math/Spherical.js +1 -1
  514. package/src/math/SphericalHarmonics3.js +2 -2
  515. package/src/math/Vector2.js +2 -2
  516. package/src/math/Vector3.js +12 -3
  517. package/src/math/Vector4.js +2 -2
  518. package/src/math/interpolants/DiscreteInterpolant.js +1 -1
  519. package/src/objects/Bone.js +2 -2
  520. package/src/objects/Group.js +2 -2
  521. package/src/objects/InstancedMesh.js +4 -4
  522. package/src/objects/Line.js +76 -107
  523. package/src/objects/LineLoop.js +2 -2
  524. package/src/objects/LineSegments.js +15 -23
  525. package/src/objects/Mesh.js +82 -104
  526. package/src/objects/Points.js +32 -54
  527. package/src/objects/SkinnedMesh.js +5 -8
  528. package/src/objects/Sprite.js +4 -4
  529. package/src/renderers/WebGL3DRenderTarget.js +22 -0
  530. package/src/renderers/WebGLArrayRenderTarget.js +22 -0
  531. package/src/renderers/WebGLCubeRenderTarget.js +7 -14
  532. package/src/renderers/WebGLMultipleRenderTargets.js +8 -5
  533. package/src/renderers/WebGLRenderTarget.js +16 -18
  534. package/src/renderers/WebGLRenderer.js +108 -63
  535. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +46 -0
  536. package/src/renderers/shaders/ShaderChunk/common.glsl.js +1 -0
  537. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +12 -13
  538. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +1 -1
  539. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -19
  540. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +107 -0
  541. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  542. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -6
  543. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +25 -0
  544. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +0 -6
  545. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +23 -0
  546. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +43 -5
  547. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
  548. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +1 -1
  549. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +7 -7
  550. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +1 -9
  551. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +16 -31
  552. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +1 -1
  553. package/src/renderers/shaders/ShaderChunk.js +6 -0
  554. package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
  555. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  556. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +3 -2
  557. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
  558. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
  559. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +6 -0
  560. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
  561. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +10 -0
  562. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  563. package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  564. package/src/renderers/shaders/ShaderLib.js +6 -0
  565. package/src/renderers/shaders/UniformsLib.js +2 -2
  566. package/src/renderers/webgl/WebGLAttributes.js +6 -6
  567. package/src/renderers/webgl/WebGLBackground.js +3 -0
  568. package/src/renderers/webgl/WebGLBindingStates.js +57 -29
  569. package/src/renderers/webgl/WebGLLights.js +0 -1
  570. package/src/renderers/webgl/WebGLMaterials.js +72 -187
  571. package/src/renderers/webgl/WebGLMorphtargets.js +47 -23
  572. package/src/renderers/webgl/WebGLProgram.js +57 -19
  573. package/src/renderers/webgl/WebGLPrograms.js +75 -86
  574. package/src/renderers/webgl/WebGLShaderCache.js +4 -3
  575. package/src/renderers/webgl/WebGLShadowMap.js +6 -8
  576. package/src/renderers/webgl/WebGLTextures.js +567 -380
  577. package/src/renderers/webgl/WebGLUniforms.js +79 -80
  578. package/src/renderers/webgl/WebGLUtils.js +12 -1
  579. package/src/renderers/webxr/WebXRManager.js +60 -45
  580. package/src/scenes/Fog.js +2 -2
  581. package/src/scenes/FogExp2.js +2 -2
  582. package/src/scenes/Scene.js +2 -2
  583. package/src/textures/CanvasTexture.js +2 -2
  584. package/src/textures/CompressedTexture.js +2 -2
  585. package/src/textures/CubeTexture.js +2 -2
  586. package/src/textures/{DataTexture3D.js → Data3DTexture.js} +4 -4
  587. package/src/textures/{DataTexture2DArray.js → DataArrayTexture.js} +4 -4
  588. package/src/textures/DataTexture.js +2 -5
  589. package/src/textures/DepthTexture.js +5 -5
  590. package/src/textures/FramebufferTexture.js +2 -2
  591. package/src/textures/Source.js +123 -0
  592. package/src/textures/Texture.js +27 -97
  593. package/src/textures/VideoTexture.js +2 -2
  594. package/examples/js/csm/Frustum.js +0 -133
  595. package/examples/js/deprecated/Geometry.js +0 -1656
  596. package/examples/js/loaders/VRMLoader.js +0 -72
  597. package/examples/js/objects/ReflectorRTT.js +0 -16
  598. package/examples/js/postprocessing/SSRrPass.js +0 -494
  599. package/examples/js/shaders/SSRrShader.js +0 -336
  600. package/examples/jsm/deprecated/Geometry.js +0 -1869
  601. package/examples/jsm/libs/opentype.module.min.js +0 -119
  602. package/examples/jsm/loaders/NodeMaterialLoader.js +0 -263
  603. package/examples/jsm/loaders/VRMLoader.js +0 -78
  604. package/examples/jsm/nodes/accessors/ColorsNode.js +0 -56
  605. package/examples/jsm/nodes/accessors/LightNode.js +0 -60
  606. package/examples/jsm/nodes/accessors/ResolutionNode.js +0 -64
  607. package/examples/jsm/nodes/accessors/ScreenUVNode.js +0 -64
  608. package/examples/jsm/nodes/core/NodeLib.js +0 -64
  609. package/examples/jsm/nodes/core/StructNode.js +0 -106
  610. package/examples/jsm/nodes/effects/BlurNode.js +0 -171
  611. package/examples/jsm/nodes/effects/ColorAdjustmentNode.js +0 -140
  612. package/examples/jsm/nodes/effects/LuminanceNode.js +0 -75
  613. package/examples/jsm/nodes/inputs/BoolNode.js +0 -51
  614. package/examples/jsm/nodes/inputs/ColorNode.js +0 -58
  615. package/examples/jsm/nodes/inputs/CubeTextureNode.js +0 -108
  616. package/examples/jsm/nodes/inputs/FloatNode.js +0 -51
  617. package/examples/jsm/nodes/inputs/IntNode.js +0 -51
  618. package/examples/jsm/nodes/inputs/Matrix3Node.js +0 -63
  619. package/examples/jsm/nodes/inputs/Matrix4Node.js +0 -63
  620. package/examples/jsm/nodes/inputs/PropertyNode.js +0 -47
  621. package/examples/jsm/nodes/inputs/RTTNode.js +0 -157
  622. package/examples/jsm/nodes/inputs/ReflectorNode.js +0 -90
  623. package/examples/jsm/nodes/inputs/ScreenNode.js +0 -28
  624. package/examples/jsm/nodes/inputs/TextureNode.js +0 -116
  625. package/examples/jsm/nodes/inputs/Vector2Node.js +0 -57
  626. package/examples/jsm/nodes/inputs/Vector3Node.js +0 -58
  627. package/examples/jsm/nodes/inputs/Vector4Node.js +0 -59
  628. package/examples/jsm/nodes/materials/BasicNodeMaterial.js +0 -26
  629. package/examples/jsm/nodes/materials/PhongNodeMaterial.js +0 -36
  630. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +0 -40
  631. package/examples/jsm/nodes/materials/nodes/BasicNode.js +0 -154
  632. package/examples/jsm/nodes/materials/nodes/MeshStandardNode.js +0 -116
  633. package/examples/jsm/nodes/materials/nodes/PhongNode.js +0 -409
  634. package/examples/jsm/nodes/materials/nodes/RawNode.js +0 -62
  635. package/examples/jsm/nodes/materials/nodes/SpriteNode.js +0 -236
  636. package/examples/jsm/nodes/materials/nodes/StandardNode.js +0 -609
  637. package/examples/jsm/nodes/misc/BumpMapNode.js +0 -163
  638. package/examples/jsm/nodes/misc/NormalMapNode.js +0 -138
  639. package/examples/jsm/nodes/misc/TextureCubeNode.js +0 -86
  640. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +0 -280
  641. package/examples/jsm/nodes/postprocessing/NodePass.js +0 -93
  642. package/examples/jsm/nodes/postprocessing/NodePostProcessing.js +0 -148
  643. package/examples/jsm/nodes/procedural/Fractal3DNode.js +0 -104
  644. package/examples/jsm/nodes/procedural/Noise2DNode.js +0 -149
  645. package/examples/jsm/nodes/procedural/Noise3DNode.js +0 -141
  646. package/examples/jsm/nodes/utils/BypassNode.js +0 -85
  647. package/examples/jsm/nodes/utils/ColorSpaceNode.js +0 -145
  648. package/examples/jsm/nodes/utils/MaxMIPLevelNode.js +0 -56
  649. package/examples/jsm/nodes/utils/RemapNode.js +0 -155
  650. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -101
  651. package/examples/jsm/nodes/utils/SubSlotNode.js +0 -77
  652. package/examples/jsm/nodes/utils/SwitchNode.js +0 -103
  653. package/examples/jsm/nodes/utils/UVTransformNode.js +0 -66
  654. package/examples/jsm/nodes/utils/VelocityNode.js +0 -170
  655. package/examples/jsm/objects/ReflectorRTT.js +0 -15
  656. package/examples/jsm/postprocessing/SSRrPass.js +0 -579
  657. package/examples/jsm/renderers/nodes/Nodes.js +0 -166
  658. package/examples/jsm/renderers/nodes/ShaderNode.js +0 -373
  659. package/examples/jsm/renderers/nodes/accessors/CameraNode.js +0 -68
  660. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +0 -63
  661. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +0 -67
  662. package/examples/jsm/renderers/nodes/accessors/ReferenceNode.js +0 -91
  663. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +0 -107
  664. package/examples/jsm/renderers/nodes/accessors/UVNode.js +0 -25
  665. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +0 -23
  666. package/examples/jsm/renderers/nodes/core/AttributeNode.js +0 -54
  667. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +0 -32
  668. package/examples/jsm/renderers/nodes/core/FunctionCallNode.js +0 -67
  669. package/examples/jsm/renderers/nodes/core/FunctionNode.js +0 -87
  670. package/examples/jsm/renderers/nodes/core/InputNode.js +0 -66
  671. package/examples/jsm/renderers/nodes/core/Node.js +0 -104
  672. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +0 -634
  673. package/examples/jsm/renderers/nodes/core/NodeFrame.js +0 -59
  674. package/examples/jsm/renderers/nodes/core/NodeUniform.js +0 -28
  675. package/examples/jsm/renderers/nodes/core/TempNode.js +0 -43
  676. package/examples/jsm/renderers/nodes/core/VarNode.js +0 -51
  677. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +0 -87
  678. package/examples/jsm/renderers/nodes/functions/BSDFs.js +0 -122
  679. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +0 -27
  680. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +0 -25
  681. package/examples/jsm/renderers/nodes/inputs/ColorNode.js +0 -18
  682. package/examples/jsm/renderers/nodes/inputs/FloatNode.js +0 -17
  683. package/examples/jsm/renderers/nodes/inputs/IntNode.js +0 -17
  684. package/examples/jsm/renderers/nodes/inputs/Matrix3Node.js +0 -18
  685. package/examples/jsm/renderers/nodes/inputs/Matrix4Node.js +0 -18
  686. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +0 -74
  687. package/examples/jsm/renderers/nodes/inputs/Vector2Node.js +0 -18
  688. package/examples/jsm/renderers/nodes/inputs/Vector3Node.js +0 -18
  689. package/examples/jsm/renderers/nodes/inputs/Vector4Node.js +0 -18
  690. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +0 -59
  691. package/examples/jsm/renderers/nodes/lights/LightNode.js +0 -79
  692. package/examples/jsm/renderers/nodes/lights/LightsNode.js +0 -44
  693. package/examples/jsm/renderers/nodes/materials/Materials.js +0 -11
  694. package/examples/jsm/renderers/nodes/materials/MeshStandardNodeMaterial.js +0 -63
  695. package/examples/jsm/renderers/nodes/math/CondNode.js +0 -60
  696. package/examples/jsm/renderers/nodes/math/MathNode.js +0 -242
  697. package/examples/jsm/renderers/nodes/math/OperatorNode.js +0 -174
  698. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +0 -36
  699. package/examples/jsm/renderers/nodes/utils/JoinNode.js +0 -42
  700. package/examples/jsm/renderers/nodes/utils/TimerNode.js +0 -47
  701. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +0 -20
  702. package/examples/jsm/shaders/SSRrShader.js +0 -307
  703. package/src/renderers/WebGLMultisampleRenderTarget.js +0 -33
@@ -8,6 +8,7 @@ import WebGPURenderPipelines from './WebGPURenderPipelines.js';
8
8
  import WebGPUComputePipelines from './WebGPUComputePipelines.js';
9
9
  import WebGPUBindings from './WebGPUBindings.js';
10
10
  import WebGPURenderLists from './WebGPURenderLists.js';
11
+ import WebGPURenderStates from './WebGPURenderStates.js';
11
12
  import WebGPUTextures from './WebGPUTextures.js';
12
13
  import WebGPUBackground from './WebGPUBackground.js';
13
14
  import WebGPUNodes from './nodes/WebGPUNodes.js';
@@ -65,6 +66,8 @@ class WebGPURenderer {
65
66
 
66
67
  constructor( parameters = {} ) {
67
68
 
69
+ this.isWebGPURenderer = true;
70
+
68
71
  // public
69
72
 
70
73
  this.domElement = ( parameters.canvas !== undefined ) ? parameters.canvas : this._createCanvasElement();
@@ -105,11 +108,14 @@ class WebGPURenderer {
105
108
  this._renderPipelines = null;
106
109
  this._computePipelines = null;
107
110
  this._renderLists = null;
111
+ this._renderStates = null;
108
112
  this._textures = null;
109
113
  this._background = null;
110
114
 
111
115
  this._renderPassDescriptor = null;
112
116
 
117
+ this._currentRenderState = null;
118
+
113
119
  this._currentRenderList = null;
114
120
  this._opaqueSort = null;
115
121
  this._transparentSort = null;
@@ -167,7 +173,8 @@ class WebGPURenderer {
167
173
 
168
174
  context.configure( {
169
175
  device: device,
170
- format: GPUTextureFormat.BGRA8Unorm // this is the only valid context format right now (r121)
176
+ format: GPUTextureFormat.BGRA8Unorm, // this is the only valid context format right now (r121)
177
+ compositingAlphaMode: 'premultiplied'
171
178
  } );
172
179
 
173
180
  this._adapter = adapter;
@@ -180,11 +187,12 @@ class WebGPURenderer {
180
187
  this._geometries = new WebGPUGeometries( this._attributes, this._info );
181
188
  this._textures = new WebGPUTextures( device, this._properties, this._info );
182
189
  this._objects = new WebGPUObjects( this._geometries, this._info );
183
- this._nodes = new WebGPUNodes( this );
184
- this._computePipelines = new WebGPUComputePipelines( device );
190
+ this._nodes = new WebGPUNodes( this, this._properties );
191
+ this._computePipelines = new WebGPUComputePipelines( device, this._nodes );
185
192
  this._renderPipelines = new WebGPURenderPipelines( this, device, parameters.sampleCount, this._nodes );
186
193
  this._bindings = this._renderPipelines.bindings = new WebGPUBindings( device, this._info, this._properties, this._textures, this._renderPipelines, this._computePipelines, this._attributes, this._nodes );
187
194
  this._renderLists = new WebGPURenderLists();
195
+ this._renderStates = new WebGPURenderStates();
188
196
  this._background = new WebGPUBackground( this );
189
197
 
190
198
  //
@@ -193,7 +201,7 @@ class WebGPURenderer {
193
201
  colorAttachments: [ {
194
202
  view: null
195
203
  } ],
196
- depthStencilAttachment: {
204
+ depthStencilAttachment: {
197
205
  view: null,
198
206
  depthStoreOp: GPUStoreOp.Store,
199
207
  stencilStoreOp: GPUStoreOp.Store
@@ -225,6 +233,9 @@ class WebGPURenderer {
225
233
  this._currentRenderList = this._renderLists.get( scene, camera );
226
234
  this._currentRenderList.init();
227
235
 
236
+ this._currentRenderState = this._renderStates.get( scene );
237
+ this._currentRenderState.init();
238
+
228
239
  this._projectObject( scene, camera, 0 );
229
240
 
230
241
  this._currentRenderList.finish();
@@ -303,17 +314,21 @@ class WebGPURenderer {
303
314
 
304
315
  }
305
316
 
317
+ // lights node
318
+
319
+ const lightsNode = this._currentRenderState.getLightsNode();
320
+
306
321
  // process render lists
307
322
 
308
323
  const opaqueObjects = this._currentRenderList.opaque;
309
324
  const transparentObjects = this._currentRenderList.transparent;
310
325
 
311
- if ( opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, passEncoder );
312
- if ( transparentObjects.length > 0 ) this._renderObjects( transparentObjects, camera, passEncoder );
326
+ if ( opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, scene, lightsNode, passEncoder );
327
+ if ( transparentObjects.length > 0 ) this._renderObjects( transparentObjects, camera, scene, lightsNode, passEncoder );
313
328
 
314
329
  // finish render pass
315
330
 
316
- passEncoder.endPass();
331
+ passEncoder.end();
317
332
  device.queue.submit( [ cmdEncoder.finish() ] );
318
333
 
319
334
  }
@@ -581,6 +596,7 @@ class WebGPURenderer {
581
596
  this._bindings.dispose();
582
597
  this._info.dispose();
583
598
  this._renderLists.dispose();
599
+ this._renderStates.dispose();
584
600
  this._textures.dispose();
585
601
 
586
602
  }
@@ -597,30 +613,34 @@ class WebGPURenderer {
597
613
 
598
614
  }
599
615
 
600
- compute( computeParams ) {
616
+ compute( ...computeNodes ) {
601
617
 
602
618
  const device = this._device;
603
619
  const cmdEncoder = device.createCommandEncoder( {} );
604
620
  const passEncoder = cmdEncoder.beginComputePass();
605
621
 
606
- for ( const param of computeParams ) {
622
+ for ( const computeNode of computeNodes ) {
607
623
 
608
624
  // pipeline
609
625
 
610
- const pipeline = this._computePipelines.get( param );
626
+ const pipeline = this._computePipelines.get( computeNode );
611
627
  passEncoder.setPipeline( pipeline );
612
628
 
629
+ // node
630
+
631
+ //this._nodes.update( computeNode );
632
+
613
633
  // bind group
614
634
 
615
- const bindGroup = this._bindings.getForCompute( param ).group;
616
- this._bindings.update( param );
635
+ const bindGroup = this._bindings.get( computeNode ).group;
636
+ this._bindings.update( computeNode );
617
637
  passEncoder.setBindGroup( 0, bindGroup );
618
638
 
619
- passEncoder.dispatch( param.num );
639
+ passEncoder.dispatchWorkgroups( computeNode.dispatchCount );
620
640
 
621
641
  }
622
642
 
623
- passEncoder.endPass();
643
+ passEncoder.end();
624
644
  device.queue.submit( [ cmdEncoder.finish() ] );
625
645
 
626
646
  }
@@ -634,6 +654,7 @@ class WebGPURenderer {
634
654
  _projectObject( object, camera, groupOrder ) {
635
655
 
636
656
  const currentRenderList = this._currentRenderList;
657
+ const currentRenderState = this._currentRenderState;
637
658
 
638
659
  if ( object.visible === false ) return;
639
660
 
@@ -651,7 +672,7 @@ class WebGPURenderer {
651
672
 
652
673
  } else if ( object.isLight ) {
653
674
 
654
- //currentRenderState.pushLight( object );
675
+ currentRenderState.pushLight( object );
655
676
 
656
677
  if ( object.castShadow ) {
657
678
 
@@ -736,7 +757,7 @@ class WebGPURenderer {
736
757
 
737
758
  }
738
759
 
739
- _renderObjects( renderList, camera, passEncoder ) {
760
+ _renderObjects( renderList, camera, scene, lightsNode, passEncoder ) {
740
761
 
741
762
  // process renderable objects
742
763
 
@@ -754,6 +775,13 @@ class WebGPURenderer {
754
775
 
755
776
  this._objects.update( object );
756
777
 
778
+ // send scene properties to object
779
+
780
+ const objectProperties = this._properties.get( object );
781
+
782
+ objectProperties.lightsNode = lightsNode;
783
+ objectProperties.scene = scene;
784
+
757
785
  if ( camera.isArrayCamera ) {
758
786
 
759
787
  const cameras = camera.cameras;
@@ -825,7 +853,8 @@ class WebGPURenderer {
825
853
 
826
854
  const drawRange = geometry.drawRange;
827
855
  const firstVertex = drawRange.start;
828
- const instanceCount = ( geometry.isInstancedBufferGeometry ) ? geometry.instanceCount : 1;
856
+
857
+ const instanceCount = geometry.isInstancedBufferGeometry ? geometry.instanceCount : ( object.isInstancedMesh ? object.count : 1 );
829
858
 
830
859
  if ( hasIndex === true ) {
831
860
 
@@ -935,11 +964,7 @@ class WebGPURenderer {
935
964
  device: device,
936
965
  format: GPUTextureFormat.BGRA8Unorm,
937
966
  usage: GPUTextureUsage.RENDER_ATTACHMENT,
938
- size: {
939
- width: Math.floor( this._width * this._pixelRatio ),
940
- height: Math.floor( this._height * this._pixelRatio ),
941
- depthOrArrayLayers: 1
942
- },
967
+ compositingAlphaMode: 'premultiplied'
943
968
  } );
944
969
 
945
970
  }
@@ -956,6 +981,4 @@ class WebGPURenderer {
956
981
 
957
982
  }
958
983
 
959
- WebGPURenderer.prototype.isWebGPURenderer = true;
960
-
961
984
  export default WebGPURenderer;
@@ -7,6 +7,8 @@ class WebGPUSampledTexture extends WebGPUBinding {
7
7
 
8
8
  super( name );
9
9
 
10
+ this.isSampledTexture = true;
11
+
10
12
  this.texture = texture;
11
13
 
12
14
  this.dimension = GPUTextureViewDimension.TwoD;
@@ -26,13 +28,13 @@ class WebGPUSampledTexture extends WebGPUBinding {
26
28
 
27
29
  }
28
30
 
29
- WebGPUSampledTexture.prototype.isSampledTexture = true;
30
-
31
31
  class WebGPUSampledArrayTexture extends WebGPUSampledTexture {
32
32
 
33
- constructor( name ) {
33
+ constructor( name, texture ) {
34
34
 
35
- super( name );
35
+ super( name, texture );
36
+
37
+ this.isSampledArrayTexture = true;
36
38
 
37
39
  this.dimension = GPUTextureViewDimension.TwoDArray;
38
40
 
@@ -40,13 +42,13 @@ class WebGPUSampledArrayTexture extends WebGPUSampledTexture {
40
42
 
41
43
  }
42
44
 
43
- WebGPUSampledArrayTexture.prototype.isSampledArrayTexture = true;
44
-
45
45
  class WebGPUSampled3DTexture extends WebGPUSampledTexture {
46
46
 
47
- constructor( name ) {
47
+ constructor( name, texture ) {
48
+
49
+ super( name, texture );
48
50
 
49
- super( name );
51
+ this.isSampled3DTexture = true;
50
52
 
51
53
  this.dimension = GPUTextureViewDimension.ThreeD;
52
54
 
@@ -54,13 +56,13 @@ class WebGPUSampled3DTexture extends WebGPUSampledTexture {
54
56
 
55
57
  }
56
58
 
57
- WebGPUSampled3DTexture.prototype.isSampled3DTexture = true;
58
-
59
59
  class WebGPUSampledCubeTexture extends WebGPUSampledTexture {
60
60
 
61
- constructor( name ) {
61
+ constructor( name, texture ) {
62
62
 
63
- super( name );
63
+ super( name, texture );
64
+
65
+ this.isSampledCubeTexture = true;
64
66
 
65
67
  this.dimension = GPUTextureViewDimension.Cube;
66
68
 
@@ -68,6 +70,4 @@ class WebGPUSampledCubeTexture extends WebGPUSampledTexture {
68
70
 
69
71
  }
70
72
 
71
- WebGPUSampledCubeTexture.prototype.isSampledCubeTexture = true;
72
-
73
73
  export { WebGPUSampledTexture, WebGPUSampledArrayTexture, WebGPUSampled3DTexture, WebGPUSampledCubeTexture };
@@ -7,6 +7,8 @@ class WebGPUSampler extends WebGPUBinding {
7
7
 
8
8
  super( name );
9
9
 
10
+ this.isSampler = true;
11
+
10
12
  this.texture = texture;
11
13
 
12
14
  this.type = GPUBindingType.Sampler;
@@ -24,6 +26,4 @@ class WebGPUSampler extends WebGPUBinding {
24
26
 
25
27
  }
26
28
 
27
- WebGPUSampler.prototype.isSampler = true;
28
-
29
29
  export default WebGPUSampler;
@@ -1,23 +1,20 @@
1
- import WebGPUBinding from './WebGPUBinding.js';
1
+ import WebGPUBuffer from './WebGPUBuffer.js';
2
2
  import { GPUBindingType } from './constants.js';
3
3
 
4
- class WebGPUStorageBuffer extends WebGPUBinding {
4
+ class WebGPUStorageBuffer extends WebGPUBuffer {
5
5
 
6
6
  constructor( name, attribute ) {
7
7
 
8
- super( name );
8
+ super( name, GPUBindingType.StorageBuffer, attribute.array );
9
9
 
10
- this.type = GPUBindingType.StorageBuffer;
10
+ this.isStorageBuffer = true;
11
11
 
12
- this.usage = GPUBufferUsage.VERTEX | GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST;
12
+ this.usage |= GPUBufferUsage.VERTEX | GPUBufferUsage.STORAGE;
13
13
 
14
14
  this.attribute = attribute;
15
- this.bufferGPU = null; // set by the renderer
16
15
 
17
16
  }
18
17
 
19
18
  }
20
19
 
21
- WebGPUStorageBuffer.prototype.isStorageBuffer = true;
22
-
23
20
  export default WebGPUStorageBuffer;
@@ -18,7 +18,7 @@
18
18
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
19
  // SOFTWARE.
20
20
 
21
- import { GPUIndexFormat, GPUFilterMode, GPUPrimitiveTopology } from './constants.js';
21
+ import { GPUIndexFormat, GPUFilterMode, GPUPrimitiveTopology, GPULoadOp, GPUStoreOp } from './constants.js';
22
22
 
23
23
  // ported from https://github.com/toji/web-texture-tool/blob/master/src/webgpu-mipmap-generator.js
24
24
 
@@ -30,16 +30,14 @@ class WebGPUTextureUtils {
30
30
 
31
31
  const mipmapVertexSource = `
32
32
  struct VarysStruct {
33
-
34
- [[ builtin( position ) ]] Position: vec4<f32>;
35
- [[ location( 0 ) ]] vTex : vec2<f32>;
36
-
33
+ @builtin( position ) Position: vec4<f32>,
34
+ @location( 0 ) vTex : vec2<f32>
37
35
  };
38
36
 
39
- [[ stage( vertex ) ]]
40
- fn main( [[ builtin( vertex_index ) ]] vertexIndex : u32 ) -> VarysStruct {
37
+ @stage( vertex )
38
+ fn main( @builtin( vertex_index ) vertexIndex : u32 ) -> VarysStruct {
41
39
 
42
- var Varys: VarysStruct;
40
+ var Varys : VarysStruct;
43
41
 
44
42
  var pos = array< vec2<f32>, 4 >(
45
43
  vec2<f32>( -1.0, 1.0 ),
@@ -64,14 +62,14 @@ fn main( [[ builtin( vertex_index ) ]] vertexIndex : u32 ) -> VarysStruct {
64
62
  `;
65
63
 
66
64
  const mipmapFragmentSource = `
67
- [[ group( 0 ), binding( 0 ) ]]
65
+ @group( 0 ) @binding( 0 )
68
66
  var imgSampler : sampler;
69
67
 
70
- [[ group( 0 ), binding( 1 ) ]]
68
+ @group( 0 ) @binding( 1 )
71
69
  var img : texture_2d<f32>;
72
70
 
73
- [[ stage( fragment ) ]]
74
- fn main( [[ location( 0 ) ]] vTex : vec2<f32> ) -> [[ location( 0 ) ]] vec4<f32> {
71
+ @stage( fragment )
72
+ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
75
73
 
76
74
  return textureSample( img, imgSampler, vTex );
77
75
 
@@ -102,17 +100,18 @@ fn main( [[ location( 0 ) ]] vTex : vec2<f32> ) -> [[ location( 0 ) ]] vec4<f32>
102
100
  pipeline = this.device.createRenderPipeline( {
103
101
  vertex: {
104
102
  module: this.mipmapVertexShaderModule,
105
- entryPoint: 'main',
103
+ entryPoint: 'main'
106
104
  },
107
105
  fragment: {
108
106
  module: this.mipmapFragmentShaderModule,
109
107
  entryPoint: 'main',
110
- targets: [ { format } ],
108
+ targets: [ { format } ]
111
109
  },
112
110
  primitive: {
113
111
  topology: GPUPrimitiveTopology.TriangleStrip,
114
112
  stripIndexFormat: GPUIndexFormat.Uint32
115
- }
113
+ },
114
+ layout: 'auto'
116
115
  } );
117
116
 
118
117
  this.pipelines[ format ] = pipeline;
@@ -123,7 +122,7 @@ fn main( [[ location( 0 ) ]] vTex : vec2<f32> ) -> [[ location( 0 ) ]] vec4<f32>
123
122
 
124
123
  }
125
124
 
126
- generateMipmaps( textureGPU, textureGPUDescriptor ) {
125
+ generateMipmaps( textureGPU, textureGPUDescriptor, baseArrayLayer = 0 ) {
127
126
 
128
127
  const pipeline = this.getMipmapPipeline( textureGPUDescriptor.format );
129
128
 
@@ -132,20 +131,24 @@ fn main( [[ location( 0 ) ]] vTex : vec2<f32> ) -> [[ location( 0 ) ]] vec4<f32>
132
131
 
133
132
  let srcView = textureGPU.createView( {
134
133
  baseMipLevel: 0,
135
- mipLevelCount: 1
134
+ mipLevelCount: 1,
135
+ baseArrayLayer
136
136
  } );
137
137
 
138
138
  for ( let i = 1; i < textureGPUDescriptor.mipLevelCount; i ++ ) {
139
139
 
140
140
  const dstView = textureGPU.createView( {
141
141
  baseMipLevel: i,
142
- mipLevelCount: 1
142
+ mipLevelCount: 1,
143
+ baseArrayLayer
143
144
  } );
144
145
 
145
146
  const passEncoder = commandEncoder.beginRenderPass( {
146
147
  colorAttachments: [ {
147
148
  view: dstView,
148
- loadValue: [ 0, 0, 0, 0 ]
149
+ loadOp: GPULoadOp.Clear,
150
+ storeOp: GPUStoreOp.Store,
151
+ clearValue: [ 0, 0, 0, 0 ]
149
152
  } ]
150
153
  } );
151
154
 
@@ -163,7 +166,7 @@ fn main( [[ location( 0 ) ]] vTex : vec2<f32> ) -> [[ location( 0 ) ]] vec4<f32>
163
166
  passEncoder.setPipeline( pipeline );
164
167
  passEncoder.setBindGroup( 0, bindGroup );
165
168
  passEncoder.draw( 4, 1, 0, 0 );
166
- passEncoder.endPass();
169
+ passEncoder.end();
167
170
 
168
171
  srcView = dstView;
169
172
 
@@ -349,7 +349,7 @@ class WebGPUTextures {
349
349
 
350
350
  // transfer texture data
351
351
 
352
- if ( texture.isDataTexture || texture.isDataTexture2DArray || texture.isDataTexture3D ) {
352
+ if ( texture.isDataTexture || texture.isDataArrayTexture || texture.isData3DTexture ) {
353
353
 
354
354
  this._copyBufferToTexture( image, format, textureGPU );
355
355
 
@@ -361,11 +361,15 @@ class WebGPUTextures {
361
361
 
362
362
  } else if ( texture.isCubeTexture ) {
363
363
 
364
- this._copyCubeMapToTexture( image, texture, textureGPU );
364
+ if ( image.length === 6 ) {
365
+
366
+ this._copyCubeMapToTexture( image, format, texture, textureGPU, textureGPUDescriptor, needsMipmaps );
367
+
368
+ }
365
369
 
366
370
  } else {
367
371
 
368
- if ( image !== undefined ) {
372
+ if ( image !== null ) {
369
373
 
370
374
  // assume HTMLImageElement, HTMLCanvasElement or ImageBitmap
371
375
 
@@ -387,7 +391,7 @@ class WebGPUTextures {
387
391
 
388
392
  }
389
393
 
390
- _copyBufferToTexture( image, format, textureGPU ) {
394
+ _copyBufferToTexture( image, format, textureGPU, origin = { x: 0, y: 0, z: 0 } ) {
391
395
 
392
396
  // @TODO: Consider to use GPUCommandEncoder.copyBufferToTexture()
393
397
  // @TODO: Consider to support valid buffer layouts with other formats like RGB
@@ -400,7 +404,8 @@ class WebGPUTextures {
400
404
  this.device.queue.writeTexture(
401
405
  {
402
406
  texture: textureGPU,
403
- mipLevel: 0
407
+ mipLevel: 0,
408
+ origin
404
409
  },
405
410
  data,
406
411
  {
@@ -415,17 +420,29 @@ class WebGPUTextures {
415
420
 
416
421
  }
417
422
 
418
- _copyCubeMapToTexture( images, texture, textureGPU ) {
423
+ _copyCubeMapToTexture( images, format, texture, textureGPU, textureGPUDescriptor, needsMipmaps ) {
419
424
 
420
- for ( let i = 0; i < images.length; i ++ ) {
425
+ for ( let i = 0; i < 6; i ++ ) {
421
426
 
422
427
  const image = images[ i ];
423
428
 
424
- this._getImageBitmap( image, texture ).then( imageBitmap => {
429
+ if ( image.isDataTexture ) {
425
430
 
426
- this._copyExternalImageToTexture( imageBitmap, textureGPU, { x: 0, y: 0, z: i } );
431
+ this._copyBufferToTexture( image.image, format, textureGPU, { z : i } );
427
432
 
428
- } );
433
+ if ( needsMipmaps === true ) this._generateMipmaps( textureGPU, textureGPUDescriptor, i );
434
+
435
+ } else {
436
+
437
+ this._getImageBitmap( image, texture ).then( imageBitmap => {
438
+
439
+ this._copyExternalImageToTexture( imageBitmap, textureGPU, { z : i } );
440
+
441
+ if ( needsMipmaps === true ) this._generateMipmaps( textureGPU, textureGPUDescriptor, i );
442
+
443
+ } );
444
+
445
+ }
429
446
 
430
447
  }
431
448
 
@@ -439,7 +456,7 @@ class WebGPUTextures {
439
456
  }, {
440
457
  texture: textureGPU,
441
458
  mipLevel: 0,
442
- origin: origin
459
+ origin
443
460
  }, {
444
461
  width: image.width,
445
462
  height: image.height,
@@ -477,14 +494,14 @@ class WebGPUTextures {
477
494
  {
478
495
  width: Math.ceil( width / blockData.width ) * blockData.width,
479
496
  height: Math.ceil( height / blockData.width ) * blockData.width,
480
- depthOrArrayLayers: 1,
497
+ depthOrArrayLayers: 1
481
498
  } );
482
499
 
483
500
  }
484
501
 
485
502
  }
486
503
 
487
- _generateMipmaps( textureGPU, textureGPUDescriptor ) {
504
+ _generateMipmaps( textureGPU, textureGPUDescriptor, baseArrayLayer ) {
488
505
 
489
506
  if ( this.utils === null ) {
490
507
 
@@ -492,7 +509,7 @@ class WebGPUTextures {
492
509
 
493
510
  }
494
511
 
495
- this.utils.generateMipmaps( textureGPU, textureGPUDescriptor );
512
+ this.utils.generateMipmaps( textureGPU, textureGPUDescriptor, baseArrayLayer );
496
513
 
497
514
  }
498
515
 
@@ -528,7 +545,7 @@ class WebGPUTextures {
528
545
 
529
546
  let dimension;
530
547
 
531
- if ( texture.isDataTexture3D ) {
548
+ if ( texture.isData3DTexture ) {
532
549
 
533
550
  dimension = GPUTextureDimension.ThreeD;
534
551
 
@@ -697,11 +714,13 @@ class WebGPUTextures {
697
714
 
698
715
  if ( texture.isCubeTexture ) {
699
716
 
700
- width = ( image.length > 0 ) ? image[ 0 ].width : 1;
701
- height = ( image.length > 0 ) ? image[ 0 ].height : 1;
717
+ const faceImage = image.length > 0 ? image[ 0 ].image || image[ 0 ] : null;
718
+
719
+ width = faceImage?.width || 1;
720
+ height = faceImage?.height || 1;
702
721
  depth = 6; // one image for each side of the cube map
703
722
 
704
- } else if ( image !== undefined ) {
723
+ } else if ( image !== null ) {
705
724
 
706
725
  width = image.width;
707
726
  height = image.height;
@@ -34,6 +34,8 @@ class FloatUniform extends WebGPUUniform {
34
34
 
35
35
  super( name, value );
36
36
 
37
+ this.isFloatUniform = true;
38
+
37
39
  this.boundary = 4;
38
40
  this.itemSize = 1;
39
41
 
@@ -41,14 +43,14 @@ class FloatUniform extends WebGPUUniform {
41
43
 
42
44
  }
43
45
 
44
- FloatUniform.prototype.isFloatUniform = true;
45
-
46
46
  class Vector2Uniform extends WebGPUUniform {
47
47
 
48
48
  constructor( name, value = new Vector2() ) {
49
49
 
50
50
  super( name, value );
51
51
 
52
+ this.isVector2Uniform = true;
53
+
52
54
  this.boundary = 8;
53
55
  this.itemSize = 2;
54
56
 
@@ -56,14 +58,14 @@ class Vector2Uniform extends WebGPUUniform {
56
58
 
57
59
  }
58
60
 
59
- Vector2Uniform.prototype.isVector2Uniform = true;
60
-
61
61
  class Vector3Uniform extends WebGPUUniform {
62
62
 
63
63
  constructor( name, value = new Vector3() ) {
64
64
 
65
65
  super( name, value );
66
66
 
67
+ this.isVector3Uniform = true;
68
+
67
69
  this.boundary = 16;
68
70
  this.itemSize = 3;
69
71
 
@@ -71,14 +73,14 @@ class Vector3Uniform extends WebGPUUniform {
71
73
 
72
74
  }
73
75
 
74
- Vector3Uniform.prototype.isVector3Uniform = true;
75
-
76
76
  class Vector4Uniform extends WebGPUUniform {
77
77
 
78
78
  constructor( name, value = new Vector4() ) {
79
79
 
80
80
  super( name, value );
81
81
 
82
+ this.isVector4Uniform = true;
83
+
82
84
  this.boundary = 16;
83
85
  this.itemSize = 4;
84
86
 
@@ -86,14 +88,14 @@ class Vector4Uniform extends WebGPUUniform {
86
88
 
87
89
  }
88
90
 
89
- Vector4Uniform.prototype.isVector4Uniform = true;
90
-
91
91
  class ColorUniform extends WebGPUUniform {
92
92
 
93
93
  constructor( name, value = new Color() ) {
94
94
 
95
95
  super( name, value );
96
96
 
97
+ this.isColorUniform = true;
98
+
97
99
  this.boundary = 16;
98
100
  this.itemSize = 3;
99
101
 
@@ -101,14 +103,14 @@ class ColorUniform extends WebGPUUniform {
101
103
 
102
104
  }
103
105
 
104
- ColorUniform.prototype.isColorUniform = true;
105
-
106
106
  class Matrix3Uniform extends WebGPUUniform {
107
107
 
108
108
  constructor( name, value = new Matrix3() ) {
109
109
 
110
110
  super( name, value );
111
111
 
112
+ this.isMatrix3Uniform = true;
113
+
112
114
  this.boundary = 48;
113
115
  this.itemSize = 12;
114
116
 
@@ -116,14 +118,14 @@ class Matrix3Uniform extends WebGPUUniform {
116
118
 
117
119
  }
118
120
 
119
- Matrix3Uniform.prototype.isMatrix3Uniform = true;
120
-
121
121
  class Matrix4Uniform extends WebGPUUniform {
122
122
 
123
123
  constructor( name, value = new Matrix4() ) {
124
124
 
125
125
  super( name, value );
126
126
 
127
+ this.isMatrix4Uniform = true;
128
+
127
129
  this.boundary = 64;
128
130
  this.itemSize = 16;
129
131
 
@@ -131,6 +133,4 @@ class Matrix4Uniform extends WebGPUUniform {
131
133
 
132
134
  }
133
135
 
134
- Matrix4Uniform.prototype.isMatrix4Uniform = true;
135
-
136
136
  export { FloatUniform, Vector2Uniform, Vector3Uniform, Vector4Uniform, ColorUniform, Matrix3Uniform, Matrix4Uniform };