super-three 0.137.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 (703) hide show
  1. package/README.md +23 -25
  2. package/build/three.cjs +3721 -4964
  3. package/build/three.js +3723 -4966
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +5705 -7216
  6. package/examples/js/animation/CCDIKSolver.js +3 -2
  7. package/examples/js/animation/MMDPhysics.js +2 -2
  8. package/examples/js/controls/ArcballControls.js +3 -1
  9. package/examples/js/controls/PointerLockControls.js +3 -2
  10. package/examples/js/controls/TrackballControls.js +1 -4
  11. package/examples/js/controls/TransformControls.js +5 -6
  12. package/examples/js/controls/experimental/CameraControls.js +2 -2
  13. package/examples/js/csm/CSMFrustum.js +1 -1
  14. package/examples/js/csm/CSMShader.js +51 -35
  15. package/examples/js/curves/CurveExtras.js +14 -18
  16. package/examples/js/effects/AnaglyphEffect.js +7 -4
  17. package/examples/js/effects/AsciiEffect.js +10 -29
  18. package/examples/js/exporters/ColladaExporter.js +29 -7
  19. package/examples/js/exporters/EXRExporter.js +458 -0
  20. package/examples/js/exporters/GLTFExporter.js +213 -128
  21. package/examples/js/exporters/OBJExporter.js +12 -18
  22. package/examples/js/exporters/PLYExporter.js +15 -20
  23. package/examples/js/exporters/USDZExporter.js +13 -0
  24. package/examples/js/geometries/DecalGeometry.js +0 -7
  25. package/examples/js/geometries/LightningStrike.js +2 -2
  26. package/examples/js/geometries/ParametricGeometries.js +3 -3
  27. package/examples/js/helpers/OctreeHelper.js +74 -0
  28. package/examples/js/helpers/VertexNormalsHelper.js +4 -23
  29. package/examples/js/helpers/VertexTangentsHelper.js +3 -13
  30. package/examples/js/helpers/ViewHelper.js +266 -0
  31. package/examples/js/interactive/HTMLMesh.js +235 -40
  32. package/examples/js/interactive/SelectionHelper.js +1 -1
  33. package/examples/js/libs/opentype.min.js +1 -118
  34. package/examples/js/lines/Line2.js +1 -2
  35. package/examples/js/lines/LineGeometry.js +10 -21
  36. package/examples/js/lines/LineMaterial.js +2 -3
  37. package/examples/js/lines/LineSegments2.js +214 -140
  38. package/examples/js/lines/LineSegmentsGeometry.js +3 -14
  39. package/examples/js/lines/Wireframe.js +2 -3
  40. package/examples/js/lines/WireframeGeometry2.js +1 -2
  41. package/examples/js/loaders/3MFLoader.js +21 -17
  42. package/examples/js/loaders/AMFLoader.js +1 -1
  43. package/examples/js/loaders/ColladaLoader.js +33 -12
  44. package/examples/js/loaders/DDSLoader.js +23 -30
  45. package/examples/js/loaders/EXRLoader.js +269 -266
  46. package/examples/js/loaders/FBXLoader.js +11 -0
  47. package/examples/js/loaders/FontLoader.js +1 -2
  48. package/examples/js/loaders/GCodeLoader.js +0 -1
  49. package/examples/js/loaders/GLTFLoader.js +249 -60
  50. package/examples/js/loaders/KMZLoader.js +1 -1
  51. package/examples/js/loaders/KTX2Loader.js +1 -9
  52. package/examples/js/loaders/LDrawLoader.js +3 -11
  53. package/examples/js/loaders/LUT3dlLoader.js +1 -1
  54. package/examples/js/loaders/LUTCubeLoader.js +1 -1
  55. package/examples/js/loaders/LWOLoader.js +4 -2
  56. package/examples/js/loaders/LogLuvLoader.js +1 -2
  57. package/examples/js/loaders/MMDLoader.js +18 -4
  58. package/examples/js/loaders/NRRDLoader.js +1 -1
  59. package/examples/js/loaders/OBJLoader.js +9 -5
  60. package/examples/js/loaders/PCDLoader.js +22 -13
  61. package/examples/js/loaders/PDBLoader.js +11 -11
  62. package/examples/js/loaders/PLYLoader.js +5 -1
  63. package/examples/js/loaders/RGBELoader.js +3 -11
  64. package/examples/js/loaders/RGBMLoader.js +12 -15
  65. package/examples/js/loaders/SVGLoader.js +16 -9
  66. package/examples/js/loaders/VOXLoader.js +3 -4
  67. package/examples/js/loaders/VTKLoader.js +260 -295
  68. package/examples/js/loaders/lwo/LWO2Parser.js +4 -4
  69. package/examples/js/loaders/lwo/LWO3Parser.js +4 -4
  70. package/examples/js/math/ConvexHull.js +6 -15
  71. package/examples/js/math/Lut.js +27 -26
  72. package/examples/js/misc/MorphAnimMesh.js +2 -2
  73. package/examples/js/misc/ProgressiveLightMap.js +1 -1
  74. package/examples/js/misc/Volume.js +37 -46
  75. package/examples/js/misc/VolumeSlice.js +21 -21
  76. package/examples/js/modifiers/EdgeSplitModifier.js +0 -7
  77. package/examples/js/modifiers/SimplifyModifier.js +1 -8
  78. package/examples/js/modifiers/TessellateModifier.js +0 -7
  79. package/examples/js/objects/Lensflare.js +2 -2
  80. package/examples/js/objects/LightningStorm.js +4 -5
  81. package/examples/js/objects/MarchingCubes.js +6 -11
  82. package/examples/js/objects/Reflector.js +10 -4
  83. package/examples/js/objects/ReflectorForSSRPass.js +1 -1
  84. package/examples/js/objects/Refractor.js +10 -4
  85. package/examples/js/objects/ShadowMesh.js +1 -2
  86. package/examples/js/objects/Sky.js +1 -1
  87. package/examples/js/objects/Water.js +1 -2
  88. package/examples/js/objects/Water2.js +1 -1
  89. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +6 -10
  90. package/examples/js/postprocessing/AfterimagePass.js +2 -6
  91. package/examples/js/postprocessing/BloomPass.js +50 -19
  92. package/examples/js/postprocessing/DotScreenPass.js +1 -1
  93. package/examples/js/postprocessing/EffectComposer.js +1 -6
  94. package/examples/js/postprocessing/LUTPass.js +2 -2
  95. package/examples/js/postprocessing/OutlinePass.js +7 -12
  96. package/examples/js/postprocessing/SAOPass.js +2 -7
  97. package/examples/js/postprocessing/SSAARenderPass.js +1 -6
  98. package/examples/js/postprocessing/SSRPass.js +3 -8
  99. package/examples/js/postprocessing/TAARenderPass.js +4 -4
  100. package/examples/js/postprocessing/UnrealBloomPass.js +3 -12
  101. package/examples/js/renderers/CSS2DRenderer.js +20 -25
  102. package/examples/js/renderers/CSS3DRenderer.js +6 -7
  103. package/examples/js/renderers/Projector.js +97 -124
  104. package/examples/js/renderers/SVGRenderer.js +3 -4
  105. package/examples/js/shaders/BlendShader.js +2 -1
  106. package/examples/js/shaders/CopyShader.js +4 -3
  107. package/examples/js/shaders/FXAAShader.js +239 -1069
  108. package/examples/js/shaders/FreiChenShader.js +1 -1
  109. package/examples/js/shaders/HorizontalBlurShader.js +1 -1
  110. package/examples/js/shaders/HorizontalTiltShiftShader.js +1 -1
  111. package/examples/js/shaders/SSRShader.js +3 -3
  112. package/examples/js/shaders/ToneMapShader.js +1 -1
  113. package/examples/js/utils/BufferGeometryUtils.js +282 -22
  114. package/examples/js/utils/GPUStatsPanel.js +1 -1
  115. package/examples/js/utils/LDrawUtils.js +6 -6
  116. package/examples/js/utils/SceneUtils.js +59 -0
  117. package/examples/js/utils/SkeletonUtils.js +1 -1
  118. package/examples/js/utils/UVsDebug.js +23 -33
  119. package/examples/jsm/animation/CCDIKSolver.js +3 -9
  120. package/examples/jsm/animation/MMDPhysics.js +1 -1
  121. package/examples/jsm/capabilities/WebGPU.js +6 -0
  122. package/examples/jsm/controls/ArcballControls.js +3 -1
  123. package/examples/jsm/controls/PointerLockControls.js +4 -2
  124. package/examples/jsm/controls/TrackballControls.js +1 -4
  125. package/examples/jsm/controls/TransformControls.js +6 -6
  126. package/examples/jsm/controls/experimental/CameraControls.js +2 -2
  127. package/examples/jsm/csm/CSMFrustum.js +1 -1
  128. package/examples/jsm/csm/CSMShader.js +51 -35
  129. package/examples/jsm/curves/CurveExtras.js +15 -17
  130. package/examples/jsm/effects/AnaglyphEffect.js +4 -4
  131. package/examples/jsm/effects/AsciiEffect.js +9 -22
  132. package/examples/jsm/exporters/ColladaExporter.js +31 -6
  133. package/examples/jsm/exporters/EXRExporter.js +507 -0
  134. package/examples/jsm/exporters/GLTFExporter.js +231 -125
  135. package/examples/jsm/exporters/KTX2Exporter.js +281 -0
  136. package/examples/jsm/exporters/OBJExporter.js +11 -18
  137. package/examples/jsm/exporters/PLYExporter.js +23 -21
  138. package/examples/jsm/exporters/USDZExporter.js +12 -0
  139. package/examples/jsm/geometries/DecalGeometry.js +0 -7
  140. package/examples/jsm/geometries/LightningStrike.js +2 -2
  141. package/examples/jsm/geometries/ParametricGeometries.js +3 -3
  142. package/examples/jsm/helpers/OctreeHelper.js +58 -0
  143. package/examples/jsm/helpers/VertexNormalsHelper.js +4 -25
  144. package/examples/jsm/helpers/VertexTangentsHelper.js +3 -15
  145. package/examples/jsm/helpers/ViewHelper.js +295 -0
  146. package/examples/jsm/interactive/HTMLMesh.js +252 -34
  147. package/examples/jsm/interactive/SelectionHelper.js +1 -1
  148. package/examples/jsm/libs/flow.module.js +30 -27
  149. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  150. package/examples/jsm/libs/mikktspace.module.js +128 -0
  151. package/examples/jsm/libs/opentype.module.js +14568 -0
  152. package/examples/jsm/lines/Line2.js +2 -2
  153. package/examples/jsm/lines/LineGeometry.js +11 -19
  154. package/examples/jsm/lines/LineMaterial.js +3 -3
  155. package/examples/jsm/lines/LineSegments2.js +210 -145
  156. package/examples/jsm/lines/LineSegmentsGeometry.js +3 -12
  157. package/examples/jsm/lines/Wireframe.js +3 -3
  158. package/examples/jsm/lines/WireframeGeometry2.js +2 -2
  159. package/examples/jsm/loaders/3DMLoader.js +3 -2
  160. package/examples/jsm/loaders/3MFLoader.js +21 -17
  161. package/examples/jsm/loaders/AMFLoader.js +1 -1
  162. package/examples/jsm/loaders/ColladaLoader.js +40 -12
  163. package/examples/jsm/loaders/DDSLoader.js +21 -28
  164. package/examples/jsm/loaders/EXRLoader.js +268 -265
  165. package/examples/jsm/loaders/FBXLoader.js +11 -0
  166. package/examples/jsm/loaders/FontLoader.js +2 -2
  167. package/examples/jsm/loaders/GCodeLoader.js +0 -1
  168. package/examples/jsm/loaders/GLTFLoader.js +263 -66
  169. package/examples/jsm/loaders/KMZLoader.js +1 -1
  170. package/examples/jsm/loaders/KTX2Loader.js +1 -10
  171. package/examples/jsm/loaders/LDrawLoader.js +4 -11
  172. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  173. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  174. package/examples/jsm/loaders/LWOLoader.js +5 -3
  175. package/examples/jsm/loaders/LogLuvLoader.js +2 -2
  176. package/examples/jsm/loaders/MMDLoader.js +21 -3
  177. package/examples/jsm/loaders/NRRDLoader.js +1 -2
  178. package/examples/jsm/loaders/OBJLoader.js +11 -7
  179. package/examples/jsm/loaders/PCDLoader.js +23 -15
  180. package/examples/jsm/loaders/PDBLoader.js +11 -11
  181. package/examples/jsm/loaders/PLYLoader.js +10 -2
  182. package/examples/jsm/loaders/RGBELoader.js +4 -12
  183. package/examples/jsm/loaders/RGBMLoader.js +14 -11
  184. package/examples/jsm/loaders/SVGLoader.js +17 -9
  185. package/examples/jsm/loaders/TTFLoader.js +1 -1
  186. package/examples/jsm/loaders/VOXLoader.js +5 -5
  187. package/examples/jsm/loaders/VTKLoader.js +256 -284
  188. package/examples/jsm/loaders/ifc/web-ifc-api.js +9 -8
  189. package/examples/jsm/loaders/lwo/LWO2Parser.js +4 -4
  190. package/examples/jsm/loaders/lwo/LWO3Parser.js +4 -4
  191. package/examples/jsm/math/ConvexHull.js +6 -15
  192. package/examples/jsm/math/Lut.js +35 -25
  193. package/examples/jsm/misc/MorphAnimMesh.js +2 -2
  194. package/examples/jsm/misc/ProgressiveLightMap.js +1 -1
  195. package/examples/jsm/misc/Volume.js +37 -44
  196. package/examples/jsm/misc/VolumeSlice.js +21 -21
  197. package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -7
  198. package/examples/jsm/modifiers/SimplifyModifier.js +1 -8
  199. package/examples/jsm/modifiers/TessellateModifier.js +0 -7
  200. package/examples/jsm/node-editor/NodeEditor.js +78 -9
  201. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
  202. package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
  203. package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
  204. package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
  205. package/examples/jsm/node-editor/core/BaseNode.js +17 -11
  206. package/examples/jsm/node-editor/core/DataFile.js +59 -0
  207. package/examples/jsm/node-editor/core/FileEditor.js +20 -0
  208. package/examples/jsm/node-editor/core/FileURLEditor.js +29 -0
  209. package/examples/jsm/node-editor/display/BlendEditor.js +3 -3
  210. package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
  211. package/examples/jsm/node-editor/examples/matcap.json +1 -0
  212. package/examples/jsm/node-editor/inputs/ColorEditor.js +7 -6
  213. package/examples/jsm/node-editor/inputs/FloatEditor.js +2 -2
  214. package/examples/jsm/node-editor/inputs/SliderEditor.js +2 -2
  215. package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
  216. package/examples/jsm/node-editor/inputs/Vector2Editor.js +3 -2
  217. package/examples/jsm/node-editor/inputs/Vector3Editor.js +3 -2
  218. package/examples/jsm/node-editor/inputs/Vector4Editor.js +4 -3
  219. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +3 -3
  220. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +16 -11
  221. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +15 -5
  222. package/examples/jsm/node-editor/math/AngleEditor.js +3 -2
  223. package/examples/jsm/node-editor/math/DotEditor.js +2 -2
  224. package/examples/jsm/node-editor/math/InvertEditor.js +4 -4
  225. package/examples/jsm/node-editor/math/LimiterEditor.js +22 -9
  226. package/examples/jsm/node-editor/math/NormalizeEditor.js +3 -2
  227. package/examples/jsm/node-editor/math/OperatorEditor.js +20 -8
  228. package/examples/jsm/node-editor/math/PowerEditor.js +17 -8
  229. package/examples/jsm/node-editor/math/TrigonometryEditor.js +3 -2
  230. package/examples/jsm/node-editor/procedural/CheckerEditor.js +4 -4
  231. package/examples/jsm/node-editor/utils/JoinEditor.js +2 -2
  232. package/examples/jsm/node-editor/utils/OscillatorEditor.js +2 -2
  233. package/examples/jsm/node-editor/utils/PreviewEditor.js +166 -0
  234. package/examples/jsm/node-editor/utils/SplitEditor.js +2 -2
  235. package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
  236. package/examples/jsm/nodes/Nodes.js +283 -94
  237. package/examples/jsm/nodes/accessors/BufferNode.js +24 -0
  238. package/examples/jsm/nodes/accessors/CameraNode.js +27 -196
  239. package/examples/jsm/nodes/accessors/CubeTextureNode.js +103 -0
  240. package/examples/jsm/nodes/accessors/InstanceNode.js +58 -0
  241. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialNode.js +49 -11
  242. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialReferenceNode.js +0 -0
  243. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelNode.js +8 -0
  244. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelViewProjectionNode.js +0 -0
  245. package/examples/jsm/nodes/accessors/NormalNode.js +39 -99
  246. package/examples/jsm/{renderers/nodes → nodes}/accessors/Object3DNode.js +34 -17
  247. package/examples/jsm/{renderers/nodes → nodes}/accessors/PointUVNode.js +2 -2
  248. package/examples/jsm/nodes/accessors/PositionNode.js +41 -110
  249. package/examples/jsm/nodes/accessors/ReferenceNode.js +65 -0
  250. package/examples/jsm/nodes/accessors/ReflectNode.js +34 -121
  251. package/examples/jsm/nodes/accessors/SkinningNode.js +102 -0
  252. package/examples/jsm/nodes/accessors/StorageBufferNode.js +21 -0
  253. package/examples/jsm/nodes/accessors/TextureNode.js +100 -0
  254. package/examples/jsm/nodes/accessors/UVNode.js +17 -43
  255. package/examples/jsm/nodes/accessors/UserDataNode.js +23 -0
  256. package/examples/jsm/nodes/core/ArrayUniformNode.js +23 -0
  257. package/examples/jsm/nodes/core/AttributeNode.js +33 -30
  258. package/examples/jsm/{renderers/nodes → nodes}/core/BypassNode.js +2 -2
  259. package/examples/jsm/{renderers/nodes → nodes}/core/CodeNode.js +2 -30
  260. package/examples/jsm/nodes/core/ConstNode.js +10 -106
  261. package/examples/jsm/{renderers/nodes → nodes}/core/ContextNode.js +17 -3
  262. package/examples/jsm/nodes/core/ExpressionNode.js +24 -7
  263. package/examples/jsm/nodes/core/FunctionCallNode.js +26 -67
  264. package/examples/jsm/nodes/core/FunctionNode.js +43 -216
  265. package/examples/jsm/nodes/core/InputNode.js +28 -60
  266. package/examples/jsm/nodes/core/InstanceIndexNode.js +21 -0
  267. package/examples/jsm/nodes/core/Node.js +228 -94
  268. package/examples/jsm/{renderers/nodes → nodes}/core/NodeAttribute.js +2 -2
  269. package/examples/jsm/nodes/core/NodeBuilder.js +388 -560
  270. package/examples/jsm/{renderers/nodes → nodes}/core/NodeCode.js +0 -0
  271. package/examples/jsm/nodes/core/NodeFrame.js +30 -23
  272. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunction.js +0 -0
  273. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunctionInput.js +0 -0
  274. package/examples/jsm/{renderers/nodes → nodes}/core/NodeKeywords.js +0 -0
  275. package/examples/jsm/{renderers/nodes → nodes}/core/NodeParser.js +0 -0
  276. package/examples/jsm/nodes/core/NodeUniform.js +8 -6
  277. package/examples/jsm/nodes/core/NodeUtils.js +69 -37
  278. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVar.js +2 -2
  279. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVary.js +2 -2
  280. package/examples/jsm/{renderers/nodes → nodes}/core/PropertyNode.js +0 -0
  281. package/examples/jsm/nodes/core/TempNode.js +20 -112
  282. package/examples/jsm/nodes/core/UniformNode.js +46 -0
  283. package/examples/jsm/nodes/core/VarNode.js +58 -27
  284. package/examples/jsm/{renderers/nodes → nodes}/core/VaryNode.js +0 -0
  285. package/examples/jsm/{renderers/nodes → nodes}/core/constants.js +0 -0
  286. package/examples/jsm/{renderers/nodes → nodes}/display/ColorSpaceNode.js +10 -11
  287. package/examples/jsm/nodes/display/FrontFacingNode.js +21 -0
  288. package/examples/jsm/nodes/display/NormalMapNode.js +86 -0
  289. package/examples/jsm/nodes/display/ToneMappingNode.js +51 -0
  290. package/examples/jsm/nodes/fog/FogNode.js +31 -0
  291. package/examples/jsm/nodes/fog/FogRangeNode.js +27 -0
  292. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +33 -0
  293. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  294. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +27 -0
  295. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
  296. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +18 -0
  297. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
  298. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +94 -0
  299. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +22 -0
  300. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +12 -0
  301. package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
  302. package/examples/jsm/nodes/gpgpu/ComputeNode.js +63 -0
  303. package/examples/jsm/nodes/lighting/AONode.js +25 -0
  304. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +37 -0
  305. package/examples/jsm/nodes/lighting/EnvironmentNode.js +65 -0
  306. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +50 -0
  307. package/examples/jsm/nodes/lighting/LightingContextNode.js +75 -0
  308. package/examples/jsm/nodes/lighting/LightingNode.js +19 -0
  309. package/examples/jsm/nodes/lighting/LightsNode.js +120 -0
  310. package/examples/jsm/nodes/lighting/PunctualLightNode.js +68 -0
  311. package/examples/jsm/nodes/loaders/NodeLoader.js +107 -0
  312. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +42 -0
  313. package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
  314. package/examples/jsm/{renderers/nodes → nodes}/materials/LineBasicNodeMaterial.js +11 -4
  315. package/examples/jsm/nodes/materials/Materials.js +65 -0
  316. package/examples/jsm/{renderers/nodes → nodes}/materials/MeshBasicNodeMaterial.js +13 -4
  317. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +162 -22
  318. package/examples/jsm/nodes/materials/NodeMaterial.js +128 -113
  319. package/examples/jsm/{renderers/nodes → nodes}/materials/PointsNodeMaterial.js +13 -4
  320. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +84 -16
  321. package/examples/jsm/nodes/math/CondNode.js +26 -95
  322. package/examples/jsm/nodes/math/MathNode.js +164 -187
  323. package/examples/jsm/nodes/math/OperatorNode.js +161 -41
  324. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeFunction.js +2 -2
  325. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeParser.js +0 -0
  326. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeFunction.js +20 -5
  327. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeParser.js +0 -0
  328. package/examples/jsm/nodes/procedural/CheckerNode.js +16 -57
  329. package/examples/jsm/nodes/shadernode/ShaderNode.js +262 -0
  330. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +274 -0
  331. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +106 -0
  332. package/examples/jsm/{renderers/nodes → nodes}/utils/ArrayElementNode.js +3 -3
  333. package/examples/jsm/{renderers/nodes → nodes}/utils/ConvertNode.js +11 -3
  334. package/examples/jsm/nodes/utils/JoinNode.js +17 -89
  335. package/examples/jsm/nodes/utils/MatcapUVNode.js +25 -0
  336. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +32 -0
  337. package/examples/jsm/{renderers/nodes → nodes}/utils/OscNode.js +18 -2
  338. package/examples/jsm/{renderers/nodes → nodes}/utils/SplitNode.js +16 -0
  339. package/examples/jsm/{renderers/nodes → nodes}/utils/SpriteSheetUVNode.js +3 -3
  340. package/examples/jsm/nodes/utils/TimerNode.js +30 -65
  341. package/examples/jsm/objects/Lensflare.js +2 -2
  342. package/examples/jsm/objects/LightningStorm.js +4 -4
  343. package/examples/jsm/objects/MarchingCubes.js +5 -9
  344. package/examples/jsm/objects/Reflector.js +8 -4
  345. package/examples/jsm/objects/ReflectorForSSRPass.js +2 -2
  346. package/examples/jsm/objects/Refractor.js +8 -4
  347. package/examples/jsm/objects/ShadowMesh.js +2 -2
  348. package/examples/jsm/objects/Sky.js +2 -2
  349. package/examples/jsm/objects/Water.js +2 -2
  350. package/examples/jsm/objects/Water2.js +2 -2
  351. package/examples/jsm/offscreen/jank.js +5 -5
  352. package/examples/jsm/offscreen/offscreen.js +1 -1
  353. package/examples/jsm/offscreen/scene.js +11 -11
  354. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +5 -7
  355. package/examples/jsm/postprocessing/AfterimagePass.js +0 -10
  356. package/examples/jsm/postprocessing/BloomPass.js +48 -20
  357. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  358. package/examples/jsm/postprocessing/EffectComposer.js +1 -9
  359. package/examples/jsm/postprocessing/LUTPass.js +2 -2
  360. package/examples/jsm/postprocessing/OutlinePass.js +7 -11
  361. package/examples/jsm/postprocessing/SAOPass.js +2 -9
  362. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -4
  363. package/examples/jsm/postprocessing/SSRPass.js +3 -9
  364. package/examples/jsm/postprocessing/TAARenderPass.js +4 -4
  365. package/examples/jsm/postprocessing/UnrealBloomPass.js +3 -8
  366. package/examples/jsm/renderers/CSS2DRenderer.js +21 -24
  367. package/examples/jsm/renderers/CSS3DRenderer.js +7 -8
  368. package/examples/jsm/renderers/Projector.js +101 -128
  369. package/examples/jsm/renderers/SVGRenderer.js +4 -4
  370. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +1 -1
  371. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +127 -23
  372. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +14 -3
  373. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +5 -5
  374. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +4 -4
  375. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +16 -10
  376. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +8 -7
  377. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +43 -0
  378. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +14 -7
  379. package/examples/jsm/renderers/webgpu/WebGPUInfo.js +1 -1
  380. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -6
  381. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +20 -20
  382. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +2 -1
  383. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +66 -0
  384. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -24
  385. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +14 -14
  386. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +2 -2
  387. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +5 -8
  388. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +23 -20
  389. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +37 -18
  390. package/examples/jsm/renderers/webgpu/WebGPUUniform.js +14 -14
  391. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +5 -32
  392. package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +2 -2
  393. package/examples/jsm/renderers/webgpu/constants.js +3 -2
  394. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +276 -284
  395. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +20 -2
  396. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +24 -14
  397. package/examples/jsm/shaders/BlendShader.js +2 -1
  398. package/examples/jsm/shaders/CopyShader.js +4 -3
  399. package/examples/jsm/shaders/FXAAShader.js +219 -1051
  400. package/examples/jsm/shaders/FreiChenShader.js +1 -1
  401. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -1
  402. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +1 -1
  403. package/examples/jsm/shaders/SSRShader.js +3 -3
  404. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  405. package/examples/jsm/utils/BufferGeometryUtils.js +292 -22
  406. package/examples/jsm/utils/GPUStatsPanel.js +1 -1
  407. package/examples/jsm/utils/LDrawUtils.js +6 -6
  408. package/examples/jsm/utils/SceneUtils.js +76 -2
  409. package/examples/jsm/utils/SkeletonUtils.js +1 -1
  410. package/examples/jsm/utils/UVsDebug.js +23 -32
  411. package/examples/jsm/webxr/ARButton.js +14 -4
  412. package/examples/jsm/webxr/OculusHandPointerModel.js +3 -3
  413. package/examples/jsm/webxr/Text2D.js +1 -1
  414. package/examples/jsm/webxr/VRButton.js +15 -1
  415. package/examples/jsm/webxr/XRHandMeshModel.js +3 -7
  416. package/examples/jsm/webxr/XRHandModelFactory.js +3 -0
  417. package/package.json +37 -19
  418. package/src/Three.Legacy.js +41 -1912
  419. package/src/Three.js +6 -3
  420. package/src/animation/AnimationClip.js +1 -1
  421. package/src/animation/AnimationMixer.js +5 -3
  422. package/src/animation/AnimationObjectGroup.js +2 -2
  423. package/src/animation/PropertyBinding.js +8 -18
  424. package/src/audio/PositionalAudio.js +8 -0
  425. package/src/cameras/ArrayCamera.js +2 -3
  426. package/src/cameras/Camera.js +2 -2
  427. package/src/cameras/CubeCamera.js +6 -1
  428. package/src/cameras/OrthographicCamera.js +2 -2
  429. package/src/cameras/PerspectiveCamera.js +2 -2
  430. package/src/constants.js +7 -2
  431. package/src/core/BufferAttribute.js +7 -12
  432. package/src/core/BufferGeometry.js +4 -4
  433. package/src/core/GLBufferAttribute.js +2 -2
  434. package/src/core/InstancedBufferAttribute.js +2 -2
  435. package/src/core/InstancedBufferGeometry.js +2 -2
  436. package/src/core/InstancedInterleavedBuffer.js +2 -2
  437. package/src/core/InterleavedBuffer.js +2 -2
  438. package/src/core/InterleavedBufferAttribute.js +5 -11
  439. package/src/core/Object3D.js +6 -3
  440. package/src/core/Raycaster.js +2 -2
  441. package/src/extras/DataUtils.js +127 -40
  442. package/src/extras/Earcut.js +2 -2
  443. package/src/extras/PMREMGenerator.js +132 -104
  444. package/src/extras/core/CurvePath.js +3 -3
  445. package/src/extras/core/ShapePath.js +5 -6
  446. package/src/extras/curves/ArcCurve.js +2 -2
  447. package/src/extras/curves/CatmullRomCurve3.js +2 -2
  448. package/src/extras/curves/CubicBezierCurve.js +2 -2
  449. package/src/extras/curves/CubicBezierCurve3.js +2 -2
  450. package/src/extras/curves/EllipseCurve.js +2 -2
  451. package/src/extras/curves/LineCurve.js +2 -2
  452. package/src/extras/curves/LineCurve3.js +2 -1
  453. package/src/extras/curves/QuadraticBezierCurve.js +2 -2
  454. package/src/extras/curves/QuadraticBezierCurve3.js +2 -2
  455. package/src/extras/curves/SplineCurve.js +2 -2
  456. package/src/geometries/CapsuleGeometry.js +33 -0
  457. package/src/geometries/ExtrudeGeometry.js +2 -0
  458. package/src/geometries/Geometries.js +1 -0
  459. package/src/geometries/TorusKnotGeometry.js +2 -2
  460. package/src/geometries/WireframeGeometry.js +3 -2
  461. package/src/helpers/BoxHelper.js +2 -2
  462. package/src/helpers/PointLightHelper.js +1 -1
  463. package/src/helpers/SkeletonHelper.js +3 -2
  464. package/src/lights/AmbientLight.js +2 -2
  465. package/src/lights/AmbientLightProbe.js +2 -2
  466. package/src/lights/DirectionalLight.js +2 -2
  467. package/src/lights/DirectionalLightShadow.js +2 -2
  468. package/src/lights/HemisphereLight.js +4 -4
  469. package/src/lights/HemisphereLightProbe.js +2 -2
  470. package/src/lights/Light.js +4 -4
  471. package/src/lights/LightProbe.js +2 -2
  472. package/src/lights/PointLight.js +4 -4
  473. package/src/lights/PointLightShadow.js +2 -2
  474. package/src/lights/RectAreaLight.js +2 -2
  475. package/src/lights/SpotLight.js +4 -4
  476. package/src/lights/SpotLightShadow.js +2 -2
  477. package/src/loaders/FileLoader.js +3 -1
  478. package/src/loaders/ImageBitmapLoader.js +2 -2
  479. package/src/loaders/ImageLoader.js +1 -1
  480. package/src/loaders/LoaderUtils.js +1 -1
  481. package/src/loaders/MaterialLoader.js +8 -3
  482. package/src/loaders/ObjectLoader.js +23 -25
  483. package/src/materials/LineBasicMaterial.js +6 -13
  484. package/src/materials/LineDashedMaterial.js +2 -15
  485. package/src/materials/Material.js +48 -14
  486. package/src/materials/Materials.js +66 -18
  487. package/src/materials/MeshBasicMaterial.js +6 -31
  488. package/src/materials/MeshDepthMaterial.js +2 -22
  489. package/src/materials/MeshDistanceMaterial.js +2 -22
  490. package/src/materials/MeshLambertMaterial.js +6 -34
  491. package/src/materials/MeshMatcapMaterial.js +6 -28
  492. package/src/materials/MeshNormalMaterial.js +2 -26
  493. package/src/materials/MeshPhongMaterial.js +6 -48
  494. package/src/materials/MeshPhysicalMaterial.js +32 -35
  495. package/src/materials/MeshStandardMaterial.js +6 -54
  496. package/src/materials/MeshToonMaterial.js +6 -38
  497. package/src/materials/PointsMaterial.js +6 -15
  498. package/src/materials/RawShaderMaterial.js +2 -2
  499. package/src/materials/ShaderMaterial.js +3 -17
  500. package/src/materials/ShadowMaterial.js +6 -8
  501. package/src/materials/SpriteMaterial.js +6 -12
  502. package/src/math/Box2.js +2 -2
  503. package/src/math/Box3.js +5 -5
  504. package/src/math/Color.js +84 -35
  505. package/src/math/ColorManagement.js +74 -0
  506. package/src/math/Euler.js +16 -14
  507. package/src/math/Interpolant.js +4 -9
  508. package/src/math/MathUtils.js +76 -7
  509. package/src/math/Matrix3.js +2 -2
  510. package/src/math/Matrix4.js +2 -3
  511. package/src/math/Plane.js +2 -2
  512. package/src/math/Quaternion.js +11 -2
  513. package/src/math/Spherical.js +1 -1
  514. package/src/math/SphericalHarmonics3.js +2 -2
  515. package/src/math/Vector2.js +2 -2
  516. package/src/math/Vector3.js +12 -3
  517. package/src/math/Vector4.js +2 -2
  518. package/src/math/interpolants/DiscreteInterpolant.js +1 -1
  519. package/src/objects/Bone.js +2 -2
  520. package/src/objects/Group.js +2 -2
  521. package/src/objects/InstancedMesh.js +4 -4
  522. package/src/objects/Line.js +76 -107
  523. package/src/objects/LineLoop.js +2 -2
  524. package/src/objects/LineSegments.js +15 -23
  525. package/src/objects/Mesh.js +82 -104
  526. package/src/objects/Points.js +32 -54
  527. package/src/objects/SkinnedMesh.js +5 -8
  528. package/src/objects/Sprite.js +4 -4
  529. package/src/renderers/WebGL3DRenderTarget.js +22 -0
  530. package/src/renderers/WebGLArrayRenderTarget.js +22 -0
  531. package/src/renderers/WebGLCubeRenderTarget.js +7 -14
  532. package/src/renderers/WebGLMultipleRenderTargets.js +8 -5
  533. package/src/renderers/WebGLRenderTarget.js +16 -18
  534. package/src/renderers/WebGLRenderer.js +108 -63
  535. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +46 -0
  536. package/src/renderers/shaders/ShaderChunk/common.glsl.js +1 -0
  537. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +12 -13
  538. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +1 -1
  539. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -19
  540. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +107 -0
  541. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  542. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -6
  543. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +25 -0
  544. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +0 -6
  545. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +23 -0
  546. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +43 -5
  547. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
  548. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +1 -1
  549. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +7 -7
  550. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +1 -9
  551. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +16 -31
  552. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +1 -1
  553. package/src/renderers/shaders/ShaderChunk.js +6 -0
  554. package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
  555. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  556. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +3 -2
  557. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
  558. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
  559. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +6 -0
  560. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
  561. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +10 -0
  562. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  563. package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  564. package/src/renderers/shaders/ShaderLib.js +6 -0
  565. package/src/renderers/shaders/UniformsLib.js +2 -2
  566. package/src/renderers/webgl/WebGLAttributes.js +6 -6
  567. package/src/renderers/webgl/WebGLBackground.js +3 -0
  568. package/src/renderers/webgl/WebGLBindingStates.js +57 -29
  569. package/src/renderers/webgl/WebGLLights.js +0 -1
  570. package/src/renderers/webgl/WebGLMaterials.js +72 -187
  571. package/src/renderers/webgl/WebGLMorphtargets.js +47 -23
  572. package/src/renderers/webgl/WebGLProgram.js +57 -19
  573. package/src/renderers/webgl/WebGLPrograms.js +75 -86
  574. package/src/renderers/webgl/WebGLShaderCache.js +4 -3
  575. package/src/renderers/webgl/WebGLShadowMap.js +6 -8
  576. package/src/renderers/webgl/WebGLTextures.js +567 -380
  577. package/src/renderers/webgl/WebGLUniforms.js +79 -80
  578. package/src/renderers/webgl/WebGLUtils.js +12 -1
  579. package/src/renderers/webxr/WebXRManager.js +60 -45
  580. package/src/scenes/Fog.js +2 -2
  581. package/src/scenes/FogExp2.js +2 -2
  582. package/src/scenes/Scene.js +2 -2
  583. package/src/textures/CanvasTexture.js +2 -2
  584. package/src/textures/CompressedTexture.js +2 -2
  585. package/src/textures/CubeTexture.js +2 -2
  586. package/src/textures/{DataTexture3D.js → Data3DTexture.js} +4 -4
  587. package/src/textures/{DataTexture2DArray.js → DataArrayTexture.js} +4 -4
  588. package/src/textures/DataTexture.js +2 -5
  589. package/src/textures/DepthTexture.js +5 -5
  590. package/src/textures/FramebufferTexture.js +2 -2
  591. package/src/textures/Source.js +123 -0
  592. package/src/textures/Texture.js +27 -97
  593. package/src/textures/VideoTexture.js +2 -2
  594. package/examples/js/csm/Frustum.js +0 -133
  595. package/examples/js/deprecated/Geometry.js +0 -1656
  596. package/examples/js/loaders/VRMLoader.js +0 -72
  597. package/examples/js/objects/ReflectorRTT.js +0 -16
  598. package/examples/js/postprocessing/SSRrPass.js +0 -494
  599. package/examples/js/shaders/SSRrShader.js +0 -336
  600. package/examples/jsm/deprecated/Geometry.js +0 -1869
  601. package/examples/jsm/libs/opentype.module.min.js +0 -119
  602. package/examples/jsm/loaders/NodeMaterialLoader.js +0 -263
  603. package/examples/jsm/loaders/VRMLoader.js +0 -78
  604. package/examples/jsm/nodes/accessors/ColorsNode.js +0 -56
  605. package/examples/jsm/nodes/accessors/LightNode.js +0 -60
  606. package/examples/jsm/nodes/accessors/ResolutionNode.js +0 -64
  607. package/examples/jsm/nodes/accessors/ScreenUVNode.js +0 -64
  608. package/examples/jsm/nodes/core/NodeLib.js +0 -64
  609. package/examples/jsm/nodes/core/StructNode.js +0 -106
  610. package/examples/jsm/nodes/effects/BlurNode.js +0 -171
  611. package/examples/jsm/nodes/effects/ColorAdjustmentNode.js +0 -140
  612. package/examples/jsm/nodes/effects/LuminanceNode.js +0 -75
  613. package/examples/jsm/nodes/inputs/BoolNode.js +0 -51
  614. package/examples/jsm/nodes/inputs/ColorNode.js +0 -58
  615. package/examples/jsm/nodes/inputs/CubeTextureNode.js +0 -108
  616. package/examples/jsm/nodes/inputs/FloatNode.js +0 -51
  617. package/examples/jsm/nodes/inputs/IntNode.js +0 -51
  618. package/examples/jsm/nodes/inputs/Matrix3Node.js +0 -63
  619. package/examples/jsm/nodes/inputs/Matrix4Node.js +0 -63
  620. package/examples/jsm/nodes/inputs/PropertyNode.js +0 -47
  621. package/examples/jsm/nodes/inputs/RTTNode.js +0 -157
  622. package/examples/jsm/nodes/inputs/ReflectorNode.js +0 -90
  623. package/examples/jsm/nodes/inputs/ScreenNode.js +0 -28
  624. package/examples/jsm/nodes/inputs/TextureNode.js +0 -116
  625. package/examples/jsm/nodes/inputs/Vector2Node.js +0 -57
  626. package/examples/jsm/nodes/inputs/Vector3Node.js +0 -58
  627. package/examples/jsm/nodes/inputs/Vector4Node.js +0 -59
  628. package/examples/jsm/nodes/materials/BasicNodeMaterial.js +0 -26
  629. package/examples/jsm/nodes/materials/PhongNodeMaterial.js +0 -36
  630. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +0 -40
  631. package/examples/jsm/nodes/materials/nodes/BasicNode.js +0 -154
  632. package/examples/jsm/nodes/materials/nodes/MeshStandardNode.js +0 -116
  633. package/examples/jsm/nodes/materials/nodes/PhongNode.js +0 -409
  634. package/examples/jsm/nodes/materials/nodes/RawNode.js +0 -62
  635. package/examples/jsm/nodes/materials/nodes/SpriteNode.js +0 -236
  636. package/examples/jsm/nodes/materials/nodes/StandardNode.js +0 -609
  637. package/examples/jsm/nodes/misc/BumpMapNode.js +0 -163
  638. package/examples/jsm/nodes/misc/NormalMapNode.js +0 -138
  639. package/examples/jsm/nodes/misc/TextureCubeNode.js +0 -86
  640. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +0 -280
  641. package/examples/jsm/nodes/postprocessing/NodePass.js +0 -93
  642. package/examples/jsm/nodes/postprocessing/NodePostProcessing.js +0 -148
  643. package/examples/jsm/nodes/procedural/Fractal3DNode.js +0 -104
  644. package/examples/jsm/nodes/procedural/Noise2DNode.js +0 -149
  645. package/examples/jsm/nodes/procedural/Noise3DNode.js +0 -141
  646. package/examples/jsm/nodes/utils/BypassNode.js +0 -85
  647. package/examples/jsm/nodes/utils/ColorSpaceNode.js +0 -145
  648. package/examples/jsm/nodes/utils/MaxMIPLevelNode.js +0 -56
  649. package/examples/jsm/nodes/utils/RemapNode.js +0 -155
  650. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -101
  651. package/examples/jsm/nodes/utils/SubSlotNode.js +0 -77
  652. package/examples/jsm/nodes/utils/SwitchNode.js +0 -103
  653. package/examples/jsm/nodes/utils/UVTransformNode.js +0 -66
  654. package/examples/jsm/nodes/utils/VelocityNode.js +0 -170
  655. package/examples/jsm/objects/ReflectorRTT.js +0 -15
  656. package/examples/jsm/postprocessing/SSRrPass.js +0 -579
  657. package/examples/jsm/renderers/nodes/Nodes.js +0 -166
  658. package/examples/jsm/renderers/nodes/ShaderNode.js +0 -373
  659. package/examples/jsm/renderers/nodes/accessors/CameraNode.js +0 -68
  660. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +0 -63
  661. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +0 -67
  662. package/examples/jsm/renderers/nodes/accessors/ReferenceNode.js +0 -91
  663. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +0 -107
  664. package/examples/jsm/renderers/nodes/accessors/UVNode.js +0 -25
  665. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +0 -23
  666. package/examples/jsm/renderers/nodes/core/AttributeNode.js +0 -54
  667. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +0 -32
  668. package/examples/jsm/renderers/nodes/core/FunctionCallNode.js +0 -67
  669. package/examples/jsm/renderers/nodes/core/FunctionNode.js +0 -87
  670. package/examples/jsm/renderers/nodes/core/InputNode.js +0 -66
  671. package/examples/jsm/renderers/nodes/core/Node.js +0 -104
  672. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +0 -634
  673. package/examples/jsm/renderers/nodes/core/NodeFrame.js +0 -59
  674. package/examples/jsm/renderers/nodes/core/NodeUniform.js +0 -28
  675. package/examples/jsm/renderers/nodes/core/TempNode.js +0 -43
  676. package/examples/jsm/renderers/nodes/core/VarNode.js +0 -51
  677. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +0 -87
  678. package/examples/jsm/renderers/nodes/functions/BSDFs.js +0 -122
  679. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +0 -27
  680. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +0 -25
  681. package/examples/jsm/renderers/nodes/inputs/ColorNode.js +0 -18
  682. package/examples/jsm/renderers/nodes/inputs/FloatNode.js +0 -17
  683. package/examples/jsm/renderers/nodes/inputs/IntNode.js +0 -17
  684. package/examples/jsm/renderers/nodes/inputs/Matrix3Node.js +0 -18
  685. package/examples/jsm/renderers/nodes/inputs/Matrix4Node.js +0 -18
  686. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +0 -74
  687. package/examples/jsm/renderers/nodes/inputs/Vector2Node.js +0 -18
  688. package/examples/jsm/renderers/nodes/inputs/Vector3Node.js +0 -18
  689. package/examples/jsm/renderers/nodes/inputs/Vector4Node.js +0 -18
  690. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +0 -59
  691. package/examples/jsm/renderers/nodes/lights/LightNode.js +0 -79
  692. package/examples/jsm/renderers/nodes/lights/LightsNode.js +0 -44
  693. package/examples/jsm/renderers/nodes/materials/Materials.js +0 -11
  694. package/examples/jsm/renderers/nodes/materials/MeshStandardNodeMaterial.js +0 -63
  695. package/examples/jsm/renderers/nodes/math/CondNode.js +0 -60
  696. package/examples/jsm/renderers/nodes/math/MathNode.js +0 -242
  697. package/examples/jsm/renderers/nodes/math/OperatorNode.js +0 -174
  698. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +0 -36
  699. package/examples/jsm/renderers/nodes/utils/JoinNode.js +0 -42
  700. package/examples/jsm/renderers/nodes/utils/TimerNode.js +0 -47
  701. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +0 -20
  702. package/examples/jsm/shaders/SSRrShader.js +0 -307
  703. package/src/renderers/WebGLMultisampleRenderTarget.js +0 -33
@@ -2,6 +2,7 @@ import { EventDispatcher } from '../core/EventDispatcher.js';
2
2
  import { Texture } from '../textures/Texture.js';
3
3
  import { LinearFilter } from '../constants.js';
4
4
  import { Vector4 } from '../math/Vector4.js';
5
+ import { Source } from '../textures/Source.js';
5
6
 
6
7
  /*
7
8
  In options, we can specify:
@@ -14,6 +15,8 @@ class WebGLRenderTarget extends EventDispatcher {
14
15
 
15
16
  super();
16
17
 
18
+ this.isWebGLRenderTarget = true;
19
+
17
20
  this.width = width;
18
21
  this.height = height;
19
22
  this.depth = 1;
@@ -23,30 +26,22 @@ class WebGLRenderTarget extends EventDispatcher {
23
26
 
24
27
  this.viewport = new Vector4( 0, 0, width, height );
25
28
 
26
- this.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );
27
- this.texture.isRenderTargetTexture = true;
29
+ const image = { width: width, height: height, depth: 1 };
28
30
 
29
- this.texture.image = { width: width, height: height, depth: 1 };
31
+ this.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );
32
+ this.texture.isRenderTargetTexture = true;
30
33
 
34
+ this.texture.flipY = false;
31
35
  this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;
32
36
  this.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;
33
37
  this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;
34
38
 
35
39
  this.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;
36
40
  this.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;
37
- this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;
38
-
39
- }
40
41
 
41
- setTexture( texture ) {
42
-
43
- texture.image = {
44
- width: this.width,
45
- height: this.height,
46
- depth: this.depth
47
- };
42
+ this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;
48
43
 
49
- this.texture = texture;
44
+ this.samples = options.samples !== undefined ? options.samples : 0;
50
45
 
51
46
  }
52
47
 
@@ -86,14 +81,19 @@ class WebGLRenderTarget extends EventDispatcher {
86
81
  this.viewport.copy( source.viewport );
87
82
 
88
83
  this.texture = source.texture.clone();
84
+ this.texture.isRenderTargetTexture = true;
89
85
 
90
86
  // ensure image object is not shared, see #20328
91
87
 
92
- this.texture.image = Object.assign( {}, source.texture.image );
88
+ const image = Object.assign( {}, source.texture.image );
89
+ this.texture.source = new Source( image );
93
90
 
94
91
  this.depthBuffer = source.depthBuffer;
95
92
  this.stencilBuffer = source.stencilBuffer;
96
- this.depthTexture = source.depthTexture;
93
+
94
+ if ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();
95
+
96
+ this.samples = source.samples;
97
97
 
98
98
  return this;
99
99
 
@@ -107,6 +107,4 @@ class WebGLRenderTarget extends EventDispatcher {
107
107
 
108
108
  }
109
109
 
110
- WebGLRenderTarget.prototype.isWebGLRenderTarget = true;
111
-
112
110
  export { WebGLRenderTarget };
@@ -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;
@@ -171,6 +205,7 @@ function WebGLRenderer( parameters = {} ) {
171
205
 
172
206
  const _projScreenMatrix = new Matrix4();
173
207
 
208
+ const _vector2 = new Vector2();
174
209
  const _vector3 = new Vector3();
175
210
 
176
211
  const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };
@@ -218,6 +253,7 @@ function WebGLRenderer( parameters = {} ) {
218
253
  // event listeners must be registered before WebGL context is created, see #12753
219
254
  _canvas.addEventListener( 'webglcontextlost', onContextLost, false );
220
255
  _canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );
256
+ _canvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );
221
257
 
222
258
  if ( _gl === null ) {
223
259
 
@@ -298,7 +334,7 @@ function WebGLRenderer( parameters = {} ) {
298
334
  morphtargets = new WebGLMorphtargets( _gl, capabilities, textures );
299
335
  clipping = new WebGLClipping( properties );
300
336
  programCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );
301
- materials = new WebGLMaterials( properties );
337
+ materials = new WebGLMaterials( _this, properties );
302
338
  renderLists = new WebGLRenderLists();
303
339
  renderStates = new WebGLRenderStates( extensions, capabilities );
304
340
  background = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );
@@ -521,13 +557,13 @@ function WebGLRenderer( parameters = {} ) {
521
557
 
522
558
  };
523
559
 
524
- this.clear = function ( color, depth, stencil ) {
560
+ this.clear = function ( color = true, depth = true, stencil = true ) {
525
561
 
526
562
  let bits = 0;
527
563
 
528
- if ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;
529
- if ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;
530
- 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;
531
567
 
532
568
  _gl.clear( bits );
533
569
 
@@ -557,6 +593,7 @@ function WebGLRenderer( parameters = {} ) {
557
593
 
558
594
  _canvas.removeEventListener( 'webglcontextlost', onContextLost, false );
559
595
  _canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );
596
+ _canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );
560
597
 
561
598
  renderLists.dispose();
562
599
  renderStates.dispose();
@@ -617,6 +654,12 @@ function WebGLRenderer( parameters = {} ) {
617
654
 
618
655
  }
619
656
 
657
+ function onContextCreationError( event ) {
658
+
659
+ console.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );
660
+
661
+ }
662
+
620
663
  function onMaterialDispose( event ) {
621
664
 
622
665
  const material = event.target;
@@ -879,7 +922,7 @@ function WebGLRenderer( parameters = {} ) {
879
922
  const animation = new WebGLAnimation();
880
923
  animation.setAnimationLoop( onAnimationFrame );
881
924
 
882
- if ( typeof window !== 'undefined' ) animation.setContext( window );
925
+ if ( typeof self !== 'undefined' ) animation.setContext( self );
883
926
 
884
927
  this.setAnimationLoop = function ( callback ) {
885
928
 
@@ -1009,20 +1052,11 @@ function WebGLRenderer( parameters = {} ) {
1009
1052
 
1010
1053
  if ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );
1011
1054
 
1012
- // Ensure depth buffer writing is enabled so it can be cleared on next render
1013
-
1014
- state.buffers.depth.setTest( true );
1015
- state.buffers.depth.setMask( true );
1016
- state.buffers.color.setMask( true );
1017
-
1018
- state.setPolygonOffset( false );
1019
-
1020
1055
  if ( xr.enabled && xr.submitFrame ) {
1021
1056
 
1022
1057
  xr.submitFrame();
1023
1058
 
1024
1059
  }
1025
-
1026
1060
  // _gl.finish();
1027
1061
 
1028
1062
  bindingStates.resetDefaultState();
@@ -1185,27 +1219,45 @@ function WebGLRenderer( parameters = {} ) {
1185
1219
  if ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );
1186
1220
  if ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );
1187
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
+
1188
1230
  }
1189
1231
 
1190
1232
  function renderTransmissionPass( opaqueObjects, scene, camera ) {
1191
1233
 
1192
- if ( _transmissionRenderTarget === null ) {
1234
+ const isWebGL2 = capabilities.isWebGL2;
1193
1235
 
1194
- const needsAntialias = _antialias === true && capabilities.isWebGL2 === true;
1195
- const renderTargetType = needsAntialias ? WebGLMultisampleRenderTarget : WebGLRenderTarget;
1236
+ if ( _transmissionRenderTarget === null ) {
1196
1237
 
1197
- _transmissionRenderTarget = new renderTargetType( 1024, 1024, {
1238
+ _transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {
1198
1239
  generateMipmaps: true,
1199
- type: utils.convert( HalfFloatType ) !== null ? HalfFloatType : UnsignedByteType,
1240
+ type: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,
1200
1241
  minFilter: LinearMipmapLinearFilter,
1201
- magFilter: NearestFilter,
1202
- wrapS: ClampToEdgeWrapping,
1203
- wrapT: ClampToEdgeWrapping,
1204
- useRenderToTexture: extensions.has( 'WEBGL_multisampled_render_to_texture' )
1242
+ samples: ( isWebGL2 && _antialias === true ) ? 4 : 0
1205
1243
  } );
1206
1244
 
1207
1245
  }
1208
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
+
1209
1261
  const currentRenderTarget = _this.getRenderTarget();
1210
1262
  _this.setRenderTarget( _transmissionRenderTarget );
1211
1263
  _this.clear();
@@ -1403,6 +1455,7 @@ function WebGLRenderer( parameters = {} ) {
1403
1455
  materialProperties.skinning = parameters.skinning;
1404
1456
  materialProperties.morphTargets = parameters.morphTargets;
1405
1457
  materialProperties.morphNormals = parameters.morphNormals;
1458
+ materialProperties.morphColors = parameters.morphColors;
1406
1459
  materialProperties.morphTargetsCount = parameters.morphTargetsCount;
1407
1460
  materialProperties.numClippingPlanes = parameters.numClippingPlanes;
1408
1461
  materialProperties.numIntersection = parameters.numClipIntersection;
@@ -1426,9 +1479,12 @@ function WebGLRenderer( parameters = {} ) {
1426
1479
  const vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;
1427
1480
  const morphTargets = !! geometry.morphAttributes.position;
1428
1481
  const morphNormals = !! geometry.morphAttributes.normal;
1429
- const morphTargetsCount = !! geometry.morphAttributes.position ? geometry.morphAttributes.position.length : 0;
1482
+ const morphColors = !! geometry.morphAttributes.color;
1430
1483
  const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;
1431
1484
 
1485
+ const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
1486
+ const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
1487
+
1432
1488
  const materialProperties = properties.get( material );
1433
1489
  const lights = currentRenderState.state.lights;
1434
1490
 
@@ -1483,7 +1539,7 @@ function WebGLRenderer( parameters = {} ) {
1483
1539
 
1484
1540
  needsProgramChange = true;
1485
1541
 
1486
- } else if ( material.fog && materialProperties.fog !== fog ) {
1542
+ } else if ( material.fog === true && materialProperties.fog !== fog ) {
1487
1543
 
1488
1544
  needsProgramChange = true;
1489
1545
 
@@ -1509,6 +1565,10 @@ function WebGLRenderer( parameters = {} ) {
1509
1565
 
1510
1566
  needsProgramChange = true;
1511
1567
 
1568
+ } else if ( materialProperties.morphColors !== morphColors ) {
1569
+
1570
+ needsProgramChange = true;
1571
+
1512
1572
  } else if ( materialProperties.toneMapping !== toneMapping ) {
1513
1573
 
1514
1574
  needsProgramChange = true;
@@ -1651,7 +1711,7 @@ function WebGLRenderer( parameters = {} ) {
1651
1711
 
1652
1712
  } else {
1653
1713
 
1654
- 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.' );
1655
1715
 
1656
1716
  }
1657
1717
 
@@ -1659,7 +1719,9 @@ function WebGLRenderer( parameters = {} ) {
1659
1719
 
1660
1720
  }
1661
1721
 
1662
- 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 ) ) {
1663
1725
 
1664
1726
  morphtargets.update( object, geometry, material, program );
1665
1727
 
@@ -1694,7 +1756,7 @@ function WebGLRenderer( parameters = {} ) {
1694
1756
 
1695
1757
  // refresh uniforms common to several materials
1696
1758
 
1697
- if ( fog && material.fog ) {
1759
+ if ( fog && material.fog === true ) {
1698
1760
 
1699
1761
  materials.refreshFogUniforms( m_uniforms, fog );
1700
1762
 
@@ -1815,11 +1877,10 @@ function WebGLRenderer( parameters = {} ) {
1815
1877
 
1816
1878
  // The multisample_render_to_texture extension doesn't work properly if there
1817
1879
  // are midframe flushes and an external depth buffer. Disable use of the extension.
1818
- if ( renderTarget.useRenderToTexture ) {
1880
+ if ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {
1819
1881
 
1820
- console.warn( 'render-to-texture extension was disabled because an external texture was provided' );
1821
- renderTarget.useRenderToTexture = false;
1822
- renderTarget.useRenderbuffer = true;
1882
+ console.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );
1883
+ renderTargetProperties.__useRenderToTexture = false;
1823
1884
 
1824
1885
  }
1825
1886
 
@@ -1842,6 +1903,7 @@ function WebGLRenderer( parameters = {} ) {
1842
1903
  _currentRenderTarget = renderTarget;
1843
1904
  _currentActiveCubeFace = activeCubeFace;
1844
1905
  _currentActiveMipmapLevel = activeMipmapLevel;
1906
+
1845
1907
  let useDefaultFramebuffer = true;
1846
1908
 
1847
1909
  if ( renderTarget ) {
@@ -1875,7 +1937,7 @@ function WebGLRenderer( parameters = {} ) {
1875
1937
 
1876
1938
  const texture = renderTarget.texture;
1877
1939
 
1878
- if ( texture.isDataTexture3D || texture.isDataTexture2DArray ) {
1940
+ if ( texture.isData3DTexture || texture.isDataArrayTexture ) {
1879
1941
 
1880
1942
  isRenderTarget3D = true;
1881
1943
 
@@ -1888,7 +1950,7 @@ function WebGLRenderer( parameters = {} ) {
1888
1950
  framebuffer = __webglFramebuffer[ activeCubeFace ];
1889
1951
  isCube = true;
1890
1952
 
1891
- } else if ( renderTarget.useRenderbuffer ) {
1953
+ } else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {
1892
1954
 
1893
1955
  framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;
1894
1956
 
@@ -1984,19 +2046,11 @@ function WebGLRenderer( parameters = {} ) {
1984
2046
 
1985
2047
  }
1986
2048
 
1987
- if ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {
2049
+ // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)
1988
2050
 
1989
- // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)
2051
+ if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
1990
2052
 
1991
- if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
1992
-
1993
- _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );
1994
-
1995
- }
1996
-
1997
- } else {
1998
-
1999
- 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 );
2000
2054
 
2001
2055
  }
2002
2056
 
@@ -2015,13 +2069,6 @@ function WebGLRenderer( parameters = {} ) {
2015
2069
 
2016
2070
  this.copyFramebufferToTexture = function ( position, texture, level = 0 ) {
2017
2071
 
2018
- if ( texture.isFramebufferTexture !== true ) {
2019
-
2020
- console.error( 'THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.' );
2021
- return;
2022
-
2023
- }
2024
-
2025
2072
  const levelScale = Math.pow( 2, - level );
2026
2073
  const width = Math.floor( texture.image.width * levelScale );
2027
2074
  const height = Math.floor( texture.image.height * levelScale );
@@ -2090,12 +2137,12 @@ function WebGLRenderer( parameters = {} ) {
2090
2137
  const glType = utils.convert( dstTexture.type );
2091
2138
  let glTarget;
2092
2139
 
2093
- if ( dstTexture.isDataTexture3D ) {
2140
+ if ( dstTexture.isData3DTexture ) {
2094
2141
 
2095
2142
  textures.setTexture3D( dstTexture, 0 );
2096
2143
  glTarget = _gl.TEXTURE_3D;
2097
2144
 
2098
- } else if ( dstTexture.isDataTexture2DArray ) {
2145
+ } else if ( dstTexture.isDataArrayTexture ) {
2099
2146
 
2100
2147
  textures.setTexture2DArray( dstTexture, 0 );
2101
2148
  glTarget = _gl.TEXTURE_2D_ARRAY;
@@ -2125,7 +2172,7 @@ function WebGLRenderer( parameters = {} ) {
2125
2172
  _gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, sourceBox.min.y );
2126
2173
  _gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, sourceBox.min.z );
2127
2174
 
2128
- if ( srcTexture.isDataTexture || srcTexture.isDataTexture3D ) {
2175
+ if ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {
2129
2176
 
2130
2177
  _gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );
2131
2178
 
@@ -2184,6 +2231,4 @@ function WebGLRenderer( parameters = {} ) {
2184
2231
 
2185
2232
  }
2186
2233
 
2187
- WebGLRenderer.prototype.isWebGLRenderer = true;
2188
-
2189
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
@@ -1,12 +1,6 @@
1
1
  export default /* glsl */`
2
2
  #if defined( USE_ENVMAP )
3
3
 
4
- #ifdef ENVMAP_MODE_REFRACTION
5
-
6
- uniform float refractionRatio;
7
-
8
- #endif
9
-
10
4
  vec3 getIBLIrradiance( const in vec3 normal ) {
11
5
 
12
6
  #if defined( ENVMAP_TYPE_CUBE_UV )
@@ -29,20 +23,10 @@ export default /* glsl */`
29
23
 
30
24
  #if defined( ENVMAP_TYPE_CUBE_UV )
31
25
 
32
- vec3 reflectVec;
33
-
34
- #ifdef ENVMAP_MODE_REFLECTION
35
-
36
- reflectVec = reflect( - viewDir, normal );
37
-
38
- // Mixing the reflection with the normal is more accurate and keeps rough objects from gathering light from behind their tangent plane.
39
- reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
40
-
41
- #else
42
-
43
- reflectVec = refract( - viewDir, normal, refractionRatio );
26
+ vec3 reflectVec = reflect( - viewDir, normal );
44
27
 
45
- #endif
28
+ // Mixing the reflection with the normal is more accurate and keeps rough objects from gathering light from behind their tangent plane.
29
+ reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
46
30
 
47
31
  reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
48
32