@needle-tools/three 0.145.4 → 0.146.2

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 (393) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +32586 -35951
  3. package/build/three.js +32600 -35965
  4. package/build/three.min.js +6 -7
  5. package/build/three.module.js +1547 -1154
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +49 -66
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +70 -134
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +138 -405
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -54
  14. package/examples/js/controls/FlyControls.js +29 -55
  15. package/examples/js/controls/OrbitControls.js +85 -95
  16. package/examples/js/controls/PointerLockControls.js +5 -14
  17. package/examples/js/controls/TrackballControls.js +33 -86
  18. package/examples/js/controls/TransformControls.js +84 -169
  19. package/examples/js/csm/CSM.js +4 -39
  20. package/examples/js/csm/CSMFrustum.js +3 -9
  21. package/examples/js/csm/CSMHelper.js +24 -4
  22. package/examples/js/csm/CSMShader.js +2 -6
  23. package/examples/js/curves/CurveExtras.js +27 -27
  24. package/examples/js/curves/NURBSCurve.js +4 -16
  25. package/examples/js/curves/NURBSSurface.js +3 -9
  26. package/examples/js/curves/NURBSUtils.js +8 -45
  27. package/examples/js/effects/AnaglyphEffect.js +4 -18
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +26 -30
  30. package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
  31. package/examples/js/effects/PeppersGhostEffect.js +12 -39
  32. package/examples/js/effects/StereoEffect.js +0 -4
  33. package/examples/js/environments/RoomEnvironment.js +12 -10
  34. package/examples/js/exporters/ColladaExporter.js +48 -65
  35. package/examples/js/exporters/DRACOExporter.js +22 -22
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +143 -261
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +42 -33
  40. package/examples/js/exporters/PLYExporter.js +38 -33
  41. package/examples/js/exporters/STLExporter.js +5 -7
  42. package/examples/js/exporters/USDZExporter.js +110 -25
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +11 -6
  45. package/examples/js/geometries/DecalGeometry.js +53 -20
  46. package/examples/js/geometries/LightningStrike.js +54 -67
  47. package/examples/js/geometries/ParametricGeometries.js +8 -7
  48. package/examples/js/geometries/ParametricGeometry.js +25 -12
  49. package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
  50. package/examples/js/geometries/TeapotGeometry.js +54 -50
  51. package/examples/js/geometries/TextGeometry.js +6 -4
  52. package/examples/js/helpers/LightProbeHelper.js +1 -2
  53. package/examples/js/helpers/OctreeHelper.js +22 -20
  54. package/examples/js/helpers/PositionalAudioHelper.js +8 -6
  55. package/examples/js/helpers/RectAreaLightHelper.js +6 -7
  56. package/examples/js/helpers/VertexNormalsHelper.js +15 -13
  57. package/examples/js/helpers/VertexTangentsHelper.js +15 -9
  58. package/examples/js/helpers/ViewHelper.js +31 -16
  59. package/examples/js/interactive/HTMLMesh.js +22 -33
  60. package/examples/js/interactive/InteractiveGroup.js +6 -12
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +0 -8
  63. package/examples/js/lights/LightProbeGenerator.js +32 -39
  64. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  65. package/examples/js/lines/LineGeometry.js +3 -5
  66. package/examples/js/lines/LineMaterial.js +4 -11
  67. package/examples/js/lines/LineSegments2.js +38 -89
  68. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  69. package/examples/js/lines/Wireframe.js +2 -7
  70. package/examples/js/lines/WireframeGeometry2.js +3 -1
  71. package/examples/js/loaders/3DMLoader.js +58 -155
  72. package/examples/js/loaders/3MFLoader.js +72 -106
  73. package/examples/js/loaders/AMFLoader.js +0 -25
  74. package/examples/js/loaders/BVHLoader.js +44 -43
  75. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  76. package/examples/js/loaders/ColladaLoader.js +201 -359
  77. package/examples/js/loaders/DDSLoader.js +24 -25
  78. package/examples/js/loaders/DRACOLoader.js +29 -66
  79. package/examples/js/loaders/EXRLoader.js +67 -164
  80. package/examples/js/loaders/FBXLoader.js +286 -441
  81. package/examples/js/loaders/FontLoader.js +6 -15
  82. package/examples/js/loaders/GCodeLoader.js +15 -16
  83. package/examples/js/loaders/GLTFLoader.js +354 -405
  84. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
  85. package/examples/js/loaders/KMZLoader.js +3 -7
  86. package/examples/js/loaders/KTXLoader.js +12 -30
  87. package/examples/js/loaders/LDrawLoader.js +178 -289
  88. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  89. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  90. package/examples/js/loaders/LWOLoader.js +59 -124
  91. package/examples/js/loaders/LogLuvLoader.js +27 -77
  92. package/examples/js/loaders/LottieLoader.js +4 -4
  93. package/examples/js/loaders/MD2Loader.js +26 -27
  94. package/examples/js/loaders/MDDLoader.js +6 -10
  95. package/examples/js/loaders/MMDLoader.js +180 -189
  96. package/examples/js/loaders/MTLLoader.js +18 -47
  97. package/examples/js/loaders/MaterialXLoader.js +392 -0
  98. package/examples/js/loaders/NRRDLoader.js +44 -84
  99. package/examples/js/loaders/OBJLoader.js +50 -65
  100. package/examples/js/loaders/PCDLoader.js +34 -29
  101. package/examples/js/loaders/PDBLoader.js +17 -13
  102. package/examples/js/loaders/PLYLoader.js +9 -39
  103. package/examples/js/loaders/PRWMLoader.js +11 -22
  104. package/examples/js/loaders/PVRLoader.js +7 -16
  105. package/examples/js/loaders/RGBELoader.js +36 -61
  106. package/examples/js/loaders/RGBMLoader.js +26 -87
  107. package/examples/js/loaders/STLLoader.js +20 -27
  108. package/examples/js/loaders/SVGLoader.js +361 -233
  109. package/examples/js/loaders/TDSLoader.js +81 -118
  110. package/examples/js/loaders/TGALoader.js +39 -41
  111. package/examples/js/loaders/TIFFLoader.js +0 -1
  112. package/examples/js/loaders/TTFLoader.js +0 -8
  113. package/examples/js/loaders/TiltLoader.js +14 -15
  114. package/examples/js/loaders/VOXLoader.js +8 -16
  115. package/examples/js/loaders/VRMLLoader.js +243 -340
  116. package/examples/js/loaders/VTKLoader.js +101 -118
  117. package/examples/js/loaders/XYZLoader.js +2 -4
  118. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  119. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  120. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  121. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  122. package/examples/js/math/Capsule.js +0 -17
  123. package/examples/js/math/ColorConverter.js +3 -3
  124. package/examples/js/math/ConvexHull.js +183 -139
  125. package/examples/js/math/ImprovedNoise.js +1 -1
  126. package/examples/js/math/Lut.js +8 -15
  127. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  128. package/examples/js/math/OBB.js +90 -49
  129. package/examples/js/math/Octree.js +2 -57
  130. package/examples/js/math/SimplexNoise.js +74 -88
  131. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  132. package/examples/js/misc/GPUComputationRenderer.js +14 -18
  133. package/examples/js/misc/Gyroscope.js +5 -9
  134. package/examples/js/misc/MD2Character.js +14 -23
  135. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  136. package/examples/js/misc/MorphAnimMesh.js +0 -6
  137. package/examples/js/misc/MorphBlendMesh.js +3 -30
  138. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  139. package/examples/js/misc/RollerCoaster.js +17 -24
  140. package/examples/js/misc/TubePainter.js +18 -12
  141. package/examples/js/misc/Volume.js +16 -45
  142. package/examples/js/misc/VolumeSlice.js +14 -24
  143. package/examples/js/modifiers/CurveModifier.js +19 -21
  144. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  145. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  146. package/examples/js/modifiers/TessellateModifier.js +2 -9
  147. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  148. package/examples/js/objects/Lensflare.js +47 -38
  149. package/examples/js/objects/LightningStorm.js +10 -13
  150. package/examples/js/objects/MarchingCubes.js +80 -59
  151. package/examples/js/objects/Reflector.js +22 -20
  152. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  153. package/examples/js/objects/Refractor.js +52 -30
  154. package/examples/js/objects/ShadowMesh.js +1 -2
  155. package/examples/js/objects/Sky.js +2 -7
  156. package/examples/js/objects/Water.js +23 -18
  157. package/examples/js/objects/Water2.js +20 -19
  158. package/examples/js/physics/AmmoPhysics.js +23 -20
  159. package/examples/js/physics/OimoPhysics.js +19 -17
  160. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  161. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  162. package/examples/js/postprocessing/BloomPass.js +38 -17
  163. package/examples/js/postprocessing/BokehPass.js +29 -12
  164. package/examples/js/postprocessing/ClearPass.js +1 -6
  165. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  166. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  167. package/examples/js/postprocessing/EffectComposer.js +25 -32
  168. package/examples/js/postprocessing/FilmPass.js +7 -5
  169. package/examples/js/postprocessing/GlitchPass.js +10 -11
  170. package/examples/js/postprocessing/HalftonePass.js +9 -9
  171. package/examples/js/postprocessing/LUTPass.js +2 -15
  172. package/examples/js/postprocessing/MaskPass.js +20 -17
  173. package/examples/js/postprocessing/OutlinePass.js +45 -36
  174. package/examples/js/postprocessing/Pass.js +11 -14
  175. package/examples/js/postprocessing/RenderPass.js +3 -7
  176. package/examples/js/postprocessing/SAOPass.js +40 -32
  177. package/examples/js/postprocessing/SMAAPass.js +34 -17
  178. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  179. package/examples/js/postprocessing/SSAOPass.js +56 -42
  180. package/examples/js/postprocessing/SSRPass.js +78 -61
  181. package/examples/js/postprocessing/SavePass.js +14 -6
  182. package/examples/js/postprocessing/ShaderPass.js +9 -8
  183. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  184. package/examples/js/postprocessing/TexturePass.js +7 -4
  185. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  186. package/examples/js/renderers/CSS2DRenderer.js +2 -21
  187. package/examples/js/renderers/CSS3DRenderer.js +3 -24
  188. package/examples/js/renderers/Projector.js +29 -85
  189. package/examples/js/renderers/SVGRenderer.js +4 -50
  190. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  191. package/examples/js/shaders/AfterimageShader.js +3 -6
  192. package/examples/js/shaders/BasicShader.js +3 -6
  193. package/examples/js/shaders/BleachBypassShader.js +3 -6
  194. package/examples/js/shaders/BlendShader.js +3 -6
  195. package/examples/js/shaders/BokehShader.js +3 -6
  196. package/examples/js/shaders/BokehShader2.js +4 -13
  197. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  198. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  199. package/examples/js/shaders/ColorifyShader.js +2 -6
  200. package/examples/js/shaders/ConvolutionShader.js +5 -10
  201. package/examples/js/shaders/CopyShader.js +3 -6
  202. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  203. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  204. package/examples/js/shaders/DigitalGlitch.js +3 -6
  205. package/examples/js/shaders/DotScreenShader.js +2 -6
  206. package/examples/js/shaders/FXAAShader.js +1 -3
  207. package/examples/js/shaders/FilmShader.js +3 -6
  208. package/examples/js/shaders/FocusShader.js +3 -6
  209. package/examples/js/shaders/FreiChenShader.js +2 -6
  210. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  211. package/examples/js/shaders/GodRaysShader.js +11 -24
  212. package/examples/js/shaders/HalftoneShader.js +3 -6
  213. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  214. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  215. package/examples/js/shaders/HueSaturationShader.js +3 -6
  216. package/examples/js/shaders/KaleidoShader.js +3 -6
  217. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  218. package/examples/js/shaders/LuminosityShader.js +3 -6
  219. package/examples/js/shaders/MMDToonShader.js +2 -6
  220. package/examples/js/shaders/MirrorShader.js +3 -6
  221. package/examples/js/shaders/NormalMapShader.js +2 -6
  222. package/examples/js/shaders/RGBShiftShader.js +3 -6
  223. package/examples/js/shaders/SAOShader.js +2 -6
  224. package/examples/js/shaders/SMAAShader.js +6 -18
  225. package/examples/js/shaders/SSAOShader.js +2 -6
  226. package/examples/js/shaders/SSRShader.js +6 -18
  227. package/examples/js/shaders/SepiaShader.js +3 -6
  228. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  229. package/examples/js/shaders/TechnicolorShader.js +3 -6
  230. package/examples/js/shaders/ToneMapShader.js +3 -6
  231. package/examples/js/shaders/ToonShader.js +8 -24
  232. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  233. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  234. package/examples/js/shaders/VelocityShader.js +126 -0
  235. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  236. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  237. package/examples/js/shaders/VignetteShader.js +3 -6
  238. package/examples/js/shaders/VolumeShader.js +2 -6
  239. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  240. package/examples/js/textures/FlakesTexture.js +0 -1
  241. package/examples/js/utils/BufferGeometryUtils.js +234 -168
  242. package/examples/js/utils/CameraUtils.js +5 -20
  243. package/examples/js/utils/GPUStatsPanel.js +3 -12
  244. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  245. package/examples/js/utils/GeometryUtils.js +13 -18
  246. package/examples/js/utils/LDrawUtils.js +8 -11
  247. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  248. package/examples/js/utils/SceneUtils.js +117 -6
  249. package/examples/js/utils/ShadowMapViewer.js +17 -14
  250. package/examples/js/utils/SkeletonUtils.js +13 -27
  251. package/examples/js/utils/UVsDebug.js +20 -12
  252. package/examples/js/utils/WorkerPool.js +1 -11
  253. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  254. package/examples/jsm/capabilities/WebGPU.js +3 -1
  255. package/examples/jsm/controls/OrbitControls.js +44 -4
  256. package/examples/jsm/exporters/GLTFExporter.js +17 -131
  257. package/examples/jsm/exporters/USDZExporter.js +75 -19
  258. package/examples/jsm/interactive/HTMLMesh.js +2 -0
  259. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  260. package/examples/jsm/loaders/3DMLoader.js +1 -2
  261. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  262. package/examples/jsm/loaders/FBXLoader.js +16 -2
  263. package/examples/jsm/loaders/GLTFLoader.js +204 -377
  264. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  265. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  266. package/examples/jsm/loaders/LottieLoader.js +4 -2
  267. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  268. package/examples/jsm/loaders/PCDLoader.js +1 -1
  269. package/examples/jsm/loaders/PLYLoader.js +68 -16
  270. package/examples/jsm/loaders/SVGLoader.js +227 -14
  271. package/examples/jsm/loaders/USDZLoader.js +31 -16
  272. package/examples/jsm/nodes/Nodes.js +14 -2
  273. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  274. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  275. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  276. package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
  277. package/examples/jsm/nodes/core/Node.js +1 -1
  278. package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
  279. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  280. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  281. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  282. package/examples/jsm/nodes/core/constants.js +13 -13
  283. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  284. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  285. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  286. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  287. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  288. package/examples/jsm/nodes/materials/Materials.js +9 -7
  289. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  290. package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
  291. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  292. package/examples/jsm/nodes/math/MathNode.js +5 -0
  293. package/examples/jsm/nodes/math/OperatorNode.js +6 -1
  294. package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
  295. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
  296. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
  297. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  298. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  299. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  300. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  301. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  302. package/examples/jsm/nodes/utils/TimerNode.js +1 -1
  303. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  304. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  305. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  306. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  307. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  308. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  309. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  310. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  311. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  312. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  313. package/examples/jsm/postprocessing/OutlinePass.js +10 -0
  314. package/examples/jsm/postprocessing/Pass.js +2 -0
  315. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  316. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  317. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  318. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  319. package/examples/jsm/postprocessing/SavePass.js +17 -1
  320. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  321. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  322. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  323. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  324. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
  325. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  326. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  327. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  328. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  329. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
  330. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  331. package/examples/jsm/shaders/VelocityShader.js +128 -0
  332. package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
  333. package/examples/jsm/utils/SceneUtils.js +129 -4
  334. package/examples/jsm/utils/TextureUtils.js +85 -0
  335. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  336. package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
  337. package/package.json +11 -12
  338. package/src/Three.js +1 -0
  339. package/src/audio/AudioContext.js +5 -5
  340. package/src/cameras/CubeCamera.js +14 -14
  341. package/src/constants.js +1 -1
  342. package/src/core/InstancedBufferGeometry.js +1 -7
  343. package/src/extras/Earcut.js +67 -67
  344. package/src/helpers/DirectionalLightHelper.js +5 -1
  345. package/src/helpers/HemisphereLightHelper.js +4 -1
  346. package/src/helpers/PointLightHelper.js +2 -1
  347. package/src/helpers/SpotLightHelper.js +4 -2
  348. package/src/lights/PointLight.js +2 -2
  349. package/src/lights/SpotLight.js +2 -2
  350. package/src/loaders/FileLoader.js +4 -1
  351. package/src/loaders/ObjectLoader.js +5 -1
  352. package/src/materials/Material.js +1 -1
  353. package/src/math/Color.js +5 -5
  354. package/src/math/Matrix3.js +53 -18
  355. package/src/math/Ray.js +2 -5
  356. package/src/math/Sphere.js +19 -26
  357. package/src/objects/InstancedMesh.js +7 -0
  358. package/src/objects/LOD.js +25 -6
  359. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  360. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  361. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  362. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  363. package/src/renderers/WebGLRenderTarget.js +1 -1
  364. package/src/renderers/WebGLRenderer.js +36 -62
  365. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  366. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  367. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  368. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  369. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  370. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  371. package/src/renderers/shaders/ShaderChunk.js +3 -0
  372. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  373. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  374. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  375. package/src/renderers/shaders/ShaderLib.js +20 -6
  376. package/src/renderers/shaders/UniformsLib.js +1 -1
  377. package/src/renderers/shaders/UniformsUtils.js +15 -0
  378. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  379. package/src/renderers/webgl/WebGLBackground.js +15 -7
  380. package/src/renderers/webgl/WebGLLights.js +0 -4
  381. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  382. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  383. package/src/renderers/webgl/WebGLState.js +31 -1
  384. package/src/renderers/webgl/WebGLTextures.js +71 -18
  385. package/src/renderers/webgl/WebGLUniforms.js +116 -20
  386. package/src/renderers/webgl/WebGLUtils.js +1 -1
  387. package/src/renderers/webxr/WebXRController.js +46 -13
  388. package/src/renderers/webxr/WebXRManager.js +85 -3
  389. package/src/scenes/Scene.js +8 -0
  390. package/src/textures/CompressedArrayTexture.js +18 -0
  391. package/examples/js/libs/lottie_canvas.js +0 -12751
  392. package/examples/js/shaders/PixelShader.js +0 -51
  393. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -34,12 +34,10 @@
34
34
  return this._selects;
35
35
 
36
36
  },
37
-
38
37
  set( val ) {
39
38
 
40
39
  if ( this._selects === val ) return;
41
40
  this._selects = val;
42
-
43
41
  if ( Array.isArray( val ) ) {
44
42
 
45
43
  this.selective = true;
@@ -55,7 +53,6 @@
55
53
  }
56
54
 
57
55
  }
58
-
59
56
  } );
60
57
  this._bouncing = bouncing;
61
58
  Object.defineProperty( this, 'bouncing', {
@@ -64,12 +61,10 @@
64
61
  return this._bouncing;
65
62
 
66
63
  },
67
-
68
64
  set( val ) {
69
65
 
70
66
  if ( this._bouncing === val ) return;
71
67
  this._bouncing = val;
72
-
73
68
  if ( val ) {
74
69
 
75
70
  this.ssrMaterial.uniforms[ 'tDiffuse' ].value = this.prevRenderTarget.texture;
@@ -81,7 +76,6 @@
81
76
  }
82
77
 
83
78
  }
84
-
85
79
  } );
86
80
  this.blur = true;
87
81
  this._distanceAttenuation = THREE.SSRShader.defines.DISTANCE_ATTENUATION;
@@ -91,7 +85,6 @@
91
85
  return this._distanceAttenuation;
92
86
 
93
87
  },
94
-
95
88
  set( val ) {
96
89
 
97
90
  if ( this._distanceAttenuation === val ) return;
@@ -100,7 +93,6 @@
100
93
  this.ssrMaterial.needsUpdate = true;
101
94
 
102
95
  }
103
-
104
96
  } );
105
97
  this._fresnel = THREE.SSRShader.defines.FRESNEL;
106
98
  Object.defineProperty( this, 'fresnel', {
@@ -109,7 +101,6 @@
109
101
  return this._fresnel;
110
102
 
111
103
  },
112
-
113
104
  set( val ) {
114
105
 
115
106
  if ( this._fresnel === val ) return;
@@ -118,7 +109,6 @@
118
109
  this.ssrMaterial.needsUpdate = true;
119
110
 
120
111
  }
121
-
122
112
  } );
123
113
  this._infiniteThick = THREE.SSRShader.defines.INFINITE_THICK;
124
114
  Object.defineProperty( this, 'infiniteThick', {
@@ -127,7 +117,6 @@
127
117
  return this._infiniteThick;
128
118
 
129
119
  },
130
-
131
120
  set( val ) {
132
121
 
133
122
  if ( this._infiniteThick === val ) return;
@@ -136,8 +125,9 @@
136
125
  this.ssrMaterial.needsUpdate = true;
137
126
 
138
127
  }
128
+ } );
139
129
 
140
- } ); // beauty render target with depth buffer
130
+ // beauty render target with depth buffer
141
131
 
142
132
  const depthTexture = new THREE.DepthTexture();
143
133
  depthTexture.type = THREE.UnsignedShortType;
@@ -148,30 +138,39 @@
148
138
  magFilter: THREE.NearestFilter,
149
139
  depthTexture: depthTexture,
150
140
  depthBuffer: true
151
- } ); //for bouncing
141
+ } );
152
142
 
143
+ //for bouncing
153
144
  this.prevRenderTarget = new THREE.WebGLRenderTarget( this.width, this.height, {
154
145
  minFilter: THREE.NearestFilter,
155
146
  magFilter: THREE.NearestFilter
156
- } ); // normal render target
147
+ } );
148
+
149
+ // normal render target
157
150
 
158
151
  this.normalRenderTarget = new THREE.WebGLRenderTarget( this.width, this.height, {
159
152
  minFilter: THREE.NearestFilter,
160
153
  magFilter: THREE.NearestFilter,
161
154
  type: THREE.HalfFloatType
162
- } ); // metalness render target
155
+ } );
156
+
157
+ // metalness render target
163
158
 
164
159
  this.metalnessRenderTarget = new THREE.WebGLRenderTarget( this.width, this.height, {
165
160
  minFilter: THREE.NearestFilter,
166
161
  magFilter: THREE.NearestFilter
167
- } ); // ssr render target
162
+ } );
163
+
164
+ // ssr render target
168
165
 
169
166
  this.ssrRenderTarget = new THREE.WebGLRenderTarget( this.width, this.height, {
170
167
  minFilter: THREE.NearestFilter,
171
168
  magFilter: THREE.NearestFilter
172
169
  } );
173
170
  this.blurRenderTarget = this.ssrRenderTarget.clone();
174
- this.blurRenderTarget2 = this.ssrRenderTarget.clone(); // this.blurRenderTarget3 = this.ssrRenderTarget.clone();
171
+ this.blurRenderTarget2 = this.ssrRenderTarget.clone();
172
+ // this.blurRenderTarget3 = this.ssrRenderTarget.clone();
173
+
175
174
  // ssr material
176
175
 
177
176
  if ( THREE.SSRShader === undefined ) {
@@ -200,18 +199,26 @@
200
199
  this.ssrMaterial.uniforms[ 'thickness' ].value = this.thickness;
201
200
  this.ssrMaterial.uniforms[ 'resolution' ].value.set( this.width, this.height );
202
201
  this.ssrMaterial.uniforms[ 'cameraProjectionMatrix' ].value.copy( this.camera.projectionMatrix );
203
- this.ssrMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse ); // normal material
202
+ this.ssrMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse );
203
+
204
+ // normal material
204
205
 
205
206
  this.normalMaterial = new THREE.MeshNormalMaterial();
206
- this.normalMaterial.blending = THREE.NoBlending; // metalnessOn material
207
+ this.normalMaterial.blending = THREE.NoBlending;
208
+
209
+ // metalnessOn material
207
210
 
208
211
  this.metalnessOnMaterial = new THREE.MeshBasicMaterial( {
209
212
  color: 'white'
210
- } ); // metalnessOff material
213
+ } );
214
+
215
+ // metalnessOff material
211
216
 
212
217
  this.metalnessOffMaterial = new THREE.MeshBasicMaterial( {
213
218
  color: 'black'
214
- } ); // blur material
219
+ } );
220
+
221
+ // blur material
215
222
 
216
223
  this.blurMaterial = new THREE.ShaderMaterial( {
217
224
  defines: Object.assign( {}, THREE.SSRBlurShader.defines ),
@@ -220,7 +227,9 @@
220
227
  fragmentShader: THREE.SSRBlurShader.fragmentShader
221
228
  } );
222
229
  this.blurMaterial.uniforms[ 'tDiffuse' ].value = this.ssrRenderTarget.texture;
223
- this.blurMaterial.uniforms[ 'resolution' ].value.set( this.width, this.height ); // blur material 2
230
+ this.blurMaterial.uniforms[ 'resolution' ].value.set( this.width, this.height );
231
+
232
+ // blur material 2
224
233
 
225
234
  this.blurMaterial2 = new THREE.ShaderMaterial( {
226
235
  defines: Object.assign( {}, THREE.SSRBlurShader.defines ),
@@ -229,7 +238,10 @@
229
238
  fragmentShader: THREE.SSRBlurShader.fragmentShader
230
239
  } );
231
240
  this.blurMaterial2.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget.texture;
232
- this.blurMaterial2.uniforms[ 'resolution' ].value.set( this.width, this.height ); // // blur material 3
241
+ this.blurMaterial2.uniforms[ 'resolution' ].value.set( this.width, this.height );
242
+
243
+ // // blur material 3
244
+
233
245
  // this.blurMaterial3 = new THREE.ShaderMaterial({
234
246
  // defines: Object.assign({}, THREE.SSRBlurShader.defines),
235
247
  // uniforms: THREE.UniformsUtils.clone(THREE.SSRBlurShader.uniforms),
@@ -238,6 +250,7 @@
238
250
  // });
239
251
  // this.blurMaterial3.uniforms['tDiffuse'].value = this.blurRenderTarget2.texture;
240
252
  // this.blurMaterial3.uniforms['resolution'].value.set(this.width, this.height);
253
+
241
254
  // material for rendering the depth
242
255
 
243
256
  this.depthRenderMaterial = new THREE.ShaderMaterial( {
@@ -249,7 +262,9 @@
249
262
  } );
250
263
  this.depthRenderMaterial.uniforms[ 'tDepth' ].value = this.beautyRenderTarget.depthTexture;
251
264
  this.depthRenderMaterial.uniforms[ 'cameraNear' ].value = this.camera.near;
252
- this.depthRenderMaterial.uniforms[ 'cameraFar' ].value = this.camera.far; // material for rendering the content of a render target
265
+ this.depthRenderMaterial.uniforms[ 'cameraFar' ].value = this.camera.far;
266
+
267
+ // material for rendering the content of a render target
253
268
 
254
269
  this.copyMaterial = new THREE.ShaderMaterial( {
255
270
  uniforms: THREE.UniformsUtils.clone( THREE.CopyShader.uniforms ),
@@ -263,24 +278,27 @@
263
278
  blendEquation: THREE.AddEquation,
264
279
  blendSrcAlpha: THREE.SrcAlphaFactor,
265
280
  blendDstAlpha: THREE.OneMinusSrcAlphaFactor,
266
- blendEquationAlpha: THREE.AddEquation // premultipliedAlpha:true,
267
-
281
+ blendEquationAlpha: THREE.AddEquation
282
+ // premultipliedAlpha:true,
268
283
  } );
284
+
269
285
  this.fsQuad = new THREE.FullScreenQuad( null );
270
286
  this.originalClearColor = new THREE.Color();
271
287
 
272
288
  }
273
-
274
289
  dispose() {
275
290
 
276
291
  // dispose render targets
292
+
277
293
  this.beautyRenderTarget.dispose();
278
294
  this.prevRenderTarget.dispose();
279
295
  this.normalRenderTarget.dispose();
280
296
  this.metalnessRenderTarget.dispose();
281
297
  this.ssrRenderTarget.dispose();
282
298
  this.blurRenderTarget.dispose();
283
- this.blurRenderTarget2.dispose(); // this.blurRenderTarget3.dispose();
299
+ this.blurRenderTarget2.dispose();
300
+ // this.blurRenderTarget3.dispose();
301
+
284
302
  // dispose materials
285
303
 
286
304
  this.normalMaterial.dispose();
@@ -289,20 +307,19 @@
289
307
  this.blurMaterial.dispose();
290
308
  this.blurMaterial2.dispose();
291
309
  this.copyMaterial.dispose();
292
- this.depthRenderMaterial.dispose(); // dipsose full screen quad
310
+ this.depthRenderMaterial.dispose();
311
+
312
+ // dipsose full screen quad
293
313
 
294
314
  this.fsQuad.dispose();
295
315
 
296
316
  }
297
-
298
- render( renderer, writeBuffer
299
- /*, readBuffer, deltaTime, maskActive */
300
- ) {
317
+ render( renderer, writeBuffer /*, readBuffer, deltaTime, maskActive */ ) {
301
318
 
302
319
  // render beauty and depth
320
+
303
321
  renderer.setRenderTarget( this.beautyRenderTarget );
304
322
  renderer.clear();
305
-
306
323
  if ( this.groundReflector ) {
307
324
 
308
325
  this.groundReflector.visible = false;
@@ -312,29 +329,38 @@
312
329
  }
313
330
 
314
331
  renderer.render( this.scene, this.camera );
315
- if ( this.groundReflector ) this.groundReflector.visible = false; // render normals
332
+ if ( this.groundReflector ) this.groundReflector.visible = false;
333
+
334
+ // render normals
316
335
 
317
- this.renderOverride( renderer, this.normalMaterial, this.normalRenderTarget, 0, 0 ); // render metalnesses
336
+ this.renderOverride( renderer, this.normalMaterial, this.normalRenderTarget, 0, 0 );
337
+
338
+ // render metalnesses
318
339
 
319
340
  if ( this.selective ) {
320
341
 
321
342
  this.renderMetalness( renderer, this.metalnessOnMaterial, this.metalnessRenderTarget, 0, 0 );
322
343
 
323
- } // render SSR
344
+ }
324
345
 
346
+ // render SSR
325
347
 
326
348
  this.ssrMaterial.uniforms[ 'opacity' ].value = this.opacity;
327
349
  this.ssrMaterial.uniforms[ 'maxDistance' ].value = this.maxDistance;
328
350
  this.ssrMaterial.uniforms[ 'thickness' ].value = this.thickness;
329
- this.renderPass( renderer, this.ssrMaterial, this.ssrRenderTarget ); // render blur
351
+ this.renderPass( renderer, this.ssrMaterial, this.ssrRenderTarget );
352
+
353
+ // render blur
330
354
 
331
355
  if ( this.blur ) {
332
356
 
333
357
  this.renderPass( renderer, this.blurMaterial, this.blurRenderTarget );
334
- this.renderPass( renderer, this.blurMaterial2, this.blurRenderTarget2 ); // this.renderPass(renderer, this.blurMaterial3, this.blurRenderTarget3);
358
+ this.renderPass( renderer, this.blurMaterial2, this.blurRenderTarget2 );
359
+ // this.renderPass(renderer, this.blurMaterial3, this.blurRenderTarget3);
335
360
 
336
- } // output result to screen
361
+ }
337
362
 
363
+ // output result to screen
338
364
 
339
365
  switch ( this.output ) {
340
366
 
@@ -363,12 +389,10 @@
363
389
  }
364
390
 
365
391
  break;
366
-
367
392
  case SSRPass.OUTPUT.SSR:
368
393
  if ( this.blur ) this.copyMaterial.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget2.texture; else this.copyMaterial.uniforms[ 'tDiffuse' ].value = this.ssrRenderTarget.texture;
369
394
  this.copyMaterial.blending = THREE.NoBlending;
370
395
  this.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );
371
-
372
396
  if ( this.bouncing ) {
373
397
 
374
398
  if ( this.blur ) this.copyMaterial.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget2.texture; else this.copyMaterial.uniforms[ 'tDiffuse' ].value = this.beautyRenderTarget.texture;
@@ -381,46 +405,40 @@
381
405
  }
382
406
 
383
407
  break;
384
-
385
408
  case SSRPass.OUTPUT.Beauty:
386
409
  this.copyMaterial.uniforms[ 'tDiffuse' ].value = this.beautyRenderTarget.texture;
387
410
  this.copyMaterial.blending = THREE.NoBlending;
388
411
  this.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );
389
412
  break;
390
-
391
413
  case SSRPass.OUTPUT.Depth:
392
414
  this.renderPass( renderer, this.depthRenderMaterial, this.renderToScreen ? null : writeBuffer );
393
415
  break;
394
-
395
416
  case SSRPass.OUTPUT.Normal:
396
417
  this.copyMaterial.uniforms[ 'tDiffuse' ].value = this.normalRenderTarget.texture;
397
418
  this.copyMaterial.blending = THREE.NoBlending;
398
419
  this.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );
399
420
  break;
400
-
401
421
  case SSRPass.OUTPUT.Metalness:
402
422
  this.copyMaterial.uniforms[ 'tDiffuse' ].value = this.metalnessRenderTarget.texture;
403
423
  this.copyMaterial.blending = THREE.NoBlending;
404
424
  this.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : writeBuffer );
405
425
  break;
406
-
407
426
  default:
408
427
  console.warn( 'THREE.SSRPass: Unknown output type.' );
409
428
 
410
429
  }
411
430
 
412
431
  }
413
-
414
432
  renderPass( renderer, passMaterial, renderTarget, clearColor, clearAlpha ) {
415
433
 
416
434
  // save original state
417
435
  this.originalClearColor.copy( renderer.getClearColor( this.tempColor ) );
418
436
  const originalClearAlpha = renderer.getClearAlpha( this.tempColor );
419
437
  const originalAutoClear = renderer.autoClear;
420
- renderer.setRenderTarget( renderTarget ); // setup pass state
438
+ renderer.setRenderTarget( renderTarget );
421
439
 
440
+ // setup pass state
422
441
  renderer.autoClear = false;
423
-
424
442
  if ( clearColor !== undefined && clearColor !== null ) {
425
443
 
426
444
  renderer.setClearColor( clearColor );
@@ -430,14 +448,14 @@
430
448
  }
431
449
 
432
450
  this.fsQuad.material = passMaterial;
433
- this.fsQuad.render( renderer ); // restore original state
451
+ this.fsQuad.render( renderer );
434
452
 
453
+ // restore original state
435
454
  renderer.autoClear = originalAutoClear;
436
455
  renderer.setClearColor( this.originalClearColor );
437
456
  renderer.setClearAlpha( originalClearAlpha );
438
457
 
439
458
  }
440
-
441
459
  renderOverride( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {
442
460
 
443
461
  this.originalClearColor.copy( renderer.getClearColor( this.tempColor ) );
@@ -447,7 +465,6 @@
447
465
  renderer.autoClear = false;
448
466
  clearColor = overrideMaterial.clearColor || clearColor;
449
467
  clearAlpha = overrideMaterial.clearAlpha || clearAlpha;
450
-
451
468
  if ( clearColor !== undefined && clearColor !== null ) {
452
469
 
453
470
  renderer.setClearColor( clearColor );
@@ -458,14 +475,15 @@
458
475
 
459
476
  this.scene.overrideMaterial = overrideMaterial;
460
477
  renderer.render( this.scene, this.camera );
461
- this.scene.overrideMaterial = null; // restore original state
478
+ this.scene.overrideMaterial = null;
479
+
480
+ // restore original state
462
481
 
463
482
  renderer.autoClear = originalAutoClear;
464
483
  renderer.setClearColor( this.originalClearColor );
465
484
  renderer.setClearAlpha( originalClearAlpha );
466
485
 
467
486
  }
468
-
469
487
  renderMetalness( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {
470
488
 
471
489
  this.originalClearColor.copy( renderer.getClearColor( this.tempColor ) );
@@ -475,7 +493,6 @@
475
493
  renderer.autoClear = false;
476
494
  clearColor = overrideMaterial.clearColor || clearColor;
477
495
  clearAlpha = overrideMaterial.clearAlpha || clearAlpha;
478
-
479
496
  if ( clearColor !== undefined && clearColor !== null ) {
480
497
 
481
498
  renderer.setClearColor( clearColor );
@@ -487,7 +504,6 @@
487
504
  this.scene.traverseVisible( child => {
488
505
 
489
506
  child._SSRPassBackupMaterial = child.material;
490
-
491
507
  if ( this._selects.includes( child ) ) {
492
508
 
493
509
  child.material = this.metalnessOnMaterial;
@@ -504,14 +520,15 @@
504
520
 
505
521
  child.material = child._SSRPassBackupMaterial;
506
522
 
507
- } ); // restore original state
523
+ } );
524
+
525
+ // restore original state
508
526
 
509
527
  renderer.autoClear = originalAutoClear;
510
528
  renderer.setClearColor( this.originalClearColor );
511
529
  renderer.setClearAlpha( originalClearAlpha );
512
530
 
513
531
  }
514
-
515
532
  setSize( width, height ) {
516
533
 
517
534
  this.width = width;
@@ -524,7 +541,8 @@
524
541
  this.normalRenderTarget.setSize( width, height );
525
542
  this.metalnessRenderTarget.setSize( width, height );
526
543
  this.blurRenderTarget.setSize( width, height );
527
- this.blurRenderTarget2.setSize( width, height ); // this.blurRenderTarget3.setSize(width, height);
544
+ this.blurRenderTarget2.setSize( width, height );
545
+ // this.blurRenderTarget3.setSize(width, height);
528
546
 
529
547
  this.ssrMaterial.uniforms[ 'resolution' ].value.set( width, height );
530
548
  this.ssrMaterial.uniforms[ 'cameraProjectionMatrix' ].value.copy( this.camera.projectionMatrix );
@@ -535,7 +553,6 @@
535
553
  }
536
554
 
537
555
  }
538
-
539
556
  SSRPass.OUTPUT = {
540
557
  'Default': 0,
541
558
  'SSR': 1,
@@ -15,10 +15,9 @@
15
15
  fragmentShader: shader.fragmentShader
16
16
  } );
17
17
  this.renderTarget = renderTarget;
18
-
19
18
  if ( this.renderTarget === undefined ) {
20
19
 
21
- this.renderTarget = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight );
20
+ this.renderTarget = new THREE.WebGLRenderTarget(); // will be resized later
22
21
  this.renderTarget.texture.name = 'SavePass.rt';
23
22
 
24
23
  }
@@ -27,10 +26,7 @@
27
26
  this.fsQuad = new THREE.FullScreenQuad( this.material );
28
27
 
29
28
  }
30
-
31
- render( renderer, writeBuffer, readBuffer
32
- /*, deltaTime, maskActive */
33
- ) {
29
+ render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {
34
30
 
35
31
  if ( this.uniforms[ this.textureID ] ) {
36
32
 
@@ -43,6 +39,18 @@
43
39
  this.fsQuad.render( renderer );
44
40
 
45
41
  }
42
+ setSize( width, height ) {
43
+
44
+ this.renderTarget.setSize( width, height );
45
+
46
+ }
47
+ dispose() {
48
+
49
+ this.renderTarget.dispose();
50
+ this.material.dispose();
51
+ this.fsQuad.dispose();
52
+
53
+ }
46
54
 
47
55
  }
48
56
 
@@ -6,7 +6,6 @@
6
6
 
7
7
  super();
8
8
  this.textureID = textureID !== undefined ? textureID : 'tDiffuse';
9
-
10
9
  if ( shader instanceof THREE.ShaderMaterial ) {
11
10
 
12
11
  this.uniforms = shader.uniforms;
@@ -27,10 +26,7 @@
27
26
  this.fsQuad = new THREE.FullScreenQuad( this.material );
28
27
 
29
28
  }
30
-
31
- render( renderer, writeBuffer, readBuffer
32
- /*, deltaTime, maskActive */
33
- ) {
29
+ render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {
34
30
 
35
31
  if ( this.uniforms[ this.textureID ] ) {
36
32
 
@@ -39,7 +35,6 @@
39
35
  }
40
36
 
41
37
  this.fsQuad.material = this.material;
42
-
43
38
  if ( this.renderToScreen ) {
44
39
 
45
40
  renderer.setRenderTarget( null );
@@ -47,14 +42,20 @@
47
42
 
48
43
  } else {
49
44
 
50
- renderer.setRenderTarget( writeBuffer ); // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600
51
-
45
+ renderer.setRenderTarget( writeBuffer );
46
+ // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600
52
47
  if ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );
53
48
  this.fsQuad.render( renderer );
54
49
 
55
50
  }
56
51
 
57
52
  }
53
+ dispose() {
54
+
55
+ this.material.dispose();
56
+ this.fsQuad.dispose();
57
+
58
+ }
58
59
 
59
60
  }
60
61
 
@@ -21,7 +21,6 @@
21
21
  this.accumulate = false;
22
22
 
23
23
  }
24
-
25
24
  render( renderer, writeBuffer, readBuffer, deltaTime ) {
26
25
 
27
26
  if ( this.accumulate === false ) {
@@ -33,7 +32,6 @@
33
32
  }
34
33
 
35
34
  const jitterOffsets = _JitterVectors[ 5 ];
36
-
37
35
  if ( this.sampleRenderTarget === undefined ) {
38
36
 
39
37
  this.sampleRenderTarget = new THREE.WebGLRenderTarget( readBuffer.width, readBuffer.height, this.params );
@@ -58,22 +56,21 @@
58
56
  const autoClear = renderer.autoClear;
59
57
  renderer.autoClear = false;
60
58
  const sampleWeight = 1.0 / jitterOffsets.length;
61
-
62
59
  if ( this.accumulateIndex >= 0 && this.accumulateIndex < jitterOffsets.length ) {
63
60
 
64
61
  this.copyUniforms[ 'opacity' ].value = sampleWeight;
65
- this.copyUniforms[ 'tDiffuse' ].value = writeBuffer.texture; // render the scene multiple times, each slightly jitter offset from the last and accumulate the results.
62
+ this.copyUniforms[ 'tDiffuse' ].value = writeBuffer.texture;
66
63
 
64
+ // render the scene multiple times, each slightly jitter offset from the last and accumulate the results.
67
65
  const numSamplesPerFrame = Math.pow( 2, this.sampleLevel );
68
-
69
66
  for ( let i = 0; i < numSamplesPerFrame; i ++ ) {
70
67
 
71
68
  const j = this.accumulateIndex;
72
69
  const jitterOffset = jitterOffsets[ j ];
73
-
74
70
  if ( this.camera.setViewOffset ) {
75
71
 
76
- this.camera.setViewOffset( readBuffer.width, readBuffer.height, jitterOffset[ 0 ] * 0.0625, jitterOffset[ 1 ] * 0.0625, // 0.0625 = 1 / 16
72
+ this.camera.setViewOffset( readBuffer.width, readBuffer.height, jitterOffset[ 0 ] * 0.0625, jitterOffset[ 1 ] * 0.0625,
73
+ // 0.0625 = 1 / 16
77
74
  readBuffer.width, readBuffer.height );
78
75
 
79
76
  }
@@ -94,7 +91,6 @@
94
91
  }
95
92
 
96
93
  const accumulationWeight = this.accumulateIndex * sampleWeight;
97
-
98
94
  if ( accumulationWeight > 0 ) {
99
95
 
100
96
  this.copyUniforms[ 'opacity' ].value = 1.0;
@@ -118,9 +114,15 @@
118
114
  renderer.autoClear = autoClear;
119
115
 
120
116
  }
117
+ dispose() {
121
118
 
122
- }
119
+ super.dispose();
120
+ if ( this.sampleRenderTarget !== undefined ) this.sampleRenderTarget.dispose();
121
+ if ( this.holdRenderTarget !== undefined ) this.holdRenderTarget.dispose();
123
122
 
123
+ }
124
+
125
+ }
124
126
  const _JitterVectors = [[[ 0, 0 ]], [[ 4, 4 ], [ - 4, - 4 ]], [[ - 2, - 6 ], [ 6, - 2 ], [ - 6, 2 ], [ 2, 6 ]], [[ 1, - 3 ], [ - 1, 3 ], [ 5, 1 ], [ - 3, - 5 ], [ - 5, 5 ], [ - 7, - 1 ], [ 3, 7 ], [ 7, - 7 ]], [[ 1, 1 ], [ - 1, - 3 ], [ - 3, 2 ], [ 4, - 1 ], [ - 5, - 2 ], [ 2, 5 ], [ 5, 3 ], [ 3, - 5 ], [ - 2, 6 ], [ 0, - 7 ], [ - 4, - 6 ], [ - 6, 4 ], [ - 8, 0 ], [ 7, - 4 ], [ 6, 7 ], [ - 7, - 8 ]], [[ - 4, - 7 ], [ - 7, - 5 ], [ - 3, - 5 ], [ - 5, - 4 ], [ - 1, - 4 ], [ - 2, - 2 ], [ - 6, - 1 ], [ - 4, 0 ], [ - 7, 1 ], [ - 1, 2 ], [ - 6, 3 ], [ - 3, 3 ], [ - 7, 6 ], [ - 3, 6 ], [ - 5, 7 ], [ - 1, 7 ], [ 5, - 7 ], [ 1, - 6 ], [ 6, - 5 ], [ 4, - 4 ], [ 2, - 3 ], [ 7, - 2 ], [ 1, - 1 ], [ 4, - 1 ], [ 2, 1 ], [ 6, 2 ], [ 0, 4 ], [ 4, 4 ], [ 2, 5 ], [ 7, 5 ], [ 5, 6 ], [ 3, 7 ]]];
125
127
 
126
128
  THREE.TAARenderPass = TAARenderPass;
@@ -21,10 +21,7 @@
21
21
  this.fsQuad = new THREE.FullScreenQuad( null );
22
22
 
23
23
  }
24
-
25
- render( renderer, writeBuffer, readBuffer
26
- /*, deltaTime, maskActive */
27
- ) {
24
+ render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {
28
25
 
29
26
  const oldAutoClear = renderer.autoClear;
30
27
  renderer.autoClear = false;
@@ -38,6 +35,12 @@
38
35
  renderer.autoClear = oldAutoClear;
39
36
 
40
37
  }
38
+ dispose() {
39
+
40
+ this.material.dispose();
41
+ this.fsQuad.dispose();
42
+
43
+ }
41
44
 
42
45
  }
43
46