@needle-tools/three 0.145.2 → 0.146.1

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 (394) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +3559 -6924
  3. package/build/three.js +3559 -6924
  4. package/build/three.min.js +1 -2
  5. package/build/three.module.js +732 -339
  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 +94 -28
  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/WebGLCubeUVMaps.js +1 -1
  381. package/src/renderers/webgl/WebGLLights.js +0 -4
  382. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  383. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  384. package/src/renderers/webgl/WebGLState.js +31 -1
  385. package/src/renderers/webgl/WebGLTextures.js +71 -18
  386. package/src/renderers/webgl/WebGLUniforms.js +116 -20
  387. package/src/renderers/webgl/WebGLUtils.js +1 -1
  388. package/src/renderers/webxr/WebXRController.js +46 -13
  389. package/src/renderers/webxr/WebXRManager.js +85 -3
  390. package/src/scenes/Scene.js +8 -0
  391. package/src/textures/CompressedArrayTexture.js +18 -0
  392. package/examples/js/libs/lottie_canvas.js +0 -12751
  393. package/examples/js/shaders/PixelShader.js +0 -51
  394. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -11,7 +11,6 @@
11
11
  }
12
12
 
13
13
  }
14
-
15
14
  class SVGRenderer {
16
15
 
17
16
  constructor() {
@@ -32,7 +31,6 @@
32
31
  _quality = 1,
33
32
  _currentPath,
34
33
  _currentStyle;
35
-
36
34
  const _this = this,
37
35
  _clipBox = new THREE.Box2(),
38
36
  _elemBox = new THREE.Box2(),
@@ -52,7 +50,6 @@
52
50
  _svgPathPool = [],
53
51
  _projector = new THREE.Projector(),
54
52
  _svg = document.createElementNS( 'http://www.w3.org/2000/svg', 'svg' );
55
-
56
53
  this.domElement = _svg;
57
54
  this.autoClear = true;
58
55
  this.sortObjects = true;
@@ -64,7 +61,6 @@
64
61
  faces: 0
65
62
  }
66
63
  };
67
-
68
64
  this.setQuality = function ( quality ) {
69
65
 
70
66
  switch ( quality ) {
@@ -72,7 +68,6 @@
72
68
  case 'high':
73
69
  _quality = 1;
74
70
  break;
75
-
76
71
  case 'low':
77
72
  _quality = 0;
78
73
  break;
@@ -95,15 +90,10 @@
95
90
  _svgHeight = height;
96
91
  _svgWidthHalf = _svgWidth / 2;
97
92
  _svgHeightHalf = _svgHeight / 2;
98
-
99
93
  _svg.setAttribute( 'viewBox', - _svgWidthHalf + ' ' + - _svgHeightHalf + ' ' + _svgWidth + ' ' + _svgHeight );
100
-
101
94
  _svg.setAttribute( 'width', _svgWidth );
102
-
103
95
  _svg.setAttribute( 'height', _svgHeight );
104
-
105
96
  _clipBox.min.set( - _svgWidthHalf, - _svgHeightHalf );
106
-
107
97
  _clipBox.max.set( _svgWidthHalf, _svgHeightHalf );
108
98
 
109
99
  };
@@ -126,7 +116,6 @@
126
116
  function removeChildNodes() {
127
117
 
128
118
  _pathCount = 0;
129
-
130
119
  while ( _svg.childNodes.length > 0 ) {
131
120
 
132
121
  _svg.removeChild( _svg.childNodes[ 0 ] );
@@ -158,7 +147,6 @@
158
147
  }
159
148
 
160
149
  const background = scene.background;
161
-
162
150
  if ( background && background.isColor ) {
163
151
 
164
152
  removeChildNodes();
@@ -172,30 +160,24 @@
172
160
 
173
161
  _this.info.render.vertices = 0;
174
162
  _this.info.render.faces = 0;
175
-
176
163
  _viewMatrix.copy( camera.matrixWorldInverse );
177
-
178
164
  _viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix );
179
-
180
165
  _renderData = _projector.projectScene( scene, camera, this.sortObjects, this.sortElements );
181
166
  _elements = _renderData.elements;
182
167
  _lights = _renderData.lights;
183
-
184
168
  _normalViewMatrix.getNormalMatrix( camera.matrixWorldInverse );
169
+ calculateLights( _lights );
185
170
 
186
- calculateLights( _lights ); // reset accumulated path
171
+ // reset accumulated path
187
172
 
188
173
  _currentPath = '';
189
174
  _currentStyle = '';
190
-
191
175
  for ( let e = 0, el = _elements.length; e < el; e ++ ) {
192
176
 
193
177
  const element = _elements[ e ];
194
178
  const material = element.material;
195
179
  if ( material === undefined || material.opacity === 0 ) continue;
196
-
197
180
  _elemBox.makeEmpty();
198
-
199
181
  if ( element instanceof THREE.RenderableSprite ) {
200
182
 
201
183
  _v1 = element;
@@ -211,9 +193,7 @@
211
193
  _v1.positionScreen.y *= - _svgHeightHalf;
212
194
  _v2.positionScreen.x *= _svgWidthHalf;
213
195
  _v2.positionScreen.y *= - _svgHeightHalf;
214
-
215
196
  _elemBox.setFromPoints( [ _v1.positionScreen, _v2.positionScreen ] );
216
-
217
197
  if ( _clipBox.intersectsBox( _elemBox ) === true ) {
218
198
 
219
199
  renderLine( _v1, _v2, material );
@@ -234,7 +214,6 @@
234
214
  _v2.positionScreen.y *= - _svgHeightHalf;
235
215
  _v3.positionScreen.x *= _svgWidthHalf;
236
216
  _v3.positionScreen.y *= - _svgHeightHalf;
237
-
238
217
  if ( this.overdraw > 0 ) {
239
218
 
240
219
  expand( _v1.positionScreen, _v2.positionScreen, this.overdraw );
@@ -244,7 +223,6 @@
244
223
  }
245
224
 
246
225
  _elemBox.setFromPoints( [ _v1.positionScreen, _v2.positionScreen, _v3.positionScreen ] );
247
-
248
226
  if ( _clipBox.intersectsBox( _elemBox ) === true ) {
249
227
 
250
228
  renderFace3( _v1, _v2, _v3, element, material );
@@ -262,15 +240,12 @@
262
240
  if ( object.isSVGObject ) {
263
241
 
264
242
  _vector3.setFromMatrixPosition( object.matrixWorld );
265
-
266
243
  _vector3.applyMatrix4( _viewProjectionMatrix );
267
-
268
244
  if ( _vector3.z < - 1 || _vector3.z > 1 ) return;
269
245
  const x = _vector3.x * _svgWidthHalf;
270
246
  const y = - _vector3.y * _svgHeightHalf;
271
247
  const node = object.node;
272
248
  node.setAttribute( 'transform', 'translate(' + x + ',' + y + ')' );
273
-
274
249
  _svg.appendChild( node );
275
250
 
276
251
  }
@@ -282,16 +257,12 @@
282
257
  function calculateLights( lights ) {
283
258
 
284
259
  _ambientLight.setRGB( 0, 0, 0 );
285
-
286
260
  _directionalLights.setRGB( 0, 0, 0 );
287
-
288
261
  _pointLights.setRGB( 0, 0, 0 );
289
-
290
262
  for ( let l = 0, ll = lights.length; l < ll; l ++ ) {
291
263
 
292
264
  const light = lights[ l ];
293
265
  const lightColor = light.color;
294
-
295
266
  if ( light.isAmbientLight ) {
296
267
 
297
268
  _ambientLight.r += lightColor.r;
@@ -322,11 +293,9 @@
322
293
 
323
294
  const light = lights[ l ];
324
295
  const lightColor = light.color;
325
-
326
296
  if ( light.isDirectionalLight ) {
327
297
 
328
298
  const lightPosition = _vector3.setFromMatrixPosition( light.matrixWorld ).normalize();
329
-
330
299
  let amount = normal.dot( lightPosition );
331
300
  if ( amount <= 0 ) continue;
332
301
  amount *= light.intensity;
@@ -337,7 +306,6 @@
337
306
  } else if ( light.isPointLight ) {
338
307
 
339
308
  const lightPosition = _vector3.setFromMatrixPosition( light.matrixWorld );
340
-
341
309
  let amount = normal.dot( _vector3.subVectors( lightPosition, position ).normalize() );
342
310
  if ( amount <= 0 ) continue;
343
311
  amount *= light.distance == 0 ? 1 : 1 - Math.min( position.distanceTo( lightPosition ) / light.distance, 1 );
@@ -357,7 +325,6 @@
357
325
 
358
326
  let scaleX = element.scale.x * _svgWidthHalf;
359
327
  let scaleY = element.scale.y * _svgHeightHalf;
360
-
361
328
  if ( material.isPointsMaterial ) {
362
329
 
363
330
  scaleX *= material.size;
@@ -367,7 +334,6 @@
367
334
 
368
335
  const path = 'M' + convert( v1.x - scaleX * 0.5 ) + ',' + convert( v1.y - scaleY * 0.5 ) + 'h' + convert( scaleX ) + 'v' + convert( scaleY ) + 'h' + convert( - scaleX ) + 'z';
369
336
  let style = '';
370
-
371
337
  if ( material.isSpriteMaterial || material.isPointsMaterial ) {
372
338
 
373
339
  style = 'fill:' + material.color.getStyle() + ';fill-opacity:' + material.opacity;
@@ -381,11 +347,9 @@
381
347
  function renderLine( v1, v2, material ) {
382
348
 
383
349
  const path = 'M' + convert( v1.positionScreen.x ) + ',' + convert( v1.positionScreen.y ) + 'L' + convert( v2.positionScreen.x ) + ',' + convert( v2.positionScreen.y );
384
-
385
350
  if ( material.isLineBasicMaterial ) {
386
351
 
387
352
  let style = 'fill:none;stroke:' + material.color.getStyle() + ';stroke-opacity:' + material.opacity + ';stroke-width:' + material.linewidth + ';stroke-linecap:' + material.linecap;
388
-
389
353
  if ( material.isLineDashedMaterial ) {
390
354
 
391
355
  style = style + ';stroke-dasharray:' + material.dashSize + ',' + material.gapSize;
@@ -404,11 +368,9 @@
404
368
  _this.info.render.faces ++;
405
369
  const path = 'M' + convert( v1.positionScreen.x ) + ',' + convert( v1.positionScreen.y ) + 'L' + convert( v2.positionScreen.x ) + ',' + convert( v2.positionScreen.y ) + 'L' + convert( v3.positionScreen.x ) + ',' + convert( v3.positionScreen.y ) + 'z';
406
370
  let style = '';
407
-
408
371
  if ( material.isMeshBasicMaterial ) {
409
372
 
410
373
  _color.copy( material.color );
411
-
412
374
  if ( material.vertexColors ) {
413
375
 
414
376
  _color.multiply( element.color );
@@ -418,7 +380,6 @@
418
380
  } else if ( material.isMeshLambertMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial ) {
419
381
 
420
382
  _diffuseColor.copy( material.color );
421
-
422
383
  if ( material.vertexColors ) {
423
384
 
424
385
  _diffuseColor.multiply( element.color );
@@ -426,17 +387,13 @@
426
387
  }
427
388
 
428
389
  _color.copy( _ambientLight );
429
-
430
390
  _centroid.copy( v1.positionWorld ).add( v2.positionWorld ).add( v3.positionWorld ).divideScalar( 3 );
431
-
432
391
  calculateLight( _lights, _centroid, element.normalModel, _color );
433
-
434
392
  _color.multiply( _diffuseColor ).add( material.emissive );
435
393
 
436
394
  } else if ( material.isMeshNormalMaterial ) {
437
395
 
438
396
  _normal.copy( element.normalModel ).applyMatrix3( _normalViewMatrix ).normalize();
439
-
440
397
  _color.setRGB( _normal.x, _normal.y, _normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );
441
398
 
442
399
  }
@@ -453,8 +410,9 @@
453
410
 
454
411
  addPath( style, path );
455
412
 
456
- } // Hide anti-alias gaps
413
+ }
457
414
 
415
+ // Hide anti-alias gaps
458
416
 
459
417
  function expand( v1, v2, pixels ) {
460
418
 
@@ -493,11 +451,8 @@
493
451
  if ( _currentPath ) {
494
452
 
495
453
  _svgNode = getPathNode( _pathCount ++ );
496
-
497
454
  _svgNode.setAttribute( 'd', _currentPath );
498
-
499
455
  _svgNode.setAttribute( 'style', _currentStyle );
500
-
501
456
  _svg.appendChild( _svgNode );
502
457
 
503
458
  }
@@ -512,7 +467,6 @@
512
467
  if ( _svgPathPool[ id ] == null ) {
513
468
 
514
469
  _svgPathPool[ id ] = document.createElementNS( 'http://www.w3.org/2000/svg', 'path' );
515
-
516
470
  if ( _quality == 0 ) {
517
471
 
518
472
  _svgPathPool[ id ].setAttribute( 'shape-rendering', 'crispEdges' ); //optimizeSpeed
@@ -7,6 +7,7 @@
7
7
  * this implementation of ACES is modified to accommodate a brighter viewing environment.
8
8
  * the scale factor of 1/0.6 is subjective. see discussion in #19621.
9
9
  */
10
+
10
11
  const ACESFilmicToneMappingShader = {
11
12
  uniforms: {
12
13
  'tDiffuse': {
@@ -16,9 +17,7 @@
16
17
  value: 1.0
17
18
  }
18
19
  },
19
- vertexShader:
20
- /* glsl */
21
- `
20
+ vertexShader: /* glsl */`
22
21
 
23
22
  varying vec2 vUv;
24
23
 
@@ -28,9 +27,7 @@
28
27
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
29
28
 
30
29
  }`,
31
- fragmentShader:
32
- /* glsl */
33
- `
30
+ fragmentShader: /* glsl */`
34
31
 
35
32
  #define saturate(a) clamp( a, 0.0, 1.0 )
36
33
 
@@ -5,6 +5,7 @@
5
5
  * I created this effect inspired by a demo on codepen:
6
6
  * https://codepen.io/brunoimbrizi/pen/MoRJaN?page=1&
7
7
  */
8
+
8
9
  const AfterimageShader = {
9
10
  uniforms: {
10
11
  'damp': {
@@ -17,9 +18,7 @@
17
18
  value: null
18
19
  }
19
20
  },
20
- vertexShader:
21
- /* glsl */
22
- `
21
+ vertexShader: /* glsl */`
23
22
 
24
23
  varying vec2 vUv;
25
24
 
@@ -29,9 +28,7 @@
29
28
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
30
29
 
31
30
  }`,
32
- fragmentShader:
33
- /* glsl */
34
- `
31
+ fragmentShader: /* glsl */`
35
32
 
36
33
  uniform float damp;
37
34
 
@@ -3,20 +3,17 @@
3
3
  /**
4
4
  * Simple test shader
5
5
  */
6
+
6
7
  const BasicShader = {
7
8
  uniforms: {},
8
- vertexShader:
9
- /* glsl */
10
- `
9
+ vertexShader: /* glsl */`
11
10
 
12
11
  void main() {
13
12
 
14
13
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
15
14
 
16
15
  }`,
17
- fragmentShader:
18
- /* glsl */
19
- `
16
+ fragmentShader: /* glsl */`
20
17
 
21
18
  void main() {
22
19
 
@@ -5,6 +5,7 @@
5
5
  * - based on Nvidia example
6
6
  * http://developer.download.nvidia.com/shaderlibrary/webpages/shader_library.html#post_bleach_bypass
7
7
  */
8
+
8
9
  const BleachBypassShader = {
9
10
  uniforms: {
10
11
  'tDiffuse': {
@@ -14,9 +15,7 @@
14
15
  value: 1.0
15
16
  }
16
17
  },
17
- vertexShader:
18
- /* glsl */
19
- `
18
+ vertexShader: /* glsl */`
20
19
 
21
20
  varying vec2 vUv;
22
21
 
@@ -26,9 +25,7 @@
26
25
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
27
26
 
28
27
  }`,
29
- fragmentShader:
30
- /* glsl */
31
- `
28
+ fragmentShader: /* glsl */`
32
29
 
33
30
  uniform float opacity;
34
31
 
@@ -3,6 +3,7 @@
3
3
  /**
4
4
  * Blend two textures
5
5
  */
6
+
6
7
  const BlendShader = {
7
8
  uniforms: {
8
9
  'tDiffuse1': {
@@ -18,9 +19,7 @@
18
19
  value: 1.0
19
20
  }
20
21
  },
21
- vertexShader:
22
- /* glsl */
23
- `
22
+ vertexShader: /* glsl */`
24
23
 
25
24
  varying vec2 vUv;
26
25
 
@@ -30,9 +29,7 @@
30
29
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
31
30
 
32
31
  }`,
33
- fragmentShader:
34
- /* glsl */
35
- `
32
+ fragmentShader: /* glsl */`
36
33
 
37
34
  uniform float opacity;
38
35
  uniform float mixRatio;
@@ -5,6 +5,7 @@
5
5
  * ported from GLSL shader by Martins Upitis
6
6
  * http://artmartinsh.blogspot.com/2010/02/glsl-lens-blur-filter-with-bokeh.html
7
7
  */
8
+
8
9
  const BokehShader = {
9
10
  defines: {
10
11
  'DEPTH_PACKING': 1,
@@ -36,9 +37,7 @@
36
37
  value: 1000.0
37
38
  }
38
39
  },
39
- vertexShader:
40
- /* glsl */
41
- `
40
+ vertexShader: /* glsl */`
42
41
 
43
42
  varying vec2 vUv;
44
43
 
@@ -48,9 +47,7 @@
48
47
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
49
48
 
50
49
  }`,
51
- fragmentShader:
52
- /* glsl */
53
- `
50
+ fragmentShader: /* glsl */`
54
51
 
55
52
  #include <common>
56
53
 
@@ -7,7 +7,6 @@
7
7
  *
8
8
  * Requires #define RINGS and SAMPLES integers
9
9
  */
10
-
11
10
  const BokehShader = {
12
11
  uniforms: {
13
12
  'textureWidth': {
@@ -80,9 +79,7 @@
80
79
  value: new THREE.Vector2()
81
80
  }
82
81
  },
83
- vertexShader:
84
- /* glsl */
85
- `
82
+ vertexShader: /* glsl */`
86
83
 
87
84
  varying vec2 vUv;
88
85
 
@@ -92,9 +89,7 @@
92
89
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
93
90
 
94
91
  }`,
95
- fragmentShader:
96
- /* glsl */
97
- `
92
+ fragmentShader: /* glsl */`
98
93
 
99
94
  #include <common>
100
95
 
@@ -391,9 +386,7 @@
391
386
  value: 1000.0
392
387
  }
393
388
  },
394
- vertexShader:
395
- /* glsl */
396
- `
389
+ vertexShader: /* glsl */`
397
390
 
398
391
  varying float vViewZDepth;
399
392
 
@@ -405,9 +398,7 @@
405
398
  vViewZDepth = - mvPosition.z;
406
399
 
407
400
  }`,
408
- fragmentShader:
409
- /* glsl */
410
- `
401
+ fragmentShader: /* glsl */`
411
402
 
412
403
  uniform float mNear;
413
404
  uniform float mFar;
@@ -6,6 +6,7 @@
6
6
  * brightness: -1 to 1 (-1 is solid black, 0 is no change, and 1 is solid white)
7
7
  * contrast: -1 to 1 (-1 is solid gray, 0 is no change, and 1 is maximum contrast)
8
8
  */
9
+
9
10
  const BrightnessContrastShader = {
10
11
  uniforms: {
11
12
  'tDiffuse': {
@@ -18,9 +19,7 @@
18
19
  value: 0
19
20
  }
20
21
  },
21
- vertexShader:
22
- /* glsl */
23
- `
22
+ vertexShader: /* glsl */`
24
23
 
25
24
  varying vec2 vUv;
26
25
 
@@ -31,9 +30,7 @@
31
30
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
32
31
 
33
32
  }`,
34
- fragmentShader:
35
- /* glsl */
36
- `
33
+ fragmentShader: /* glsl */`
37
34
 
38
35
  uniform sampler2D tDiffuse;
39
36
  uniform float brightness;
@@ -19,9 +19,7 @@
19
19
  value: new THREE.Vector3( 0, 0, 0 )
20
20
  }
21
21
  },
22
- vertexShader:
23
- /* glsl */
24
- `
22
+ vertexShader: /* glsl */`
25
23
 
26
24
  varying vec2 vUv;
27
25
 
@@ -32,9 +30,7 @@
32
30
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
33
31
 
34
32
  }`,
35
- fragmentShader:
36
- /* glsl */
37
- `
33
+ fragmentShader: /* glsl */`
38
34
 
39
35
  uniform sampler2D tDiffuse;
40
36
  uniform vec3 powRGB;
@@ -13,9 +13,7 @@
13
13
  value: new THREE.Color( 0xffffff )
14
14
  }
15
15
  },
16
- vertexShader:
17
- /* glsl */
18
- `
16
+ vertexShader: /* glsl */`
19
17
 
20
18
  varying vec2 vUv;
21
19
 
@@ -25,9 +23,7 @@
25
23
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
26
24
 
27
25
  }`,
28
- fragmentShader:
29
- /* glsl */
30
- `
26
+ fragmentShader: /* glsl */`
31
27
 
32
28
  uniform vec3 color;
33
29
  uniform sampler2D tDiffuse;
@@ -21,9 +21,7 @@
21
21
  value: []
22
22
  }
23
23
  },
24
- vertexShader:
25
- /* glsl */
26
- `
24
+ vertexShader: /* glsl */`
27
25
 
28
26
  uniform vec2 uImageIncrement;
29
27
 
@@ -35,9 +33,7 @@
35
33
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
36
34
 
37
35
  }`,
38
- fragmentShader:
39
- /* glsl */
40
- `
36
+ fragmentShader: /* glsl */`
41
37
 
42
38
  uniform float cKernel[ KERNEL_SIZE_INT ];
43
39
 
@@ -64,28 +60,27 @@
64
60
  buildKernel: function ( sigma ) {
65
61
 
66
62
  // We lop off the sqrt(2 * pi) * sigma term, since we're going to normalize anyway.
63
+
67
64
  const kMaxKernelSize = 25;
68
65
  let kernelSize = 2 * Math.ceil( sigma * 3.0 ) + 1;
69
66
  if ( kernelSize > kMaxKernelSize ) kernelSize = kMaxKernelSize;
70
67
  const halfWidth = ( kernelSize - 1 ) * 0.5;
71
68
  const values = new Array( kernelSize );
72
69
  let sum = 0.0;
73
-
74
70
  for ( let i = 0; i < kernelSize; ++ i ) {
75
71
 
76
72
  values[ i ] = gauss( i - halfWidth, sigma );
77
73
  sum += values[ i ];
78
74
 
79
- } // normalize the kernel
75
+ }
80
76
 
77
+ // normalize the kernel
81
78
 
82
79
  for ( let i = 0; i < kernelSize; ++ i ) values[ i ] /= sum;
83
-
84
80
  return values;
85
81
 
86
82
  }
87
83
  };
88
-
89
84
  function gauss( x, sigma ) {
90
85
 
91
86
  return Math.exp( - ( x * x ) / ( 2.0 * sigma * sigma ) );
@@ -3,6 +3,7 @@
3
3
  /**
4
4
  * Full-screen textured quad shader
5
5
  */
6
+
6
7
  const CopyShader = {
7
8
  uniforms: {
8
9
  'tDiffuse': {
@@ -12,9 +13,7 @@
12
13
  value: 1.0
13
14
  }
14
15
  },
15
- vertexShader:
16
- /* glsl */
17
- `
16
+ vertexShader: /* glsl */`
18
17
 
19
18
  varying vec2 vUv;
20
19
 
@@ -24,9 +23,7 @@
24
23
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
25
24
 
26
25
  }`,
27
- fragmentShader:
28
- /* glsl */
29
- `
26
+ fragmentShader: /* glsl */`
30
27
 
31
28
  uniform float opacity;
32
29
 
@@ -5,6 +5,7 @@
5
5
  * - from Matt Handley @applmak
6
6
  * - requires power-of-2 sized render target with enabled mipmaps
7
7
  */
8
+
8
9
  const DOFMipMapShader = {
9
10
  uniforms: {
10
11
  'tColor': {
@@ -20,9 +21,7 @@
20
21
  value: 1.0
21
22
  }
22
23
  },
23
- vertexShader:
24
- /* glsl */
25
- `
24
+ vertexShader: /* glsl */`
26
25
 
27
26
  varying vec2 vUv;
28
27
 
@@ -32,9 +31,7 @@
32
31
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
33
32
 
34
33
  }`,
35
- fragmentShader:
36
- /* glsl */
37
- `
34
+ fragmentShader: /* glsl */`
38
35
 
39
36
  uniform float focus;
40
37
  uniform float maxblur;