super-three 0.141.0 → 0.147.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 (646) hide show
  1. package/README.md +9 -9
  2. package/build/three.cjs +2441 -1569
  3. package/build/three.js +2441 -1569
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +2847 -1576
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +50 -67
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +71 -150
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +149 -403
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -61
  14. package/examples/js/controls/FlyControls.js +29 -63
  15. package/examples/js/controls/OrbitControls.js +125 -103
  16. package/examples/js/controls/PointerLockControls.js +5 -22
  17. package/examples/js/controls/TrackballControls.js +33 -88
  18. package/examples/js/controls/TransformControls.js +101 -182
  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 +6 -20
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +30 -54
  30. package/examples/js/effects/ParallaxBarrierEffect.js +2 -15
  31. package/examples/js/effects/PeppersGhostEffect.js +14 -41
  32. package/examples/js/effects/StereoEffect.js +2 -6
  33. package/examples/js/environments/RoomEnvironment.js +32 -8
  34. package/examples/js/exporters/ColladaExporter.js +52 -78
  35. package/examples/js/exporters/DRACOExporter.js +22 -34
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +168 -345
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +40 -52
  40. package/examples/js/exporters/PLYExporter.js +50 -57
  41. package/examples/js/exporters/STLExporter.js +5 -14
  42. package/examples/js/exporters/USDZExporter.js +119 -27
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +12 -7
  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 +23 -17
  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 +25 -39
  60. package/examples/js/interactive/InteractiveGroup.js +9 -14
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +2 -8
  63. package/examples/js/libs/ktx-parse.umd.js +1 -0
  64. package/examples/js/libs/meshopt_decoder.js +98 -32
  65. package/examples/js/lights/LightProbeGenerator.js +32 -39
  66. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  67. package/examples/js/lines/LineGeometry.js +3 -5
  68. package/examples/js/lines/LineMaterial.js +4 -11
  69. package/examples/js/lines/LineSegments2.js +40 -89
  70. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  71. package/examples/js/lines/Wireframe.js +2 -7
  72. package/examples/js/lines/WireframeGeometry2.js +3 -1
  73. package/examples/js/loaders/3DMLoader.js +58 -155
  74. package/examples/js/loaders/3MFLoader.js +72 -106
  75. package/examples/js/loaders/AMFLoader.js +0 -25
  76. package/examples/js/loaders/BVHLoader.js +44 -43
  77. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  78. package/examples/js/loaders/ColladaLoader.js +229 -359
  79. package/examples/js/loaders/DDSLoader.js +24 -25
  80. package/examples/js/loaders/DRACOLoader.js +30 -90
  81. package/examples/js/loaders/EXRLoader.js +69 -177
  82. package/examples/js/loaders/FBXLoader.js +294 -441
  83. package/examples/js/loaders/FontLoader.js +9 -31
  84. package/examples/js/loaders/GCodeLoader.js +15 -16
  85. package/examples/js/loaders/GLTFLoader.js +458 -739
  86. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -17
  87. package/examples/js/loaders/KMZLoader.js +3 -7
  88. package/examples/js/loaders/KTXLoader.js +12 -30
  89. package/examples/js/loaders/LDrawLoader.js +309 -355
  90. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  91. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  92. package/examples/js/loaders/LWOLoader.js +59 -124
  93. package/examples/js/loaders/LogLuvLoader.js +27 -77
  94. package/examples/js/loaders/LottieLoader.js +4 -4
  95. package/examples/js/loaders/MD2Loader.js +26 -27
  96. package/examples/js/loaders/MDDLoader.js +6 -10
  97. package/examples/js/loaders/MMDLoader.js +180 -189
  98. package/examples/js/loaders/MTLLoader.js +18 -47
  99. package/examples/js/loaders/NRRDLoader.js +44 -84
  100. package/examples/js/loaders/OBJLoader.js +56 -77
  101. package/examples/js/loaders/PCDLoader.js +92 -42
  102. package/examples/js/loaders/PDBLoader.js +17 -13
  103. package/examples/js/loaders/PLYLoader.js +65 -51
  104. package/examples/js/loaders/PRWMLoader.js +11 -22
  105. package/examples/js/loaders/PVRLoader.js +7 -16
  106. package/examples/js/loaders/RGBELoader.js +36 -61
  107. package/examples/js/loaders/RGBMLoader.js +26 -87
  108. package/examples/js/loaders/STLLoader.js +20 -27
  109. package/examples/js/loaders/SVGLoader.js +365 -236
  110. package/examples/js/loaders/TDSLoader.js +81 -118
  111. package/examples/js/loaders/TGALoader.js +39 -41
  112. package/examples/js/loaders/TIFFLoader.js +30 -0
  113. package/examples/js/loaders/TTFLoader.js +0 -8
  114. package/examples/js/loaders/TiltLoader.js +14 -15
  115. package/examples/js/loaders/VOXLoader.js +8 -16
  116. package/examples/js/loaders/VRMLLoader.js +266 -354
  117. package/examples/js/loaders/VTKLoader.js +102 -119
  118. package/examples/js/loaders/XYZLoader.js +2 -4
  119. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  120. package/examples/js/loaders/lwo/LWO2Parser.js +39 -89
  121. package/examples/js/loaders/lwo/LWO3Parser.js +38 -79
  122. package/examples/js/materials/MeshGouraudMaterial.js +387 -0
  123. package/examples/js/math/Capsule.js +0 -17
  124. package/examples/js/math/ColorConverter.js +3 -53
  125. package/examples/js/math/ConvexHull.js +185 -141
  126. package/examples/js/math/ImprovedNoise.js +1 -1
  127. package/examples/js/math/Lut.js +8 -15
  128. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  129. package/examples/js/math/OBB.js +90 -49
  130. package/examples/js/math/Octree.js +2 -57
  131. package/examples/js/math/SimplexNoise.js +74 -88
  132. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  133. package/examples/js/misc/GPUComputationRenderer.js +47 -14
  134. package/examples/js/misc/Gyroscope.js +5 -9
  135. package/examples/js/misc/MD2Character.js +14 -23
  136. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  137. package/examples/js/misc/MorphAnimMesh.js +0 -6
  138. package/examples/js/misc/MorphBlendMesh.js +3 -30
  139. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  140. package/examples/js/misc/RollerCoaster.js +17 -24
  141. package/examples/js/misc/TubePainter.js +18 -12
  142. package/examples/js/misc/Volume.js +173 -194
  143. package/examples/js/misc/VolumeSlice.js +91 -99
  144. package/examples/js/modifiers/CurveModifier.js +19 -21
  145. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  146. package/examples/js/modifiers/SimplifyModifier.js +57 -60
  147. package/examples/js/modifiers/TessellateModifier.js +2 -9
  148. package/examples/js/objects/GroundProjectedEnv.js +181 -0
  149. package/examples/js/objects/Lensflare.js +47 -38
  150. package/examples/js/objects/LightningStorm.js +10 -13
  151. package/examples/js/objects/MarchingCubes.js +80 -59
  152. package/examples/js/objects/Reflector.js +31 -22
  153. package/examples/js/objects/ReflectorForSSRPass.js +20 -25
  154. package/examples/js/objects/Refractor.js +61 -33
  155. package/examples/js/objects/ShadowMesh.js +6 -3
  156. package/examples/js/objects/Sky.js +2 -7
  157. package/examples/js/objects/Water.js +23 -18
  158. package/examples/js/objects/Water2.js +20 -19
  159. package/examples/js/physics/AmmoPhysics.js +23 -20
  160. package/examples/js/physics/OimoPhysics.js +19 -17
  161. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  162. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  163. package/examples/js/postprocessing/BloomPass.js +38 -17
  164. package/examples/js/postprocessing/BokehPass.js +29 -12
  165. package/examples/js/postprocessing/ClearPass.js +1 -6
  166. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  167. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  168. package/examples/js/postprocessing/EffectComposer.js +25 -32
  169. package/examples/js/postprocessing/FilmPass.js +7 -5
  170. package/examples/js/postprocessing/GlitchPass.js +10 -11
  171. package/examples/js/postprocessing/HalftonePass.js +9 -9
  172. package/examples/js/postprocessing/LUTPass.js +2 -15
  173. package/examples/js/postprocessing/MaskPass.js +20 -17
  174. package/examples/js/postprocessing/OutlinePass.js +49 -38
  175. package/examples/js/postprocessing/Pass.js +11 -14
  176. package/examples/js/postprocessing/RenderPass.js +3 -7
  177. package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
  178. package/examples/js/postprocessing/SAOPass.js +40 -32
  179. package/examples/js/postprocessing/SMAAPass.js +34 -17
  180. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  181. package/examples/js/postprocessing/SSAOPass.js +56 -42
  182. package/examples/js/postprocessing/SSRPass.js +78 -61
  183. package/examples/js/postprocessing/SavePass.js +14 -6
  184. package/examples/js/postprocessing/ShaderPass.js +9 -8
  185. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  186. package/examples/js/postprocessing/TexturePass.js +7 -4
  187. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  188. package/examples/js/renderers/CSS2DRenderer.js +4 -23
  189. package/examples/js/renderers/CSS3DRenderer.js +5 -26
  190. package/examples/js/renderers/Projector.js +31 -108
  191. package/examples/js/renderers/SVGRenderer.js +4 -50
  192. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  193. package/examples/js/shaders/AfterimageShader.js +3 -6
  194. package/examples/js/shaders/BasicShader.js +3 -6
  195. package/examples/js/shaders/BleachBypassShader.js +3 -6
  196. package/examples/js/shaders/BlendShader.js +3 -6
  197. package/examples/js/shaders/BokehShader.js +3 -6
  198. package/examples/js/shaders/BokehShader2.js +4 -13
  199. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  200. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  201. package/examples/js/shaders/ColorifyShader.js +2 -6
  202. package/examples/js/shaders/ConvolutionShader.js +5 -10
  203. package/examples/js/shaders/CopyShader.js +3 -6
  204. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  205. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  206. package/examples/js/shaders/DigitalGlitch.js +3 -6
  207. package/examples/js/shaders/DotScreenShader.js +2 -6
  208. package/examples/js/shaders/FXAAShader.js +1 -3
  209. package/examples/js/shaders/FilmShader.js +3 -6
  210. package/examples/js/shaders/FocusShader.js +3 -6
  211. package/examples/js/shaders/FreiChenShader.js +2 -6
  212. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  213. package/examples/js/shaders/GodRaysShader.js +11 -24
  214. package/examples/js/shaders/HalftoneShader.js +3 -6
  215. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  216. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  217. package/examples/js/shaders/HueSaturationShader.js +3 -6
  218. package/examples/js/shaders/KaleidoShader.js +3 -6
  219. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  220. package/examples/js/shaders/LuminosityShader.js +4 -7
  221. package/examples/js/shaders/MMDToonShader.js +2 -4
  222. package/examples/js/shaders/MirrorShader.js +3 -6
  223. package/examples/js/shaders/NormalMapShader.js +2 -6
  224. package/examples/js/shaders/RGBShiftShader.js +3 -6
  225. package/examples/js/shaders/SAOShader.js +2 -6
  226. package/examples/js/shaders/SMAAShader.js +6 -18
  227. package/examples/js/shaders/SSAOShader.js +2 -6
  228. package/examples/js/shaders/SSRShader.js +6 -18
  229. package/examples/js/shaders/SepiaShader.js +3 -6
  230. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  231. package/examples/js/shaders/TechnicolorShader.js +3 -6
  232. package/examples/js/shaders/ToneMapShader.js +4 -7
  233. package/examples/js/shaders/ToonShader.js +8 -24
  234. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  235. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  236. package/examples/js/shaders/VelocityShader.js +126 -0
  237. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  238. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  239. package/examples/js/shaders/VignetteShader.js +3 -6
  240. package/examples/js/shaders/VolumeShader.js +2 -6
  241. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  242. package/examples/js/textures/FlakesTexture.js +0 -1
  243. package/examples/js/utils/BufferGeometryUtils.js +237 -171
  244. package/examples/js/utils/CameraUtils.js +5 -20
  245. package/examples/js/utils/GPUStatsPanel.js +3 -12
  246. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  247. package/examples/js/utils/GeometryUtils.js +15 -36
  248. package/examples/js/utils/LDrawUtils.js +8 -11
  249. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  250. package/examples/js/utils/SceneUtils.js +109 -14
  251. package/examples/js/utils/ShadowMapViewer.js +17 -14
  252. package/examples/js/utils/SkeletonUtils.js +13 -27
  253. package/examples/js/utils/UVsDebug.js +20 -12
  254. package/examples/js/utils/WorkerPool.js +1 -11
  255. package/examples/jsm/animation/CCDIKSolver.js +27 -3
  256. package/examples/jsm/animation/MMDPhysics.js +28 -22
  257. package/examples/jsm/capabilities/WebGPU.js +3 -1
  258. package/examples/jsm/controls/ArcballControls.js +17 -2
  259. package/examples/jsm/controls/FirstPersonControls.js +20 -27
  260. package/examples/jsm/controls/FlyControls.js +16 -24
  261. package/examples/jsm/controls/OrbitControls.js +44 -9
  262. package/examples/jsm/controls/PointerLockControls.js +0 -7
  263. package/examples/jsm/controls/TrackballControls.js +14 -5
  264. package/examples/jsm/controls/TransformControls.js +18 -16
  265. package/examples/jsm/csm/CSM.js +1 -0
  266. package/examples/jsm/csm/CSMHelper.js +30 -0
  267. package/examples/jsm/effects/AnaglyphEffect.js +2 -2
  268. package/examples/jsm/effects/OutlineEffect.js +4 -25
  269. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
  270. package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
  271. package/examples/jsm/effects/StereoEffect.js +2 -2
  272. package/examples/jsm/environments/RoomEnvironment.js +23 -0
  273. package/examples/jsm/exporters/ColladaExporter.js +4 -13
  274. package/examples/jsm/exporters/DRACOExporter.js +0 -13
  275. package/examples/jsm/exporters/GLTFExporter.js +29 -110
  276. package/examples/jsm/exporters/KTX2Exporter.js +29 -29
  277. package/examples/jsm/exporters/OBJExporter.js +0 -18
  278. package/examples/jsm/exporters/PLYExporter.js +14 -22
  279. package/examples/jsm/exporters/STLExporter.js +1 -9
  280. package/examples/jsm/exporters/USDZExporter.js +107 -4
  281. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  282. package/examples/jsm/geometries/ParametricGeometry.js +0 -6
  283. package/examples/jsm/helpers/OctreeHelper.js +22 -8
  284. package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
  285. package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
  286. package/examples/jsm/helpers/ViewHelper.js +24 -0
  287. package/examples/jsm/interactive/HTMLMesh.js +14 -15
  288. package/examples/jsm/interactive/InteractiveGroup.js +4 -2
  289. package/examples/jsm/interactive/SelectionHelper.js +5 -3
  290. package/examples/jsm/libs/flow.module.js +610 -160
  291. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  292. package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
  293. package/examples/jsm/libs/utif.module.js +1579 -0
  294. package/examples/jsm/libs/zstddec.module.js +1 -0
  295. package/examples/jsm/lines/LineSegments2.js +4 -0
  296. package/examples/jsm/loaders/3DMLoader.js +1 -2
  297. package/examples/jsm/loaders/ColladaLoader.js +29 -0
  298. package/examples/jsm/loaders/DRACOLoader.js +2 -28
  299. package/examples/jsm/loaders/EXRLoader.js +3 -13
  300. package/examples/jsm/loaders/FBXLoader.js +26 -3
  301. package/examples/jsm/loaders/FontLoader.js +3 -16
  302. package/examples/jsm/loaders/GLTFLoader.js +321 -464
  303. package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
  304. package/examples/jsm/loaders/KTX2Loader.js +254 -53
  305. package/examples/jsm/loaders/LDrawLoader.js +149 -87
  306. package/examples/jsm/loaders/LottieLoader.js +4 -2
  307. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  308. package/examples/jsm/loaders/OBJLoader.js +6 -14
  309. package/examples/jsm/loaders/PCDLoader.js +60 -14
  310. package/examples/jsm/loaders/PLYLoader.js +71 -19
  311. package/examples/jsm/loaders/RGBELoader.js +1 -1
  312. package/examples/jsm/loaders/SVGLoader.js +231 -17
  313. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  314. package/examples/jsm/loaders/USDZLoader.js +633 -0
  315. package/examples/jsm/loaders/VRMLLoader.js +36 -26
  316. package/examples/jsm/loaders/VTKLoader.js +1 -1
  317. package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
  318. package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
  319. package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
  320. package/examples/jsm/math/ColorConverter.js +1 -49
  321. package/examples/jsm/math/ConvexHull.js +4 -4
  322. package/examples/jsm/math/Octree.js +1 -1
  323. package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
  324. package/examples/jsm/misc/Volume.js +169 -171
  325. package/examples/jsm/misc/VolumeSlice.js +78 -80
  326. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  327. package/examples/jsm/node-editor/NodeEditor.js +91 -12
  328. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
  329. package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
  330. package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
  331. package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
  332. package/examples/jsm/node-editor/core/BaseNode.js +10 -3
  333. package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
  334. package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
  335. package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
  336. package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
  337. package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
  338. package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
  339. package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
  340. package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
  341. package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
  342. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +7 -10
  343. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
  344. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +7 -10
  345. package/examples/jsm/node-editor/math/AngleEditor.js +4 -4
  346. package/examples/jsm/node-editor/math/DotEditor.js +1 -1
  347. package/examples/jsm/node-editor/math/InvertEditor.js +3 -3
  348. package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
  349. package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
  350. package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
  351. package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
  352. package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
  353. package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
  354. package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
  355. package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
  356. package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
  357. package/examples/jsm/node-editor/utils/PreviewEditor.js +7 -3
  358. package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
  359. package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
  360. package/examples/jsm/nodes/Nodes.js +70 -13
  361. package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
  362. package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
  363. package/examples/jsm/nodes/accessors/NormalNode.js +8 -8
  364. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  365. package/examples/jsm/nodes/accessors/PositionNode.js +11 -5
  366. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  367. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
  368. package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
  369. package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
  370. package/examples/jsm/nodes/core/AttributeNode.js +32 -9
  371. package/examples/jsm/nodes/core/CodeNode.js +3 -3
  372. package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
  373. package/examples/jsm/nodes/core/FunctionNode.js +2 -2
  374. package/examples/jsm/nodes/core/Node.js +15 -13
  375. package/examples/jsm/nodes/core/NodeBuilder.js +67 -18
  376. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  377. package/examples/jsm/nodes/core/NodeUtils.js +23 -1
  378. package/examples/jsm/nodes/core/NodeVarying.js +17 -0
  379. package/examples/jsm/nodes/core/VaryingNode.js +56 -0
  380. package/examples/jsm/nodes/core/constants.js +13 -13
  381. package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
  382. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +84 -0
  383. package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
  384. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  385. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  386. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
  387. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
  388. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
  389. package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
  390. package/examples/jsm/nodes/gpgpu/ComputeNode.js +3 -1
  391. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  392. package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
  393. package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
  394. package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
  395. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +33 -0
  396. package/examples/jsm/nodes/materials/Materials.js +21 -31
  397. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
  398. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
  399. package/examples/jsm/nodes/materials/NodeMaterial.js +11 -3
  400. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
  401. package/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -0
  402. package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
  403. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +56 -0
  404. package/examples/jsm/nodes/materialx/lib/mx_noise.js +617 -0
  405. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  406. package/examples/jsm/nodes/math/MathNode.js +7 -17
  407. package/examples/jsm/nodes/math/OperatorNode.js +16 -3
  408. package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
  409. package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
  410. package/examples/jsm/nodes/shadernode/ShaderNode.js +40 -25
  411. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +95 -68
  412. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +49 -6
  413. package/examples/jsm/nodes/utils/ConvertNode.js +18 -12
  414. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  415. package/examples/jsm/nodes/utils/JoinNode.js +15 -9
  416. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  417. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +3 -2
  418. package/examples/jsm/nodes/utils/OscNode.js +2 -2
  419. package/examples/jsm/nodes/utils/RemapNode.js +34 -0
  420. package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
  421. package/examples/jsm/nodes/utils/SplitNode.js +21 -5
  422. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  423. package/examples/jsm/nodes/utils/TimerNode.js +23 -3
  424. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  425. package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
  426. package/examples/jsm/objects/Reflector.js +12 -5
  427. package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
  428. package/examples/jsm/objects/Refractor.js +12 -6
  429. package/examples/jsm/objects/ShadowMesh.js +8 -2
  430. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  431. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  432. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  433. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  434. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  435. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  436. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  437. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  438. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  439. package/examples/jsm/postprocessing/OutlinePass.js +25 -3
  440. package/examples/jsm/postprocessing/Pass.js +2 -0
  441. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  442. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  443. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  444. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  445. package/examples/jsm/postprocessing/SavePass.js +17 -1
  446. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  447. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  448. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  449. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  450. package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
  451. package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
  452. package/examples/jsm/renderers/Projector.js +2 -24
  453. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
  454. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +363 -231
  455. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
  456. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  457. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  458. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +68 -3
  459. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
  460. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
  461. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  462. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
  463. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
  464. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
  465. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +113 -93
  466. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
  467. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
  468. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
  469. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +63 -36
  470. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  471. package/examples/jsm/shaders/LuminosityShader.js +1 -1
  472. package/examples/jsm/shaders/MMDToonShader.js +2 -4
  473. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  474. package/examples/jsm/shaders/VelocityShader.js +128 -0
  475. package/examples/jsm/utils/BufferGeometryUtils.js +176 -43
  476. package/examples/jsm/utils/GeometryUtils.js +17 -25
  477. package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
  478. package/examples/jsm/utils/SceneUtils.js +117 -12
  479. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  480. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
  481. package/examples/jsm/webxr/VRButton.js +1 -7
  482. package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
  483. package/package.json +22 -18
  484. package/src/Three.Legacy.js +262 -36
  485. package/src/Three.js +4 -2
  486. package/src/animation/AnimationAction.js +6 -5
  487. package/src/animation/AnimationClip.js +1 -1
  488. package/src/animation/AnimationMixer.js +1 -1
  489. package/src/animation/AnimationUtils.js +204 -199
  490. package/src/animation/KeyframeTrack.js +1 -1
  491. package/src/animation/PropertyBinding.js +31 -5
  492. package/src/audio/AudioContext.js +5 -5
  493. package/src/cameras/CubeCamera.js +14 -21
  494. package/src/constants.js +2 -4
  495. package/src/core/BufferAttribute.js +81 -111
  496. package/src/core/BufferGeometry.js +3 -41
  497. package/src/core/InstancedBufferAttribute.js +0 -10
  498. package/src/core/InstancedBufferGeometry.js +1 -7
  499. package/src/core/InterleavedBuffer.js +1 -1
  500. package/src/core/InterleavedBufferAttribute.js +57 -8
  501. package/src/core/Object3D.js +22 -5
  502. package/src/core/Uniform.js +0 -7
  503. package/src/core/UniformsGroup.js +92 -0
  504. package/src/extras/DataUtils.js +104 -88
  505. package/src/extras/Earcut.js +67 -67
  506. package/src/extras/core/Path.js +1 -0
  507. package/src/extras/core/ShapePath.js +1 -4
  508. package/src/extras/curves/CatmullRomCurve3.js +4 -2
  509. package/src/geometries/BoxGeometry.js +1 -1
  510. package/src/geometries/CapsuleGeometry.js +1 -1
  511. package/src/geometries/CircleGeometry.js +1 -1
  512. package/src/geometries/ConeGeometry.js +1 -1
  513. package/src/geometries/CylinderGeometry.js +2 -1
  514. package/src/geometries/DodecahedronGeometry.js +1 -1
  515. package/src/geometries/EdgesGeometry.js +5 -4
  516. package/src/geometries/ExtrudeGeometry.js +2 -11
  517. package/src/geometries/IcosahedronGeometry.js +1 -1
  518. package/src/geometries/LatheGeometry.js +2 -2
  519. package/src/geometries/OctahedronGeometry.js +1 -1
  520. package/src/geometries/PlaneGeometry.js +2 -1
  521. package/src/geometries/PolyhedronGeometry.js +2 -2
  522. package/src/geometries/RingGeometry.js +1 -1
  523. package/src/geometries/ShapeGeometry.js +3 -2
  524. package/src/geometries/SphereGeometry.js +2 -1
  525. package/src/geometries/TetrahedronGeometry.js +1 -1
  526. package/src/geometries/TorusGeometry.js +2 -1
  527. package/src/geometries/TorusKnotGeometry.js +2 -1
  528. package/src/geometries/TubeGeometry.js +2 -1
  529. package/src/geometries/WireframeGeometry.js +1 -0
  530. package/src/helpers/ArrowHelper.js +9 -0
  531. package/src/helpers/Box3Helper.js +7 -0
  532. package/src/helpers/BoxHelper.js +7 -1
  533. package/src/helpers/CameraHelper.js +97 -38
  534. package/src/helpers/DirectionalLightHelper.js +6 -1
  535. package/src/helpers/GridHelper.js +7 -0
  536. package/src/helpers/HemisphereLightHelper.js +5 -1
  537. package/src/helpers/PlaneHelper.js +15 -9
  538. package/src/helpers/PointLightHelper.js +2 -1
  539. package/src/helpers/PolarGridHelper.js +25 -14
  540. package/src/helpers/SkeletonHelper.js +7 -0
  541. package/src/helpers/SpotLightHelper.js +5 -2
  542. package/src/lights/LightShadow.js +1 -2
  543. package/src/lights/PointLight.js +2 -2
  544. package/src/lights/SpotLight.js +4 -2
  545. package/src/loaders/FileLoader.js +16 -2
  546. package/src/loaders/LoadingManager.js +1 -1
  547. package/src/loaders/MaterialLoader.js +49 -7
  548. package/src/loaders/ObjectLoader.js +9 -42
  549. package/src/materials/Material.js +2 -34
  550. package/src/materials/Materials.js +0 -27
  551. package/src/materials/MeshLambertMaterial.js +28 -1
  552. package/src/materials/MeshPhysicalMaterial.js +1 -1
  553. package/src/materials/ShaderMaterial.js +3 -7
  554. package/src/math/Color.js +8 -18
  555. package/src/math/MathUtils.js +1 -7
  556. package/src/math/Matrix3.js +54 -25
  557. package/src/math/Matrix4.js +3 -27
  558. package/src/math/Quaternion.js +1 -21
  559. package/src/math/Ray.js +2 -5
  560. package/src/math/Sphere.js +36 -21
  561. package/src/math/Vector2.js +4 -24
  562. package/src/math/Vector3.js +7 -46
  563. package/src/math/Vector4.js +4 -24
  564. package/src/objects/InstancedMesh.js +7 -0
  565. package/src/objects/LOD.js +25 -6
  566. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  567. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  568. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  569. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  570. package/src/renderers/WebGLRenderTarget.js +1 -1
  571. package/src/renderers/WebGLRenderer.js +119 -69
  572. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
  573. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
  574. package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
  575. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
  576. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  577. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
  578. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
  579. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
  580. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
  581. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -13
  582. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  583. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
  584. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  585. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
  586. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
  587. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  588. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
  589. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
  590. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
  591. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  592. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
  593. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
  594. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
  595. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  596. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
  597. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
  598. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
  599. package/src/renderers/shaders/ShaderChunk.js +7 -2
  600. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  601. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  602. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  603. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
  604. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
  605. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
  606. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
  607. package/src/renderers/shaders/ShaderLib.js +50 -36
  608. package/src/renderers/shaders/UniformsLib.js +13 -12
  609. package/src/renderers/shaders/UniformsUtils.js +29 -0
  610. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  611. package/src/renderers/webgl/WebGLBackground.js +17 -9
  612. package/src/renderers/webgl/WebGLLights.js +37 -17
  613. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  614. package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
  615. package/src/renderers/webgl/WebGLProgram.js +6 -11
  616. package/src/renderers/webgl/WebGLPrograms.js +30 -26
  617. package/src/renderers/webgl/WebGLRenderLists.js +5 -4
  618. package/src/renderers/webgl/WebGLRenderStates.js +5 -4
  619. package/src/renderers/webgl/WebGLShaderCache.js +9 -6
  620. package/src/renderers/webgl/WebGLShadowMap.js +13 -16
  621. package/src/renderers/webgl/WebGLState.js +125 -41
  622. package/src/renderers/webgl/WebGLTextures.js +94 -39
  623. package/src/renderers/webgl/WebGLUniforms.js +156 -28
  624. package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
  625. package/src/renderers/webgl/WebGLUtils.js +3 -1
  626. package/src/renderers/webvr/WebVRManager.js +42 -9
  627. package/src/renderers/webvr/WebVRUtils.js +1 -1
  628. package/src/renderers/webxr/WebXRController.js +91 -50
  629. package/src/renderers/webxr/WebXRManager.js +127 -34
  630. package/src/scenes/Scene.js +24 -3
  631. package/src/textures/CompressedArrayTexture.js +18 -0
  632. package/src/textures/Source.js +1 -1
  633. package/src/textures/Texture.js +2 -1
  634. package/src/utils.js +1 -1
  635. package/examples/js/controls/experimental/CameraControls.js +0 -1048
  636. package/examples/js/libs/lottie_canvas.js +0 -12751
  637. package/examples/js/loaders/KTX2Loader.js +0 -558
  638. package/examples/js/shaders/PixelShader.js +0 -51
  639. package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
  640. package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
  641. package/examples/jsm/nodes/core/NodeVary.js +0 -14
  642. package/examples/jsm/nodes/core/VaryNode.js +0 -54
  643. package/examples/jsm/package.json +0 -3
  644. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
  645. package/examples/jsm/shaders/PixelShader.js +0 -44
  646. package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
@@ -56,10 +56,12 @@
56
56
  this.separableBlurMaterial1.uniforms[ 'kernelRadius' ].value = 1;
57
57
  this.separableBlurMaterial2 = this.getSeperableBlurMaterial( MAX_EDGE_GLOW );
58
58
  this.separableBlurMaterial2.uniforms[ 'texSize' ].value.set( Math.round( resx / 2 ), Math.round( resy / 2 ) );
59
- this.separableBlurMaterial2.uniforms[ 'kernelRadius' ].value = MAX_EDGE_GLOW; // Overlay material
59
+ this.separableBlurMaterial2.uniforms[ 'kernelRadius' ].value = MAX_EDGE_GLOW;
60
60
 
61
- this.overlayMaterial = this.getOverlayMaterial(); // copy material
61
+ // Overlay material
62
+ this.overlayMaterial = this.getOverlayMaterial();
62
63
 
64
+ // copy material
63
65
  if ( THREE.CopyShader === undefined ) console.error( 'THREE.OutlinePass relies on THREE.CopyShader' );
64
66
  const copyShader = THREE.CopyShader;
65
67
  this.copyUniforms = THREE.UniformsUtils.clone( copyShader.uniforms );
@@ -81,7 +83,6 @@
81
83
  this.tempPulseColor1 = new THREE.Color();
82
84
  this.tempPulseColor2 = new THREE.Color();
83
85
  this.textureMatrix = new THREE.Matrix4();
84
-
85
86
  function replaceDepthToViewZ( string, camera ) {
86
87
 
87
88
  const type = camera.isPerspectiveCamera ? 'perspective' : 'orthographic';
@@ -90,7 +91,6 @@
90
91
  }
91
92
 
92
93
  }
93
-
94
94
  dispose() {
95
95
 
96
96
  this.renderTargetMaskBuffer.dispose();
@@ -100,9 +100,16 @@
100
100
  this.renderTargetBlurBuffer2.dispose();
101
101
  this.renderTargetEdgeBuffer1.dispose();
102
102
  this.renderTargetEdgeBuffer2.dispose();
103
+ this.depthMaterial.dispose();
104
+ this.prepareMaskMaterial.dispose();
105
+ this.edgeDetectionMaterial.dispose();
106
+ this.separableBlurMaterial1.dispose();
107
+ this.separableBlurMaterial2.dispose();
108
+ this.overlayMaterial.dispose();
109
+ this.materialCopy.dispose();
110
+ this.fsQuad.dispose();
103
111
 
104
112
  }
105
-
106
113
  setSize( width, height ) {
107
114
 
108
115
  this.renderTargetMaskBuffer.setSize( width, height );
@@ -120,11 +127,9 @@
120
127
  this.separableBlurMaterial2.uniforms[ 'texSize' ].value.set( resx, resy );
121
128
 
122
129
  }
123
-
124
130
  changeVisibilityOfSelectedObjects( bVisible ) {
125
131
 
126
132
  const cache = this._visibilityCache;
127
-
128
133
  function gatherSelectedMeshesCallBack( object ) {
129
134
 
130
135
  if ( object.isMesh ) {
@@ -152,12 +157,10 @@
152
157
  }
153
158
 
154
159
  }
155
-
156
160
  changeVisibilityOfNonSelectedObjects( bVisible ) {
157
161
 
158
162
  const cache = this._visibilityCache;
159
163
  const selectedMeshes = [];
160
-
161
164
  function gatherSelectedMeshesCallBack( object ) {
162
165
 
163
166
  if ( object.isMesh ) selectedMeshes.push( object );
@@ -176,12 +179,11 @@
176
179
  if ( object.isMesh || object.isSprite ) {
177
180
 
178
181
  // only meshes and sprites are supported by OutlinePass
179
- let bFound = false;
180
182
 
183
+ let bFound = false;
181
184
  for ( let i = 0; i < selectedMeshes.length; i ++ ) {
182
185
 
183
186
  const selectedObjectId = selectedMeshes[ i ].id;
184
-
185
187
  if ( selectedObjectId === object.id ) {
186
188
 
187
189
  bFound = true;
@@ -194,7 +196,6 @@
194
196
  if ( bFound === false ) {
195
197
 
196
198
  const visibility = object.visible;
197
-
198
199
  if ( bVisible === false || cache.get( object ) === true ) {
199
200
 
200
201
  object.visible = bVisible;
@@ -209,6 +210,7 @@
209
210
 
210
211
  // the visibilty of points and lines is always set to false in order to
211
212
  // not affect the outline computation
213
+
212
214
  if ( bVisible === true ) {
213
215
 
214
216
  object.visible = cache.get( object ); // restore
@@ -227,7 +229,6 @@
227
229
  this.renderScene.traverse( VisibilityChangeCallBack );
228
230
 
229
231
  }
230
-
231
232
  updateTextureMatrix() {
232
233
 
233
234
  this.textureMatrix.set( 0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0 );
@@ -235,7 +236,6 @@
235
236
  this.textureMatrix.multiply( this.renderCamera.matrixWorldInverse );
236
237
 
237
238
  }
238
-
239
239
  render( renderer, writeBuffer, readBuffer, deltaTime, maskActive ) {
240
240
 
241
241
  if ( this.selectedObjects.length > 0 ) {
@@ -245,24 +245,27 @@
245
245
  const oldAutoClear = renderer.autoClear;
246
246
  renderer.autoClear = false;
247
247
  if ( maskActive ) renderer.state.buffers.stencil.setTest( false );
248
- renderer.setClearColor( 0xffffff, 1 ); // Make selected objects invisible
248
+ renderer.setClearColor( 0xffffff, 1 );
249
249
 
250
+ // Make selected objects invisible
250
251
  this.changeVisibilityOfSelectedObjects( false );
251
252
  const currentBackground = this.renderScene.background;
252
- this.renderScene.background = null; // 1. Draw Non Selected objects in the depth buffer
253
+ this.renderScene.background = null;
253
254
 
255
+ // 1. Draw Non Selected objects in the depth buffer
254
256
  this.renderScene.overrideMaterial = this.depthMaterial;
255
257
  renderer.setRenderTarget( this.renderTargetDepthBuffer );
256
258
  renderer.clear();
257
- renderer.render( this.renderScene, this.renderCamera ); // Make selected objects visible
259
+ renderer.render( this.renderScene, this.renderCamera );
258
260
 
261
+ // Make selected objects visible
259
262
  this.changeVisibilityOfSelectedObjects( true );
263
+ this._visibilityCache.clear();
260
264
 
261
- this._visibilityCache.clear(); // Update Texture Matrix for Depth compare
262
-
263
-
264
- this.updateTextureMatrix(); // Make non selected objects invisible, and draw only the selected objects, by comparing the depth buffer of non selected objects
265
+ // Update Texture Matrix for Depth compare
266
+ this.updateTextureMatrix();
265
267
 
268
+ // Make non selected objects invisible, and draw only the selected objects, by comparing the depth buffer of non selected objects
266
269
  this.changeVisibilityOfNonSelectedObjects( false );
267
270
  this.renderScene.overrideMaterial = this.prepareMaskMaterial;
268
271
  this.prepareMaskMaterial.uniforms[ 'cameraNearFar' ].value.set( this.renderCamera.near, this.renderCamera.far );
@@ -273,11 +276,10 @@
273
276
  renderer.render( this.renderScene, this.renderCamera );
274
277
  this.renderScene.overrideMaterial = null;
275
278
  this.changeVisibilityOfNonSelectedObjects( true );
276
-
277
279
  this._visibilityCache.clear();
280
+ this.renderScene.background = currentBackground;
278
281
 
279
- this.renderScene.background = currentBackground; // 2. Downsample to Half resolution
280
-
282
+ // 2. Downsample to Half resolution
281
283
  this.fsQuad.material = this.materialCopy;
282
284
  this.copyUniforms[ 'tDiffuse' ].value = this.renderTargetMaskBuffer.texture;
283
285
  renderer.setRenderTarget( this.renderTargetMaskDownSampleBuffer );
@@ -285,16 +287,15 @@
285
287
  this.fsQuad.render( renderer );
286
288
  this.tempPulseColor1.copy( this.visibleEdgeColor );
287
289
  this.tempPulseColor2.copy( this.hiddenEdgeColor );
288
-
289
290
  if ( this.pulsePeriod > 0 ) {
290
291
 
291
292
  const scalar = ( 1 + 0.25 ) / 2 + Math.cos( performance.now() * 0.01 / this.pulsePeriod ) * ( 1.0 - 0.25 ) / 2;
292
293
  this.tempPulseColor1.multiplyScalar( scalar );
293
294
  this.tempPulseColor2.multiplyScalar( scalar );
294
295
 
295
- } // 3. Apply Edge Detection THREE.Pass
296
-
296
+ }
297
297
 
298
+ // 3. Apply Edge Detection THREE.Pass
298
299
  this.fsQuad.material = this.edgeDetectionMaterial;
299
300
  this.edgeDetectionMaterial.uniforms[ 'maskTexture' ].value = this.renderTargetMaskDownSampleBuffer.texture;
300
301
  this.edgeDetectionMaterial.uniforms[ 'texSize' ].value.set( this.renderTargetMaskDownSampleBuffer.width, this.renderTargetMaskDownSampleBuffer.height );
@@ -302,8 +303,9 @@
302
303
  this.edgeDetectionMaterial.uniforms[ 'hiddenEdgeColor' ].value = this.tempPulseColor2;
303
304
  renderer.setRenderTarget( this.renderTargetEdgeBuffer1 );
304
305
  renderer.clear();
305
- this.fsQuad.render( renderer ); // 4. Apply Blur on Half res
306
+ this.fsQuad.render( renderer );
306
307
 
308
+ // 4. Apply Blur on Half res
307
309
  this.fsQuad.material = this.separableBlurMaterial1;
308
310
  this.separableBlurMaterial1.uniforms[ 'colorTexture' ].value = this.renderTargetEdgeBuffer1.texture;
309
311
  this.separableBlurMaterial1.uniforms[ 'direction' ].value = OutlinePass.BlurDirectionX;
@@ -315,8 +317,9 @@
315
317
  this.separableBlurMaterial1.uniforms[ 'direction' ].value = OutlinePass.BlurDirectionY;
316
318
  renderer.setRenderTarget( this.renderTargetEdgeBuffer1 );
317
319
  renderer.clear();
318
- this.fsQuad.render( renderer ); // Apply Blur on quarter res
320
+ this.fsQuad.render( renderer );
319
321
 
322
+ // Apply Blur on quarter res
320
323
  this.fsQuad.material = this.separableBlurMaterial2;
321
324
  this.separableBlurMaterial2.uniforms[ 'colorTexture' ].value = this.renderTargetEdgeBuffer1.texture;
322
325
  this.separableBlurMaterial2.uniforms[ 'direction' ].value = OutlinePass.BlurDirectionX;
@@ -327,8 +330,9 @@
327
330
  this.separableBlurMaterial2.uniforms[ 'direction' ].value = OutlinePass.BlurDirectionY;
328
331
  renderer.setRenderTarget( this.renderTargetEdgeBuffer2 );
329
332
  renderer.clear();
330
- this.fsQuad.render( renderer ); // Blend it additively over the input texture
333
+ this.fsQuad.render( renderer );
331
334
 
335
+ // Blend it additively over the input texture
332
336
  this.fsQuad.material = this.overlayMaterial;
333
337
  this.overlayMaterial.uniforms[ 'maskTexture' ].value = this.renderTargetMaskBuffer.texture;
334
338
  this.overlayMaterial.uniforms[ 'edgeTexture1' ].value = this.renderTargetEdgeBuffer1.texture;
@@ -355,7 +359,6 @@
355
359
  }
356
360
 
357
361
  }
358
-
359
362
  getPrepareMaskMaterial() {
360
363
 
361
364
  return new THREE.ShaderMaterial( {
@@ -386,7 +389,17 @@
386
389
  #include <project_vertex>
387
390
 
388
391
  vPosition = mvPosition;
389
- vec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );
392
+
393
+ vec4 worldPosition = vec4( transformed, 1.0 );
394
+
395
+ #ifdef USE_INSTANCING
396
+
397
+ worldPosition = instanceMatrix * worldPosition;
398
+
399
+ #endif
400
+
401
+ worldPosition = modelMatrix * worldPosition;
402
+
390
403
  projTexCoord = textureMatrix * worldPosition;
391
404
 
392
405
  }`,
@@ -407,7 +420,6 @@
407
420
  } );
408
421
 
409
422
  }
410
-
411
423
  getEdgeDetectionMaterial() {
412
424
 
413
425
  return new THREE.ShaderMaterial( {
@@ -457,7 +469,6 @@
457
469
  } );
458
470
 
459
471
  }
460
-
461
472
  getSeperableBlurMaterial( maxRadius ) {
462
473
 
463
474
  return new THREE.ShaderMaterial( {
@@ -497,12 +508,14 @@
497
508
 
498
509
  void main() {
499
510
  vec2 invSize = 1.0 / texSize;
500
- float weightSum = gaussianPdf(0.0, kernelRadius);
511
+ float sigma = kernelRadius/2.0;
512
+ float weightSum = gaussianPdf(0.0, sigma);
501
513
  vec4 diffuseSum = texture2D( colorTexture, vUv) * weightSum;
502
514
  vec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS);
503
515
  vec2 uvOffset = delta;
504
516
  for( int i = 1; i <= MAX_RADIUS; i ++ ) {
505
- float w = gaussianPdf(uvOffset.x, kernelRadius);
517
+ float x = kernelRadius * float(i) / float(MAX_RADIUS);
518
+ float w = gaussianPdf(x, sigma);
506
519
  vec4 sample1 = texture2D( colorTexture, vUv + uvOffset);
507
520
  vec4 sample2 = texture2D( colorTexture, vUv - uvOffset);
508
521
  diffuseSum += ((sample1 + sample2) * w);
@@ -514,7 +527,6 @@
514
527
  } );
515
528
 
516
529
  }
517
-
518
530
  getOverlayMaterial() {
519
531
 
520
532
  return new THREE.ShaderMaterial( {
@@ -578,7 +590,6 @@
578
590
  }
579
591
 
580
592
  }
581
-
582
593
  OutlinePass.BlurDirectionX = new THREE.Vector2( 1.0, 0.0 );
583
594
  OutlinePass.BlurDirectionY = new THREE.Vector2( 0.0, 1.0 );
584
595
 
@@ -5,36 +5,37 @@
5
5
  constructor() {
6
6
 
7
7
  // if set to true, the pass is processed by the composer
8
- this.enabled = true; // if set to true, the pass indicates to swap read and write buffer after rendering
8
+ this.enabled = true;
9
9
 
10
- this.needsSwap = true; // if set to true, the pass clears its buffer before rendering
10
+ // if set to true, the pass indicates to swap read and write buffer after rendering
11
+ this.needsSwap = true;
11
12
 
12
- this.clear = false; // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.
13
+ // if set to true, the pass clears its buffer before rendering
14
+ this.clear = false;
13
15
 
16
+ // if set to true, the result of the pass is rendered to screen. This is set automatically by EffectComposer.
14
17
  this.renderToScreen = false;
15
18
 
16
19
  }
17
-
18
20
  setSize() {}
19
-
20
21
  render() {
21
22
 
22
23
  console.error( 'THREE.Pass: .render() must be implemented in derived pass.' );
23
24
 
24
25
  }
26
+ dispose() {}
25
27
 
26
- } // Helper for passes that need to fill the viewport with a single quad.
28
+ }
27
29
 
30
+ // Helper for passes that need to fill the viewport with a single quad.
28
31
 
29
- const _camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 ); // https://github.com/mrdoob/three.js/pull/21358
32
+ const _camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
30
33
 
34
+ // https://github.com/mrdoob/three.js/pull/21358
31
35
 
32
36
  const _geometry = new THREE.BufferGeometry();
33
-
34
37
  _geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( [ - 1, 3, 0, - 1, - 1, 0, 3, - 1, 0 ], 3 ) );
35
-
36
38
  _geometry.setAttribute( 'uv', new THREE.Float32BufferAttribute( [ 0, 2, 0, 0, 2, 0 ], 2 ) );
37
-
38
39
  class FullScreenQuad {
39
40
 
40
41
  constructor( material ) {
@@ -42,25 +43,21 @@
42
43
  this._mesh = new THREE.Mesh( _geometry, material );
43
44
 
44
45
  }
45
-
46
46
  dispose() {
47
47
 
48
48
  this._mesh.geometry.dispose();
49
49
 
50
50
  }
51
-
52
51
  render( renderer ) {
53
52
 
54
53
  renderer.render( this._mesh, _camera );
55
54
 
56
55
  }
57
-
58
56
  get material() {
59
57
 
60
58
  return this._mesh.material;
61
59
 
62
60
  }
63
-
64
61
  set material( value ) {
65
62
 
66
63
  this._mesh.material = value;
@@ -16,15 +16,11 @@
16
16
  this._oldClearColor = new THREE.Color();
17
17
 
18
18
  }
19
-
20
- render( renderer, writeBuffer, readBuffer
21
- /*, deltaTime, maskActive */
22
- ) {
19
+ render( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {
23
20
 
24
21
  const oldAutoClear = renderer.autoClear;
25
22
  renderer.autoClear = false;
26
23
  let oldClearAlpha, oldOverrideMaterial;
27
-
28
24
  if ( this.overrideMaterial !== undefined ) {
29
25
 
30
26
  oldOverrideMaterial = this.scene.overrideMaterial;
@@ -46,11 +42,11 @@
46
42
 
47
43
  }
48
44
 
49
- renderer.setRenderTarget( this.renderToScreen ? null : readBuffer ); // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600
45
+ renderer.setRenderTarget( this.renderToScreen ? null : readBuffer );
50
46
 
47
+ // TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600
51
48
  if ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );
52
49
  renderer.render( this.scene, this.camera );
53
-
54
50
  if ( this.clearColor ) {
55
51
 
56
52
  renderer.setClearColor( this._oldClearColor, oldClearAlpha );
@@ -0,0 +1,215 @@
1
+ ( function () {
2
+
3
+ class RenderPixelatedPass extends THREE.Pass {
4
+
5
+ constructor( pixelSize, scene, camera, options = {} ) {
6
+
7
+ super();
8
+ this.pixelSize = pixelSize;
9
+ this.resolution = new THREE.Vector2();
10
+ this.renderResolution = new THREE.Vector2();
11
+ this.pixelatedMaterial = this.createPixelatedMaterial();
12
+ this.normalMaterial = new THREE.MeshNormalMaterial();
13
+ this.fsQuad = new THREE.FullScreenQuad( this.pixelatedMaterial );
14
+ this.scene = scene;
15
+ this.camera = camera;
16
+ this.normalEdgeStrength = options.normalEdgeStrength || 0.3;
17
+ this.depthEdgeStrength = options.depthEdgeStrength || 0.4;
18
+ this.beautyRenderTarget = new THREE.WebGLRenderTarget();
19
+ this.beautyRenderTarget.texture.minFilter = THREE.NearestFilter;
20
+ this.beautyRenderTarget.texture.magFilter = THREE.NearestFilter;
21
+ this.beautyRenderTarget.depthTexture = new THREE.DepthTexture();
22
+ this.normalRenderTarget = new THREE.WebGLRenderTarget();
23
+ this.normalRenderTarget.texture.minFilter = THREE.NearestFilter;
24
+ this.normalRenderTarget.texture.magFilter = THREE.NearestFilter;
25
+
26
+ }
27
+ dispose() {
28
+
29
+ this.beautyRenderTarget.dispose();
30
+ this.normalRenderTarget.dispose();
31
+ this.pixelatedMaterial.dispose();
32
+ this.normalMaterial.dispose();
33
+ this.fsQuad.dispose();
34
+
35
+ }
36
+ setSize( width, height ) {
37
+
38
+ this.resolution.set( width, height );
39
+ this.renderResolution.set( width / this.pixelSize | 0, height / this.pixelSize | 0 );
40
+ const {
41
+ x,
42
+ y
43
+ } = this.renderResolution;
44
+ this.beautyRenderTarget.setSize( x, y );
45
+ this.normalRenderTarget.setSize( x, y );
46
+ this.fsQuad.material.uniforms.resolution.value.set( x, y, 1 / x, 1 / y );
47
+
48
+ }
49
+ setPixelSize( pixelSize ) {
50
+
51
+ this.pixelSize = pixelSize;
52
+ this.setSize( this.resolution.x, this.resolution.y );
53
+
54
+ }
55
+ render( renderer, writeBuffer ) {
56
+
57
+ const uniforms = this.fsQuad.material.uniforms;
58
+ uniforms.normalEdgeStrength.value = this.normalEdgeStrength;
59
+ uniforms.depthEdgeStrength.value = this.depthEdgeStrength;
60
+ renderer.setRenderTarget( this.beautyRenderTarget );
61
+ renderer.render( this.scene, this.camera );
62
+ const overrideMaterial_old = this.scene.overrideMaterial;
63
+ renderer.setRenderTarget( this.normalRenderTarget );
64
+ this.scene.overrideMaterial = this.normalMaterial;
65
+ renderer.render( this.scene, this.camera );
66
+ this.scene.overrideMaterial = overrideMaterial_old;
67
+ uniforms.tDiffuse.value = this.beautyRenderTarget.texture;
68
+ uniforms.tDepth.value = this.beautyRenderTarget.depthTexture;
69
+ uniforms.tNormal.value = this.normalRenderTarget.texture;
70
+ if ( this.renderToScreen ) {
71
+
72
+ renderer.setRenderTarget( null );
73
+
74
+ } else {
75
+
76
+ renderer.setRenderTarget( writeBuffer );
77
+ if ( this.clear ) renderer.clear();
78
+
79
+ }
80
+
81
+ this.fsQuad.render( renderer );
82
+
83
+ }
84
+ createPixelatedMaterial() {
85
+
86
+ return new THREE.ShaderMaterial( {
87
+ uniforms: {
88
+ tDiffuse: {
89
+ value: null
90
+ },
91
+ tDepth: {
92
+ value: null
93
+ },
94
+ tNormal: {
95
+ value: null
96
+ },
97
+ resolution: {
98
+ value: new THREE.Vector4( this.renderResolution.x, this.renderResolution.y, 1 / this.renderResolution.x, 1 / this.renderResolution.y )
99
+ },
100
+ normalEdgeStrength: {
101
+ value: 0
102
+ },
103
+ depthEdgeStrength: {
104
+ value: 0
105
+ }
106
+ },
107
+ vertexShader: /* glsl */`
108
+ varying vec2 vUv;
109
+
110
+ void main() {
111
+
112
+ vUv = uv;
113
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
114
+
115
+ }
116
+ `,
117
+ fragmentShader: /* glsl */`
118
+ uniform sampler2D tDiffuse;
119
+ uniform sampler2D tDepth;
120
+ uniform sampler2D tNormal;
121
+ uniform vec4 resolution;
122
+ uniform float normalEdgeStrength;
123
+ uniform float depthEdgeStrength;
124
+ varying vec2 vUv;
125
+
126
+ float getDepth(int x, int y) {
127
+
128
+ return texture2D( tDepth, vUv + vec2(x, y) * resolution.zw ).r;
129
+
130
+ }
131
+
132
+ vec3 getNormal(int x, int y) {
133
+
134
+ return texture2D( tNormal, vUv + vec2(x, y) * resolution.zw ).rgb * 2.0 - 1.0;
135
+
136
+ }
137
+
138
+ float depthEdgeIndicator(float depth, vec3 normal) {
139
+
140
+ float diff = 0.0;
141
+ diff += clamp(getDepth(1, 0) - depth, 0.0, 1.0);
142
+ diff += clamp(getDepth(-1, 0) - depth, 0.0, 1.0);
143
+ diff += clamp(getDepth(0, 1) - depth, 0.0, 1.0);
144
+ diff += clamp(getDepth(0, -1) - depth, 0.0, 1.0);
145
+ return floor(smoothstep(0.01, 0.02, diff) * 2.) / 2.;
146
+
147
+ }
148
+
149
+ float neighborNormalEdgeIndicator(int x, int y, float depth, vec3 normal) {
150
+
151
+ float depthDiff = getDepth(x, y) - depth;
152
+ vec3 neighborNormal = getNormal(x, y);
153
+
154
+ // Edge pixels should yield to faces who's normals are closer to the bias normal.
155
+ vec3 normalEdgeBias = vec3(1., 1., 1.); // This should probably be a parameter.
156
+ float normalDiff = dot(normal - neighborNormal, normalEdgeBias);
157
+ float normalIndicator = clamp(smoothstep(-.01, .01, normalDiff), 0.0, 1.0);
158
+
159
+ // Only the shallower pixel should detect the normal edge.
160
+ float depthIndicator = clamp(sign(depthDiff * .25 + .0025), 0.0, 1.0);
161
+
162
+ return (1.0 - dot(normal, neighborNormal)) * depthIndicator * normalIndicator;
163
+
164
+ }
165
+
166
+ float normalEdgeIndicator(float depth, vec3 normal) {
167
+
168
+ float indicator = 0.0;
169
+
170
+ indicator += neighborNormalEdgeIndicator(0, -1, depth, normal);
171
+ indicator += neighborNormalEdgeIndicator(0, 1, depth, normal);
172
+ indicator += neighborNormalEdgeIndicator(-1, 0, depth, normal);
173
+ indicator += neighborNormalEdgeIndicator(1, 0, depth, normal);
174
+
175
+ return step(0.1, indicator);
176
+
177
+ }
178
+
179
+ void main() {
180
+
181
+ vec4 texel = texture2D( tDiffuse, vUv );
182
+
183
+ float depth = 0.0;
184
+ vec3 normal = vec3(0.0);
185
+
186
+ if (depthEdgeStrength > 0.0 || normalEdgeStrength > 0.0) {
187
+
188
+ depth = getDepth(0, 0);
189
+ normal = getNormal(0, 0);
190
+
191
+ }
192
+
193
+ float dei = 0.0;
194
+ if (depthEdgeStrength > 0.0)
195
+ dei = depthEdgeIndicator(depth, normal);
196
+
197
+ float nei = 0.0;
198
+ if (normalEdgeStrength > 0.0)
199
+ nei = normalEdgeIndicator(depth, normal);
200
+
201
+ float Strength = dei > 0.0 ? (1.0 - depthEdgeStrength * dei) : (1.0 + normalEdgeStrength * nei);
202
+
203
+ gl_FragColor = texel * Strength;
204
+
205
+ }
206
+ `
207
+ } );
208
+
209
+ }
210
+
211
+ }
212
+
213
+ THREE.RenderPixelatedPass = RenderPixelatedPass;
214
+
215
+ } )();