super-three 0.152.0 → 0.154.1

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 (339) hide show
  1. package/build/three.cjs +778 -557
  2. package/build/three.js +778 -557
  3. package/build/three.min.js +1 -1
  4. package/build/three.module.js +769 -539
  5. package/build/three.module.min.js +1 -1
  6. package/examples/jsm/cameras/CinematicCamera.js +1 -2
  7. package/examples/jsm/capabilities/WebGPU.js +15 -1
  8. package/examples/jsm/controls/ArcballControls.js +2 -1
  9. package/examples/jsm/controls/FlyControls.js +25 -9
  10. package/examples/jsm/controls/OrbitControls.js +5 -1
  11. package/examples/jsm/csm/CSM.js +1 -3
  12. package/examples/jsm/effects/AnaglyphEffect.js +6 -20
  13. package/examples/jsm/effects/OutlineEffect.js +1 -1
  14. package/examples/jsm/effects/ParallaxBarrierEffect.js +3 -0
  15. package/examples/jsm/environments/RoomEnvironment.js +6 -2
  16. package/examples/jsm/exporters/GLTFExporter.js +74 -2
  17. package/examples/jsm/exporters/USDZExporter.js +170 -129
  18. package/examples/jsm/helpers/ViewHelper.js +1 -1
  19. package/examples/jsm/lines/LineMaterial.js +1 -1
  20. package/examples/jsm/loaders/3DMLoader.js +1 -1
  21. package/examples/jsm/loaders/3MFLoader.js +5 -1
  22. package/examples/jsm/loaders/AMFLoader.js +5 -1
  23. package/examples/jsm/loaders/ColladaLoader.js +4 -1
  24. package/examples/jsm/loaders/DRACOLoader.js +2 -0
  25. package/examples/jsm/loaders/FBXLoader.js +9 -2
  26. package/examples/jsm/loaders/GLTFLoader.js +230 -94
  27. package/examples/jsm/loaders/KTX2Loader.js +106 -47
  28. package/examples/jsm/loaders/LDrawLoader.js +4 -7
  29. package/examples/jsm/loaders/MMDLoader.js +40 -13
  30. package/examples/jsm/loaders/PCDLoader.js +25 -10
  31. package/examples/jsm/loaders/PDBLoader.js +7 -2
  32. package/examples/jsm/loaders/PLYLoader.js +30 -8
  33. package/examples/jsm/loaders/STLLoader.js +8 -3
  34. package/examples/jsm/loaders/VRMLLoader.js +55 -7
  35. package/examples/jsm/loaders/VTKLoader.js +12 -4
  36. package/examples/jsm/loaders/XYZLoader.js +9 -3
  37. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -2
  38. package/examples/jsm/math/Lut.js +5 -4
  39. package/examples/jsm/math/MeshSurfaceSampler.js +82 -37
  40. package/examples/jsm/misc/GPUComputationRenderer.js +1 -0
  41. package/examples/jsm/misc/VolumeSlice.js +3 -1
  42. package/examples/jsm/nodes/Nodes.js +22 -16
  43. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +99 -0
  44. package/examples/jsm/nodes/accessors/BufferNode.js +2 -2
  45. package/examples/jsm/nodes/accessors/CameraNode.js +25 -4
  46. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +7 -1
  47. package/examples/jsm/nodes/accessors/InstanceNode.js +29 -12
  48. package/examples/jsm/nodes/accessors/MaterialNode.js +55 -47
  49. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +2 -2
  50. package/examples/jsm/nodes/accessors/ModelNode.js +3 -1
  51. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +4 -9
  52. package/examples/jsm/nodes/accessors/MorphNode.js +70 -0
  53. package/examples/jsm/nodes/accessors/NormalNode.js +3 -2
  54. package/examples/jsm/nodes/accessors/Object3DNode.js +10 -2
  55. package/examples/jsm/nodes/accessors/ReferenceNode.js +2 -2
  56. package/examples/jsm/nodes/accessors/SceneNode.js +46 -0
  57. package/examples/jsm/nodes/accessors/SkinningNode.js +43 -62
  58. package/examples/jsm/nodes/accessors/StorageBufferNode.js +2 -2
  59. package/examples/jsm/nodes/accessors/TangentNode.js +2 -2
  60. package/examples/jsm/nodes/accessors/TextureBicubicNode.js +94 -0
  61. package/examples/jsm/nodes/accessors/TextureNode.js +68 -6
  62. package/examples/jsm/nodes/accessors/TextureSizeNode.js +35 -0
  63. package/examples/jsm/nodes/accessors/UVNode.js +1 -1
  64. package/examples/jsm/nodes/code/CodeNode.js +3 -0
  65. package/examples/jsm/nodes/code/FunctionNode.js +25 -4
  66. package/examples/jsm/nodes/core/AttributeNode.js +1 -1
  67. package/examples/jsm/nodes/core/BypassNode.js +2 -2
  68. package/examples/jsm/nodes/core/ContextNode.js +2 -0
  69. package/examples/jsm/nodes/core/IndexNode.js +66 -0
  70. package/examples/jsm/nodes/core/LightingModel.js +2 -1
  71. package/examples/jsm/nodes/core/Node.js +13 -16
  72. package/examples/jsm/nodes/core/NodeAttribute.js +2 -1
  73. package/examples/jsm/nodes/core/NodeBuilder.js +86 -8
  74. package/examples/jsm/nodes/core/NodeUtils.js +10 -0
  75. package/examples/jsm/nodes/core/PropertyNode.js +6 -2
  76. package/examples/jsm/nodes/core/StackNode.js +8 -1
  77. package/examples/jsm/nodes/core/UniformNode.js +1 -1
  78. package/examples/jsm/nodes/core/VarNode.js +1 -3
  79. package/examples/jsm/nodes/display/BlendModeNode.js +9 -9
  80. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +7 -7
  81. package/examples/jsm/nodes/display/ColorSpaceNode.js +50 -49
  82. package/examples/jsm/nodes/display/NormalMapNode.js +3 -3
  83. package/examples/jsm/nodes/display/ToneMappingNode.js +24 -15
  84. package/examples/jsm/nodes/display/ViewportDepthNode.js +69 -0
  85. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +34 -0
  86. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +7 -6
  87. package/examples/jsm/nodes/display/ViewportTextureNode.js +33 -19
  88. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +5 -5
  89. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -8
  90. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  91. package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +43 -0
  92. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +4 -4
  93. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +2 -2
  94. package/examples/jsm/nodes/functions/BSDF/EnvironmentBRDF.js +13 -0
  95. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +2 -4
  96. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  97. package/examples/jsm/nodes/functions/PhongLightingModel.js +7 -7
  98. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +132 -19
  99. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +2 -2
  100. package/examples/jsm/nodes/functions/material/getRoughness.js +3 -3
  101. package/examples/jsm/nodes/geometry/RangeNode.js +33 -51
  102. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +6 -3
  103. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +2 -2
  104. package/examples/jsm/nodes/lighting/EnvironmentNode.js +107 -62
  105. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +2 -2
  106. package/examples/jsm/nodes/lighting/LightUtils.js +2 -2
  107. package/examples/jsm/nodes/lighting/LightingContextNode.js +17 -15
  108. package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
  109. package/examples/jsm/nodes/lighting/SpotLightNode.js +3 -3
  110. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -15
  111. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -15
  112. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -10
  113. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -9
  114. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +41 -0
  115. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +1 -14
  116. package/examples/jsm/nodes/materials/NodeMaterial.js +119 -29
  117. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -9
  118. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -7
  119. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +3 -3
  120. package/examples/jsm/nodes/materialx/lib/mx_noise.js +14 -14
  121. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +4 -4
  122. package/examples/jsm/nodes/math/MathNode.js +6 -0
  123. package/examples/jsm/nodes/math/OperatorNode.js +1 -1
  124. package/examples/jsm/nodes/procedural/CheckerNode.js +3 -3
  125. package/examples/jsm/nodes/shadernode/ShaderNode.js +60 -33
  126. package/examples/jsm/nodes/utils/EquirectUVNode.js +2 -3
  127. package/examples/jsm/nodes/utils/LoopNode.js +186 -0
  128. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +1 -1
  129. package/examples/jsm/objects/GroundProjectedSkybox.js +1 -1
  130. package/examples/jsm/objects/Lensflare.js +3 -4
  131. package/examples/jsm/objects/MarchingCubes.js +5 -1
  132. package/examples/jsm/objects/Reflector.js +4 -1
  133. package/examples/jsm/objects/Refractor.js +1 -1
  134. package/examples/jsm/objects/Sky.js +1 -1
  135. package/examples/jsm/objects/Water.js +2 -1
  136. package/examples/jsm/objects/Water2.js +1 -1
  137. package/examples/jsm/offscreen/scene.js +1 -0
  138. package/examples/jsm/physics/RapierPhysics.js +93 -133
  139. package/examples/jsm/postprocessing/AfterimagePass.js +3 -0
  140. package/examples/jsm/postprocessing/BloomPass.js +7 -2
  141. package/examples/jsm/postprocessing/BokehPass.js +3 -2
  142. package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
  143. package/examples/jsm/postprocessing/EffectComposer.js +4 -1
  144. package/examples/jsm/postprocessing/FilmPass.js +1 -0
  145. package/examples/jsm/postprocessing/OutlinePass.js +8 -9
  146. package/examples/jsm/postprocessing/OutputPass.js +72 -0
  147. package/examples/jsm/postprocessing/RenderPixelatedPass.js +4 -3
  148. package/examples/jsm/postprocessing/SAOPass.js +4 -2
  149. package/examples/jsm/postprocessing/SMAAPass.js +5 -2
  150. package/examples/jsm/postprocessing/SSAARenderPass.js +5 -13
  151. package/examples/jsm/postprocessing/SSAOPass.js +4 -2
  152. package/examples/jsm/postprocessing/SSRPass.js +3 -1
  153. package/examples/jsm/postprocessing/SavePass.js +5 -2
  154. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  155. package/examples/jsm/postprocessing/TAARenderPass.js +17 -4
  156. package/examples/jsm/postprocessing/TexturePass.js +2 -1
  157. package/examples/jsm/postprocessing/UnrealBloomPass.js +13 -13
  158. package/examples/jsm/renderers/{webgpu/WebGPUAnimation.js → common/Animation.js} +2 -2
  159. package/examples/jsm/renderers/common/Attributes.js +75 -0
  160. package/examples/jsm/renderers/common/Backend.js +162 -0
  161. package/examples/jsm/renderers/common/Background.js +134 -0
  162. package/examples/jsm/renderers/common/Binding.js +11 -0
  163. package/examples/jsm/renderers/common/Bindings.js +169 -0
  164. package/examples/jsm/renderers/common/Buffer.js +38 -0
  165. package/examples/jsm/renderers/{webgpu/WebGPUBufferUtils.js → common/BufferUtils.js} +2 -2
  166. package/examples/jsm/renderers/{webgpu/WebGPUWeakMap.js → common/ChainMap.js} +11 -5
  167. package/examples/jsm/renderers/common/ComputePipeline.js +17 -0
  168. package/examples/jsm/renderers/common/Constants.js +14 -0
  169. package/examples/jsm/renderers/common/CubeRenderTarget.js +65 -0
  170. package/examples/jsm/renderers/common/DataMap.js +54 -0
  171. package/examples/jsm/renderers/{webgpu/WebGPUGeometries.js → common/Geometries.js} +38 -37
  172. package/examples/jsm/renderers/{webgpu/WebGPUInfo.js → common/Info.js} +2 -3
  173. package/examples/jsm/renderers/common/Pipeline.js +13 -0
  174. package/examples/jsm/renderers/common/Pipelines.js +321 -0
  175. package/examples/jsm/renderers/common/ProgrammableStage.js +18 -0
  176. package/examples/jsm/renderers/common/RenderContext.js +37 -0
  177. package/examples/jsm/renderers/common/RenderContexts.js +38 -0
  178. package/examples/jsm/renderers/{webgpu/WebGPURenderLists.js → common/RenderList.js} +2 -39
  179. package/examples/jsm/renderers/common/RenderLists.js +38 -0
  180. package/examples/jsm/renderers/common/RenderObject.js +113 -0
  181. package/examples/jsm/renderers/common/RenderObjects.js +92 -0
  182. package/examples/jsm/renderers/common/RenderPipeline.js +16 -0
  183. package/examples/jsm/renderers/{webgpu/WebGPURenderTarget.js → common/RenderTarget.js} +2 -2
  184. package/examples/jsm/renderers/common/Renderer.js +864 -0
  185. package/examples/jsm/renderers/common/SampledTexture.js +80 -0
  186. package/examples/jsm/renderers/common/Sampler.js +18 -0
  187. package/examples/jsm/renderers/common/StorageBuffer.js +17 -0
  188. package/examples/jsm/renderers/common/Textures.js +206 -0
  189. package/examples/jsm/renderers/{webgpu/WebGPUUniform.js → common/Uniform.js} +13 -9
  190. package/examples/jsm/renderers/common/UniformBuffer.js +15 -0
  191. package/examples/jsm/renderers/{webgpu/WebGPUUniformsGroup.js → common/UniformsGroup.js} +13 -13
  192. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodes.js → common/nodes/NodeRender.js} +3 -3
  193. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampledTexture.js → common/nodes/NodeSampledTexture.js} +4 -4
  194. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampler.js → common/nodes/NodeSampler.js} +3 -3
  195. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeUniform.js → common/nodes/NodeUniform.js} +1 -1
  196. package/examples/jsm/renderers/common/nodes/Nodes.js +319 -0
  197. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +340 -0
  198. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +23 -19
  199. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +847 -0
  200. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +15 -1131
  201. package/examples/jsm/renderers/webgpu/nodes/{WebGPUNodeBuilder.js → WGSLNodeBuilder.js} +75 -45
  202. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeFunction.js +2 -2
  203. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeParser.js +1 -1
  204. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +255 -0
  205. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +145 -0
  206. package/examples/jsm/renderers/webgpu/{constants.js → utils/WebGPUConstants.js} +6 -7
  207. package/examples/jsm/renderers/webgpu/{WebGPURenderPipeline.js → utils/WebGPUPipelineUtils.js} +154 -247
  208. package/examples/jsm/renderers/webgpu/{WebGPUTextureUtils.js → utils/WebGPUTextureMipmapUtils.js} +3 -25
  209. package/examples/jsm/renderers/webgpu/{WebGPUTextures.js → utils/WebGPUTextureUtils.js} +392 -505
  210. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +92 -0
  211. package/examples/jsm/shaders/BleachBypassShader.js +2 -0
  212. package/examples/jsm/shaders/BlendShader.js +1 -2
  213. package/examples/jsm/shaders/BokehShader2.js +3 -0
  214. package/examples/jsm/shaders/ColorifyShader.js +2 -0
  215. package/examples/jsm/shaders/ConvolutionShader.js +2 -0
  216. package/examples/jsm/shaders/CopyShader.js +4 -2
  217. package/examples/jsm/shaders/DotScreenShader.js +2 -0
  218. package/examples/jsm/shaders/ExposureShader.js +44 -0
  219. package/examples/jsm/shaders/FilmShader.js +2 -0
  220. package/examples/jsm/shaders/GammaCorrectionShader.js +2 -0
  221. package/examples/jsm/shaders/HorizontalBlurShader.js +2 -0
  222. package/examples/jsm/shaders/OutputShader.js +61 -0
  223. package/examples/jsm/shaders/RGBShiftShader.js +2 -0
  224. package/examples/jsm/shaders/SepiaShader.js +2 -0
  225. package/examples/jsm/shaders/ToonShader.js +13 -5
  226. package/examples/jsm/shaders/VerticalBlurShader.js +2 -0
  227. package/examples/jsm/shaders/VignetteShader.js +2 -0
  228. package/examples/jsm/shaders/WaterRefractionShader.js +5 -2
  229. package/examples/jsm/utils/BufferGeometryUtils.js +17 -1
  230. package/examples/jsm/utils/TextureUtils.js +86 -0
  231. package/examples/jsm/webxr/OculusHandPointerModel.js +34 -13
  232. package/examples/jsm/webxr/XRHandPrimitiveModel.js +1 -0
  233. package/examples/jsm/webxr/XRPlanes.js +100 -0
  234. package/package.json +3 -1
  235. package/src/Three.Legacy.js +0 -228
  236. package/src/audio/PositionalAudio.js +8 -0
  237. package/src/cameras/Camera.js +5 -0
  238. package/src/cameras/CubeCamera.js +76 -13
  239. package/src/cameras/OrthographicCamera.js +1 -1
  240. package/src/cameras/PerspectiveCamera.js +1 -1
  241. package/src/constants.js +13 -1
  242. package/src/core/BufferAttribute.js +3 -25
  243. package/src/core/BufferGeometry.js +1 -8
  244. package/src/core/Object3D.js +1 -1
  245. package/src/extras/core/Curve.js +1 -1
  246. package/src/loaders/CubeTextureLoader.js +2 -0
  247. package/src/loaders/Loader.js +2 -0
  248. package/src/loaders/MaterialLoader.js +5 -0
  249. package/src/loaders/ObjectLoader.js +1 -0
  250. package/src/materials/Material.js +13 -1
  251. package/src/materials/MeshPhysicalMaterial.js +32 -6
  252. package/src/math/Color.js +16 -11
  253. package/src/math/Frustum.js +16 -2
  254. package/src/math/MathUtils.js +16 -0
  255. package/src/math/Matrix3.js +26 -6
  256. package/src/math/Matrix4.js +74 -19
  257. package/src/objects/InstancedMesh.js +3 -0
  258. package/src/objects/Mesh.js +14 -10
  259. package/src/objects/Skeleton.js +1 -3
  260. package/src/objects/SkinnedMesh.js +36 -8
  261. package/src/renderers/WebGLRenderer.js +126 -21
  262. package/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -0
  263. package/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -0
  264. package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +6 -0
  265. package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -0
  266. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +26 -3
  267. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +9 -1
  268. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +26 -0
  269. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -2
  270. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +10 -2
  271. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +1 -1
  272. package/src/renderers/shaders/ShaderChunk/{output_fragment.glsl.js → opaque_fragment.glsl.js} +1 -2
  273. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  274. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +3 -3
  275. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +10 -5
  276. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +6 -1
  277. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +7 -1
  278. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +6 -1
  279. package/src/renderers/shaders/ShaderChunk.js +10 -6
  280. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  281. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -1
  282. package/src/renderers/shaders/ShaderLib/cube.glsl.js +1 -1
  283. package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
  284. package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
  285. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -1
  286. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -2
  287. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +4 -2
  288. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +4 -2
  289. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +4 -2
  290. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +4 -2
  291. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +12 -2
  292. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +4 -2
  293. package/src/renderers/shaders/ShaderLib/points.glsl.js +4 -2
  294. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  295. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +4 -2
  296. package/src/renderers/shaders/ShaderLib.js +4 -1
  297. package/src/renderers/shaders/UniformsLib.js +2 -0
  298. package/src/renderers/webgl/WebGLBindingStates.js +13 -5
  299. package/src/renderers/webgl/WebGLGeometries.js +12 -0
  300. package/src/renderers/webgl/WebGLInfo.js +0 -1
  301. package/src/renderers/webgl/WebGLMaterials.js +18 -0
  302. package/src/renderers/webgl/WebGLObjects.js +23 -3
  303. package/src/renderers/webgl/WebGLProgram.js +43 -5
  304. package/src/renderers/webgl/WebGLPrograms.js +19 -7
  305. package/src/renderers/webgl/WebGLTextures.js +19 -1
  306. package/src/renderers/webvr/WebVRManager.js +12 -0
  307. package/src/renderers/webxr/WebXRManager.js +39 -99
  308. package/src/scenes/Scene.js +0 -14
  309. package/src/textures/DepthTexture.js +22 -0
  310. package/src/textures/FramebufferTexture.js +1 -3
  311. package/src/textures/Source.js +4 -0
  312. package/src/textures/Texture.js +1 -1
  313. package/examples/jsm/exporters/ColladaExporter.js +0 -725
  314. package/examples/jsm/geometries/LightningStrike.js +0 -1017
  315. package/examples/jsm/loaders/PRWMLoader.js +0 -299
  316. package/examples/jsm/nodes/core/InstanceIndexNode.js +0 -26
  317. package/examples/jsm/objects/LightningStorm.js +0 -245
  318. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +0 -361
  319. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +0 -197
  320. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +0 -190
  321. package/examples/jsm/renderers/webgpu/WebGPUBinding.js +0 -22
  322. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +0 -270
  323. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +0 -43
  324. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +0 -78
  325. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +0 -22
  326. package/examples/jsm/renderers/webgpu/WebGPUProperties.js +0 -44
  327. package/examples/jsm/renderers/webgpu/WebGPURenderObject.js +0 -40
  328. package/examples/jsm/renderers/webgpu/WebGPURenderObjects.js +0 -50
  329. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +0 -274
  330. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +0 -54
  331. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +0 -75
  332. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +0 -29
  333. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +0 -20
  334. package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +0 -38
  335. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +0 -18
  336. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +0 -88
  337. package/examples/jsm/shaders/ToneMapShader.js +0 -73
  338. /package/src/renderers/shaders/ShaderChunk/{encodings_fragment.glsl.js → colorspace_fragment.glsl.js} +0 -0
  339. /package/src/renderers/shaders/ShaderChunk/{encodings_pars_fragment.glsl.js → colorspace_pars_fragment.glsl.js} +0 -0
@@ -0,0 +1,80 @@
1
+ import Binding from './Binding.js';
2
+
3
+ let id = 0;
4
+
5
+ class SampledTexture extends Binding {
6
+
7
+ constructor( name, texture ) {
8
+
9
+ super( name );
10
+
11
+ this.id = id ++;
12
+
13
+ this.texture = texture;
14
+ this.version = texture.version;
15
+
16
+ this.isSampledTexture = true;
17
+
18
+ }
19
+
20
+ get needsBindingsUpdate() {
21
+
22
+ const { texture, version } = this;
23
+
24
+ return texture.isVideoTexture ? true : version !== texture.version; // @TODO: version === 0 && texture.version > 0 ( add it just to External Textures like PNG,JPG )
25
+
26
+ }
27
+
28
+ update() {
29
+
30
+ if ( this.version !== this.texture.version ) {
31
+
32
+ this.version = this.texture.version;
33
+
34
+ return true;
35
+
36
+ }
37
+
38
+ return false;
39
+
40
+ }
41
+
42
+ }
43
+
44
+ class SampledArrayTexture extends SampledTexture {
45
+
46
+ constructor( name, texture ) {
47
+
48
+ super( name, texture );
49
+
50
+ this.isSampledArrayTexture = true;
51
+
52
+ }
53
+
54
+ }
55
+
56
+ class Sampled3DTexture extends SampledTexture {
57
+
58
+ constructor( name, texture ) {
59
+
60
+ super( name, texture );
61
+
62
+ this.isSampled3DTexture = true;
63
+
64
+ }
65
+
66
+ }
67
+
68
+ class SampledCubeTexture extends SampledTexture {
69
+
70
+ constructor( name, texture ) {
71
+
72
+ super( name, texture );
73
+
74
+ this.isSampledCubeTexture = true;
75
+
76
+ }
77
+
78
+ }
79
+
80
+ export { SampledTexture, SampledArrayTexture, Sampled3DTexture, SampledCubeTexture };
@@ -0,0 +1,18 @@
1
+ import Binding from './Binding.js';
2
+
3
+ class Sampler extends Binding {
4
+
5
+ constructor( name, texture ) {
6
+
7
+ super( name );
8
+
9
+ this.texture = texture;
10
+ this.version = texture.version;
11
+
12
+ this.isSampler = true;
13
+
14
+ }
15
+
16
+ }
17
+
18
+ export default Sampler;
@@ -0,0 +1,17 @@
1
+ import Buffer from './Buffer.js';
2
+
3
+ class StorageBuffer extends Buffer {
4
+
5
+ constructor( name, attribute ) {
6
+
7
+ super( name, attribute.array );
8
+
9
+ this.attribute = attribute;
10
+
11
+ this.isStorageBuffer = true;
12
+
13
+ }
14
+
15
+ }
16
+
17
+ export default StorageBuffer;
@@ -0,0 +1,206 @@
1
+ import DataMap from './DataMap.js';
2
+ import { Vector2, DepthTexture, DepthStencilFormat, UnsignedInt248Type } from 'three';
3
+
4
+ const _size = new Vector2();
5
+
6
+ class Textures extends DataMap {
7
+
8
+ constructor( backend, info ) {
9
+
10
+ super();
11
+
12
+ this.backend = backend;
13
+ this.info = info;
14
+
15
+ }
16
+
17
+ updateRenderTarget( renderTarget ) {
18
+
19
+ const renderTargetData = this.get( renderTarget );
20
+
21
+ const texture = renderTarget.texture;
22
+ const size = this.getSize( texture );
23
+
24
+ let depthTexture = renderTarget.depthTexture || renderTargetData.depthTexture;
25
+
26
+ if ( depthTexture === undefined ) {
27
+
28
+ depthTexture = new DepthTexture();
29
+ depthTexture.format = DepthStencilFormat;
30
+ depthTexture.type = UnsignedInt248Type;
31
+ depthTexture.image.width = size.width;
32
+ depthTexture.image.height = size.height;
33
+
34
+ }
35
+
36
+ if ( renderTargetData.width !== size.width || size.height !== renderTargetData.height ) {
37
+
38
+ texture.needsUpdate = true;
39
+ depthTexture.needsUpdate = true;
40
+
41
+ depthTexture.image.width = size.width;
42
+ depthTexture.image.height = size.height;
43
+
44
+ }
45
+
46
+ renderTargetData.width = size.width;
47
+ renderTargetData.height = size.height;
48
+ renderTargetData.texture = texture;
49
+ renderTargetData.depthTexture = depthTexture;
50
+
51
+ this.updateTexture( texture );
52
+ this.updateTexture( depthTexture );
53
+
54
+ // dispose handler
55
+
56
+ if ( renderTargetData.initialized !== true ) {
57
+
58
+ renderTargetData.initialized = true;
59
+
60
+ // dispose
61
+
62
+ const onDispose = () => {
63
+
64
+ renderTarget.removeEventListener( 'dispose', onDispose );
65
+
66
+ this._destroyTexture( texture );
67
+ this._destroyTexture( depthTexture );
68
+
69
+ };
70
+
71
+ renderTarget.addEventListener( 'dispose', onDispose );
72
+
73
+ }
74
+
75
+ }
76
+
77
+ updateTexture( texture ) {
78
+
79
+ const textureData = this.get( texture );
80
+ if ( textureData.initialized === true && textureData.version === texture.version ) return;
81
+
82
+ const isRenderTexture = texture.isRenderTargetTexture || texture.isDepthTexture || texture.isFramebufferTexture;
83
+ const backend = this.backend;
84
+
85
+ if ( isRenderTexture && textureData.initialized === true ) {
86
+
87
+ // it's an update
88
+
89
+ backend.destroySampler( texture );
90
+ backend.destroyTexture( texture );
91
+
92
+ }
93
+
94
+ //
95
+
96
+ if ( isRenderTexture ) {
97
+
98
+ backend.createSampler( texture );
99
+ backend.createTexture( texture );
100
+
101
+ } else {
102
+
103
+ const needsCreate = textureData.initialized !== true;
104
+
105
+ if ( needsCreate ) backend.createSampler( texture );
106
+
107
+ if ( texture.version > 0 ) {
108
+
109
+ const image = texture.image;
110
+
111
+ if ( image === undefined ) {
112
+
113
+ console.warn( 'THREE.Renderer: Texture marked for update but image is undefined.' );
114
+
115
+ } else if ( image.complete === false ) {
116
+
117
+ console.warn( 'THREE.Renderer: Texture marked for update but image is incomplete.' );
118
+
119
+ } else {
120
+
121
+ if ( textureData.isDefaultTexture === undefined || textureData.isDefaultTexture === true ) {
122
+
123
+ backend.createTexture( texture );
124
+
125
+ textureData.isDefaultTexture = false;
126
+
127
+ }
128
+
129
+ backend.updateTexture( texture );
130
+
131
+ }
132
+
133
+ } else {
134
+
135
+ // async update
136
+
137
+ backend.createDefaultTexture( texture );
138
+
139
+ textureData.isDefaultTexture = true;
140
+
141
+ }
142
+
143
+ }
144
+
145
+ // dispose handler
146
+
147
+ if ( textureData.initialized !== true ) {
148
+
149
+ textureData.initialized = true;
150
+
151
+ //
152
+
153
+ this.info.memory.textures ++;
154
+
155
+ // dispose
156
+
157
+ const onDispose = () => {
158
+
159
+ texture.removeEventListener( 'dispose', onDispose );
160
+
161
+ this._destroyTexture( texture );
162
+
163
+ this.info.memory.textures --;
164
+
165
+ };
166
+
167
+ texture.addEventListener( 'dispose', onDispose );
168
+
169
+ }
170
+
171
+ //
172
+
173
+ textureData.version = texture.version;
174
+
175
+ }
176
+
177
+ getSize( texture, target = _size ) {
178
+
179
+ if ( texture.isCubeTexture ) {
180
+
181
+ target.width = texture.image[ 0 ].width;
182
+ target.height = texture.image[ 0 ].height;
183
+
184
+ } else {
185
+
186
+ target.width = texture.image.width;
187
+ target.height = texture.image.height;
188
+
189
+ }
190
+
191
+ return target;
192
+
193
+ }
194
+
195
+ _destroyTexture( texture ) {
196
+
197
+ this.backend.destroySampler( texture );
198
+ this.backend.destroyTexture( texture );
199
+
200
+ this.delete( texture );
201
+
202
+ }
203
+
204
+ }
205
+
206
+ export default Textures;
@@ -1,6 +1,6 @@
1
1
  import { Color, Matrix3, Matrix4, Vector2, Vector3, Vector4 } from 'three';
2
2
 
3
- class WebGPUUniform {
3
+ class Uniform {
4
4
 
5
5
  constructor( name, value = null ) {
6
6
 
@@ -28,7 +28,7 @@ class WebGPUUniform {
28
28
 
29
29
  }
30
30
 
31
- class FloatUniform extends WebGPUUniform {
31
+ class FloatUniform extends Uniform {
32
32
 
33
33
  constructor( name, value = 0 ) {
34
34
 
@@ -43,7 +43,7 @@ class FloatUniform extends WebGPUUniform {
43
43
 
44
44
  }
45
45
 
46
- class Vector2Uniform extends WebGPUUniform {
46
+ class Vector2Uniform extends Uniform {
47
47
 
48
48
  constructor( name, value = new Vector2() ) {
49
49
 
@@ -58,7 +58,7 @@ class Vector2Uniform extends WebGPUUniform {
58
58
 
59
59
  }
60
60
 
61
- class Vector3Uniform extends WebGPUUniform {
61
+ class Vector3Uniform extends Uniform {
62
62
 
63
63
  constructor( name, value = new Vector3() ) {
64
64
 
@@ -73,7 +73,7 @@ class Vector3Uniform extends WebGPUUniform {
73
73
 
74
74
  }
75
75
 
76
- class Vector4Uniform extends WebGPUUniform {
76
+ class Vector4Uniform extends Uniform {
77
77
 
78
78
  constructor( name, value = new Vector4() ) {
79
79
 
@@ -88,7 +88,7 @@ class Vector4Uniform extends WebGPUUniform {
88
88
 
89
89
  }
90
90
 
91
- class ColorUniform extends WebGPUUniform {
91
+ class ColorUniform extends Uniform {
92
92
 
93
93
  constructor( name, value = new Color() ) {
94
94
 
@@ -103,7 +103,7 @@ class ColorUniform extends WebGPUUniform {
103
103
 
104
104
  }
105
105
 
106
- class Matrix3Uniform extends WebGPUUniform {
106
+ class Matrix3Uniform extends Uniform {
107
107
 
108
108
  constructor( name, value = new Matrix3() ) {
109
109
 
@@ -118,7 +118,7 @@ class Matrix3Uniform extends WebGPUUniform {
118
118
 
119
119
  }
120
120
 
121
- class Matrix4Uniform extends WebGPUUniform {
121
+ class Matrix4Uniform extends Uniform {
122
122
 
123
123
  constructor( name, value = new Matrix4() ) {
124
124
 
@@ -133,4 +133,8 @@ class Matrix4Uniform extends WebGPUUniform {
133
133
 
134
134
  }
135
135
 
136
- export { FloatUniform, Vector2Uniform, Vector3Uniform, Vector4Uniform, ColorUniform, Matrix3Uniform, Matrix4Uniform };
136
+ export {
137
+ FloatUniform,
138
+ Vector2Uniform, Vector3Uniform, Vector4Uniform, ColorUniform,
139
+ Matrix3Uniform, Matrix4Uniform
140
+ };
@@ -0,0 +1,15 @@
1
+ import Buffer from './Buffer.js';
2
+
3
+ class UniformBuffer extends Buffer {
4
+
5
+ constructor( name, buffer = null ) {
6
+
7
+ super( name, buffer );
8
+
9
+ this.isUniformBuffer = true;
10
+
11
+ }
12
+
13
+ }
14
+
15
+ export default UniformBuffer;
@@ -1,7 +1,7 @@
1
- import WebGPUUniformBuffer from './WebGPUUniformBuffer.js';
2
- import { GPUChunkSize } from './constants.js';
1
+ import UniformBuffer from './UniformBuffer.js';
2
+ import { GPU_CHUNK_BYTES } from './Constants.js';
3
3
 
4
- class WebGPUUniformsGroup extends WebGPUUniformBuffer {
4
+ class UniformsGroup extends UniformBuffer {
5
5
 
6
6
  constructor( name ) {
7
7
 
@@ -37,17 +37,17 @@ class WebGPUUniformsGroup extends WebGPUUniformBuffer {
37
37
 
38
38
  }
39
39
 
40
- getBuffer() {
40
+ get buffer() {
41
41
 
42
- let buffer = this.buffer;
42
+ let buffer = this._buffer;
43
43
 
44
44
  if ( buffer === null ) {
45
45
 
46
- const byteLength = this.getByteLength();
46
+ const byteLength = this.byteLength;
47
47
 
48
48
  buffer = new Float32Array( new ArrayBuffer( byteLength ) );
49
49
 
50
- this.buffer = buffer;
50
+ this._buffer = buffer;
51
51
 
52
52
  }
53
53
 
@@ -55,7 +55,7 @@ class WebGPUUniformsGroup extends WebGPUUniformBuffer {
55
55
 
56
56
  }
57
57
 
58
- getByteLength() {
58
+ get byteLength() {
59
59
 
60
60
  let offset = 0; // global buffer offset in bytes
61
61
 
@@ -65,8 +65,8 @@ class WebGPUUniformsGroup extends WebGPUUniformBuffer {
65
65
 
66
66
  // offset within a single chunk in bytes
67
67
 
68
- const chunkOffset = offset % GPUChunkSize;
69
- const remainingSizeInChunk = GPUChunkSize - chunkOffset;
68
+ const chunkOffset = offset % GPU_CHUNK_BYTES;
69
+ const remainingSizeInChunk = GPU_CHUNK_BYTES - chunkOffset;
70
70
 
71
71
  // conformance tests
72
72
 
@@ -74,7 +74,7 @@ class WebGPUUniformsGroup extends WebGPUUniformBuffer {
74
74
 
75
75
  // check for chunk overflow
76
76
 
77
- offset += ( GPUChunkSize - chunkOffset );
77
+ offset += ( GPU_CHUNK_BYTES - chunkOffset );
78
78
 
79
79
  } else if ( chunkOffset % uniform.boundary !== 0 ) {
80
80
 
@@ -90,7 +90,7 @@ class WebGPUUniformsGroup extends WebGPUUniformBuffer {
90
90
 
91
91
  }
92
92
 
93
- return Math.ceil( offset / GPUChunkSize ) * GPUChunkSize;
93
+ return Math.ceil( offset / GPU_CHUNK_BYTES ) * GPU_CHUNK_BYTES;
94
94
 
95
95
  }
96
96
 
@@ -296,4 +296,4 @@ function arraysEqual( a, b, offset ) {
296
296
 
297
297
  }
298
298
 
299
- export default WebGPUUniformsGroup;
299
+ export default UniformsGroup;
@@ -1,8 +1,8 @@
1
- import WebGPUNodeBuilder from './WebGPUNodeBuilder.js';
1
+ import WebGPUNodeBuilder from '../../webgpu/backends/webgpu/builder/WGSLNodeBuilder.js';
2
2
  import { NoToneMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping } from 'three';
3
3
  import { NodeFrame, cubeTexture, texture, rangeFog, densityFog, reference, toneMapping, positionWorld, modelWorldMatrix, transformDirection, equirectUV, viewportBottomLeft } from '../../../nodes/Nodes.js';
4
4
 
5
- class WebGPUNodes {
5
+ class NodeRender {
6
6
 
7
7
  constructor( renderer, properties ) {
8
8
 
@@ -299,4 +299,4 @@ class WebGPUNodes {
299
299
 
300
300
  }
301
301
 
302
- export default WebGPUNodes;
302
+ export default NodeRender;
@@ -1,6 +1,6 @@
1
- import { WebGPUSampledTexture, WebGPUSampledCubeTexture } from '../WebGPUSampledTexture.js';
1
+ import { SampledTexture, SampledCubeTexture } from '../SampledTexture.js';
2
2
 
3
- class WebGPUNodeSampledTexture extends WebGPUSampledTexture {
3
+ class NodeSampledTexture extends SampledTexture {
4
4
 
5
5
  constructor( name, textureNode ) {
6
6
 
@@ -18,7 +18,7 @@ class WebGPUNodeSampledTexture extends WebGPUSampledTexture {
18
18
 
19
19
  }
20
20
 
21
- class WebGPUNodeSampledCubeTexture extends WebGPUSampledCubeTexture {
21
+ class NodeSampledCubeTexture extends SampledCubeTexture {
22
22
 
23
23
  constructor( name, textureNode ) {
24
24
 
@@ -36,4 +36,4 @@ class WebGPUNodeSampledCubeTexture extends WebGPUSampledCubeTexture {
36
36
 
37
37
  }
38
38
 
39
- export { WebGPUNodeSampledTexture, WebGPUNodeSampledCubeTexture };
39
+ export { NodeSampledTexture, NodeSampledCubeTexture };
@@ -1,6 +1,6 @@
1
- import WebGPUSampler from '../WebGPUSampler.js';
1
+ import Sampler from '../Sampler.js';
2
2
 
3
- class WebGPUNodeSampler extends WebGPUSampler {
3
+ class NodeSampler extends Sampler {
4
4
 
5
5
  constructor( name, textureNode ) {
6
6
 
@@ -18,4 +18,4 @@ class WebGPUNodeSampler extends WebGPUSampler {
18
18
 
19
19
  }
20
20
 
21
- export default WebGPUNodeSampler;
21
+ export default NodeSampler;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  FloatUniform, Vector2Uniform, Vector3Uniform, Vector4Uniform,
3
3
  ColorUniform, Matrix3Uniform, Matrix4Uniform
4
- } from '../WebGPUUniform.js';
4
+ } from '../Uniform.js';
5
5
 
6
6
  class FloatNodeUniform extends FloatUniform {
7
7