super-three 0.133.4 → 0.136.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/LICENSE +1 -1
  2. package/build/three.js +2285 -1983
  3. package/build/three.min.js +1 -1
  4. package/build/three.module.js +5983 -5358
  5. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  6. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  7. package/examples/fonts/open-sans/open-sans.css +9 -0
  8. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  9. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +3966 -0
  10. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  11. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  12. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  13. package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
  14. package/examples/js/animation/CCDIKSolver.js +0 -1
  15. package/examples/js/animation/MMDPhysics.js +2 -4
  16. package/examples/js/cameras/CinematicCamera.js +2 -7
  17. package/examples/js/controls/ArcballControls.js +99 -72
  18. package/examples/js/controls/DragControls.js +7 -0
  19. package/examples/js/controls/OrbitControls.js +5 -36
  20. package/examples/js/controls/TrackballControls.js +3 -2
  21. package/examples/js/controls/TransformControls.js +24 -1
  22. package/examples/js/csm/CSM.js +2 -2
  23. package/examples/js/csm/CSMFrustum.js +133 -0
  24. package/examples/js/curves/CurveExtras.js +0 -2
  25. package/examples/js/effects/AsciiEffect.js +2 -9
  26. package/examples/js/exporters/GLTFExporter.js +148 -64
  27. package/examples/js/exporters/MMDExporter.js +1 -1
  28. package/examples/js/exporters/USDZExporter.js +45 -26
  29. package/examples/js/geometries/ConvexGeometry.js +1 -1
  30. package/examples/js/geometries/TeapotGeometry.js +0 -1
  31. package/examples/js/interactive/SelectionBox.js +2 -0
  32. package/examples/js/interactive/SelectionHelper.js +22 -7
  33. package/examples/js/lights/RectAreaLightUniformsLib.js +4 -0
  34. package/examples/js/lines/LineMaterial.js +58 -20
  35. package/examples/js/lines/LineSegments2.js +29 -24
  36. package/examples/js/loaders/3DMLoader.js +24 -11
  37. package/examples/js/loaders/3MFLoader.js +2 -2
  38. package/examples/js/loaders/AMFLoader.js +0 -2
  39. package/examples/js/loaders/BasisTextureLoader.js +1 -0
  40. package/examples/js/loaders/ColladaLoader.js +61 -4
  41. package/examples/js/loaders/EXRLoader.js +201 -272
  42. package/examples/js/loaders/FBXLoader.js +4 -5
  43. package/examples/js/loaders/GLTFLoader.js +98 -35
  44. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -10
  45. package/examples/js/loaders/KTX2Loader.js +23 -2
  46. package/examples/js/loaders/KTXLoader.js +1 -1
  47. package/examples/js/loaders/LDrawLoader.js +1169 -901
  48. package/examples/js/loaders/LUT3dlLoader.js +19 -10
  49. package/examples/js/loaders/LUTCubeLoader.js +5 -4
  50. package/examples/js/loaders/LWOLoader.js +8 -6
  51. package/examples/js/loaders/LogLuvLoader.js +766 -0
  52. package/examples/js/loaders/MMDLoader.js +0 -1
  53. package/examples/js/loaders/NRRDLoader.js +9 -2
  54. package/examples/js/loaders/OBJLoader.js +0 -2
  55. package/examples/js/loaders/PLYLoader.js +33 -8
  56. package/examples/js/loaders/RGBELoader.js +8 -22
  57. package/examples/js/loaders/RGBMLoader.js +56 -6
  58. package/examples/js/loaders/SVGLoader.js +12 -6
  59. package/examples/js/loaders/TDSLoader.js +237 -271
  60. package/examples/js/loaders/VOXLoader.js +1 -0
  61. package/examples/js/loaders/VRMLLoader.js +11 -22
  62. package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
  63. package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
  64. package/examples/js/math/ConvexHull.js +7 -13
  65. package/examples/js/math/ImprovedNoise.js +1 -1
  66. package/examples/js/misc/GPUComputationRenderer.js +3 -1
  67. package/examples/js/misc/Volume.js +2 -2
  68. package/examples/js/modifiers/CurveModifier.js +8 -7
  69. package/examples/js/modifiers/EdgeSplitModifier.js +1 -1
  70. package/examples/js/modifiers/SimplifyModifier.js +1 -1
  71. package/examples/js/objects/Lensflare.js +2 -10
  72. package/examples/js/objects/MarchingCubes.js +42 -128
  73. package/examples/js/objects/Reflector.js +8 -13
  74. package/examples/js/objects/ReflectorForSSRPass.js +0 -10
  75. package/examples/js/objects/Refractor.js +8 -13
  76. package/examples/js/objects/Sky.js +1 -1
  77. package/examples/js/objects/Water.js +3 -15
  78. package/examples/js/objects/Water2.js +4 -7
  79. package/examples/js/postprocessing/GlitchPass.js +6 -5
  80. package/examples/js/postprocessing/SMAAPass.js +2 -9
  81. package/examples/js/postprocessing/SSAOPass.js +10 -21
  82. package/examples/js/postprocessing/SavePass.js +1 -5
  83. package/examples/js/renderers/CSS2DRenderer.js +4 -4
  84. package/examples/js/renderers/CSS3DRenderer.js +4 -4
  85. package/examples/js/shaders/ConvolutionShader.js +0 -1
  86. package/examples/js/shaders/DigitalGlitch.js +3 -3
  87. package/examples/js/shaders/FXAAShader.js +1 -1
  88. package/examples/js/shaders/FilmShader.js +1 -1
  89. package/examples/js/shaders/GammaCorrectionShader.js +1 -1
  90. package/examples/js/shaders/HorizontalBlurShader.js +1 -2
  91. package/examples/js/shaders/MMDToonShader.js +0 -1
  92. package/examples/js/shaders/SSAOShader.js +1 -1
  93. package/examples/js/shaders/SSRShader.js +1 -1
  94. package/examples/js/shaders/SSRrShader.js +1 -1
  95. package/examples/js/shaders/VerticalBlurShader.js +1 -2
  96. package/examples/js/utils/GeometryUtils.js +1 -1
  97. package/examples/jsm/animation/CCDIKSolver.js +0 -1
  98. package/examples/jsm/animation/MMDPhysics.js +1 -3
  99. package/examples/jsm/cameras/CinematicCamera.js +2 -5
  100. package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
  101. package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +1 -1
  102. package/examples/jsm/controls/ArcballControls.js +80 -77
  103. package/examples/jsm/controls/DragControls.js +7 -0
  104. package/examples/jsm/controls/OrbitControls.js +9 -51
  105. package/examples/jsm/controls/TrackballControls.js +1 -1
  106. package/examples/jsm/controls/TransformControls.js +24 -1
  107. package/examples/jsm/csm/CSM.js +3 -3
  108. package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
  109. package/examples/jsm/curves/CurveExtras.js +0 -2
  110. package/examples/jsm/effects/AsciiEffect.js +2 -9
  111. package/examples/jsm/exporters/GLTFExporter.js +169 -99
  112. package/examples/jsm/exporters/MMDExporter.js +1 -1
  113. package/examples/jsm/exporters/USDZExporter.js +47 -26
  114. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  115. package/examples/jsm/geometries/TeapotGeometry.js +0 -1
  116. package/examples/jsm/interactive/SelectionBox.js +1 -0
  117. package/examples/jsm/interactive/SelectionHelper.js +19 -7
  118. package/examples/jsm/libs/flow.module.js +3338 -0
  119. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  120. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  121. package/examples/jsm/lights/RectAreaLightUniformsLib.js +7 -0
  122. package/examples/jsm/lines/LineMaterial.js +59 -23
  123. package/examples/jsm/lines/LineSegments2.js +22 -18
  124. package/examples/jsm/loaders/3DMLoader.js +18 -12
  125. package/examples/jsm/loaders/3MFLoader.js +2 -2
  126. package/examples/jsm/loaders/AMFLoader.js +0 -2
  127. package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
  128. package/examples/jsm/loaders/ColladaLoader.js +61 -4
  129. package/examples/jsm/loaders/EXRLoader.js +200 -306
  130. package/examples/jsm/loaders/FBXLoader.js +4 -5
  131. package/examples/jsm/loaders/GLTFLoader.js +102 -40
  132. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -17
  133. package/examples/jsm/loaders/KTX2Loader.js +30 -2
  134. package/examples/jsm/loaders/KTXLoader.js +1 -1
  135. package/examples/jsm/loaders/LDrawLoader.js +1159 -898
  136. package/examples/jsm/loaders/LUT3dlLoader.js +19 -12
  137. package/examples/jsm/loaders/LUTCubeLoader.js +5 -5
  138. package/examples/jsm/loaders/LWOLoader.js +8 -6
  139. package/examples/jsm/loaders/LogLuvLoader.js +606 -0
  140. package/examples/jsm/loaders/MMDLoader.js +0 -1
  141. package/examples/jsm/loaders/NRRDLoader.js +10 -2
  142. package/examples/jsm/loaders/OBJLoader.js +0 -2
  143. package/examples/jsm/loaders/PLYLoader.js +34 -8
  144. package/examples/jsm/loaders/RGBELoader.js +7 -28
  145. package/examples/jsm/loaders/RGBMLoader.js +62 -8
  146. package/examples/jsm/loaders/SVGLoader.js +15 -7
  147. package/examples/jsm/loaders/TDSLoader.js +236 -275
  148. package/examples/jsm/loaders/VOXLoader.js +1 -0
  149. package/examples/jsm/loaders/VRMLLoader.js +11 -23
  150. package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
  151. package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
  152. package/examples/jsm/math/ConvexHull.js +7 -13
  153. package/examples/jsm/math/ImprovedNoise.js +1 -1
  154. package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
  155. package/examples/jsm/misc/Volume.js +2 -2
  156. package/examples/jsm/modifiers/CurveModifier.js +9 -8
  157. package/examples/jsm/modifiers/EdgeSplitModifier.js +1 -1
  158. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  159. package/examples/jsm/node-editor/NodeEditor.js +455 -0
  160. package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
  161. package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
  162. package/examples/jsm/node-editor/accessors/UVEditor.js +26 -0
  163. package/examples/jsm/node-editor/display/BlendEditor.js +43 -0
  164. package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
  165. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
  166. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
  167. package/examples/jsm/node-editor/examples/rim.json +1 -0
  168. package/examples/jsm/node-editor/inputs/ColorEditor.js +91 -0
  169. package/examples/jsm/node-editor/inputs/FloatEditor.js +24 -0
  170. package/examples/jsm/node-editor/inputs/SliderEditor.js +68 -0
  171. package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
  172. package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
  173. package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
  174. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +108 -0
  175. package/examples/jsm/node-editor/math/DotEditor.js +36 -0
  176. package/examples/jsm/node-editor/math/InvertEditor.js +38 -0
  177. package/examples/jsm/node-editor/math/LimiterEditor.js +48 -0
  178. package/examples/jsm/node-editor/math/NormalizeEditor.js +26 -0
  179. package/examples/jsm/node-editor/math/OperatorEditor.js +50 -0
  180. package/examples/jsm/node-editor/math/PowerEditor.js +34 -0
  181. package/examples/jsm/node-editor/math/TrigonometryEditor.js +39 -0
  182. package/examples/jsm/node-editor/procedural/CheckerEditor.js +26 -0
  183. package/examples/jsm/node-editor/utils/OscillatorEditor.js +42 -0
  184. package/examples/jsm/node-editor/utils/TimerEditor.js +57 -0
  185. package/examples/jsm/nodes/core/NodeBuilder.js +2 -2
  186. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
  187. package/examples/jsm/nodes/materials/nodes/StandardNode.js +7 -6
  188. package/examples/jsm/nodes/math/MathNode.js +12 -0
  189. package/examples/jsm/nodes/misc/BumpMapNode.js +1 -1
  190. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +1 -4
  191. package/examples/jsm/nodes/utils/ColorSpaceNode.js +5 -177
  192. package/examples/jsm/objects/Lensflare.js +5 -16
  193. package/examples/jsm/objects/MarchingCubes.js +46 -152
  194. package/examples/jsm/objects/Reflector.js +8 -16
  195. package/examples/jsm/objects/ReflectorForSSRPass.js +0 -12
  196. package/examples/jsm/objects/Refractor.js +8 -16
  197. package/examples/jsm/objects/Sky.js +1 -1
  198. package/examples/jsm/objects/Water.js +3 -18
  199. package/examples/jsm/objects/Water2.js +4 -8
  200. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
  201. package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
  202. package/examples/jsm/postprocessing/BloomPass.js +1 -1
  203. package/examples/jsm/postprocessing/BokehPass.js +1 -1
  204. package/examples/jsm/postprocessing/ClearPass.js +1 -1
  205. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
  206. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  207. package/examples/jsm/postprocessing/EffectComposer.js +3 -3
  208. package/examples/jsm/postprocessing/FilmPass.js +1 -1
  209. package/examples/jsm/postprocessing/GlitchPass.js +10 -7
  210. package/examples/jsm/postprocessing/HalftonePass.js +1 -1
  211. package/examples/jsm/postprocessing/MaskPass.js +1 -1
  212. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  213. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  214. package/examples/jsm/postprocessing/SAOPass.js +2 -2
  215. package/examples/jsm/postprocessing/SMAAPass.js +3 -12
  216. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
  217. package/examples/jsm/postprocessing/SSAOPass.js +15 -26
  218. package/examples/jsm/postprocessing/SSRPass.js +1 -1
  219. package/examples/jsm/postprocessing/SSRrPass.js +1 -1
  220. package/examples/jsm/postprocessing/SavePass.js +2 -4
  221. package/examples/jsm/postprocessing/ShaderPass.js +1 -1
  222. package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
  223. package/examples/jsm/postprocessing/TexturePass.js +1 -1
  224. package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
  225. package/examples/jsm/renderers/CSS2DRenderer.js +5 -4
  226. package/examples/jsm/renderers/CSS3DRenderer.js +5 -4
  227. package/examples/jsm/renderers/nodes/Nodes.js +17 -13
  228. package/examples/jsm/renderers/nodes/ShaderNode.js +229 -49
  229. package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
  230. package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
  231. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
  232. package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
  233. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
  234. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
  235. package/examples/jsm/renderers/nodes/accessors/UVNode.js +7 -5
  236. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
  237. package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
  238. package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
  239. package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
  240. package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
  241. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
  242. package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
  243. package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
  244. package/examples/jsm/renderers/nodes/core/Node.js +32 -10
  245. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +146 -128
  246. package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
  247. package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
  248. package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
  249. package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
  250. package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
  251. package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
  252. package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
  253. package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
  254. package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
  255. package/examples/jsm/renderers/nodes/core/constants.js +2 -0
  256. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +43 -63
  257. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
  258. package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
  259. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +27 -0
  260. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
  261. package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
  262. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +13 -10
  263. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
  264. package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
  265. package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
  266. package/examples/jsm/renderers/nodes/math/MathNode.js +91 -37
  267. package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
  268. package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
  269. package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
  270. package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
  271. package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
  272. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
  273. package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
  274. package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
  275. package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
  276. package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
  277. package/examples/jsm/renderers/nodes/utils/SplitNode.js +18 -8
  278. package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
  279. package/examples/jsm/renderers/nodes/utils/TimerNode.js +1 -1
  280. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
  281. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +192 -95
  282. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
  283. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
  284. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
  285. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +10 -9
  286. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
  287. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  288. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
  289. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
  290. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +44 -65
  291. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +13 -31
  292. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
  293. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +35 -29
  294. package/examples/jsm/renderers/webgpu/constants.js +2 -2
  295. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +459 -95
  296. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  297. package/examples/jsm/shaders/ConvolutionShader.js +0 -1
  298. package/examples/jsm/shaders/DigitalGlitch.js +3 -3
  299. package/examples/jsm/shaders/FXAAShader.js +1 -1
  300. package/examples/jsm/shaders/FilmShader.js +1 -1
  301. package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
  302. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -2
  303. package/examples/jsm/shaders/MMDToonShader.js +0 -1
  304. package/examples/jsm/shaders/SSAOShader.js +1 -1
  305. package/examples/jsm/shaders/SSRShader.js +1 -1
  306. package/examples/jsm/shaders/SSRrShader.js +1 -1
  307. package/examples/jsm/shaders/VerticalBlurShader.js +1 -2
  308. package/examples/jsm/utils/GeometryUtils.js +1 -1
  309. package/examples/jsm/utils/LDrawUtils.js +195 -0
  310. package/examples/jsm/utils/WorkerPool.js +11 -11
  311. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
  312. package/examples/jsm/webxr/VRButton.js +24 -0
  313. package/examples/jsm/webxr/XREstimatedLight.js +2 -0
  314. package/package.json +27 -18
  315. package/src/Three.Legacy.js +18 -0
  316. package/src/Three.js +1 -3
  317. package/src/animation/AnimationMixer.js +1 -0
  318. package/src/cameras/CubeCamera.js +2 -0
  319. package/src/cameras/StereoCamera.js +8 -7
  320. package/src/constants.js +3 -23
  321. package/src/core/Layers.js +7 -1
  322. package/src/core/Object3D.js +3 -1
  323. package/src/extras/ImageUtils.js +63 -0
  324. package/src/extras/PMREMGenerator.js +49 -185
  325. package/src/extras/core/Interpolations.js +1 -1
  326. package/src/geometries/LatheGeometry.js +70 -47
  327. package/src/helpers/CameraHelper.js +1 -1
  328. package/src/loaders/FileLoader.js +98 -144
  329. package/src/loaders/ImageLoader.js +9 -4
  330. package/src/loaders/LoaderUtils.js +26 -0
  331. package/src/loaders/MaterialLoader.js +8 -5
  332. package/src/loaders/ObjectLoader.js +2 -0
  333. package/src/materials/Material.js +8 -8
  334. package/src/materials/MeshPhysicalMaterial.js +20 -14
  335. package/src/math/Color.js +1 -39
  336. package/src/math/MathUtils.js +5 -16
  337. package/src/math/Quaternion.js +1 -1
  338. package/src/math/Ray.js +2 -2
  339. package/src/math/Sphere.js +10 -1
  340. package/src/objects/Skeleton.js +1 -0
  341. package/src/renderers/WebGLCubeRenderTarget.js +0 -2
  342. package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
  343. package/src/renderers/WebGLRenderer.js +106 -199
  344. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
  345. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +1 -1
  346. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +2 -24
  347. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
  348. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -78
  349. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  350. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
  351. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +1 -1
  352. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
  353. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
  354. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
  355. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +28 -2
  356. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
  357. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
  358. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  359. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  360. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +9 -8
  361. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -3
  362. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
  363. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -1
  364. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -2
  365. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +23 -5
  366. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
  367. package/src/renderers/shaders/ShaderLib.js +8 -6
  368. package/src/renderers/shaders/UniformsLib.js +1 -2
  369. package/src/renderers/webgl/WebGLCapabilities.js +0 -2
  370. package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
  371. package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
  372. package/src/renderers/webgl/WebGLExtensions.js +1 -0
  373. package/src/renderers/webgl/WebGLMaterials.js +27 -15
  374. package/src/renderers/webgl/WebGLMorphtargets.js +13 -0
  375. package/src/renderers/webgl/WebGLProgram.js +12 -37
  376. package/src/renderers/webgl/WebGLPrograms.js +192 -70
  377. package/src/renderers/webgl/WebGLRenderLists.js +4 -14
  378. package/src/renderers/webgl/WebGLShaderCache.js +120 -0
  379. package/src/renderers/webgl/WebGLShadowMap.js +14 -5
  380. package/src/renderers/webgl/WebGLState.js +157 -17
  381. package/src/renderers/webgl/WebGLTextures.js +442 -83
  382. package/src/renderers/webgl/WebGLUniforms.js +45 -1
  383. package/src/renderers/webgl/WebGLUtils.js +86 -28
  384. package/src/renderers/webxr/WebXRManager.js +77 -109
  385. package/src/scenes/Scene.js +1 -1
  386. package/src/textures/DataTexture.js +0 -2
  387. package/src/textures/DataTexture2DArray.js +0 -2
  388. package/src/textures/DataTexture3D.js +0 -2
  389. package/src/textures/FramebufferTexture.js +25 -0
  390. package/src/textures/Texture.js +8 -1
  391. package/src/textures/VideoTexture.js +1 -3
  392. package/examples/js/WebGL.js +0 -90
  393. package/examples/js/controls/DeviceOrientationControls.js +0 -147
  394. package/examples/js/libs/dat.gui.min.js +0 -14
  395. package/examples/js/utils/RoughnessMipmapper.js +0 -278
  396. package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
  397. package/examples/jsm/libs/dat.gui.module.js +0 -3575
  398. package/examples/jsm/libs/glslang.js +0 -78
  399. package/examples/jsm/libs/glslang.wasm +0 -0
  400. package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
  401. package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
  402. package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
  403. package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
  404. package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
  405. package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
  406. package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
  407. package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
  408. package/examples/jsm/utils/RoughnessMipmapper.js +0 -300
  409. package/src/extras/objects/ImmediateRenderObject.js +0 -31
@@ -1,4 +1,5 @@
1
1
  import {
2
+ REVISION,
2
3
  BackSide,
3
4
  DoubleSide,
4
5
  FrontSide,
@@ -110,7 +111,6 @@ function WebGLRenderer( parameters = {} ) {
110
111
 
111
112
  // physically based shading
112
113
 
113
- this.gammaFactor = 2.0; // for backwards compatibility
114
114
  this.outputEncoding = LinearEncoding;
115
115
 
116
116
  // physical lights
@@ -154,10 +154,6 @@ function WebGLRenderer( parameters = {} ) {
154
154
  const _scissor = new Vector4( 0, 0, _width, _height );
155
155
  let _scissorTest = false;
156
156
 
157
- //
158
-
159
- const _currentDrawBuffers = [];
160
-
161
157
  // frustum
162
158
 
163
159
  const _frustum = new Frustum();
@@ -216,8 +212,10 @@ function WebGLRenderer( parameters = {} ) {
216
212
  failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat
217
213
  };
218
214
 
219
- // event listeners must be registered before WebGL context is created, see #12753
215
+ // OffscreenCanvas does not have setAttribute, see #22811
216
+ if ( 'setAttribute' in _canvas ) _canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );
220
217
 
218
+ // event listeners must be registered before WebGL context is created, see #12753
221
219
  _canvas.addEventListener( 'webglcontextlost', onContextLost, false );
222
220
  _canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );
223
221
 
@@ -288,8 +286,6 @@ function WebGLRenderer( parameters = {} ) {
288
286
 
289
287
  state = new WebGLState( _gl, extensions, capabilities );
290
288
 
291
- _currentDrawBuffers[ 0 ] = _gl.BACK;
292
-
293
289
  info = new WebGLInfo( _gl );
294
290
  properties = new WebGLProperties();
295
291
  textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );
@@ -303,7 +299,7 @@ function WebGLRenderer( parameters = {} ) {
303
299
  clipping = new WebGLClipping( properties );
304
300
  programCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );
305
301
  materials = new WebGLMaterials( properties );
306
- renderLists = new WebGLRenderLists( properties );
302
+ renderLists = new WebGLRenderLists();
307
303
  renderStates = new WebGLRenderStates( extensions, capabilities );
308
304
  background = new WebGLBackground( _this, cubemaps, state, objects, _premultipliedAlpha );
309
305
  shadowMap = new WebGLShadowMap( _this, objects, capabilities );
@@ -569,6 +565,7 @@ function WebGLRenderer( parameters = {} ) {
569
565
  cubeuvmaps.dispose();
570
566
  objects.dispose();
571
567
  bindingStates.dispose();
568
+ programCache.dispose();
572
569
 
573
570
  xr.dispose();
574
571
 
@@ -653,82 +650,17 @@ function WebGLRenderer( parameters = {} ) {
653
650
 
654
651
  } );
655
652
 
656
- }
657
-
658
- }
659
-
660
- // Buffer rendering
661
-
662
- function renderObjectImmediate( object, program ) {
663
-
664
- object.render( function ( object ) {
665
-
666
- _this.renderBufferImmediate( object, program );
667
-
668
- } );
669
-
670
- }
671
-
672
- this.renderBufferImmediate = function ( object, program ) {
673
-
674
- bindingStates.initAttributes();
675
-
676
- const buffers = properties.get( object );
677
-
678
- if ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();
679
- if ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();
680
- if ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();
681
- if ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();
682
-
683
- const programAttributes = program.getAttributes();
684
-
685
- if ( object.hasPositions ) {
686
-
687
- _gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );
688
- _gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );
689
-
690
- bindingStates.enableAttribute( programAttributes.position.location );
691
- _gl.vertexAttribPointer( programAttributes.position.location, 3, _gl.FLOAT, false, 0, 0 );
692
-
693
- }
694
-
695
- if ( object.hasNormals ) {
696
-
697
- _gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );
698
- _gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );
699
-
700
- bindingStates.enableAttribute( programAttributes.normal.location );
701
- _gl.vertexAttribPointer( programAttributes.normal.location, 3, _gl.FLOAT, false, 0, 0 );
702
-
703
- }
704
-
705
- if ( object.hasUvs ) {
706
-
707
- _gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );
708
- _gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );
709
-
710
- bindingStates.enableAttribute( programAttributes.uv.location );
711
- _gl.vertexAttribPointer( programAttributes.uv.location, 2, _gl.FLOAT, false, 0, 0 );
653
+ if ( material.isShaderMaterial ) {
712
654
 
713
- }
714
-
715
- if ( object.hasColors ) {
716
-
717
- _gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );
718
- _gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );
655
+ programCache.releaseShaderCache( material );
719
656
 
720
- bindingStates.enableAttribute( programAttributes.color.location );
721
- _gl.vertexAttribPointer( programAttributes.color.location, 3, _gl.FLOAT, false, 0, 0 );
657
+ }
722
658
 
723
659
  }
724
660
 
725
- bindingStates.disableUnusedAttributes();
726
-
727
- _gl.drawArrays( _gl.TRIANGLES, 0, object.count );
728
-
729
- object.count = 0;
661
+ }
730
662
 
731
- };
663
+ // Buffer rendering
732
664
 
733
665
  this.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {
734
666
 
@@ -1171,17 +1103,6 @@ function WebGLRenderer( parameters = {} ) {
1171
1103
 
1172
1104
  }
1173
1105
 
1174
- } else if ( object.isImmediateRenderObject ) {
1175
-
1176
- if ( sortObjects ) {
1177
-
1178
- _vector3.setFromMatrixPosition( object.matrixWorld )
1179
- .applyMatrix4( _projScreenMatrix );
1180
-
1181
- }
1182
-
1183
- currentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );
1184
-
1185
1106
  } else if ( object.isMesh || object.isLine || object.isPoints ) {
1186
1107
 
1187
1108
  if ( object.isSkinnedMesh ) {
@@ -1279,7 +1200,8 @@ function WebGLRenderer( parameters = {} ) {
1279
1200
  minFilter: LinearMipmapLinearFilter,
1280
1201
  magFilter: NearestFilter,
1281
1202
  wrapS: ClampToEdgeWrapping,
1282
- wrapT: ClampToEdgeWrapping
1203
+ wrapT: ClampToEdgeWrapping,
1204
+ useRenderToTexture: extensions.has( 'WEBGL_multisampled_render_to_texture' )
1283
1205
  } );
1284
1206
 
1285
1207
  }
@@ -1336,35 +1258,21 @@ function WebGLRenderer( parameters = {} ) {
1336
1258
 
1337
1259
  material.onBeforeRender( _this, scene, camera, geometry, object, group );
1338
1260
 
1339
- if ( object.isImmediateRenderObject ) {
1340
-
1341
- const program = setProgram( camera, scene, geometry, material, object );
1261
+ if ( material.transparent === true && material.side === DoubleSide ) {
1342
1262
 
1343
- state.setMaterial( material );
1263
+ material.side = BackSide;
1264
+ material.needsUpdate = true;
1265
+ _this.renderBufferDirect( camera, scene, geometry, material, object, group );
1344
1266
 
1345
- bindingStates.reset();
1267
+ material.side = FrontSide;
1268
+ material.needsUpdate = true;
1269
+ _this.renderBufferDirect( camera, scene, geometry, material, object, group );
1346
1270
 
1347
- renderObjectImmediate( object, program );
1271
+ material.side = DoubleSide;
1348
1272
 
1349
1273
  } else {
1350
1274
 
1351
- if ( material.transparent === true && material.side === DoubleSide ) {
1352
-
1353
- material.side = BackSide;
1354
- material.needsUpdate = true;
1355
- _this.renderBufferDirect( camera, scene, geometry, material, object, group );
1356
-
1357
- material.side = FrontSide;
1358
- material.needsUpdate = true;
1359
- _this.renderBufferDirect( camera, scene, geometry, material, object, group );
1360
-
1361
- material.side = DoubleSide;
1362
-
1363
- } else {
1364
-
1365
- _this.renderBufferDirect( camera, scene, geometry, material, object, group );
1366
-
1367
- }
1275
+ _this.renderBufferDirect( camera, scene, geometry, material, object, group );
1368
1276
 
1369
1277
  }
1370
1278
 
@@ -1423,7 +1331,7 @@ function WebGLRenderer( parameters = {} ) {
1423
1331
 
1424
1332
  parameters.uniforms = programCache.getUniforms( material );
1425
1333
 
1426
- material.onBuild( parameters, _this );
1334
+ material.onBuild( object, parameters, _this );
1427
1335
 
1428
1336
  material.onBeforeCompile( parameters, _this );
1429
1337
 
@@ -1500,6 +1408,7 @@ function WebGLRenderer( parameters = {} ) {
1500
1408
  materialProperties.numIntersection = parameters.numClipIntersection;
1501
1409
  materialProperties.vertexAlphas = parameters.vertexAlphas;
1502
1410
  materialProperties.vertexTangents = parameters.vertexTangents;
1411
+ materialProperties.toneMapping = parameters.toneMapping;
1503
1412
 
1504
1413
  }
1505
1414
 
@@ -1513,11 +1422,12 @@ function WebGLRenderer( parameters = {} ) {
1513
1422
  const environment = material.isMeshStandardMaterial ? scene.environment : null;
1514
1423
  const encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;
1515
1424
  const envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );
1516
- const vertexAlphas = material.vertexColors === true && !! geometry && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;
1517
- const vertexTangents = !! material.normalMap && !! geometry && !! geometry.attributes.tangent;
1518
- const morphTargets = !! geometry && !! geometry.morphAttributes.position;
1519
- const morphNormals = !! geometry && !! geometry.morphAttributes.normal;
1520
- const morphTargetsCount = ( !! geometry && !! geometry.morphAttributes.position ) ? geometry.morphAttributes.position.length : 0;
1425
+ const vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;
1426
+ const vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;
1427
+ const morphTargets = !! geometry.morphAttributes.position;
1428
+ const morphNormals = !! geometry.morphAttributes.normal;
1429
+ const morphTargetsCount = !! geometry.morphAttributes.position ? geometry.morphAttributes.position.length : 0;
1430
+ const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;
1521
1431
 
1522
1432
  const materialProperties = properties.get( material );
1523
1433
  const lights = currentRenderState.state.lights;
@@ -1599,6 +1509,10 @@ function WebGLRenderer( parameters = {} ) {
1599
1509
 
1600
1510
  needsProgramChange = true;
1601
1511
 
1512
+ } else if ( materialProperties.toneMapping !== toneMapping ) {
1513
+
1514
+ needsProgramChange = true;
1515
+
1602
1516
  } else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {
1603
1517
 
1604
1518
  needsProgramChange = true;
@@ -1885,15 +1799,71 @@ function WebGLRenderer( parameters = {} ) {
1885
1799
 
1886
1800
  };
1887
1801
 
1802
+ this.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {
1803
+
1804
+ properties.get( renderTarget.texture ).__webglTexture = colorTexture;
1805
+ properties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;
1806
+
1807
+ const renderTargetProperties = properties.get( renderTarget );
1808
+ renderTargetProperties.__hasExternalTextures = true;
1809
+
1810
+ if ( renderTargetProperties.__hasExternalTextures ) {
1811
+
1812
+ renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;
1813
+
1814
+ if ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {
1815
+
1816
+ // The multisample_render_to_texture extension doesn't work properly if there
1817
+ // are midframe flushes and an external depth buffer. Disable use of the extension.
1818
+ if ( renderTarget.useRenderToTexture ) {
1819
+
1820
+ console.warn( 'render-to-texture extension was disabled because an external texture was provided' );
1821
+ renderTarget.useRenderToTexture = false;
1822
+ renderTarget.useRenderbuffer = true;
1823
+
1824
+ }
1825
+
1826
+ }
1827
+
1828
+ }
1829
+
1830
+ };
1831
+
1832
+ this.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {
1833
+
1834
+ const renderTargetProperties = properties.get( renderTarget );
1835
+ renderTargetProperties.__webglFramebuffer = defaultFramebuffer;
1836
+ renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;
1837
+
1838
+ };
1839
+
1888
1840
  this.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {
1889
1841
 
1890
1842
  _currentRenderTarget = renderTarget;
1891
1843
  _currentActiveCubeFace = activeCubeFace;
1892
1844
  _currentActiveMipmapLevel = activeMipmapLevel;
1845
+ let useDefaultFramebuffer = true;
1846
+
1847
+ if ( renderTarget ) {
1848
+
1849
+ const renderTargetProperties = properties.get( renderTarget );
1850
+
1851
+ if ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {
1852
+
1853
+ // We need to make sure to rebind the framebuffer.
1854
+ state.bindFramebuffer( _gl.FRAMEBUFFER, null );
1855
+ useDefaultFramebuffer = false;
1856
+
1857
+ } else if ( renderTargetProperties.__webglFramebuffer === undefined ) {
1858
+
1859
+ textures.setupRenderTarget( renderTarget );
1893
1860
 
1894
- if ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {
1861
+ } else if ( renderTargetProperties.__hasExternalTextures ) {
1895
1862
 
1896
- textures.setupRenderTarget( renderTarget );
1863
+ // Color and depth texture must be rebound in order for the swapchain to update.
1864
+ textures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );
1865
+
1866
+ }
1897
1867
 
1898
1868
  }
1899
1869
 
@@ -1918,7 +1888,7 @@ function WebGLRenderer( parameters = {} ) {
1918
1888
  framebuffer = __webglFramebuffer[ activeCubeFace ];
1919
1889
  isCube = true;
1920
1890
 
1921
- } else if ( renderTarget.isWebGLMultisampleRenderTarget ) {
1891
+ } else if ( renderTarget.useRenderbuffer ) {
1922
1892
 
1923
1893
  framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;
1924
1894
 
@@ -1942,69 +1912,9 @@ function WebGLRenderer( parameters = {} ) {
1942
1912
 
1943
1913
  const framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
1944
1914
 
1945
- if ( framebufferBound && capabilities.drawBuffers ) {
1946
-
1947
- let needsUpdate = false;
1948
-
1949
- if ( renderTarget ) {
1950
-
1951
- if ( renderTarget.isWebGLMultipleRenderTargets ) {
1952
-
1953
- const textures = renderTarget.texture;
1954
-
1955
- if ( _currentDrawBuffers.length !== textures.length || _currentDrawBuffers[ 0 ] !== _gl.COLOR_ATTACHMENT0 ) {
1956
-
1957
- for ( let i = 0, il = textures.length; i < il; i ++ ) {
1958
-
1959
- _currentDrawBuffers[ i ] = _gl.COLOR_ATTACHMENT0 + i;
1960
-
1961
- }
1962
-
1963
- _currentDrawBuffers.length = textures.length;
1964
-
1965
- needsUpdate = true;
1966
-
1967
- }
1968
-
1969
- } else {
1970
-
1971
- if ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== _gl.COLOR_ATTACHMENT0 ) {
1915
+ if ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {
1972
1916
 
1973
- _currentDrawBuffers[ 0 ] = _gl.COLOR_ATTACHMENT0;
1974
- _currentDrawBuffers.length = 1;
1975
-
1976
- needsUpdate = true;
1977
-
1978
- }
1979
-
1980
- }
1981
-
1982
- } else {
1983
-
1984
- if ( _currentDrawBuffers.length !== 1 || _currentDrawBuffers[ 0 ] !== _gl.BACK ) {
1985
-
1986
- _currentDrawBuffers[ 0 ] = _gl.BACK;
1987
- _currentDrawBuffers.length = 1;
1988
-
1989
- needsUpdate = true;
1990
-
1991
- }
1992
-
1993
- }
1994
-
1995
- if ( needsUpdate ) {
1996
-
1997
- if ( capabilities.isWebGL2 ) {
1998
-
1999
- _gl.drawBuffers( _currentDrawBuffers );
2000
-
2001
- } else {
2002
-
2003
- extensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( _currentDrawBuffers );
2004
-
2005
- }
2006
-
2007
- }
1917
+ state.drawBuffers( renderTarget, framebuffer );
2008
1918
 
2009
1919
  }
2010
1920
 
@@ -2105,25 +2015,20 @@ function WebGLRenderer( parameters = {} ) {
2105
2015
 
2106
2016
  this.copyFramebufferToTexture = function ( position, texture, level = 0 ) {
2107
2017
 
2108
- const levelScale = Math.pow( 2, - level );
2109
- const width = Math.floor( texture.image.width * levelScale );
2110
- const height = Math.floor( texture.image.height * levelScale );
2111
-
2112
- let glFormat = utils.convert( texture.format );
2113
-
2114
- if ( capabilities.isWebGL2 ) {
2115
-
2116
- // Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=1120100
2117
- // Not needed in Chrome 93+
2018
+ if ( texture.isFramebufferTexture !== true ) {
2118
2019
 
2119
- if ( glFormat === _gl.RGB ) glFormat = _gl.RGB8;
2120
- if ( glFormat === _gl.RGBA ) glFormat = _gl.RGBA8;
2020
+ console.error( 'THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.' );
2021
+ return;
2121
2022
 
2122
2023
  }
2123
2024
 
2025
+ const levelScale = Math.pow( 2, - level );
2026
+ const width = Math.floor( texture.image.width * levelScale );
2027
+ const height = Math.floor( texture.image.height * levelScale );
2028
+
2124
2029
  textures.setTexture2D( texture, 0 );
2125
2030
 
2126
- _gl.copyTexImage2D( _gl.TEXTURE_2D, level, glFormat, position.x, position.y, width, height, 0 );
2031
+ _gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height );
2127
2032
 
2128
2033
  state.unbindTexture();
2129
2034
 
@@ -2273,10 +2178,12 @@ function WebGLRenderer( parameters = {} ) {
2273
2178
 
2274
2179
  if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {
2275
2180
 
2276
- __THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef
2181
+ __THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );
2277
2182
 
2278
2183
  }
2279
2184
 
2280
2185
  }
2281
2186
 
2187
+ WebGLRenderer.prototype.isWebGLRenderer = true;
2188
+
2282
2189
  export { WebGLRenderer };
@@ -239,7 +239,7 @@ float V_Neubelt( float dotNV, float dotNL ) {
239
239
 
240
240
  }
241
241
 
242
- vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenTint, const in float sheenRoughness ) {
242
+ vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {
243
243
 
244
244
  vec3 halfDir = normalize( lightDir + viewDir );
245
245
 
@@ -250,7 +250,7 @@ vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 no
250
250
  float D = D_Charlie( sheenRoughness, dotNH );
251
251
  float V = V_Neubelt( dotNV, dotNL );
252
252
 
253
- return sheenTint * ( D * V );
253
+ return sheenColor * ( D * V );
254
254
 
255
255
  }
256
256
 
@@ -5,7 +5,7 @@ export default /* glsl */`
5
5
  uniform float bumpScale;
6
6
 
7
7
  // Bump Mapping Unparametrized Surfaces on the GPU by Morten S. Mikkelsen
8
- // http://api.unrealengine.com/attachments/Engine/Rendering/LightingAndShadows/BumpMappingWithoutTangentSpace/mm_sfgrad_bump.pdf
8
+ // https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf
9
9
 
10
10
  // Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)
11
11
 
@@ -89,11 +89,7 @@ export default /* glsl */`
89
89
 
90
90
  float texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );
91
91
 
92
- vec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );
93
-
94
- vec2 f = fract( uv );
95
-
96
- uv += 0.5 - f;
92
+ vec2 uv = getUV( direction, face ) * ( faceSize - 1.0 ) + 0.5;
97
93
 
98
94
  if ( face > 2.0 ) {
99
95
 
@@ -117,25 +113,7 @@ export default /* glsl */`
117
113
 
118
114
  uv *= texelSize;
119
115
 
120
- vec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;
121
-
122
- uv.x += texelSize;
123
-
124
- vec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;
125
-
126
- uv.y += texelSize;
127
-
128
- vec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;
129
-
130
- uv.x -= texelSize;
131
-
132
- vec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;
133
-
134
- vec3 tm = mix( tl, tr, f.x );
135
-
136
- vec3 bm = mix( bl, br, f.x );
137
-
138
- return mix( tm, bm, f.y );
116
+ return texture2D( envMap, uv ).rgb;
139
117
 
140
118
  }
141
119
 
@@ -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
@@ -1,89 +1,11 @@
1
1
  export default /* glsl */`
2
- // For a discussion of what this is, please read this: http://lousodrome.net/blog/light/2013/05/26/gamma-correct-and-hdr-rendering-in-a-32-bits-buffer/
3
2
 
4
3
  vec4 LinearToLinear( in vec4 value ) {
5
4
  return value;
6
5
  }
7
6
 
8
- vec4 GammaToLinear( in vec4 value, in float gammaFactor ) {
9
- return vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );
10
- }
11
-
12
- vec4 LinearToGamma( in vec4 value, in float gammaFactor ) {
13
- return vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );
14
- }
15
-
16
- vec4 sRGBToLinear( in vec4 value ) {
17
- 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 );
18
- }
19
-
20
7
  vec4 LinearTosRGB( in vec4 value ) {
21
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 );
22
9
  }
23
10
 
24
- vec4 RGBEToLinear( in vec4 value ) {
25
- return vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );
26
- }
27
-
28
- vec4 LinearToRGBE( in vec4 value ) {
29
- float maxComponent = max( max( value.r, value.g ), value.b );
30
- float fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );
31
- return vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );
32
- // return vec4( value.brg, ( 3.0 + 128.0 ) / 256.0 );
33
- }
34
-
35
- // reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html
36
- vec4 RGBMToLinear( in vec4 value, in float maxRange ) {
37
- return vec4( value.rgb * value.a * maxRange, 1.0 );
38
- }
39
-
40
- vec4 LinearToRGBM( in vec4 value, in float maxRange ) {
41
- float maxRGB = max( value.r, max( value.g, value.b ) );
42
- float M = clamp( maxRGB / maxRange, 0.0, 1.0 );
43
- M = ceil( M * 255.0 ) / 255.0;
44
- return vec4( value.rgb / ( M * maxRange ), M );
45
- }
46
-
47
- // reference: http://iwasbeingirony.blogspot.ca/2010/06/difference-between-rgbm-and-rgbd.html
48
- vec4 RGBDToLinear( in vec4 value, in float maxRange ) {
49
- return vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );
50
- }
51
-
52
- vec4 LinearToRGBD( in vec4 value, in float maxRange ) {
53
- float maxRGB = max( value.r, max( value.g, value.b ) );
54
- float D = max( maxRange / maxRGB, 1.0 );
55
- // NOTE: The implementation with min causes the shader to not compile on
56
- // a common Alcatel A502DL in Chrome 78/Android 8.1. Some research suggests
57
- // that the chipset is Mediatek MT6739 w/ IMG PowerVR GE8100 GPU.
58
- // D = min( floor( D ) / 255.0, 1.0 );
59
- D = clamp( floor( D ) / 255.0, 0.0, 1.0 );
60
- return vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );
61
- }
62
-
63
- // LogLuv reference: http://graphicrants.blogspot.ca/2009/04/rgbm-color-encoding.html
64
-
65
- // M matrix, for encoding
66
- const mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );
67
- vec4 LinearToLogLuv( in vec4 value ) {
68
- vec3 Xp_Y_XYZp = cLogLuvM * value.rgb;
69
- Xp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );
70
- vec4 vResult;
71
- vResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;
72
- float Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;
73
- vResult.w = fract( Le );
74
- vResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;
75
- return vResult;
76
- }
77
-
78
- // Inverse M matrix, for decoding
79
- const mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );
80
- vec4 LogLuvToLinear( in vec4 value ) {
81
- float Le = value.z * 255.0 + value.w;
82
- vec3 Xp_Y_XYZp;
83
- Xp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );
84
- Xp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;
85
- Xp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;
86
- vec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;
87
- return vec4( max( vRGB, 0.0 ), 1.0 );
88
- }
89
11
  `;
@@ -3,7 +3,6 @@ export default /* glsl */`
3
3
 
4
4
  uniform float envMapIntensity;
5
5
  uniform float flipEnvMap;
6
- uniform int maxMipLevel;
7
6
 
8
7
  #ifdef ENVMAP_TYPE_CUBE
9
8
  uniform samplerCube envMap;
@@ -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 );
@@ -14,7 +14,7 @@ vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
14
14
 
15
15
  #ifdef USE_GRADIENTMAP
16
16
 
17
- return texture2D( gradientMap, coord ).rgb;
17
+ return vec3( texture2D( gradientMap, coord ).r );
18
18
 
19
19
  #else
20
20
 
@@ -2,7 +2,7 @@ export default /* glsl */`
2
2
  #ifdef USE_LIGHTMAP
3
3
 
4
4
  vec4 lightMapTexel = texture2D( lightMap, vUv2 );
5
- vec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;
5
+ vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
6
6
 
7
7
  #ifndef PHYSICALLY_CORRECT_LIGHTS
8
8
 
@@ -4,7 +4,7 @@ export default /* glsl */`
4
4
  #ifdef USE_LIGHTMAP
5
5
 
6
6
  vec4 lightMapTexel = texture2D( lightMap, vUv2 );
7
- vec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;
7
+ vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
8
8
 
9
9
  #ifndef PHYSICALLY_CORRECT_LIGHTS
10
10