super-three 0.152.0 → 0.154.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/build/three.cjs +779 -557
  2. package/build/three.js +779 -557
  3. package/build/three.min.js +2 -1
  4. package/build/three.module.js +770 -539
  5. package/build/three.module.min.js +2 -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
@@ -9,8 +9,7 @@ import {
9
9
  WebGLRenderTarget
10
10
  } from 'three';
11
11
 
12
- import { BokehShader } from '../shaders/BokehShader2.js';
13
- import { BokehDepthShader } from '../shaders/BokehShader2.js';
12
+ import { BokehShader, BokehDepthShader } from '../shaders/BokehShader2.js';
14
13
 
15
14
  class CinematicCamera extends PerspectiveCamera {
16
15
 
@@ -4,11 +4,25 @@ if ( window.GPUShaderStage === undefined ) {
4
4
 
5
5
  }
6
6
 
7
+ let isAvailable = false;
8
+
9
+ if ( navigator.gpu !== undefined ) {
10
+
11
+ const adapter = await navigator.gpu.requestAdapter();
12
+
13
+ if ( adapter !== null ) {
14
+
15
+ isAvailable = true;
16
+
17
+ }
18
+
19
+ }
20
+
7
21
  class WebGPU {
8
22
 
9
23
  static isAvailable() {
10
24
 
11
- return ( navigator.gpu !== undefined );
25
+ return isAvailable;
12
26
 
13
27
  }
14
28
 
@@ -199,6 +199,7 @@ class ArcballControls extends EventDispatcher {
199
199
  this.cursorZoom = false; //if wheel zoom should be cursor centered
200
200
  this.minFov = 5;
201
201
  this.maxFov = 90;
202
+ this.rotateSpeed = 1;
202
203
 
203
204
  this.enabled = true;
204
205
  this.enablePan = true;
@@ -445,7 +446,7 @@ class ArcballControls extends EventDispatcher {
445
446
 
446
447
  const distance = this._startCursorPosition.distanceTo( this._currentCursorPosition );
447
448
  const angle = this._startCursorPosition.angleTo( this._currentCursorPosition );
448
- const amount = Math.max( distance / this._tbRadius, angle ); //effective rotation angle
449
+ const amount = Math.max( distance / this._tbRadius, angle ) * this.rotateSpeed; //effective rotation angle
449
450
 
450
451
  this.applyTransformMatrix( this.rotate( this.calculateRotationAxis( this._startCursorPosition, this._currentCursorPosition ), amount ) );
451
452
 
@@ -17,6 +17,9 @@ class FlyControls extends EventDispatcher {
17
17
 
18
18
  // API
19
19
 
20
+ // Set to false to disable this control
21
+ this.enabled = true;
22
+
20
23
  this.movementSpeed = 1.0;
21
24
  this.rollSpeed = 0.005;
22
25
 
@@ -44,7 +47,7 @@ class FlyControls extends EventDispatcher {
44
47
 
45
48
  this.keydown = function ( event ) {
46
49
 
47
- if ( event.altKey ) {
50
+ if ( event.altKey || this.enabled === false ) {
48
51
 
49
52
  return;
50
53
 
@@ -82,6 +85,8 @@ class FlyControls extends EventDispatcher {
82
85
 
83
86
  this.keyup = function ( event ) {
84
87
 
88
+ if ( this.enabled === false ) return;
89
+
85
90
  switch ( event.code ) {
86
91
 
87
92
  case 'ShiftLeft':
@@ -114,6 +119,8 @@ class FlyControls extends EventDispatcher {
114
119
 
115
120
  this.pointerdown = function ( event ) {
116
121
 
122
+ if ( this.enabled === false ) return;
123
+
117
124
  if ( this.dragToLook ) {
118
125
 
119
126
  this.status ++;
@@ -135,6 +142,8 @@ class FlyControls extends EventDispatcher {
135
142
 
136
143
  this.pointermove = function ( event ) {
137
144
 
145
+ if ( this.enabled === false ) return;
146
+
138
147
  if ( ! this.dragToLook || this.status > 0 ) {
139
148
 
140
149
  const container = this.getContainerDimensions();
@@ -152,6 +161,8 @@ class FlyControls extends EventDispatcher {
152
161
 
153
162
  this.pointerup = function ( event ) {
154
163
 
164
+ if ( this.enabled === false ) return;
165
+
155
166
  if ( this.dragToLook ) {
156
167
 
157
168
  this.status --;
@@ -175,8 +186,18 @@ class FlyControls extends EventDispatcher {
175
186
 
176
187
  };
177
188
 
189
+ this.contextMenu = function ( event ) {
190
+
191
+ if ( this.enabled === false ) return;
192
+
193
+ event.preventDefault();
194
+
195
+ };
196
+
178
197
  this.update = function ( delta ) {
179
198
 
199
+ if ( this.enabled === false ) return;
200
+
180
201
  const moveMult = delta * scope.movementSpeed;
181
202
  const rotMult = delta * scope.rollSpeed;
182
203
 
@@ -244,7 +265,7 @@ class FlyControls extends EventDispatcher {
244
265
 
245
266
  this.dispose = function () {
246
267
 
247
- this.domElement.removeEventListener( 'contextmenu', contextmenu );
268
+ this.domElement.removeEventListener( 'contextmenu', _contextmenu );
248
269
  this.domElement.removeEventListener( 'pointerdown', _pointerdown );
249
270
  this.domElement.removeEventListener( 'pointermove', _pointermove );
250
271
  this.domElement.removeEventListener( 'pointerup', _pointerup );
@@ -254,13 +275,14 @@ class FlyControls extends EventDispatcher {
254
275
 
255
276
  };
256
277
 
278
+ const _contextmenu = this.contextMenu.bind( this );
257
279
  const _pointermove = this.pointermove.bind( this );
258
280
  const _pointerdown = this.pointerdown.bind( this );
259
281
  const _pointerup = this.pointerup.bind( this );
260
282
  const _keydown = this.keydown.bind( this );
261
283
  const _keyup = this.keyup.bind( this );
262
284
 
263
- this.domElement.addEventListener( 'contextmenu', contextmenu );
285
+ this.domElement.addEventListener( 'contextmenu', _contextmenu );
264
286
  this.domElement.addEventListener( 'pointerdown', _pointerdown );
265
287
  this.domElement.addEventListener( 'pointermove', _pointermove );
266
288
  this.domElement.addEventListener( 'pointerup', _pointerup );
@@ -275,10 +297,4 @@ class FlyControls extends EventDispatcher {
275
297
 
276
298
  }
277
299
 
278
- function contextmenu( event ) {
279
-
280
- event.preventDefault();
281
-
282
- }
283
-
284
300
  export { FlyControls };
@@ -165,6 +165,7 @@ class OrbitControls extends EventDispatcher {
165
165
 
166
166
  const lastPosition = new Vector3();
167
167
  const lastQuaternion = new Quaternion();
168
+ const lastTargetPosition = new Vector3();
168
169
 
169
170
  const twoPI = 2 * Math.PI;
170
171
 
@@ -278,12 +279,15 @@ class OrbitControls extends EventDispatcher {
278
279
 
279
280
  if ( zoomChanged ||
280
281
  lastPosition.distanceToSquared( scope.object.position ) > EPS ||
281
- 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {
282
+ 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ||
283
+ lastTargetPosition.distanceToSquared( scope.target ) > 0 ) {
282
284
 
283
285
  scope.dispatchEvent( _changeEvent );
284
286
 
285
287
  lastPosition.copy( scope.object.position );
286
288
  lastQuaternion.copy( scope.object.quaternion );
289
+ lastTargetPosition.copy( scope.target );
290
+
287
291
  zoomChanged = false;
288
292
 
289
293
  return true;
@@ -24,8 +24,6 @@ export class CSM {
24
24
 
25
25
  constructor( data ) {
26
26
 
27
- data = data || {};
28
-
29
27
  this.camera = data.camera;
30
28
  this.parent = data.parent;
31
29
  this.cascades = data.cascades || 3;
@@ -34,7 +32,7 @@ export class CSM {
34
32
  this.shadowMapSize = data.shadowMapSize || 2048;
35
33
  this.shadowBias = data.shadowBias || 0.000001;
36
34
  this.lightDirection = data.lightDirection || new Vector3( 1, - 1, 1 ).normalize();
37
- this.lightIntensity = data.lightIntensity || 1;
35
+ this.lightIntensity = data.lightIntensity || 3;
38
36
  this.lightNear = data.lightNear || 1;
39
37
  this.lightFar = data.lightFar || 2000;
40
38
  this.lightMargin = data.lightMargin || 200;
@@ -75,38 +75,24 @@ class AnaglyphEffect {
75
75
  'uniform mat3 colorMatrixLeft;',
76
76
  'uniform mat3 colorMatrixRight;',
77
77
 
78
- // These functions implement sRGB linearization and gamma correction
79
-
80
- 'float lin( float c ) {',
81
- ' return c <= 0.04045 ? c * 0.0773993808 :',
82
- ' pow( c * 0.9478672986 + 0.0521327014, 2.4 );',
83
- '}',
84
-
85
- 'vec4 lin( vec4 c ) {',
86
- ' return vec4( lin( c.r ), lin( c.g ), lin( c.b ), c.a );',
87
- '}',
88
-
89
- 'float dev( float c ) {',
90
- ' return c <= 0.0031308 ? c * 12.92',
91
- ' : pow( c, 0.41666 ) * 1.055 - 0.055;',
92
- '}',
93
-
94
-
95
78
  'void main() {',
96
79
 
97
80
  ' vec2 uv = vUv;',
98
81
 
99
- ' vec4 colorL = lin( texture2D( mapLeft, uv ) );',
100
- ' vec4 colorR = lin( texture2D( mapRight, uv ) );',
82
+ ' vec4 colorL = texture2D( mapLeft, uv );',
83
+ ' vec4 colorR = texture2D( mapRight, uv );',
101
84
 
102
85
  ' vec3 color = clamp(',
103
86
  ' colorMatrixLeft * colorL.rgb +',
104
87
  ' colorMatrixRight * colorR.rgb, 0., 1. );',
105
88
 
106
89
  ' gl_FragColor = vec4(',
107
- ' dev( color.r ), dev( color.g ), dev( color.b ),',
90
+ ' color.r, color.g, color.b,',
108
91
  ' max( colorL.a, colorR.a ) );',
109
92
 
93
+ ' #include <tonemapping_fragment>',
94
+ ' #include <colorspace_fragment>',
95
+
110
96
  '}'
111
97
 
112
98
  ].join( '\n' )
@@ -165,7 +165,7 @@ class OutlineEffect {
165
165
  ' gl_FragColor = vec4( outlineColor, outlineAlpha );',
166
166
 
167
167
  ' #include <tonemapping_fragment>',
168
- ' #include <encodings_fragment>',
168
+ ' #include <colorspace_fragment>',
169
169
  ' #include <fog_fragment>',
170
170
  ' #include <premultiplied_alpha_fragment>',
171
171
 
@@ -68,6 +68,9 @@ class ParallaxBarrierEffect {
68
68
 
69
69
  ' }',
70
70
 
71
+ ' #include <tonemapping_fragment>',
72
+ ' #include <colorspace_fragment>',
73
+
71
74
  '}'
72
75
 
73
76
  ].join( '\n' )
@@ -14,7 +14,7 @@ import {
14
14
 
15
15
  class RoomEnvironment extends Scene {
16
16
 
17
- constructor() {
17
+ constructor( renderer = null ) {
18
18
 
19
19
  super();
20
20
 
@@ -24,7 +24,11 @@ class RoomEnvironment extends Scene {
24
24
  const roomMaterial = new MeshStandardMaterial( { side: BackSide } );
25
25
  const boxMaterial = new MeshStandardMaterial();
26
26
 
27
- const mainLight = new PointLight( 0xffffff, 5.0, 28, 2 );
27
+ let intensity = 5;
28
+
29
+ if ( renderer !== null && renderer.useLegacyLights === false ) intensity = 900;
30
+
31
+ const mainLight = new PointLight( 0xffffff, intensity, 28, 2 );
28
32
  mainLight.position.set( 0.418, 16.199, 0.300 );
29
33
  this.add( mainLight );
30
34
 
@@ -21,8 +21,10 @@ import {
21
21
  Scene,
22
22
  Source,
23
23
  SRGBColorSpace,
24
+ CompressedTexture,
24
25
  Vector3
25
26
  } from 'three';
27
+ import { decompress } from './../utils/TextureUtils.js';
26
28
 
27
29
 
28
30
  /**
@@ -120,6 +122,12 @@ class GLTFExporter {
120
122
 
121
123
  } );
122
124
 
125
+ this.register( function ( writer ) {
126
+
127
+ return new GLTFMaterialsAnisotropyExtension( writer );
128
+
129
+ } );
130
+
123
131
  this.register( function ( writer ) {
124
132
 
125
133
  return new GLTFMaterialsEmissiveStrengthExtension( writer );
@@ -821,6 +829,18 @@ class GLTFWriter {
821
829
 
822
830
  console.warn( 'THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures.' );
823
831
 
832
+ if ( metalnessMap instanceof CompressedTexture ) {
833
+
834
+ metalnessMap = decompress( metalnessMap );
835
+
836
+ }
837
+
838
+ if ( roughnessMap instanceof CompressedTexture ) {
839
+
840
+ roughnessMap = decompress( roughnessMap );
841
+
842
+ }
843
+
824
844
  const metalness = metalnessMap ? metalnessMap.image : null;
825
845
  const roughness = roughnessMap ? roughnessMap.image : null;
826
846
 
@@ -1140,7 +1160,7 @@ class GLTFWriter {
1140
1160
 
1141
1161
  } else {
1142
1162
 
1143
- throw new Error( 'THREE.GLTFExporter: Unsupported bufferAttribute component type.' );
1163
+ throw new Error( 'THREE.GLTFExporter: Unsupported bufferAttribute component type: ' + attribute.array.constructor.name );
1144
1164
 
1145
1165
  }
1146
1166
 
@@ -1230,7 +1250,7 @@ class GLTFWriter {
1230
1250
 
1231
1251
  if ( format !== RGBAFormat ) {
1232
1252
 
1233
- console.error( 'GLTFExporter: Only RGBAFormat is supported.' );
1253
+ console.error( 'GLTFExporter: Only RGBAFormat is supported.', format );
1234
1254
 
1235
1255
  }
1236
1256
 
@@ -1338,6 +1358,8 @@ class GLTFWriter {
1338
1358
  */
1339
1359
  processTexture( map ) {
1340
1360
 
1361
+ const writer = this;
1362
+ const options = writer.options;
1341
1363
  const cache = this.cache;
1342
1364
  const json = this.json;
1343
1365
 
@@ -1345,6 +1367,13 @@ class GLTFWriter {
1345
1367
 
1346
1368
  if ( ! json.textures ) json.textures = [];
1347
1369
 
1370
+ // make non-readable textures (e.g. CompressedTexture) readable by blitting them into a new texture
1371
+ if ( map instanceof CompressedTexture ) {
1372
+
1373
+ map = decompress( map, options.maxTextureSize );
1374
+
1375
+ }
1376
+
1348
1377
  let mimeType = map.userData.mimeType;
1349
1378
 
1350
1379
  if ( mimeType === 'image/webp' ) mimeType = 'image/png';
@@ -2856,6 +2885,49 @@ class GLTFMaterialsSheenExtension {
2856
2885
 
2857
2886
  }
2858
2887
 
2888
+ /**
2889
+ * Anisotropy Materials Extension
2890
+ *
2891
+ * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_anisotropy
2892
+ */
2893
+ class GLTFMaterialsAnisotropyExtension {
2894
+
2895
+ constructor( writer ) {
2896
+
2897
+ this.writer = writer;
2898
+ this.name = 'KHR_materials_anisotropy';
2899
+
2900
+ }
2901
+
2902
+ writeMaterial( material, materialDef ) {
2903
+
2904
+ if ( ! material.isMeshPhysicalMaterial || material.anisotropy == 0.0 ) return;
2905
+
2906
+ const writer = this.writer;
2907
+ const extensionsUsed = writer.extensionsUsed;
2908
+
2909
+ const extensionDef = {};
2910
+
2911
+ if ( material.anisotropyMap ) {
2912
+
2913
+ const anisotropyMapDef = { index: writer.processTexture( material.anisotropyMap ) };
2914
+ writer.applyTextureTransform( anisotropyMapDef, material.anisotropyMap );
2915
+ extensionDef.anisotropyTexture = anisotropyMapDef;
2916
+
2917
+ }
2918
+
2919
+ extensionDef.anisotropyStrength = material.anisotropy;
2920
+ extensionDef.anisotropyRotation = material.anisotropyRotation;
2921
+
2922
+ materialDef.extensions = materialDef.extensions || {};
2923
+ materialDef.extensions[ this.name ] = extensionDef;
2924
+
2925
+ extensionsUsed[ this.name ] = true;
2926
+
2927
+ }
2928
+
2929
+ }
2930
+
2859
2931
  /**
2860
2932
  * Materials Emissive Strength Extension
2861
2933
  *