super-three 0.133.4 → 0.136.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 (409) hide show
  1. package/LICENSE +1 -1
  2. package/build/three.js +2285 -1983
  3. package/build/three.min.js +1 -1
  4. package/build/three.module.js +5983 -5358
  5. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  6. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  7. package/examples/fonts/open-sans/open-sans.css +9 -0
  8. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  9. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +3966 -0
  10. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  11. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  12. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  13. package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
  14. package/examples/js/animation/CCDIKSolver.js +0 -1
  15. package/examples/js/animation/MMDPhysics.js +2 -4
  16. package/examples/js/cameras/CinematicCamera.js +2 -7
  17. package/examples/js/controls/ArcballControls.js +99 -72
  18. package/examples/js/controls/DragControls.js +7 -0
  19. package/examples/js/controls/OrbitControls.js +5 -36
  20. package/examples/js/controls/TrackballControls.js +3 -2
  21. package/examples/js/controls/TransformControls.js +24 -1
  22. package/examples/js/csm/CSM.js +2 -2
  23. package/examples/js/csm/CSMFrustum.js +133 -0
  24. package/examples/js/curves/CurveExtras.js +0 -2
  25. package/examples/js/effects/AsciiEffect.js +2 -9
  26. package/examples/js/exporters/GLTFExporter.js +148 -64
  27. package/examples/js/exporters/MMDExporter.js +1 -1
  28. package/examples/js/exporters/USDZExporter.js +45 -26
  29. package/examples/js/geometries/ConvexGeometry.js +1 -1
  30. package/examples/js/geometries/TeapotGeometry.js +0 -1
  31. package/examples/js/interactive/SelectionBox.js +2 -0
  32. package/examples/js/interactive/SelectionHelper.js +22 -7
  33. package/examples/js/lights/RectAreaLightUniformsLib.js +4 -0
  34. package/examples/js/lines/LineMaterial.js +58 -20
  35. package/examples/js/lines/LineSegments2.js +29 -24
  36. package/examples/js/loaders/3DMLoader.js +24 -11
  37. package/examples/js/loaders/3MFLoader.js +2 -2
  38. package/examples/js/loaders/AMFLoader.js +0 -2
  39. package/examples/js/loaders/BasisTextureLoader.js +1 -0
  40. package/examples/js/loaders/ColladaLoader.js +61 -4
  41. package/examples/js/loaders/EXRLoader.js +201 -272
  42. package/examples/js/loaders/FBXLoader.js +4 -5
  43. package/examples/js/loaders/GLTFLoader.js +98 -35
  44. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -10
  45. package/examples/js/loaders/KTX2Loader.js +23 -2
  46. package/examples/js/loaders/KTXLoader.js +1 -1
  47. package/examples/js/loaders/LDrawLoader.js +1169 -901
  48. package/examples/js/loaders/LUT3dlLoader.js +19 -10
  49. package/examples/js/loaders/LUTCubeLoader.js +5 -4
  50. package/examples/js/loaders/LWOLoader.js +8 -6
  51. package/examples/js/loaders/LogLuvLoader.js +766 -0
  52. package/examples/js/loaders/MMDLoader.js +0 -1
  53. package/examples/js/loaders/NRRDLoader.js +9 -2
  54. package/examples/js/loaders/OBJLoader.js +0 -2
  55. package/examples/js/loaders/PLYLoader.js +33 -8
  56. package/examples/js/loaders/RGBELoader.js +8 -22
  57. package/examples/js/loaders/RGBMLoader.js +56 -6
  58. package/examples/js/loaders/SVGLoader.js +12 -6
  59. package/examples/js/loaders/TDSLoader.js +237 -271
  60. package/examples/js/loaders/VOXLoader.js +1 -0
  61. package/examples/js/loaders/VRMLLoader.js +11 -22
  62. package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
  63. package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
  64. package/examples/js/math/ConvexHull.js +7 -13
  65. package/examples/js/math/ImprovedNoise.js +1 -1
  66. package/examples/js/misc/GPUComputationRenderer.js +3 -1
  67. package/examples/js/misc/Volume.js +2 -2
  68. package/examples/js/modifiers/CurveModifier.js +8 -7
  69. package/examples/js/modifiers/EdgeSplitModifier.js +1 -1
  70. package/examples/js/modifiers/SimplifyModifier.js +1 -1
  71. package/examples/js/objects/Lensflare.js +2 -10
  72. package/examples/js/objects/MarchingCubes.js +42 -128
  73. package/examples/js/objects/Reflector.js +8 -13
  74. package/examples/js/objects/ReflectorForSSRPass.js +0 -10
  75. package/examples/js/objects/Refractor.js +8 -13
  76. package/examples/js/objects/Sky.js +1 -1
  77. package/examples/js/objects/Water.js +3 -15
  78. package/examples/js/objects/Water2.js +4 -7
  79. package/examples/js/postprocessing/GlitchPass.js +6 -5
  80. package/examples/js/postprocessing/SMAAPass.js +2 -9
  81. package/examples/js/postprocessing/SSAOPass.js +10 -21
  82. package/examples/js/postprocessing/SavePass.js +1 -5
  83. package/examples/js/renderers/CSS2DRenderer.js +4 -4
  84. package/examples/js/renderers/CSS3DRenderer.js +4 -4
  85. package/examples/js/shaders/ConvolutionShader.js +0 -1
  86. package/examples/js/shaders/DigitalGlitch.js +3 -3
  87. package/examples/js/shaders/FXAAShader.js +1 -1
  88. package/examples/js/shaders/FilmShader.js +1 -1
  89. package/examples/js/shaders/GammaCorrectionShader.js +1 -1
  90. package/examples/js/shaders/HorizontalBlurShader.js +1 -2
  91. package/examples/js/shaders/MMDToonShader.js +0 -1
  92. package/examples/js/shaders/SSAOShader.js +1 -1
  93. package/examples/js/shaders/SSRShader.js +1 -1
  94. package/examples/js/shaders/SSRrShader.js +1 -1
  95. package/examples/js/shaders/VerticalBlurShader.js +1 -2
  96. package/examples/js/utils/GeometryUtils.js +1 -1
  97. package/examples/jsm/animation/CCDIKSolver.js +0 -1
  98. package/examples/jsm/animation/MMDPhysics.js +1 -3
  99. package/examples/jsm/cameras/CinematicCamera.js +2 -5
  100. package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
  101. package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +1 -1
  102. package/examples/jsm/controls/ArcballControls.js +80 -77
  103. package/examples/jsm/controls/DragControls.js +7 -0
  104. package/examples/jsm/controls/OrbitControls.js +9 -51
  105. package/examples/jsm/controls/TrackballControls.js +1 -1
  106. package/examples/jsm/controls/TransformControls.js +24 -1
  107. package/examples/jsm/csm/CSM.js +3 -3
  108. package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
  109. package/examples/jsm/curves/CurveExtras.js +0 -2
  110. package/examples/jsm/effects/AsciiEffect.js +2 -9
  111. package/examples/jsm/exporters/GLTFExporter.js +169 -99
  112. package/examples/jsm/exporters/MMDExporter.js +1 -1
  113. package/examples/jsm/exporters/USDZExporter.js +47 -26
  114. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  115. package/examples/jsm/geometries/TeapotGeometry.js +0 -1
  116. package/examples/jsm/interactive/SelectionBox.js +1 -0
  117. package/examples/jsm/interactive/SelectionHelper.js +19 -7
  118. package/examples/jsm/libs/flow.module.js +3338 -0
  119. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  120. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  121. package/examples/jsm/lights/RectAreaLightUniformsLib.js +7 -0
  122. package/examples/jsm/lines/LineMaterial.js +59 -23
  123. package/examples/jsm/lines/LineSegments2.js +22 -18
  124. package/examples/jsm/loaders/3DMLoader.js +18 -12
  125. package/examples/jsm/loaders/3MFLoader.js +2 -2
  126. package/examples/jsm/loaders/AMFLoader.js +0 -2
  127. package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
  128. package/examples/jsm/loaders/ColladaLoader.js +61 -4
  129. package/examples/jsm/loaders/EXRLoader.js +200 -306
  130. package/examples/jsm/loaders/FBXLoader.js +4 -5
  131. package/examples/jsm/loaders/GLTFLoader.js +102 -40
  132. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -17
  133. package/examples/jsm/loaders/KTX2Loader.js +30 -2
  134. package/examples/jsm/loaders/KTXLoader.js +1 -1
  135. package/examples/jsm/loaders/LDrawLoader.js +1159 -898
  136. package/examples/jsm/loaders/LUT3dlLoader.js +19 -12
  137. package/examples/jsm/loaders/LUTCubeLoader.js +5 -5
  138. package/examples/jsm/loaders/LWOLoader.js +8 -6
  139. package/examples/jsm/loaders/LogLuvLoader.js +606 -0
  140. package/examples/jsm/loaders/MMDLoader.js +0 -1
  141. package/examples/jsm/loaders/NRRDLoader.js +10 -2
  142. package/examples/jsm/loaders/OBJLoader.js +0 -2
  143. package/examples/jsm/loaders/PLYLoader.js +34 -8
  144. package/examples/jsm/loaders/RGBELoader.js +7 -28
  145. package/examples/jsm/loaders/RGBMLoader.js +62 -8
  146. package/examples/jsm/loaders/SVGLoader.js +15 -7
  147. package/examples/jsm/loaders/TDSLoader.js +236 -275
  148. package/examples/jsm/loaders/VOXLoader.js +1 -0
  149. package/examples/jsm/loaders/VRMLLoader.js +11 -23
  150. package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
  151. package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
  152. package/examples/jsm/math/ConvexHull.js +7 -13
  153. package/examples/jsm/math/ImprovedNoise.js +1 -1
  154. package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
  155. package/examples/jsm/misc/Volume.js +2 -2
  156. package/examples/jsm/modifiers/CurveModifier.js +9 -8
  157. package/examples/jsm/modifiers/EdgeSplitModifier.js +1 -1
  158. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  159. package/examples/jsm/node-editor/NodeEditor.js +455 -0
  160. package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
  161. package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
  162. package/examples/jsm/node-editor/accessors/UVEditor.js +26 -0
  163. package/examples/jsm/node-editor/display/BlendEditor.js +43 -0
  164. package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
  165. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
  166. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
  167. package/examples/jsm/node-editor/examples/rim.json +1 -0
  168. package/examples/jsm/node-editor/inputs/ColorEditor.js +91 -0
  169. package/examples/jsm/node-editor/inputs/FloatEditor.js +24 -0
  170. package/examples/jsm/node-editor/inputs/SliderEditor.js +68 -0
  171. package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
  172. package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
  173. package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
  174. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +108 -0
  175. package/examples/jsm/node-editor/math/DotEditor.js +36 -0
  176. package/examples/jsm/node-editor/math/InvertEditor.js +38 -0
  177. package/examples/jsm/node-editor/math/LimiterEditor.js +48 -0
  178. package/examples/jsm/node-editor/math/NormalizeEditor.js +26 -0
  179. package/examples/jsm/node-editor/math/OperatorEditor.js +50 -0
  180. package/examples/jsm/node-editor/math/PowerEditor.js +34 -0
  181. package/examples/jsm/node-editor/math/TrigonometryEditor.js +39 -0
  182. package/examples/jsm/node-editor/procedural/CheckerEditor.js +26 -0
  183. package/examples/jsm/node-editor/utils/OscillatorEditor.js +42 -0
  184. package/examples/jsm/node-editor/utils/TimerEditor.js +57 -0
  185. package/examples/jsm/nodes/core/NodeBuilder.js +2 -2
  186. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
  187. package/examples/jsm/nodes/materials/nodes/StandardNode.js +7 -6
  188. package/examples/jsm/nodes/math/MathNode.js +12 -0
  189. package/examples/jsm/nodes/misc/BumpMapNode.js +1 -1
  190. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +1 -4
  191. package/examples/jsm/nodes/utils/ColorSpaceNode.js +5 -177
  192. package/examples/jsm/objects/Lensflare.js +5 -16
  193. package/examples/jsm/objects/MarchingCubes.js +46 -152
  194. package/examples/jsm/objects/Reflector.js +8 -16
  195. package/examples/jsm/objects/ReflectorForSSRPass.js +0 -12
  196. package/examples/jsm/objects/Refractor.js +8 -16
  197. package/examples/jsm/objects/Sky.js +1 -1
  198. package/examples/jsm/objects/Water.js +3 -18
  199. package/examples/jsm/objects/Water2.js +4 -8
  200. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
  201. package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
  202. package/examples/jsm/postprocessing/BloomPass.js +1 -1
  203. package/examples/jsm/postprocessing/BokehPass.js +1 -1
  204. package/examples/jsm/postprocessing/ClearPass.js +1 -1
  205. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
  206. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  207. package/examples/jsm/postprocessing/EffectComposer.js +3 -3
  208. package/examples/jsm/postprocessing/FilmPass.js +1 -1
  209. package/examples/jsm/postprocessing/GlitchPass.js +10 -7
  210. package/examples/jsm/postprocessing/HalftonePass.js +1 -1
  211. package/examples/jsm/postprocessing/MaskPass.js +1 -1
  212. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  213. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  214. package/examples/jsm/postprocessing/SAOPass.js +2 -2
  215. package/examples/jsm/postprocessing/SMAAPass.js +3 -12
  216. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
  217. package/examples/jsm/postprocessing/SSAOPass.js +15 -26
  218. package/examples/jsm/postprocessing/SSRPass.js +1 -1
  219. package/examples/jsm/postprocessing/SSRrPass.js +1 -1
  220. package/examples/jsm/postprocessing/SavePass.js +2 -4
  221. package/examples/jsm/postprocessing/ShaderPass.js +1 -1
  222. package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
  223. package/examples/jsm/postprocessing/TexturePass.js +1 -1
  224. package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
  225. package/examples/jsm/renderers/CSS2DRenderer.js +5 -4
  226. package/examples/jsm/renderers/CSS3DRenderer.js +5 -4
  227. package/examples/jsm/renderers/nodes/Nodes.js +17 -13
  228. package/examples/jsm/renderers/nodes/ShaderNode.js +229 -49
  229. package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
  230. package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
  231. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
  232. package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
  233. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
  234. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
  235. package/examples/jsm/renderers/nodes/accessors/UVNode.js +7 -5
  236. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
  237. package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
  238. package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
  239. package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
  240. package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
  241. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
  242. package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
  243. package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
  244. package/examples/jsm/renderers/nodes/core/Node.js +32 -10
  245. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +146 -128
  246. package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
  247. package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
  248. package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
  249. package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
  250. package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
  251. package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
  252. package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
  253. package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
  254. package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
  255. package/examples/jsm/renderers/nodes/core/constants.js +2 -0
  256. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +43 -63
  257. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
  258. package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
  259. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +27 -0
  260. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
  261. package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
  262. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +13 -10
  263. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
  264. package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
  265. package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
  266. package/examples/jsm/renderers/nodes/math/MathNode.js +91 -37
  267. package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
  268. package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
  269. package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
  270. package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
  271. package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
  272. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
  273. package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
  274. package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
  275. package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
  276. package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
  277. package/examples/jsm/renderers/nodes/utils/SplitNode.js +18 -8
  278. package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
  279. package/examples/jsm/renderers/nodes/utils/TimerNode.js +1 -1
  280. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
  281. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +192 -95
  282. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
  283. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
  284. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
  285. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +10 -9
  286. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
  287. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  288. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
  289. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
  290. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +44 -65
  291. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +13 -31
  292. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
  293. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +35 -29
  294. package/examples/jsm/renderers/webgpu/constants.js +2 -2
  295. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +459 -95
  296. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  297. package/examples/jsm/shaders/ConvolutionShader.js +0 -1
  298. package/examples/jsm/shaders/DigitalGlitch.js +3 -3
  299. package/examples/jsm/shaders/FXAAShader.js +1 -1
  300. package/examples/jsm/shaders/FilmShader.js +1 -1
  301. package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
  302. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -2
  303. package/examples/jsm/shaders/MMDToonShader.js +0 -1
  304. package/examples/jsm/shaders/SSAOShader.js +1 -1
  305. package/examples/jsm/shaders/SSRShader.js +1 -1
  306. package/examples/jsm/shaders/SSRrShader.js +1 -1
  307. package/examples/jsm/shaders/VerticalBlurShader.js +1 -2
  308. package/examples/jsm/utils/GeometryUtils.js +1 -1
  309. package/examples/jsm/utils/LDrawUtils.js +195 -0
  310. package/examples/jsm/utils/WorkerPool.js +11 -11
  311. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
  312. package/examples/jsm/webxr/VRButton.js +24 -0
  313. package/examples/jsm/webxr/XREstimatedLight.js +2 -0
  314. package/package.json +27 -18
  315. package/src/Three.Legacy.js +18 -0
  316. package/src/Three.js +1 -3
  317. package/src/animation/AnimationMixer.js +1 -0
  318. package/src/cameras/CubeCamera.js +2 -0
  319. package/src/cameras/StereoCamera.js +8 -7
  320. package/src/constants.js +3 -23
  321. package/src/core/Layers.js +7 -1
  322. package/src/core/Object3D.js +3 -1
  323. package/src/extras/ImageUtils.js +63 -0
  324. package/src/extras/PMREMGenerator.js +49 -185
  325. package/src/extras/core/Interpolations.js +1 -1
  326. package/src/geometries/LatheGeometry.js +70 -47
  327. package/src/helpers/CameraHelper.js +1 -1
  328. package/src/loaders/FileLoader.js +98 -144
  329. package/src/loaders/ImageLoader.js +9 -4
  330. package/src/loaders/LoaderUtils.js +26 -0
  331. package/src/loaders/MaterialLoader.js +8 -5
  332. package/src/loaders/ObjectLoader.js +2 -0
  333. package/src/materials/Material.js +8 -8
  334. package/src/materials/MeshPhysicalMaterial.js +20 -14
  335. package/src/math/Color.js +1 -39
  336. package/src/math/MathUtils.js +5 -16
  337. package/src/math/Quaternion.js +1 -1
  338. package/src/math/Ray.js +2 -2
  339. package/src/math/Sphere.js +10 -1
  340. package/src/objects/Skeleton.js +1 -0
  341. package/src/renderers/WebGLCubeRenderTarget.js +0 -2
  342. package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
  343. package/src/renderers/WebGLRenderer.js +106 -199
  344. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
  345. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +1 -1
  346. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +2 -24
  347. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
  348. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -78
  349. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  350. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
  351. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +1 -1
  352. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
  353. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
  354. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
  355. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +28 -2
  356. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
  357. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
  358. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  359. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  360. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +9 -8
  361. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -3
  362. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
  363. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -1
  364. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -2
  365. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +23 -5
  366. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
  367. package/src/renderers/shaders/ShaderLib.js +8 -6
  368. package/src/renderers/shaders/UniformsLib.js +1 -2
  369. package/src/renderers/webgl/WebGLCapabilities.js +0 -2
  370. package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
  371. package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
  372. package/src/renderers/webgl/WebGLExtensions.js +1 -0
  373. package/src/renderers/webgl/WebGLMaterials.js +27 -15
  374. package/src/renderers/webgl/WebGLMorphtargets.js +13 -0
  375. package/src/renderers/webgl/WebGLProgram.js +12 -37
  376. package/src/renderers/webgl/WebGLPrograms.js +192 -70
  377. package/src/renderers/webgl/WebGLRenderLists.js +4 -14
  378. package/src/renderers/webgl/WebGLShaderCache.js +120 -0
  379. package/src/renderers/webgl/WebGLShadowMap.js +14 -5
  380. package/src/renderers/webgl/WebGLState.js +157 -17
  381. package/src/renderers/webgl/WebGLTextures.js +442 -83
  382. package/src/renderers/webgl/WebGLUniforms.js +45 -1
  383. package/src/renderers/webgl/WebGLUtils.js +86 -28
  384. package/src/renderers/webxr/WebXRManager.js +77 -109
  385. package/src/scenes/Scene.js +1 -1
  386. package/src/textures/DataTexture.js +0 -2
  387. package/src/textures/DataTexture2DArray.js +0 -2
  388. package/src/textures/DataTexture3D.js +0 -2
  389. package/src/textures/FramebufferTexture.js +25 -0
  390. package/src/textures/Texture.js +8 -1
  391. package/src/textures/VideoTexture.js +1 -3
  392. package/examples/js/WebGL.js +0 -90
  393. package/examples/js/controls/DeviceOrientationControls.js +0 -147
  394. package/examples/js/libs/dat.gui.min.js +0 -14
  395. package/examples/js/utils/RoughnessMipmapper.js +0 -278
  396. package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
  397. package/examples/jsm/libs/dat.gui.module.js +0 -3575
  398. package/examples/jsm/libs/glslang.js +0 -78
  399. package/examples/jsm/libs/glslang.wasm +0 -0
  400. package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
  401. package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
  402. package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
  403. package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
  404. package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
  405. package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
  406. package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
  407. package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
  408. package/examples/jsm/utils/RoughnessMipmapper.js +0 -300
  409. package/src/extras/objects/ImmediateRenderObject.js +0 -31
@@ -236,6 +236,7 @@
236
236
  this.minFilter = THREE.NearestFilter;
237
237
  this.magFilter = THREE.LinearFilter;
238
238
  this.unpackAlignment = 1;
239
+ this.needsUpdate = true;
239
240
 
240
241
  }
241
242
 
@@ -139,7 +139,7 @@
139
139
 
140
140
  const StringLiteral = createToken( {
141
141
  name: 'StringLiteral',
142
- pattern: /"(:?[^\\"\n\r]+|\\(:?[bfnrtv"\\/]|u[0-9a-fA-F]{4}))*"/
142
+ pattern: /"(?:[^\\"\n\r]|\\[bfnrtv"\\/]|\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])*"/
143
143
  } );
144
144
  const HexLiteral = createToken( {
145
145
  name: 'HexLiteral',
@@ -1166,6 +1166,7 @@
1166
1166
  color.r = value;
1167
1167
  color.g = value;
1168
1168
  color.b = value;
1169
+ color.a = 1;
1169
1170
  break;
1170
1171
 
1171
1172
  case TEXTURE_TYPE.INTENSITY_ALPHA:
@@ -1182,6 +1183,7 @@
1182
1183
  color.r = parseInt( '0x' + hex.substring( 2, 4 ) );
1183
1184
  color.g = parseInt( '0x' + hex.substring( 4, 6 ) );
1184
1185
  color.b = parseInt( '0x' + hex.substring( 6, 8 ) );
1186
+ color.a = 1;
1185
1187
  break;
1186
1188
 
1187
1189
  case TEXTURE_TYPE.RGBA:
@@ -1247,10 +1249,8 @@
1247
1249
  const width = fieldValues[ 0 ];
1248
1250
  const height = fieldValues[ 1 ];
1249
1251
  const num_components = fieldValues[ 2 ];
1250
- const useAlpha = num_components === 2 || num_components === 4;
1251
1252
  const textureType = getTextureType( num_components );
1252
- const size = ( useAlpha === true ? 4 : 3 ) * ( width * height );
1253
- const data = new Uint8Array( size );
1253
+ const data = new Uint8Array( 4 * width * height );
1254
1254
  const color = {
1255
1255
  r: 0,
1256
1256
  g: 0,
@@ -1261,27 +1261,16 @@
1261
1261
  for ( let j = 3, k = 0, jl = fieldValues.length; j < jl; j ++, k ++ ) {
1262
1262
 
1263
1263
  parseHexColor( fieldValues[ j ], textureType, color );
1264
-
1265
- if ( useAlpha === true ) {
1266
-
1267
- const stride = k * 4;
1268
- data[ stride + 0 ] = color.r;
1269
- data[ stride + 1 ] = color.g;
1270
- data[ stride + 2 ] = color.b;
1271
- data[ stride + 3 ] = color.a;
1272
-
1273
- } else {
1274
-
1275
- const stride = k * 3;
1276
- data[ stride + 0 ] = color.r;
1277
- data[ stride + 1 ] = color.g;
1278
- data[ stride + 2 ] = color.b;
1279
-
1280
- }
1264
+ const stride = k * 4;
1265
+ data[ stride + 0 ] = color.r;
1266
+ data[ stride + 1 ] = color.g;
1267
+ data[ stride + 2 ] = color.b;
1268
+ data[ stride + 3 ] = color.a;
1281
1269
 
1282
1270
  }
1283
1271
 
1284
- texture = new THREE.DataTexture( data, width, height, useAlpha === true ? THREE.RGBAFormat : THREE.RGBFormat );
1272
+ texture = new THREE.DataTexture( data, width, height );
1273
+ texture.needsUpdate = true;
1285
1274
  texture.__type = textureType; // needed for material modifications
1286
1275
 
1287
1276
  break;
@@ -105,6 +105,7 @@
105
105
  case 'WRPH': // image wrap h
106
106
 
107
107
  case 'NMOD':
108
+ case 'NSEL':
108
109
  case 'NPRW':
109
110
  case 'NPLA':
110
111
  case 'NODS':
@@ -38,8 +38,10 @@
38
38
 
39
39
  case 'NORM': // ENVL FORM skipped
40
40
 
41
- case 'PRE ':
42
- case 'POST':
41
+ case 'PRE ': // Pre-loop behavior for the keyframe
42
+
43
+ case 'POST': // Post-loop behavior for the keyframe
44
+
43
45
  case 'KEY ':
44
46
  case 'SPAN': // CLIP FORM skipped
45
47
 
@@ -44,27 +44,21 @@
44
44
 
45
45
  setFromPoints( points ) {
46
46
 
47
- if ( Array.isArray( points ) !== true ) {
47
+ // The algorithm needs at least four points.
48
+ if ( points.length >= 4 ) {
48
49
 
49
- console.error( 'THREE.ConvexHull: Points parameter is not an array.' );
50
+ this.makeEmpty();
50
51
 
51
- }
52
-
53
- if ( points.length < 4 ) {
54
-
55
- console.error( 'THREE.ConvexHull: The algorithm needs at least four points.' );
52
+ for ( let i = 0, l = points.length; i < l; i ++ ) {
56
53
 
57
- }
58
-
59
- this.makeEmpty();
54
+ this.vertices.push( new VertexNode( points[ i ] ) );
60
55
 
61
- for ( let i = 0, l = points.length; i < l; i ++ ) {
56
+ }
62
57
 
63
- this.vertices.push( new VertexNode( points[ i ] ) );
58
+ this.compute();
64
59
 
65
60
  }
66
61
 
67
- this.compute();
68
62
  return this;
69
63
 
70
64
  }
@@ -1,6 +1,6 @@
1
1
  ( function () {
2
2
 
3
- // http://mrl.nyu.edu/~perlin/noise/
3
+ // https://cs.nyu.edu/~perlin/noise/
4
4
  const _p = [ 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180 ];
5
5
 
6
6
  for ( let i = 0; i < 256; i ++ ) {
@@ -310,7 +310,9 @@
310
310
  this.createTexture = function () {
311
311
 
312
312
  const data = new Float32Array( sizeX * sizeY * 4 );
313
- return new THREE.DataTexture( data, sizeX, sizeY, THREE.RGBAFormat, THREE.FloatType );
313
+ const texture = new THREE.DataTexture( data, sizeX, sizeY, THREE.RGBAFormat, THREE.FloatType );
314
+ texture.needsUpdate = true;
315
+ return texture;
314
316
 
315
317
  };
316
318
 
@@ -104,7 +104,7 @@
104
104
  case 'unsigned long long int':
105
105
  case 'uint64':
106
106
  case 'uint64_t':
107
- throw 'Error in Volume constructor : this type is not supported in JavaScript';
107
+ throw new Error( 'Error in Volume constructor : this type is not supported in JavaScript' );
108
108
  break;
109
109
 
110
110
  case 'Float32':
@@ -126,7 +126,7 @@
126
126
 
127
127
  if ( this.data.length !== this.xLength * this.yLength * this.zLength ) {
128
128
 
129
- throw 'Error in Volume constructor, lengths are not matching arrayBuffer size';
129
+ throw new Error( 'Error in Volume constructor, lengths are not matching arrayBuffer size' );
130
130
 
131
131
  }
132
132
 
@@ -1,7 +1,7 @@
1
1
  ( function () {
2
2
 
3
3
  // Original src: https://github.com/zz85/threejs-path-flow
4
- const BITS = 3;
4
+ const CHANNELS = 4;
5
5
  const TEXTURE_WIDTH = 1024;
6
6
  const TEXTURE_HEIGHT = 4;
7
7
  /**
@@ -12,8 +12,8 @@
12
12
 
13
13
  function initSplineTexture( numberOfCurves = 1 ) {
14
14
 
15
- const dataArray = new Float32Array( TEXTURE_WIDTH * TEXTURE_HEIGHT * numberOfCurves * BITS );
16
- const dataTexture = new THREE.DataTexture( dataArray, TEXTURE_WIDTH, TEXTURE_HEIGHT * numberOfCurves, THREE.RGBFormat, THREE.FloatType );
15
+ const dataArray = new Float32Array( TEXTURE_WIDTH * TEXTURE_HEIGHT * numberOfCurves * CHANNELS );
16
+ const dataTexture = new THREE.DataTexture( dataArray, TEXTURE_WIDTH, TEXTURE_HEIGHT * numberOfCurves, THREE.RGBAFormat, THREE.FloatType );
17
17
  dataTexture.wrapS = THREE.RepeatWrapping;
18
18
  dataTexture.wrapY = THREE.RepeatWrapping;
19
19
  dataTexture.magFilter = THREE.NearestFilter;
@@ -62,11 +62,12 @@
62
62
  const {
63
63
  data
64
64
  } = image;
65
- const i = BITS * TEXTURE_WIDTH * o; // Row Offset
65
+ const i = CHANNELS * TEXTURE_WIDTH * o; // Row Offset
66
66
 
67
- data[ index * BITS + i + 0 ] = x;
68
- data[ index * BITS + i + 1 ] = y;
69
- data[ index * BITS + i + 2 ] = z;
67
+ data[ index * CHANNELS + i + 0 ] = x;
68
+ data[ index * CHANNELS + i + 1 ] = y;
69
+ data[ index * CHANNELS + i + 2 ] = z;
70
+ data[ index * CHANNELS + i + 3 ] = 1;
70
71
 
71
72
  }
72
73
  /**
@@ -168,7 +168,7 @@
168
168
 
169
169
  if ( THREE.BufferGeometryUtils === undefined ) {
170
170
 
171
- throw 'THREE.EdgeSplitModifier relies on THREE.BufferGeometryUtils';
171
+ throw new Error( 'THREE.EdgeSplitModifier relies on THREE.BufferGeometryUtils' );
172
172
 
173
173
  }
174
174
 
@@ -17,7 +17,7 @@
17
17
 
18
18
  if ( THREE.BufferGeometryUtils === undefined ) {
19
19
 
20
- throw 'THREE.SimplifyModifier relies on THREE.BufferGeometryUtils';
20
+ throw new Error( 'THREE.SimplifyModifier relies on THREE.BufferGeometryUtils' );
21
21
 
22
22
  }
23
23
 
@@ -15,16 +15,8 @@
15
15
  const positionScreen = new THREE.Vector3();
16
16
  const positionView = new THREE.Vector3(); // textures
17
17
 
18
- const tempMap = new THREE.DataTexture( new Uint8Array( 16 * 16 * 3 ), 16, 16, THREE.RGBFormat );
19
- tempMap.minFilter = THREE.NearestFilter;
20
- tempMap.magFilter = THREE.NearestFilter;
21
- tempMap.wrapS = THREE.ClampToEdgeWrapping;
22
- tempMap.wrapT = THREE.ClampToEdgeWrapping;
23
- const occlusionMap = new THREE.DataTexture( new Uint8Array( 16 * 16 * 3 ), 16, 16, THREE.RGBFormat );
24
- occlusionMap.minFilter = THREE.NearestFilter;
25
- occlusionMap.magFilter = THREE.NearestFilter;
26
- occlusionMap.wrapS = THREE.ClampToEdgeWrapping;
27
- occlusionMap.wrapT = THREE.ClampToEdgeWrapping; // material
18
+ const tempMap = new THREE.FramebufferTexture( 16, 16, THREE.RGBFormat );
19
+ const occlusionMap = new THREE.FramebufferTexture( 16, 16, THREE.RGBFormat ); // material
28
20
 
29
21
  const geometry = Lensflare.Geometry;
30
22
  const material1a = new THREE.RawShaderMaterial( {
@@ -4,18 +4,19 @@
4
4
  * Port of http://webglsamples.org/blob/blob.html
5
5
  */
6
6
 
7
- class MarchingCubes extends THREE.ImmediateRenderObject {
7
+ class MarchingCubes extends THREE.Mesh {
8
8
 
9
- constructor( resolution, material, enableUvs, enableColors ) {
9
+ constructor( resolution, material, enableUvs = false, enableColors = false, maxPolyCount = 10000 ) {
10
10
 
11
- super( material );
11
+ const geometry = new THREE.BufferGeometry();
12
+ super( geometry, material );
12
13
  const scope = this; // temp buffers used in polygonize
13
14
 
14
15
  const vlist = new Float32Array( 12 * 3 );
15
16
  const nlist = new Float32Array( 12 * 3 );
16
17
  const clist = new Float32Array( 12 * 3 );
17
- this.enableUvs = enableUvs !== undefined ? enableUvs : false;
18
- this.enableColors = enableColors !== undefined ? enableColors : false; // functions have to be object properties
18
+ this.enableUvs = enableUvs;
19
+ this.enableColors = enableColors; // functions have to be object properties
19
20
  // prototype functions kill performance
20
21
  // (tested and it was 4x slower !!!)
21
22
 
@@ -35,27 +36,34 @@
35
36
  this.zd = this.size2;
36
37
  this.field = new Float32Array( this.size3 );
37
38
  this.normal_cache = new Float32Array( this.size3 * 3 );
38
- this.palette = new Float32Array( this.size3 * 3 ); // immediate render mode simulator
39
-
40
- this.maxCount = 4096; // TODO: find the fastest size for this buffer
39
+ this.palette = new Float32Array( this.size3 * 3 ); //
41
40
 
42
41
  this.count = 0;
43
- this.hasPositions = false;
44
- this.hasNormals = false;
45
- this.hasColors = false;
46
- this.hasUvs = false;
47
- this.positionArray = new Float32Array( this.maxCount * 3 );
48
- this.normalArray = new Float32Array( this.maxCount * 3 );
42
+ const maxVertexCount = maxPolyCount * 3;
43
+ this.positionArray = new Float32Array( maxVertexCount * 3 );
44
+ const positionAttribute = new THREE.BufferAttribute( this.positionArray, 3 );
45
+ positionAttribute.setUsage( THREE.DynamicDrawUsage );
46
+ geometry.setAttribute( 'position', positionAttribute );
47
+ this.normalArray = new Float32Array( maxVertexCount * 3 );
48
+ const normalAttribute = new THREE.BufferAttribute( this.normalArray, 3 );
49
+ normalAttribute.setUsage( THREE.DynamicDrawUsage );
50
+ geometry.setAttribute( 'normal', normalAttribute );
49
51
 
50
52
  if ( this.enableUvs ) {
51
53
 
52
- this.uvArray = new Float32Array( this.maxCount * 2 );
54
+ this.uvArray = new Float32Array( maxVertexCount * 2 );
55
+ const uvAttribute = new THREE.BufferAttribute( this.uvArray, 2 );
56
+ uvAttribute.setUsage( THREE.DynamicDrawUsage );
57
+ geometry.setAttribute( 'uv', uvAttribute );
53
58
 
54
59
  }
55
60
 
56
61
  if ( this.enableColors ) {
57
62
 
58
- this.colorArray = new Float32Array( this.maxCount * 3 );
63
+ this.colorArray = new Float32Array( maxVertexCount * 3 );
64
+ const colorAttribute = new THREE.BufferAttribute( this.colorArray, 3 );
65
+ colorAttribute.setUsage( THREE.DynamicDrawUsage );
66
+ geometry.setAttribute( 'color', colorAttribute );
59
67
 
60
68
  }
61
69
 
@@ -136,7 +144,7 @@
136
144
  // (this is where most of time is spent - it's inner work of O(n3) loop )
137
145
 
138
146
 
139
- function polygonize( fx, fy, fz, q, isol, renderCallback ) {
147
+ function polygonize( fx, fy, fz, q, isol ) {
140
148
 
141
149
  // cache indices
142
150
  const q1 = q + 1,
@@ -282,7 +290,7 @@
282
290
  o1 = cubeindex + i;
283
291
  o2 = o1 + 1;
284
292
  o3 = o1 + 2;
285
- posnormtriv( vlist, nlist, clist, 3 * triTable[ o1 ], 3 * triTable[ o2 ], 3 * triTable[ o3 ], renderCallback );
293
+ posnormtriv( vlist, nlist, clist, 3 * triTable[ o1 ], 3 * triTable[ o2 ], 3 * triTable[ o3 ] );
286
294
  i += 3;
287
295
  numtris ++;
288
296
 
@@ -290,12 +298,9 @@
290
298
 
291
299
  return numtris;
292
300
 
293
- } /////////////////////////////////////
294
- // Immediate render mode simulator
295
- /////////////////////////////////////
296
-
301
+ }
297
302
 
298
- function posnormtriv( pos, norm, colors, o1, o2, o3, renderCallback ) {
303
+ function posnormtriv( pos, norm, colors, o1, o2, o3 ) {
299
304
 
300
305
  const c = scope.count * 3; // positions
301
306
 
@@ -368,67 +373,7 @@
368
373
 
369
374
  scope.count += 3;
370
375
 
371
- if ( scope.count >= scope.maxCount - 3 ) {
372
-
373
- scope.hasPositions = true;
374
- scope.hasNormals = true;
375
-
376
- if ( scope.enableUvs ) {
377
-
378
- scope.hasUvs = true;
379
-
380
- }
381
-
382
- if ( scope.enableColors ) {
383
-
384
- scope.hasColors = true;
385
-
386
- }
387
-
388
- renderCallback( scope );
389
-
390
- }
391
-
392
- }
393
-
394
- this.begin = function () {
395
-
396
- this.count = 0;
397
- this.hasPositions = false;
398
- this.hasNormals = false;
399
- this.hasUvs = false;
400
- this.hasColors = false;
401
-
402
- };
403
-
404
- this.end = function ( renderCallback ) {
405
-
406
- if ( this.count === 0 ) return;
407
-
408
- for ( let i = this.count * 3; i < this.positionArray.length; i ++ ) {
409
-
410
- this.positionArray[ i ] = 0.0;
411
-
412
- }
413
-
414
- this.hasPositions = true;
415
- this.hasNormals = true;
416
-
417
- if ( this.enableUvs && this.material.map ) {
418
-
419
- this.hasUvs = true;
420
-
421
- }
422
-
423
- if ( this.enableColors && this.material.vertexColors !== THREE.NoColors ) {
424
-
425
- this.hasColors = true;
426
-
427
- }
428
-
429
- renderCallback( this );
430
-
431
- }; /////////////////////////////////////
376
+ } /////////////////////////////////////
432
377
  // Metaballs
433
378
  /////////////////////////////////////
434
379
  // Adds a reciprocal ball (nice and blobby) that, to be fast, fades to zero after
@@ -729,9 +674,9 @@
729
674
 
730
675
  };
731
676
 
732
- this.render = function ( renderCallback ) {
677
+ this.onBeforeRender = function () {
733
678
 
734
- this.begin(); // Triangulate. Yeah, this is slow.
679
+ this.count = 0; // Triangulate. Yeah, this is slow.
735
680
 
736
681
  const smin2 = this.size - 2;
737
682
 
@@ -750,59 +695,28 @@
750
695
  const fx = ( x - this.halfsize ) / this.halfsize; //+ 1
751
696
 
752
697
  const q = y_offset + x;
753
- polygonize( fx, fy, fz, q, this.isolation, renderCallback );
698
+ polygonize( fx, fy, fz, q, this.isolation );
754
699
 
755
700
  }
756
701
 
757
702
  }
758
703
 
759
- }
760
-
761
- this.end( renderCallback );
762
-
763
- };
764
-
765
- this.generateGeometry = function () {
766
-
767
- console.warn( 'THREE.MarchingCubes: generateGeometry() now returns THREE.BufferGeometry' );
768
- return this.generateBufferGeometry();
704
+ } // reset unneeded data
769
705
 
770
- };
771
-
772
- function concatenate( a, b, length ) {
773
706
 
774
- const result = new Float32Array( a.length + length );
775
- result.set( a, 0 );
776
- result.set( b.slice( 0, length ), a.length );
777
- return result;
778
-
779
- }
780
-
781
- this.generateBufferGeometry = function () {
707
+ for ( let i = this.count * 3; i < this.positionArray.length; i ++ ) {
782
708
 
783
- const geo = new THREE.BufferGeometry();
784
- let posArray = new Float32Array();
785
- let normArray = new Float32Array();
786
- let colorArray = new Float32Array();
787
- let uvArray = new Float32Array();
788
- const scope = this;
709
+ this.positionArray[ i ] = 0.0;
789
710
 
790
- const geo_callback = function ( object ) {
711
+ } // update geometry data
791
712
 
792
- if ( scope.hasPositions ) posArray = concatenate( posArray, object.positionArray, object.count * 3 );
793
- if ( scope.hasNormals ) normArray = concatenate( normArray, object.normalArray, object.count * 3 );
794
- if ( scope.hasColors ) colorArray = concatenate( colorArray, object.colorArray, object.count * 3 );
795
- if ( scope.hasUvs ) uvArray = concatenate( uvArray, object.uvArray, object.count * 2 );
796
- object.count = 0;
797
713
 
798
- };
714
+ geometry.getAttribute( 'position' ).needsUpdate = true;
715
+ geometry.getAttribute( 'normal' ).needsUpdate = true;
716
+ if ( this.enableUvs ) geometry.getAttribute( 'uv' ).needsUpdate = true;
717
+ if ( this.enableColors ) geometry.getAttribute( 'color' ).needsUpdate = true; // safety check
799
718
 
800
- this.render( geo_callback );
801
- if ( this.hasPositions ) geo.setAttribute( 'position', new THREE.BufferAttribute( posArray, 3 ) );
802
- if ( this.hasNormals ) geo.setAttribute( 'normal', new THREE.BufferAttribute( normArray, 3 ) );
803
- if ( this.hasColors ) geo.setAttribute( 'color', new THREE.BufferAttribute( colorArray, 3 ) );
804
- if ( this.hasUvs ) geo.setAttribute( 'uv', new THREE.BufferAttribute( uvArray, 2 ) );
805
- return geo;
719
+ if ( this.count / 3 > maxPolyCount ) console.warn( 'THREE.MarchingCubes: Geometry buffers too small for rendering. Please create an instance with a higher poly count.' );
806
720
 
807
721
  };
808
722
 
@@ -816,7 +730,7 @@
816
730
  // Marching cubes lookup tables
817
731
  /////////////////////////////////////
818
732
  // These tables are straight from Paul Bourke's page:
819
- // http://local.wasp.uwa.edu.au/~pbourke/geometry/polygonise/
733
+ // http://paulbourke.net/geometry/polygonise/
820
734
  // who in turn got them from Cory Gene Bloyd.
821
735
 
822
736
  const edgeTable = new Int32Array( [ 0x0, 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c, 0x80c, 0x905, 0xa0f, 0xb06, 0xc0a, 0xd03, 0xe09, 0xf00, 0x190, 0x99, 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c, 0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90, 0x230, 0x339, 0x33, 0x13a, 0x636, 0x73f, 0x435, 0x53c, 0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30, 0x3a0, 0x2a9, 0x1a3, 0xaa, 0x7a6, 0x6af, 0x5a5, 0x4ac, 0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0, 0x460, 0x569, 0x663, 0x76a, 0x66, 0x16f, 0x265, 0x36c, 0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60, 0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0xff, 0x3f5, 0x2fc, 0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0, 0x650, 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55, 0x15c, 0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53, 0x859, 0x950, 0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc, 0xfcc, 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0, 0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6, 0xdcf, 0xec5, 0xfcc, 0xcc, 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0, 0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c, 0x15c, 0x55, 0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650, 0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc, 0x2fc, 0x3f5, 0xff, 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0, 0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c, 0x36c, 0x265, 0x16f, 0x66, 0x76a, 0x663, 0x569, 0x460, 0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac, 0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa, 0x1a3, 0x2a9, 0x3a0, 0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c, 0x53c, 0x435, 0x73f, 0x636, 0x13a, 0x33, 0x339, 0x230, 0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895, 0x99c, 0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99, 0x190, 0xf00, 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c, 0x70c, 0x605, 0x50f, 0x406, 0x30a, 0x203, 0x109, 0x0 ] );
@@ -25,19 +25,7 @@
25
25
  const q = new THREE.Vector4();
26
26
  const textureMatrix = new THREE.Matrix4();
27
27
  const virtualCamera = new THREE.PerspectiveCamera();
28
- const parameters = {
29
- minFilter: THREE.LinearFilter,
30
- magFilter: THREE.LinearFilter,
31
- format: THREE.RGBFormat
32
- };
33
- const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, parameters );
34
-
35
- if ( ! THREE.MathUtils.isPowerOfTwo( textureWidth ) || ! THREE.MathUtils.isPowerOfTwo( textureHeight ) ) {
36
-
37
- renderTarget.texture.generateMipmaps = false;
38
-
39
- }
40
-
28
+ const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight );
41
29
  const material = new THREE.ShaderMaterial( {
42
30
  uniforms: THREE.UniformsUtils.clone( shader.uniforms ),
43
31
  fragmentShader: shader.fragmentShader,
@@ -135,6 +123,13 @@
135
123
 
136
124
  };
137
125
 
126
+ this.dispose = function () {
127
+
128
+ renderTarget.dispose();
129
+ scope.material.dispose();
130
+
131
+ };
132
+
138
133
  }
139
134
 
140
135
  }
@@ -79,19 +79,9 @@
79
79
  }
80
80
 
81
81
  const parameters = {
82
- minFilter: THREE.LinearFilter,
83
- magFilter: THREE.LinearFilter,
84
- format: THREE.RGBFormat,
85
82
  depthTexture: useDepthTexture ? depthTexture : null
86
83
  };
87
84
  const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, parameters );
88
-
89
- if ( ! THREE.MathUtils.isPowerOfTwo( textureWidth ) || ! THREE.MathUtils.isPowerOfTwo( textureHeight ) ) {
90
-
91
- renderTarget.texture.generateMipmaps = false;
92
-
93
- }
94
-
95
85
  const material = new THREE.ShaderMaterial( {
96
86
  transparent: useDepthTexture,
97
87
  defines: Object.assign( {}, ReflectorForSSRPass.ReflectorShader.defines, {
@@ -20,19 +20,7 @@
20
20
  const refractorPlane = new THREE.Plane();
21
21
  const textureMatrix = new THREE.Matrix4(); // render target
22
22
 
23
- const parameters = {
24
- minFilter: THREE.LinearFilter,
25
- magFilter: THREE.LinearFilter,
26
- format: THREE.RGBFormat
27
- };
28
- const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, parameters );
29
-
30
- if ( ! THREE.MathUtils.isPowerOfTwo( textureWidth ) || ! THREE.MathUtils.isPowerOfTwo( textureHeight ) ) {
31
-
32
- renderTarget.texture.generateMipmaps = false;
33
-
34
- } // material
35
-
23
+ const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight ); // material
36
24
 
37
25
  this.material = new THREE.ShaderMaterial( {
38
26
  uniforms: THREE.UniformsUtils.clone( shader.uniforms ),
@@ -189,6 +177,13 @@
189
177
 
190
178
  };
191
179
 
180
+ this.dispose = function () {
181
+
182
+ renderTarget.dispose();
183
+ scope.material.dispose();
184
+
185
+ };
186
+
192
187
  }
193
188
 
194
189
  }
@@ -6,7 +6,7 @@
6
6
  * https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight
7
7
  *
8
8
  * First implemented by Simon Wallner
9
- * http://www.simonwallner.at/projects/atmospheric-scattering
9
+ * http://simonwallner.at/project/atmospheric-scattering/
10
10
  *
11
11
  * Improved by Martin Upitis
12
12
  * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR
@@ -2,8 +2,8 @@
2
2
 
3
3
  /**
4
4
  * Work based on :
5
- * http://slayvin.net : Flat mirror for three.js
6
- * http://www.adelphi.edu/~stemkoski : An implementation of water shader based on the flat mirror
5
+ * https://github.com/Slayvin: Flat mirror for three.js
6
+ * https://home.adelphi.edu/~stemkoski/ : An implementation of water shader based on the flat mirror
7
7
  * http://29a.ch/ && http://29a.ch/slides/2012/webglwater/ : Water shader explanations in WebGL
8
8
  */
9
9
 
@@ -39,19 +39,7 @@
39
39
  const q = new THREE.Vector4();
40
40
  const textureMatrix = new THREE.Matrix4();
41
41
  const mirrorCamera = new THREE.PerspectiveCamera();
42
- const parameters = {
43
- minFilter: THREE.LinearFilter,
44
- magFilter: THREE.LinearFilter,
45
- format: THREE.RGBFormat
46
- };
47
- const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, parameters );
48
-
49
- if ( ! THREE.MathUtils.isPowerOfTwo( textureWidth ) || ! THREE.MathUtils.isPowerOfTwo( textureHeight ) ) {
50
-
51
- renderTarget.texture.generateMipmaps = false;
52
-
53
- }
54
-
42
+ const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight );
55
43
  const mirrorShader = {
56
44
  uniforms: THREE.UniformsUtils.merge( [ THREE.UniformsLib[ 'fog' ], THREE.UniformsLib[ 'lights' ], {
57
45
  'normalSampler': {