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
@@ -1,361 +0,0 @@
1
- import {
2
- LinearMipmapLinearFilter,
3
- MeshBasicMaterial,
4
- NoBlending,
5
- ShaderMaterial,
6
- UniformsUtils,
7
- WebGLRenderTarget
8
- } from 'three';
9
- import { Pass, FullScreenQuad } from './Pass.js';
10
- import { CopyShader } from '../shaders/CopyShader.js';
11
- import { LuminosityShader } from '../shaders/LuminosityShader.js';
12
- import { ToneMapShader } from '../shaders/ToneMapShader.js';
13
-
14
- /**
15
- * Generate a texture that represents the luminosity of the current scene, adapted over time
16
- * to simulate the optic nerve responding to the amount of light it is receiving.
17
- * Based on a GDC2007 presentation by Wolfgang Engel titled "Post-Processing Pipeline"
18
- *
19
- * Full-screen tone-mapping shader based on http://www.graphics.cornell.edu/~jaf/publications/sig02_paper.pdf
20
- */
21
-
22
- class AdaptiveToneMappingPass extends Pass {
23
-
24
- constructor( adaptive, resolution ) {
25
-
26
- super();
27
-
28
- this.resolution = ( resolution !== undefined ) ? resolution : 256;
29
- this.needsInit = true;
30
- this.adaptive = adaptive !== undefined ? !! adaptive : true;
31
-
32
- this.luminanceRT = null;
33
- this.previousLuminanceRT = null;
34
- this.currentLuminanceRT = null;
35
-
36
- const copyShader = CopyShader;
37
-
38
- this.copyUniforms = UniformsUtils.clone( copyShader.uniforms );
39
-
40
- this.materialCopy = new ShaderMaterial( {
41
-
42
- uniforms: this.copyUniforms,
43
- vertexShader: copyShader.vertexShader,
44
- fragmentShader: copyShader.fragmentShader,
45
- blending: NoBlending,
46
- depthTest: false
47
-
48
- } );
49
-
50
- this.materialLuminance = new ShaderMaterial( {
51
-
52
- uniforms: UniformsUtils.clone( LuminosityShader.uniforms ),
53
- vertexShader: LuminosityShader.vertexShader,
54
- fragmentShader: LuminosityShader.fragmentShader,
55
- blending: NoBlending
56
- } );
57
-
58
- this.adaptLuminanceShader = {
59
- defines: {
60
- 'MIP_LEVEL_1X1': ( Math.log( this.resolution ) / Math.log( 2.0 ) ).toFixed( 1 )
61
- },
62
- uniforms: {
63
- 'lastLum': { value: null },
64
- 'currentLum': { value: null },
65
- 'minLuminance': { value: 0.01 },
66
- 'delta': { value: 0.016 },
67
- 'tau': { value: 1.0 }
68
- },
69
- vertexShader:
70
- `varying vec2 vUv;
71
-
72
- void main() {
73
-
74
- vUv = uv;
75
- gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
76
-
77
- }`,
78
-
79
- fragmentShader:
80
- `varying vec2 vUv;
81
-
82
- uniform sampler2D lastLum;
83
- uniform sampler2D currentLum;
84
- uniform float minLuminance;
85
- uniform float delta;
86
- uniform float tau;
87
-
88
- void main() {
89
-
90
- vec4 lastLum = texture2D( lastLum, vUv, MIP_LEVEL_1X1 );
91
- vec4 currentLum = texture2D( currentLum, vUv, MIP_LEVEL_1X1 );
92
-
93
- float fLastLum = max( minLuminance, lastLum.r );
94
- float fCurrentLum = max( minLuminance, currentLum.r );
95
-
96
- //The adaption seems to work better in extreme lighting differences
97
- //if the input luminance is squared.
98
- fCurrentLum *= fCurrentLum;
99
-
100
- // Adapt the luminance using Pattanaik's technique
101
- float fAdaptedLum = fLastLum + (fCurrentLum - fLastLum) * (1.0 - exp(-delta * tau));
102
- // "fAdaptedLum = sqrt(fAdaptedLum);
103
- gl_FragColor.r = fAdaptedLum;
104
- }`
105
-
106
- };
107
-
108
- this.materialAdaptiveLum = new ShaderMaterial( {
109
-
110
- uniforms: UniformsUtils.clone( this.adaptLuminanceShader.uniforms ),
111
- vertexShader: this.adaptLuminanceShader.vertexShader,
112
- fragmentShader: this.adaptLuminanceShader.fragmentShader,
113
- defines: Object.assign( {}, this.adaptLuminanceShader.defines ),
114
- blending: NoBlending
115
- } );
116
-
117
- this.materialToneMap = new ShaderMaterial( {
118
-
119
- uniforms: UniformsUtils.clone( ToneMapShader.uniforms ),
120
- vertexShader: ToneMapShader.vertexShader,
121
- fragmentShader: ToneMapShader.fragmentShader,
122
- blending: NoBlending
123
- } );
124
-
125
- this.fsQuad = new FullScreenQuad( null );
126
-
127
- }
128
-
129
- render( renderer, writeBuffer, readBuffer, deltaTime/*, maskActive*/ ) {
130
-
131
- if ( this.needsInit ) {
132
-
133
- this.reset( renderer );
134
-
135
- this.luminanceRT.texture.type = readBuffer.texture.type;
136
- this.previousLuminanceRT.texture.type = readBuffer.texture.type;
137
- this.currentLuminanceRT.texture.type = readBuffer.texture.type;
138
- this.needsInit = false;
139
-
140
- }
141
-
142
- if ( this.adaptive ) {
143
-
144
- //Render the luminance of the current scene into a render target with mipmapping enabled
145
- this.fsQuad.material = this.materialLuminance;
146
- this.materialLuminance.uniforms.tDiffuse.value = readBuffer.texture;
147
- renderer.setRenderTarget( this.currentLuminanceRT );
148
- this.fsQuad.render( renderer );
149
-
150
- //Use the new luminance values, the previous luminance and the frame delta to
151
- //adapt the luminance over time.
152
- this.fsQuad.material = this.materialAdaptiveLum;
153
- this.materialAdaptiveLum.uniforms.delta.value = deltaTime;
154
- this.materialAdaptiveLum.uniforms.lastLum.value = this.previousLuminanceRT.texture;
155
- this.materialAdaptiveLum.uniforms.currentLum.value = this.currentLuminanceRT.texture;
156
- renderer.setRenderTarget( this.luminanceRT );
157
- this.fsQuad.render( renderer );
158
-
159
- //Copy the new adapted luminance value so that it can be used by the next frame.
160
- this.fsQuad.material = this.materialCopy;
161
- this.copyUniforms.tDiffuse.value = this.luminanceRT.texture;
162
- renderer.setRenderTarget( this.previousLuminanceRT );
163
- this.fsQuad.render( renderer );
164
-
165
- }
166
-
167
- this.fsQuad.material = this.materialToneMap;
168
- this.materialToneMap.uniforms.tDiffuse.value = readBuffer.texture;
169
-
170
- if ( this.renderToScreen ) {
171
-
172
- renderer.setRenderTarget( null );
173
- this.fsQuad.render( renderer );
174
-
175
- } else {
176
-
177
- renderer.setRenderTarget( writeBuffer );
178
-
179
- if ( this.clear ) renderer.clear();
180
-
181
- this.fsQuad.render( renderer );
182
-
183
- }
184
-
185
- }
186
-
187
- reset() {
188
-
189
- // render targets
190
- if ( this.luminanceRT ) {
191
-
192
- this.luminanceRT.dispose();
193
-
194
- }
195
-
196
- if ( this.currentLuminanceRT ) {
197
-
198
- this.currentLuminanceRT.dispose();
199
-
200
- }
201
-
202
- if ( this.previousLuminanceRT ) {
203
-
204
- this.previousLuminanceRT.dispose();
205
-
206
- }
207
-
208
-
209
- this.luminanceRT = new WebGLRenderTarget( this.resolution, this.resolution );
210
- this.luminanceRT.texture.name = 'AdaptiveToneMappingPass.l';
211
- this.luminanceRT.texture.generateMipmaps = false;
212
-
213
- this.previousLuminanceRT = new WebGLRenderTarget( this.resolution, this.resolution );
214
- this.previousLuminanceRT.texture.name = 'AdaptiveToneMappingPass.pl';
215
- this.previousLuminanceRT.texture.generateMipmaps = false;
216
-
217
- // We only need mipmapping for the current luminosity because we want a down-sampled version to sample in our adaptive shader
218
-
219
- const pars = { minFilter: LinearMipmapLinearFilter, generateMipmaps: true };
220
-
221
- this.currentLuminanceRT = new WebGLRenderTarget( this.resolution, this.resolution, pars );
222
- this.currentLuminanceRT.texture.name = 'AdaptiveToneMappingPass.cl';
223
-
224
- if ( this.adaptive ) {
225
-
226
- this.materialToneMap.defines[ 'ADAPTED_LUMINANCE' ] = '';
227
- this.materialToneMap.uniforms.luminanceMap.value = this.luminanceRT.texture;
228
-
229
- }
230
-
231
- //Put something in the adaptive luminance texture so that the scene can render initially
232
- this.fsQuad.material = new MeshBasicMaterial( { color: 0x777777 } );
233
- this.materialLuminance.needsUpdate = true;
234
- this.materialAdaptiveLum.needsUpdate = true;
235
- this.materialToneMap.needsUpdate = true;
236
- // renderer.render( this.scene, this.camera, this.luminanceRT );
237
- // renderer.render( this.scene, this.camera, this.previousLuminanceRT );
238
- // renderer.render( this.scene, this.camera, this.currentLuminanceRT );
239
-
240
- }
241
-
242
- setAdaptive( adaptive ) {
243
-
244
- if ( adaptive ) {
245
-
246
- this.adaptive = true;
247
- this.materialToneMap.defines[ 'ADAPTED_LUMINANCE' ] = '';
248
- this.materialToneMap.uniforms.luminanceMap.value = this.luminanceRT.texture;
249
-
250
- } else {
251
-
252
- this.adaptive = false;
253
- delete this.materialToneMap.defines[ 'ADAPTED_LUMINANCE' ];
254
- this.materialToneMap.uniforms.luminanceMap.value = null;
255
-
256
- }
257
-
258
- this.materialToneMap.needsUpdate = true;
259
-
260
- }
261
-
262
- setAdaptionRate( rate ) {
263
-
264
- if ( rate ) {
265
-
266
- this.materialAdaptiveLum.uniforms.tau.value = Math.abs( rate );
267
-
268
- }
269
-
270
- }
271
-
272
- setMinLuminance( minLum ) {
273
-
274
- if ( minLum ) {
275
-
276
- this.materialToneMap.uniforms.minLuminance.value = minLum;
277
- this.materialAdaptiveLum.uniforms.minLuminance.value = minLum;
278
-
279
- }
280
-
281
- }
282
-
283
- setMaxLuminance( maxLum ) {
284
-
285
- if ( maxLum ) {
286
-
287
- this.materialToneMap.uniforms.maxLuminance.value = maxLum;
288
-
289
- }
290
-
291
- }
292
-
293
- setAverageLuminance( avgLum ) {
294
-
295
- if ( avgLum ) {
296
-
297
- this.materialToneMap.uniforms.averageLuminance.value = avgLum;
298
-
299
- }
300
-
301
- }
302
-
303
- setMiddleGrey( middleGrey ) {
304
-
305
- if ( middleGrey ) {
306
-
307
- this.materialToneMap.uniforms.middleGrey.value = middleGrey;
308
-
309
- }
310
-
311
- }
312
-
313
- dispose() {
314
-
315
- if ( this.luminanceRT ) {
316
-
317
- this.luminanceRT.dispose();
318
-
319
- }
320
-
321
- if ( this.previousLuminanceRT ) {
322
-
323
- this.previousLuminanceRT.dispose();
324
-
325
- }
326
-
327
- if ( this.currentLuminanceRT ) {
328
-
329
- this.currentLuminanceRT.dispose();
330
-
331
- }
332
-
333
- if ( this.materialLuminance ) {
334
-
335
- this.materialLuminance.dispose();
336
-
337
- }
338
-
339
- if ( this.materialAdaptiveLum ) {
340
-
341
- this.materialAdaptiveLum.dispose();
342
-
343
- }
344
-
345
- if ( this.materialCopy ) {
346
-
347
- this.materialCopy.dispose();
348
-
349
- }
350
-
351
- if ( this.materialToneMap ) {
352
-
353
- this.materialToneMap.dispose();
354
-
355
- }
356
-
357
- }
358
-
359
- }
360
-
361
- export { AdaptiveToneMappingPass };
@@ -1,197 +0,0 @@
1
- class WebGPUAttributes {
2
-
3
- constructor( device ) {
4
-
5
- this.buffers = new WeakMap();
6
- this.device = device;
7
-
8
- }
9
-
10
- get( attribute ) {
11
-
12
- attribute = this._getAttribute( attribute );
13
-
14
- return this.buffers.get( attribute );
15
-
16
- }
17
-
18
- remove( attribute ) {
19
-
20
- attribute = this._getAttribute( attribute );
21
-
22
- const data = this.buffers.get( attribute );
23
-
24
- if ( data ) {
25
-
26
- this._destroyBuffers( data );
27
-
28
- this.buffers.delete( attribute );
29
-
30
- }
31
-
32
- }
33
-
34
- update( attribute, isIndex = false, usage = null ) {
35
-
36
- attribute = this._getAttribute( attribute );
37
-
38
- let data = this.buffers.get( attribute );
39
-
40
- if ( data === undefined ) {
41
-
42
- if ( usage === null ) {
43
-
44
- usage = ( isIndex === true ) ? GPUBufferUsage.INDEX : GPUBufferUsage.VERTEX;
45
-
46
- }
47
-
48
- data = this._createBuffer( attribute, usage );
49
-
50
- this.buffers.set( attribute, data );
51
-
52
- } else if ( usage && usage !== data.usage ) {
53
-
54
- this._destroyBuffers( data );
55
-
56
- data = this._createBuffer( attribute, usage );
57
-
58
- this.buffers.set( attribute, data );
59
-
60
- } else if ( data.version < attribute.version ) {
61
-
62
- this._writeBuffer( data.buffer, attribute );
63
-
64
- data.version = attribute.version;
65
-
66
- }
67
-
68
- }
69
-
70
- async getArrayBuffer( attribute ) {
71
-
72
- const data = this.get( attribute );
73
- const device = this.device;
74
-
75
- const gpuBuffer = data.buffer;
76
- const size = gpuBuffer.size;
77
-
78
- let gpuReadBuffer = data.readBuffer;
79
- let needsUnmap = true;
80
-
81
- if ( gpuReadBuffer === null ) {
82
-
83
- gpuReadBuffer = device.createBuffer( {
84
- label: attribute.name,
85
- size,
86
- usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ
87
- } );
88
-
89
- needsUnmap = false;
90
-
91
- data.readBuffer = gpuReadBuffer;
92
-
93
- }
94
-
95
- const cmdEncoder = device.createCommandEncoder( {} );
96
-
97
- cmdEncoder.copyBufferToBuffer(
98
- gpuBuffer,
99
- 0,
100
- gpuReadBuffer,
101
- 0,
102
- size
103
- );
104
-
105
- if ( needsUnmap ) gpuReadBuffer.unmap();
106
-
107
- const gpuCommands = cmdEncoder.finish();
108
- device.queue.submit( [ gpuCommands ] );
109
-
110
- await gpuReadBuffer.mapAsync( GPUMapMode.READ );
111
-
112
- const arrayBuffer = gpuReadBuffer.getMappedRange();
113
-
114
- return arrayBuffer;
115
-
116
- }
117
-
118
- _getAttribute( attribute ) {
119
-
120
- if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
121
-
122
- return attribute;
123
-
124
- }
125
-
126
- _createBuffer( attribute, usage ) {
127
-
128
- const array = attribute.array;
129
- const size = array.byteLength + ( ( 4 - ( array.byteLength % 4 ) ) % 4 ); // ensure 4 byte alignment, see #20441
130
-
131
- const buffer = this.device.createBuffer( {
132
- label: attribute.name,
133
- size,
134
- usage: usage | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,
135
- mappedAtCreation: true
136
- } );
137
-
138
- new array.constructor( buffer.getMappedRange() ).set( array );
139
-
140
- buffer.unmap();
141
-
142
- attribute.onUploadCallback();
143
-
144
- return {
145
- version: attribute.version,
146
- buffer,
147
- readBuffer: null,
148
- usage
149
- };
150
-
151
- }
152
-
153
- _writeBuffer( buffer, attribute ) {
154
-
155
- const device = this.device;
156
-
157
- const array = attribute.array;
158
- const updateRange = attribute.updateRange;
159
-
160
- if ( updateRange.count === - 1 ) {
161
-
162
- // Not using update ranges
163
-
164
- device.queue.writeBuffer(
165
- buffer,
166
- 0,
167
- array,
168
- 0
169
- );
170
-
171
- } else {
172
-
173
- device.queue.writeBuffer(
174
- buffer,
175
- 0,
176
- array,
177
- updateRange.offset * array.BYTES_PER_ELEMENT,
178
- updateRange.count * array.BYTES_PER_ELEMENT
179
- );
180
-
181
- updateRange.count = - 1; // reset range
182
-
183
- }
184
-
185
- }
186
-
187
- _destroyBuffers( { buffer, readBuffer } ) {
188
-
189
- buffer.destroy();
190
-
191
- if ( readBuffer !== null ) readBuffer.destroy();
192
-
193
- }
194
-
195
- }
196
-
197
- export default WebGPUAttributes;