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
@@ -211,13 +211,30 @@ function resolveIncludes( string ) {
211
211
 
212
212
  }
213
213
 
214
+ const shaderChunkMap = new Map( [
215
+ [ 'encodings_fragment', 'colorspace_fragment' ], // @deprecated, r154
216
+ [ 'encodings_pars_fragment', 'colorspace_pars_fragment' ], // @deprecated, r154
217
+ [ 'output_fragment', 'opaque_fragment' ], // @deprecated, r154
218
+ ] );
219
+
214
220
  function includeReplacer( match, include ) {
215
221
 
216
- const string = ShaderChunk[ include ];
222
+ let string = ShaderChunk[ include ];
217
223
 
218
224
  if ( string === undefined ) {
219
225
 
220
- throw new Error( 'Can not resolve #include <' + include + '>' );
226
+ const newInclude = shaderChunkMap.get( include );
227
+
228
+ if ( newInclude !== undefined ) {
229
+
230
+ string = ShaderChunk[ newInclude ];
231
+ console.warn( 'THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.', include, newInclude );
232
+
233
+ } else {
234
+
235
+ throw new Error( 'Can not resolve #include <' + include + '>' );
236
+
237
+ }
221
238
 
222
239
  }
223
240
 
@@ -418,6 +435,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
418
435
 
419
436
  prefixVertex = [
420
437
 
438
+ '#define SHADER_TYPE ' + parameters.shaderType,
439
+ '#define SHADER_NAME ' + parameters.shaderName,
440
+
421
441
  customDefines
422
442
 
423
443
  ].filter( filterEmptyLine ).join( '\n' );
@@ -431,6 +451,10 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
431
451
  prefixFragment = [
432
452
 
433
453
  customExtensions,
454
+
455
+ '#define SHADER_TYPE ' + parameters.shaderType,
456
+ '#define SHADER_NAME ' + parameters.shaderName,
457
+
434
458
  customDefines
435
459
 
436
460
  ].filter( filterEmptyLine ).join( '\n' );
@@ -447,6 +471,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
447
471
 
448
472
  generatePrecision( parameters ),
449
473
 
474
+ '#define SHADER_TYPE ' + parameters.shaderType,
450
475
  '#define SHADER_NAME ' + parameters.shaderName,
451
476
 
452
477
  customDefines,
@@ -469,6 +494,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
469
494
  parameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',
470
495
  parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
471
496
 
497
+ parameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',
498
+
472
499
  parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',
473
500
  parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
474
501
  parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',
@@ -483,6 +510,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
483
510
  parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',
484
511
  parameters.metalnessMap ? '#define USE_METALNESSMAP' : '',
485
512
  parameters.alphaMap ? '#define USE_ALPHAMAP' : '',
513
+ parameters.alphaHash ? '#define USE_ALPHAHASH' : '',
486
514
 
487
515
  parameters.transmission ? '#define USE_TRANSMISSION' : '',
488
516
  parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',
@@ -505,6 +533,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
505
533
  parameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',
506
534
  parameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',
507
535
 
536
+ parameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',
537
+
508
538
  parameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',
509
539
  parameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',
510
540
  parameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',
@@ -524,7 +554,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
524
554
 
525
555
  //
526
556
 
527
- parameters.vertexTangents ? '#define USE_TANGENT' : '',
557
+ parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
528
558
  parameters.vertexColors ? '#define USE_COLOR' : '',
529
559
  parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
530
560
  parameters.vertexUv1s ? '#define USE_UV1' : '',
@@ -551,6 +581,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
551
581
 
552
582
  parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',
553
583
 
584
+ parameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',
585
+
554
586
  parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
555
587
  ( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',
556
588
 
@@ -654,6 +686,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
654
686
 
655
687
  generatePrecision( parameters ),
656
688
 
689
+ '#define SHADER_TYPE ' + parameters.shaderType,
657
690
  '#define SHADER_NAME ' + parameters.shaderName,
658
691
 
659
692
  customDefines,
@@ -678,6 +711,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
678
711
  parameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
679
712
  parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
680
713
 
714
+ parameters.anisotropy ? '#define USE_ANISOTROPY' : '',
715
+ parameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',
716
+
681
717
  parameters.clearcoat ? '#define USE_CLEARCOAT' : '',
682
718
  parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',
683
719
  parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
@@ -696,6 +732,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
696
732
 
697
733
  parameters.alphaMap ? '#define USE_ALPHAMAP' : '',
698
734
  parameters.alphaTest ? '#define USE_ALPHATEST' : '',
735
+ parameters.alphaHash ? '#define USE_ALPHAHASH' : '',
699
736
 
700
737
  parameters.sheen ? '#define USE_SHEEN' : '',
701
738
  parameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',
@@ -705,7 +742,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
705
742
  parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',
706
743
  parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',
707
744
 
708
- parameters.vertexTangents ? '#define USE_TANGENT' : '',
745
+ parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
709
746
  parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',
710
747
  parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
711
748
  parameters.vertexUv1s ? '#define USE_UV1' : '',
@@ -742,7 +779,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
742
779
  parameters.dithering ? '#define DITHERING' : '',
743
780
  parameters.opaque ? '#define OPAQUE' : '',
744
781
 
745
- ShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below
782
+ ShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below
746
783
  getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),
747
784
 
748
785
  parameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',
@@ -949,6 +986,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
949
986
 
950
987
  //
951
988
 
989
+ this.type = parameters.shaderType;
952
990
  this.name = parameters.shaderName;
953
991
  this.id = programIdCount ++;
954
992
  this.cacheKey = cacheKey;
@@ -37,11 +37,9 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
37
37
 
38
38
  function getChannel( value ) {
39
39
 
40
- if ( value === 1 ) return 'uv1';
41
- if ( value === 2 ) return 'uv2';
42
- if ( value === 3 ) return 'uv3';
40
+ if ( value === 0 ) return 'uv';
43
41
 
44
- return 'uv';
42
+ return `uv${ value }`;
45
43
 
46
44
  }
47
45
 
@@ -123,11 +121,14 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
123
121
  const HAS_METALNESSMAP = !! material.metalnessMap;
124
122
  const HAS_ROUGHNESSMAP = !! material.roughnessMap;
125
123
 
124
+ const HAS_ANISOTROPY = material.anisotropy > 0;
126
125
  const HAS_CLEARCOAT = material.clearcoat > 0;
127
126
  const HAS_IRIDESCENCE = material.iridescence > 0;
128
127
  const HAS_SHEEN = material.sheen > 0;
129
128
  const HAS_TRANSMISSION = material.transmission > 0;
130
129
 
130
+ const HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;
131
+
131
132
  const HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;
132
133
  const HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;
133
134
  const HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;
@@ -151,6 +152,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
151
152
 
152
153
  const HAS_ALPHATEST = material.alphaTest > 0;
153
154
 
155
+ const HAS_ALPHAHASH = !! material.alphaHash;
156
+
154
157
  const HAS_EXTENSIONS = !! material.extensions;
155
158
 
156
159
  const HAS_ATTRIBUTE_UV1 = !! geometry.attributes.uv1;
@@ -162,7 +165,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
162
165
  isWebGL2: IS_WEBGL2,
163
166
 
164
167
  shaderID: shaderID,
165
- shaderName: material.type,
168
+ shaderType: material.type,
169
+ shaderName: material.name,
166
170
 
167
171
  vertexShader: vertexShader,
168
172
  fragmentShader: fragmentShader,
@@ -200,6 +204,9 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
200
204
  metalnessMap: HAS_METALNESSMAP,
201
205
  roughnessMap: HAS_ROUGHNESSMAP,
202
206
 
207
+ anisotropy: HAS_ANISOTROPY,
208
+ anisotropyMap: HAS_ANISOTROPYMAP,
209
+
203
210
  clearcoat: HAS_CLEARCOAT,
204
211
  clearcoatMap: HAS_CLEARCOATMAP,
205
212
  clearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,
@@ -227,6 +234,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
227
234
 
228
235
  alphaMap: HAS_ALPHAMAP,
229
236
  alphaTest: HAS_ALPHATEST,
237
+ alphaHash: HAS_ALPHAHASH,
230
238
 
231
239
  combine: material.combine,
232
240
 
@@ -243,6 +251,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
243
251
  metalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),
244
252
  roughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),
245
253
 
254
+ anisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),
255
+
246
256
  clearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),
247
257
  clearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),
248
258
  clearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),
@@ -264,7 +274,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
264
274
 
265
275
  //
266
276
 
267
- vertexTangents: HAS_NORMALMAP && !! geometry.attributes.tangent,
277
+ vertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),
268
278
  vertexColors: material.vertexColors,
269
279
  vertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,
270
280
  vertexUv1s: HAS_ATTRIBUTE_UV1,
@@ -396,6 +406,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
396
406
  array.push( parameters.emissiveMapUv );
397
407
  array.push( parameters.metalnessMapUv );
398
408
  array.push( parameters.roughnessMapUv );
409
+ array.push( parameters.anisotropyMapUv );
399
410
  array.push( parameters.clearcoatMapUv );
400
411
  array.push( parameters.clearcoatNormalMapUv );
401
412
  array.push( parameters.clearcoatRoughnessMapUv );
@@ -469,6 +480,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
469
480
  _programLayers.enable( 15 );
470
481
  if ( parameters.vertexTangents )
471
482
  _programLayers.enable( 16 );
483
+ if ( parameters.anisotropy )
484
+ _programLayers.enable( 17 );
472
485
 
473
486
  array.push( _programLayers.mask );
474
487
  _programLayers.disableAll();
@@ -609,5 +622,4 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
609
622
 
610
623
  }
611
624
 
612
-
613
625
  export { WebGLPrograms };
@@ -1,4 +1,4 @@
1
- import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, RGBAFormat, DepthFormat, DepthStencilFormat, UnsignedShortType, UnsignedIntType, UnsignedInt248Type, FloatType, HalfFloatType, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, UnsignedByteType, _SRGBAFormat, NoColorSpace, LinearSRGBColorSpace, SRGBColorSpace } from '../../constants.js';
1
+ import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, RGBAFormat, DepthFormat, DepthStencilFormat, UnsignedShortType, UnsignedIntType, UnsignedInt248Type, FloatType, HalfFloatType, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, UnsignedByteType, _SRGBAFormat, NoColorSpace, LinearSRGBColorSpace, SRGBColorSpace, NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare } from '../../constants.js';
2
2
  import * as MathUtils from '../../math/MathUtils.js';
3
3
  import { ImageUtils } from '../../extras/ImageUtils.js';
4
4
  import { createElementNS } from '../../utils.js';
@@ -526,6 +526,17 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
526
526
  [ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR
527
527
  };
528
528
 
529
+ const compareToGL = {
530
+ [ NeverCompare ]: _gl.NEVER,
531
+ [ AlwaysCompare ]: _gl.ALWAYS,
532
+ [ LessCompare ]: _gl.LESS,
533
+ [ LessEqualCompare ]: _gl.LEQUAL,
534
+ [ EqualCompare ]: _gl.EQUAL,
535
+ [ GreaterEqualCompare ]: _gl.GEQUAL,
536
+ [ GreaterCompare ]: _gl.GREATER,
537
+ [ NotEqualCompare ]: _gl.NOTEQUAL
538
+ };
539
+
529
540
  function setTextureParameters( textureType, texture, supportsMips ) {
530
541
 
531
542
  if ( supportsMips ) {
@@ -570,6 +581,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
570
581
 
571
582
  }
572
583
 
584
+ if ( texture.compareFunction ) {
585
+
586
+ _gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );
587
+ _gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );
588
+
589
+ }
590
+
573
591
  if ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {
574
592
 
575
593
  const extension = extensions.get( 'EXT_texture_filter_anisotropic' );
@@ -425,6 +425,18 @@ function WebVRManager( renderer ) {
425
425
 
426
426
  };
427
427
 
428
+ // Dummy getEnvironmentBlendMode to have the same API as WebXR
429
+
430
+ this.getEnvironmentBlendMode = function () {
431
+
432
+ if ( scope.isPresenting ) {
433
+
434
+ return 'opaque';
435
+
436
+ }
437
+
438
+ };
439
+
428
440
  //
429
441
 
430
442
  this.getStandingMatrix = function () {
@@ -43,9 +43,6 @@ class WebXRManager extends EventDispatcher {
43
43
  const controllers = [];
44
44
  const controllerInputSources = [];
45
45
 
46
- const planes = new Set();
47
- const planesLastChangedTimes = new Map();
48
-
49
46
  //
50
47
 
51
48
  const cameraL = new PerspectiveCamera();
@@ -58,9 +55,9 @@ class WebXRManager extends EventDispatcher {
58
55
 
59
56
  const cameras = [ cameraL, cameraR ];
60
57
 
61
- const cameraVR = new ArrayCamera();
62
- cameraVR.layers.enable( 1 );
63
- cameraVR.layers.enable( 2 );
58
+ const cameraXR = new ArrayCamera();
59
+ cameraXR.layers.enable( 1 );
60
+ cameraXR.layers.enable( 2 );
64
61
 
65
62
  let _currentDepthNear = null;
66
63
  let _currentDepthFar = null;
@@ -545,28 +542,28 @@ class WebXRManager extends EventDispatcher {
545
542
 
546
543
  if ( session === null ) return;
547
544
 
548
- cameraVR.near = cameraR.near = cameraL.near = camera.near;
549
- cameraVR.far = cameraR.far = cameraL.far = camera.far;
545
+ cameraXR.near = cameraR.near = cameraL.near = camera.near;
546
+ cameraXR.far = cameraR.far = cameraL.far = camera.far;
550
547
 
551
- if ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {
548
+ if ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {
552
549
 
553
550
  // Note that the new renderState won't apply until the next frame. See #18320
554
551
 
555
552
  session.updateRenderState( {
556
- depthNear: cameraVR.near,
557
- depthFar: cameraVR.far
553
+ depthNear: cameraXR.near,
554
+ depthFar: cameraXR.far
558
555
  } );
559
556
 
560
- _currentDepthNear = cameraVR.near;
561
- _currentDepthFar = cameraVR.far;
557
+ _currentDepthNear = cameraXR.near;
558
+ _currentDepthFar = cameraXR.far;
562
559
 
563
560
  }
564
561
 
565
- const cameras = cameraVR.cameras;
562
+ const cameras = cameraXR.cameras;
566
563
  var object = poseTarget || camera;
567
564
  const parent = object.parent;
568
565
 
569
- updateCamera( cameraVR, parent );
566
+ updateCamera( cameraXR, parent );
570
567
 
571
568
  for ( let i = 0; i < cameras.length; i ++ ) {
572
569
 
@@ -578,39 +575,41 @@ class WebXRManager extends EventDispatcher {
578
575
 
579
576
  if ( cameras.length === 2 ) {
580
577
 
581
- setProjectionFromUnion( cameraVR, cameraL, cameraR );
578
+ setProjectionFromUnion( cameraXR, cameraL, cameraR );
582
579
 
583
580
  } else {
584
581
 
585
582
  // assume single camera setup (AR)
586
583
 
587
- cameraVR.projectionMatrix.copy( cameraL.projectionMatrix );
584
+ cameraXR.projectionMatrix.copy( cameraL.projectionMatrix );
588
585
 
589
586
  }
590
587
 
591
- // update user camera and its children
592
- updateUserCamera( camera, cameraVR, object );
588
+ updateUserCamera( camera, cameraXR, object );
593
589
 
594
590
  };
595
591
 
596
- function updateUserCamera( camera, cameraVR, object ) {
592
+ function updateUserCamera( camera, cameraXR, object ) {
597
593
 
598
- cameraVR.matrixWorld.decompose( cameraVR.position, cameraVR.quaternion, cameraVR.scale );
594
+ cameraXR.matrixWorld.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );
599
595
 
600
- object.matrixWorld.copy( cameraVR.matrixWorld );
601
- object.matrix.copy( cameraVR.matrix );
602
- object.matrix.decompose( object.position, object.quaternion, object.scale );
596
+ if ( object.parent === null ) {
603
597
 
604
- const children = object.children;
598
+ object.matrix.copy( cameraXR.matrixWorld );
605
599
 
606
- for ( let i = 0, l = children.length; i < l; i ++ ) {
600
+ } else {
607
601
 
608
- children[ i ].updateMatrixWorld( true );
602
+ object.matrix.copy( object.parent.matrixWorld );
603
+ object.matrix.invert();
604
+ object.matrix.multiply( cameraXR.matrixWorld );
609
605
 
610
606
  }
611
607
 
612
- camera.projectionMatrix.copy( cameraVR.projectionMatrix );
613
- camera.projectionMatrixInverse.copy( cameraVR.projectionMatrixInverse );
608
+ object.matrix.decompose( object.position, object.quaternion, object.scale );
609
+ object.updateMatrixWorld( true );
610
+
611
+ camera.projectionMatrix.copy( cameraXR.projectionMatrix );
612
+ camera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );
614
613
 
615
614
  if ( camera.isPerspectiveCamera ) {
616
615
 
@@ -623,7 +622,7 @@ class WebXRManager extends EventDispatcher {
623
622
 
624
623
  this.getCamera = function () {
625
624
 
626
- return cameraVR;
625
+ return cameraXR;
627
626
 
628
627
  };
629
628
 
@@ -660,12 +659,6 @@ class WebXRManager extends EventDispatcher {
660
659
 
661
660
  };
662
661
 
663
- this.getPlanes = function () {
664
-
665
- return planes;
666
-
667
- };
668
-
669
662
  // Animation Loop
670
663
 
671
664
  let onAnimationFrameCallback = null;
@@ -686,14 +679,14 @@ class WebXRManager extends EventDispatcher {
686
679
 
687
680
  }
688
681
 
689
- let cameraVRNeedsUpdate = false;
682
+ let cameraXRNeedsUpdate = false;
690
683
 
691
- // check if it's necessary to rebuild cameraVR's camera list
684
+ // check if it's necessary to rebuild cameraXR's camera list
692
685
 
693
- if ( views.length !== cameraVR.cameras.length ) {
686
+ if ( views.length !== cameraXR.cameras.length ) {
694
687
 
695
- cameraVR.cameras.length = 0;
696
- cameraVRNeedsUpdate = true;
688
+ cameraXR.cameras.length = 0;
689
+ cameraXRNeedsUpdate = true;
697
690
 
698
691
  }
699
692
 
@@ -745,14 +738,14 @@ class WebXRManager extends EventDispatcher {
745
738
 
746
739
  if ( i === 0 ) {
747
740
 
748
- cameraVR.matrix.copy( camera.matrix );
749
- cameraVR.matrix.decompose( cameraVR.position, cameraVR.quaternion, cameraVR.scale );
741
+ cameraXR.matrix.copy( camera.matrix );
742
+ cameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );
750
743
 
751
744
  }
752
745
 
753
- if ( cameraVRNeedsUpdate === true ) {
746
+ if ( cameraXRNeedsUpdate === true ) {
754
747
 
755
- cameraVR.cameras.push( camera );
748
+ cameraXR.cameras.push( camera );
756
749
 
757
750
  }
758
751
 
@@ -779,60 +772,7 @@ class WebXRManager extends EventDispatcher {
779
772
 
780
773
  if ( frame.detectedPlanes ) {
781
774
 
782
- scope.dispatchEvent( { type: 'planesdetected', data: frame.detectedPlanes } );
783
-
784
- let planesToRemove = null;
785
-
786
- for ( const plane of planes ) {
787
-
788
- if ( ! frame.detectedPlanes.has( plane ) ) {
789
-
790
- if ( planesToRemove === null ) {
791
-
792
- planesToRemove = [];
793
-
794
- }
795
-
796
- planesToRemove.push( plane );
797
-
798
- }
799
-
800
- }
801
-
802
- if ( planesToRemove !== null ) {
803
-
804
- for ( const plane of planesToRemove ) {
805
-
806
- planes.delete( plane );
807
- planesLastChangedTimes.delete( plane );
808
- scope.dispatchEvent( { type: 'planeremoved', data: plane } );
809
-
810
- }
811
-
812
- }
813
-
814
- for ( const plane of frame.detectedPlanes ) {
815
-
816
- if ( ! planes.has( plane ) ) {
817
-
818
- planes.add( plane );
819
- planesLastChangedTimes.set( plane, frame.lastChangedTime );
820
- scope.dispatchEvent( { type: 'planeadded', data: plane } );
821
-
822
- } else {
823
-
824
- const lastKnownTime = planesLastChangedTimes.get( plane );
825
-
826
- if ( plane.lastChangedTime > lastKnownTime ) {
827
-
828
- planesLastChangedTimes.set( plane, plane.lastChangedTime );
829
- scope.dispatchEvent( { type: 'planechanged', data: plane } );
830
-
831
- }
832
-
833
- }
834
-
835
- }
775
+ scope.dispatchEvent( { type: 'planesdetected', data: frame } );
836
776
 
837
777
  }
838
778
 
@@ -58,20 +58,6 @@ class Scene extends Object3D {
58
58
 
59
59
  }
60
60
 
61
- get autoUpdate() { // @deprecated, r144
62
-
63
- console.warn( 'THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.' );
64
- return this.matrixWorldAutoUpdate;
65
-
66
- }
67
-
68
- set autoUpdate( value ) { // @deprecated, r144
69
-
70
- console.warn( 'THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.' );
71
- this.matrixWorldAutoUpdate = value;
72
-
73
- }
74
-
75
61
  }
76
62
 
77
63
  export { Scene };
@@ -28,9 +28,31 @@ class DepthTexture extends Texture {
28
28
  this.flipY = false;
29
29
  this.generateMipmaps = false;
30
30
 
31
+ this.compareFunction = null;
32
+
31
33
  }
32
34
 
33
35
 
36
+ copy( source ) {
37
+
38
+ super.copy( source );
39
+
40
+ this.compareFunction = source.compareFunction;
41
+
42
+ return this;
43
+
44
+ }
45
+
46
+ toJSON( meta ) {
47
+
48
+ const data = super.toJSON( meta );
49
+
50
+ if ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;
51
+
52
+ return data;
53
+
54
+ }
55
+
34
56
  }
35
57
 
36
58
  export { DepthTexture };
@@ -3,14 +3,12 @@ import { NearestFilter } from '../constants.js';
3
3
 
4
4
  class FramebufferTexture extends Texture {
5
5
 
6
- constructor( width, height, format ) {
6
+ constructor( width, height ) {
7
7
 
8
8
  super( { width, height } );
9
9
 
10
10
  this.isFramebufferTexture = true;
11
11
 
12
- this.format = format;
13
-
14
12
  this.magFilter = NearestFilter;
15
13
  this.minFilter = NearestFilter;
16
14
 
@@ -1,12 +1,16 @@
1
1
  import { ImageUtils } from '../extras/ImageUtils.js';
2
2
  import * as MathUtils from '../math/MathUtils.js';
3
3
 
4
+ let sourceId = 0;
5
+
4
6
  class Source {
5
7
 
6
8
  constructor( data = null ) {
7
9
 
8
10
  this.isSource = true;
9
11
 
12
+ Object.defineProperty( this, 'id', { value: sourceId ++ } );
13
+
10
14
  this.uuid = MathUtils.generateUUID();
11
15
 
12
16
  this.data = data;
@@ -169,7 +169,7 @@ class Texture extends EventDispatcher {
169
169
  const output = {
170
170
 
171
171
  metadata: {
172
- version: 4.5,
172
+ version: 4.6,
173
173
  type: 'Texture',
174
174
  generator: 'Texture.toJSON'
175
175
  },