super-three 0.179.0 → 0.184.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 (696) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +14522 -12207
  4. package/build/three.core.js +12005 -10954
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +2270 -1005
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +63 -18
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +16573 -7890
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +16533 -7888
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  15. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  16. package/examples/jsm/Addons.js +12 -4
  17. package/examples/jsm/animation/CCDIKSolver.js +8 -4
  18. package/examples/jsm/controls/ArcballControls.js +15 -12
  19. package/examples/jsm/controls/DragControls.js +9 -59
  20. package/examples/jsm/controls/FirstPersonControls.js +61 -57
  21. package/examples/jsm/controls/FlyControls.js +5 -1
  22. package/examples/jsm/controls/MapControls.js +55 -1
  23. package/examples/jsm/controls/OrbitControls.js +113 -10
  24. package/examples/jsm/controls/PointerLockControls.js +2 -10
  25. package/examples/jsm/controls/TrackballControls.js +9 -9
  26. package/examples/jsm/controls/TransformControls.js +35 -3
  27. package/examples/jsm/csm/CSM.js +2 -1
  28. package/examples/jsm/csm/CSMShadowNode.js +6 -2
  29. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  30. package/examples/jsm/effects/AsciiEffect.js +8 -8
  31. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  32. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  33. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  34. package/examples/jsm/exporters/EXRExporter.js +2 -2
  35. package/examples/jsm/exporters/GLTFExporter.js +185 -34
  36. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  37. package/examples/jsm/exporters/PLYExporter.js +1 -1
  38. package/examples/jsm/exporters/USDZExporter.js +31 -5
  39. package/examples/jsm/geometries/DecalGeometry.js +3 -3
  40. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  41. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  42. package/examples/jsm/geometries/TextGeometry.js +21 -2
  43. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  44. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  45. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  46. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  47. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  48. package/examples/jsm/helpers/ViewHelper.js +110 -13
  49. package/examples/jsm/inspector/Extension.js +13 -0
  50. package/examples/jsm/inspector/Inspector.js +542 -0
  51. package/examples/jsm/inspector/RendererInspector.js +425 -0
  52. package/examples/jsm/inspector/extensions/extensions.json +6 -0
  53. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  54. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  55. package/examples/jsm/inspector/tabs/Console.js +238 -0
  56. package/examples/jsm/inspector/tabs/Memory.js +128 -0
  57. package/examples/jsm/inspector/tabs/Parameters.js +380 -0
  58. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  59. package/examples/jsm/inspector/tabs/Settings.js +264 -0
  60. package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
  61. package/examples/jsm/inspector/tabs/Viewer.js +268 -0
  62. package/examples/jsm/inspector/ui/Graph.js +95 -0
  63. package/examples/jsm/inspector/ui/Item.js +170 -0
  64. package/examples/jsm/inspector/ui/List.js +75 -0
  65. package/examples/jsm/inspector/ui/Profiler.js +2072 -0
  66. package/examples/jsm/inspector/ui/Style.js +1667 -0
  67. package/examples/jsm/inspector/ui/Tab.js +265 -0
  68. package/examples/jsm/inspector/ui/Values.js +476 -0
  69. package/examples/jsm/inspector/ui/utils.js +69 -0
  70. package/examples/jsm/interaction/InteractionManager.js +226 -0
  71. package/examples/jsm/interactive/HTMLMesh.js +6 -10
  72. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  73. package/examples/jsm/interactive/SelectionBox.js +30 -0
  74. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  75. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  76. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  77. package/examples/jsm/lighting/LightProbeGrid.js +651 -0
  78. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  79. package/examples/jsm/lines/Line2.js +3 -3
  80. package/examples/jsm/lines/LineGeometry.js +1 -1
  81. package/examples/jsm/lines/LineMaterial.js +7 -1
  82. package/examples/jsm/lines/LineSegments2.js +2 -2
  83. package/examples/jsm/lines/Wireframe.js +2 -2
  84. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  85. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  86. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  87. package/examples/jsm/loaders/3DMLoader.js +5 -4
  88. package/examples/jsm/loaders/3MFLoader.js +3 -3
  89. package/examples/jsm/loaders/AMFLoader.js +2 -2
  90. package/examples/jsm/loaders/ColladaLoader.js +27 -4029
  91. package/examples/jsm/loaders/DDSLoader.js +1 -1
  92. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  93. package/examples/jsm/loaders/EXRLoader.js +692 -53
  94. package/examples/jsm/loaders/FBXLoader.js +237 -39
  95. package/examples/jsm/loaders/FontLoader.js +23 -5
  96. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  97. package/examples/jsm/loaders/GLTFLoader.js +159 -185
  98. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  99. package/examples/jsm/loaders/HDRLoader.js +485 -0
  100. package/examples/jsm/loaders/KMZLoader.js +5 -5
  101. package/examples/jsm/loaders/KTX2Loader.js +162 -53
  102. package/examples/jsm/loaders/KTXLoader.js +2 -2
  103. package/examples/jsm/loaders/LDrawLoader.js +41 -50
  104. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  105. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  106. package/examples/jsm/loaders/LWOLoader.js +9 -41
  107. package/examples/jsm/loaders/MaterialXLoader.js +22 -5
  108. package/examples/jsm/loaders/NRRDLoader.js +2 -2
  109. package/examples/jsm/loaders/OBJLoader.js +1 -1
  110. package/examples/jsm/loaders/PCDLoader.js +4 -2
  111. package/examples/jsm/loaders/PDBLoader.js +1 -1
  112. package/examples/jsm/loaders/RGBELoader.js +7 -473
  113. package/examples/jsm/loaders/SVGLoader.js +4 -4
  114. package/examples/jsm/loaders/TDSLoader.js +0 -2
  115. package/examples/jsm/loaders/TGALoader.js +0 -2
  116. package/examples/jsm/loaders/TTFLoader.js +4 -4
  117. package/examples/jsm/loaders/USDLoader.js +100 -40
  118. package/examples/jsm/loaders/UltraHDRLoader.js +287 -162
  119. package/examples/jsm/loaders/VOXLoader.js +660 -117
  120. package/examples/jsm/loaders/VRMLLoader.js +79 -2
  121. package/examples/jsm/loaders/VTKLoader.js +42 -25
  122. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  123. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  124. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  125. package/examples/jsm/loaders/usd/USDAParser.js +450 -363
  126. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  127. package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
  128. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  129. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  130. package/examples/jsm/math/ColorSpaces.js +19 -1
  131. package/examples/jsm/math/ConvexHull.js +3 -3
  132. package/examples/jsm/math/ImprovedNoise.js +1 -1
  133. package/examples/jsm/math/Lut.js +2 -2
  134. package/examples/jsm/math/Octree.js +131 -1
  135. package/examples/jsm/math/SimplexNoise.js +1 -1
  136. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  137. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  138. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  139. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  140. package/examples/jsm/misc/RollerCoaster.js +42 -4
  141. package/examples/jsm/misc/TubePainter.js +383 -40
  142. package/examples/jsm/misc/Volume.js +1 -2
  143. package/examples/jsm/misc/VolumeSlice.js +0 -1
  144. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  145. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  146. package/examples/jsm/objects/LensflareMesh.js +1 -1
  147. package/examples/jsm/objects/Reflector.js +73 -25
  148. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  149. package/examples/jsm/objects/Sky.js +91 -7
  150. package/examples/jsm/objects/SkyMesh.js +151 -17
  151. package/examples/jsm/objects/Water.js +7 -6
  152. package/examples/jsm/objects/Water2.js +5 -3
  153. package/examples/jsm/objects/WaterMesh.js +11 -13
  154. package/examples/jsm/physics/AmmoPhysics.js +12 -7
  155. package/examples/jsm/physics/JoltPhysics.js +10 -6
  156. package/examples/jsm/physics/RapierPhysics.js +9 -5
  157. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  158. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  159. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  160. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  161. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  162. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  163. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  164. package/examples/jsm/postprocessing/UnrealBloomPass.js +56 -24
  165. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  166. package/examples/jsm/renderers/CSS3DRenderer.js +8 -7
  167. package/examples/jsm/renderers/Projector.js +246 -28
  168. package/examples/jsm/renderers/SVGRenderer.js +175 -61
  169. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  170. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  171. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  172. package/examples/jsm/shaders/BokehShader.js +1 -1
  173. package/examples/jsm/shaders/BokehShader2.js +1 -1
  174. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  175. package/examples/jsm/shaders/FocusShader.js +1 -1
  176. package/examples/jsm/shaders/GTAOShader.js +21 -8
  177. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  178. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  179. package/examples/jsm/shaders/PoissonDenoiseShader.js +8 -4
  180. package/examples/jsm/shaders/SAOShader.js +17 -4
  181. package/examples/jsm/shaders/SSAOShader.js +11 -1
  182. package/examples/jsm/shaders/SSRShader.js +7 -6
  183. package/examples/jsm/shaders/SepiaShader.js +1 -1
  184. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  185. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  186. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +3 -5
  187. package/examples/jsm/shaders/VignetteShader.js +1 -1
  188. package/examples/jsm/transpiler/AST.js +44 -0
  189. package/examples/jsm/transpiler/GLSLDecoder.js +85 -25
  190. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  191. package/examples/jsm/transpiler/TSLEncoder.js +52 -10
  192. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  193. package/examples/jsm/transpiler/WGSLEncoder.js +51 -0
  194. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  195. package/examples/jsm/tsl/display/AfterImageNode.js +36 -24
  196. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  197. package/examples/jsm/tsl/display/AnamorphicNode.js +40 -5
  198. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  199. package/examples/jsm/tsl/display/BloomNode.js +23 -9
  200. package/examples/jsm/tsl/display/CRT.js +150 -0
  201. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +5 -37
  202. package/examples/jsm/tsl/display/DenoiseNode.js +3 -1
  203. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  204. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  205. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  206. package/examples/jsm/tsl/display/FXAANode.js +2 -2
  207. package/examples/jsm/tsl/display/GTAONode.js +59 -9
  208. package/examples/jsm/tsl/display/GaussianBlurNode.js +68 -35
  209. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  210. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  211. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  212. package/examples/jsm/tsl/display/OutlineNode.js +81 -20
  213. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  214. package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
  215. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  216. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  217. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  218. package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
  219. package/examples/jsm/tsl/display/SSGINode.js +638 -0
  220. package/examples/jsm/tsl/display/SSRNode.js +186 -69
  221. package/examples/jsm/tsl/display/SSSNode.js +490 -0
  222. package/examples/jsm/tsl/display/Shape.js +29 -0
  223. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  224. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  225. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  226. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  227. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  228. package/examples/jsm/tsl/display/TRAANode.js +381 -75
  229. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  230. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  231. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  232. package/examples/jsm/tsl/display/hashBlur.js +16 -18
  233. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  234. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  235. package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
  236. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  237. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  238. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  239. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  240. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  241. package/examples/jsm/tsl/math/Bayer.js +53 -3
  242. package/examples/jsm/utils/BufferGeometryUtils.js +3 -4
  243. package/examples/jsm/utils/ColorUtils.js +76 -0
  244. package/examples/jsm/utils/LDrawUtils.js +1 -1
  245. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  246. package/examples/jsm/utils/ShadowMapViewerGPU.js +13 -6
  247. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  248. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  249. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  250. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  251. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  252. package/examples/jsm/webxr/XRHandModelFactory.js +4 -7
  253. package/package.json +27 -38
  254. package/src/Three.Core.js +7 -3
  255. package/src/Three.TSL.js +61 -16
  256. package/src/Three.WebGPU.Nodes.js +7 -0
  257. package/src/Three.WebGPU.js +11 -0
  258. package/src/Three.js +1 -0
  259. package/src/animation/AnimationAction.js +12 -2
  260. package/src/animation/AnimationClip.js +21 -5
  261. package/src/animation/AnimationMixer.js +9 -3
  262. package/src/animation/AnimationObjectGroup.js +2 -1
  263. package/src/animation/AnimationUtils.js +1 -12
  264. package/src/animation/KeyframeTrack.js +54 -14
  265. package/src/animation/PropertyBinding.js +12 -11
  266. package/src/animation/PropertyMixer.js +4 -4
  267. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  268. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  269. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  270. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  271. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  272. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  273. package/src/audio/Audio.js +11 -10
  274. package/src/audio/AudioContext.js +2 -2
  275. package/src/audio/AudioListener.js +5 -3
  276. package/src/audio/PositionalAudio.js +1 -1
  277. package/src/cameras/Camera.js +32 -2
  278. package/src/cameras/CubeCamera.js +20 -0
  279. package/src/cameras/OrthographicCamera.js +1 -1
  280. package/src/cameras/PerspectiveCamera.js +1 -1
  281. package/src/cameras/StereoCamera.js +2 -2
  282. package/src/constants.js +100 -7
  283. package/src/core/BufferAttribute.js +13 -1
  284. package/src/core/BufferGeometry.js +24 -12
  285. package/src/core/Clock.js +7 -0
  286. package/src/core/EventDispatcher.js +1 -1
  287. package/src/core/InterleavedBuffer.js +1 -1
  288. package/src/core/InterleavedBufferAttribute.js +3 -2
  289. package/src/core/Object3D.js +55 -6
  290. package/src/core/Raycaster.js +4 -3
  291. package/src/core/RenderTarget.js +14 -5
  292. package/src/extras/Controls.js +5 -4
  293. package/src/extras/DataUtils.js +2 -1
  294. package/src/extras/Earcut.js +6 -0
  295. package/src/extras/ImageUtils.js +2 -2
  296. package/src/extras/PMREMGenerator.js +259 -57
  297. package/src/extras/TextureUtils.js +6 -1
  298. package/src/extras/core/Curve.js +2 -1
  299. package/src/extras/core/Interpolations.js +7 -1
  300. package/src/extras/core/ShapePath.js +4 -4
  301. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  302. package/src/extras/lib/earcut.js +8 -8
  303. package/src/geometries/BoxGeometry.js +1 -0
  304. package/src/geometries/CapsuleGeometry.js +1 -0
  305. package/src/geometries/CircleGeometry.js +1 -0
  306. package/src/geometries/ConeGeometry.js +1 -0
  307. package/src/geometries/CylinderGeometry.js +1 -0
  308. package/src/geometries/DodecahedronGeometry.js +1 -0
  309. package/src/geometries/ExtrudeGeometry.js +10 -8
  310. package/src/geometries/IcosahedronGeometry.js +1 -0
  311. package/src/geometries/LatheGeometry.js +1 -0
  312. package/src/geometries/OctahedronGeometry.js +1 -0
  313. package/src/geometries/PlaneGeometry.js +1 -0
  314. package/src/geometries/PolyhedronGeometry.js +1 -1
  315. package/src/geometries/RingGeometry.js +1 -0
  316. package/src/geometries/ShapeGeometry.js +1 -0
  317. package/src/geometries/SphereGeometry.js +1 -0
  318. package/src/geometries/TetrahedronGeometry.js +1 -0
  319. package/src/geometries/TorusGeometry.js +9 -3
  320. package/src/geometries/TorusKnotGeometry.js +1 -0
  321. package/src/geometries/TubeGeometry.js +1 -0
  322. package/src/helpers/CameraHelper.js +4 -1
  323. package/src/helpers/DirectionalLightHelper.js +4 -1
  324. package/src/helpers/HemisphereLightHelper.js +3 -0
  325. package/src/helpers/PointLightHelper.js +1 -25
  326. package/src/helpers/SpotLightHelper.js +3 -0
  327. package/src/lights/DirectionalLight.js +13 -0
  328. package/src/lights/HemisphereLight.js +10 -0
  329. package/src/lights/Light.js +1 -11
  330. package/src/lights/LightProbe.js +0 -15
  331. package/src/lights/LightShadow.js +15 -6
  332. package/src/lights/PointLight.js +15 -0
  333. package/src/lights/PointLightShadow.js +0 -86
  334. package/src/lights/SpotLight.js +22 -1
  335. package/src/lights/webgpu/IESSpotLight.js +2 -1
  336. package/src/lights/webgpu/ProjectorLight.js +1 -1
  337. package/src/loaders/AnimationLoader.js +2 -1
  338. package/src/loaders/AudioLoader.js +13 -2
  339. package/src/loaders/BufferGeometryLoader.js +2 -2
  340. package/src/loaders/Cache.js +30 -2
  341. package/src/loaders/DataTextureLoader.js +6 -4
  342. package/src/loaders/FileLoader.js +4 -4
  343. package/src/loaders/ImageBitmapLoader.js +17 -13
  344. package/src/loaders/ImageLoader.js +1 -1
  345. package/src/loaders/Loader.js +9 -3
  346. package/src/loaders/LoadingManager.js +25 -3
  347. package/src/loaders/MaterialLoader.js +6 -4
  348. package/src/loaders/ObjectLoader.js +57 -17
  349. package/src/loaders/TextureLoader.js +1 -1
  350. package/src/loaders/nodes/NodeLoader.js +5 -4
  351. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  352. package/src/materials/Material.js +18 -3
  353. package/src/materials/MeshBasicMaterial.js +1 -0
  354. package/src/materials/MeshDepthMaterial.js +1 -0
  355. package/src/materials/MeshDistanceMaterial.js +1 -1
  356. package/src/materials/MeshLambertMaterial.js +11 -1
  357. package/src/materials/MeshMatcapMaterial.js +22 -0
  358. package/src/materials/MeshNormalMaterial.js +1 -0
  359. package/src/materials/MeshPhongMaterial.js +11 -1
  360. package/src/materials/MeshPhysicalMaterial.js +2 -1
  361. package/src/materials/MeshStandardMaterial.js +8 -7
  362. package/src/materials/MeshToonMaterial.js +2 -1
  363. package/src/materials/PointsMaterial.js +1 -1
  364. package/src/materials/ShaderMaterial.js +22 -3
  365. package/src/materials/nodes/Line2NodeMaterial.js +36 -9
  366. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
  367. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  368. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
  369. package/src/materials/nodes/NodeMaterial.js +95 -35
  370. package/src/materials/nodes/PointsNodeMaterial.js +81 -28
  371. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  372. package/src/materials/nodes/manager/NodeMaterialObserver.js +194 -88
  373. package/src/math/Color.js +6 -5
  374. package/src/math/ColorManagement.js +9 -3
  375. package/src/math/Cylindrical.js +1 -1
  376. package/src/math/Euler.js +2 -1
  377. package/src/math/Line3.js +6 -5
  378. package/src/math/MathUtils.js +23 -21
  379. package/src/math/Matrix2.js +14 -10
  380. package/src/math/Matrix3.js +15 -11
  381. package/src/math/Matrix4.js +94 -81
  382. package/src/math/Plane.js +5 -4
  383. package/src/math/Quaternion.js +60 -84
  384. package/src/math/Sphere.js +1 -1
  385. package/src/math/Spherical.js +1 -1
  386. package/src/math/Triangle.js +1 -1
  387. package/src/math/Vector2.js +11 -7
  388. package/src/math/Vector3.js +15 -13
  389. package/src/math/Vector4.js +13 -9
  390. package/src/math/interpolants/BezierInterpolant.js +108 -0
  391. package/src/nodes/Nodes.js +86 -65
  392. package/src/nodes/TSL.js +11 -8
  393. package/src/nodes/accessors/Arrays.js +1 -1
  394. package/src/nodes/accessors/BatchNode.js +10 -10
  395. package/src/nodes/accessors/Bitangent.js +5 -5
  396. package/src/nodes/accessors/BufferAttributeNode.js +107 -15
  397. package/src/nodes/accessors/BufferNode.js +30 -3
  398. package/src/nodes/accessors/Camera.js +260 -13
  399. package/src/nodes/accessors/ClippingNode.js +10 -9
  400. package/src/nodes/accessors/CubeTextureNode.js +32 -6
  401. package/src/nodes/accessors/InstanceNode.js +164 -39
  402. package/src/nodes/accessors/Lights.js +10 -0
  403. package/src/nodes/accessors/MaterialNode.js +9 -1
  404. package/src/nodes/accessors/MaterialProperties.js +2 -5
  405. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  406. package/src/nodes/accessors/ModelNode.js +1 -1
  407. package/src/nodes/accessors/Normal.js +16 -15
  408. package/src/nodes/accessors/Object3DNode.js +2 -2
  409. package/src/nodes/accessors/Position.js +51 -3
  410. package/src/nodes/accessors/ReferenceBaseNode.js +7 -7
  411. package/src/nodes/accessors/ReferenceNode.js +11 -10
  412. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  413. package/src/nodes/accessors/SceneProperties.js +47 -0
  414. package/src/nodes/accessors/SkinningNode.js +27 -26
  415. package/src/nodes/accessors/StorageBufferNode.js +14 -24
  416. package/src/nodes/accessors/StorageTextureNode.js +62 -9
  417. package/src/nodes/accessors/Tangent.js +4 -14
  418. package/src/nodes/accessors/Texture3DNode.js +41 -31
  419. package/src/nodes/accessors/TextureNode.js +193 -63
  420. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  421. package/src/nodes/accessors/UserDataNode.js +1 -2
  422. package/src/nodes/accessors/VertexColorNode.js +1 -2
  423. package/src/nodes/code/FunctionCallNode.js +25 -5
  424. package/src/nodes/code/FunctionNode.js +25 -3
  425. package/src/nodes/core/ArrayNode.js +22 -2
  426. package/src/nodes/core/AssignNode.js +6 -5
  427. package/src/nodes/core/AttributeNode.js +5 -4
  428. package/src/nodes/core/BypassNode.js +1 -1
  429. package/src/nodes/core/ContextNode.js +133 -15
  430. package/src/nodes/core/IndexNode.js +4 -3
  431. package/src/nodes/core/InputNode.js +3 -2
  432. package/src/nodes/core/InspectorNode.js +128 -0
  433. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +41 -8
  434. package/src/nodes/core/MRTNode.js +48 -2
  435. package/src/nodes/core/Node.js +264 -46
  436. package/src/nodes/core/NodeBuilder.js +453 -87
  437. package/src/nodes/core/NodeError.js +28 -0
  438. package/src/nodes/core/NodeFrame.js +31 -23
  439. package/src/nodes/core/NodeFunction.js +2 -1
  440. package/src/nodes/core/NodeParser.js +2 -1
  441. package/src/nodes/core/NodeUniform.js +1 -1
  442. package/src/nodes/core/NodeUtils.js +25 -97
  443. package/src/nodes/core/OutputStructNode.js +12 -10
  444. package/src/nodes/core/ParameterNode.js +34 -3
  445. package/src/nodes/core/PropertyNode.js +26 -3
  446. package/src/nodes/core/StackNode.js +99 -23
  447. package/src/nodes/core/StackTrace.js +139 -0
  448. package/src/nodes/core/StructNode.js +22 -8
  449. package/src/nodes/core/StructTypeNode.js +13 -18
  450. package/src/nodes/core/SubBuildNode.js +4 -4
  451. package/src/nodes/core/UniformGroupNode.js +36 -6
  452. package/src/nodes/core/UniformNode.js +37 -13
  453. package/src/nodes/core/VarNode.js +96 -34
  454. package/src/nodes/core/VaryingNode.js +2 -18
  455. package/src/nodes/display/BlendModes.js +0 -63
  456. package/src/nodes/display/BumpMapNode.js +1 -1
  457. package/src/nodes/display/ColorAdjustment.js +18 -1
  458. package/src/nodes/display/ColorSpaceNode.js +3 -3
  459. package/src/nodes/display/FrontFacingNode.js +4 -8
  460. package/src/nodes/display/NormalMapNode.js +41 -5
  461. package/src/nodes/display/PassNode.js +175 -25
  462. package/src/nodes/display/RenderOutputNode.js +35 -9
  463. package/src/nodes/display/ScreenNode.js +47 -15
  464. package/src/nodes/display/ToneMappingNode.js +32 -5
  465. package/src/nodes/display/ToonOutlinePassNode.js +10 -2
  466. package/src/nodes/display/ViewportDepthNode.js +52 -4
  467. package/src/nodes/display/ViewportDepthTextureNode.js +14 -6
  468. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  469. package/src/nodes/display/ViewportTextureNode.js +72 -14
  470. package/src/nodes/fog/Fog.js +18 -34
  471. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  472. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  473. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  474. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  475. package/src/nodes/functions/BasicLightingModel.js +2 -1
  476. package/src/nodes/functions/PhysicalLightingModel.js +128 -46
  477. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  478. package/src/nodes/geometry/RangeNode.js +44 -6
  479. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  480. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  481. package/src/nodes/gpgpu/ComputeBuiltinNode.js +4 -4
  482. package/src/nodes/gpgpu/ComputeNode.js +76 -38
  483. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  484. package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -4
  485. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  486. package/src/nodes/lighting/EnvironmentNode.js +34 -9
  487. package/src/nodes/lighting/LightsNode.js +10 -32
  488. package/src/nodes/lighting/PointShadowNode.js +167 -148
  489. package/src/nodes/lighting/ShadowFilterNode.js +55 -65
  490. package/src/nodes/lighting/ShadowNode.js +189 -44
  491. package/src/nodes/math/BitcastNode.js +156 -0
  492. package/src/nodes/math/BitcountNode.js +433 -0
  493. package/src/nodes/math/ConditionalNode.js +25 -8
  494. package/src/nodes/math/MathNode.js +98 -57
  495. package/src/nodes/math/OperatorNode.js +8 -5
  496. package/src/nodes/math/PackFloatNode.js +98 -0
  497. package/src/nodes/math/UnpackFloatNode.js +96 -0
  498. package/src/nodes/pmrem/PMREMNode.js +1 -1
  499. package/src/nodes/pmrem/PMREMUtils.js +111 -2
  500. package/src/nodes/shapes/Shapes.js +1 -1
  501. package/src/nodes/tsl/TSLBase.js +6 -3
  502. package/src/nodes/tsl/TSLCore.js +488 -166
  503. package/src/nodes/utils/ArrayElementNode.js +14 -1
  504. package/src/nodes/utils/ConvertNode.js +1 -1
  505. package/src/nodes/utils/DebugNode.js +14 -13
  506. package/src/nodes/utils/EventNode.js +67 -2
  507. package/src/nodes/utils/FlipNode.js +1 -1
  508. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  509. package/src/nodes/utils/JoinNode.js +7 -4
  510. package/src/nodes/utils/LoopNode.js +20 -24
  511. package/src/nodes/utils/MemberNode.js +60 -8
  512. package/src/nodes/utils/Packing.js +13 -1
  513. package/src/nodes/utils/PostProcessingUtils.js +60 -1
  514. package/src/nodes/utils/RTTNode.js +14 -4
  515. package/src/nodes/utils/ReflectorNode.js +61 -11
  516. package/src/nodes/utils/Remap.js +48 -0
  517. package/src/nodes/utils/RotateNode.js +1 -1
  518. package/src/nodes/utils/SampleNode.js +12 -2
  519. package/src/nodes/utils/SetNode.js +1 -1
  520. package/src/nodes/utils/SplitNode.js +12 -1
  521. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  522. package/src/nodes/utils/Timer.js +0 -47
  523. package/src/nodes/utils/UVUtils.js +28 -0
  524. package/src/objects/BatchedMesh.js +46 -18
  525. package/src/objects/InstancedMesh.js +30 -3
  526. package/src/objects/LOD.js +1 -1
  527. package/src/objects/Line.js +3 -2
  528. package/src/objects/LineSegments.js +2 -1
  529. package/src/objects/Mesh.js +1 -1
  530. package/src/objects/Points.js +1 -1
  531. package/src/objects/Skeleton.js +12 -2
  532. package/src/objects/SkinnedMesh.js +29 -10
  533. package/src/objects/Sprite.js +4 -3
  534. package/src/renderers/WebGLRenderer.js +372 -179
  535. package/src/renderers/common/Animation.js +16 -4
  536. package/src/renderers/common/Attributes.js +16 -2
  537. package/src/renderers/common/Backend.js +137 -35
  538. package/src/renderers/common/Background.js +28 -14
  539. package/src/renderers/common/BindGroup.js +1 -16
  540. package/src/renderers/common/Binding.js +11 -0
  541. package/src/renderers/common/Bindings.js +83 -12
  542. package/src/renderers/common/BlendMode.js +143 -0
  543. package/src/renderers/common/Buffer.js +40 -0
  544. package/src/renderers/common/BundleGroup.js +1 -1
  545. package/src/renderers/common/CanvasTarget.js +341 -0
  546. package/src/renderers/common/ChainMap.js +30 -6
  547. package/src/renderers/common/ComputePipeline.js +1 -1
  548. package/src/renderers/common/CubeRenderTarget.js +51 -7
  549. package/src/renderers/common/DataMap.js +1 -1
  550. package/src/renderers/common/Geometries.js +55 -3
  551. package/src/renderers/common/Info.js +337 -6
  552. package/src/renderers/common/InspectorBase.js +151 -0
  553. package/src/renderers/common/Lighting.js +5 -21
  554. package/src/renderers/common/Pipelines.js +41 -8
  555. package/src/renderers/common/PostProcessing.js +9 -226
  556. package/src/renderers/common/QuadMesh.js +7 -1
  557. package/src/renderers/common/ReadbackBuffer.js +78 -0
  558. package/src/renderers/common/RenderBundle.js +3 -1
  559. package/src/renderers/common/RenderBundles.js +7 -3
  560. package/src/renderers/common/RenderContext.js +18 -2
  561. package/src/renderers/common/RenderContexts.js +33 -49
  562. package/src/renderers/common/RenderList.js +7 -3
  563. package/src/renderers/common/RenderLists.js +2 -1
  564. package/src/renderers/common/RenderObject.js +32 -6
  565. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  566. package/src/renderers/common/RenderObjects.js +22 -6
  567. package/src/renderers/common/RenderPipeline.js +232 -17
  568. package/src/renderers/common/Renderer.js +927 -335
  569. package/src/renderers/common/RendererUtils.js +9 -0
  570. package/src/renderers/common/SampledTexture.js +9 -1
  571. package/src/renderers/common/Sampler.js +52 -14
  572. package/src/renderers/common/StorageBuffer.js +13 -1
  573. package/src/renderers/common/StorageTexture.js +9 -1
  574. package/src/renderers/common/Textures.js +208 -47
  575. package/src/renderers/common/TimestampQueryPool.js +70 -6
  576. package/src/renderers/common/Uniform.js +8 -0
  577. package/src/renderers/common/UniformsGroup.js +64 -2
  578. package/src/renderers/common/XRManager.js +79 -51
  579. package/src/renderers/common/extras/PMREMGenerator.js +176 -79
  580. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  581. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  582. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +260 -95
  583. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  584. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  585. package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
  586. package/src/renderers/shaders/DFGLUTData.js +49 -0
  587. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  588. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  589. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  590. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  591. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  592. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  593. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -2
  594. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
  595. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  596. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  597. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  598. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  599. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  600. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
  601. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  602. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +152 -59
  603. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  604. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  605. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  606. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  607. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  608. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  609. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  610. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +221 -190
  611. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  612. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  613. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  614. package/src/renderers/shaders/ShaderChunk.js +5 -3
  615. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  616. package/src/renderers/shaders/ShaderLib/depth.glsl.js +4 -1
  617. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
  618. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  619. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  620. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  621. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  622. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  623. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  624. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  625. package/src/renderers/shaders/ShaderLib.js +7 -6
  626. package/src/renderers/shaders/UniformsLib.js +8 -5
  627. package/src/renderers/shaders/UniformsUtils.js +52 -9
  628. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  629. package/src/renderers/webgl/WebGLBackground.js +15 -15
  630. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  631. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  632. package/src/renderers/webgl/WebGLCapabilities.js +11 -5
  633. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  634. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  635. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  636. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  637. package/src/renderers/webgl/WebGLInfo.js +3 -1
  638. package/src/renderers/webgl/WebGLLights.js +18 -1
  639. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  640. package/src/renderers/webgl/WebGLObjects.js +3 -1
  641. package/src/renderers/webgl/WebGLOutput.js +270 -0
  642. package/src/renderers/webgl/WebGLProgram.js +63 -122
  643. package/src/renderers/webgl/WebGLPrograms.js +65 -52
  644. package/src/renderers/webgl/WebGLRenderLists.js +15 -0
  645. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  646. package/src/renderers/webgl/WebGLShadowMap.js +191 -26
  647. package/src/renderers/webgl/WebGLState.js +79 -40
  648. package/src/renderers/webgl/WebGLTextures.js +234 -68
  649. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  650. package/src/renderers/webgl/WebGLUniformsGroups.js +24 -3
  651. package/src/renderers/webgl/WebGLUtils.js +8 -3
  652. package/src/renderers/webgl-fallback/WebGLBackend.js +438 -235
  653. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  654. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +339 -84
  655. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  656. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  657. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  658. package/src/renderers/webgl-fallback/utils/WebGLState.js +229 -11
  659. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +237 -72
  660. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +56 -27
  661. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +8 -3
  662. package/src/renderers/webgpu/WebGPUBackend.js +403 -253
  663. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  664. package/src/renderers/webgpu/WebGPURenderer.js +5 -3
  665. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +491 -123
  666. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +108 -34
  667. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +360 -201
  668. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  669. package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -2
  670. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +111 -54
  671. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +155 -205
  672. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +407 -149
  673. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +36 -13
  674. package/src/renderers/webgpu/utils/WebGPUUtils.js +55 -13
  675. package/src/renderers/webxr/WebXRController.js +12 -0
  676. package/src/renderers/webxr/WebXRManager.js +45 -29
  677. package/src/textures/CubeDepthTexture.js +76 -0
  678. package/src/textures/ExternalTexture.js +15 -4
  679. package/src/textures/HTMLTexture.js +74 -0
  680. package/src/textures/Source.js +5 -4
  681. package/src/textures/Texture.js +19 -7
  682. package/src/textures/VideoTexture.js +2 -3
  683. package/src/utils.js +344 -3
  684. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
  685. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  686. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  687. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  688. package/src/nodes/accessors/SceneNode.js +0 -144
  689. package/src/nodes/code/ScriptableNode.js +0 -726
  690. package/src/nodes/code/ScriptableValueNode.js +0 -253
  691. package/src/nodes/display/PosterizeNode.js +0 -65
  692. package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
  693. package/src/nodes/utils/RemapNode.js +0 -125
  694. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  695. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  696. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -2,10 +2,10 @@ import {
2
2
  Color,
3
3
  Mesh,
4
4
  Vector3,
5
- MeshLambertNodeMaterial
5
+ NodeMaterial
6
6
  } from 'three/webgpu';
7
7
 
8
- import { Fn, add, cameraPosition, div, normalize, positionWorld, sub, time, texture, vec2, vec3, max, dot, reflect, pow, length, float, uniform, reflector, mul, mix, diffuseColor } from 'three/tsl';
8
+ import { Fn, add, cameraPosition, div, normalize, positionWorld, sub, time, texture, vec2, max, dot, reflect, pow, length, float, uniform, reflector, mul, mix } from 'three/tsl';
9
9
 
10
10
  /**
11
11
  * A basic flat, reflective water effect.
@@ -15,9 +15,9 @@ import { Fn, add, cameraPosition, div, normalize, positionWorld, sub, time, text
15
15
  *
16
16
  * References:
17
17
  *
18
- * - [Flat mirror for three.js]{@link https://github.com/Slayvin}
19
- * - [An implementation of water shader based on the flat mirror]{@link https://home.adelphi.edu/~stemkoski/}
20
- * - [Water shader explanations in WebGL]{@link http://29a.ch/slides/2012/webglwater/ }
18
+ * - [Flat mirror for three.js](https://github.com/Slayvin)
19
+ * - [An implementation of water shader based on the flat mirror](https://home.adelphi.edu/~stemkoski/)
20
+ * - [Water shader explanations in WebGL](http://29a.ch/slides/2012/webglwater/ )
21
21
  *
22
22
  * @augments Mesh
23
23
  * @three_import import { WaterMesh } from 'three/addons/objects/WaterMesh.js';
@@ -32,7 +32,7 @@ class WaterMesh extends Mesh {
32
32
  */
33
33
  constructor( geometry, options ) {
34
34
 
35
- const material = new MeshLambertNodeMaterial();
35
+ const material = new NodeMaterial();
36
36
 
37
37
  super( geometry, material );
38
38
 
@@ -51,7 +51,7 @@ class WaterMesh extends Mesh {
51
51
  * @type {number}
52
52
  * @default 0.5
53
53
  */
54
- this.resolution = options.resolution !== undefined ? options.resolution : 0.5;
54
+ this.resolutionScale = options.resolutionScale !== undefined ? options.resolutionScale : 0.5;
55
55
 
56
56
  // Uniforms
57
57
 
@@ -155,21 +155,19 @@ class WaterMesh extends Mesh {
155
155
 
156
156
  material.receivedShadowPositionNode = positionWorld.add( distortion );
157
157
 
158
- material.setupOutgoingLight = () => diffuseColor.rgb; // backwards compatibility
159
-
160
158
  material.colorNode = Fn( () => {
161
159
 
162
160
  const mirrorSampler = reflector();
163
161
  mirrorSampler.uvNode = mirrorSampler.uvNode.add( distortion );
164
- mirrorSampler.resolution = this.resolution;
162
+ mirrorSampler.reflector.resolutionScale = this.resolutionScale;
165
163
 
166
164
  this.add( mirrorSampler.target );
167
165
 
168
166
  const theta = max( dot( eyeDirection, surfaceNormal ), 0.0 );
169
- const rf0 = float( 0.3 );
167
+ const rf0 = float( 0.02 );
170
168
  const reflectance = mul( pow( float( 1.0 ).sub( theta ), 5.0 ), float( 1.0 ).sub( rf0 ) ).add( rf0 );
171
169
  const scatter = max( 0.0, dot( surfaceNormal, eyeDirection ) ).mul( this.waterColor );
172
- const albedo = mix( this.sunColor.mul( diffuseLight ).mul( 0.3 ).add( scatter ), mirrorSampler.rgb.mul( specularLight ).add( mirrorSampler.rgb.mul( 0.9 ) ).add( vec3( 0.1 ) ), reflectance );
170
+ const albedo = mix( this.sunColor.mul( diffuseLight ).mul( 0.3 ).add( scatter ), mirrorSampler.rgb.add( specularLight ), reflectance );
173
171
 
174
172
  return albedo;
175
173
 
@@ -183,7 +181,7 @@ class WaterMesh extends Mesh {
183
181
  * Constructor options of `WaterMesh`.
184
182
  *
185
183
  * @typedef {Object} WaterMesh~Options
186
- * @property {number} [resolution=0.5] - The resolution scale.
184
+ * @property {number} [resolutionScale=0.5] - The resolution scale.
187
185
  * @property {?Texture} [waterNormals=null] - The water's normal map.
188
186
  * @property {number} [alpha=1] - The alpha value.
189
187
  * @property {number} [size=1] - The size value.
@@ -23,7 +23,7 @@ async function AmmoPhysics() {
23
23
 
24
24
  }
25
25
 
26
- const AmmoLib = await Ammo(); // eslint-disable-line no-undef
26
+ const AmmoLib = await Ammo();
27
27
 
28
28
  const frameRate = 60;
29
29
 
@@ -66,6 +66,8 @@ async function AmmoPhysics() {
66
66
 
67
67
  }
68
68
 
69
+ console.error( 'AmmoPhysics: Unsupported geometry type:', geometry.type );
70
+
69
71
  return null;
70
72
 
71
73
  }
@@ -83,7 +85,7 @@ async function AmmoPhysics() {
83
85
 
84
86
  if ( physics ) {
85
87
 
86
- addMesh( child, physics.mass );
88
+ addMesh( child, physics.mass, physics.restitution );
87
89
 
88
90
  }
89
91
 
@@ -93,7 +95,7 @@ async function AmmoPhysics() {
93
95
 
94
96
  }
95
97
 
96
- function addMesh( mesh, mass = 0 ) {
98
+ function addMesh( mesh, mass = 0, restitution = 0 ) {
97
99
 
98
100
  const shape = getShape( mesh.geometry );
99
101
 
@@ -101,11 +103,11 @@ async function AmmoPhysics() {
101
103
 
102
104
  if ( mesh.isInstancedMesh ) {
103
105
 
104
- handleInstancedMesh( mesh, mass, shape );
106
+ handleInstancedMesh( mesh, shape, mass, restitution );
105
107
 
106
108
  } else if ( mesh.isMesh ) {
107
109
 
108
- handleMesh( mesh, mass, shape );
110
+ handleMesh( mesh, shape, mass, restitution );
109
111
 
110
112
  }
111
113
 
@@ -113,7 +115,7 @@ async function AmmoPhysics() {
113
115
 
114
116
  }
115
117
 
116
- function handleMesh( mesh, mass, shape ) {
118
+ function handleMesh( mesh, shape, mass, restitution ) {
117
119
 
118
120
  const position = mesh.position;
119
121
  const quaternion = mesh.quaternion;
@@ -129,6 +131,7 @@ async function AmmoPhysics() {
129
131
  shape.calculateLocalInertia( mass, localInertia );
130
132
 
131
133
  const rbInfo = new AmmoLib.btRigidBodyConstructionInfo( mass, motionState, shape, localInertia );
134
+ rbInfo.set_m_restitution( restitution );
132
135
 
133
136
  const body = new AmmoLib.btRigidBody( rbInfo );
134
137
  // body.setFriction( 4 );
@@ -144,7 +147,7 @@ async function AmmoPhysics() {
144
147
 
145
148
  }
146
149
 
147
- function handleInstancedMesh( mesh, mass, shape ) {
150
+ function handleInstancedMesh( mesh, shape, mass, restitution ) {
148
151
 
149
152
  const array = mesh.instanceMatrix.array;
150
153
 
@@ -163,6 +166,7 @@ async function AmmoPhysics() {
163
166
  shape.calculateLocalInertia( mass, localInertia );
164
167
 
165
168
  const rbInfo = new AmmoLib.btRigidBodyConstructionInfo( mass, motionState, shape, localInertia );
169
+ rbInfo.set_m_restitution( restitution );
166
170
 
167
171
  const body = new AmmoLib.btRigidBody( rbInfo );
168
172
  world.addRigidBody( body );
@@ -302,6 +306,7 @@ async function AmmoPhysics() {
302
306
  * @name AmmoPhysics#addMesh
303
307
  * @param {Mesh} mesh The mesh to add.
304
308
  * @param {number} [mass=0] The mass in kg of the mesh.
309
+ * @param {number} [restitution=0] The restitution of the mesh, usually from 0 to 1. Represents how "bouncy" objects are when they collide with each other.
305
310
  */
306
311
  addMesh: addMesh,
307
312
 
@@ -1,6 +1,6 @@
1
- import { Clock, Vector3, Quaternion, Matrix4 } from 'three';
1
+ import { Timer, Vector3, Quaternion, Matrix4 } from 'three';
2
2
 
3
- const JOLT_PATH = 'https://cdn.jsdelivr.net/npm/jolt-physics@0.23.0/dist/jolt-physics.wasm-compat.js';
3
+ const JOLT_PATH = 'https://cdn.jsdelivr.net/npm/jolt-physics@1.0.0/dist/jolt-physics.wasm-compat.js';
4
4
 
5
5
  const frameRate = 60;
6
6
 
@@ -28,6 +28,8 @@ function getShape( geometry ) {
28
28
 
29
29
  }
30
30
 
31
+ console.error( 'JoltPhysics: Unsupported geometry type:', geometry.type );
32
+
31
33
  return null;
32
34
 
33
35
  }
@@ -75,7 +77,7 @@ async function JoltPhysics() {
75
77
 
76
78
  if ( Jolt === null ) {
77
79
 
78
- const { default: initJolt } = await import( `${JOLT_PATH}` );
80
+ const { default: initJolt } = await import( JOLT_PATH /* @vite-ignore */ );
79
81
  Jolt = await initJolt();
80
82
 
81
83
  }
@@ -220,11 +222,13 @@ async function JoltPhysics() {
220
222
 
221
223
  //
222
224
 
223
- const clock = new Clock();
225
+ const timer = new Timer();
224
226
 
225
227
  function step() {
226
228
 
227
- let deltaTime = clock.getDelta();
229
+ timer.update();
230
+
231
+ let deltaTime = timer.getDelta();
228
232
 
229
233
  // Don't go below 30 Hz to prevent spiral of death
230
234
  deltaTime = Math.min( deltaTime, 1.0 / 30.0 );
@@ -305,7 +309,7 @@ async function JoltPhysics() {
305
309
  * @name JoltPhysics#addMesh
306
310
  * @param {Mesh} mesh The mesh to add.
307
311
  * @param {number} [mass=0] The mass in kg of the mesh.
308
- * @param {number} [restitution=0] The restitution/friction of the mesh.
312
+ * @param {number} [restitution=0] The restitution of the mesh, usually from 0 to 1. Represents how "bouncy" objects are when they collide with each other.
309
313
  */
310
314
  addMesh: addMesh,
311
315
 
@@ -1,4 +1,4 @@
1
- import { Clock, Vector3, Quaternion, Matrix4 } from 'three';
1
+ import { Timer, Vector3, Quaternion, Matrix4 } from 'three';
2
2
 
3
3
  const RAPIER_PATH = 'https://cdn.skypack.dev/@dimforge/rapier3d-compat@0.17.3';
4
4
 
@@ -73,6 +73,8 @@ function getShape( geometry ) {
73
73
 
74
74
  }
75
75
 
76
+ console.error( 'RapierPhysics: Unsupported geometry type:', geometry.type );
77
+
76
78
  return null;
77
79
 
78
80
  }
@@ -95,7 +97,7 @@ async function RapierPhysics() {
95
97
 
96
98
  if ( RAPIER === null ) {
97
99
 
98
- RAPIER = await import( `${RAPIER_PATH}` );
100
+ RAPIER = await import( RAPIER_PATH /* @vite-ignore */ );
99
101
  await RAPIER.init();
100
102
 
101
103
  }
@@ -299,11 +301,13 @@ async function RapierPhysics() {
299
301
 
300
302
  //
301
303
 
302
- const clock = new Clock();
304
+ const timer = new Timer();
303
305
 
304
306
  function step() {
305
307
 
306
- world.timestep = clock.getDelta();
308
+ timer.update();
309
+
310
+ world.timestep = timer.getDelta();
307
311
  world.step();
308
312
 
309
313
  //
@@ -372,7 +376,7 @@ async function RapierPhysics() {
372
376
  * @name RapierPhysics#addMesh
373
377
  * @param {Mesh} mesh The mesh to add.
374
378
  * @param {number} [mass=0] The mass in kg of the mesh.
375
- * @param {number} [restitution=0] The restitution/friction of the mesh.
379
+ * @param {number} [restitution=0] The restitution of the mesh, usually from 0 to 1. Represents how "bouncy" objects are when they collide with each other.
376
380
  */
377
381
  addMesh: addMesh,
378
382
 
@@ -1,7 +1,7 @@
1
1
  import {
2
- Clock,
3
2
  HalfFloatType,
4
3
  NoBlending,
4
+ Timer,
5
5
  Vector2,
6
6
  WebGLRenderTarget
7
7
  } from 'three';
@@ -123,12 +123,12 @@ class EffectComposer {
123
123
  this.copyPass.material.blending = NoBlending;
124
124
 
125
125
  /**
126
- * The internal clock for managing time data.
126
+ * The internal timer for managing time data.
127
127
  *
128
128
  * @private
129
- * @type {Clock}
129
+ * @type {Timer}
130
130
  */
131
- this.clock = new Clock();
131
+ this.timer = new Timer();
132
132
 
133
133
  this.onSessionStateChange = this.onSessionStateChange.bind( this );
134
134
  this.renderer.xr.addEventListener( 'sessionstart', this.onSessionStateChange );
@@ -233,9 +233,11 @@ class EffectComposer {
233
233
 
234
234
  // deltaTime value is in seconds
235
235
 
236
+ this.timer.update();
237
+
236
238
  if ( deltaTime === undefined ) {
237
239
 
238
- deltaTime = this.clock.getDelta();
240
+ deltaTime = this.timer.getDelta();
239
241
 
240
242
  }
241
243
 
@@ -61,7 +61,7 @@ class GlitchPass extends Pass {
61
61
  // internals
62
62
 
63
63
  this._heightMap = this._generateHeightmap( dt_size );
64
- this.uniforms[ 'tDisp' ].value = this.heightMap;
64
+ this.uniforms[ 'tDisp' ].value = this._heightMap;
65
65
 
66
66
  this._fsQuad = new FullScreenQuad( this.material );
67
67
 
@@ -140,7 +140,7 @@ class GlitchPass extends Pass {
140
140
 
141
141
  this.material.dispose();
142
142
 
143
- this.heightMap.dispose();
143
+ this._heightMap.dispose();
144
144
 
145
145
  this._fsQuad.dispose();
146
146
 
@@ -510,7 +510,7 @@ class OutlinePass extends Pass {
510
510
 
511
511
  }
512
512
 
513
- } else if ( object.isMesh || object.isSprite) {
513
+ } else if ( object.isMesh || object.isSprite ) {
514
514
 
515
515
  // only meshes and sprites are supported by OutlinePass
516
516
 
@@ -39,6 +39,15 @@ class OutputPass extends Pass {
39
39
 
40
40
  super();
41
41
 
42
+ /**
43
+ * This flag indicates that this is an output pass.
44
+ *
45
+ * @type {boolean}
46
+ * @readonly
47
+ * @default true
48
+ */
49
+ this.isOutputPass = true;
50
+
42
51
  /**
43
52
  * The pass uniforms.
44
53
  *
@@ -93,6 +93,16 @@ class RenderPass extends Pass {
93
93
  * @default false
94
94
  */
95
95
  this.needsSwap = false;
96
+
97
+ /**
98
+ * This flag indicates that this pass renders the scene itself.
99
+ *
100
+ * @type {boolean}
101
+ * @readonly
102
+ * @default true
103
+ */
104
+ this.isRenderPass = true;
105
+
96
106
  this._oldClearColor = new Color();
97
107
 
98
108
  }
@@ -114,7 +114,7 @@ class RenderTransitionPass extends Pass {
114
114
  }
115
115
 
116
116
  /**
117
- * Sets the texture threshold. This value defined how strong the texture effects
117
+ * Sets the texture threshold. This value defines how strong the texture effects
118
118
  * the transition. Must be in the range `[0,1]` (0 means full effect, 1 means no effect).
119
119
  *
120
120
  * @param {boolean|number} value - The threshold value.
@@ -137,6 +137,8 @@ class SSRPass extends Pass {
137
137
 
138
138
  this._selects = selects;
139
139
 
140
+ this._resolutionScale = 1;
141
+
140
142
  /**
141
143
  * Whether the pass is selective or not.
142
144
  *
@@ -457,6 +459,29 @@ class SSRPass extends Pass {
457
459
 
458
460
  }
459
461
 
462
+
463
+ /**
464
+ * The resolution scale. Valid values are in the range
465
+ * `[0,1]`. `1` means best quality but also results in
466
+ * more computational overhead. Setting to `0.5` means
467
+ * the effect is computed in half-resolution.
468
+ *
469
+ * @type {number}
470
+ * @default 1
471
+ */
472
+ get resolutionScale() {
473
+
474
+ return this._resolutionScale;
475
+
476
+ }
477
+
478
+ set resolutionScale( value ) {
479
+
480
+ this._resolutionScale = value;
481
+ this.setSize( this.width, this.height ); // force a resize when resolution scaling changes
482
+
483
+ }
484
+
460
485
  /**
461
486
  * Frees the GPU-related resources allocated by this instance. Call this
462
487
  * method whenever the pass is no longer used in your app.
@@ -661,23 +686,27 @@ class SSRPass extends Pass {
661
686
  this.width = width;
662
687
  this.height = height;
663
688
 
664
- this.ssrMaterial.defines.MAX_STEP = Math.sqrt( width * width + height * height );
689
+ const effectiveWidth = Math.round( this.resolutionScale * width );
690
+ const effectiveHeight = Math.round( this.resolutionScale * height );
691
+
692
+ this.ssrMaterial.defines.MAX_STEP = Math.sqrt( effectiveWidth * effectiveWidth + effectiveHeight * effectiveHeight );
665
693
  this.ssrMaterial.needsUpdate = true;
694
+
666
695
  this.beautyRenderTarget.setSize( width, height );
667
- this.prevRenderTarget.setSize( width, height );
668
- this.ssrRenderTarget.setSize( width, height );
669
696
  this.normalRenderTarget.setSize( width, height );
670
697
  this.metalnessRenderTarget.setSize( width, height );
671
- this.blurRenderTarget.setSize( width, height );
672
- this.blurRenderTarget2.setSize( width, height );
698
+ this.ssrRenderTarget.setSize( effectiveWidth, effectiveHeight );
699
+ this.prevRenderTarget.setSize( effectiveWidth, effectiveHeight );
700
+ this.blurRenderTarget.setSize( effectiveWidth, effectiveHeight );
701
+ this.blurRenderTarget2.setSize( effectiveWidth, effectiveHeight );
673
702
  // this.blurRenderTarget3.setSize(width, height);
674
703
 
675
- this.ssrMaterial.uniforms[ 'resolution' ].value.set( width, height );
704
+ this.ssrMaterial.uniforms[ 'resolution' ].value.set( effectiveWidth, effectiveHeight );
676
705
  this.ssrMaterial.uniforms[ 'cameraProjectionMatrix' ].value.copy( this.camera.projectionMatrix );
677
706
  this.ssrMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse );
678
707
 
679
- this.blurMaterial.uniforms[ 'resolution' ].value.set( width, height );
680
- this.blurMaterial2.uniforms[ 'resolution' ].value.set( width, height );
708
+ this.blurMaterial.uniforms[ 'resolution' ].value.set( effectiveWidth, effectiveHeight );
709
+ this.blurMaterial2.uniforms[ 'resolution' ].value.set( effectiveWidth, effectiveHeight );
681
710
 
682
711
  }
683
712
 
@@ -22,7 +22,7 @@ import { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader.js
22
22
  * When using this pass, tone mapping must be enabled in the renderer settings.
23
23
  *
24
24
  * Reference:
25
- * - [Bloom in Unreal Engine]{@link https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/}
25
+ * - [Bloom in Unreal Engine](https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/)
26
26
  *
27
27
  * ```js
28
28
  * const resolution = new THREE.Vector2( window.innerWidth, window.innerHeight );
@@ -56,7 +56,7 @@ class UnrealBloomPass extends Pass {
56
56
  this.strength = strength;
57
57
 
58
58
  /**
59
- * The Bloom radius.
59
+ * The Bloom radius. Must be in the range `[0,1]`.
60
60
  *
61
61
  * @type {number}
62
62
  */
@@ -145,7 +145,9 @@ class UnrealBloomPass extends Pass {
145
145
  // gaussian blur materials
146
146
 
147
147
  this.separableBlurMaterials = [];
148
- const kernelSizeArray = [ 3, 5, 7, 9, 11 ];
148
+ // These sizes have been changed to account for the altered coefficients-calculation to avoid blockiness,
149
+ // while retaining the same blur-strength. For details see https://github.com/mrdoob/three.js/pull/31528
150
+ const kernelSizeArray = [ 6, 10, 14, 18, 22 ];
149
151
  resx = Math.round( this.resolution.x / 2 );
150
152
  resy = Math.round( this.resolution.y / 2 );
151
153
 
@@ -185,6 +187,7 @@ class UnrealBloomPass extends Pass {
185
187
  uniforms: this.copyUniforms,
186
188
  vertexShader: CopyShader.vertexShader,
187
189
  fragmentShader: CopyShader.fragmentShader,
190
+ premultipliedAlpha: true,
188
191
  blending: AdditiveBlending,
189
192
  depthTest: false,
190
193
  depthWrite: false,
@@ -376,10 +379,11 @@ class UnrealBloomPass extends Pass {
376
379
  _getSeparableBlurMaterial( kernelRadius ) {
377
380
 
378
381
  const coefficients = [];
382
+ const sigma = kernelRadius / 3;
379
383
 
380
384
  for ( let i = 0; i < kernelRadius; i ++ ) {
381
385
 
382
- coefficients.push( 0.39894 * Math.exp( - 0.5 * i * i / ( kernelRadius * kernelRadius ) ) / kernelRadius );
386
+ coefficients.push( 0.39894 * Math.exp( - 0.5 * i * i / ( sigma * sigma ) ) / sigma );
383
387
 
384
388
  }
385
389
 
@@ -396,34 +400,46 @@ class UnrealBloomPass extends Pass {
396
400
  'gaussianCoefficients': { value: coefficients } // precomputed Gaussian coefficients
397
401
  },
398
402
 
399
- vertexShader:
400
- `varying vec2 vUv;
403
+ vertexShader: /* glsl */`
404
+
405
+ varying vec2 vUv;
406
+
401
407
  void main() {
408
+
402
409
  vUv = uv;
403
410
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
411
+
404
412
  }`,
405
413
 
406
- fragmentShader:
407
- `#include <common>
414
+ fragmentShader: /* glsl */`
415
+
416
+ #include <common>
417
+
408
418
  varying vec2 vUv;
419
+
409
420
  uniform sampler2D colorTexture;
410
421
  uniform vec2 invSize;
411
422
  uniform vec2 direction;
412
423
  uniform float gaussianCoefficients[KERNEL_RADIUS];
413
424
 
414
425
  void main() {
426
+
415
427
  float weightSum = gaussianCoefficients[0];
416
428
  vec3 diffuseSum = texture2D( colorTexture, vUv ).rgb * weightSum;
417
- for( int i = 1; i < KERNEL_RADIUS; i ++ ) {
418
- float x = float(i);
429
+
430
+ for ( int i = 1; i < KERNEL_RADIUS; i ++ ) {
431
+
432
+ float x = float( i );
419
433
  float w = gaussianCoefficients[i];
420
434
  vec2 uvOffset = direction * invSize * x;
421
435
  vec3 sample1 = texture2D( colorTexture, vUv + uvOffset ).rgb;
422
436
  vec3 sample2 = texture2D( colorTexture, vUv - uvOffset ).rgb;
423
- diffuseSum += (sample1 + sample2) * w;
424
- weightSum += 2.0 * w;
437
+ diffuseSum += ( sample1 + sample2 ) * w;
438
+
425
439
  }
426
- gl_FragColor = vec4(diffuseSum/weightSum, 1.0);
440
+
441
+ gl_FragColor = vec4( diffuseSum, 1.0 );
442
+
427
443
  }`
428
444
  } );
429
445
 
@@ -449,15 +465,21 @@ class UnrealBloomPass extends Pass {
449
465
  'bloomRadius': { value: 0.0 }
450
466
  },
451
467
 
452
- vertexShader:
453
- `varying vec2 vUv;
468
+ vertexShader: /* glsl */`
469
+
470
+ varying vec2 vUv;
471
+
454
472
  void main() {
473
+
455
474
  vUv = uv;
456
475
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
476
+
457
477
  }`,
458
478
 
459
- fragmentShader:
460
- `varying vec2 vUv;
479
+ fragmentShader: /* glsl */`
480
+
481
+ varying vec2 vUv;
482
+
461
483
  uniform sampler2D blurTexture1;
462
484
  uniform sampler2D blurTexture2;
463
485
  uniform sampler2D blurTexture3;
@@ -468,17 +490,27 @@ class UnrealBloomPass extends Pass {
468
490
  uniform float bloomFactors[NUM_MIPS];
469
491
  uniform vec3 bloomTintColors[NUM_MIPS];
470
492
 
471
- float lerpBloomFactor(const in float factor) {
493
+ float lerpBloomFactor( const in float factor ) {
494
+
472
495
  float mirrorFactor = 1.2 - factor;
473
- return mix(factor, mirrorFactor, bloomRadius);
496
+ return mix( factor, mirrorFactor, bloomRadius );
497
+
474
498
  }
475
499
 
476
500
  void main() {
477
- gl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +
478
- lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +
479
- lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +
480
- lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +
481
- lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );
501
+
502
+ // 3.0 for backwards compatibility with previous alpha-based intensity
503
+ vec3 bloom = 3.0 * bloomStrength * (
504
+ lerpBloomFactor( bloomFactors[ 0 ] ) * bloomTintColors[ 0 ] * texture2D( blurTexture1, vUv ).rgb +
505
+ lerpBloomFactor( bloomFactors[ 1 ] ) * bloomTintColors[ 1 ] * texture2D( blurTexture2, vUv ).rgb +
506
+ lerpBloomFactor( bloomFactors[ 2 ] ) * bloomTintColors[ 2 ] * texture2D( blurTexture3, vUv ).rgb +
507
+ lerpBloomFactor( bloomFactors[ 3 ] ) * bloomTintColors[ 3 ] * texture2D( blurTexture4, vUv ).rgb +
508
+ lerpBloomFactor( bloomFactors[ 4 ] ) * bloomTintColors[ 4 ] * texture2D( blurTexture5, vUv ).rgb
509
+ );
510
+
511
+ float bloomAlpha = max( bloom.r, max( bloom.g, bloom.b ) );
512
+ gl_FragColor = vec4( bloom, bloomAlpha );
513
+
482
514
  }`
483
515
  } );
484
516
 
@@ -16,7 +16,7 @@ class CSS2DObject extends Object3D {
16
16
  /**
17
17
  * Constructs a new CSS2D object.
18
18
  *
19
- * @param {DOMElement} [element] - The DOM element.
19
+ * @param {HTMLElement} [element] - The DOM element.
20
20
  */
21
21
  constructor( element = document.createElement( 'div' ) ) {
22
22
 
@@ -34,7 +34,7 @@ class CSS2DObject extends Object3D {
34
34
  /**
35
35
  * The DOM element which defines the appearance of this 3D object.
36
36
  *
37
- * @type {DOMElement}
37
+ * @type {HTMLElement}
38
38
  * @readonly
39
39
  * @default true
40
40
  */
@@ -59,6 +59,7 @@ class CSS2DObject extends Object3D {
59
59
  this.traverse( function ( object ) {
60
60
 
61
61
  if (
62
+ object.element &&
62
63
  object.element instanceof object.element.ownerDocument.defaultView.Element &&
63
64
  object.element.parentNode !== null
64
65
  ) {
@@ -132,10 +133,20 @@ class CSS2DRenderer {
132
133
  /**
133
134
  * The DOM where the renderer appends its child-elements.
134
135
  *
135
- * @type {DOMElement}
136
+ * @type {HTMLElement}
136
137
  */
137
138
  this.domElement = domElement;
138
139
 
140
+ /**
141
+ * Controls whether the renderer assigns `z-index` values to CSS2DObject DOM elements.
142
+ * If set to `true`, z-index values are assigned first based on the `renderOrder`
143
+ * and secondly - the distance to the camera. If set to `false`, no z-index values are assigned.
144
+ *
145
+ * @type {boolean}
146
+ * @default true
147
+ */
148
+ this.sortObjects = true;
149
+
139
150
  /**
140
151
  * Returns an object containing the width and height of the renderer.
141
152
  *
@@ -165,7 +176,7 @@ class CSS2DRenderer {
165
176
  _viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix );
166
177
 
167
178
  renderObject( scene, scene, camera );
168
- zOrder( scene );
179
+ if ( this.sortObjects ) zOrder( scene );
169
180
 
170
181
  };
171
182
 
@@ -310,7 +321,7 @@ class CSS2DRenderer {
310
321
  * Constructor parameters of `CSS2DRenderer`.
311
322
  *
312
323
  * @typedef {Object} CSS2DRenderer~Parameters
313
- * @property {DOMElement} [element] - A DOM element where the renderer appends its child-elements.
324
+ * @property {HTMLElement} [element] - A DOM element where the renderer appends its child-elements.
314
325
  * If not passed in here, a new div element will be created.
315
326
  **/
316
327