@needle-tools/three 0.162.12 → 0.169.2

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 (635) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +29789 -1941
  3. package/build/three.module.js +29095 -1933
  4. package/build/three.module.min.js +2 -2
  5. package/build/three.webgpu.js +80003 -0
  6. package/build/three.webgpu.min.js +6 -0
  7. package/build/three.webgpu.nodes.js +79951 -0
  8. package/build/three.webgpu.nodes.min.js +6 -0
  9. package/examples/jsm/Addons.js +2 -5
  10. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  11. package/examples/jsm/animation/CCDIKSolver.js +4 -2
  12. package/examples/jsm/capabilities/WebGL.js +27 -21
  13. package/examples/jsm/controls/ArcballControls.js +174 -158
  14. package/examples/jsm/controls/DragControls.js +260 -132
  15. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  16. package/examples/jsm/controls/FlyControls.js +194 -188
  17. package/examples/jsm/controls/OrbitControls.js +790 -797
  18. package/examples/jsm/controls/PointerLockControls.js +24 -15
  19. package/examples/jsm/controls/TrackballControls.js +469 -448
  20. package/examples/jsm/controls/TransformControls.js +98 -63
  21. package/examples/jsm/csm/CSMShader.js +4 -4
  22. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  23. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  24. package/examples/jsm/effects/StereoEffect.js +6 -1
  25. package/examples/jsm/environments/RoomEnvironment.js +2 -6
  26. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  27. package/examples/jsm/exporters/EXRExporter.js +19 -11
  28. package/examples/jsm/exporters/GLTFExporter.js +77 -8
  29. package/examples/jsm/exporters/KTX2Exporter.js +21 -13
  30. package/examples/jsm/exporters/OBJExporter.js +5 -1
  31. package/examples/jsm/exporters/PLYExporter.js +9 -7
  32. package/examples/jsm/exporters/USDZExporter.js +55 -11
  33. package/examples/jsm/geometries/DecalGeometry.js +4 -1
  34. package/examples/jsm/geometries/InstancedPointsGeometry.js +1 -1
  35. package/examples/jsm/geometries/TeapotGeometry.js +1 -1
  36. package/examples/jsm/geometries/TextGeometry.js +10 -2
  37. package/examples/jsm/helpers/LightProbeHelper.js +43 -44
  38. package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
  39. package/examples/jsm/helpers/ViewHelper.js +75 -61
  40. package/examples/jsm/interactive/HTMLMesh.js +7 -9
  41. package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  42. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  43. package/examples/jsm/libs/draco/README.md +2 -2
  44. package/examples/jsm/libs/fflate.module.js +694 -496
  45. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  46. package/examples/jsm/lights/LightProbeGenerator.js +24 -10
  47. package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
  48. package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
  49. package/examples/jsm/lines/LineMaterial.js +1 -17
  50. package/examples/jsm/lines/LineSegments2.js +15 -0
  51. package/examples/jsm/lines/Wireframe.js +16 -1
  52. package/examples/jsm/lines/webgpu/Line2.js +20 -0
  53. package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
  54. package/examples/jsm/loaders/3MFLoader.js +2 -0
  55. package/examples/jsm/loaders/ColladaLoader.js +9 -6
  56. package/examples/jsm/loaders/DRACOLoader.js +4 -2
  57. package/examples/jsm/loaders/EXRLoader.js +351 -97
  58. package/examples/jsm/loaders/FBXLoader.js +77 -78
  59. package/examples/jsm/loaders/GLTFLoader.js +76 -14
  60. package/examples/jsm/loaders/KTX2Loader.js +30 -22
  61. package/examples/jsm/loaders/LDrawLoader.js +3 -2
  62. package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
  63. package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
  64. package/examples/jsm/loaders/LUTImageLoader.js +0 -14
  65. package/examples/jsm/loaders/MMDLoader.js +31 -12
  66. package/examples/jsm/loaders/MTLLoader.js +4 -3
  67. package/examples/jsm/loaders/MaterialXLoader.js +45 -21
  68. package/examples/jsm/loaders/OBJLoader.js +5 -3
  69. package/examples/jsm/loaders/PCDLoader.js +14 -13
  70. package/examples/jsm/loaders/PDBLoader.js +3 -2
  71. package/examples/jsm/loaders/PLYLoader.js +8 -5
  72. package/examples/jsm/loaders/RGBMLoader.js +16 -0
  73. package/examples/jsm/loaders/STLLoader.js +3 -2
  74. package/examples/jsm/loaders/USDZLoader.js +124 -76
  75. package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
  76. package/examples/jsm/loaders/VRMLLoader.js +11 -11
  77. package/examples/jsm/loaders/VTKLoader.js +80 -6
  78. package/examples/jsm/loaders/XYZLoader.js +3 -2
  79. package/examples/jsm/loaders/lwo/IFFParser.js +8 -5
  80. package/examples/jsm/materials/MeshGouraudMaterial.js +7 -1
  81. package/examples/jsm/math/Octree.js +26 -20
  82. package/examples/jsm/misc/GPUComputationRenderer.js +9 -25
  83. package/examples/jsm/misc/Timer.js +1 -1
  84. package/examples/jsm/modifiers/CurveModifier.js +11 -9
  85. package/examples/jsm/modifiers/CurveModifierGPU.js +233 -0
  86. package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
  87. package/examples/jsm/objects/InstancedPoints.js +2 -2
  88. package/examples/jsm/objects/Lensflare.js +2 -2
  89. package/examples/jsm/objects/LensflareMesh.js +322 -0
  90. package/examples/jsm/objects/SkyMesh.js +187 -0
  91. package/examples/jsm/objects/Water2Mesh.js +158 -0
  92. package/examples/jsm/objects/WaterMesh.js +101 -0
  93. package/examples/jsm/physics/JoltPhysics.js +281 -0
  94. package/examples/jsm/physics/RapierPhysics.js +25 -5
  95. package/examples/jsm/postprocessing/GlitchPass.js +0 -3
  96. package/examples/jsm/postprocessing/LUTPass.js +5 -71
  97. package/examples/jsm/postprocessing/OutlinePass.js +31 -46
  98. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  99. package/examples/jsm/postprocessing/RenderTransitionPass.js +168 -0
  100. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  101. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  102. package/examples/jsm/postprocessing/SSAOPass.js +6 -12
  103. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
  104. package/examples/jsm/renderers/CSS2DRenderer.js +25 -5
  105. package/examples/jsm/renderers/CSS3DRenderer.js +24 -3
  106. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +1 -3
  107. package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
  108. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +7 -4
  109. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +19 -5
  110. package/examples/jsm/shaders/BleachBypassShader.js +1 -2
  111. package/examples/jsm/shaders/ColorifyShader.js +1 -2
  112. package/examples/jsm/shaders/FXAAShader.js +0 -2
  113. package/examples/jsm/shaders/GTAOShader.js +1 -1
  114. package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
  115. package/examples/jsm/shaders/OutputShader.js +1 -1
  116. package/examples/jsm/transpiler/GLSLDecoder.js +47 -5
  117. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -2
  118. package/examples/jsm/transpiler/TSLEncoder.js +24 -22
  119. package/examples/jsm/utils/BufferGeometryUtils.js +18 -16
  120. package/examples/jsm/utils/GeometryCompressionUtils.js +37 -122
  121. package/examples/jsm/utils/SceneUtils.js +60 -1
  122. package/examples/jsm/utils/ShadowMapViewer.js +3 -8
  123. package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
  124. package/examples/jsm/utils/SkeletonUtils.js +84 -66
  125. package/examples/jsm/utils/SortUtils.js +8 -5
  126. package/examples/jsm/utils/TextureUtils.js +3 -2
  127. package/examples/jsm/utils/TextureUtilsGPU.js +63 -0
  128. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  129. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  130. package/examples/jsm/webxr/XRHandModelFactory.js +4 -2
  131. package/package.json +11 -8
  132. package/src/Three.WebGPU.Nodes.js +200 -0
  133. package/src/Three.WebGPU.js +201 -0
  134. package/src/Three.js +23 -1
  135. package/src/animation/AnimationClip.js +1 -1
  136. package/src/animation/tracks/BooleanKeyframeTrack.js +10 -1
  137. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -2
  138. package/src/animation/tracks/StringKeyframeTrack.js +10 -1
  139. package/src/audio/Audio.js +2 -2
  140. package/src/constants.js +6 -7
  141. package/src/core/BufferAttribute.js +0 -9
  142. package/src/core/Clock.js +1 -1
  143. package/src/core/InterleavedBuffer.js +0 -9
  144. package/src/core/Object3D.js +34 -29
  145. package/src/core/Raycaster.js +6 -2
  146. package/src/core/RenderTarget.js +8 -0
  147. package/src/extras/Controls.js +32 -0
  148. package/src/extras/PMREMGenerator.js +12 -11
  149. package/src/extras/TextureUtils.js +210 -0
  150. package/src/geometries/CylinderGeometry.js +11 -4
  151. package/src/lights/Light.js +1 -0
  152. package/src/lights/LightShadow.js +5 -0
  153. package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
  154. package/src/loaders/FileLoader.js +5 -1
  155. package/src/loaders/LoaderUtils.js +3 -1
  156. package/src/loaders/MaterialLoader.js +8 -1
  157. package/src/loaders/ObjectLoader.js +36 -2
  158. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeLoader.js +27 -5
  159. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeMaterialLoader.js +22 -18
  160. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeObjectLoader.js +21 -1
  161. package/src/materials/Material.js +4 -0
  162. package/src/materials/MeshPhysicalMaterial.js +20 -0
  163. package/src/materials/ShaderMaterial.js +0 -4
  164. package/src/materials/nodes/InstancedPointsNodeMaterial.js +156 -0
  165. package/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +69 -68
  166. package/src/materials/nodes/LineBasicNodeMaterial.js +31 -0
  167. package/{examples/jsm/nodes/materials → src/materials/nodes}/LineDashedNodeMaterial.js +15 -12
  168. package/src/materials/nodes/MeshBasicNodeMaterial.js +77 -0
  169. package/src/materials/nodes/MeshLambertNodeMaterial.js +47 -0
  170. package/src/materials/nodes/MeshMatcapNodeMaterial.js +57 -0
  171. package/src/materials/nodes/MeshNormalNodeMaterial.js +44 -0
  172. package/src/materials/nodes/MeshPhongNodeMaterial.js +78 -0
  173. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +248 -0
  174. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshSSSNodeMaterial.js +10 -7
  175. package/src/materials/nodes/MeshStandardNodeMaterial.js +108 -0
  176. package/src/materials/nodes/MeshToonNodeMaterial.js +38 -0
  177. package/{examples/jsm/nodes/materials → src/materials/nodes}/NodeMaterial.js +198 -157
  178. package/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +7 -1
  179. package/{examples/jsm/nodes/materials → src/materials/nodes}/PointsNodeMaterial.js +10 -7
  180. package/src/materials/nodes/ShadowNodeMaterial.js +38 -0
  181. package/src/materials/nodes/SpriteNodeMaterial.js +123 -0
  182. package/src/materials/nodes/VolumeNodeMaterial.js +108 -0
  183. package/src/materials/nodes/manager/NodeMaterialObserver.js +302 -0
  184. package/src/math/Box2.js +4 -4
  185. package/src/math/Box3.js +6 -6
  186. package/src/math/ColorManagement.js +10 -0
  187. package/src/math/Matrix2.js +54 -0
  188. package/src/math/Spherical.js +4 -5
  189. package/src/math/Triangle.js +24 -0
  190. package/src/math/Vector4.js +13 -0
  191. package/src/nodes/Nodes.js +164 -0
  192. package/src/nodes/TSL.js +179 -0
  193. package/src/nodes/accessors/AccessorsUtils.js +25 -0
  194. package/src/nodes/accessors/BatchNode.js +128 -0
  195. package/src/nodes/accessors/Bitangent.js +13 -0
  196. package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +44 -6
  197. package/{examples/jsm → src}/nodes/accessors/BufferNode.js +13 -4
  198. package/src/nodes/accessors/Camera.js +13 -0
  199. package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +22 -15
  200. package/src/nodes/accessors/CubeTextureNode.js +79 -0
  201. package/src/nodes/accessors/InstanceNode.js +144 -0
  202. package/src/nodes/accessors/InstancedPointsMaterialNode.js +24 -0
  203. package/src/nodes/accessors/Lights.js +51 -0
  204. package/src/nodes/accessors/MaterialNode.js +441 -0
  205. package/src/nodes/accessors/MaterialProperties.js +3 -0
  206. package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +10 -5
  207. package/src/nodes/accessors/ModelNode.js +72 -0
  208. package/src/nodes/accessors/ModelViewProjectionNode.js +42 -0
  209. package/{examples/jsm → src}/nodes/accessors/MorphNode.js +51 -33
  210. package/src/nodes/accessors/Normal.js +88 -0
  211. package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +18 -34
  212. package/src/nodes/accessors/PointUVNode.js +30 -0
  213. package/src/nodes/accessors/Position.js +10 -0
  214. package/src/nodes/accessors/ReferenceBaseNode.js +171 -0
  215. package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +58 -9
  216. package/src/nodes/accessors/ReflectVector.js +10 -0
  217. package/src/nodes/accessors/RendererReferenceNode.js +35 -0
  218. package/{examples/jsm → src}/nodes/accessors/SceneNode.js +9 -6
  219. package/src/nodes/accessors/SkinningNode.js +191 -0
  220. package/src/nodes/accessors/StorageBufferNode.js +147 -0
  221. package/{examples/jsm/nodes/accessors/TextureStoreNode.js → src/nodes/accessors/StorageTextureNode.js} +35 -10
  222. package/src/nodes/accessors/Tangent.js +22 -0
  223. package/src/nodes/accessors/Texture3DNode.js +103 -0
  224. package/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +3 -32
  225. package/{examples/jsm → src}/nodes/accessors/TextureNode.js +123 -39
  226. package/src/nodes/accessors/TextureSizeNode.js +36 -0
  227. package/src/nodes/accessors/UV.js +3 -0
  228. package/{examples/jsm/nodes/accessors/UniformsNode.js → src/nodes/accessors/UniformArrayNode.js} +33 -15
  229. package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +10 -7
  230. package/src/nodes/accessors/VelocityNode.js +134 -0
  231. package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +9 -5
  232. package/{examples/jsm → src}/nodes/code/CodeNode.js +9 -5
  233. package/{examples/jsm → src}/nodes/code/ExpressionNode.js +10 -6
  234. package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +8 -5
  235. package/{examples/jsm → src}/nodes/code/FunctionNode.js +8 -31
  236. package/{examples/jsm → src}/nodes/code/ScriptableNode.js +24 -7
  237. package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +11 -8
  238. package/{examples/jsm → src}/nodes/core/AssignNode.js +12 -9
  239. package/{examples/jsm → src}/nodes/core/AttributeNode.js +29 -12
  240. package/{examples/jsm → src}/nodes/core/BypassNode.js +11 -7
  241. package/src/nodes/core/CacheNode.js +50 -0
  242. package/{examples/jsm → src}/nodes/core/ConstNode.js +6 -3
  243. package/{examples/jsm → src}/nodes/core/ContextNode.js +27 -11
  244. package/src/nodes/core/IndexNode.js +99 -0
  245. package/{examples/jsm → src}/nodes/core/InputNode.js +7 -3
  246. package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
  247. package/src/nodes/core/MRTNode.js +85 -0
  248. package/{examples/jsm → src}/nodes/core/Node.js +114 -57
  249. package/{examples/jsm → src}/nodes/core/NodeBuilder.js +327 -90
  250. package/src/nodes/core/NodeCache.js +36 -0
  251. package/{examples/jsm → src}/nodes/core/NodeFrame.js +52 -10
  252. package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
  253. package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
  254. package/{examples/jsm → src}/nodes/core/NodeUtils.js +56 -8
  255. package/{examples/jsm → src}/nodes/core/OutputStructNode.js +13 -12
  256. package/{examples/jsm → src}/nodes/core/ParameterNode.js +7 -4
  257. package/src/nodes/core/PropertyNode.js +88 -0
  258. package/{examples/jsm → src}/nodes/core/StackNode.js +31 -11
  259. package/{examples/jsm → src}/nodes/core/StructTypeNode.js +7 -3
  260. package/{examples/jsm → src}/nodes/core/TempNode.js +10 -6
  261. package/src/nodes/core/UniformGroupNode.js +59 -0
  262. package/{examples/jsm → src}/nodes/core/UniformNode.js +37 -5
  263. package/{examples/jsm → src}/nodes/core/VarNode.js +14 -14
  264. package/src/nodes/core/VaryingNode.js +108 -0
  265. package/{examples/jsm → src}/nodes/display/AfterImageNode.js +38 -28
  266. package/src/nodes/display/AnaglyphPassNode.js +67 -0
  267. package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +33 -30
  268. package/src/nodes/display/BleachBypass.js +26 -0
  269. package/src/nodes/display/BlendMode.js +54 -0
  270. package/src/nodes/display/BloomNode.js +341 -0
  271. package/{examples/jsm → src}/nodes/display/BumpMapNode.js +20 -38
  272. package/src/nodes/display/ColorAdjustment.js +46 -0
  273. package/src/nodes/display/ColorSpaceFunctions.js +38 -0
  274. package/src/nodes/display/ColorSpaceNode.js +114 -0
  275. package/src/nodes/display/DenoiseNode.js +204 -0
  276. package/src/nodes/display/DepthOfFieldNode.js +124 -0
  277. package/src/nodes/display/DotScreenNode.js +66 -0
  278. package/src/nodes/display/FXAANode.js +332 -0
  279. package/src/nodes/display/FilmNode.js +56 -0
  280. package/src/nodes/display/FrontFacingNode.js +45 -0
  281. package/src/nodes/display/GTAONode.js +331 -0
  282. package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +47 -24
  283. package/src/nodes/display/Lut3DNode.js +57 -0
  284. package/src/nodes/display/MotionBlur.js +25 -0
  285. package/{examples/jsm → src}/nodes/display/NormalMapNode.js +14 -14
  286. package/src/nodes/display/ParallaxBarrierPassNode.js +58 -0
  287. package/src/nodes/display/PassNode.js +378 -0
  288. package/src/nodes/display/PixelationPassNode.js +213 -0
  289. package/{examples/jsm → src}/nodes/display/PosterizeNode.js +8 -7
  290. package/src/nodes/display/RGBShiftNode.js +53 -0
  291. package/src/nodes/display/RenderOutputNode.js +60 -0
  292. package/src/nodes/display/SSAAPassNode.js +287 -0
  293. package/src/nodes/display/ScreenNode.js +181 -0
  294. package/src/nodes/display/Sepia.js +17 -0
  295. package/src/nodes/display/SobelOperatorNode.js +126 -0
  296. package/src/nodes/display/StereoCompositePassNode.js +110 -0
  297. package/src/nodes/display/StereoPassNode.js +83 -0
  298. package/src/nodes/display/ToneMappingFunctions.js +190 -0
  299. package/src/nodes/display/ToneMappingNode.js +67 -0
  300. package/src/nodes/display/ToonOutlinePassNode.js +111 -0
  301. package/src/nodes/display/TransitionNode.js +80 -0
  302. package/src/nodes/display/ViewportDepthNode.js +125 -0
  303. package/src/nodes/display/ViewportDepthTextureNode.js +33 -0
  304. package/src/nodes/display/ViewportSharedTextureNode.js +39 -0
  305. package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +20 -14
  306. package/src/nodes/fog/FogExp2Node.js +35 -0
  307. package/src/nodes/fog/FogNode.js +50 -0
  308. package/src/nodes/fog/FogRangeNode.js +36 -0
  309. package/src/nodes/functions/BSDF/BRDF_GGX.js +59 -0
  310. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  311. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  312. package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +2 -2
  313. package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
  314. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
  315. package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  316. package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
  317. package/src/nodes/functions/BSDF/LTC.js +131 -0
  318. package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  319. package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -4
  320. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
  321. package/src/nodes/functions/BasicLightingModel.js +78 -0
  322. package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +11 -9
  323. package/src/nodes/functions/PhysicalLightingModel.js +633 -0
  324. package/src/nodes/functions/ShadowMaskModel.js +31 -0
  325. package/src/nodes/functions/ToonLightingModel.js +51 -0
  326. package/src/nodes/functions/material/getGeometryRoughness.js +13 -0
  327. package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
  328. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  329. package/{examples/jsm → src}/nodes/geometry/RangeNode.js +28 -11
  330. package/src/nodes/gpgpu/AtomicFunctionNode.js +99 -0
  331. package/src/nodes/gpgpu/BarrierNode.js +40 -0
  332. package/src/nodes/gpgpu/ComputeBuiltinNode.js +98 -0
  333. package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +10 -6
  334. package/src/nodes/gpgpu/WorkgroupInfoNode.js +100 -0
  335. package/src/nodes/lighting/AONode.js +27 -0
  336. package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +6 -8
  337. package/src/nodes/lighting/AnalyticLightNode.js +522 -0
  338. package/src/nodes/lighting/BasicEnvironmentNode.js +30 -0
  339. package/src/nodes/lighting/BasicLightMapNode.js +32 -0
  340. package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +7 -9
  341. package/src/nodes/lighting/EnvironmentNode.js +138 -0
  342. package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +12 -11
  343. package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +7 -9
  344. package/src/nodes/lighting/IrradianceNode.js +27 -0
  345. package/src/nodes/lighting/LightProbeNode.js +53 -0
  346. package/{examples/jsm → src}/nodes/lighting/LightUtils.js +3 -3
  347. package/src/nodes/lighting/LightingContextNode.js +67 -0
  348. package/{examples/jsm → src}/nodes/lighting/LightingNode.js +9 -3
  349. package/src/nodes/lighting/LightsNode.js +250 -0
  350. package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +12 -13
  351. package/src/nodes/lighting/RectAreaLightNode.js +97 -0
  352. package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +14 -16
  353. package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +2 -2
  354. package/src/nodes/materialx/lib/mx_hsv.js +127 -0
  355. package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +500 -603
  356. package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
  357. package/{examples/jsm/nodes/math/CondNode.js → src/nodes/math/ConditionalNode.js} +48 -13
  358. package/src/nodes/math/Hash.js +13 -0
  359. package/src/nodes/math/MathNode.js +407 -0
  360. package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -7
  361. package/src/nodes/math/OperatorNode.js +319 -0
  362. package/{examples/jsm → src}/nodes/math/TriNoise3D.js +19 -29
  363. package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
  364. package/src/nodes/pmrem/PMREMNode.js +240 -0
  365. package/src/nodes/pmrem/PMREMUtils.js +288 -0
  366. package/src/nodes/procedural/Checker.js +14 -0
  367. package/src/nodes/tsl/TSLBase.js +30 -0
  368. package/{examples/jsm/nodes/shadernode/ShaderNode.js → src/nodes/tsl/TSLCore.js} +122 -96
  369. package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +9 -5
  370. package/{examples/jsm → src}/nodes/utils/ConvertNode.js +7 -3
  371. package/src/nodes/utils/CubeMapNode.js +160 -0
  372. package/src/nodes/utils/Discard.js +8 -0
  373. package/src/nodes/utils/EquirectUVNode.js +36 -0
  374. package/src/nodes/utils/FlipNode.js +68 -0
  375. package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +11 -5
  376. package/{examples/jsm → src}/nodes/utils/JoinNode.js +6 -3
  377. package/{examples/jsm → src}/nodes/utils/LoopNode.js +23 -12
  378. package/src/nodes/utils/MatcapUVNode.js +33 -0
  379. package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +16 -7
  380. package/{examples/jsm → src}/nodes/utils/OscNode.js +12 -8
  381. package/src/nodes/utils/Packing.js +4 -0
  382. package/src/nodes/utils/RTTNode.js +133 -0
  383. package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +21 -5
  384. package/{examples/jsm → src}/nodes/utils/RemapNode.js +12 -8
  385. package/{examples/jsm → src}/nodes/utils/RotateNode.js +8 -13
  386. package/{examples/jsm → src}/nodes/utils/SetNode.js +7 -4
  387. package/{examples/jsm → src}/nodes/utils/SplitNode.js +7 -3
  388. package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +10 -6
  389. package/src/nodes/utils/SpriteUtils.js +47 -0
  390. package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +11 -12
  391. package/{examples/jsm → src}/nodes/utils/TimerNode.js +8 -5
  392. package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +11 -9
  393. package/src/nodes/utils/UVUtils.js +19 -0
  394. package/src/nodes/utils/ViewportUtils.js +14 -0
  395. package/src/objects/BatchedMesh.js +302 -144
  396. package/src/objects/InstancedMesh.js +11 -1
  397. package/src/objects/LOD.js +21 -0
  398. package/src/objects/Line.js +67 -43
  399. package/src/objects/Mesh.js +7 -23
  400. package/src/objects/Points.js +2 -0
  401. package/src/renderers/WebGLRenderer.js +473 -224
  402. package/{examples/jsm → src}/renderers/common/Animation.js +3 -0
  403. package/{examples/jsm → src}/renderers/common/Attributes.js +4 -1
  404. package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
  405. package/{examples/jsm → src}/renderers/common/Background.js +18 -10
  406. package/src/renderers/common/BindGroup.js +18 -0
  407. package/src/renderers/common/Bindings.js +203 -0
  408. package/src/renderers/common/BundleGroup.js +26 -0
  409. package/src/renderers/common/ChainMap.js +59 -0
  410. package/{examples/jsm → src}/renderers/common/ClippingContext.js +24 -12
  411. package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
  412. package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +16 -4
  413. package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
  414. package/{examples/jsm → src}/renderers/common/Info.js +35 -15
  415. package/{examples/jsm → src}/renderers/common/Pipelines.js +2 -2
  416. package/src/renderers/common/PostProcessing.js +90 -0
  417. package/src/renderers/common/QuadMesh.js +55 -0
  418. package/src/renderers/common/RenderBundle.js +18 -0
  419. package/src/renderers/common/RenderBundles.js +38 -0
  420. package/{examples/jsm → src}/renderers/common/RenderContext.js +25 -2
  421. package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
  422. package/{examples/jsm → src}/renderers/common/RenderList.js +11 -2
  423. package/src/renderers/common/RenderObject.js +413 -0
  424. package/{examples/jsm → src}/renderers/common/RenderObjects.js +9 -2
  425. package/{examples/jsm → src}/renderers/common/Renderer.js +431 -83
  426. package/{examples/jsm → src}/renderers/common/SampledTexture.js +14 -5
  427. package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
  428. package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
  429. package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
  430. package/{examples/jsm → src}/renderers/common/Textures.js +15 -15
  431. package/{examples/jsm → src}/renderers/common/Uniform.js +10 -5
  432. package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
  433. package/src/renderers/common/extras/PMREMGenerator.js +771 -0
  434. package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
  435. package/src/renderers/common/nodes/NodeLibrary.js +118 -0
  436. package/src/renderers/common/nodes/NodeSampledTexture.js +64 -0
  437. package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +8 -1
  438. package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
  439. package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
  440. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
  441. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
  442. package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +106 -68
  443. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
  444. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  445. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
  446. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
  447. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
  448. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
  449. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  450. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
  451. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
  452. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +1 -0
  453. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  454. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  455. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
  456. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
  457. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
  458. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +1 -1
  459. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
  460. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +10 -31
  461. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
  462. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  463. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +38 -25
  464. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  465. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  466. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +19 -11
  467. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  468. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
  469. package/src/renderers/shaders/ShaderChunk.js +0 -2
  470. package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
  471. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -0
  472. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  473. package/src/renderers/shaders/ShaderLib.js +2 -1
  474. package/src/renderers/shaders/UniformsLib.js +3 -0
  475. package/src/renderers/shaders/UniformsUtils.js +10 -1
  476. package/src/renderers/webgl/WebGLAttributes.js +42 -38
  477. package/src/renderers/webgl/WebGLBackground.js +24 -3
  478. package/src/renderers/webgl/WebGLBindingStates.js +14 -51
  479. package/src/renderers/webgl/WebGLBufferRenderer.js +23 -22
  480. package/src/renderers/webgl/WebGLCapabilities.js +44 -13
  481. package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  482. package/src/renderers/webgl/WebGLExtensions.js +7 -20
  483. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +23 -21
  484. package/src/renderers/webgl/WebGLLights.js +21 -44
  485. package/src/renderers/webgl/WebGLMaterials.js +9 -8
  486. package/src/renderers/webgl/WebGLMorphtargets.js +78 -217
  487. package/src/renderers/webgl/WebGLProgram.js +46 -78
  488. package/src/renderers/webgl/WebGLPrograms.js +37 -40
  489. package/src/renderers/webgl/WebGLProperties.js +7 -0
  490. package/src/renderers/webgl/WebGLRenderStates.js +15 -9
  491. package/src/renderers/webgl/WebGLShadowMap.js +25 -25
  492. package/src/renderers/webgl/WebGLState.js +35 -58
  493. package/src/renderers/webgl/WebGLTextures.js +313 -358
  494. package/src/renderers/webgl/WebGLUniforms.js +12 -2
  495. package/src/renderers/webgl/WebGLUniformsGroups.js +8 -8
  496. package/src/renderers/webgl/WebGLUtils.js +9 -78
  497. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +389 -152
  498. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +145 -0
  499. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +245 -44
  500. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +7 -1
  501. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +2 -0
  502. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
  503. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +21 -3
  504. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +271 -43
  505. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +6 -23
  506. package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +318 -141
  507. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +42 -0
  508. package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +10 -7
  509. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +59 -0
  510. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +105 -0
  511. package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +424 -95
  512. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
  513. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +37 -18
  514. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +86 -32
  515. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +10 -1
  516. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +68 -27
  517. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
  518. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +235 -68
  519. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +43 -5
  520. package/src/renderers/webxr/WebXRDepthSensing.js +11 -6
  521. package/src/renderers/webxr/WebXRManager.js +53 -38
  522. package/src/scenes/Scene.js +7 -1
  523. package/src/textures/CompressedArrayTexture.js +14 -0
  524. package/src/textures/DataArrayTexture.js +14 -0
  525. package/src/textures/DepthTexture.js +1 -3
  526. package/src/textures/Texture.js +12 -2
  527. package/src/utils.js +62 -1
  528. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  529. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  530. package/examples/jsm/loaders/TiltLoader.js +0 -520
  531. package/examples/jsm/nodes/Nodes.js +0 -195
  532. package/examples/jsm/nodes/accessors/AccessorsUtils.js +0 -10
  533. package/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
  534. package/examples/jsm/nodes/accessors/CameraNode.js +0 -119
  535. package/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
  536. package/examples/jsm/nodes/accessors/InstanceNode.js +0 -71
  537. package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  538. package/examples/jsm/nodes/accessors/MaterialNode.js +0 -314
  539. package/examples/jsm/nodes/accessors/ModelNode.js +0 -33
  540. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +0 -39
  541. package/examples/jsm/nodes/accessors/NormalNode.js +0 -96
  542. package/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
  543. package/examples/jsm/nodes/accessors/PositionNode.js +0 -104
  544. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
  545. package/examples/jsm/nodes/accessors/SkinningNode.js +0 -124
  546. package/examples/jsm/nodes/accessors/StorageBufferNode.js +0 -72
  547. package/examples/jsm/nodes/accessors/TangentNode.js +0 -109
  548. package/examples/jsm/nodes/accessors/TextureSizeNode.js +0 -35
  549. package/examples/jsm/nodes/accessors/UVNode.js +0 -47
  550. package/examples/jsm/nodes/core/CacheNode.js +0 -49
  551. package/examples/jsm/nodes/core/IndexNode.js +0 -66
  552. package/examples/jsm/nodes/core/NodeCache.js +0 -26
  553. package/examples/jsm/nodes/core/NodeKeywords.js +0 -80
  554. package/examples/jsm/nodes/core/PropertyNode.js +0 -72
  555. package/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
  556. package/examples/jsm/nodes/core/VaryingNode.js +0 -65
  557. package/examples/jsm/nodes/display/BlendModeNode.js +0 -128
  558. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
  559. package/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
  560. package/examples/jsm/nodes/display/FrontFacingNode.js +0 -27
  561. package/examples/jsm/nodes/display/PassNode.js +0 -183
  562. package/examples/jsm/nodes/display/ToneMappingNode.js +0 -184
  563. package/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
  564. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
  565. package/examples/jsm/nodes/display/ViewportNode.js +0 -134
  566. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -31
  567. package/examples/jsm/nodes/fog/FogExp2Node.js +0 -35
  568. package/examples/jsm/nodes/fog/FogNode.js +0 -38
  569. package/examples/jsm/nodes/fog/FogRangeNode.js +0 -34
  570. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +0 -40
  571. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +0 -393
  572. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
  573. package/examples/jsm/nodes/lighting/AONode.js +0 -27
  574. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -241
  575. package/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -181
  576. package/examples/jsm/nodes/lighting/LightNode.js +0 -57
  577. package/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
  578. package/examples/jsm/nodes/lighting/LightsNode.js +0 -188
  579. package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  580. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
  581. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  582. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
  583. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  584. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
  585. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +0 -155
  586. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +0 -80
  587. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -90
  588. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +0 -130
  589. package/examples/jsm/nodes/math/HashNode.js +0 -34
  590. package/examples/jsm/nodes/math/MathNode.js +0 -391
  591. package/examples/jsm/nodes/math/OperatorNode.js +0 -274
  592. package/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
  593. package/examples/jsm/nodes/utils/DiscardNode.js +0 -27
  594. package/examples/jsm/nodes/utils/EquirectUVNode.js +0 -33
  595. package/examples/jsm/nodes/utils/MatcapUVNode.js +0 -30
  596. package/examples/jsm/nodes/utils/PackingNode.js +0 -55
  597. package/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
  598. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  599. package/examples/jsm/objects/QuadMesh.js +0 -66
  600. package/examples/jsm/renderers/common/Bindings.js +0 -173
  601. package/examples/jsm/renderers/common/ChainMap.js +0 -89
  602. package/examples/jsm/renderers/common/PostProcessing.js +0 -25
  603. package/examples/jsm/renderers/common/RenderObject.js +0 -221
  604. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  605. package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +0 -49
  606. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  607. package/examples/jsm/utils/GPUStatsPanel.js +0 -128
  608. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  609. package/src/renderers/WebGL1Renderer.js +0 -7
  610. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
  611. /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
  612. /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
  613. /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
  614. /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
  615. /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
  616. /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
  617. /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
  618. /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
  619. /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
  620. /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
  621. /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
  622. /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
  623. /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
  624. /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
  625. /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
  626. /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
  627. /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
  628. /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
  629. /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
  630. /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
  631. /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
  632. /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
  633. /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
  634. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
  635. /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
@@ -1,9 +1,12 @@
1
+ import DataMap from '../../common/DataMap.js';
1
2
  import { GPUTextureViewDimension, GPUIndexFormat, GPUFilterMode, GPUPrimitiveTopology, GPULoadOp, GPUStoreOp } from './WebGPUConstants.js';
2
3
 
3
- class WebGPUTexturePassUtils {
4
+ class WebGPUTexturePassUtils extends DataMap {
4
5
 
5
6
  constructor( device ) {
6
7
 
8
+ super();
9
+
7
10
  this.device = device;
8
11
 
9
12
  const mipmapVertexSource = `
@@ -99,6 +102,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
99
102
  if ( pipeline === undefined ) {
100
103
 
101
104
  pipeline = this.device.createRenderPipeline( {
105
+ label: `mipmap-${ format }`,
102
106
  vertex: {
103
107
  module: this.mipmapVertexShaderModule,
104
108
  entryPoint: 'main'
@@ -130,6 +134,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
130
134
  if ( pipeline === undefined ) {
131
135
 
132
136
  pipeline = this.device.createRenderPipeline( {
137
+ label: `flipY-${ format }`,
133
138
  vertex: {
134
139
  module: this.mipmapVertexShaderModule,
135
140
  entryPoint: 'main'
@@ -226,9 +231,33 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
226
231
 
227
232
  generateMipmaps( textureGPU, textureGPUDescriptor, baseArrayLayer = 0 ) {
228
233
 
229
- const pipeline = this.getTransferPipeline( textureGPUDescriptor.format );
234
+ const textureData = this.get( textureGPU );
235
+
236
+ if ( textureData.useCount === undefined ) {
237
+
238
+ textureData.useCount = 0;
239
+ textureData.layers = [];
240
+
241
+ }
242
+
243
+ const passes = textureData.layers[ baseArrayLayer ] || this._mipmapCreateBundles( textureGPU, textureGPUDescriptor, baseArrayLayer );
230
244
 
231
245
  const commandEncoder = this.device.createCommandEncoder( {} );
246
+
247
+ this._mipmapRunBundles( commandEncoder, passes );
248
+
249
+ this.device.queue.submit( [ commandEncoder.finish() ] );
250
+
251
+ if ( textureData.useCount !== 0 ) textureData.layers[ baseArrayLayer ] = passes;
252
+
253
+ textureData.useCount ++;
254
+
255
+ }
256
+
257
+ _mipmapCreateBundles( textureGPU, textureGPUDescriptor, baseArrayLayer ) {
258
+
259
+ const pipeline = this.getTransferPipeline( textureGPUDescriptor.format );
260
+
232
261
  const bindGroupLayout = pipeline.getBindGroupLayout( 0 ); // @TODO: Consider making this static.
233
262
 
234
263
  let srcView = textureGPU.createView( {
@@ -238,6 +267,8 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
238
267
  baseArrayLayer
239
268
  } );
240
269
 
270
+ const passes = [];
271
+
241
272
  for ( let i = 1; i < textureGPUDescriptor.mipLevelCount; i ++ ) {
242
273
 
243
274
  const bindGroup = this.device.createBindGroup( {
@@ -258,25 +289,51 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
258
289
  baseArrayLayer
259
290
  } );
260
291
 
261
- const passEncoder = commandEncoder.beginRenderPass( {
292
+ const passDescriptor = {
262
293
  colorAttachments: [ {
263
294
  view: dstView,
264
295
  loadOp: GPULoadOp.Clear,
265
296
  storeOp: GPUStoreOp.Store,
266
297
  clearValue: [ 0, 0, 0, 0 ]
267
298
  } ]
299
+ };
300
+
301
+ const passEncoder = this.device.createRenderBundleEncoder( {
302
+ colorFormats: [ textureGPUDescriptor.format ]
268
303
  } );
269
304
 
270
305
  passEncoder.setPipeline( pipeline );
271
306
  passEncoder.setBindGroup( 0, bindGroup );
272
307
  passEncoder.draw( 4, 1, 0, 0 );
273
- passEncoder.end();
308
+
309
+ passes.push( {
310
+ renderBundles: [ passEncoder.finish() ],
311
+ passDescriptor
312
+ } );
274
313
 
275
314
  srcView = dstView;
276
315
 
277
316
  }
278
317
 
279
- this.device.queue.submit( [ commandEncoder.finish() ] );
318
+ return passes;
319
+
320
+ }
321
+
322
+ _mipmapRunBundles( commandEncoder, passes ) {
323
+
324
+ const levels = passes.length;
325
+
326
+ for ( let i = 0; i < levels; i ++ ) {
327
+
328
+ const pass = passes[ i ];
329
+
330
+ const passEncoder = commandEncoder.beginRenderPass( pass.passDescriptor );
331
+
332
+ passEncoder.executeBundles( pass.renderBundles );
333
+
334
+ passEncoder.end();
335
+
336
+ }
280
337
 
281
338
  }
282
339
 
@@ -2,20 +2,22 @@ import {
2
2
  GPUTextureFormat, GPUAddressMode, GPUFilterMode, GPUTextureDimension, GPUFeatureName
3
3
  } from './WebGPUConstants.js';
4
4
 
5
+ import WebGPUTexturePassUtils from './WebGPUTexturePassUtils.js';
6
+
5
7
  import {
6
- CubeTexture, Texture,
8
+ ByteType, ShortType,
7
9
  NearestFilter, NearestMipmapNearestFilter, NearestMipmapLinearFilter,
8
10
  RepeatWrapping, MirroredRepeatWrapping,
9
11
  RGB_ETC2_Format, RGBA_ETC2_EAC_Format,
10
- RGBAFormat, RedFormat, RGFormat, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, UnsignedByteType, FloatType, HalfFloatType, SRGBColorSpace, DepthFormat, DepthStencilFormat,
12
+ RGBAFormat, RGBFormat, RedFormat, RGFormat, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, UnsignedByteType, FloatType, HalfFloatType, SRGBColorSpace, DepthFormat, DepthStencilFormat,
11
13
  RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format,
12
- RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, UnsignedIntType, UnsignedShortType, UnsignedInt248Type,
13
- NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare
14
- } from 'three';
15
-
16
- import { CubeReflectionMapping, CubeRefractionMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping, DepthTexture } from 'three';
17
-
18
- import WebGPUTexturePassUtils from './WebGPUTexturePassUtils.js';
14
+ RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, UnsignedIntType, UnsignedShortType, UnsignedInt248Type, UnsignedInt5999Type,
15
+ NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, IntType, RedIntegerFormat, RGIntegerFormat, RGBAIntegerFormat,
16
+ CubeReflectionMapping, CubeRefractionMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping
17
+ } from '../../../constants.js';
18
+ import { CubeTexture } from '../../../textures/CubeTexture.js';
19
+ import { DepthTexture } from '../../../textures/DepthTexture.js';
20
+ import { Texture } from '../../../textures/Texture.js';
19
21
 
20
22
  const _compareToWebGPU = {
21
23
  [ NeverCompare ]: 'never',
@@ -38,8 +40,9 @@ class WebGPUTextureUtils {
38
40
 
39
41
  this._passUtils = null;
40
42
 
41
- this.defaultTexture = null;
42
- this.defaultCubeTexture = null;
43
+ this.defaultTexture = {};
44
+ this.defaultCubeTexture = {};
45
+ this.defaultVideoFrame = null;
43
46
 
44
47
  this.colorBuffer = null;
45
48
 
@@ -79,13 +82,19 @@ class WebGPUTextureUtils {
79
82
 
80
83
  let textureGPU;
81
84
 
85
+ const format = getFormat( texture );
86
+
82
87
  if ( texture.isCubeTexture ) {
83
88
 
84
- textureGPU = this._getDefaultCubeTextureGPU();
89
+ textureGPU = this._getDefaultCubeTextureGPU( format );
90
+
91
+ } else if ( texture.isVideoTexture ) {
92
+
93
+ this.backend.get( texture ).externalTexture = this._getDefaultVideoFrame();
85
94
 
86
95
  } else {
87
96
 
88
- textureGPU = this._getDefaultTextureGPU();
97
+ textureGPU = this._getDefaultTextureGPU( format );
89
98
 
90
99
  }
91
100
 
@@ -111,24 +120,15 @@ class WebGPUTextureUtils {
111
120
  const { width, height, depth, levels } = options;
112
121
 
113
122
  const dimension = this._getDimension( texture );
114
- const format = texture.internalFormat || getFormat( texture, backend.device );
115
-
116
- let sampleCount = options.sampleCount !== undefined ? options.sampleCount : 1;
117
-
118
- if ( sampleCount > 1 ) {
123
+ const format = texture.internalFormat || options.format || getFormat( texture, backend.device );
119
124
 
120
- // WebGPU only supports power-of-two sample counts and 2 is not a valid value
121
- sampleCount = Math.pow( 2, Math.floor( Math.log2( sampleCount ) ) );
125
+ textureData.format = format;
122
126
 
123
- if ( sampleCount === 2 ) {
124
-
125
- sampleCount = 4;
127
+ let sampleCount = options.sampleCount !== undefined ? options.sampleCount : 1;
126
128
 
127
- }
129
+ sampleCount = backend.utils.getSampleCount( sampleCount );
128
130
 
129
- }
130
-
131
- const primarySampleCount = texture.isRenderTargetTexture ? 1 : sampleCount;
131
+ const primarySampleCount = texture.isRenderTargetTexture && ! texture.isMultisampleRenderTargetTexture ? 1 : sampleCount;
132
132
 
133
133
  let usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC;
134
134
 
@@ -138,7 +138,7 @@ class WebGPUTextureUtils {
138
138
 
139
139
  }
140
140
 
141
- if ( texture.isCompressedTexture !== true ) {
141
+ if ( texture.isCompressedTexture !== true && texture.isCompressedArrayTexture !== true ) {
142
142
 
143
143
  usage |= GPUTextureUsage.RENDER_ATTACHMENT;
144
144
 
@@ -186,7 +186,7 @@ class WebGPUTextureUtils {
186
186
 
187
187
  }
188
188
 
189
- if ( texture.isRenderTargetTexture && sampleCount > 1 ) {
189
+ if ( texture.isRenderTargetTexture && sampleCount > 1 && ! texture.isMultisampleRenderTargetTexture ) {
190
190
 
191
191
  const msaaTextureDescriptorGPU = Object.assign( {}, textureDescriptorGPU );
192
192
 
@@ -239,7 +239,13 @@ class WebGPUTextureUtils {
239
239
 
240
240
  } else {
241
241
 
242
- this._generateMipmaps( textureData.texture, textureData.textureDescriptorGPU );
242
+ const depth = texture.image.depth || 1;
243
+
244
+ for ( let i = 0; i < depth; i ++ ) {
245
+
246
+ this._generateMipmaps( textureData.texture, textureData.textureDescriptorGPU, i );
247
+
248
+ }
243
249
 
244
250
  }
245
251
 
@@ -259,8 +265,8 @@ class WebGPUTextureUtils {
259
265
  height: height,
260
266
  depthOrArrayLayers: 1
261
267
  },
262
- sampleCount: backend.parameters.sampleCount,
263
- format: GPUTextureFormat.BGRA8Unorm,
268
+ sampleCount: backend.utils.getSampleCount( backend.renderer.samples ),
269
+ format: backend.utils.getPreferredCanvasFormat(),
264
270
  usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC
265
271
  } );
266
272
 
@@ -268,7 +274,7 @@ class WebGPUTextureUtils {
268
274
 
269
275
  }
270
276
 
271
- getDepthBuffer( depth = true, stencil = true ) {
277
+ getDepthBuffer( depth = true, stencil = false ) {
272
278
 
273
279
  const backend = this.backend;
274
280
  const { width, height } = backend.getDrawingBufferSize();
@@ -308,7 +314,7 @@ class WebGPUTextureUtils {
308
314
  depthTexture.image.width = width;
309
315
  depthTexture.image.height = height;
310
316
 
311
- this.createTexture( depthTexture, { sampleCount: backend.parameters.sampleCount, width, height } );
317
+ this.createTexture( depthTexture, { sampleCount: backend.utils.getSampleCount( backend.renderer.samples ), width, height } );
312
318
 
313
319
  return backend.get( depthTexture ).texture;
314
320
 
@@ -325,11 +331,11 @@ class WebGPUTextureUtils {
325
331
 
326
332
  // transfer texture data
327
333
 
328
- if ( texture.isDataTexture || texture.isData3DTexture ) {
334
+ if ( texture.isDataTexture ) {
329
335
 
330
336
  this._copyBufferToTexture( options.image, textureData.texture, textureDescriptorGPU, 0, texture.flipY );
331
337
 
332
- } else if ( texture.isDataArrayTexture ) {
338
+ } else if ( texture.isDataArrayTexture || texture.isData3DTexture ) {
333
339
 
334
340
  for ( let i = 0; i < options.image.depth; i ++ ) {
335
341
 
@@ -337,7 +343,7 @@ class WebGPUTextureUtils {
337
343
 
338
344
  }
339
345
 
340
- } else if ( texture.isCompressedTexture ) {
346
+ } else if ( texture.isCompressedTexture || texture.isCompressedArrayTexture ) {
341
347
 
342
348
  this._copyCompressedBufferToTexture( texture.mipmaps, textureData.texture, textureDescriptorGPU );
343
349
 
@@ -365,7 +371,7 @@ class WebGPUTextureUtils {
365
371
 
366
372
  }
367
373
 
368
- async copyTextureToBuffer( texture, x, y, width, height ) {
374
+ async copyTextureToBuffer( texture, x, y, width, height, faceIndex ) {
369
375
 
370
376
  const device = this.backend.device;
371
377
 
@@ -389,7 +395,7 @@ class WebGPUTextureUtils {
389
395
  encoder.copyTextureToBuffer(
390
396
  {
391
397
  texture: textureGPU,
392
- origin: { x, y },
398
+ origin: { x, y, z: faceIndex },
393
399
  },
394
400
  {
395
401
  buffer: readBuffer,
@@ -422,19 +428,19 @@ class WebGPUTextureUtils {
422
428
 
423
429
  }
424
430
 
425
- _getDefaultTextureGPU() {
431
+ _getDefaultTextureGPU( format ) {
426
432
 
427
- let defaultTexture = this.defaultTexture;
433
+ let defaultTexture = this.defaultTexture[ format ];
428
434
 
429
- if ( defaultTexture === null ) {
435
+ if ( defaultTexture === undefined ) {
430
436
 
431
437
  const texture = new Texture();
432
438
  texture.minFilter = NearestFilter;
433
439
  texture.magFilter = NearestFilter;
434
440
 
435
- this.createTexture( texture, { width: 1, height: 1 } );
441
+ this.createTexture( texture, { width: 1, height: 1, format } );
436
442
 
437
- this.defaultTexture = defaultTexture = texture;
443
+ this.defaultTexture[ format ] = defaultTexture = texture;
438
444
 
439
445
  }
440
446
 
@@ -442,11 +448,11 @@ class WebGPUTextureUtils {
442
448
 
443
449
  }
444
450
 
445
- _getDefaultCubeTextureGPU() {
451
+ _getDefaultCubeTextureGPU( format ) {
446
452
 
447
- let defaultCubeTexture = this.defaultTexture;
453
+ let defaultCubeTexture = this.defaultTexture[ format ];
448
454
 
449
- if ( defaultCubeTexture === null ) {
455
+ if ( defaultCubeTexture === undefined ) {
450
456
 
451
457
  const texture = new CubeTexture();
452
458
  texture.minFilter = NearestFilter;
@@ -454,7 +460,7 @@ class WebGPUTextureUtils {
454
460
 
455
461
  this.createTexture( texture, { width: 1, height: 1, depth: 6 } );
456
462
 
457
- this.defaultCubeTexture = defaultCubeTexture = texture;
463
+ this.defaultCubeTexture[ format ] = defaultCubeTexture = texture;
458
464
 
459
465
  }
460
466
 
@@ -462,6 +468,27 @@ class WebGPUTextureUtils {
462
468
 
463
469
  }
464
470
 
471
+ _getDefaultVideoFrame() {
472
+
473
+ let defaultVideoFrame = this.defaultVideoFrame;
474
+
475
+ if ( defaultVideoFrame === null ) {
476
+
477
+ const init = {
478
+ timestamp: 0,
479
+ codedWidth: 1,
480
+ codedHeight: 1,
481
+ format: 'RGBA',
482
+ };
483
+
484
+ this.defaultVideoFrame = defaultVideoFrame = new VideoFrame( new Uint8Array( [ 0, 0, 0, 0xff ] ), init );
485
+
486
+ }
487
+
488
+ return defaultVideoFrame;
489
+
490
+ }
491
+
465
492
  _copyCubeMapToTexture( images, textureGPU, textureDescriptorGPU, flipY ) {
466
493
 
467
494
  for ( let i = 0; i < 6; i ++ ) {
@@ -580,6 +607,7 @@ class WebGPUTextureUtils {
580
607
  const device = this.backend.device;
581
608
 
582
609
  const blockData = this._getBlockData( textureDescriptorGPU.format );
610
+ const isTextureArray = textureDescriptorGPU.size.depthOrArrayLayers > 1;
583
611
 
584
612
  for ( let i = 0; i < mipmaps.length; i ++ ) {
585
613
 
@@ -587,25 +615,33 @@ class WebGPUTextureUtils {
587
615
 
588
616
  const width = mipmap.width;
589
617
  const height = mipmap.height;
618
+ const depth = isTextureArray ? textureDescriptorGPU.size.depthOrArrayLayers : 1;
590
619
 
591
620
  const bytesPerRow = Math.ceil( width / blockData.width ) * blockData.byteLength;
621
+ const bytesPerImage = bytesPerRow * Math.ceil( height / blockData.height );
622
+
623
+ for ( let j = 0; j < depth; j ++ ) {
624
+
625
+ device.queue.writeTexture(
626
+ {
627
+ texture: textureGPU,
628
+ mipLevel: i,
629
+ origin: { x: 0, y: 0, z: j }
630
+ },
631
+ mipmap.data,
632
+ {
633
+ offset: j * bytesPerImage,
634
+ bytesPerRow,
635
+ rowsPerImage: Math.ceil( height / blockData.height )
636
+ },
637
+ {
638
+ width: Math.ceil( width / blockData.width ) * blockData.width,
639
+ height: Math.ceil( height / blockData.height ) * blockData.height,
640
+ depthOrArrayLayers: 1
641
+ }
642
+ );
592
643
 
593
- device.queue.writeTexture(
594
- {
595
- texture: textureGPU,
596
- mipLevel: i
597
- },
598
- mipmap.data,
599
- {
600
- offset: 0,
601
- bytesPerRow
602
- },
603
- {
604
- width: Math.ceil( width / blockData.width ) * blockData.width,
605
- height: Math.ceil( height / blockData.width ) * blockData.width,
606
- depthOrArrayLayers: 1
607
- }
608
- );
644
+ }
609
645
 
610
646
  }
611
647
 
@@ -758,9 +794,9 @@ class WebGPUTextureUtils {
758
794
  if ( format === GPUTextureFormat.RG16Sint ) return Int16Array;
759
795
  if ( format === GPUTextureFormat.RGBA16Uint ) return Uint16Array;
760
796
  if ( format === GPUTextureFormat.RGBA16Sint ) return Int16Array;
761
- if ( format === GPUTextureFormat.R16Float ) return Float32Array;
762
- if ( format === GPUTextureFormat.RG16Float ) return Float32Array;
763
- if ( format === GPUTextureFormat.RGBA16Float ) return Float32Array;
797
+ if ( format === GPUTextureFormat.R16Float ) return Uint16Array;
798
+ if ( format === GPUTextureFormat.RG16Float ) return Uint16Array;
799
+ if ( format === GPUTextureFormat.RGBA16Float ) return Uint16Array;
764
800
 
765
801
 
766
802
  if ( format === GPUTextureFormat.R32Uint ) return Uint32Array;
@@ -818,7 +854,7 @@ export function getFormat( texture, device = null ) {
818
854
 
819
855
  formatGPU = GPUTextureFormat.BGRA8Unorm;
820
856
 
821
- } else if ( texture.isCompressedTexture === true ) {
857
+ } else if ( texture.isCompressedTexture === true || texture.isCompressedArrayTexture === true ) {
822
858
 
823
859
  switch ( format ) {
824
860
 
@@ -911,6 +947,25 @@ export function getFormat( texture, device = null ) {
911
947
 
912
948
  switch ( type ) {
913
949
 
950
+ case ByteType:
951
+ formatGPU = GPUTextureFormat.RGBA8Snorm;
952
+ break;
953
+
954
+ case ShortType:
955
+ formatGPU = GPUTextureFormat.RGBA16Sint;
956
+ break;
957
+
958
+ case UnsignedShortType:
959
+ formatGPU = GPUTextureFormat.RGBA16Uint;
960
+ break;
961
+ case UnsignedIntType:
962
+ formatGPU = GPUTextureFormat.RGBA32Uint;
963
+ break;
964
+
965
+ case IntType:
966
+ formatGPU = GPUTextureFormat.RGBA32Sint;
967
+ break;
968
+
914
969
  case UnsignedByteType:
915
970
  formatGPU = ( colorSpace === SRGBColorSpace ) ? GPUTextureFormat.RGBA8UnormSRGB : GPUTextureFormat.RGBA8Unorm;
916
971
  break;
@@ -930,10 +985,45 @@ export function getFormat( texture, device = null ) {
930
985
 
931
986
  break;
932
987
 
988
+ case RGBFormat:
989
+
990
+ switch ( type ) {
991
+
992
+ case UnsignedInt5999Type:
993
+ formatGPU = GPUTextureFormat.RGB9E5UFloat;
994
+ break;
995
+
996
+ default:
997
+ console.error( 'WebGPURenderer: Unsupported texture type with RGBFormat.', type );
998
+
999
+ }
1000
+
1001
+ break;
1002
+
933
1003
  case RedFormat:
934
1004
 
935
1005
  switch ( type ) {
936
1006
 
1007
+ case ByteType:
1008
+ formatGPU = GPUTextureFormat.R8Snorm;
1009
+ break;
1010
+
1011
+ case ShortType:
1012
+ formatGPU = GPUTextureFormat.R16Sint;
1013
+ break;
1014
+
1015
+ case UnsignedShortType:
1016
+ formatGPU = GPUTextureFormat.R16Uint;
1017
+ break;
1018
+
1019
+ case UnsignedIntType:
1020
+ formatGPU = GPUTextureFormat.R32Uint;
1021
+ break;
1022
+
1023
+ case IntType:
1024
+ formatGPU = GPUTextureFormat.R32Sint;
1025
+ break;
1026
+
937
1027
  case UnsignedByteType:
938
1028
  formatGPU = GPUTextureFormat.R8Unorm;
939
1029
  break;
@@ -957,6 +1047,26 @@ export function getFormat( texture, device = null ) {
957
1047
 
958
1048
  switch ( type ) {
959
1049
 
1050
+ case ByteType:
1051
+ formatGPU = GPUTextureFormat.RG8Snorm;
1052
+ break;
1053
+
1054
+ case ShortType:
1055
+ formatGPU = GPUTextureFormat.RG16Sint;
1056
+ break;
1057
+
1058
+ case UnsignedShortType:
1059
+ formatGPU = GPUTextureFormat.RG16Uint;
1060
+ break;
1061
+
1062
+ case UnsignedIntType:
1063
+ formatGPU = GPUTextureFormat.RG32Uint;
1064
+ break;
1065
+
1066
+ case IntType:
1067
+ formatGPU = GPUTextureFormat.RG32Sint;
1068
+ break;
1069
+
960
1070
  case UnsignedByteType:
961
1071
  formatGPU = GPUTextureFormat.RG8Unorm;
962
1072
  break;
@@ -1026,6 +1136,63 @@ export function getFormat( texture, device = null ) {
1026
1136
 
1027
1137
  break;
1028
1138
 
1139
+ case RedIntegerFormat:
1140
+
1141
+ switch ( type ) {
1142
+
1143
+ case IntType:
1144
+ formatGPU = GPUTextureFormat.R32Sint;
1145
+ break;
1146
+
1147
+ case UnsignedIntType:
1148
+ formatGPU = GPUTextureFormat.R32Uint;
1149
+ break;
1150
+
1151
+ default:
1152
+ console.error( 'WebGPURenderer: Unsupported texture type with RedIntegerFormat.', type );
1153
+
1154
+ }
1155
+
1156
+ break;
1157
+
1158
+ case RGIntegerFormat:
1159
+
1160
+ switch ( type ) {
1161
+
1162
+ case IntType:
1163
+ formatGPU = GPUTextureFormat.RG32Sint;
1164
+ break;
1165
+
1166
+ case UnsignedIntType:
1167
+ formatGPU = GPUTextureFormat.RG32Uint;
1168
+ break;
1169
+
1170
+ default:
1171
+ console.error( 'WebGPURenderer: Unsupported texture type with RGIntegerFormat.', type );
1172
+
1173
+ }
1174
+
1175
+ break;
1176
+
1177
+ case RGBAIntegerFormat:
1178
+
1179
+ switch ( type ) {
1180
+
1181
+ case IntType:
1182
+ formatGPU = GPUTextureFormat.RGBA32Sint;
1183
+ break;
1184
+
1185
+ case UnsignedIntType:
1186
+ formatGPU = GPUTextureFormat.RGBA32Uint;
1187
+ break;
1188
+
1189
+ default:
1190
+ console.error( 'WebGPURenderer: Unsupported texture type with RGBAIntegerFormat.', type );
1191
+
1192
+ }
1193
+
1194
+ break;
1195
+
1029
1196
  default:
1030
1197
  console.error( 'WebGPURenderer: Unsupported texture format.', format );
1031
1198
 
@@ -32,7 +32,7 @@ class WebGPUUtils {
32
32
 
33
33
  getTextureFormatGPU( texture ) {
34
34
 
35
- return this.backend.get( texture ).texture.format;
35
+ return this.backend.get( texture ).format;
36
36
 
37
37
  }
38
38
 
@@ -47,7 +47,7 @@ class WebGPUUtils {
47
47
 
48
48
  } else {
49
49
 
50
- format = GPUTextureFormat.BGRA8Unorm; // default context format
50
+ format = this.getPreferredCanvasFormat(); // default context format
51
51
 
52
52
  }
53
53
 
@@ -76,15 +76,53 @@ class WebGPUUtils {
76
76
 
77
77
  }
78
78
 
79
- getSampleCount( renderContext ) {
79
+ getSampleCount( sampleCount ) {
80
+
81
+ let count = 1;
82
+
83
+ if ( sampleCount > 1 ) {
84
+
85
+ // WebGPU only supports power-of-two sample counts and 2 is not a valid value
86
+ count = Math.pow( 2, Math.floor( Math.log2( sampleCount ) ) );
87
+
88
+ if ( count === 2 ) {
89
+
90
+ count = 4;
91
+
92
+ }
93
+
94
+ }
95
+
96
+ return count;
97
+
98
+ }
99
+
100
+ getSampleCountRenderContext( renderContext ) {
80
101
 
81
102
  if ( renderContext.textures !== null ) {
82
103
 
83
- return renderContext.sampleCount;
104
+ return this.getSampleCount( renderContext.sampleCount );
84
105
 
85
106
  }
86
107
 
87
- return this.backend.parameters.sampleCount;
108
+ return this.getSampleCount( this.backend.renderer.samples );
109
+
110
+ }
111
+
112
+ getPreferredCanvasFormat() {
113
+
114
+ // TODO: Remove this check when Quest 34.5 is out
115
+ // https://github.com/mrdoob/three.js/pull/29221/files#r1731833949
116
+
117
+ if ( navigator.userAgent.includes( 'Quest' ) ) {
118
+
119
+ return GPUTextureFormat.BGRA8Unorm;
120
+
121
+ } else {
122
+
123
+ return navigator.gpu.getPreferredCanvasFormat();
124
+
125
+ }
88
126
 
89
127
  }
90
128