super-three 0.136.0 → 0.141.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 (768) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +24 -26
  3. package/build/three.cjs +35889 -0
  4. package/build/three.js +4837 -6036
  5. package/build/three.min.js +2 -2
  6. package/build/three.module.js +16548 -17930
  7. package/examples/js/animation/CCDIKSolver.js +3 -2
  8. package/examples/js/animation/MMDAnimationHelper.js +3 -1
  9. package/examples/js/animation/MMDPhysics.js +3 -3
  10. package/examples/js/cameras/CinematicCamera.js +2 -7
  11. package/examples/js/controls/ArcballControls.js +3 -1
  12. package/examples/js/controls/PointerLockControls.js +3 -2
  13. package/examples/js/controls/TrackballControls.js +1 -4
  14. package/examples/js/controls/TransformControls.js +5 -6
  15. package/examples/js/controls/experimental/CameraControls.js +8 -4
  16. package/examples/js/csm/CSMFrustum.js +1 -1
  17. package/examples/js/csm/CSMShader.js +51 -35
  18. package/examples/js/curves/CurveExtras.js +14 -18
  19. package/examples/js/effects/AnaglyphEffect.js +7 -4
  20. package/examples/js/effects/AsciiEffect.js +10 -29
  21. package/examples/js/exporters/ColladaExporter.js +29 -7
  22. package/examples/js/exporters/EXRExporter.js +458 -0
  23. package/examples/js/exporters/GLTFExporter.js +233 -105
  24. package/examples/js/exporters/MMDExporter.js +1 -1
  25. package/examples/js/exporters/OBJExporter.js +12 -18
  26. package/examples/js/exporters/PLYExporter.js +15 -20
  27. package/examples/js/exporters/USDZExporter.js +13 -0
  28. package/examples/js/geometries/ConvexGeometry.js +1 -1
  29. package/examples/js/geometries/DecalGeometry.js +0 -7
  30. package/examples/js/geometries/LightningStrike.js +2 -2
  31. package/examples/js/geometries/ParametricGeometries.js +3 -3
  32. package/examples/js/geometries/TextGeometry.js +12 -10
  33. package/examples/js/helpers/OctreeHelper.js +74 -0
  34. package/examples/js/helpers/VertexNormalsHelper.js +4 -23
  35. package/examples/js/helpers/VertexTangentsHelper.js +3 -13
  36. package/examples/js/helpers/ViewHelper.js +266 -0
  37. package/examples/js/interactive/HTMLMesh.js +249 -42
  38. package/examples/js/interactive/SelectionHelper.js +1 -1
  39. package/examples/js/libs/opentype.min.js +1 -118
  40. package/examples/js/lines/Line2.js +1 -2
  41. package/examples/js/lines/LineGeometry.js +10 -21
  42. package/examples/js/lines/LineMaterial.js +2 -3
  43. package/examples/js/lines/LineSegments2.js +214 -140
  44. package/examples/js/lines/LineSegmentsGeometry.js +3 -14
  45. package/examples/js/lines/Wireframe.js +2 -3
  46. package/examples/js/lines/WireframeGeometry2.js +1 -2
  47. package/examples/js/loaders/3MFLoader.js +21 -17
  48. package/examples/js/loaders/AMFLoader.js +1 -1
  49. package/examples/js/loaders/BasisTextureLoader.js +1 -0
  50. package/examples/js/loaders/ColladaLoader.js +33 -12
  51. package/examples/js/loaders/DDSLoader.js +23 -30
  52. package/examples/js/loaders/EXRLoader.js +314 -294
  53. package/examples/js/loaders/FBXLoader.js +11 -0
  54. package/examples/js/loaders/FontLoader.js +1 -2
  55. package/examples/js/loaders/GCodeLoader.js +0 -1
  56. package/examples/js/loaders/GLTFLoader.js +250 -61
  57. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -2
  58. package/examples/js/loaders/KMZLoader.js +1 -1
  59. package/examples/js/loaders/KTX2Loader.js +1 -9
  60. package/examples/js/loaders/LDrawLoader.js +1342 -962
  61. package/examples/js/loaders/LUT3dlLoader.js +18 -11
  62. package/examples/js/loaders/LUTCubeLoader.js +4 -5
  63. package/examples/js/loaders/LWOLoader.js +4 -2
  64. package/examples/js/loaders/LogLuvLoader.js +1 -2
  65. package/examples/js/loaders/MD2Loader.js +5 -5
  66. package/examples/js/loaders/MMDLoader.js +18 -4
  67. package/examples/js/loaders/MTLLoader.js +10 -3
  68. package/examples/js/loaders/NRRDLoader.js +1 -1
  69. package/examples/js/loaders/OBJLoader.js +9 -5
  70. package/examples/js/loaders/PCDLoader.js +24 -15
  71. package/examples/js/loaders/PDBLoader.js +11 -11
  72. package/examples/js/loaders/PLYLoader.js +5 -1
  73. package/examples/js/loaders/RGBELoader.js +9 -17
  74. package/examples/js/loaders/RGBMLoader.js +13 -16
  75. package/examples/js/loaders/STLLoader.js +1 -1
  76. package/examples/js/loaders/SVGLoader.js +21 -11
  77. package/examples/js/loaders/VOXLoader.js +3 -4
  78. package/examples/js/loaders/VRMLLoader.js +9 -21
  79. package/examples/js/loaders/VTKLoader.js +260 -295
  80. package/examples/js/loaders/lwo/LWO2Parser.js +4 -4
  81. package/examples/js/loaders/lwo/LWO3Parser.js +4 -4
  82. package/examples/js/math/ConvexHull.js +13 -28
  83. package/examples/js/math/Lut.js +27 -26
  84. package/examples/js/misc/MorphAnimMesh.js +2 -2
  85. package/examples/js/misc/ProgressiveLightMap.js +1 -1
  86. package/examples/js/misc/Volume.js +39 -48
  87. package/examples/js/misc/VolumeSlice.js +21 -21
  88. package/examples/js/modifiers/CurveModifier.js +8 -7
  89. package/examples/js/modifiers/EdgeSplitModifier.js +0 -13
  90. package/examples/js/modifiers/SimplifyModifier.js +1 -18
  91. package/examples/js/modifiers/TessellateModifier.js +0 -7
  92. package/examples/js/objects/Lensflare.js +4 -4
  93. package/examples/js/objects/LightningStorm.js +4 -5
  94. package/examples/js/objects/MarchingCubes.js +6 -11
  95. package/examples/js/objects/Reflector.js +10 -16
  96. package/examples/js/objects/ReflectorForSSRPass.js +1 -11
  97. package/examples/js/objects/Refractor.js +10 -16
  98. package/examples/js/objects/ShadowMesh.js +1 -2
  99. package/examples/js/objects/Sky.js +1 -1
  100. package/examples/js/objects/Water.js +2 -15
  101. package/examples/js/objects/Water2.js +1 -1
  102. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +6 -10
  103. package/examples/js/postprocessing/AfterimagePass.js +2 -6
  104. package/examples/js/postprocessing/BloomPass.js +50 -19
  105. package/examples/js/postprocessing/DotScreenPass.js +1 -1
  106. package/examples/js/postprocessing/EffectComposer.js +1 -6
  107. package/examples/js/postprocessing/GlitchPass.js +4 -5
  108. package/examples/js/postprocessing/LUTPass.js +2 -2
  109. package/examples/js/postprocessing/OutlinePass.js +8 -17
  110. package/examples/js/postprocessing/SAOPass.js +2 -7
  111. package/examples/js/postprocessing/SMAAPass.js +2 -9
  112. package/examples/js/postprocessing/SSAARenderPass.js +1 -6
  113. package/examples/js/postprocessing/SSAOPass.js +9 -21
  114. package/examples/js/postprocessing/SSRPass.js +3 -8
  115. package/examples/js/postprocessing/SavePass.js +1 -5
  116. package/examples/js/postprocessing/TAARenderPass.js +4 -4
  117. package/examples/js/postprocessing/UnrealBloomPass.js +3 -12
  118. package/examples/js/renderers/CSS2DRenderer.js +20 -19
  119. package/examples/js/renderers/CSS3DRenderer.js +40 -36
  120. package/examples/js/renderers/Projector.js +97 -124
  121. package/examples/js/renderers/SVGRenderer.js +3 -4
  122. package/examples/js/shaders/BlendShader.js +2 -1
  123. package/examples/js/shaders/CopyShader.js +4 -3
  124. package/examples/js/shaders/DigitalGlitch.js +3 -3
  125. package/examples/js/shaders/FXAAShader.js +239 -1069
  126. package/examples/js/shaders/FreiChenShader.js +1 -1
  127. package/examples/js/shaders/HorizontalBlurShader.js +1 -1
  128. package/examples/js/shaders/HorizontalTiltShiftShader.js +1 -1
  129. package/examples/js/shaders/MMDToonShader.js +0 -1
  130. package/examples/js/shaders/SSAOShader.js +1 -1
  131. package/examples/js/shaders/SSRShader.js +3 -3
  132. package/examples/js/shaders/ToneMapShader.js +1 -1
  133. package/examples/js/utils/BufferGeometryUtils.js +282 -22
  134. package/examples/js/utils/GPUStatsPanel.js +1 -1
  135. package/examples/js/utils/LDrawUtils.js +182 -0
  136. package/examples/js/utils/SceneUtils.js +59 -0
  137. package/examples/js/utils/SkeletonUtils.js +1 -1
  138. package/examples/js/utils/UVsDebug.js +23 -33
  139. package/examples/jsm/animation/CCDIKSolver.js +3 -9
  140. package/examples/jsm/animation/MMDPhysics.js +2 -2
  141. package/examples/jsm/cameras/CinematicCamera.js +2 -5
  142. package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
  143. package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +7 -1
  144. package/examples/jsm/controls/ArcballControls.js +3 -1
  145. package/examples/jsm/controls/PointerLockControls.js +4 -2
  146. package/examples/jsm/controls/TrackballControls.js +1 -4
  147. package/examples/jsm/controls/TransformControls.js +6 -6
  148. package/examples/jsm/controls/experimental/CameraControls.js +2 -2
  149. package/examples/jsm/csm/CSMFrustum.js +1 -1
  150. package/examples/jsm/csm/CSMShader.js +51 -35
  151. package/examples/jsm/curves/CurveExtras.js +15 -17
  152. package/examples/jsm/effects/AnaglyphEffect.js +4 -4
  153. package/examples/jsm/effects/AsciiEffect.js +9 -22
  154. package/examples/jsm/exporters/ColladaExporter.js +31 -6
  155. package/examples/jsm/exporters/EXRExporter.js +507 -0
  156. package/examples/jsm/exporters/GLTFExporter.js +261 -103
  157. package/examples/jsm/exporters/KTX2Exporter.js +281 -0
  158. package/examples/jsm/exporters/MMDExporter.js +1 -1
  159. package/examples/jsm/exporters/OBJExporter.js +11 -18
  160. package/examples/jsm/exporters/PLYExporter.js +23 -21
  161. package/examples/jsm/exporters/USDZExporter.js +12 -0
  162. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  163. package/examples/jsm/geometries/DecalGeometry.js +0 -7
  164. package/examples/jsm/geometries/LightningStrike.js +2 -2
  165. package/examples/jsm/geometries/ParametricGeometries.js +3 -3
  166. package/examples/jsm/geometries/TextGeometry.js +13 -13
  167. package/examples/jsm/helpers/OctreeHelper.js +58 -0
  168. package/examples/jsm/helpers/VertexNormalsHelper.js +4 -25
  169. package/examples/jsm/helpers/VertexTangentsHelper.js +3 -15
  170. package/examples/jsm/helpers/ViewHelper.js +295 -0
  171. package/examples/jsm/interactive/HTMLMesh.js +268 -36
  172. package/examples/jsm/interactive/SelectionHelper.js +1 -1
  173. package/examples/jsm/libs/flow.module.js +947 -183
  174. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  175. package/examples/jsm/libs/lil-gui.module.min.js +2 -2
  176. package/examples/jsm/libs/mikktspace.module.js +128 -0
  177. package/examples/jsm/libs/opentype.module.js +14568 -0
  178. package/examples/jsm/lines/Line2.js +2 -2
  179. package/examples/jsm/lines/LineGeometry.js +11 -19
  180. package/examples/jsm/lines/LineMaterial.js +3 -3
  181. package/examples/jsm/lines/LineSegments2.js +210 -145
  182. package/examples/jsm/lines/LineSegmentsGeometry.js +3 -12
  183. package/examples/jsm/lines/Wireframe.js +3 -3
  184. package/examples/jsm/lines/WireframeGeometry2.js +2 -2
  185. package/examples/jsm/loaders/3DMLoader.js +3 -2
  186. package/examples/jsm/loaders/3MFLoader.js +21 -17
  187. package/examples/jsm/loaders/AMFLoader.js +1 -1
  188. package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
  189. package/examples/jsm/loaders/ColladaLoader.js +40 -12
  190. package/examples/jsm/loaders/DDSLoader.js +21 -28
  191. package/examples/jsm/loaders/EXRLoader.js +309 -293
  192. package/examples/jsm/loaders/FBXLoader.js +11 -0
  193. package/examples/jsm/loaders/FontLoader.js +2 -2
  194. package/examples/jsm/loaders/GCodeLoader.js +0 -1
  195. package/examples/jsm/loaders/GLTFLoader.js +263 -68
  196. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -4
  197. package/examples/jsm/loaders/KMZLoader.js +1 -1
  198. package/examples/jsm/loaders/KTX2Loader.js +1 -10
  199. package/examples/jsm/loaders/LDrawLoader.js +1335 -988
  200. package/examples/jsm/loaders/LUT3dlLoader.js +19 -14
  201. package/examples/jsm/loaders/LUTCubeLoader.js +5 -7
  202. package/examples/jsm/loaders/LWOLoader.js +5 -3
  203. package/examples/jsm/loaders/LogLuvLoader.js +2 -2
  204. package/examples/jsm/loaders/MD2Loader.js +5 -5
  205. package/examples/jsm/loaders/MMDLoader.js +21 -3
  206. package/examples/jsm/loaders/MTLLoader.js +11 -4
  207. package/examples/jsm/loaders/NRRDLoader.js +1 -2
  208. package/examples/jsm/loaders/OBJLoader.js +11 -7
  209. package/examples/jsm/loaders/PCDLoader.js +25 -17
  210. package/examples/jsm/loaders/PDBLoader.js +11 -11
  211. package/examples/jsm/loaders/PLYLoader.js +10 -2
  212. package/examples/jsm/loaders/RGBELoader.js +11 -20
  213. package/examples/jsm/loaders/RGBMLoader.js +15 -12
  214. package/examples/jsm/loaders/STLLoader.js +1 -1
  215. package/examples/jsm/loaders/SVGLoader.js +26 -11
  216. package/examples/jsm/loaders/TTFLoader.js +1 -1
  217. package/examples/jsm/loaders/VOXLoader.js +5 -5
  218. package/examples/jsm/loaders/VRMLLoader.js +9 -23
  219. package/examples/jsm/loaders/VTKLoader.js +256 -284
  220. package/examples/jsm/loaders/ifc/web-ifc-api.js +9 -8
  221. package/examples/jsm/loaders/lwo/LWO2Parser.js +4 -4
  222. package/examples/jsm/loaders/lwo/LWO3Parser.js +4 -4
  223. package/examples/jsm/math/ConvexHull.js +13 -28
  224. package/examples/jsm/math/Lut.js +35 -25
  225. package/examples/jsm/misc/MorphAnimMesh.js +2 -2
  226. package/examples/jsm/misc/ProgressiveLightMap.js +1 -1
  227. package/examples/jsm/misc/Volume.js +39 -46
  228. package/examples/jsm/misc/VolumeSlice.js +21 -21
  229. package/examples/jsm/modifiers/CurveModifier.js +9 -8
  230. package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -13
  231. package/examples/jsm/modifiers/SimplifyModifier.js +1 -18
  232. package/examples/jsm/modifiers/TessellateModifier.js +0 -7
  233. package/examples/jsm/node-editor/NodeEditor.js +485 -163
  234. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
  235. package/examples/jsm/node-editor/accessors/NormalEditor.js +9 -9
  236. package/examples/jsm/node-editor/accessors/PositionEditor.js +9 -9
  237. package/examples/jsm/node-editor/accessors/UVEditor.js +7 -8
  238. package/examples/jsm/node-editor/core/BaseNode.js +89 -0
  239. package/examples/jsm/node-editor/core/DataFile.js +59 -0
  240. package/examples/jsm/node-editor/core/FileEditor.js +20 -0
  241. package/examples/jsm/node-editor/core/FileURLEditor.js +29 -0
  242. package/examples/jsm/node-editor/display/BlendEditor.js +10 -9
  243. package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
  244. package/examples/jsm/node-editor/examples/animate-uv.json +1 -1
  245. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -1
  246. package/examples/jsm/node-editor/examples/matcap.json +1 -0
  247. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -1
  248. package/examples/jsm/node-editor/examples/rim.json +1 -1
  249. package/examples/jsm/node-editor/inputs/ColorEditor.js +18 -13
  250. package/examples/jsm/node-editor/inputs/FloatEditor.js +8 -9
  251. package/examples/jsm/node-editor/inputs/SliderEditor.js +6 -7
  252. package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
  253. package/examples/jsm/node-editor/inputs/Vector2Editor.js +9 -9
  254. package/examples/jsm/node-editor/inputs/Vector3Editor.js +11 -11
  255. package/examples/jsm/node-editor/inputs/Vector4Editor.js +12 -12
  256. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +87 -0
  257. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +102 -0
  258. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +31 -18
  259. package/examples/jsm/node-editor/math/AngleEditor.js +40 -0
  260. package/examples/jsm/node-editor/math/DotEditor.js +8 -9
  261. package/examples/jsm/node-editor/math/InvertEditor.js +8 -7
  262. package/examples/jsm/node-editor/math/LimiterEditor.js +28 -14
  263. package/examples/jsm/node-editor/math/NormalizeEditor.js +9 -7
  264. package/examples/jsm/node-editor/math/OperatorEditor.js +29 -16
  265. package/examples/jsm/node-editor/math/PowerEditor.js +20 -10
  266. package/examples/jsm/node-editor/math/TrigonometryEditor.js +15 -9
  267. package/examples/jsm/node-editor/procedural/CheckerEditor.js +7 -6
  268. package/examples/jsm/node-editor/scene/MeshEditor.js +99 -0
  269. package/examples/jsm/node-editor/scene/Object3DEditor.js +160 -0
  270. package/examples/jsm/node-editor/scene/PointsEditor.js +99 -0
  271. package/examples/jsm/node-editor/utils/JoinEditor.js +58 -0
  272. package/examples/jsm/node-editor/utils/OscillatorEditor.js +9 -8
  273. package/examples/jsm/node-editor/utils/PreviewEditor.js +166 -0
  274. package/examples/jsm/node-editor/utils/SplitEditor.js +39 -0
  275. package/examples/jsm/node-editor/utils/TimerEditor.js +7 -6
  276. package/examples/jsm/nodes/Nodes.js +283 -94
  277. package/examples/jsm/nodes/accessors/BufferNode.js +24 -0
  278. package/examples/jsm/nodes/accessors/CameraNode.js +27 -196
  279. package/examples/jsm/nodes/accessors/CubeTextureNode.js +103 -0
  280. package/examples/jsm/nodes/accessors/InstanceNode.js +58 -0
  281. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialNode.js +49 -11
  282. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialReferenceNode.js +0 -0
  283. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelNode.js +8 -0
  284. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelViewProjectionNode.js +0 -0
  285. package/examples/jsm/nodes/accessors/NormalNode.js +39 -99
  286. package/examples/jsm/{renderers/nodes → nodes}/accessors/Object3DNode.js +34 -17
  287. package/examples/jsm/{renderers/nodes → nodes}/accessors/PointUVNode.js +2 -2
  288. package/examples/jsm/nodes/accessors/PositionNode.js +41 -110
  289. package/examples/jsm/nodes/accessors/ReferenceNode.js +65 -0
  290. package/examples/jsm/nodes/accessors/ReflectNode.js +34 -121
  291. package/examples/jsm/nodes/accessors/SkinningNode.js +102 -0
  292. package/examples/jsm/nodes/accessors/StorageBufferNode.js +21 -0
  293. package/examples/jsm/nodes/accessors/TextureNode.js +100 -0
  294. package/examples/jsm/nodes/accessors/UVNode.js +17 -43
  295. package/examples/jsm/nodes/accessors/UserDataNode.js +23 -0
  296. package/examples/jsm/nodes/core/ArrayUniformNode.js +23 -0
  297. package/examples/jsm/nodes/core/AttributeNode.js +33 -30
  298. package/examples/jsm/{renderers/nodes → nodes}/core/BypassNode.js +2 -2
  299. package/examples/jsm/{renderers/nodes → nodes}/core/CodeNode.js +2 -30
  300. package/examples/jsm/nodes/core/ConstNode.js +10 -106
  301. package/examples/jsm/{renderers/nodes → nodes}/core/ContextNode.js +17 -3
  302. package/examples/jsm/nodes/core/ExpressionNode.js +24 -7
  303. package/examples/jsm/nodes/core/FunctionCallNode.js +26 -67
  304. package/examples/jsm/nodes/core/FunctionNode.js +43 -216
  305. package/examples/jsm/nodes/core/InputNode.js +28 -60
  306. package/examples/jsm/nodes/core/InstanceIndexNode.js +21 -0
  307. package/examples/jsm/nodes/core/Node.js +228 -94
  308. package/examples/jsm/{renderers/nodes → nodes}/core/NodeAttribute.js +2 -2
  309. package/examples/jsm/nodes/core/NodeBuilder.js +388 -560
  310. package/examples/jsm/{renderers/nodes → nodes}/core/NodeCode.js +0 -0
  311. package/examples/jsm/nodes/core/NodeFrame.js +30 -23
  312. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunction.js +0 -0
  313. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunctionInput.js +0 -0
  314. package/examples/jsm/{renderers/nodes → nodes}/core/NodeKeywords.js +0 -0
  315. package/examples/jsm/{renderers/nodes → nodes}/core/NodeParser.js +0 -0
  316. package/examples/jsm/nodes/core/NodeUniform.js +8 -6
  317. package/examples/jsm/nodes/core/NodeUtils.js +69 -37
  318. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVar.js +2 -2
  319. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVary.js +2 -2
  320. package/examples/jsm/{renderers/nodes → nodes}/core/PropertyNode.js +0 -0
  321. package/examples/jsm/nodes/core/TempNode.js +20 -112
  322. package/examples/jsm/nodes/core/UniformNode.js +46 -0
  323. package/examples/jsm/nodes/core/VarNode.js +58 -27
  324. package/examples/jsm/{renderers/nodes → nodes}/core/VaryNode.js +0 -0
  325. package/examples/jsm/{renderers/nodes → nodes}/core/constants.js +0 -0
  326. package/examples/jsm/nodes/display/ColorSpaceNode.js +95 -0
  327. package/examples/jsm/nodes/display/FrontFacingNode.js +21 -0
  328. package/examples/jsm/nodes/display/NormalMapNode.js +86 -0
  329. package/examples/jsm/nodes/display/ToneMappingNode.js +51 -0
  330. package/examples/jsm/nodes/fog/FogNode.js +31 -0
  331. package/examples/jsm/nodes/fog/FogRangeNode.js +27 -0
  332. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +33 -0
  333. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  334. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +27 -0
  335. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
  336. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +18 -0
  337. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
  338. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +94 -0
  339. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +22 -0
  340. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +12 -0
  341. package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
  342. package/examples/jsm/nodes/gpgpu/ComputeNode.js +63 -0
  343. package/examples/jsm/nodes/lighting/AONode.js +25 -0
  344. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +37 -0
  345. package/examples/jsm/nodes/lighting/EnvironmentNode.js +65 -0
  346. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +50 -0
  347. package/examples/jsm/nodes/lighting/LightingContextNode.js +75 -0
  348. package/examples/jsm/nodes/lighting/LightingNode.js +19 -0
  349. package/examples/jsm/nodes/lighting/LightsNode.js +120 -0
  350. package/examples/jsm/nodes/lighting/PunctualLightNode.js +68 -0
  351. package/examples/jsm/nodes/loaders/NodeLoader.js +107 -0
  352. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +42 -0
  353. package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
  354. package/examples/jsm/{renderers/nodes → nodes}/materials/LineBasicNodeMaterial.js +11 -4
  355. package/examples/jsm/nodes/materials/Materials.js +65 -0
  356. package/examples/jsm/{renderers/nodes → nodes}/materials/MeshBasicNodeMaterial.js +13 -4
  357. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +162 -22
  358. package/examples/jsm/nodes/materials/NodeMaterial.js +128 -113
  359. package/examples/jsm/{renderers/nodes → nodes}/materials/PointsNodeMaterial.js +13 -4
  360. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +84 -16
  361. package/examples/jsm/nodes/math/CondNode.js +26 -95
  362. package/examples/jsm/nodes/math/MathNode.js +164 -187
  363. package/examples/jsm/nodes/math/OperatorNode.js +161 -41
  364. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeFunction.js +2 -2
  365. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeParser.js +0 -0
  366. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeFunction.js +20 -5
  367. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeParser.js +0 -0
  368. package/examples/jsm/nodes/procedural/CheckerNode.js +16 -57
  369. package/examples/jsm/nodes/shadernode/ShaderNode.js +262 -0
  370. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +274 -0
  371. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +106 -0
  372. package/examples/jsm/{renderers/nodes → nodes}/utils/ArrayElementNode.js +3 -3
  373. package/examples/jsm/{renderers/nodes → nodes}/utils/ConvertNode.js +11 -3
  374. package/examples/jsm/nodes/utils/JoinNode.js +17 -89
  375. package/examples/jsm/nodes/utils/MatcapUVNode.js +25 -0
  376. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +32 -0
  377. package/examples/jsm/{renderers/nodes → nodes}/utils/OscNode.js +18 -2
  378. package/examples/jsm/{renderers/nodes → nodes}/utils/SplitNode.js +35 -4
  379. package/examples/jsm/{renderers/nodes → nodes}/utils/SpriteSheetUVNode.js +3 -3
  380. package/examples/jsm/nodes/utils/TimerNode.js +30 -65
  381. package/examples/jsm/objects/Lensflare.js +6 -6
  382. package/examples/jsm/objects/LightningStorm.js +4 -4
  383. package/examples/jsm/objects/MarchingCubes.js +5 -9
  384. package/examples/jsm/objects/Reflector.js +8 -19
  385. package/examples/jsm/objects/ReflectorForSSRPass.js +2 -14
  386. package/examples/jsm/objects/Refractor.js +8 -19
  387. package/examples/jsm/objects/ShadowMesh.js +2 -2
  388. package/examples/jsm/objects/Sky.js +2 -2
  389. package/examples/jsm/objects/Water.js +3 -18
  390. package/examples/jsm/objects/Water2.js +2 -2
  391. package/examples/jsm/offscreen/jank.js +5 -5
  392. package/examples/jsm/offscreen/offscreen.js +1 -1
  393. package/examples/jsm/offscreen/scene.js +11 -11
  394. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +5 -7
  395. package/examples/jsm/postprocessing/AfterimagePass.js +0 -10
  396. package/examples/jsm/postprocessing/BloomPass.js +48 -20
  397. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  398. package/examples/jsm/postprocessing/EffectComposer.js +1 -9
  399. package/examples/jsm/postprocessing/GlitchPass.js +7 -6
  400. package/examples/jsm/postprocessing/LUTPass.js +2 -2
  401. package/examples/jsm/postprocessing/OutlinePass.js +8 -15
  402. package/examples/jsm/postprocessing/SAOPass.js +2 -9
  403. package/examples/jsm/postprocessing/SMAAPass.js +2 -11
  404. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -4
  405. package/examples/jsm/postprocessing/SSAOPass.js +13 -25
  406. package/examples/jsm/postprocessing/SSRPass.js +3 -9
  407. package/examples/jsm/postprocessing/SavePass.js +1 -3
  408. package/examples/jsm/postprocessing/TAARenderPass.js +4 -4
  409. package/examples/jsm/postprocessing/UnrealBloomPass.js +3 -8
  410. package/examples/jsm/renderers/CSS2DRenderer.js +21 -19
  411. package/examples/jsm/renderers/CSS3DRenderer.js +39 -34
  412. package/examples/jsm/renderers/Projector.js +101 -128
  413. package/examples/jsm/renderers/SVGRenderer.js +4 -4
  414. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +1 -1
  415. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +127 -23
  416. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +14 -3
  417. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +5 -5
  418. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +4 -4
  419. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +16 -10
  420. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +8 -7
  421. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +43 -0
  422. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +14 -7
  423. package/examples/jsm/renderers/webgpu/WebGPUInfo.js +1 -1
  424. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -6
  425. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +20 -20
  426. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +2 -1
  427. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +66 -0
  428. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +49 -28
  429. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +14 -14
  430. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +2 -2
  431. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +5 -8
  432. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +23 -20
  433. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +38 -20
  434. package/examples/jsm/renderers/webgpu/WebGPUUniform.js +14 -14
  435. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +5 -32
  436. package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +2 -2
  437. package/examples/jsm/renderers/webgpu/constants.js +3 -2
  438. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +276 -278
  439. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +20 -2
  440. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +24 -14
  441. package/examples/jsm/shaders/BlendShader.js +2 -1
  442. package/examples/jsm/shaders/CopyShader.js +4 -3
  443. package/examples/jsm/shaders/DigitalGlitch.js +3 -3
  444. package/examples/jsm/shaders/FXAAShader.js +219 -1051
  445. package/examples/jsm/shaders/FreiChenShader.js +1 -1
  446. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -1
  447. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +1 -1
  448. package/examples/jsm/shaders/MMDToonShader.js +0 -1
  449. package/examples/jsm/shaders/SSAOShader.js +1 -1
  450. package/examples/jsm/shaders/SSRShader.js +3 -3
  451. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  452. package/examples/jsm/utils/BufferGeometryUtils.js +292 -22
  453. package/examples/jsm/utils/GPUStatsPanel.js +1 -1
  454. package/examples/jsm/utils/LDrawUtils.js +202 -0
  455. package/examples/jsm/utils/SceneUtils.js +76 -2
  456. package/examples/jsm/utils/SkeletonUtils.js +1 -1
  457. package/examples/jsm/utils/UVsDebug.js +23 -32
  458. package/examples/jsm/webxr/ARButton.js +14 -4
  459. package/examples/jsm/webxr/OculusHandPointerModel.js +3 -3
  460. package/examples/jsm/webxr/Text2D.js +1 -1
  461. package/examples/jsm/webxr/VRButton.js +39 -1
  462. package/examples/jsm/webxr/XREstimatedLight.js +2 -0
  463. package/examples/jsm/webxr/XRHandMeshModel.js +3 -7
  464. package/examples/jsm/webxr/XRHandModelFactory.js +3 -0
  465. package/package.json +53 -25
  466. package/src/Three.Legacy.js +41 -1912
  467. package/src/Three.js +6 -3
  468. package/src/animation/AnimationClip.js +1 -1
  469. package/src/animation/AnimationMixer.js +6 -3
  470. package/src/animation/AnimationObjectGroup.js +2 -2
  471. package/src/animation/PropertyBinding.js +8 -18
  472. package/src/audio/PositionalAudio.js +8 -0
  473. package/src/cameras/ArrayCamera.js +2 -3
  474. package/src/cameras/Camera.js +2 -2
  475. package/src/cameras/CubeCamera.js +8 -1
  476. package/src/cameras/OrthographicCamera.js +2 -2
  477. package/src/cameras/PerspectiveCamera.js +2 -2
  478. package/src/constants.js +8 -18
  479. package/src/core/BufferAttribute.js +7 -12
  480. package/src/core/BufferGeometry.js +6 -6
  481. package/src/core/GLBufferAttribute.js +2 -2
  482. package/src/core/InstancedBufferAttribute.js +2 -2
  483. package/src/core/InstancedBufferGeometry.js +2 -2
  484. package/src/core/InstancedInterleavedBuffer.js +2 -2
  485. package/src/core/InterleavedBuffer.js +2 -2
  486. package/src/core/InterleavedBufferAttribute.js +5 -11
  487. package/src/core/Object3D.js +6 -3
  488. package/src/core/Raycaster.js +2 -2
  489. package/src/extras/DataUtils.js +127 -40
  490. package/src/extras/Earcut.js +2 -2
  491. package/src/extras/ImageUtils.js +63 -0
  492. package/src/extras/PMREMGenerator.js +152 -174
  493. package/src/extras/core/CurvePath.js +3 -3
  494. package/src/extras/core/ShapePath.js +5 -6
  495. package/src/extras/curves/ArcCurve.js +2 -2
  496. package/src/extras/curves/CatmullRomCurve3.js +2 -2
  497. package/src/extras/curves/CubicBezierCurve.js +2 -2
  498. package/src/extras/curves/CubicBezierCurve3.js +2 -2
  499. package/src/extras/curves/EllipseCurve.js +2 -2
  500. package/src/extras/curves/LineCurve.js +2 -2
  501. package/src/extras/curves/LineCurve3.js +2 -1
  502. package/src/extras/curves/QuadraticBezierCurve.js +2 -2
  503. package/src/extras/curves/QuadraticBezierCurve3.js +2 -2
  504. package/src/extras/curves/SplineCurve.js +2 -2
  505. package/src/geometries/CapsuleGeometry.js +33 -0
  506. package/src/geometries/ExtrudeGeometry.js +2 -0
  507. package/src/geometries/Geometries.js +1 -0
  508. package/src/geometries/LatheGeometry.js +1 -1
  509. package/src/geometries/TorusKnotGeometry.js +2 -2
  510. package/src/geometries/WireframeGeometry.js +3 -2
  511. package/src/helpers/BoxHelper.js +2 -2
  512. package/src/helpers/PointLightHelper.js +1 -1
  513. package/src/helpers/SkeletonHelper.js +3 -2
  514. package/src/lights/AmbientLight.js +2 -2
  515. package/src/lights/AmbientLightProbe.js +2 -2
  516. package/src/lights/DirectionalLight.js +2 -2
  517. package/src/lights/DirectionalLightShadow.js +2 -2
  518. package/src/lights/HemisphereLight.js +4 -4
  519. package/src/lights/HemisphereLightProbe.js +2 -2
  520. package/src/lights/Light.js +4 -4
  521. package/src/lights/LightProbe.js +2 -2
  522. package/src/lights/PointLight.js +4 -4
  523. package/src/lights/PointLightShadow.js +2 -2
  524. package/src/lights/RectAreaLight.js +2 -2
  525. package/src/lights/SpotLight.js +4 -4
  526. package/src/lights/SpotLightShadow.js +2 -2
  527. package/src/loaders/FileLoader.js +23 -4
  528. package/src/loaders/ImageBitmapLoader.js +2 -2
  529. package/src/loaders/ImageLoader.js +1 -1
  530. package/src/loaders/LoaderUtils.js +1 -1
  531. package/src/loaders/MaterialLoader.js +8 -3
  532. package/src/loaders/ObjectLoader.js +23 -25
  533. package/src/materials/LineBasicMaterial.js +6 -13
  534. package/src/materials/LineDashedMaterial.js +2 -15
  535. package/src/materials/Material.js +49 -15
  536. package/src/materials/Materials.js +66 -18
  537. package/src/materials/MeshBasicMaterial.js +6 -31
  538. package/src/materials/MeshDepthMaterial.js +2 -22
  539. package/src/materials/MeshDistanceMaterial.js +2 -22
  540. package/src/materials/MeshLambertMaterial.js +6 -34
  541. package/src/materials/MeshMatcapMaterial.js +6 -28
  542. package/src/materials/MeshNormalMaterial.js +2 -26
  543. package/src/materials/MeshPhongMaterial.js +6 -48
  544. package/src/materials/MeshPhysicalMaterial.js +32 -35
  545. package/src/materials/MeshStandardMaterial.js +6 -54
  546. package/src/materials/MeshToonMaterial.js +6 -38
  547. package/src/materials/PointsMaterial.js +6 -15
  548. package/src/materials/RawShaderMaterial.js +2 -2
  549. package/src/materials/ShaderMaterial.js +3 -17
  550. package/src/materials/ShadowMaterial.js +6 -8
  551. package/src/materials/SpriteMaterial.js +6 -12
  552. package/src/math/Box2.js +2 -2
  553. package/src/math/Box3.js +29 -15
  554. package/src/math/Color.js +85 -36
  555. package/src/math/ColorManagement.js +74 -0
  556. package/src/math/Euler.js +16 -14
  557. package/src/math/Interpolant.js +4 -9
  558. package/src/math/MathUtils.js +76 -7
  559. package/src/math/Matrix3.js +2 -2
  560. package/src/math/Matrix4.js +2 -3
  561. package/src/math/Plane.js +2 -2
  562. package/src/math/Quaternion.js +12 -3
  563. package/src/math/Spherical.js +1 -1
  564. package/src/math/SphericalHarmonics3.js +2 -2
  565. package/src/math/Vector2.js +2 -2
  566. package/src/math/Vector3.js +12 -3
  567. package/src/math/Vector4.js +2 -2
  568. package/src/math/interpolants/DiscreteInterpolant.js +1 -1
  569. package/src/objects/Bone.js +2 -2
  570. package/src/objects/Group.js +2 -2
  571. package/src/objects/InstancedMesh.js +4 -4
  572. package/src/objects/Line.js +76 -107
  573. package/src/objects/LineLoop.js +2 -2
  574. package/src/objects/LineSegments.js +15 -23
  575. package/src/objects/Mesh.js +82 -104
  576. package/src/objects/Points.js +32 -54
  577. package/src/objects/SkinnedMesh.js +5 -8
  578. package/src/objects/Sprite.js +4 -4
  579. package/src/renderers/WebGL3DRenderTarget.js +22 -0
  580. package/src/renderers/WebGLArrayRenderTarget.js +22 -0
  581. package/src/renderers/WebGLCubeRenderTarget.js +7 -16
  582. package/src/renderers/WebGLMultipleRenderTargets.js +8 -5
  583. package/src/renderers/WebGLRenderTarget.js +19 -18
  584. package/src/renderers/WebGLRenderer.js +112 -133
  585. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +46 -0
  586. package/src/renderers/shaders/ShaderChunk/common.glsl.js +1 -0
  587. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +12 -13
  588. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +1 -1
  589. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
  590. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -4
  591. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
  592. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -19
  593. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +107 -0
  594. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  595. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -7
  596. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +25 -0
  597. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -7
  598. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +25 -2
  599. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +43 -5
  600. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
  601. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
  602. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
  603. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +1 -1
  604. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +7 -7
  605. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +1 -9
  606. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +16 -31
  607. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +9 -8
  608. package/src/renderers/shaders/ShaderChunk.js +6 -0
  609. package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -2
  610. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
  611. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  612. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +3 -2
  613. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
  614. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +2 -2
  615. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +6 -0
  616. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
  617. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +10 -0
  618. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  619. package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  620. package/src/renderers/shaders/ShaderLib.js +8 -2
  621. package/src/renderers/shaders/UniformsLib.js +2 -2
  622. package/src/renderers/webgl/WebGLAttributes.js +6 -6
  623. package/src/renderers/webgl/WebGLBackground.js +5 -2
  624. package/src/renderers/webgl/WebGLBindingStates.js +57 -29
  625. package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
  626. package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
  627. package/src/renderers/webgl/WebGLGeometries.js +2 -2
  628. package/src/renderers/webgl/WebGLLights.js +0 -1
  629. package/src/renderers/webgl/WebGLMaterials.js +72 -187
  630. package/src/renderers/webgl/WebGLMorphtargets.js +59 -23
  631. package/src/renderers/webgl/WebGLProgram.js +56 -30
  632. package/src/renderers/webgl/WebGLPrograms.js +80 -130
  633. package/src/renderers/webgl/WebGLShaderCache.js +4 -3
  634. package/src/renderers/webgl/WebGLShadowMap.js +6 -8
  635. package/src/renderers/webgl/WebGLState.js +83 -2
  636. package/src/renderers/webgl/WebGLTextures.js +618 -375
  637. package/src/renderers/webgl/WebGLUniforms.js +79 -80
  638. package/src/renderers/webgl/WebGLUtils.js +97 -30
  639. package/src/renderers/webxr/WebXRManager.js +64 -47
  640. package/src/scenes/Fog.js +2 -2
  641. package/src/scenes/FogExp2.js +2 -2
  642. package/src/scenes/Scene.js +2 -2
  643. package/src/textures/CanvasTexture.js +2 -2
  644. package/src/textures/CompressedTexture.js +2 -2
  645. package/src/textures/CubeTexture.js +2 -2
  646. package/src/textures/{DataTexture3D.js → Data3DTexture.js} +4 -4
  647. package/src/textures/{DataTexture2DArray.js → DataArrayTexture.js} +4 -4
  648. package/src/textures/DataTexture.js +2 -5
  649. package/src/textures/DepthTexture.js +5 -5
  650. package/src/textures/FramebufferTexture.js +2 -2
  651. package/src/textures/Source.js +123 -0
  652. package/src/textures/Texture.js +29 -98
  653. package/src/textures/VideoTexture.js +2 -4
  654. package/src/utils.js +15 -1
  655. package/examples/js/WebGL.js +0 -90
  656. package/examples/js/csm/Frustum.js +0 -133
  657. package/examples/js/deprecated/Geometry.js +0 -1656
  658. package/examples/js/loaders/VRMLoader.js +0 -72
  659. package/examples/js/objects/ReflectorRTT.js +0 -16
  660. package/examples/js/postprocessing/SSRrPass.js +0 -494
  661. package/examples/js/shaders/SSRrShader.js +0 -336
  662. package/examples/js/utils/RoughnessMipmapper.js +0 -268
  663. package/examples/jsm/deprecated/Geometry.js +0 -1869
  664. package/examples/jsm/libs/opentype.module.min.js +0 -119
  665. package/examples/jsm/loaders/NodeMaterialLoader.js +0 -263
  666. package/examples/jsm/loaders/VRMLoader.js +0 -78
  667. package/examples/jsm/nodes/accessors/ColorsNode.js +0 -56
  668. package/examples/jsm/nodes/accessors/LightNode.js +0 -60
  669. package/examples/jsm/nodes/accessors/ResolutionNode.js +0 -64
  670. package/examples/jsm/nodes/accessors/ScreenUVNode.js +0 -64
  671. package/examples/jsm/nodes/core/NodeLib.js +0 -64
  672. package/examples/jsm/nodes/core/StructNode.js +0 -106
  673. package/examples/jsm/nodes/effects/BlurNode.js +0 -171
  674. package/examples/jsm/nodes/effects/ColorAdjustmentNode.js +0 -140
  675. package/examples/jsm/nodes/effects/LuminanceNode.js +0 -75
  676. package/examples/jsm/nodes/inputs/BoolNode.js +0 -51
  677. package/examples/jsm/nodes/inputs/ColorNode.js +0 -58
  678. package/examples/jsm/nodes/inputs/CubeTextureNode.js +0 -108
  679. package/examples/jsm/nodes/inputs/FloatNode.js +0 -51
  680. package/examples/jsm/nodes/inputs/IntNode.js +0 -51
  681. package/examples/jsm/nodes/inputs/Matrix3Node.js +0 -63
  682. package/examples/jsm/nodes/inputs/Matrix4Node.js +0 -63
  683. package/examples/jsm/nodes/inputs/PropertyNode.js +0 -47
  684. package/examples/jsm/nodes/inputs/RTTNode.js +0 -157
  685. package/examples/jsm/nodes/inputs/ReflectorNode.js +0 -90
  686. package/examples/jsm/nodes/inputs/ScreenNode.js +0 -28
  687. package/examples/jsm/nodes/inputs/TextureNode.js +0 -116
  688. package/examples/jsm/nodes/inputs/Vector2Node.js +0 -57
  689. package/examples/jsm/nodes/inputs/Vector3Node.js +0 -58
  690. package/examples/jsm/nodes/inputs/Vector4Node.js +0 -59
  691. package/examples/jsm/nodes/materials/BasicNodeMaterial.js +0 -26
  692. package/examples/jsm/nodes/materials/PhongNodeMaterial.js +0 -36
  693. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +0 -40
  694. package/examples/jsm/nodes/materials/nodes/BasicNode.js +0 -154
  695. package/examples/jsm/nodes/materials/nodes/MeshStandardNode.js +0 -116
  696. package/examples/jsm/nodes/materials/nodes/PhongNode.js +0 -409
  697. package/examples/jsm/nodes/materials/nodes/RawNode.js +0 -62
  698. package/examples/jsm/nodes/materials/nodes/SpriteNode.js +0 -236
  699. package/examples/jsm/nodes/materials/nodes/StandardNode.js +0 -609
  700. package/examples/jsm/nodes/misc/BumpMapNode.js +0 -163
  701. package/examples/jsm/nodes/misc/NormalMapNode.js +0 -138
  702. package/examples/jsm/nodes/misc/TextureCubeNode.js +0 -86
  703. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +0 -280
  704. package/examples/jsm/nodes/postprocessing/NodePass.js +0 -93
  705. package/examples/jsm/nodes/postprocessing/NodePostProcessing.js +0 -148
  706. package/examples/jsm/nodes/procedural/Fractal3DNode.js +0 -104
  707. package/examples/jsm/nodes/procedural/Noise2DNode.js +0 -149
  708. package/examples/jsm/nodes/procedural/Noise3DNode.js +0 -141
  709. package/examples/jsm/nodes/utils/BypassNode.js +0 -85
  710. package/examples/jsm/nodes/utils/ColorSpaceNode.js +0 -154
  711. package/examples/jsm/nodes/utils/MaxMIPLevelNode.js +0 -56
  712. package/examples/jsm/nodes/utils/RemapNode.js +0 -155
  713. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -101
  714. package/examples/jsm/nodes/utils/SubSlotNode.js +0 -77
  715. package/examples/jsm/nodes/utils/SwitchNode.js +0 -103
  716. package/examples/jsm/nodes/utils/UVTransformNode.js +0 -66
  717. package/examples/jsm/nodes/utils/VelocityNode.js +0 -170
  718. package/examples/jsm/objects/ReflectorRTT.js +0 -15
  719. package/examples/jsm/postprocessing/SSRrPass.js +0 -579
  720. package/examples/jsm/renderers/nodes/Nodes.js +0 -164
  721. package/examples/jsm/renderers/nodes/ShaderNode.js +0 -346
  722. package/examples/jsm/renderers/nodes/accessors/CameraNode.js +0 -68
  723. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +0 -63
  724. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +0 -67
  725. package/examples/jsm/renderers/nodes/accessors/ReferenceNode.js +0 -91
  726. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +0 -107
  727. package/examples/jsm/renderers/nodes/accessors/UVNode.js +0 -25
  728. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +0 -23
  729. package/examples/jsm/renderers/nodes/core/AttributeNode.js +0 -54
  730. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +0 -32
  731. package/examples/jsm/renderers/nodes/core/FunctionCallNode.js +0 -67
  732. package/examples/jsm/renderers/nodes/core/FunctionNode.js +0 -87
  733. package/examples/jsm/renderers/nodes/core/InputNode.js +0 -66
  734. package/examples/jsm/renderers/nodes/core/Node.js +0 -104
  735. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +0 -633
  736. package/examples/jsm/renderers/nodes/core/NodeFrame.js +0 -59
  737. package/examples/jsm/renderers/nodes/core/NodeUniform.js +0 -28
  738. package/examples/jsm/renderers/nodes/core/TempNode.js +0 -43
  739. package/examples/jsm/renderers/nodes/core/VarNode.js +0 -51
  740. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +0 -133
  741. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +0 -87
  742. package/examples/jsm/renderers/nodes/functions/BSDFs.js +0 -122
  743. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +0 -27
  744. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +0 -25
  745. package/examples/jsm/renderers/nodes/inputs/ColorNode.js +0 -18
  746. package/examples/jsm/renderers/nodes/inputs/FloatNode.js +0 -17
  747. package/examples/jsm/renderers/nodes/inputs/IntNode.js +0 -17
  748. package/examples/jsm/renderers/nodes/inputs/Matrix3Node.js +0 -18
  749. package/examples/jsm/renderers/nodes/inputs/Matrix4Node.js +0 -18
  750. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +0 -79
  751. package/examples/jsm/renderers/nodes/inputs/Vector2Node.js +0 -18
  752. package/examples/jsm/renderers/nodes/inputs/Vector3Node.js +0 -18
  753. package/examples/jsm/renderers/nodes/inputs/Vector4Node.js +0 -18
  754. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +0 -59
  755. package/examples/jsm/renderers/nodes/lights/LightNode.js +0 -79
  756. package/examples/jsm/renderers/nodes/lights/LightsNode.js +0 -44
  757. package/examples/jsm/renderers/nodes/materials/Materials.js +0 -11
  758. package/examples/jsm/renderers/nodes/materials/MeshStandardNodeMaterial.js +0 -63
  759. package/examples/jsm/renderers/nodes/math/CondNode.js +0 -60
  760. package/examples/jsm/renderers/nodes/math/MathNode.js +0 -241
  761. package/examples/jsm/renderers/nodes/math/OperatorNode.js +0 -174
  762. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +0 -36
  763. package/examples/jsm/renderers/nodes/utils/JoinNode.js +0 -42
  764. package/examples/jsm/renderers/nodes/utils/TimerNode.js +0 -47
  765. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +0 -20
  766. package/examples/jsm/shaders/SSRrShader.js +0 -307
  767. package/examples/jsm/utils/RoughnessMipmapper.js +0 -288
  768. package/src/renderers/WebGLMultisampleRenderTarget.js +0 -33
@@ -7,8 +7,6 @@ import {
7
7
  NoToneMapping,
8
8
  NoBlending,
9
9
  RGBAFormat,
10
- UnsignedByteType,
11
- sRGBEncoding,
12
10
  HalfFloatType
13
11
  } from '../constants.js';
14
12
 
@@ -17,8 +15,7 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
17
15
  import { Mesh } from '../objects/Mesh.js';
18
16
  import { OrthographicCamera } from '../cameras/OrthographicCamera.js';
19
17
  import { PerspectiveCamera } from '../cameras/PerspectiveCamera.js';
20
- import { RawShaderMaterial } from '../materials/RawShaderMaterial.js';
21
- import { Vector2 } from '../math/Vector2.js';
18
+ import { ShaderMaterial } from '../materials/ShaderMaterial.js';
22
19
  import { Vector3 } from '../math/Vector3.js';
23
20
  import { Color } from '../math/Color.js';
24
21
  import { WebGLRenderTarget } from '../renderers/WebGLRenderTarget.js';
@@ -27,8 +24,6 @@ import { BoxGeometry } from '../geometries/BoxGeometry.js';
27
24
  import { BackSide } from '../constants.js';
28
25
 
29
26
  const LOD_MIN = 4;
30
- const LOD_MAX = 8;
31
- const SIZE_MAX = Math.pow( 2, LOD_MAX );
32
27
 
33
28
  // The standard deviations (radians) associated with the extra mips. These are
34
29
  // chosen to approximate a Trowbridge-Reitz distribution function times the
@@ -36,19 +31,11 @@ const SIZE_MAX = Math.pow( 2, LOD_MAX );
36
31
  // variance #defines in cube_uv_reflection_fragment.glsl.js.
37
32
  const EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];
38
33
 
39
- const TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;
40
-
41
34
  // The maximum length of the blur for loop. Smaller sigmas will use fewer
42
35
  // samples and exit early, but not recompile the shader.
43
36
  const MAX_SAMPLES = 20;
44
37
 
45
- const ENCODINGS = {
46
- [ LinearEncoding ]: 0,
47
- [ sRGBEncoding ]: 1
48
- };
49
-
50
38
  const _flatCamera = /*@__PURE__*/ new OrthographicCamera();
51
- const { _lodPlanes, _sizeLods, _sigmas } = /*@__PURE__*/ _createPlanes();
52
39
  const _clearColor = /*@__PURE__*/ new Color();
53
40
  let _oldTarget = null;
54
41
 
@@ -92,9 +79,15 @@ class PMREMGenerator {
92
79
  this._renderer = renderer;
93
80
  this._pingPongRenderTarget = null;
94
81
 
95
- this._blurMaterial = _getBlurShader( MAX_SAMPLES );
96
- this._equirectShader = null;
97
- this._cubemapShader = null;
82
+ this._lodMax = 0;
83
+ this._cubeSize = 0;
84
+ this._lodPlanes = [];
85
+ this._sizeLods = [];
86
+ this._sigmas = [];
87
+
88
+ this._blurMaterial = null;
89
+ this._cubemapMaterial = null;
90
+ this._equirectMaterial = null;
98
91
 
99
92
  this._compileMaterial( this._blurMaterial );
100
93
 
@@ -110,9 +103,14 @@ class PMREMGenerator {
110
103
  fromScene( scene, sigma = 0, near = 0.1, far = 100 ) {
111
104
 
112
105
  _oldTarget = this._renderer.getRenderTarget();
106
+
107
+ this._setSize( 256 );
108
+
113
109
  const cubeUVRenderTarget = this._allocateTargets();
110
+ cubeUVRenderTarget.depthBuffer = true;
114
111
 
115
112
  this._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );
113
+
116
114
  if ( sigma > 0 ) {
117
115
 
118
116
  this._blur( cubeUVRenderTarget, 0, 0, sigma );
@@ -131,9 +129,9 @@ class PMREMGenerator {
131
129
  * or HDR. The ideal input image size is 1k (1024 x 512),
132
130
  * as this matches best with the 256 x 256 cubemap output.
133
131
  */
134
- fromEquirectangular( equirectangular ) {
132
+ fromEquirectangular( equirectangular, renderTarget = null ) {
135
133
 
136
- return this._fromTexture( equirectangular );
134
+ return this._fromTexture( equirectangular, renderTarget );
137
135
 
138
136
  }
139
137
 
@@ -142,9 +140,9 @@ class PMREMGenerator {
142
140
  * or HDR. The ideal input cube size is 256 x 256,
143
141
  * as this matches best with the 256 x 256 cubemap output.
144
142
  */
145
- fromCubemap( cubemap ) {
143
+ fromCubemap( cubemap, renderTarget = null ) {
146
144
 
147
- return this._fromTexture( cubemap );
145
+ return this._fromTexture( cubemap, renderTarget );
148
146
 
149
147
  }
150
148
 
@@ -154,10 +152,10 @@ class PMREMGenerator {
154
152
  */
155
153
  compileCubemapShader() {
156
154
 
157
- if ( this._cubemapShader === null ) {
155
+ if ( this._cubemapMaterial === null ) {
158
156
 
159
- this._cubemapShader = _getCubemapShader();
160
- this._compileMaterial( this._cubemapShader );
157
+ this._cubemapMaterial = _getCubemapMaterial();
158
+ this._compileMaterial( this._cubemapMaterial );
161
159
 
162
160
  }
163
161
 
@@ -169,10 +167,10 @@ class PMREMGenerator {
169
167
  */
170
168
  compileEquirectangularShader() {
171
169
 
172
- if ( this._equirectShader === null ) {
170
+ if ( this._equirectMaterial === null ) {
173
171
 
174
- this._equirectShader = _getEquirectShader();
175
- this._compileMaterial( this._equirectShader );
172
+ this._equirectMaterial = _getEquirectMaterial();
173
+ this._compileMaterial( this._equirectMaterial );
176
174
 
177
175
  }
178
176
 
@@ -185,34 +183,59 @@ class PMREMGenerator {
185
183
  */
186
184
  dispose() {
187
185
 
188
- this._blurMaterial.dispose();
186
+ this._dispose();
189
187
 
190
- if ( this._cubemapShader !== null ) this._cubemapShader.dispose();
191
- if ( this._equirectShader !== null ) this._equirectShader.dispose();
188
+ if ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();
189
+ if ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();
192
190
 
193
- for ( let i = 0; i < _lodPlanes.length; i ++ ) {
191
+ }
194
192
 
195
- _lodPlanes[ i ].dispose();
193
+ // private interface
196
194
 
197
- }
195
+ _setSize( cubeSize ) {
196
+
197
+ this._lodMax = Math.floor( Math.log2( cubeSize ) );
198
+ this._cubeSize = Math.pow( 2, this._lodMax );
198
199
 
199
200
  }
200
201
 
201
- // private interface
202
+ _dispose() {
203
+
204
+ if ( this._blurMaterial !== null ) this._blurMaterial.dispose();
205
+
206
+ if ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();
207
+
208
+ for ( let i = 0; i < this._lodPlanes.length; i ++ ) {
209
+
210
+ this._lodPlanes[ i ].dispose();
211
+
212
+ }
213
+
214
+ }
202
215
 
203
216
  _cleanup( outputTarget ) {
204
217
 
205
- this._pingPongRenderTarget.dispose();
206
218
  this._renderer.setRenderTarget( _oldTarget );
207
219
  outputTarget.scissorTest = false;
208
220
  _setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );
209
221
 
210
222
  }
211
223
 
212
- _fromTexture( texture ) {
224
+ _fromTexture( texture, renderTarget ) {
225
+
226
+ if ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {
227
+
228
+ this._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );
229
+
230
+ } else { // Equirectangular
231
+
232
+ this._setSize( texture.image.width / 4 );
233
+
234
+ }
213
235
 
214
236
  _oldTarget = this._renderer.getRenderTarget();
215
- const cubeUVRenderTarget = this._allocateTargets( texture );
237
+
238
+ const cubeUVRenderTarget = renderTarget || this._allocateTargets();
216
239
  this._textureToCubeUV( texture, cubeUVRenderTarget );
217
240
  this._applyPMREM( cubeUVRenderTarget );
218
241
  this._cleanup( cubeUVRenderTarget );
@@ -221,7 +244,10 @@ class PMREMGenerator {
221
244
 
222
245
  }
223
246
 
224
- _allocateTargets( texture ) { // warning: null texture is valid
247
+ _allocateTargets() {
248
+
249
+ const width = 3 * Math.max( this._cubeSize, 16 * 7 );
250
+ const height = 4 * this._cubeSize;
225
251
 
226
252
  const params = {
227
253
  magFilter: LinearFilter,
@@ -233,16 +259,32 @@ class PMREMGenerator {
233
259
  depthBuffer: false
234
260
  };
235
261
 
236
- const cubeUVRenderTarget = _createRenderTarget( params );
237
- cubeUVRenderTarget.depthBuffer = texture ? false : true;
238
- this._pingPongRenderTarget = _createRenderTarget( params );
262
+ const cubeUVRenderTarget = _createRenderTarget( width, height, params );
263
+
264
+ if ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width ) {
265
+
266
+ if ( this._pingPongRenderTarget !== null ) {
267
+
268
+ this._dispose();
269
+
270
+ }
271
+
272
+ this._pingPongRenderTarget = _createRenderTarget( width, height, params );
273
+
274
+ const { _lodMax } = this;
275
+ ( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );
276
+
277
+ this._blurMaterial = _getBlurShader( _lodMax, width, height );
278
+
279
+ }
280
+
239
281
  return cubeUVRenderTarget;
240
282
 
241
283
  }
242
284
 
243
285
  _compileMaterial( material ) {
244
286
 
245
- const tmpMesh = new Mesh( _lodPlanes[ 0 ], material );
287
+ const tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );
246
288
  this._renderer.compile( tmpMesh, _flatCamera );
247
289
 
248
290
  }
@@ -295,12 +337,13 @@ class PMREMGenerator {
295
337
  for ( let i = 0; i < 6; i ++ ) {
296
338
 
297
339
  const col = i % 3;
298
- if ( col == 0 ) {
340
+
341
+ if ( col === 0 ) {
299
342
 
300
343
  cubeCamera.up.set( 0, upSign[ i ], 0 );
301
344
  cubeCamera.lookAt( forwardSign[ i ], 0, 0 );
302
345
 
303
- } else if ( col == 1 ) {
346
+ } else if ( col === 1 ) {
304
347
 
305
348
  cubeCamera.up.set( 0, 0, upSign[ i ] );
306
349
  cubeCamera.lookAt( 0, forwardSign[ i ], 0 );
@@ -312,8 +355,10 @@ class PMREMGenerator {
312
355
 
313
356
  }
314
357
 
315
- _setViewport( cubeUVRenderTarget,
316
- col * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );
358
+ const size = this._cubeSize;
359
+
360
+ _setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );
361
+
317
362
  renderer.setRenderTarget( cubeUVRenderTarget );
318
363
 
319
364
  if ( useSolidColor ) {
@@ -335,20 +380,6 @@ class PMREMGenerator {
335
380
 
336
381
  }
337
382
 
338
- _setEncoding( uniform, texture ) {
339
-
340
- if ( this._renderer.capabilities.isWebGL2 === true && texture.format === RGBAFormat && texture.type === UnsignedByteType && texture.encoding === sRGBEncoding ) {
341
-
342
- uniform.value = ENCODINGS[ LinearEncoding ];
343
-
344
- } else {
345
-
346
- uniform.value = ENCODINGS[ texture.encoding ];
347
-
348
- }
349
-
350
- }
351
-
352
383
  _textureToCubeUV( texture, cubeUVRenderTarget ) {
353
384
 
354
385
  const renderer = this._renderer;
@@ -357,38 +388,34 @@ class PMREMGenerator {
357
388
 
358
389
  if ( isCubeTexture ) {
359
390
 
360
- if ( this._cubemapShader == null ) {
391
+ if ( this._cubemapMaterial === null ) {
361
392
 
362
- this._cubemapShader = _getCubemapShader();
393
+ this._cubemapMaterial = _getCubemapMaterial();
363
394
 
364
395
  }
365
396
 
397
+ this._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;
398
+
366
399
  } else {
367
400
 
368
- if ( this._equirectShader == null ) {
401
+ if ( this._equirectMaterial === null ) {
369
402
 
370
- this._equirectShader = _getEquirectShader();
403
+ this._equirectMaterial = _getEquirectMaterial();
371
404
 
372
405
  }
373
406
 
374
407
  }
375
408
 
376
- const material = isCubeTexture ? this._cubemapShader : this._equirectShader;
377
- const mesh = new Mesh( _lodPlanes[ 0 ], material );
409
+ const material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;
410
+ const mesh = new Mesh( this._lodPlanes[ 0 ], material );
378
411
 
379
412
  const uniforms = material.uniforms;
380
413
 
381
414
  uniforms[ 'envMap' ].value = texture;
382
415
 
383
- if ( ! isCubeTexture ) {
384
-
385
- uniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );
416
+ const size = this._cubeSize;
386
417
 
387
- }
388
-
389
- this._setEncoding( uniforms[ 'inputEncoding' ], texture );
390
-
391
- _setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );
418
+ _setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );
392
419
 
393
420
  renderer.setRenderTarget( cubeUVRenderTarget );
394
421
  renderer.render( mesh, _flatCamera );
@@ -401,9 +428,9 @@ class PMREMGenerator {
401
428
  const autoClear = renderer.autoClear;
402
429
  renderer.autoClear = false;
403
430
 
404
- for ( let i = 1; i < TOTAL_LODS; i ++ ) {
431
+ for ( let i = 1; i < this._lodPlanes.length; i ++ ) {
405
432
 
406
- const sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );
433
+ const sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );
407
434
 
408
435
  const poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];
409
436
 
@@ -461,10 +488,10 @@ class PMREMGenerator {
461
488
  // Number of standard deviations at which to cut off the discrete approximation.
462
489
  const STANDARD_DEVIATIONS = 3;
463
490
 
464
- const blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );
491
+ const blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );
465
492
  const blurUniforms = blurMaterial.uniforms;
466
493
 
467
- const pixels = _sizeLods[ lodIn ] - 1;
494
+ const pixels = this._sizeLods[ lodIn ] - 1;
468
495
  const radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );
469
496
  const sigmaPixels = sigmaRadians / radiansPerPixel;
470
497
  const samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;
@@ -486,7 +513,7 @@ class PMREMGenerator {
486
513
  const weight = Math.exp( - x * x / 2 );
487
514
  weights.push( weight );
488
515
 
489
- if ( i == 0 ) {
516
+ if ( i === 0 ) {
490
517
 
491
518
  sum += weight;
492
519
 
@@ -515,12 +542,13 @@ class PMREMGenerator {
515
542
 
516
543
  }
517
544
 
545
+ const { _lodMax } = this;
518
546
  blurUniforms[ 'dTheta' ].value = radiansPerPixel;
519
- blurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;
547
+ blurUniforms[ 'mipInt' ].value = _lodMax - lodIn;
520
548
 
521
- const outputSize = _sizeLods[ lodOut ];
522
- const x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );
523
- const y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );
549
+ const outputSize = this._sizeLods[ lodOut ];
550
+ const x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );
551
+ const y = 4 * ( this._cubeSize - outputSize );
524
552
 
525
553
  _setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );
526
554
  renderer.setRenderTarget( targetOut );
@@ -530,35 +558,39 @@ class PMREMGenerator {
530
558
 
531
559
  }
532
560
 
533
- function _createPlanes() {
534
561
 
535
- const _lodPlanes = [];
536
- const _sizeLods = [];
537
- const _sigmas = [];
538
562
 
539
- let lod = LOD_MAX;
563
+ function _createPlanes( lodMax ) {
564
+
565
+ const lodPlanes = [];
566
+ const sizeLods = [];
567
+ const sigmas = [];
568
+
569
+ let lod = lodMax;
570
+
571
+ const totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;
540
572
 
541
- for ( let i = 0; i < TOTAL_LODS; i ++ ) {
573
+ for ( let i = 0; i < totalLods; i ++ ) {
542
574
 
543
575
  const sizeLod = Math.pow( 2, lod );
544
- _sizeLods.push( sizeLod );
576
+ sizeLods.push( sizeLod );
545
577
  let sigma = 1.0 / sizeLod;
546
578
 
547
- if ( i > LOD_MAX - LOD_MIN ) {
579
+ if ( i > lodMax - LOD_MIN ) {
548
580
 
549
- sigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];
581
+ sigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];
550
582
 
551
- } else if ( i == 0 ) {
583
+ } else if ( i === 0 ) {
552
584
 
553
585
  sigma = 0;
554
586
 
555
587
  }
556
588
 
557
- _sigmas.push( sigma );
589
+ sigmas.push( sigma );
558
590
 
559
- const texelSize = 1.0 / ( sizeLod - 1 );
560
- const min = - texelSize / 2;
561
- const max = 1 + texelSize / 2;
591
+ const texelSize = 1.0 / ( sizeLod - 2 );
592
+ const min = - texelSize;
593
+ const max = 1 + texelSize;
562
594
  const uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];
563
595
 
564
596
  const cubeFaces = 6;
@@ -594,7 +626,7 @@ function _createPlanes() {
594
626
  planes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );
595
627
  planes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );
596
628
  planes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );
597
- _lodPlanes.push( planes );
629
+ lodPlanes.push( planes );
598
630
 
599
631
  if ( lod > LOD_MIN ) {
600
632
 
@@ -604,13 +636,13 @@ function _createPlanes() {
604
636
 
605
637
  }
606
638
 
607
- return { _lodPlanes, _sizeLods, _sigmas };
639
+ return { lodPlanes, sizeLods, sigmas };
608
640
 
609
641
  }
610
642
 
611
- function _createRenderTarget( params ) {
643
+ function _createRenderTarget( width, height, params ) {
612
644
 
613
- const cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );
645
+ const cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );
614
646
  cubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;
615
647
  cubeUVRenderTarget.texture.name = 'PMREM.cubeUv';
616
648
  cubeUVRenderTarget.scissorTest = true;
@@ -625,15 +657,20 @@ function _setViewport( target, x, y, width, height ) {
625
657
 
626
658
  }
627
659
 
628
- function _getBlurShader( maxSamples ) {
660
+ function _getBlurShader( lodMax, width, height ) {
629
661
 
630
- const weights = new Float32Array( maxSamples );
662
+ const weights = new Float32Array( MAX_SAMPLES );
631
663
  const poleAxis = new Vector3( 0, 1, 0 );
632
- const shaderMaterial = new RawShaderMaterial( {
664
+ const shaderMaterial = new ShaderMaterial( {
633
665
 
634
666
  name: 'SphericalGaussianBlur',
635
667
 
636
- defines: { 'n': maxSamples },
668
+ defines: {
669
+ 'n': MAX_SAMPLES,
670
+ 'CUBEUV_TEXEL_WIDTH': 1.0 / width,
671
+ 'CUBEUV_TEXEL_HEIGHT': 1.0 / height,
672
+ 'CUBEUV_MAX_MIP': `${lodMax}.0`,
673
+ },
637
674
 
638
675
  uniforms: {
639
676
  'envMap': { value: null },
@@ -662,8 +699,6 @@ function _getBlurShader( maxSamples ) {
662
699
  uniform float mipInt;
663
700
  uniform vec3 poleAxis;
664
701
 
665
- ${ _getEncodings() }
666
-
667
702
  #define ENVMAP_TYPE_CUBE_UV
668
703
  #include <cube_uv_reflection_fragment>
669
704
 
@@ -721,17 +756,14 @@ function _getBlurShader( maxSamples ) {
721
756
 
722
757
  }
723
758
 
724
- function _getEquirectShader() {
759
+ function _getEquirectMaterial() {
725
760
 
726
- const texelSize = new Vector2( 1, 1 );
727
- const shaderMaterial = new RawShaderMaterial( {
761
+ return new ShaderMaterial( {
728
762
 
729
763
  name: 'EquirectangularToCubeUV',
730
764
 
731
765
  uniforms: {
732
- 'envMap': { value: null },
733
- 'texelSize': { value: texelSize },
734
- 'inputEncoding': { value: ENCODINGS[ LinearEncoding ] }
766
+ 'envMap': { value: null }
735
767
  },
736
768
 
737
769
  vertexShader: _getCommonVertexShader(),
@@ -744,32 +776,15 @@ function _getEquirectShader() {
744
776
  varying vec3 vOutputDirection;
745
777
 
746
778
  uniform sampler2D envMap;
747
- uniform vec2 texelSize;
748
-
749
- ${ _getEncodings() }
750
779
 
751
780
  #include <common>
752
781
 
753
782
  void main() {
754
783
 
755
- gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );
756
-
757
784
  vec3 outputDirection = normalize( vOutputDirection );
758
785
  vec2 uv = equirectUv( outputDirection );
759
786
 
760
- vec2 f = fract( uv / texelSize - 0.5 );
761
- uv -= f * texelSize;
762
- vec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;
763
- uv.x += texelSize.x;
764
- vec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;
765
- uv.y += texelSize.y;
766
- vec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;
767
- uv.x -= texelSize.x;
768
- vec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;
769
-
770
- vec3 tm = mix( tl, tr, f.x );
771
- vec3 bm = mix( bl, br, f.x );
772
- gl_FragColor.rgb = mix( tm, bm, f.y );
787
+ gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );
773
788
 
774
789
  }
775
790
  `,
@@ -780,19 +795,17 @@ function _getEquirectShader() {
780
795
 
781
796
  } );
782
797
 
783
- return shaderMaterial;
784
-
785
798
  }
786
799
 
787
- function _getCubemapShader() {
800
+ function _getCubemapMaterial() {
788
801
 
789
- const shaderMaterial = new RawShaderMaterial( {
802
+ return new ShaderMaterial( {
790
803
 
791
804
  name: 'CubemapToCubeUV',
792
805
 
793
806
  uniforms: {
794
807
  'envMap': { value: null },
795
- 'inputEncoding': { value: ENCODINGS[ LinearEncoding ] }
808
+ 'flipEnvMap': { value: - 1 }
796
809
  },
797
810
 
798
811
  vertexShader: _getCommonVertexShader(),
@@ -802,15 +815,15 @@ function _getCubemapShader() {
802
815
  precision mediump float;
803
816
  precision mediump int;
804
817
 
818
+ uniform float flipEnvMap;
819
+
805
820
  varying vec3 vOutputDirection;
806
821
 
807
822
  uniform samplerCube envMap;
808
823
 
809
- ${ _getEncodings() }
810
-
811
824
  void main() {
812
825
 
813
- gl_FragColor = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) );
826
+ gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );
814
827
 
815
828
  }
816
829
  `,
@@ -821,8 +834,6 @@ function _getCubemapShader() {
821
834
 
822
835
  } );
823
836
 
824
- return shaderMaterial;
825
-
826
837
  }
827
838
 
828
839
  function _getCommonVertexShader() {
@@ -832,8 +843,6 @@ function _getCommonVertexShader() {
832
843
  precision mediump float;
833
844
  precision mediump int;
834
845
 
835
- attribute vec3 position;
836
- attribute vec2 uv;
837
846
  attribute float faceIndex;
838
847
 
839
848
  varying vec3 vOutputDirection;
@@ -888,35 +897,4 @@ function _getCommonVertexShader() {
888
897
 
889
898
  }
890
899
 
891
- function _getEncodings() {
892
-
893
- return /* glsl */`
894
-
895
- uniform int inputEncoding;
896
-
897
- #include <encodings_pars_fragment>
898
-
899
- vec4 inputTexelToLinear( vec4 value ) {
900
-
901
- if ( inputEncoding == 0 ) {
902
-
903
- return value;
904
-
905
- } else {
906
-
907
- return sRGBToLinear( value );
908
-
909
- }
910
-
911
- }
912
-
913
- vec4 envMapTexelToLinear( vec4 color ) {
914
-
915
- return inputTexelToLinear( color );
916
-
917
- }
918
- `;
919
-
920
- }
921
-
922
900
  export { PMREMGenerator };
@@ -160,9 +160,9 @@ class CurvePath extends Curve {
160
160
  for ( let i = 0, curves = this.curves; i < curves.length; i ++ ) {
161
161
 
162
162
  const curve = curves[ i ];
163
- const resolution = ( curve && curve.isEllipseCurve ) ? divisions * 2
164
- : ( curve && ( curve.isLineCurve || curve.isLineCurve3 ) ) ? 1
165
- : ( curve && curve.isSplineCurve ) ? divisions * curve.points.length
163
+ const resolution = curve.isEllipseCurve ? divisions * 2
164
+ : ( curve.isLineCurve || curve.isLineCurve3 ) ? 1
165
+ : curve.isSplineCurve ? divisions * curve.points.length
166
166
  : divisions;
167
167
 
168
168
  const pts = curve.getPoints( resolution );
@@ -210,7 +210,7 @@ class ShapePath {
210
210
  if ( newShapes.length > 1 ) {
211
211
 
212
212
  let ambiguous = false;
213
- const toChange = [];
213
+ let toChange = 0;
214
214
 
215
215
  for ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {
216
216
 
@@ -231,7 +231,8 @@ class ShapePath {
231
231
 
232
232
  if ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {
233
233
 
234
- if ( sIdx !== s2Idx ) toChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );
234
+ if ( sIdx !== s2Idx ) toChange ++;
235
+
235
236
  if ( hole_unassigned ) {
236
237
 
237
238
  hole_unassigned = false;
@@ -256,12 +257,10 @@ class ShapePath {
256
257
  }
257
258
 
258
259
  }
259
- // console.log("ambiguous: ", ambiguous);
260
260
 
261
- if ( toChange.length > 0 ) {
261
+ if ( toChange > 0 && ambiguous === false ) {
262
262
 
263
- // console.log("to change: ", toChange);
264
- if ( ! ambiguous ) newShapeHoles = betterShapeHoles;
263
+ newShapeHoles = betterShapeHoles;
265
264
 
266
265
  }
267
266