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
@@ -9,12 +9,12 @@ import {
9
9
  UnsignedByteType,
10
10
  LinearEncoding,
11
11
  NoToneMapping,
12
- LinearMipmapLinearFilter,
13
- NearestFilter,
14
- ClampToEdgeWrapping
12
+ LinearMipmapLinearFilter
15
13
  } from '../constants.js';
14
+ import { floorPowerOfTwo } from '../math/MathUtils.js';
16
15
  import { Frustum } from '../math/Frustum.js';
17
16
  import { Matrix4 } from '../math/Matrix4.js';
17
+ import { Vector2 } from '../math/Vector2.js';
18
18
  import { Vector3 } from '../math/Vector3.js';
19
19
  import { Vector4 } from '../math/Vector4.js';
20
20
  import { WebGLAnimation } from './webgl/WebGLAnimation.js';
@@ -31,7 +31,6 @@ import { WebGLGeometries } from './webgl/WebGLGeometries.js';
31
31
  import { WebGLIndexedBufferRenderer } from './webgl/WebGLIndexedBufferRenderer.js';
32
32
  import { WebGLInfo } from './webgl/WebGLInfo.js';
33
33
  import { WebGLMorphtargets } from './webgl/WebGLMorphtargets.js';
34
- import { WebGLMultisampleRenderTarget } from './WebGLMultisampleRenderTarget.js';
35
34
  import { WebGLObjects } from './webgl/WebGLObjects.js';
36
35
  import { WebGLPrograms } from './webgl/WebGLPrograms.js';
37
36
  import { WebGLProperties } from './webgl/WebGLProperties.js';
@@ -58,10 +57,11 @@ function createCanvasElement() {
58
57
 
59
58
  function WebGLRenderer( parameters = {} ) {
60
59
 
60
+ this.isWebGLRenderer = true;
61
+
61
62
  const _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),
62
63
  _context = parameters.context !== undefined ? parameters.context : null,
63
64
 
64
- _alpha = parameters.alpha !== undefined ? parameters.alpha : false,
65
65
  _depth = parameters.depth !== undefined ? parameters.depth : true,
66
66
  _stencil = parameters.stencil !== undefined ? parameters.stencil : true,
67
67
  _antialias = parameters.antialias !== undefined ? parameters.antialias : false,
@@ -70,6 +70,18 @@ function WebGLRenderer( parameters = {} ) {
70
70
  _powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',
71
71
  _failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;
72
72
 
73
+ let _alpha;
74
+
75
+ if ( _context !== null ) {
76
+
77
+ _alpha = _context.getContextAttributes().alpha;
78
+
79
+ } else {
80
+
81
+ _alpha = parameters.alpha !== undefined ? parameters.alpha : false;
82
+
83
+ }
84
+
73
85
  let currentRenderList = null;
74
86
  let currentRenderState = null;
75
87
 
@@ -122,6 +134,28 @@ function WebGLRenderer( parameters = {} ) {
122
134
  this.toneMapping = NoToneMapping;
123
135
  this.toneMappingExposure = 1.0;
124
136
 
137
+ //
138
+
139
+ Object.defineProperties( this, {
140
+
141
+ // @deprecated since r136, 0e21088102b4de7e0a0a33140620b7a3424b9e6d
142
+
143
+ gammaFactor: {
144
+ get: function () {
145
+
146
+ console.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );
147
+ return 2;
148
+
149
+ },
150
+ set: function () {
151
+
152
+ console.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );
153
+
154
+ }
155
+ }
156
+
157
+ } );
158
+
125
159
  // internal properties
126
160
 
127
161
  const _this = this;
@@ -154,10 +188,6 @@ function WebGLRenderer( parameters = {} ) {
154
188
  const _scissor = new Vector4( 0, 0, _width, _height );
155
189
  let _scissorTest = false;
156
190
 
157
- //
158
-
159
- const _currentDrawBuffers = [];
160
-
161
191
  // frustum
162
192
 
163
193
  const _frustum = new Frustum();
@@ -175,6 +205,7 @@ function WebGLRenderer( parameters = {} ) {
175
205
 
176
206
  const _projScreenMatrix = new Matrix4();
177
207
 
208
+ const _vector2 = new Vector2();
178
209
  const _vector3 = new Vector3();
179
210
 
180
211
  const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };
@@ -206,7 +237,7 @@ function WebGLRenderer( parameters = {} ) {
206
237
  try {
207
238
 
208
239
  const contextAttributes = {
209
- alpha: _alpha,
240
+ alpha: true,
210
241
  depth: _depth,
211
242
  stencil: _stencil,
212
243
  antialias: _antialias,
@@ -222,6 +253,7 @@ function WebGLRenderer( parameters = {} ) {
222
253
  // event listeners must be registered before WebGL context is created, see #12753
223
254
  _canvas.addEventListener( 'webglcontextlost', onContextLost, false );
224
255
  _canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );
256
+ _canvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );
225
257
 
226
258
  if ( _gl === null ) {
227
259
 
@@ -290,8 +322,6 @@ function WebGLRenderer( parameters = {} ) {
290
322
 
291
323
  state = new WebGLState( _gl, extensions, capabilities );
292
324
 
293
- _currentDrawBuffers[ 0 ] = _gl.BACK;
294
-
295
325
  info = new WebGLInfo( _gl );
296
326
  properties = new WebGLProperties();
297
327
  textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );
@@ -304,10 +334,10 @@ function WebGLRenderer( parameters = {} ) {
304
334
  morphtargets = new WebGLMorphtargets( _gl, capabilities, textures );
305
335
  clipping = new WebGLClipping( properties );
306
336
  programCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );
307
- materials = new WebGLMaterials( properties );
337
+ materials = new WebGLMaterials( _this, properties );
308
338
  renderLists = new WebGLRenderLists();
309
339
  renderStates = new WebGLRenderStates( extensions, capabilities );
310
- background = new WebGLBackground( _this, cubemaps, state, objects, _premultipliedAlpha );
340
+ background = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );
311
341
  shadowMap = new WebGLShadowMap( _this, objects, capabilities );
312
342
 
313
343
  bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );
@@ -527,13 +557,13 @@ function WebGLRenderer( parameters = {} ) {
527
557
 
528
558
  };
529
559
 
530
- this.clear = function ( color, depth, stencil ) {
560
+ this.clear = function ( color = true, depth = true, stencil = true ) {
531
561
 
532
562
  let bits = 0;
533
563
 
534
- if ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;
535
- if ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;
536
- if ( stencil === undefined || stencil ) bits |= _gl.STENCIL_BUFFER_BIT;
564
+ if ( color ) bits |= _gl.COLOR_BUFFER_BIT;
565
+ if ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;
566
+ if ( stencil ) bits |= _gl.STENCIL_BUFFER_BIT;
537
567
 
538
568
  _gl.clear( bits );
539
569
 
@@ -563,6 +593,7 @@ function WebGLRenderer( parameters = {} ) {
563
593
 
564
594
  _canvas.removeEventListener( 'webglcontextlost', onContextLost, false );
565
595
  _canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );
596
+ _canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );
566
597
 
567
598
  renderLists.dispose();
568
599
  renderStates.dispose();
@@ -623,6 +654,12 @@ function WebGLRenderer( parameters = {} ) {
623
654
 
624
655
  }
625
656
 
657
+ function onContextCreationError( event ) {
658
+
659
+ console.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );
660
+
661
+ }
662
+
626
663
  function onMaterialDispose( event ) {
627
664
 
628
665
  const material = event.target;
@@ -885,7 +922,7 @@ function WebGLRenderer( parameters = {} ) {
885
922
  const animation = new WebGLAnimation();
886
923
  animation.setAnimationLoop( onAnimationFrame );
887
924
 
888
- if ( typeof window !== 'undefined' ) animation.setContext( window );
925
+ if ( typeof self !== 'undefined' ) animation.setContext( self );
889
926
 
890
927
  this.setAnimationLoop = function ( callback ) {
891
928
 
@@ -1015,20 +1052,11 @@ function WebGLRenderer( parameters = {} ) {
1015
1052
 
1016
1053
  if ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );
1017
1054
 
1018
- // Ensure depth buffer writing is enabled so it can be cleared on next render
1019
-
1020
- state.buffers.depth.setTest( true );
1021
- state.buffers.depth.setMask( true );
1022
- state.buffers.color.setMask( true );
1023
-
1024
- state.setPolygonOffset( false );
1025
-
1026
1055
  if ( xr.enabled && xr.submitFrame ) {
1027
1056
 
1028
1057
  xr.submitFrame();
1029
1058
 
1030
1059
  }
1031
-
1032
1060
  // _gl.finish();
1033
1061
 
1034
1062
  bindingStates.resetDefaultState();
@@ -1191,27 +1219,45 @@ function WebGLRenderer( parameters = {} ) {
1191
1219
  if ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );
1192
1220
  if ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );
1193
1221
 
1222
+ // Ensure depth buffer writing is enabled so it can be cleared on next render
1223
+
1224
+ state.buffers.depth.setTest( true );
1225
+ state.buffers.depth.setMask( true );
1226
+ state.buffers.color.setMask( true );
1227
+
1228
+ state.setPolygonOffset( false );
1229
+
1194
1230
  }
1195
1231
 
1196
1232
  function renderTransmissionPass( opaqueObjects, scene, camera ) {
1197
1233
 
1198
- if ( _transmissionRenderTarget === null ) {
1234
+ const isWebGL2 = capabilities.isWebGL2;
1199
1235
 
1200
- const needsAntialias = _antialias === true && capabilities.isWebGL2 === true;
1201
- const renderTargetType = needsAntialias ? WebGLMultisampleRenderTarget : WebGLRenderTarget;
1236
+ if ( _transmissionRenderTarget === null ) {
1202
1237
 
1203
- _transmissionRenderTarget = new renderTargetType( 1024, 1024, {
1238
+ _transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {
1204
1239
  generateMipmaps: true,
1205
- type: utils.convert( HalfFloatType ) !== null ? HalfFloatType : UnsignedByteType,
1240
+ type: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,
1206
1241
  minFilter: LinearMipmapLinearFilter,
1207
- magFilter: NearestFilter,
1208
- wrapS: ClampToEdgeWrapping,
1209
- wrapT: ClampToEdgeWrapping,
1210
- useRenderToTexture: extensions.has( 'WEBGL_multisampled_render_to_texture' )
1242
+ samples: ( isWebGL2 && _antialias === true ) ? 4 : 0
1211
1243
  } );
1212
1244
 
1213
1245
  }
1214
1246
 
1247
+ _this.getDrawingBufferSize( _vector2 );
1248
+
1249
+ if ( isWebGL2 ) {
1250
+
1251
+ _transmissionRenderTarget.setSize( _vector2.x, _vector2.y );
1252
+
1253
+ } else {
1254
+
1255
+ _transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );
1256
+
1257
+ }
1258
+
1259
+ //
1260
+
1215
1261
  const currentRenderTarget = _this.getRenderTarget();
1216
1262
  _this.setRenderTarget( _transmissionRenderTarget );
1217
1263
  _this.clear();
@@ -1409,6 +1455,7 @@ function WebGLRenderer( parameters = {} ) {
1409
1455
  materialProperties.skinning = parameters.skinning;
1410
1456
  materialProperties.morphTargets = parameters.morphTargets;
1411
1457
  materialProperties.morphNormals = parameters.morphNormals;
1458
+ materialProperties.morphColors = parameters.morphColors;
1412
1459
  materialProperties.morphTargetsCount = parameters.morphTargetsCount;
1413
1460
  materialProperties.numClippingPlanes = parameters.numClippingPlanes;
1414
1461
  materialProperties.numIntersection = parameters.numClipIntersection;
@@ -1426,15 +1473,18 @@ function WebGLRenderer( parameters = {} ) {
1426
1473
 
1427
1474
  const fog = scene.fog;
1428
1475
  const environment = material.isMeshStandardMaterial ? scene.environment : null;
1429
- const encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;
1476
+ const encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.encoding : LinearEncoding );
1430
1477
  const envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );
1431
1478
  const vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;
1432
1479
  const vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;
1433
1480
  const morphTargets = !! geometry.morphAttributes.position;
1434
1481
  const morphNormals = !! geometry.morphAttributes.normal;
1435
- const morphTargetsCount = !! geometry.morphAttributes.position ? geometry.morphAttributes.position.length : 0;
1482
+ const morphColors = !! geometry.morphAttributes.color;
1436
1483
  const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;
1437
1484
 
1485
+ const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
1486
+ const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
1487
+
1438
1488
  const materialProperties = properties.get( material );
1439
1489
  const lights = currentRenderState.state.lights;
1440
1490
 
@@ -1489,7 +1539,7 @@ function WebGLRenderer( parameters = {} ) {
1489
1539
 
1490
1540
  needsProgramChange = true;
1491
1541
 
1492
- } else if ( material.fog && materialProperties.fog !== fog ) {
1542
+ } else if ( material.fog === true && materialProperties.fog !== fog ) {
1493
1543
 
1494
1544
  needsProgramChange = true;
1495
1545
 
@@ -1515,6 +1565,10 @@ function WebGLRenderer( parameters = {} ) {
1515
1565
 
1516
1566
  needsProgramChange = true;
1517
1567
 
1568
+ } else if ( materialProperties.morphColors !== morphColors ) {
1569
+
1570
+ needsProgramChange = true;
1571
+
1518
1572
  } else if ( materialProperties.toneMapping !== toneMapping ) {
1519
1573
 
1520
1574
  needsProgramChange = true;
@@ -1657,7 +1711,7 @@ function WebGLRenderer( parameters = {} ) {
1657
1711
 
1658
1712
  } else {
1659
1713
 
1660
- p_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );
1714
+ console.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );
1661
1715
 
1662
1716
  }
1663
1717
 
@@ -1665,7 +1719,9 @@ function WebGLRenderer( parameters = {} ) {
1665
1719
 
1666
1720
  }
1667
1721
 
1668
- if ( !! geometry && ( geometry.morphAttributes.position !== undefined || geometry.morphAttributes.normal !== undefined ) ) {
1722
+ const morphAttributes = geometry.morphAttributes;
1723
+
1724
+ if ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {
1669
1725
 
1670
1726
  morphtargets.update( object, geometry, material, program );
1671
1727
 
@@ -1700,7 +1756,7 @@ function WebGLRenderer( parameters = {} ) {
1700
1756
 
1701
1757
  // refresh uniforms common to several materials
1702
1758
 
1703
- if ( fog && material.fog ) {
1759
+ if ( fog && material.fog === true ) {
1704
1760
 
1705
1761
  materials.refreshFogUniforms( m_uniforms, fog );
1706
1762
 
@@ -1821,11 +1877,10 @@ function WebGLRenderer( parameters = {} ) {
1821
1877
 
1822
1878
  // The multisample_render_to_texture extension doesn't work properly if there
1823
1879
  // are midframe flushes and an external depth buffer. Disable use of the extension.
1824
- if ( renderTarget.useRenderToTexture ) {
1880
+ if ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {
1825
1881
 
1826
- console.warn( 'render-to-texture extension was disabled because an external texture was provided' );
1827
- renderTarget.useRenderToTexture = false;
1828
- renderTarget.useRenderbuffer = true;
1882
+ console.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );
1883
+ renderTargetProperties.__useRenderToTexture = false;
1829
1884
 
1830
1885
  }
1831
1886
 
@@ -1848,6 +1903,7 @@ function WebGLRenderer( parameters = {} ) {
1848
1903
  _currentRenderTarget = renderTarget;
1849
1904
  _currentActiveCubeFace = activeCubeFace;
1850
1905
  _currentActiveMipmapLevel = activeMipmapLevel;
1906
+
1851
1907
  let useDefaultFramebuffer = true;
1852
1908
 
1853
1909
  if ( renderTarget ) {
@@ -1881,7 +1937,7 @@ function WebGLRenderer( parameters = {} ) {
1881
1937
 
1882
1938
  const texture = renderTarget.texture;
1883
1939
 
1884
- if ( texture.isDataTexture3D || texture.isDataTexture2DArray ) {
1940
+ if ( texture.isData3DTexture || texture.isDataArrayTexture ) {
1885
1941
 
1886
1942
  isRenderTarget3D = true;
1887
1943
 
@@ -1894,7 +1950,7 @@ function WebGLRenderer( parameters = {} ) {
1894
1950
  framebuffer = __webglFramebuffer[ activeCubeFace ];
1895
1951
  isCube = true;
1896
1952
 
1897
- } else if ( renderTarget.useRenderbuffer ) {
1953
+ } else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {
1898
1954
 
1899
1955
  framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;
1900
1956
 
@@ -1920,67 +1976,7 @@ function WebGLRenderer( parameters = {} ) {
1920
1976
 
1921
1977
  if ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {
1922
1978
 
1923
- let needsUpdate = false;
1924
-
1925
- if ( renderTarget ) {
1926
-
1927
- if ( renderTarget.isWebGLMultipleRenderTargets ) {
1928
-
1929
- const textures = renderTarget.texture;
1930
-
1931
- if ( _currentDrawBuffers.length !== textures.length || _currentDrawBuffers[ 0 ] !== _gl.COLOR_ATTACHMENT0 ) {
1932
-
1933
- for ( let i = 0, il = textures.length; i < il; i ++ ) {
1934
-
1935
- _currentDrawBuffers[ i ] = _gl.COLOR_ATTACHMENT0 + i;
1936
-
1937
- }
1938
-
1939
- _currentDrawBuffers.length = textures.length;
1940
-
1941
- needsUpdate = true;
1942
-
1943
- }
1944
-
1945
- } else {
1946
-
1947
- if ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== _gl.COLOR_ATTACHMENT0 ) {
1948
-
1949
- _currentDrawBuffers[ 0 ] = _gl.COLOR_ATTACHMENT0;
1950
- _currentDrawBuffers.length = 1;
1951
-
1952
- needsUpdate = true;
1953
-
1954
- }
1955
-
1956
- }
1957
-
1958
- } else {
1959
-
1960
- if ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== _gl.BACK ) {
1961
-
1962
- _currentDrawBuffers[ 0 ] = _gl.BACK;
1963
- _currentDrawBuffers.length = 1;
1964
-
1965
- needsUpdate = true;
1966
-
1967
- }
1968
-
1969
- }
1970
-
1971
- if ( needsUpdate ) {
1972
-
1973
- if ( capabilities.isWebGL2 ) {
1974
-
1975
- _gl.drawBuffers( _currentDrawBuffers );
1976
-
1977
- } else {
1978
-
1979
- extensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( _currentDrawBuffers );
1980
-
1981
- }
1982
-
1983
- }
1979
+ state.drawBuffers( renderTarget, framebuffer );
1984
1980
 
1985
1981
  }
1986
1982
 
@@ -2050,19 +2046,11 @@ function WebGLRenderer( parameters = {} ) {
2050
2046
 
2051
2047
  }
2052
2048
 
2053
- if ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {
2054
-
2055
- // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)
2056
-
2057
- if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
2058
-
2059
- _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );
2060
-
2061
- }
2049
+ // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)
2062
2050
 
2063
- } else {
2051
+ if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
2064
2052
 
2065
- console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );
2053
+ _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );
2066
2054
 
2067
2055
  }
2068
2056
 
@@ -2081,13 +2069,6 @@ function WebGLRenderer( parameters = {} ) {
2081
2069
 
2082
2070
  this.copyFramebufferToTexture = function ( position, texture, level = 0 ) {
2083
2071
 
2084
- if ( texture.isFramebufferTexture !== true ) {
2085
-
2086
- console.error( 'THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.' );
2087
- return;
2088
-
2089
- }
2090
-
2091
2072
  const levelScale = Math.pow( 2, - level );
2092
2073
  const width = Math.floor( texture.image.width * levelScale );
2093
2074
  const height = Math.floor( texture.image.height * levelScale );
@@ -2156,12 +2137,12 @@ function WebGLRenderer( parameters = {} ) {
2156
2137
  const glType = utils.convert( dstTexture.type );
2157
2138
  let glTarget;
2158
2139
 
2159
- if ( dstTexture.isDataTexture3D ) {
2140
+ if ( dstTexture.isData3DTexture ) {
2160
2141
 
2161
2142
  textures.setTexture3D( dstTexture, 0 );
2162
2143
  glTarget = _gl.TEXTURE_3D;
2163
2144
 
2164
- } else if ( dstTexture.isDataTexture2DArray ) {
2145
+ } else if ( dstTexture.isDataArrayTexture ) {
2165
2146
 
2166
2147
  textures.setTexture2DArray( dstTexture, 0 );
2167
2148
  glTarget = _gl.TEXTURE_2D_ARRAY;
@@ -2191,7 +2172,7 @@ function WebGLRenderer( parameters = {} ) {
2191
2172
  _gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, sourceBox.min.y );
2192
2173
  _gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, sourceBox.min.z );
2193
2174
 
2194
- if ( srcTexture.isDataTexture || srcTexture.isDataTexture3D ) {
2175
+ if ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {
2195
2176
 
2196
2177
  _gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );
2197
2178
 
@@ -2250,6 +2231,4 @@ function WebGLRenderer( parameters = {} ) {
2250
2231
 
2251
2232
  }
2252
2233
 
2253
- WebGLRenderer.prototype.isWebGLRenderer = true;
2254
-
2255
2234
  export { WebGLRenderer };
@@ -19,6 +19,27 @@ vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {
19
19
 
20
20
  } // validated
21
21
 
22
+ float F_Schlick( const in float f0, const in float f90, const in float dotVH ) {
23
+
24
+ // Original approximation by Christophe Schlick '94
25
+ // float fresnel = pow( 1.0 - dotVH, 5.0 );
26
+
27
+ // Optimized variant (presented by Epic at SIGGRAPH '13)
28
+ // https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
29
+ float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
30
+
31
+ return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
32
+
33
+ } // validated
34
+
35
+ vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {
36
+ float x = clamp( 1.0 - dotVH, 0.0, 1.0 );
37
+ float x2 = x * x;
38
+ float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );
39
+
40
+ return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );
41
+ }
42
+
22
43
  // Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2
23
44
  // https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf
24
45
  float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {
@@ -67,6 +88,31 @@ vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 norm
67
88
 
68
89
  }
69
90
 
91
+ #ifdef USE_IRIDESCENCE
92
+
93
+ vec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {
94
+
95
+ float alpha = pow2( roughness ); // UE4's roughness
96
+
97
+ vec3 halfDir = normalize( lightDir + viewDir );
98
+
99
+ float dotNL = saturate( dot( normal, lightDir ) );
100
+ float dotNV = saturate( dot( normal, viewDir ) );
101
+ float dotNH = saturate( dot( normal, halfDir ) );
102
+ float dotVH = saturate( dot( viewDir, halfDir ) );
103
+
104
+ vec3 F = mix(F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence);
105
+
106
+ float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
107
+
108
+ float D = D_GGX( alpha, dotNH );
109
+
110
+ return F * ( V * D );
111
+
112
+ }
113
+
114
+ #endif
115
+
70
116
  // Rect Area Light
71
117
 
72
118
  // Real-Time Polygonal-Light Shading with Linearly Transformed Cosines
@@ -13,6 +13,7 @@ export default /* glsl */`
13
13
  #define whiteComplement( a ) ( 1.0 - saturate( a ) )
14
14
 
15
15
  float pow2( const in float x ) { return x*x; }
16
+ vec3 pow2( const in vec3 x ) { return x*x; }
16
17
  float pow3( const in float x ) { return x*x*x; }
17
18
  float pow4( const in float x ) { float x2 = x*x; return x2*x2; }
18
19
  float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }
@@ -1,9 +1,7 @@
1
1
  export default /* glsl */`
2
2
  #ifdef ENVMAP_TYPE_CUBE_UV
3
3
 
4
- #define cubeUV_maxMipLevel 8.0
5
4
  #define cubeUV_minMipLevel 4.0
6
- #define cubeUV_maxTileSize 256.0
7
5
  #define cubeUV_minTileSize 16.0
8
6
 
9
7
  // These shader functions convert between the UV coordinates of a single face of
@@ -87,9 +85,7 @@ export default /* glsl */`
87
85
 
88
86
  float faceSize = exp2( mipInt );
89
87
 
90
- float texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );
91
-
92
- vec2 uv = getUV( direction, face ) * ( faceSize - 1.0 ) + 0.5;
88
+ vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;
93
89
 
94
90
  if ( face > 2.0 ) {
95
91
 
@@ -101,19 +97,22 @@ export default /* glsl */`
101
97
 
102
98
  uv.x += face * faceSize;
103
99
 
104
- if ( mipInt < cubeUV_maxMipLevel ) {
100
+ uv.x += filterInt * 3.0 * cubeUV_minTileSize;
105
101
 
106
- uv.y += 2.0 * cubeUV_maxTileSize;
102
+ uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );
107
103
 
108
- }
104
+ uv.x *= CUBEUV_TEXEL_WIDTH;
105
+ uv.y *= CUBEUV_TEXEL_HEIGHT;
106
+
107
+ #ifdef texture2DGradEXT
109
108
 
110
- uv.y += filterInt * 2.0 * cubeUV_minTileSize;
109
+ return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; // disable anisotropic filtering
111
110
 
112
- uv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );
111
+ #else
113
112
 
114
- uv *= texelSize;
113
+ return texture2D( envMap, uv ).rgb;
115
114
 
116
- return texture2D( envMap, uv ).rgb;
115
+ #endif
117
116
 
118
117
  }
119
118
 
@@ -166,7 +165,7 @@ export default /* glsl */`
166
165
 
167
166
  vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {
168
167
 
169
- float mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );
168
+ float mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP );
170
169
 
171
170
  float mipF = fract( mip );
172
171
 
@@ -9,7 +9,7 @@ export default /* glsl */`
9
9
  //Shift the individual colors differently, thus making it even harder to see the dithering pattern
10
10
  vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );
11
11
 
12
- //modify shift acording to grid position.
12
+ //modify shift according to grid position.
13
13
  dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );
14
14
 
15
15
  //shift the color by dither_shift
@@ -3,8 +3,6 @@ export default /* glsl */`
3
3
 
4
4
  vec4 emissiveColor = texture2D( emissiveMap, vUv );
5
5
 
6
- emissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;
7
-
8
6
  totalEmissiveRadiance *= emissiveColor.rgb;
9
7
 
10
8
  #endif
@@ -4,10 +4,6 @@ vec4 LinearToLinear( in vec4 value ) {
4
4
  return value;
5
5
  }
6
6
 
7
- vec4 sRGBToLinear( in vec4 value ) {
8
- 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.a );
9
- }
10
-
11
7
  vec4 LinearTosRGB( in vec4 value ) {
12
8
  return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
13
9
  }
@@ -38,8 +38,6 @@ export default /* glsl */`
38
38
 
39
39
  vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
40
40
 
41
- envColor = envMapTexelToLinear( envColor );
42
-
43
41
  #elif defined( ENVMAP_TYPE_CUBE_UV )
44
42
 
45
43
  vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );