@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
@@ -2,7 +2,7 @@
2
2
 
3
3
  class CubeTexturePass extends THREE.Pass {
4
4
 
5
- constructor( camera, envMap, opacity = 1 ) {
5
+ constructor( camera, tCube, opacity = 1 ) {
6
6
 
7
7
  super();
8
8
  this.camera = camera;
@@ -19,28 +19,25 @@
19
19
  Object.defineProperty( this.cubeMesh.material, 'envMap', {
20
20
  get: function () {
21
21
 
22
- return this.uniforms.envMap.value;
22
+ return this.uniforms.tCube.value;
23
23
 
24
24
  }
25
25
  } );
26
- this.envMap = envMap;
26
+ this.tCube = tCube;
27
27
  this.opacity = opacity;
28
28
  this.cubeScene = new THREE.Scene();
29
29
  this.cubeCamera = new THREE.PerspectiveCamera();
30
30
  this.cubeScene.add( this.cubeMesh );
31
31
 
32
32
  }
33
-
34
- render( renderer, writeBuffer, readBuffer
35
- /*, deltaTime, maskActive*/
36
- ) {
33
+ render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive*/ ) {
37
34
 
38
35
  const oldAutoClear = renderer.autoClear;
39
36
  renderer.autoClear = false;
40
37
  this.cubeCamera.projectionMatrix.copy( this.camera.projectionMatrix );
41
38
  this.cubeCamera.quaternion.setFromRotationMatrix( this.camera.matrixWorld );
42
- this.cubeMesh.material.uniforms.envMap.value = this.envMap;
43
- this.cubeMesh.material.uniforms.flipEnvMap.value = this.envMap.isCubeTexture && this.envMap.isRenderTargetTexture === false ? - 1 : 1;
39
+ this.cubeMesh.material.uniforms.tCube.value = this.tCube;
40
+ this.cubeMesh.material.uniforms.tFlip.value = this.tCube.isCubeTexture && this.tCube.isRenderTargetTexture === false ? - 1 : 1;
44
41
  this.cubeMesh.material.uniforms.opacity.value = this.opacity;
45
42
  this.cubeMesh.material.transparent = this.opacity < 1.0;
46
43
  renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
@@ -49,6 +46,12 @@
49
46
  renderer.autoClear = oldAutoClear;
50
47
 
51
48
  }
49
+ dispose() {
50
+
51
+ this.cubeMesh.geometry.dispose();
52
+ this.cubeMesh.material.dispose();
53
+
54
+ }
52
55
 
53
56
  }
54
57
 
@@ -19,14 +19,10 @@
19
19
  this.fsQuad = new THREE.FullScreenQuad( this.material );
20
20
 
21
21
  }
22
-
23
- render( renderer, writeBuffer, readBuffer
24
- /*, deltaTime, maskActive */
25
- ) {
22
+ render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {
26
23
 
27
24
  this.uniforms[ 'tDiffuse' ].value = readBuffer.texture;
28
25
  this.uniforms[ 'tSize' ].value.set( readBuffer.width, readBuffer.height );
29
-
30
26
  if ( this.renderToScreen ) {
31
27
 
32
28
  renderer.setRenderTarget( null );
@@ -41,6 +37,12 @@
41
37
  }
42
38
 
43
39
  }
40
+ dispose() {
41
+
42
+ this.material.dispose();
43
+ this.fsQuad.dispose();
44
+
45
+ }
44
46
 
45
47
  }
46
48
 
@@ -5,7 +5,6 @@
5
5
  constructor( renderer, renderTarget ) {
6
6
 
7
7
  this.renderer = renderer;
8
-
9
8
  if ( renderTarget === undefined ) {
10
9
 
11
10
  const size = renderer.getSize( new THREE.Vector2() );
@@ -29,7 +28,9 @@
29
28
  this.writeBuffer = this.renderTarget1;
30
29
  this.readBuffer = this.renderTarget2;
31
30
  this.renderToScreen = true;
32
- this.passes = []; // dependencies
31
+ this.passes = [];
32
+
33
+ // dependencies
33
34
 
34
35
  if ( THREE.CopyShader === undefined ) {
35
36
 
@@ -47,7 +48,6 @@
47
48
  this.clock = new THREE.Clock();
48
49
 
49
50
  }
50
-
51
51
  swapBuffers() {
52
52
 
53
53
  const tmp = this.readBuffer;
@@ -55,25 +55,21 @@
55
55
  this.writeBuffer = tmp;
56
56
 
57
57
  }
58
-
59
58
  addPass( pass ) {
60
59
 
61
60
  this.passes.push( pass );
62
61
  pass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );
63
62
 
64
63
  }
65
-
66
64
  insertPass( pass, index ) {
67
65
 
68
66
  this.passes.splice( index, 0, pass );
69
67
  pass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );
70
68
 
71
69
  }
72
-
73
70
  removePass( pass ) {
74
71
 
75
72
  const index = this.passes.indexOf( pass );
76
-
77
73
  if ( index !== - 1 ) {
78
74
 
79
75
  this.passes.splice( index, 1 );
@@ -81,7 +77,6 @@
81
77
  }
82
78
 
83
79
  }
84
-
85
80
  isLastEnabledPass( passIndex ) {
86
81
 
87
82
  for ( let i = passIndex + 1; i < this.passes.length; i ++ ) {
@@ -97,10 +92,10 @@
97
92
  return true;
98
93
 
99
94
  }
100
-
101
95
  render( deltaTime ) {
102
96
 
103
97
  // deltaTime value is in seconds
98
+
104
99
  if ( deltaTime === undefined ) {
105
100
 
106
101
  deltaTime = this.clock.getDelta();
@@ -109,24 +104,24 @@
109
104
 
110
105
  const currentRenderTarget = this.renderer.getRenderTarget();
111
106
  let maskActive = false;
112
-
113
107
  for ( let i = 0, il = this.passes.length; i < il; i ++ ) {
114
108
 
115
109
  const pass = this.passes[ i ];
116
110
  if ( pass.enabled === false ) continue;
117
111
  pass.renderToScreen = this.renderToScreen && this.isLastEnabledPass( i );
118
112
  pass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive );
119
-
120
113
  if ( pass.needsSwap ) {
121
114
 
122
115
  if ( maskActive ) {
123
116
 
124
117
  const context = this.renderer.getContext();
125
- const stencil = this.renderer.state.buffers.stencil; //context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );
118
+ const stencil = this.renderer.state.buffers.stencil;
126
119
 
120
+ //context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );
127
121
  stencil.setFunc( context.NOTEQUAL, 1, 0xffffffff );
128
- this.copyPass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime ); //context.stencilFunc( context.EQUAL, 1, 0xffffffff );
122
+ this.copyPass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime );
129
123
 
124
+ //context.stencilFunc( context.EQUAL, 1, 0xffffffff );
130
125
  stencil.setFunc( context.EQUAL, 1, 0xffffffff );
131
126
 
132
127
  }
@@ -154,7 +149,6 @@
154
149
  this.renderer.setRenderTarget( currentRenderTarget );
155
150
 
156
151
  }
157
-
158
152
  reset( renderTarget ) {
159
153
 
160
154
  if ( renderTarget === undefined ) {
@@ -176,7 +170,6 @@
176
170
  this.readBuffer = this.renderTarget2;
177
171
 
178
172
  }
179
-
180
173
  setSize( width, height ) {
181
174
 
182
175
  this._width = width;
@@ -185,7 +178,6 @@
185
178
  const effectiveHeight = this._height * this._pixelRatio;
186
179
  this.renderTarget1.setSize( effectiveWidth, effectiveHeight );
187
180
  this.renderTarget2.setSize( effectiveWidth, effectiveHeight );
188
-
189
181
  for ( let i = 0; i < this.passes.length; i ++ ) {
190
182
 
191
183
  this.passes[ i ].setSize( effectiveWidth, effectiveHeight );
@@ -193,51 +185,56 @@
193
185
  }
194
186
 
195
187
  }
196
-
197
188
  setPixelRatio( pixelRatio ) {
198
189
 
199
190
  this._pixelRatio = pixelRatio;
200
191
  this.setSize( this._width, this._height );
201
192
 
202
193
  }
194
+ dispose() {
203
195
 
204
- }
196
+ this.renderTarget1.dispose();
197
+ this.renderTarget2.dispose();
198
+ this.copyPass.dispose();
199
+
200
+ }
205
201
 
202
+ }
206
203
  class Pass {
207
204
 
208
205
  constructor() {
209
206
 
210
207
  // if set to true, the pass is processed by the composer
211
- this.enabled = true; // if set to true, the pass indicates to swap read and write buffer after rendering
208
+ this.enabled = true;
212
209
 
213
- this.needsSwap = true; // if set to true, the pass clears its buffer before rendering
210
+ // if set to true, the pass indicates to swap read and write buffer after rendering
211
+ this.needsSwap = true;
214
212
 
215
- this.clear = false; // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.
213
+ // if set to true, the pass clears its buffer before rendering
214
+ this.clear = false;
216
215
 
216
+ // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.
217
217
  this.renderToScreen = false;
218
218
 
219
219
  }
220
-
221
220
  setSize() {}
222
-
223
221
  render() {
224
222
 
225
223
  console.error( 'THREE.Pass: .render() must be implemented in derived pass.' );
226
224
 
227
225
  }
228
226
 
229
- } // Helper for passes that need to fill the viewport with a single quad.
227
+ }
230
228
 
229
+ // Helper for passes that need to fill the viewport with a single quad.
231
230
 
232
- const _camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 ); // https://github.com/mrdoob/three.js/pull/21358
231
+ const _camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
233
232
 
233
+ // https://github.com/mrdoob/three.js/pull/21358
234
234
 
235
235
  const _geometry = new THREE.BufferGeometry();
236
-
237
236
  _geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( [ - 1, 3, 0, - 1, - 1, 0, 3, - 1, 0 ], 3 ) );
238
-
239
237
  _geometry.setAttribute( 'uv', new THREE.Float32BufferAttribute( [ 0, 2, 0, 0, 2, 0 ], 2 ) );
240
-
241
238
  class FullScreenQuad {
242
239
 
243
240
  constructor( material ) {
@@ -245,25 +242,21 @@
245
242
  this._mesh = new THREE.Mesh( _geometry, material );
246
243
 
247
244
  }
248
-
249
245
  dispose() {
250
246
 
251
247
  this._mesh.geometry.dispose();
252
248
 
253
249
  }
254
-
255
250
  render( renderer ) {
256
251
 
257
252
  renderer.render( this._mesh, _camera );
258
253
 
259
254
  }
260
-
261
255
  get material() {
262
256
 
263
257
  return this._mesh.material;
264
258
 
265
259
  }
266
-
267
260
  set material( value ) {
268
261
 
269
262
  this._mesh.material = value;
@@ -20,14 +20,10 @@
20
20
  this.fsQuad = new THREE.FullScreenQuad( this.material );
21
21
 
22
22
  }
23
-
24
- render( renderer, writeBuffer, readBuffer, deltaTime
25
- /*, maskActive */
26
- ) {
23
+ render( renderer, writeBuffer, readBuffer, deltaTime /*, maskActive */ ) {
27
24
 
28
25
  this.uniforms[ 'tDiffuse' ].value = readBuffer.texture;
29
26
  this.uniforms[ 'time' ].value += deltaTime;
30
-
31
27
  if ( this.renderToScreen ) {
32
28
 
33
29
  renderer.setRenderTarget( null );
@@ -42,6 +38,12 @@
42
38
  }
43
39
 
44
40
  }
41
+ dispose() {
42
+
43
+ this.material.dispose();
44
+ this.fsQuad.dispose();
45
+
46
+ }
45
47
 
46
48
  }
47
49
 
@@ -8,7 +8,8 @@
8
8
  if ( THREE.DigitalGlitch === undefined ) console.error( 'THREE.GlitchPass relies on THREE.DigitalGlitch' );
9
9
  const shader = THREE.DigitalGlitch;
10
10
  this.uniforms = THREE.UniformsUtils.clone( shader.uniforms );
11
- this.uniforms[ 'tDisp' ].value = this.generateHeightmap( dt_size );
11
+ this.heightMap = this.generateHeightmap( dt_size );
12
+ this.uniforms[ 'tDisp' ].value = this.heightMap;
12
13
  this.material = new THREE.ShaderMaterial( {
13
14
  uniforms: this.uniforms,
14
15
  vertexShader: shader.vertexShader,
@@ -20,17 +21,12 @@
20
21
  this.generateTrigger();
21
22
 
22
23
  }
23
-
24
- render( renderer, writeBuffer, readBuffer
25
- /*, deltaTime, maskActive */
26
- ) {
24
+ render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {
27
25
 
28
26
  if ( renderer.capabilities.isWebGL2 === false ) this.uniforms[ 'tDisp' ].value.format = THREE.LuminanceFormat;
29
27
  this.uniforms[ 'tDiffuse' ].value = readBuffer.texture;
30
28
  this.uniforms[ 'seed' ].value = Math.random(); //default seeding
31
-
32
29
  this.uniforms[ 'byp' ].value = 0;
33
-
34
30
  if ( this.curF % this.randX == 0 || this.goWild == true ) {
35
31
 
36
32
  this.uniforms[ 'amount' ].value = Math.random() / 30;
@@ -58,7 +54,6 @@
58
54
  }
59
55
 
60
56
  this.curF ++;
61
-
62
57
  if ( this.renderToScreen ) {
63
58
 
64
59
  renderer.setRenderTarget( null );
@@ -73,18 +68,15 @@
73
68
  }
74
69
 
75
70
  }
76
-
77
71
  generateTrigger() {
78
72
 
79
73
  this.randX = THREE.MathUtils.randInt( 120, 240 );
80
74
 
81
75
  }
82
-
83
76
  generateHeightmap( dt_size ) {
84
77
 
85
78
  const data_arr = new Float32Array( dt_size * dt_size );
86
79
  const length = dt_size * dt_size;
87
-
88
80
  for ( let i = 0; i < length; i ++ ) {
89
81
 
90
82
  const val = THREE.MathUtils.randFloat( 0, 1 );
@@ -97,6 +89,13 @@
97
89
  return texture;
98
90
 
99
91
  }
92
+ dispose() {
93
+
94
+ this.material.dispose();
95
+ this.heightMap.dispose();
96
+ this.fsQuad.dispose();
97
+
98
+ }
100
99
 
101
100
  }
102
101
 
@@ -9,7 +9,6 @@
9
9
  constructor( width, height, params ) {
10
10
 
11
11
  super();
12
-
13
12
  if ( THREE.HalftoneShader === undefined ) {
14
13
 
15
14
  console.error( 'THREE.HalftonePass requires THREE.HalftoneShader' );
@@ -21,11 +20,11 @@
21
20
  uniforms: this.uniforms,
22
21
  fragmentShader: THREE.HalftoneShader.fragmentShader,
23
22
  vertexShader: THREE.HalftoneShader.vertexShader
24
- } ); // set params
23
+ } );
25
24
 
25
+ // set params
26
26
  this.uniforms.width.value = width;
27
27
  this.uniforms.height.value = height;
28
-
29
28
  for ( const key in params ) {
30
29
 
31
30
  if ( params.hasOwnProperty( key ) && this.uniforms.hasOwnProperty( key ) ) {
@@ -39,13 +38,9 @@
39
38
  this.fsQuad = new THREE.FullScreenQuad( this.material );
40
39
 
41
40
  }
42
-
43
- render( renderer, writeBuffer, readBuffer
44
- /*, deltaTime, maskActive*/
45
- ) {
41
+ render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive*/ ) {
46
42
 
47
43
  this.material.uniforms[ 'tDiffuse' ].value = readBuffer.texture;
48
-
49
44
  if ( this.renderToScreen ) {
50
45
 
51
46
  renderer.setRenderTarget( null );
@@ -60,13 +55,18 @@
60
55
  }
61
56
 
62
57
  }
63
-
64
58
  setSize( width, height ) {
65
59
 
66
60
  this.uniforms.width.value = width;
67
61
  this.uniforms.height.value = height;
68
62
 
69
63
  }
64
+ dispose() {
65
+
66
+ this.material.dispose();
67
+ this.fsQuad.dispose();
68
+
69
+ }
70
70
 
71
71
  }
72
72
 
@@ -21,9 +21,7 @@
21
21
  value: 1.0
22
22
  }
23
23
  },
24
- vertexShader:
25
- /* glsl */
26
- `
24
+ vertexShader: /* glsl */`
27
25
 
28
26
  varying vec2 vUv;
29
27
 
@@ -35,9 +33,7 @@
35
33
  }
36
34
 
37
35
  `,
38
- fragmentShader:
39
- /* glsl */
40
- `
36
+ fragmentShader: /* glsl */`
41
37
 
42
38
  uniform float lutSize;
43
39
  #if USE_3DTEXTURE
@@ -110,22 +106,18 @@
110
106
 
111
107
  `
112
108
  };
113
-
114
109
  class LUTPass extends THREE.ShaderPass {
115
110
 
116
111
  set lut( v ) {
117
112
 
118
113
  const material = this.material;
119
-
120
114
  if ( v !== this.lut ) {
121
115
 
122
116
  material.uniforms.lut3d.value = null;
123
117
  material.uniforms.lut.value = null;
124
-
125
118
  if ( v ) {
126
119
 
127
120
  const is3dTextureDefine = v.isData3DTexture ? 1 : 0;
128
-
129
121
  if ( is3dTextureDefine !== material.defines.USE_3DTEXTURE ) {
130
122
 
131
123
  material.defines.USE_3DTEXTURE = is3dTextureDefine;
@@ -134,7 +126,6 @@
134
126
  }
135
127
 
136
128
  material.uniforms.lutSize.value = v.image.width;
137
-
138
129
  if ( v.isData3DTexture ) {
139
130
 
140
131
  material.uniforms.lut3d.value = v;
@@ -150,25 +141,21 @@
150
141
  }
151
142
 
152
143
  }
153
-
154
144
  get lut() {
155
145
 
156
146
  return this.material.uniforms.lut.value || this.material.uniforms.lut3d.value;
157
147
 
158
148
  }
159
-
160
149
  set intensity( v ) {
161
150
 
162
151
  this.material.uniforms.intensity.value = v;
163
152
 
164
153
  }
165
-
166
154
  get intensity() {
167
155
 
168
156
  return this.material.uniforms.intensity.value;
169
157
 
170
158
  }
171
-
172
159
  constructor( options = {} ) {
173
160
 
174
161
  super( LUTShader );
@@ -12,22 +12,24 @@
12
12
  this.inverse = false;
13
13
 
14
14
  }
15
-
16
- render( renderer, writeBuffer, readBuffer
17
- /*, deltaTime, maskActive */
18
- ) {
15
+ render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {
19
16
 
20
17
  const context = renderer.getContext();
21
- const state = renderer.state; // don't update color or depth
18
+ const state = renderer.state;
19
+
20
+ // don't update color or depth
22
21
 
23
22
  state.buffers.color.setMask( false );
24
- state.buffers.depth.setMask( false ); // lock buffers
23
+ state.buffers.depth.setMask( false );
24
+
25
+ // lock buffers
25
26
 
26
27
  state.buffers.color.setLocked( true );
27
- state.buffers.depth.setLocked( true ); // set up stencil
28
+ state.buffers.depth.setLocked( true );
28
29
 
29
- let writeValue, clearValue;
30
+ // set up stencil
30
31
 
32
+ let writeValue, clearValue;
31
33
  if ( this.inverse ) {
32
34
 
33
35
  writeValue = 0;
@@ -44,28 +46,32 @@
44
46
  state.buffers.stencil.setOp( context.REPLACE, context.REPLACE, context.REPLACE );
45
47
  state.buffers.stencil.setFunc( context.ALWAYS, writeValue, 0xffffffff );
46
48
  state.buffers.stencil.setClear( clearValue );
47
- state.buffers.stencil.setLocked( true ); // draw into the stencil buffer
49
+ state.buffers.stencil.setLocked( true );
50
+
51
+ // draw into the stencil buffer
48
52
 
49
53
  renderer.setRenderTarget( readBuffer );
50
54
  if ( this.clear ) renderer.clear();
51
55
  renderer.render( this.scene, this.camera );
52
56
  renderer.setRenderTarget( writeBuffer );
53
57
  if ( this.clear ) renderer.clear();
54
- renderer.render( this.scene, this.camera ); // unlock color and depth buffer for subsequent rendering
58
+ renderer.render( this.scene, this.camera );
59
+
60
+ // unlock color and depth buffer for subsequent rendering
55
61
 
56
62
  state.buffers.color.setLocked( false );
57
- state.buffers.depth.setLocked( false ); // only render where stencil is set to 1
63
+ state.buffers.depth.setLocked( false );
64
+
65
+ // only render where stencil is set to 1
58
66
 
59
67
  state.buffers.stencil.setLocked( false );
60
68
  state.buffers.stencil.setFunc( context.EQUAL, 1, 0xffffffff ); // draw if == 1
61
-
62
69
  state.buffers.stencil.setOp( context.KEEP, context.KEEP, context.KEEP );
63
70
  state.buffers.stencil.setLocked( true );
64
71
 
65
72
  }
66
73
 
67
74
  }
68
-
69
75
  class ClearMaskPass extends THREE.Pass {
70
76
 
71
77
  constructor() {
@@ -74,10 +80,7 @@
74
80
  this.needsSwap = false;
75
81
 
76
82
  }
77
-
78
- render( renderer
79
- /*, writeBuffer, readBuffer, deltaTime, maskActive */
80
- ) {
83
+ render( renderer /*, writeBuffer, readBuffer, deltaTime, maskActive */ ) {
81
84
 
82
85
  renderer.state.buffers.stencil.setLocked( false );
83
86
  renderer.state.buffers.stencil.setTest( false );