super-three 0.133.5 → 0.137.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +37132 -0
  4. package/build/three.js +2337 -2017
  5. package/build/three.min.js +2 -2
  6. package/build/three.module.js +6036 -5378
  7. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  8. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  9. package/examples/fonts/open-sans/open-sans.css +9 -0
  10. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  11. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +3966 -0
  12. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  13. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  14. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  15. package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
  16. package/examples/js/animation/CCDIKSolver.js +0 -1
  17. package/examples/js/animation/MMDAnimationHelper.js +3 -1
  18. package/examples/js/animation/MMDPhysics.js +2 -4
  19. package/examples/js/cameras/CinematicCamera.js +2 -7
  20. package/examples/js/controls/ArcballControls.js +99 -72
  21. package/examples/js/controls/DragControls.js +7 -0
  22. package/examples/js/controls/OrbitControls.js +5 -36
  23. package/examples/js/controls/TrackballControls.js +3 -2
  24. package/examples/js/controls/TransformControls.js +24 -1
  25. package/examples/js/controls/experimental/CameraControls.js +6 -2
  26. package/examples/js/csm/CSM.js +2 -2
  27. package/examples/js/csm/CSMFrustum.js +133 -0
  28. package/examples/js/curves/CurveExtras.js +0 -2
  29. package/examples/js/effects/AsciiEffect.js +2 -9
  30. package/examples/js/exporters/GLTFExporter.js +230 -103
  31. package/examples/js/exporters/MMDExporter.js +1 -1
  32. package/examples/js/exporters/USDZExporter.js +45 -26
  33. package/examples/js/geometries/ConvexGeometry.js +1 -1
  34. package/examples/js/geometries/TeapotGeometry.js +0 -1
  35. package/examples/js/geometries/TextGeometry.js +12 -10
  36. package/examples/js/interactive/HTMLMesh.js +14 -2
  37. package/examples/js/interactive/SelectionBox.js +2 -0
  38. package/examples/js/interactive/SelectionHelper.js +22 -7
  39. package/examples/js/lights/RectAreaLightUniformsLib.js +4 -0
  40. package/examples/js/lines/LineMaterial.js +58 -20
  41. package/examples/js/lines/LineSegments2.js +29 -24
  42. package/examples/js/loaders/3DMLoader.js +24 -11
  43. package/examples/js/loaders/3MFLoader.js +2 -2
  44. package/examples/js/loaders/AMFLoader.js +0 -2
  45. package/examples/js/loaders/BasisTextureLoader.js +1 -0
  46. package/examples/js/loaders/ColladaLoader.js +61 -4
  47. package/examples/js/loaders/EXRLoader.js +215 -275
  48. package/examples/js/loaders/FBXLoader.js +4 -5
  49. package/examples/js/loaders/GLTFLoader.js +98 -35
  50. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -10
  51. package/examples/js/loaders/KTX2Loader.js +23 -2
  52. package/examples/js/loaders/KTXLoader.js +1 -1
  53. package/examples/js/loaders/LDrawLoader.js +1353 -969
  54. package/examples/js/loaders/LUT3dlLoader.js +19 -10
  55. package/examples/js/loaders/LUTCubeLoader.js +5 -4
  56. package/examples/js/loaders/LWOLoader.js +8 -6
  57. package/examples/js/loaders/LogLuvLoader.js +766 -0
  58. package/examples/js/loaders/MD2Loader.js +5 -5
  59. package/examples/js/loaders/MMDLoader.js +0 -1
  60. package/examples/js/loaders/MTLLoader.js +10 -3
  61. package/examples/js/loaders/NRRDLoader.js +9 -2
  62. package/examples/js/loaders/OBJLoader.js +0 -2
  63. package/examples/js/loaders/PCDLoader.js +2 -2
  64. package/examples/js/loaders/PLYLoader.js +33 -8
  65. package/examples/js/loaders/RGBELoader.js +8 -22
  66. package/examples/js/loaders/RGBMLoader.js +56 -6
  67. package/examples/js/loaders/STLLoader.js +1 -1
  68. package/examples/js/loaders/SVGLoader.js +14 -7
  69. package/examples/js/loaders/TDSLoader.js +237 -271
  70. package/examples/js/loaders/VOXLoader.js +1 -0
  71. package/examples/js/loaders/VRMLLoader.js +11 -22
  72. package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
  73. package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
  74. package/examples/js/math/ConvexHull.js +7 -13
  75. package/examples/js/math/ImprovedNoise.js +1 -1
  76. package/examples/js/misc/GPUComputationRenderer.js +3 -1
  77. package/examples/js/misc/Volume.js +2 -2
  78. package/examples/js/modifiers/CurveModifier.js +8 -7
  79. package/examples/js/modifiers/EdgeSplitModifier.js +0 -6
  80. package/examples/js/modifiers/SimplifyModifier.js +0 -10
  81. package/examples/js/objects/Lensflare.js +2 -10
  82. package/examples/js/objects/MarchingCubes.js +42 -128
  83. package/examples/js/objects/Reflector.js +8 -13
  84. package/examples/js/objects/ReflectorForSSRPass.js +0 -10
  85. package/examples/js/objects/Refractor.js +8 -13
  86. package/examples/js/objects/Sky.js +1 -1
  87. package/examples/js/objects/Water.js +3 -15
  88. package/examples/js/objects/Water2.js +4 -7
  89. package/examples/js/postprocessing/GlitchPass.js +6 -5
  90. package/examples/js/postprocessing/OutlinePass.js +1 -5
  91. package/examples/js/postprocessing/SMAAPass.js +2 -9
  92. package/examples/js/postprocessing/SSAOPass.js +10 -21
  93. package/examples/js/postprocessing/SavePass.js +1 -5
  94. package/examples/js/renderers/CSS2DRenderer.js +29 -23
  95. package/examples/js/renderers/CSS3DRenderer.js +41 -36
  96. package/examples/js/shaders/ConvolutionShader.js +0 -1
  97. package/examples/js/shaders/DigitalGlitch.js +3 -3
  98. package/examples/js/shaders/FXAAShader.js +1 -1
  99. package/examples/js/shaders/FilmShader.js +1 -1
  100. package/examples/js/shaders/GammaCorrectionShader.js +1 -1
  101. package/examples/js/shaders/HorizontalBlurShader.js +1 -2
  102. package/examples/js/shaders/MMDToonShader.js +0 -1
  103. package/examples/js/shaders/SSAOShader.js +1 -1
  104. package/examples/js/shaders/SSRShader.js +1 -1
  105. package/examples/js/shaders/SSRrShader.js +1 -1
  106. package/examples/js/shaders/VerticalBlurShader.js +1 -2
  107. package/examples/js/utils/GeometryUtils.js +1 -1
  108. package/examples/js/utils/LDrawUtils.js +182 -0
  109. package/examples/jsm/animation/CCDIKSolver.js +0 -1
  110. package/examples/jsm/animation/MMDPhysics.js +1 -3
  111. package/examples/jsm/cameras/CinematicCamera.js +2 -5
  112. package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
  113. package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +1 -1
  114. package/examples/jsm/controls/ArcballControls.js +80 -77
  115. package/examples/jsm/controls/DragControls.js +7 -0
  116. package/examples/jsm/controls/OrbitControls.js +9 -51
  117. package/examples/jsm/controls/TrackballControls.js +1 -1
  118. package/examples/jsm/controls/TransformControls.js +24 -1
  119. package/examples/jsm/csm/CSM.js +3 -3
  120. package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
  121. package/examples/jsm/curves/CurveExtras.js +0 -2
  122. package/examples/jsm/effects/AsciiEffect.js +2 -9
  123. package/examples/jsm/exporters/GLTFExporter.js +249 -111
  124. package/examples/jsm/exporters/MMDExporter.js +1 -1
  125. package/examples/jsm/exporters/USDZExporter.js +47 -26
  126. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  127. package/examples/jsm/geometries/TeapotGeometry.js +0 -1
  128. package/examples/jsm/geometries/TextGeometry.js +13 -13
  129. package/examples/jsm/interactive/HTMLMesh.js +16 -2
  130. package/examples/jsm/interactive/SelectionBox.js +1 -0
  131. package/examples/jsm/interactive/SelectionHelper.js +19 -7
  132. package/examples/jsm/libs/flow.module.js +4099 -0
  133. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  134. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  135. package/examples/jsm/lights/RectAreaLightUniformsLib.js +7 -0
  136. package/examples/jsm/lines/LineMaterial.js +59 -23
  137. package/examples/jsm/lines/LineSegments2.js +22 -18
  138. package/examples/jsm/loaders/3DMLoader.js +18 -12
  139. package/examples/jsm/loaders/3MFLoader.js +2 -2
  140. package/examples/jsm/loaders/AMFLoader.js +0 -2
  141. package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
  142. package/examples/jsm/loaders/ColladaLoader.js +61 -4
  143. package/examples/jsm/loaders/EXRLoader.js +213 -309
  144. package/examples/jsm/loaders/FBXLoader.js +4 -5
  145. package/examples/jsm/loaders/GLTFLoader.js +102 -40
  146. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -17
  147. package/examples/jsm/loaders/KTX2Loader.js +30 -2
  148. package/examples/jsm/loaders/KTXLoader.js +1 -1
  149. package/examples/jsm/loaders/LDrawLoader.js +1344 -991
  150. package/examples/jsm/loaders/LUT3dlLoader.js +19 -12
  151. package/examples/jsm/loaders/LUTCubeLoader.js +5 -5
  152. package/examples/jsm/loaders/LWOLoader.js +8 -6
  153. package/examples/jsm/loaders/LogLuvLoader.js +606 -0
  154. package/examples/jsm/loaders/MD2Loader.js +5 -5
  155. package/examples/jsm/loaders/MMDLoader.js +0 -1
  156. package/examples/jsm/loaders/MTLLoader.js +11 -4
  157. package/examples/jsm/loaders/NRRDLoader.js +10 -2
  158. package/examples/jsm/loaders/OBJLoader.js +0 -2
  159. package/examples/jsm/loaders/PCDLoader.js +2 -2
  160. package/examples/jsm/loaders/PLYLoader.js +34 -8
  161. package/examples/jsm/loaders/RGBELoader.js +7 -28
  162. package/examples/jsm/loaders/RGBMLoader.js +62 -8
  163. package/examples/jsm/loaders/STLLoader.js +1 -1
  164. package/examples/jsm/loaders/SVGLoader.js +18 -8
  165. package/examples/jsm/loaders/TDSLoader.js +236 -275
  166. package/examples/jsm/loaders/VOXLoader.js +1 -0
  167. package/examples/jsm/loaders/VRMLLoader.js +11 -24
  168. package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
  169. package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
  170. package/examples/jsm/math/ConvexHull.js +7 -13
  171. package/examples/jsm/math/ImprovedNoise.js +1 -1
  172. package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
  173. package/examples/jsm/misc/Volume.js +2 -2
  174. package/examples/jsm/modifiers/CurveModifier.js +9 -8
  175. package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -6
  176. package/examples/jsm/modifiers/SimplifyModifier.js +0 -10
  177. package/examples/jsm/node-editor/NodeEditor.js +709 -0
  178. package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
  179. package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
  180. package/examples/jsm/node-editor/accessors/UVEditor.js +25 -0
  181. package/examples/jsm/node-editor/core/BaseNode.js +83 -0
  182. package/examples/jsm/node-editor/display/BlendEditor.js +44 -0
  183. package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
  184. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
  185. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
  186. package/examples/jsm/node-editor/examples/rim.json +1 -0
  187. package/examples/jsm/node-editor/inputs/ColorEditor.js +95 -0
  188. package/examples/jsm/node-editor/inputs/FloatEditor.js +23 -0
  189. package/examples/jsm/node-editor/inputs/SliderEditor.js +67 -0
  190. package/examples/jsm/node-editor/inputs/Vector2Editor.js +27 -0
  191. package/examples/jsm/node-editor/inputs/Vector3Editor.js +29 -0
  192. package/examples/jsm/node-editor/inputs/Vector4Editor.js +36 -0
  193. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +87 -0
  194. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +97 -0
  195. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +111 -0
  196. package/examples/jsm/node-editor/math/AngleEditor.js +39 -0
  197. package/examples/jsm/node-editor/math/DotEditor.js +35 -0
  198. package/examples/jsm/node-editor/math/InvertEditor.js +39 -0
  199. package/examples/jsm/node-editor/math/LimiterEditor.js +49 -0
  200. package/examples/jsm/node-editor/math/NormalizeEditor.js +27 -0
  201. package/examples/jsm/node-editor/math/OperatorEditor.js +51 -0
  202. package/examples/jsm/node-editor/math/PowerEditor.js +35 -0
  203. package/examples/jsm/node-editor/math/TrigonometryEditor.js +44 -0
  204. package/examples/jsm/node-editor/procedural/CheckerEditor.js +27 -0
  205. package/examples/jsm/node-editor/scene/MeshEditor.js +99 -0
  206. package/examples/jsm/node-editor/scene/Object3DEditor.js +160 -0
  207. package/examples/jsm/node-editor/scene/PointsEditor.js +99 -0
  208. package/examples/jsm/node-editor/utils/JoinEditor.js +58 -0
  209. package/examples/jsm/node-editor/utils/OscillatorEditor.js +43 -0
  210. package/examples/jsm/node-editor/utils/SplitEditor.js +39 -0
  211. package/examples/jsm/node-editor/utils/TimerEditor.js +58 -0
  212. package/examples/jsm/nodes/core/NodeBuilder.js +2 -2
  213. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
  214. package/examples/jsm/nodes/materials/nodes/StandardNode.js +7 -6
  215. package/examples/jsm/nodes/math/MathNode.js +12 -0
  216. package/examples/jsm/nodes/misc/BumpMapNode.js +1 -1
  217. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +1 -4
  218. package/examples/jsm/nodes/utils/ColorSpaceNode.js +5 -177
  219. package/examples/jsm/objects/Lensflare.js +5 -16
  220. package/examples/jsm/objects/MarchingCubes.js +46 -152
  221. package/examples/jsm/objects/Reflector.js +8 -16
  222. package/examples/jsm/objects/ReflectorForSSRPass.js +0 -12
  223. package/examples/jsm/objects/Refractor.js +8 -16
  224. package/examples/jsm/objects/Sky.js +1 -1
  225. package/examples/jsm/objects/Water.js +3 -18
  226. package/examples/jsm/objects/Water2.js +4 -8
  227. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
  228. package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
  229. package/examples/jsm/postprocessing/BloomPass.js +1 -1
  230. package/examples/jsm/postprocessing/BokehPass.js +1 -1
  231. package/examples/jsm/postprocessing/ClearPass.js +1 -1
  232. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
  233. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  234. package/examples/jsm/postprocessing/EffectComposer.js +3 -3
  235. package/examples/jsm/postprocessing/FilmPass.js +1 -1
  236. package/examples/jsm/postprocessing/GlitchPass.js +10 -7
  237. package/examples/jsm/postprocessing/HalftonePass.js +1 -1
  238. package/examples/jsm/postprocessing/MaskPass.js +1 -1
  239. package/examples/jsm/postprocessing/OutlinePass.js +2 -5
  240. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  241. package/examples/jsm/postprocessing/SAOPass.js +2 -2
  242. package/examples/jsm/postprocessing/SMAAPass.js +3 -12
  243. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
  244. package/examples/jsm/postprocessing/SSAOPass.js +15 -26
  245. package/examples/jsm/postprocessing/SSRPass.js +1 -1
  246. package/examples/jsm/postprocessing/SSRrPass.js +1 -1
  247. package/examples/jsm/postprocessing/SavePass.js +2 -4
  248. package/examples/jsm/postprocessing/ShaderPass.js +1 -1
  249. package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
  250. package/examples/jsm/postprocessing/TexturePass.js +1 -1
  251. package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
  252. package/examples/jsm/renderers/CSS2DRenderer.js +29 -23
  253. package/examples/jsm/renderers/CSS3DRenderer.js +41 -34
  254. package/examples/jsm/renderers/nodes/Nodes.js +17 -13
  255. package/examples/jsm/renderers/nodes/ShaderNode.js +229 -49
  256. package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
  257. package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
  258. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
  259. package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
  260. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
  261. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
  262. package/examples/jsm/renderers/nodes/accessors/UVNode.js +5 -3
  263. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
  264. package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
  265. package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
  266. package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
  267. package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
  268. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
  269. package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
  270. package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
  271. package/examples/jsm/renderers/nodes/core/Node.js +32 -10
  272. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +147 -128
  273. package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
  274. package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
  275. package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
  276. package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
  277. package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
  278. package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
  279. package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
  280. package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
  281. package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
  282. package/examples/jsm/renderers/nodes/core/constants.js +2 -0
  283. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +43 -63
  284. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
  285. package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
  286. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +27 -0
  287. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
  288. package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
  289. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +13 -10
  290. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
  291. package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
  292. package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
  293. package/examples/jsm/renderers/nodes/math/MathNode.js +91 -37
  294. package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
  295. package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
  296. package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
  297. package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
  298. package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
  299. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
  300. package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
  301. package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
  302. package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
  303. package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
  304. package/examples/jsm/renderers/nodes/utils/SplitNode.js +33 -8
  305. package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
  306. package/examples/jsm/renderers/nodes/utils/TimerNode.js +1 -1
  307. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
  308. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +192 -95
  309. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
  310. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
  311. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
  312. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +10 -9
  313. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
  314. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  315. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
  316. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
  317. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +44 -65
  318. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +13 -31
  319. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
  320. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +35 -29
  321. package/examples/jsm/renderers/webgpu/constants.js +2 -2
  322. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +459 -95
  323. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  324. package/examples/jsm/shaders/ConvolutionShader.js +0 -1
  325. package/examples/jsm/shaders/DigitalGlitch.js +3 -3
  326. package/examples/jsm/shaders/FXAAShader.js +1 -1
  327. package/examples/jsm/shaders/FilmShader.js +1 -1
  328. package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
  329. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -2
  330. package/examples/jsm/shaders/MMDToonShader.js +0 -1
  331. package/examples/jsm/shaders/SSAOShader.js +1 -1
  332. package/examples/jsm/shaders/SSRShader.js +1 -1
  333. package/examples/jsm/shaders/SSRrShader.js +1 -1
  334. package/examples/jsm/shaders/VerticalBlurShader.js +1 -2
  335. package/examples/jsm/utils/GeometryUtils.js +1 -1
  336. package/examples/jsm/utils/LDrawUtils.js +202 -0
  337. package/examples/jsm/utils/WorkerPool.js +11 -11
  338. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
  339. package/examples/jsm/webxr/VRButton.js +24 -0
  340. package/examples/jsm/webxr/XREstimatedLight.js +2 -0
  341. package/package.json +38 -22
  342. package/src/Three.Legacy.js +18 -0
  343. package/src/Three.js +1 -3
  344. package/src/animation/AnimationMixer.js +1 -0
  345. package/src/cameras/CubeCamera.js +2 -0
  346. package/src/cameras/StereoCamera.js +8 -7
  347. package/src/constants.js +3 -25
  348. package/src/core/BufferGeometry.js +2 -2
  349. package/src/core/Layers.js +7 -1
  350. package/src/core/Object3D.js +3 -1
  351. package/src/extras/ImageUtils.js +63 -0
  352. package/src/extras/PMREMGenerator.js +49 -185
  353. package/src/extras/core/Interpolations.js +1 -1
  354. package/src/geometries/LatheGeometry.js +71 -48
  355. package/src/helpers/CameraHelper.js +1 -1
  356. package/src/loaders/FileLoader.js +110 -139
  357. package/src/loaders/ImageLoader.js +9 -4
  358. package/src/loaders/LoaderUtils.js +26 -0
  359. package/src/loaders/MaterialLoader.js +8 -5
  360. package/src/loaders/ObjectLoader.js +2 -0
  361. package/src/materials/Material.js +8 -8
  362. package/src/materials/MeshPhysicalMaterial.js +20 -14
  363. package/src/math/Box3.js +24 -10
  364. package/src/math/Color.js +1 -39
  365. package/src/math/MathUtils.js +5 -16
  366. package/src/math/Quaternion.js +1 -1
  367. package/src/math/Ray.js +2 -2
  368. package/src/math/Sphere.js +10 -1
  369. package/src/objects/Skeleton.js +1 -0
  370. package/src/renderers/WebGLCubeRenderTarget.js +0 -2
  371. package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
  372. package/src/renderers/WebGLRenderTarget.js +4 -1
  373. package/src/renderers/WebGLRenderer.js +109 -202
  374. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
  375. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +1 -1
  376. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +2 -24
  377. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
  378. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -78
  379. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  380. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
  381. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +1 -1
  382. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
  383. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
  384. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
  385. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +28 -2
  386. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
  387. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
  388. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +1 -1
  389. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +2 -2
  390. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  391. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  392. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +9 -8
  393. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -3
  394. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
  395. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -1
  396. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -2
  397. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +23 -5
  398. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
  399. package/src/renderers/shaders/ShaderLib.js +8 -6
  400. package/src/renderers/shaders/UniformsLib.js +1 -2
  401. package/src/renderers/webgl/WebGLBackground.js +2 -2
  402. package/src/renderers/webgl/WebGLCapabilities.js +0 -2
  403. package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
  404. package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
  405. package/src/renderers/webgl/WebGLExtensions.js +1 -0
  406. package/src/renderers/webgl/WebGLGeometries.js +2 -2
  407. package/src/renderers/webgl/WebGLMaterials.js +27 -15
  408. package/src/renderers/webgl/WebGLMorphtargets.js +13 -0
  409. package/src/renderers/webgl/WebGLProgram.js +12 -37
  410. package/src/renderers/webgl/WebGLPrograms.js +192 -70
  411. package/src/renderers/webgl/WebGLRenderLists.js +4 -14
  412. package/src/renderers/webgl/WebGLShaderCache.js +120 -0
  413. package/src/renderers/webgl/WebGLShadowMap.js +14 -5
  414. package/src/renderers/webgl/WebGLState.js +159 -19
  415. package/src/renderers/webgl/WebGLTextures.js +449 -87
  416. package/src/renderers/webgl/WebGLUniforms.js +45 -1
  417. package/src/renderers/webgl/WebGLUtils.js +86 -30
  418. package/src/renderers/webxr/WebXRManager.js +77 -107
  419. package/src/scenes/Scene.js +1 -1
  420. package/src/textures/DataTexture.js +0 -2
  421. package/src/textures/DataTexture2DArray.js +0 -2
  422. package/src/textures/DataTexture3D.js +0 -2
  423. package/src/textures/FramebufferTexture.js +25 -0
  424. package/src/textures/Texture.js +8 -1
  425. package/src/textures/VideoTexture.js +1 -3
  426. package/src/utils.js +15 -1
  427. package/examples/js/WebGL.js +0 -90
  428. package/examples/js/controls/DeviceOrientationControls.js +0 -147
  429. package/examples/js/libs/dat.gui.min.js +0 -14
  430. package/examples/js/utils/RoughnessMipmapper.js +0 -278
  431. package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
  432. package/examples/jsm/libs/dat.gui.module.js +0 -3575
  433. package/examples/jsm/libs/glslang.js +0 -78
  434. package/examples/jsm/libs/glslang.wasm +0 -0
  435. package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
  436. package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
  437. package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
  438. package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
  439. package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
  440. package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
  441. package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
  442. package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
  443. package/examples/jsm/utils/RoughnessMipmapper.js +0 -300
  444. package/src/extras/objects/ImmediateRenderObject.js +0 -31
@@ -1,18 +1,10 @@
1
1
  import {
2
- GammaEncoding,
3
2
  LinearEncoding,
4
- RGBEEncoding,
5
- RGBM7Encoding,
6
- RGBM16Encoding,
7
- RGBDEncoding,
8
3
  sRGBEncoding
9
4
  } from 'three';
10
5
 
11
6
  import { TempNode } from '../core/TempNode.js';
12
- import { ConstNode } from '../core/ConstNode.js';
13
- import { FloatNode } from '../inputs/FloatNode.js';
14
7
  import { FunctionNode } from '../core/FunctionNode.js';
15
- import { ExpressionNode } from '../core/ExpressionNode.js';
16
8
 
17
9
  class ColorSpaceNode extends TempNode {
18
10
 
@@ -65,9 +57,11 @@ class ColorSpaceNode extends TempNode {
65
57
 
66
58
  }
67
59
 
68
- fromDecoding( encoding ) {
60
+ fromDecoding() {
69
61
 
70
- const components = ColorSpaceNode.getEncodingComponents( encoding );
62
+ // TODO: Remove fromDecoding()
63
+
64
+ const components = ColorSpaceNode.getEncodingComponents( LinearEncoding );
71
65
 
72
66
  this.method = components[ 0 ] + 'ToLinear';
73
67
  this.factor = components[ 1 ];
@@ -106,8 +100,6 @@ class ColorSpaceNode extends TempNode {
106
100
 
107
101
  ColorSpaceNode.Nodes = ( function () {
108
102
 
109
- // For a discussion of what this is, please read this: http://lousodrome.net/blog/light/2013/05/26/gamma-correct-and-hdr-rendering-in-a-32-bits-buffer/
110
-
111
103
  const LinearToLinear = new FunctionNode( /* glsl */`
112
104
  vec4 LinearToLinear( in vec4 value ) {
113
105
 
@@ -116,30 +108,6 @@ ColorSpaceNode.Nodes = ( function () {
116
108
  }`
117
109
  );
118
110
 
119
- const GammaToLinear = new FunctionNode( /* glsl */`
120
- vec4 GammaToLinear( in vec4 value, in float gammaFactor ) {
121
-
122
- return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );
123
-
124
- }`
125
- );
126
-
127
- const LinearToGamma = new FunctionNode( /* glsl */`
128
- vec4 LinearToGamma( in vec4 value, in float gammaFactor ) {
129
-
130
- return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );
131
-
132
- }`
133
- );
134
-
135
- const sRGBToLinear = new FunctionNode( /* glsl */`
136
- vec4 sRGBToLinear( in vec4 value ) {
137
-
138
- return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );
139
-
140
- }`
141
- );
142
-
143
111
  const LinearTosRGB = new FunctionNode( /* glsl */`
144
112
  vec4 LinearTosRGB( in vec4 value ) {
145
113
 
@@ -148,146 +116,16 @@ ColorSpaceNode.Nodes = ( function () {
148
116
  }`
149
117
  );
150
118
 
151
- const RGBEToLinear = new FunctionNode( /* glsl */`
152
- vec4 RGBEToLinear( in vec4 value ) {
153
-
154
- return vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );
155
-
156
- }`
157
- );
158
-
159
- const LinearToRGBE = new FunctionNode( /* glsl */`
160
- vec4 LinearToRGBE( in vec4 value ) {
161
-
162
- float maxComponent = max( max( value.r, value.g ), value.b );
163
- float fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );
164
- return vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );
165
-
166
- }`
167
- );
168
-
169
- // reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html
170
-
171
- const RGBMToLinear = new FunctionNode( /* glsl */`
172
- vec3 RGBMToLinear( in vec4 value, in float maxRange ) {
173
-
174
- return vec4( value.xyz * value.w * maxRange, 1.0 );
175
-
176
- }`
177
- );
178
-
179
- const LinearToRGBM = new FunctionNode( /* glsl */`
180
- vec3 LinearToRGBM( in vec4 value, in float maxRange ) {
181
-
182
- float maxRGB = max( value.x, max( value.g, value.b ) );
183
- float M = clamp( maxRGB / maxRange, 0.0, 1.0 );
184
- M = ceil( M * 255.0 ) / 255.0;
185
- return vec4( value.rgb / ( M * maxRange ), M );
186
-
187
- }`
188
- );
189
-
190
- // reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html
191
-
192
- const RGBDToLinear = new FunctionNode( /* glsl */`
193
- vec3 RGBDToLinear( in vec4 value, in float maxRange ) {
194
-
195
- return vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );
196
-
197
- }`
198
- );
199
-
200
-
201
- const LinearToRGBD = new FunctionNode( /* glsl */`
202
- vec3 LinearToRGBD( in vec4 value, in float maxRange ) {
203
-
204
- float maxRGB = max( value.x, max( value.g, value.b ) );
205
- float D = max( maxRange / maxRGB, 1.0 );
206
- D = clamp( floor( D ) / 255.0, 0.0, 1.0 );
207
- return vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );
208
-
209
- }`
210
- );
211
-
212
- // LogLuv reference: http://graphicrants.blogspot.ca/2009/04/rgbm-color-encoding.html
213
-
214
- // M matrix, for encoding
215
-
216
- const cLogLuvM = new ConstNode( 'const mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );' );
217
-
218
- const LinearToLogLuv = new FunctionNode( /* glsl */`
219
- vec4 LinearToLogLuv( in vec4 value ) {
220
-
221
- vec3 Xp_Y_XYZp = cLogLuvM * value.rgb;
222
- Xp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));
223
- vec4 vResult;
224
- vResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;
225
- float Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;
226
- vResult.w = fract(Le);
227
- vResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;
228
- return vResult;
229
-
230
- }`
231
- , [ cLogLuvM ] );
232
-
233
- // Inverse M matrix, for decoding
234
-
235
- const cLogLuvInverseM = new ConstNode( 'const mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );' );
236
-
237
- const LogLuvToLinear = new FunctionNode( /* glsl */`
238
- vec4 LogLuvToLinear( in vec4 value ) {
239
-
240
- float Le = value.z * 255.0 + value.w;
241
- vec3 Xp_Y_XYZp;
242
- Xp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);
243
- Xp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;
244
- Xp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;
245
- vec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;
246
- return vec4( max(vRGB, 0.0), 1.0 );
247
-
248
- }`
249
- , [ cLogLuvInverseM ] );
250
-
251
119
  return {
252
120
  LinearToLinear: LinearToLinear,
253
- GammaToLinear: GammaToLinear,
254
- LinearToGamma: LinearToGamma,
255
- sRGBToLinear: sRGBToLinear,
256
- LinearTosRGB: LinearTosRGB,
257
- RGBEToLinear: RGBEToLinear,
258
- LinearToRGBE: LinearToRGBE,
259
- RGBMToLinear: RGBMToLinear,
260
- LinearToRGBM: LinearToRGBM,
261
- RGBDToLinear: RGBDToLinear,
262
- LinearToRGBD: LinearToRGBD,
263
- cLogLuvM: cLogLuvM,
264
- LinearToLogLuv: LinearToLogLuv,
265
- cLogLuvInverseM: cLogLuvInverseM,
266
- LogLuvToLinear: LogLuvToLinear
121
+ LinearTosRGB: LinearTosRGB
267
122
  };
268
123
 
269
124
  } )();
270
125
 
271
126
  ColorSpaceNode.LINEAR_TO_LINEAR = 'LinearToLinear';
272
-
273
- ColorSpaceNode.GAMMA_TO_LINEAR = 'GammaToLinear';
274
- ColorSpaceNode.LINEAR_TO_GAMMA = 'LinearToGamma';
275
-
276
- ColorSpaceNode.SRGB_TO_LINEAR = 'sRGBToLinear';
277
127
  ColorSpaceNode.LINEAR_TO_SRGB = 'LinearTosRGB';
278
128
 
279
- ColorSpaceNode.RGBE_TO_LINEAR = 'RGBEToLinear';
280
- ColorSpaceNode.LINEAR_TO_RGBE = 'LinearToRGBE';
281
-
282
- ColorSpaceNode.RGBM_TO_LINEAR = 'RGBMToLinear';
283
- ColorSpaceNode.LINEAR_TO_RGBM = 'LinearToRGBM';
284
-
285
- ColorSpaceNode.RGBD_TO_LINEAR = 'RGBDToLinear';
286
- ColorSpaceNode.LINEAR_TO_RGBD = 'LinearToRGBD';
287
-
288
- ColorSpaceNode.LINEAR_TO_LOG_LUV = 'LinearToLogLuv';
289
- ColorSpaceNode.LOG_LUV_TO_LINEAR = 'LogLuvToLinear';
290
-
291
129
  ColorSpaceNode.getEncodingComponents = function ( encoding ) {
292
130
 
293
131
  switch ( encoding ) {
@@ -296,16 +134,6 @@ ColorSpaceNode.getEncodingComponents = function ( encoding ) {
296
134
  return [ 'Linear' ];
297
135
  case sRGBEncoding:
298
136
  return [ 'sRGB' ];
299
- case RGBEEncoding:
300
- return [ 'RGBE' ];
301
- case RGBM7Encoding:
302
- return [ 'RGBM', new FloatNode( 7.0 ).setReadonly( true ) ];
303
- case RGBM16Encoding:
304
- return [ 'RGBM', new FloatNode( 16.0 ).setReadonly( true ) ];
305
- case RGBDEncoding:
306
- return [ 'RGBD', new FloatNode( 256.0 ).setReadonly( true ) ];
307
- case GammaEncoding:
308
- return [ 'Gamma', new ExpressionNode( 'float( GAMMA_FACTOR )', 'f' ) ];
309
137
 
310
138
  }
311
139
 
@@ -2,19 +2,17 @@ import {
2
2
  AdditiveBlending,
3
3
  Box2,
4
4
  BufferGeometry,
5
- ClampToEdgeWrapping,
6
5
  Color,
7
- DataTexture,
6
+ FramebufferTexture,
8
7
  InterleavedBuffer,
9
8
  InterleavedBufferAttribute,
10
9
  Mesh,
11
10
  MeshBasicMaterial,
12
- NearestFilter,
13
- RGBFormat,
14
11
  RawShaderMaterial,
15
12
  Vector2,
16
13
  Vector3,
17
- Vector4
14
+ Vector4,
15
+ RGBAFormat
18
16
  } from 'three';
19
17
 
20
18
  class Lensflare extends Mesh {
@@ -34,17 +32,8 @@ class Lensflare extends Mesh {
34
32
 
35
33
  // textures
36
34
 
37
- const tempMap = new DataTexture( new Uint8Array( 16 * 16 * 3 ), 16, 16, RGBFormat );
38
- tempMap.minFilter = NearestFilter;
39
- tempMap.magFilter = NearestFilter;
40
- tempMap.wrapS = ClampToEdgeWrapping;
41
- tempMap.wrapT = ClampToEdgeWrapping;
42
-
43
- const occlusionMap = new DataTexture( new Uint8Array( 16 * 16 * 3 ), 16, 16, RGBFormat );
44
- occlusionMap.minFilter = NearestFilter;
45
- occlusionMap.magFilter = NearestFilter;
46
- occlusionMap.wrapS = ClampToEdgeWrapping;
47
- occlusionMap.wrapT = ClampToEdgeWrapping;
35
+ const tempMap = new FramebufferTexture( 16, 16, RGBAFormat );
36
+ const occlusionMap = new FramebufferTexture( 16, 16, RGBAFormat );
48
37
 
49
38
  // material
50
39
 
@@ -2,19 +2,21 @@ import {
2
2
  BufferAttribute,
3
3
  BufferGeometry,
4
4
  Color,
5
- ImmediateRenderObject,
6
- NoColors
5
+ DynamicDrawUsage,
6
+ Mesh
7
7
  } from 'three';
8
8
 
9
9
  /**
10
10
  * Port of http://webglsamples.org/blob/blob.html
11
11
  */
12
12
 
13
- class MarchingCubes extends ImmediateRenderObject {
13
+ class MarchingCubes extends Mesh {
14
14
 
15
- constructor( resolution, material, enableUvs, enableColors ) {
15
+ constructor( resolution, material, enableUvs = false, enableColors = false, maxPolyCount = 10000 ) {
16
16
 
17
- super( material );
17
+ const geometry = new BufferGeometry();
18
+
19
+ super( geometry, material );
18
20
 
19
21
  const scope = this;
20
22
 
@@ -24,8 +26,8 @@ class MarchingCubes extends ImmediateRenderObject {
24
26
  const nlist = new Float32Array( 12 * 3 );
25
27
  const clist = new Float32Array( 12 * 3 );
26
28
 
27
- this.enableUvs = enableUvs !== undefined ? enableUvs : false;
28
- this.enableColors = enableColors !== undefined ? enableColors : false;
29
+ this.enableUvs = enableUvs;
30
+ this.enableColors = enableColors;
29
31
 
30
32
  // functions have to be object properties
31
33
  // prototype functions kill performance
@@ -56,28 +58,37 @@ class MarchingCubes extends ImmediateRenderObject {
56
58
  this.normal_cache = new Float32Array( this.size3 * 3 );
57
59
  this.palette = new Float32Array( this.size3 * 3 );
58
60
 
59
- // immediate render mode simulator
61
+ //
60
62
 
61
- this.maxCount = 4096; // TODO: find the fastest size for this buffer
62
63
  this.count = 0;
63
64
 
64
- this.hasPositions = false;
65
- this.hasNormals = false;
66
- this.hasColors = false;
67
- this.hasUvs = false;
65
+ const maxVertexCount = maxPolyCount * 3;
66
+
67
+ this.positionArray = new Float32Array( maxVertexCount * 3 );
68
+ const positionAttribute = new BufferAttribute( this.positionArray, 3 );
69
+ positionAttribute.setUsage( DynamicDrawUsage );
70
+ geometry.setAttribute( 'position', positionAttribute );
68
71
 
69
- this.positionArray = new Float32Array( this.maxCount * 3 );
70
- this.normalArray = new Float32Array( this.maxCount * 3 );
72
+ this.normalArray = new Float32Array( maxVertexCount * 3 );
73
+ const normalAttribute = new BufferAttribute( this.normalArray, 3 );
74
+ normalAttribute.setUsage( DynamicDrawUsage );
75
+ geometry.setAttribute( 'normal', normalAttribute );
71
76
 
72
77
  if ( this.enableUvs ) {
73
78
 
74
- this.uvArray = new Float32Array( this.maxCount * 2 );
79
+ this.uvArray = new Float32Array( maxVertexCount * 2 );
80
+ const uvAttribute = new BufferAttribute( this.uvArray, 2 );
81
+ uvAttribute.setUsage( DynamicDrawUsage );
82
+ geometry.setAttribute( 'uv', uvAttribute );
75
83
 
76
84
  }
77
85
 
78
86
  if ( this.enableColors ) {
79
87
 
80
- this.colorArray = new Float32Array( this.maxCount * 3 );
88
+ this.colorArray = new Float32Array( maxVertexCount * 3 );
89
+ const colorAttribute = new BufferAttribute( this.colorArray, 3 );
90
+ colorAttribute.setUsage( DynamicDrawUsage );
91
+ geometry.setAttribute( 'color', colorAttribute );
81
92
 
82
93
  }
83
94
 
@@ -173,7 +184,7 @@ class MarchingCubes extends ImmediateRenderObject {
173
184
  // Returns total number of triangles. Fills triangles.
174
185
  // (this is where most of time is spent - it's inner work of O(n3) loop )
175
186
 
176
- function polygonize( fx, fy, fz, q, isol, renderCallback ) {
187
+ function polygonize( fx, fy, fz, q, isol ) {
177
188
 
178
189
  // cache indices
179
190
  const q1 = q + 1,
@@ -369,8 +380,7 @@ class MarchingCubes extends ImmediateRenderObject {
369
380
  clist,
370
381
  3 * triTable[ o1 ],
371
382
  3 * triTable[ o2 ],
372
- 3 * triTable[ o3 ],
373
- renderCallback
383
+ 3 * triTable[ o3 ]
374
384
  );
375
385
 
376
386
  i += 3;
@@ -382,11 +392,7 @@ class MarchingCubes extends ImmediateRenderObject {
382
392
 
383
393
  }
384
394
 
385
- /////////////////////////////////////
386
- // Immediate render mode simulator
387
- /////////////////////////////////////
388
-
389
- function posnormtriv( pos, norm, colors, o1, o2, o3, renderCallback ) {
395
+ function posnormtriv( pos, norm, colors, o1, o2, o3 ) {
390
396
 
391
397
  const c = scope.count * 3;
392
398
 
@@ -477,69 +483,8 @@ class MarchingCubes extends ImmediateRenderObject {
477
483
 
478
484
  scope.count += 3;
479
485
 
480
- if ( scope.count >= scope.maxCount - 3 ) {
481
-
482
- scope.hasPositions = true;
483
- scope.hasNormals = true;
484
-
485
- if ( scope.enableUvs ) {
486
-
487
- scope.hasUvs = true;
488
-
489
- }
490
-
491
- if ( scope.enableColors ) {
492
-
493
- scope.hasColors = true;
494
-
495
- }
496
-
497
- renderCallback( scope );
498
-
499
- }
500
-
501
486
  }
502
487
 
503
- this.begin = function () {
504
-
505
- this.count = 0;
506
-
507
- this.hasPositions = false;
508
- this.hasNormals = false;
509
- this.hasUvs = false;
510
- this.hasColors = false;
511
-
512
- };
513
-
514
- this.end = function ( renderCallback ) {
515
-
516
- if ( this.count === 0 ) return;
517
-
518
- for ( let i = this.count * 3; i < this.positionArray.length; i ++ ) {
519
-
520
- this.positionArray[ i ] = 0.0;
521
-
522
- }
523
-
524
- this.hasPositions = true;
525
- this.hasNormals = true;
526
-
527
- if ( this.enableUvs && this.material.map ) {
528
-
529
- this.hasUvs = true;
530
-
531
- }
532
-
533
- if ( this.enableColors && this.material.vertexColors !== NoColors ) {
534
-
535
- this.hasColors = true;
536
-
537
- }
538
-
539
- renderCallback( this );
540
-
541
- };
542
-
543
488
  /////////////////////////////////////
544
489
  // Metaballs
545
490
  /////////////////////////////////////
@@ -867,9 +812,9 @@ class MarchingCubes extends ImmediateRenderObject {
867
812
 
868
813
  };
869
814
 
870
- this.render = function ( renderCallback ) {
815
+ this.onBeforeRender = function () {
871
816
 
872
- this.begin();
817
+ this.count = 0;
873
818
 
874
819
  // Triangulate. Yeah, this is slow.
875
820
 
@@ -890,7 +835,7 @@ class MarchingCubes extends ImmediateRenderObject {
890
835
  const fx = ( x - this.halfsize ) / this.halfsize; //+ 1
891
836
  const q = y_offset + x;
892
837
 
893
- polygonize( fx, fy, fz, q, this.isolation, renderCallback );
838
+ polygonize( fx, fy, fz, q, this.isolation );
894
839
 
895
840
  }
896
841
 
@@ -898,76 +843,25 @@ class MarchingCubes extends ImmediateRenderObject {
898
843
 
899
844
  }
900
845
 
901
- this.end( renderCallback );
846
+ // reset unneeded data
902
847
 
903
- };
848
+ for ( let i = this.count * 3; i < this.positionArray.length; i ++ ) {
904
849
 
905
- this.generateGeometry = function () {
850
+ this.positionArray[ i ] = 0.0;
906
851
 
907
- console.warn(
908
- 'THREE.MarchingCubes: generateGeometry() now returns BufferGeometry'
909
- );
910
- return this.generateBufferGeometry();
852
+ }
911
853
 
912
- };
854
+ // update geometry data
913
855
 
914
- function concatenate( a, b, length ) {
856
+ geometry.getAttribute( 'position' ).needsUpdate = true;
857
+ geometry.getAttribute( 'normal' ).needsUpdate = true;
915
858
 
916
- const result = new Float32Array( a.length + length );
917
- result.set( a, 0 );
918
- result.set( b.slice( 0, length ), a.length );
919
- return result;
859
+ if ( this.enableUvs ) geometry.getAttribute( 'uv' ).needsUpdate = true;
860
+ if ( this.enableColors ) geometry.getAttribute( 'color' ).needsUpdate = true;
920
861
 
921
- }
862
+ // safety check
922
863
 
923
- this.generateBufferGeometry = function () {
924
-
925
- const geo = new BufferGeometry();
926
- let posArray = new Float32Array();
927
- let normArray = new Float32Array();
928
- let colorArray = new Float32Array();
929
- let uvArray = new Float32Array();
930
- const scope = this;
931
-
932
- const geo_callback = function ( object ) {
933
-
934
- if ( scope.hasPositions )
935
- posArray = concatenate(
936
- posArray,
937
- object.positionArray,
938
- object.count * 3
939
- );
940
- if ( scope.hasNormals )
941
- normArray = concatenate(
942
- normArray,
943
- object.normalArray,
944
- object.count * 3
945
- );
946
- if ( scope.hasColors )
947
- colorArray = concatenate(
948
- colorArray,
949
- object.colorArray,
950
- object.count * 3
951
- );
952
- if ( scope.hasUvs )
953
- uvArray = concatenate( uvArray, object.uvArray, object.count * 2 );
954
-
955
- object.count = 0;
956
-
957
- };
958
-
959
- this.render( geo_callback );
960
-
961
- if ( this.hasPositions )
962
- geo.setAttribute( 'position', new BufferAttribute( posArray, 3 ) );
963
- if ( this.hasNormals )
964
- geo.setAttribute( 'normal', new BufferAttribute( normArray, 3 ) );
965
- if ( this.hasColors )
966
- geo.setAttribute( 'color', new BufferAttribute( colorArray, 3 ) );
967
- if ( this.hasUvs )
968
- geo.setAttribute( 'uv', new BufferAttribute( uvArray, 2 ) );
969
-
970
- return geo;
864
+ if ( this.count / 3 > maxPolyCount ) console.warn( 'THREE.MarchingCubes: Geometry buffers too small for rendering. Please create an instance with a higher poly count.' );
971
865
 
972
866
  };
973
867
 
@@ -984,7 +878,7 @@ MarchingCubes.prototype.isMarchingCubes = true;
984
878
  /////////////////////////////////////
985
879
 
986
880
  // These tables are straight from Paul Bourke's page:
987
- // http://local.wasp.uwa.edu.au/~pbourke/geometry/polygonise/
881
+ // http://paulbourke.net/geometry/polygonise/
988
882
  // who in turn got them from Cory Gene Bloyd.
989
883
 
990
884
  const edgeTable = new Int32Array( [
@@ -1,12 +1,9 @@
1
1
  import {
2
2
  Color,
3
- LinearFilter,
4
- MathUtils,
5
3
  Matrix4,
6
4
  Mesh,
7
5
  PerspectiveCamera,
8
6
  Plane,
9
- RGBFormat,
10
7
  ShaderMaterial,
11
8
  UniformsUtils,
12
9
  Vector3,
@@ -47,19 +44,7 @@ class Reflector extends Mesh {
47
44
  const textureMatrix = new Matrix4();
48
45
  const virtualCamera = new PerspectiveCamera();
49
46
 
50
- const parameters = {
51
- minFilter: LinearFilter,
52
- magFilter: LinearFilter,
53
- format: RGBFormat
54
- };
55
-
56
- const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, parameters );
57
-
58
- if ( ! MathUtils.isPowerOfTwo( textureWidth ) || ! MathUtils.isPowerOfTwo( textureHeight ) ) {
59
-
60
- renderTarget.texture.generateMipmaps = false;
61
-
62
- }
47
+ const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight );
63
48
 
64
49
  const material = new ShaderMaterial( {
65
50
  uniforms: UniformsUtils.clone( shader.uniforms ),
@@ -193,6 +178,13 @@ class Reflector extends Mesh {
193
178
 
194
179
  };
195
180
 
181
+ this.dispose = function () {
182
+
183
+ renderTarget.dispose();
184
+ scope.material.dispose();
185
+
186
+ };
187
+
196
188
  }
197
189
 
198
190
  }
@@ -1,11 +1,8 @@
1
1
  import {
2
2
  Color,
3
- LinearFilter,
4
- MathUtils,
5
3
  Matrix4,
6
4
  Mesh,
7
5
  PerspectiveCamera,
8
- RGBFormat,
9
6
  ShaderMaterial,
10
7
  UniformsUtils,
11
8
  Vector2,
@@ -104,20 +101,11 @@ class ReflectorForSSRPass extends Mesh {
104
101
  }
105
102
 
106
103
  const parameters = {
107
- minFilter: LinearFilter,
108
- magFilter: LinearFilter,
109
- format: RGBFormat,
110
104
  depthTexture: useDepthTexture ? depthTexture : null,
111
105
  };
112
106
 
113
107
  const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, parameters );
114
108
 
115
- if ( ! MathUtils.isPowerOfTwo( textureWidth ) || ! MathUtils.isPowerOfTwo( textureHeight ) ) {
116
-
117
- renderTarget.texture.generateMipmaps = false;
118
-
119
- }
120
-
121
109
  const material = new ShaderMaterial( {
122
110
  transparent: useDepthTexture,
123
111
  defines: Object.assign( {}, ReflectorForSSRPass.ReflectorShader.defines, {