super-three 0.144.0 → 0.147.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 (450) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +735 -387
  3. package/build/three.js +735 -387
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +910 -408
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +50 -67
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +70 -134
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +138 -405
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -54
  14. package/examples/js/controls/FlyControls.js +29 -55
  15. package/examples/js/controls/OrbitControls.js +125 -99
  16. package/examples/js/controls/PointerLockControls.js +5 -14
  17. package/examples/js/controls/TrackballControls.js +33 -86
  18. package/examples/js/controls/TransformControls.js +85 -170
  19. package/examples/js/csm/CSM.js +4 -39
  20. package/examples/js/csm/CSMFrustum.js +3 -9
  21. package/examples/js/csm/CSMHelper.js +24 -4
  22. package/examples/js/csm/CSMShader.js +2 -6
  23. package/examples/js/curves/CurveExtras.js +27 -27
  24. package/examples/js/curves/NURBSCurve.js +4 -16
  25. package/examples/js/curves/NURBSSurface.js +3 -9
  26. package/examples/js/curves/NURBSUtils.js +8 -45
  27. package/examples/js/effects/AnaglyphEffect.js +4 -18
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +26 -30
  30. package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
  31. package/examples/js/effects/PeppersGhostEffect.js +12 -39
  32. package/examples/js/effects/StereoEffect.js +0 -4
  33. package/examples/js/environments/RoomEnvironment.js +12 -10
  34. package/examples/js/exporters/ColladaExporter.js +48 -65
  35. package/examples/js/exporters/DRACOExporter.js +22 -22
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +141 -317
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +42 -33
  40. package/examples/js/exporters/PLYExporter.js +38 -33
  41. package/examples/js/exporters/STLExporter.js +5 -7
  42. package/examples/js/exporters/USDZExporter.js +113 -27
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +11 -6
  45. package/examples/js/geometries/DecalGeometry.js +53 -20
  46. package/examples/js/geometries/LightningStrike.js +54 -67
  47. package/examples/js/geometries/ParametricGeometries.js +8 -7
  48. package/examples/js/geometries/ParametricGeometry.js +25 -12
  49. package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
  50. package/examples/js/geometries/TeapotGeometry.js +54 -50
  51. package/examples/js/geometries/TextGeometry.js +6 -4
  52. package/examples/js/helpers/LightProbeHelper.js +1 -2
  53. package/examples/js/helpers/OctreeHelper.js +22 -20
  54. package/examples/js/helpers/PositionalAudioHelper.js +8 -6
  55. package/examples/js/helpers/RectAreaLightHelper.js +6 -7
  56. package/examples/js/helpers/VertexNormalsHelper.js +15 -13
  57. package/examples/js/helpers/VertexTangentsHelper.js +15 -9
  58. package/examples/js/helpers/ViewHelper.js +31 -16
  59. package/examples/js/interactive/HTMLMesh.js +25 -39
  60. package/examples/js/interactive/InteractiveGroup.js +9 -14
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +0 -8
  63. package/examples/js/lights/LightProbeGenerator.js +32 -39
  64. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  65. package/examples/js/lines/LineGeometry.js +3 -5
  66. package/examples/js/lines/LineMaterial.js +4 -11
  67. package/examples/js/lines/LineSegments2.js +40 -89
  68. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  69. package/examples/js/lines/Wireframe.js +2 -7
  70. package/examples/js/lines/WireframeGeometry2.js +3 -1
  71. package/examples/js/loaders/3DMLoader.js +58 -155
  72. package/examples/js/loaders/3MFLoader.js +72 -106
  73. package/examples/js/loaders/AMFLoader.js +0 -25
  74. package/examples/js/loaders/BVHLoader.js +44 -43
  75. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  76. package/examples/js/loaders/ColladaLoader.js +228 -359
  77. package/examples/js/loaders/DDSLoader.js +24 -25
  78. package/examples/js/loaders/DRACOLoader.js +29 -66
  79. package/examples/js/loaders/EXRLoader.js +67 -164
  80. package/examples/js/loaders/FBXLoader.js +287 -441
  81. package/examples/js/loaders/FontLoader.js +6 -15
  82. package/examples/js/loaders/GCodeLoader.js +15 -16
  83. package/examples/js/loaders/GLTFLoader.js +409 -706
  84. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
  85. package/examples/js/loaders/KMZLoader.js +3 -7
  86. package/examples/js/loaders/KTXLoader.js +12 -30
  87. package/examples/js/loaders/LDrawLoader.js +178 -289
  88. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  89. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  90. package/examples/js/loaders/LWOLoader.js +59 -124
  91. package/examples/js/loaders/LogLuvLoader.js +27 -77
  92. package/examples/js/loaders/LottieLoader.js +4 -4
  93. package/examples/js/loaders/MD2Loader.js +26 -27
  94. package/examples/js/loaders/MDDLoader.js +6 -10
  95. package/examples/js/loaders/MMDLoader.js +180 -189
  96. package/examples/js/loaders/MTLLoader.js +18 -47
  97. package/examples/js/loaders/NRRDLoader.js +44 -84
  98. package/examples/js/loaders/OBJLoader.js +50 -65
  99. package/examples/js/loaders/PCDLoader.js +34 -29
  100. package/examples/js/loaders/PDBLoader.js +17 -13
  101. package/examples/js/loaders/PLYLoader.js +62 -48
  102. package/examples/js/loaders/PRWMLoader.js +11 -22
  103. package/examples/js/loaders/PVRLoader.js +7 -16
  104. package/examples/js/loaders/RGBELoader.js +36 -61
  105. package/examples/js/loaders/RGBMLoader.js +26 -87
  106. package/examples/js/loaders/STLLoader.js +20 -27
  107. package/examples/js/loaders/SVGLoader.js +361 -233
  108. package/examples/js/loaders/TDSLoader.js +81 -118
  109. package/examples/js/loaders/TGALoader.js +39 -41
  110. package/examples/js/loaders/TIFFLoader.js +0 -1
  111. package/examples/js/loaders/TTFLoader.js +0 -8
  112. package/examples/js/loaders/TiltLoader.js +14 -15
  113. package/examples/js/loaders/VOXLoader.js +8 -16
  114. package/examples/js/loaders/VRMLLoader.js +243 -340
  115. package/examples/js/loaders/VTKLoader.js +101 -118
  116. package/examples/js/loaders/XYZLoader.js +2 -4
  117. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  118. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  119. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  120. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  121. package/examples/js/math/Capsule.js +0 -17
  122. package/examples/js/math/ColorConverter.js +3 -3
  123. package/examples/js/math/ConvexHull.js +185 -141
  124. package/examples/js/math/ImprovedNoise.js +1 -1
  125. package/examples/js/math/Lut.js +8 -15
  126. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  127. package/examples/js/math/OBB.js +90 -49
  128. package/examples/js/math/Octree.js +2 -57
  129. package/examples/js/math/SimplexNoise.js +74 -88
  130. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  131. package/examples/js/misc/GPUComputationRenderer.js +26 -16
  132. package/examples/js/misc/Gyroscope.js +5 -9
  133. package/examples/js/misc/MD2Character.js +14 -23
  134. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  135. package/examples/js/misc/MorphAnimMesh.js +0 -6
  136. package/examples/js/misc/MorphBlendMesh.js +3 -30
  137. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  138. package/examples/js/misc/RollerCoaster.js +17 -24
  139. package/examples/js/misc/TubePainter.js +18 -12
  140. package/examples/js/misc/Volume.js +16 -45
  141. package/examples/js/misc/VolumeSlice.js +14 -24
  142. package/examples/js/modifiers/CurveModifier.js +19 -21
  143. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  144. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  145. package/examples/js/modifiers/TessellateModifier.js +2 -9
  146. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  147. package/examples/js/objects/Lensflare.js +47 -38
  148. package/examples/js/objects/LightningStorm.js +10 -13
  149. package/examples/js/objects/MarchingCubes.js +80 -59
  150. package/examples/js/objects/Reflector.js +22 -20
  151. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  152. package/examples/js/objects/Refractor.js +52 -30
  153. package/examples/js/objects/ShadowMesh.js +1 -2
  154. package/examples/js/objects/Sky.js +2 -7
  155. package/examples/js/objects/Water.js +23 -18
  156. package/examples/js/objects/Water2.js +20 -19
  157. package/examples/js/physics/AmmoPhysics.js +23 -20
  158. package/examples/js/physics/OimoPhysics.js +19 -17
  159. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  160. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  161. package/examples/js/postprocessing/BloomPass.js +38 -17
  162. package/examples/js/postprocessing/BokehPass.js +29 -12
  163. package/examples/js/postprocessing/ClearPass.js +1 -6
  164. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  165. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  166. package/examples/js/postprocessing/EffectComposer.js +25 -32
  167. package/examples/js/postprocessing/FilmPass.js +7 -5
  168. package/examples/js/postprocessing/GlitchPass.js +10 -11
  169. package/examples/js/postprocessing/HalftonePass.js +9 -9
  170. package/examples/js/postprocessing/LUTPass.js +2 -15
  171. package/examples/js/postprocessing/MaskPass.js +20 -17
  172. package/examples/js/postprocessing/OutlinePass.js +45 -36
  173. package/examples/js/postprocessing/Pass.js +11 -14
  174. package/examples/js/postprocessing/RenderPass.js +3 -7
  175. package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
  176. package/examples/js/postprocessing/SAOPass.js +40 -32
  177. package/examples/js/postprocessing/SMAAPass.js +34 -17
  178. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  179. package/examples/js/postprocessing/SSAOPass.js +56 -42
  180. package/examples/js/postprocessing/SSRPass.js +78 -61
  181. package/examples/js/postprocessing/SavePass.js +14 -6
  182. package/examples/js/postprocessing/ShaderPass.js +9 -8
  183. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  184. package/examples/js/postprocessing/TexturePass.js +7 -4
  185. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  186. package/examples/js/renderers/CSS2DRenderer.js +2 -21
  187. package/examples/js/renderers/CSS3DRenderer.js +3 -24
  188. package/examples/js/renderers/Projector.js +29 -85
  189. package/examples/js/renderers/SVGRenderer.js +4 -50
  190. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  191. package/examples/js/shaders/AfterimageShader.js +3 -6
  192. package/examples/js/shaders/BasicShader.js +3 -6
  193. package/examples/js/shaders/BleachBypassShader.js +3 -6
  194. package/examples/js/shaders/BlendShader.js +3 -6
  195. package/examples/js/shaders/BokehShader.js +3 -6
  196. package/examples/js/shaders/BokehShader2.js +4 -13
  197. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  198. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  199. package/examples/js/shaders/ColorifyShader.js +2 -6
  200. package/examples/js/shaders/ConvolutionShader.js +5 -10
  201. package/examples/js/shaders/CopyShader.js +3 -6
  202. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  203. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  204. package/examples/js/shaders/DigitalGlitch.js +3 -6
  205. package/examples/js/shaders/DotScreenShader.js +2 -6
  206. package/examples/js/shaders/FXAAShader.js +1 -3
  207. package/examples/js/shaders/FilmShader.js +3 -6
  208. package/examples/js/shaders/FocusShader.js +3 -6
  209. package/examples/js/shaders/FreiChenShader.js +2 -6
  210. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  211. package/examples/js/shaders/GodRaysShader.js +11 -24
  212. package/examples/js/shaders/HalftoneShader.js +3 -6
  213. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  214. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  215. package/examples/js/shaders/HueSaturationShader.js +3 -6
  216. package/examples/js/shaders/KaleidoShader.js +3 -6
  217. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  218. package/examples/js/shaders/LuminosityShader.js +3 -6
  219. package/examples/js/shaders/MMDToonShader.js +2 -8
  220. package/examples/js/shaders/MirrorShader.js +3 -6
  221. package/examples/js/shaders/NormalMapShader.js +2 -6
  222. package/examples/js/shaders/RGBShiftShader.js +3 -6
  223. package/examples/js/shaders/SAOShader.js +2 -6
  224. package/examples/js/shaders/SMAAShader.js +6 -18
  225. package/examples/js/shaders/SSAOShader.js +2 -6
  226. package/examples/js/shaders/SSRShader.js +6 -18
  227. package/examples/js/shaders/SepiaShader.js +3 -6
  228. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  229. package/examples/js/shaders/TechnicolorShader.js +3 -6
  230. package/examples/js/shaders/ToneMapShader.js +3 -6
  231. package/examples/js/shaders/ToonShader.js +8 -24
  232. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  233. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  234. package/examples/js/shaders/VelocityShader.js +126 -0
  235. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  236. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  237. package/examples/js/shaders/VignetteShader.js +3 -6
  238. package/examples/js/shaders/VolumeShader.js +2 -6
  239. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  240. package/examples/js/textures/FlakesTexture.js +0 -1
  241. package/examples/js/utils/BufferGeometryUtils.js +236 -170
  242. package/examples/js/utils/CameraUtils.js +5 -20
  243. package/examples/js/utils/GPUStatsPanel.js +3 -12
  244. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  245. package/examples/js/utils/GeometryUtils.js +13 -18
  246. package/examples/js/utils/LDrawUtils.js +8 -11
  247. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  248. package/examples/js/utils/SceneUtils.js +117 -6
  249. package/examples/js/utils/ShadowMapViewer.js +17 -14
  250. package/examples/js/utils/SkeletonUtils.js +13 -27
  251. package/examples/js/utils/UVsDebug.js +20 -12
  252. package/examples/js/utils/WorkerPool.js +1 -11
  253. package/examples/jsm/animation/CCDIKSolver.js +27 -3
  254. package/examples/jsm/animation/MMDPhysics.js +25 -0
  255. package/examples/jsm/capabilities/WebGPU.js +3 -1
  256. package/examples/jsm/controls/FirstPersonControls.js +20 -20
  257. package/examples/jsm/controls/FlyControls.js +16 -17
  258. package/examples/jsm/controls/OrbitControls.js +44 -4
  259. package/examples/jsm/controls/TrackballControls.js +14 -2
  260. package/examples/jsm/controls/TransformControls.js +1 -1
  261. package/examples/jsm/csm/CSM.js +1 -0
  262. package/examples/jsm/csm/CSMHelper.js +30 -0
  263. package/examples/jsm/exporters/GLTFExporter.js +0 -79
  264. package/examples/jsm/exporters/USDZExporter.js +93 -1
  265. package/examples/jsm/helpers/OctreeHelper.js +22 -8
  266. package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
  267. package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
  268. package/examples/jsm/helpers/ViewHelper.js +24 -0
  269. package/examples/jsm/interactive/HTMLMesh.js +5 -6
  270. package/examples/jsm/interactive/InteractiveGroup.js +4 -2
  271. package/examples/jsm/libs/flow.module.js +610 -160
  272. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  273. package/examples/jsm/lines/LineSegments2.js +4 -0
  274. package/examples/jsm/loaders/3DMLoader.js +1 -2
  275. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  276. package/examples/jsm/loaders/FBXLoader.js +18 -2
  277. package/examples/jsm/loaders/GLTFLoader.js +269 -428
  278. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  279. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  280. package/examples/jsm/loaders/LottieLoader.js +4 -2
  281. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  282. package/examples/jsm/loaders/PCDLoader.js +1 -1
  283. package/examples/jsm/loaders/PLYLoader.js +68 -16
  284. package/examples/jsm/loaders/SVGLoader.js +227 -14
  285. package/examples/jsm/loaders/USDZLoader.js +351 -111
  286. package/examples/jsm/loaders/VRMLLoader.js +13 -1
  287. package/examples/jsm/math/ConvexHull.js +4 -4
  288. package/examples/jsm/math/Octree.js +1 -1
  289. package/examples/jsm/node-editor/NodeEditor.js +91 -12
  290. package/examples/jsm/node-editor/core/BaseNode.js +10 -3
  291. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +6 -9
  292. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +6 -9
  293. package/examples/jsm/node-editor/math/AngleEditor.js +3 -3
  294. package/examples/jsm/node-editor/math/InvertEditor.js +2 -2
  295. package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
  296. package/examples/jsm/node-editor/utils/PreviewEditor.js +4 -0
  297. package/examples/jsm/nodes/Nodes.js +30 -3
  298. package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
  299. package/examples/jsm/nodes/accessors/NormalNode.js +6 -6
  300. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  301. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  302. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  303. package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
  304. package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
  305. package/examples/jsm/nodes/core/AttributeNode.js +31 -8
  306. package/examples/jsm/nodes/core/Node.js +1 -1
  307. package/examples/jsm/nodes/core/NodeBuilder.js +55 -6
  308. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  309. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  310. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  311. package/examples/jsm/nodes/core/constants.js +13 -13
  312. package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
  313. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -12
  314. package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
  315. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  316. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  317. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
  318. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
  319. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
  320. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  321. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  322. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  323. package/examples/jsm/nodes/materials/Materials.js +9 -7
  324. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  325. package/examples/jsm/nodes/materialx/{Disclaimer.md → DISCLAIMER.md} +1 -1
  326. package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
  327. package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_hsv.js +1 -1
  328. package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_noise.js +13 -3
  329. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  330. package/examples/jsm/nodes/math/MathNode.js +5 -5
  331. package/examples/jsm/nodes/math/OperatorNode.js +16 -3
  332. package/examples/jsm/nodes/shadernode/ShaderNode.js +35 -20
  333. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +87 -63
  334. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +29 -0
  335. package/examples/jsm/nodes/utils/ConvertNode.js +15 -14
  336. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  337. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  338. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  339. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  340. package/examples/jsm/nodes/utils/OscNode.js +2 -2
  341. package/examples/jsm/nodes/utils/RemapNode.js +34 -0
  342. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  343. package/examples/jsm/nodes/utils/TimerNode.js +21 -1
  344. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  345. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  346. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  347. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  348. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  349. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  350. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  351. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  352. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  353. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  354. package/examples/jsm/postprocessing/OutlinePass.js +21 -1
  355. package/examples/jsm/postprocessing/Pass.js +2 -0
  356. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  357. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  358. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  359. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  360. package/examples/jsm/postprocessing/SavePass.js +17 -1
  361. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  362. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  363. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  364. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  365. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +56 -35
  366. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  367. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  368. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  369. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  370. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +41 -9
  371. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  372. package/examples/jsm/shaders/VelocityShader.js +128 -0
  373. package/examples/jsm/utils/BufferGeometryUtils.js +174 -42
  374. package/examples/jsm/utils/SceneUtils.js +129 -4
  375. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  376. package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
  377. package/package.json +13 -13
  378. package/src/Three.js +1 -0
  379. package/src/animation/PropertyBinding.js +7 -0
  380. package/src/audio/AudioContext.js +5 -5
  381. package/src/cameras/CubeCamera.js +14 -14
  382. package/src/constants.js +1 -1
  383. package/src/core/InstancedBufferGeometry.js +1 -7
  384. package/src/core/InterleavedBufferAttribute.js +4 -4
  385. package/src/extras/Earcut.js +67 -67
  386. package/src/geometries/PolyhedronGeometry.js +1 -1
  387. package/src/geometries/ShapeGeometry.js +1 -1
  388. package/src/helpers/ArrowHelper.js +9 -0
  389. package/src/helpers/Box3Helper.js +7 -0
  390. package/src/helpers/BoxHelper.js +7 -1
  391. package/src/helpers/DirectionalLightHelper.js +5 -1
  392. package/src/helpers/GridHelper.js +7 -0
  393. package/src/helpers/HemisphereLightHelper.js +4 -1
  394. package/src/helpers/PlaneHelper.js +9 -0
  395. package/src/helpers/PointLightHelper.js +2 -1
  396. package/src/helpers/PolarGridHelper.js +7 -0
  397. package/src/helpers/SkeletonHelper.js +7 -0
  398. package/src/helpers/SpotLightHelper.js +4 -2
  399. package/src/lights/LightShadow.js +1 -2
  400. package/src/lights/PointLight.js +2 -2
  401. package/src/lights/SpotLight.js +2 -2
  402. package/src/loaders/FileLoader.js +4 -1
  403. package/src/loaders/ObjectLoader.js +5 -1
  404. package/src/materials/Material.js +1 -1
  405. package/src/materials/MeshPhysicalMaterial.js +1 -1
  406. package/src/math/Color.js +5 -5
  407. package/src/math/Matrix3.js +53 -18
  408. package/src/math/Ray.js +2 -5
  409. package/src/math/Sphere.js +36 -21
  410. package/src/objects/InstancedMesh.js +7 -0
  411. package/src/objects/LOD.js +25 -6
  412. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  413. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  414. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  415. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  416. package/src/renderers/WebGLRenderTarget.js +1 -1
  417. package/src/renderers/WebGLRenderer.js +36 -62
  418. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  419. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  420. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  421. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  422. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  423. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
  424. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  425. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
  426. package/src/renderers/shaders/ShaderChunk.js +3 -0
  427. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  428. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  429. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  430. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
  431. package/src/renderers/shaders/ShaderLib.js +20 -6
  432. package/src/renderers/shaders/UniformsLib.js +1 -1
  433. package/src/renderers/shaders/UniformsUtils.js +15 -0
  434. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  435. package/src/renderers/webgl/WebGLBackground.js +15 -7
  436. package/src/renderers/webgl/WebGLLights.js +0 -4
  437. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  438. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  439. package/src/renderers/webgl/WebGLState.js +78 -41
  440. package/src/renderers/webgl/WebGLTextures.js +94 -39
  441. package/src/renderers/webgl/WebGLUniforms.js +152 -24
  442. package/src/renderers/webgl/WebGLUtils.js +1 -1
  443. package/src/renderers/webxr/WebXRController.js +46 -13
  444. package/src/renderers/webxr/WebXRManager.js +70 -2
  445. package/src/scenes/Scene.js +8 -0
  446. package/src/textures/CompressedArrayTexture.js +18 -0
  447. package/src/textures/Texture.js +2 -1
  448. package/examples/js/libs/lottie_canvas.js +0 -12751
  449. package/examples/js/shaders/PixelShader.js +0 -51
  450. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -135,28 +135,6 @@ function WebGLRenderer( parameters = {} ) {
135
135
  this.toneMapping = NoToneMapping;
136
136
  this.toneMappingExposure = 1.0;
137
137
 
138
- //
139
-
140
- Object.defineProperties( this, {
141
-
142
- // @deprecated since r136, 0e21088102b4de7e0a0a33140620b7a3424b9e6d
143
-
144
- gammaFactor: {
145
- get: function () {
146
-
147
- console.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );
148
- return 2;
149
-
150
- },
151
- set: function () {
152
-
153
- console.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );
154
-
155
- }
156
- }
157
-
158
- } );
159
-
160
138
  // internal properties
161
139
 
162
140
  const _this = this;
@@ -338,7 +316,7 @@ function WebGLRenderer( parameters = {} ) {
338
316
  materials = new WebGLMaterials( _this, properties );
339
317
  renderLists = new WebGLRenderLists();
340
318
  renderStates = new WebGLRenderStates( extensions, capabilities );
341
- background = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );
319
+ background = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, _premultipliedAlpha );
342
320
  shadowMap = new WebGLShadowMap( _this, objects, capabilities );
343
321
  uniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );
344
322
 
@@ -721,31 +699,48 @@ function WebGLRenderer( parameters = {} ) {
721
699
  //
722
700
 
723
701
  let index = geometry.index;
724
- const position = geometry.attributes.position;
702
+ let rangeFactor = 1;
703
+
704
+ if ( material.wireframe === true ) {
705
+
706
+ index = geometries.getWireframeAttribute( geometry );
707
+ rangeFactor = 2;
708
+
709
+ }
725
710
 
726
711
  //
727
712
 
728
- if ( index === null ) {
713
+ const drawRange = geometry.drawRange;
714
+ const position = geometry.attributes.position;
729
715
 
730
- if ( position === undefined || position.count === 0 ) return;
716
+ let drawStart = drawRange.start * rangeFactor;
717
+ let drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;
731
718
 
732
- } else if ( index.count === 0 ) {
719
+ if ( group !== null ) {
733
720
 
734
- return;
721
+ drawStart = Math.max( drawStart, group.start * rangeFactor );
722
+ drawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );
735
723
 
736
724
  }
737
725
 
738
- //
726
+ if ( index !== null ) {
739
727
 
740
- let rangeFactor = 1;
728
+ drawStart = Math.max( drawStart, 0 );
729
+ drawEnd = Math.min( drawEnd, index.count );
741
730
 
742
- if ( material.wireframe === true ) {
731
+ } else if ( position !== undefined && position !== null ) {
743
732
 
744
- index = geometries.getWireframeAttribute( geometry );
745
- rangeFactor = 2;
733
+ drawStart = Math.max( drawStart, 0 );
734
+ drawEnd = Math.min( drawEnd, position.count );
746
735
 
747
736
  }
748
737
 
738
+ const drawCount = drawEnd - drawStart;
739
+
740
+ if ( drawCount < 0 || drawCount === Infinity ) return;
741
+
742
+ //
743
+
749
744
  bindingStates.setup( object, material, program, geometry, index );
750
745
 
751
746
  let attribute;
@@ -762,23 +757,6 @@ function WebGLRenderer( parameters = {} ) {
762
757
 
763
758
  //
764
759
 
765
- const dataCount = ( index !== null ) ? index.count : position.count;
766
-
767
- const rangeStart = geometry.drawRange.start * rangeFactor;
768
- const rangeCount = geometry.drawRange.count * rangeFactor;
769
-
770
- const groupStart = group !== null ? group.start * rangeFactor : 0;
771
- const groupCount = group !== null ? group.count * rangeFactor : Infinity;
772
-
773
- const drawStart = Math.max( rangeStart, groupStart );
774
- const drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;
775
-
776
- const drawCount = Math.max( 0, drawEnd - drawStart + 1 );
777
-
778
- if ( drawCount === 0 ) return;
779
-
780
- //
781
-
782
760
  if ( object.isMesh ) {
783
761
 
784
762
  if ( material.wireframe === true ) {
@@ -830,7 +808,8 @@ function WebGLRenderer( parameters = {} ) {
830
808
 
831
809
  } else if ( geometry.isInstancedBufferGeometry ) {
832
810
 
833
- const instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );
811
+ const maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;
812
+ const instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );
834
813
 
835
814
  renderer.renderInstances( drawStart, drawCount, instanceCount );
836
815
 
@@ -1965,6 +1944,9 @@ function WebGLRenderer( parameters = {} ) {
1965
1944
  _currentActiveMipmapLevel = activeMipmapLevel;
1966
1945
 
1967
1946
  let useDefaultFramebuffer = true;
1947
+ let framebuffer = null;
1948
+ let isCube = false;
1949
+ let isRenderTarget3D = false;
1968
1950
 
1969
1951
  if ( renderTarget ) {
1970
1952
 
@@ -1987,17 +1969,9 @@ function WebGLRenderer( parameters = {} ) {
1987
1969
 
1988
1970
  }
1989
1971
 
1990
- }
1991
-
1992
- let framebuffer = null;
1993
- let isCube = false;
1994
- let isRenderTarget3D = false;
1995
-
1996
- if ( renderTarget ) {
1997
-
1998
1972
  const texture = renderTarget.texture;
1999
1973
 
2000
- if ( texture.isData3DTexture || texture.isDataArrayTexture ) {
1974
+ if ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {
2001
1975
 
2002
1976
  isRenderTarget3D = true;
2003
1977
 
@@ -2238,7 +2212,7 @@ function WebGLRenderer( parameters = {} ) {
2238
2212
 
2239
2213
  } else {
2240
2214
 
2241
- if ( srcTexture.isCompressedTexture ) {
2215
+ if ( srcTexture.isCompressedArrayTexture ) {
2242
2216
 
2243
2217
  console.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );
2244
2218
  _gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );
@@ -2274,7 +2248,7 @@ function WebGLRenderer( parameters = {} ) {
2274
2248
 
2275
2249
  textures.setTexture3D( texture, 0 );
2276
2250
 
2277
- } else if ( texture.isDataArrayTexture ) {
2251
+ } else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {
2278
2252
 
2279
2253
  textures.setTexture2DArray( texture, 0 );
2280
2254
 
@@ -38,10 +38,6 @@ export default /* glsl */`
38
38
 
39
39
  vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
40
40
 
41
- #elif defined( ENVMAP_TYPE_CUBE_UV )
42
-
43
- vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );
44
-
45
41
  #else
46
42
 
47
43
  vec4 envColor = vec4( 0.0 );
@@ -5,7 +5,6 @@ export default /* glsl */`
5
5
  *
6
6
  * Instructions for use:
7
7
  * - Ensure that both RE_Direct, RE_IndirectDiffuse and RE_IndirectSpecular are defined
8
- * - If you have defined an RE_IndirectSpecular, you need to also provide a Material_LightProbeLOD. <---- ???
9
8
  * - Create a material parameter that is to be passed as the third parameter to your lighting functions.
10
9
  *
11
10
  * TODO:
@@ -25,6 +25,4 @@ void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricCon
25
25
 
26
26
  #define RE_Direct RE_Direct_Lambert
27
27
  #define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert
28
-
29
- #define Material_LightProbeLOD( material ) (0)
30
28
  `;
@@ -29,6 +29,4 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in Geometric
29
29
 
30
30
  #define RE_Direct RE_Direct_BlinnPhong
31
31
  #define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong
32
-
33
- #define Material_LightProbeLOD( material ) (0)
34
32
  `;
@@ -23,6 +23,4 @@ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContex
23
23
 
24
24
  #define RE_Direct RE_Direct_Toon
25
25
  #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
26
-
27
- #define Material_LightProbeLOD( material ) (0)
28
26
  `;
@@ -3,10 +3,8 @@ float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
3
3
 
4
4
  #ifdef FLAT_SHADED
5
5
 
6
- // Workaround for Adreno GPUs not able to do dFdx( vViewPosition )
7
-
8
- vec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );
9
- vec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );
6
+ vec3 fdx = dFdx( vViewPosition );
7
+ vec3 fdy = dFdy( vViewPosition );
10
8
  vec3 normal = normalize( cross( fdx, fdy ) );
11
9
 
12
10
  #else
@@ -25,6 +25,14 @@ float unpackRGBAToDepth( const in vec4 v ) {
25
25
  return dot( v, UnpackFactors );
26
26
  }
27
27
 
28
+ vec2 packDepthToRG( in highp float v ) {
29
+ return packDepthToRGBA( v ).yx;
30
+ }
31
+
32
+ float unpackRGToDepth( const in highp vec2 v ) {
33
+ return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );
34
+ }
35
+
28
36
  vec4 pack2HalfToRGBA( vec2 v ) {
29
37
  vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );
30
38
  return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );
@@ -71,9 +71,9 @@ export default /* glsl */`
71
71
 
72
72
  vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
73
73
 
74
- if ( attenuationDistance == 0.0 ) {
74
+ if ( isinf( attenuationDistance ) ) {
75
75
 
76
- // Attenuation distance is +∞ (which we indicate by zero), i.e. the transmitted color is not attenuated at all.
76
+ // Attenuation distance is +∞, i.e. the transmitted color is not attenuated at all.
77
77
  return radiance;
78
78
 
79
79
  } else {
@@ -106,6 +106,7 @@ import uv2_vertex from './ShaderChunk/uv2_vertex.glsl.js';
106
106
  import worldpos_vertex from './ShaderChunk/worldpos_vertex.glsl.js';
107
107
 
108
108
  import * as background from './ShaderLib/background.glsl.js';
109
+ import * as backgroundCube from './ShaderLib/backgroundCube.glsl.js';
109
110
  import * as cube from './ShaderLib/cube.glsl.js';
110
111
  import * as depth from './ShaderLib/depth.glsl.js';
111
112
  import * as distanceRGBA from './ShaderLib/distanceRGBA.glsl.js';
@@ -232,6 +233,8 @@ export const ShaderChunk = {
232
233
 
233
234
  background_vert: background.vertex,
234
235
  background_frag: background.fragment,
236
+ backgroundCube_vert: backgroundCube.vertex,
237
+ backgroundCube_frag: backgroundCube.fragment,
235
238
  cube_vert: cube.vertex,
236
239
  cube_frag: cube.fragment,
237
240
  depth_vert: depth.vertex,
@@ -13,21 +13,26 @@ void main() {
13
13
 
14
14
  export const fragment = /* glsl */`
15
15
  uniform sampler2D t2D;
16
+ uniform float backgroundIntensity;
16
17
 
17
18
  varying vec2 vUv;
18
19
 
19
20
  void main() {
20
21
 
21
- gl_FragColor = texture2D( t2D, vUv );
22
+ vec4 texColor = texture2D( t2D, vUv );
22
23
 
23
24
  #ifdef DECODE_VIDEO_TEXTURE
24
25
 
25
26
  // inline sRGB decode (TODO: Remove this code when https://crbug.com/1256340 is solved)
26
27
 
27
- gl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w );
28
+ texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );
28
29
 
29
30
  #endif
30
31
 
32
+ texColor.rgb *= backgroundIntensity;
33
+
34
+ gl_FragColor = texColor;
35
+
31
36
  #include <tonemapping_fragment>
32
37
  #include <encodings_fragment>
33
38
 
@@ -0,0 +1,62 @@
1
+ export const vertex = /* glsl */`
2
+ varying vec3 vWorldDirection;
3
+
4
+ #include <common>
5
+
6
+ void main() {
7
+
8
+ vWorldDirection = transformDirection( position, modelMatrix );
9
+
10
+ #include <begin_vertex>
11
+ #include <project_vertex>
12
+
13
+ gl_Position.z = gl_Position.w; // set z to camera.far
14
+
15
+ }
16
+ `;
17
+
18
+ export const fragment = /* glsl */`
19
+
20
+ #ifdef ENVMAP_TYPE_CUBE
21
+
22
+ uniform samplerCube envMap;
23
+
24
+ #elif defined( ENVMAP_TYPE_CUBE_UV )
25
+
26
+ uniform sampler2D envMap;
27
+
28
+ #endif
29
+
30
+ uniform float flipEnvMap;
31
+ uniform float backgroundBlurriness;
32
+ uniform float backgroundIntensity;
33
+
34
+ varying vec3 vWorldDirection;
35
+
36
+ #include <cube_uv_reflection_fragment>
37
+
38
+ void main() {
39
+
40
+ #ifdef ENVMAP_TYPE_CUBE
41
+
42
+ vec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );
43
+
44
+ #elif defined( ENVMAP_TYPE_CUBE_UV )
45
+
46
+ vec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );
47
+
48
+ #else
49
+
50
+ vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );
51
+
52
+ #endif
53
+
54
+ texColor.rgb *= backgroundIntensity;
55
+
56
+ gl_FragColor = texColor;
57
+
58
+ #include <tonemapping_fragment>
59
+ #include <encodings_fragment>
60
+
61
+ }
62
+ `;
@@ -16,19 +16,17 @@ void main() {
16
16
  `;
17
17
 
18
18
  export const fragment = /* glsl */`
19
- #include <envmap_common_pars_fragment>
19
+ uniform samplerCube tCube;
20
+ uniform float tFlip;
20
21
  uniform float opacity;
21
22
 
22
23
  varying vec3 vWorldDirection;
23
24
 
24
- #include <cube_uv_reflection_fragment>
25
-
26
25
  void main() {
27
26
 
28
- vec3 vReflect = vWorldDirection;
29
- #include <envmap_fragment>
27
+ vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );
30
28
 
31
- gl_FragColor = envColor;
29
+ gl_FragColor = texColor;
32
30
  gl_FragColor.a *= opacity;
33
31
 
34
32
  #include <tonemapping_fragment>
@@ -20,9 +20,6 @@ void main() {
20
20
  float mean = 0.0;
21
21
  float squared_mean = 0.0;
22
22
 
23
- // This seems totally useless but it's a crazy work around for a Adreno compiler bug
24
- // float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );
25
-
26
23
  float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );
27
24
  float uvStart = samples <= 1.0 ? 0.0 : - 1.0;
28
25
  for ( float i = 0.0; i < samples; i ++ ) {
@@ -218,6 +218,7 @@ const ShaderLib = {
218
218
  uniforms: {
219
219
  uvTransform: { value: /*@__PURE__*/ new Matrix3() },
220
220
  t2D: { value: null },
221
+ backgroundIntensity: { value: 1 }
221
222
  },
222
223
 
223
224
  vertexShader: ShaderChunk.background_vert,
@@ -225,14 +226,27 @@ const ShaderLib = {
225
226
 
226
227
  },
227
228
 
229
+ backgroundCube: {
230
+
231
+ uniforms: {
232
+ envMap: { value: null },
233
+ flipEnvMap: { value: - 1 },
234
+ backgroundBlurriness: { value: 0 },
235
+ backgroundIntensity: { value: 1 }
236
+ },
237
+
238
+ vertexShader: ShaderChunk.backgroundCube_vert,
239
+ fragmentShader: ShaderChunk.backgroundCube_frag
240
+
241
+ },
242
+
228
243
  cube: {
229
244
 
230
- uniforms: /*@__PURE__*/ mergeUniforms( [
231
- UniformsLib.envmap,
232
- {
233
- opacity: { value: 1.0 }
234
- }
235
- ] ),
245
+ uniforms: {
246
+ tCube: { value: null },
247
+ tFlip: { value: - 1 },
248
+ opacity: { value: 1.0 }
249
+ },
236
250
 
237
251
  vertexShader: ShaderChunk.cube_vert,
238
252
  fragmentShader: ShaderChunk.cube_frag
@@ -34,7 +34,7 @@ const UniformsLib = {
34
34
  flipEnvMap: { value: - 1 },
35
35
  reflectivity: { value: 1.0 }, // basic, lambert, phong
36
36
  ior: { value: 1.5 }, // physical
37
- refractionRatio: { value: 0.98 } // basic, lambert, phong
37
+ refractionRatio: { value: 0.98 }, // basic, lambert, phong
38
38
 
39
39
  },
40
40
 
@@ -1,3 +1,5 @@
1
+ import { sRGBEncoding, LinearSRGBColorSpace, SRGBColorSpace } from '../../constants.js';
2
+
1
3
  /**
2
4
  * Uniform Utilities
3
5
  */
@@ -73,6 +75,19 @@ export function cloneUniformsGroups( src ) {
73
75
 
74
76
  }
75
77
 
78
+ export function getUnlitUniformColorSpace( renderer ) {
79
+
80
+ if ( renderer.getRenderTarget() === null ) {
81
+
82
+ // https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398
83
+ return renderer.outputEncoding === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;
84
+
85
+ }
86
+
87
+ return LinearSRGBColorSpace;
88
+
89
+ }
90
+
76
91
  // Legacy
77
92
 
78
93
  const UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };
@@ -112,6 +112,8 @@ function WebGLAttributes( gl, capabilities ) {
112
112
 
113
113
  }
114
114
 
115
+ attribute.onUploadCallback();
116
+
115
117
  }
116
118
 
117
119
  //
@@ -5,9 +5,11 @@ import { ShaderMaterial } from '../../materials/ShaderMaterial.js';
5
5
  import { Color } from '../../math/Color.js';
6
6
  import { Mesh } from '../../objects/Mesh.js';
7
7
  import { ShaderLib } from '../shaders/ShaderLib.js';
8
- import { cloneUniforms } from '../shaders/UniformsUtils.js';
8
+ import { cloneUniforms, getUnlitUniformColorSpace } from '../shaders/UniformsUtils.js';
9
9
 
10
- function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipliedAlpha ) {
10
+ const _rgb = { r: 0, b: 0, g: 0 };
11
+
12
+ function WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {
11
13
 
12
14
  const clearColor = new Color( 0x000000 );
13
15
  let clearAlpha = alpha === true ? 0 : 1;
@@ -26,7 +28,8 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
26
28
 
27
29
  if ( background && background.isTexture ) {
28
30
 
29
- background = cubemaps.get( background );
31
+ const usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background
32
+ background = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );
30
33
 
31
34
  }
32
35
 
@@ -67,9 +70,9 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
67
70
  new BoxGeometry( 1, 1, 1 ),
68
71
  new ShaderMaterial( {
69
72
  name: 'BackgroundCubeMaterial',
70
- uniforms: cloneUniforms( ShaderLib.cube.uniforms ),
71
- vertexShader: ShaderLib.cube.vertexShader,
72
- fragmentShader: ShaderLib.cube.fragmentShader,
73
+ uniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ),
74
+ vertexShader: ShaderLib.backgroundCube.vertexShader,
75
+ fragmentShader: ShaderLib.backgroundCube.fragmentShader,
73
76
  side: BackSide,
74
77
  depthTest: false,
75
78
  depthWrite: false,
@@ -103,6 +106,8 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
103
106
 
104
107
  boxMesh.material.uniforms.envMap.value = background;
105
108
  boxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;
109
+ boxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;
110
+ boxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;
106
111
 
107
112
  if ( currentBackground !== background ||
108
113
  currentBackgroundVersion !== background.version ||
@@ -157,6 +162,7 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
157
162
  }
158
163
 
159
164
  planeMesh.material.uniforms.t2D.value = background;
165
+ planeMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;
160
166
 
161
167
  if ( background.matrixAutoUpdate === true ) {
162
168
 
@@ -189,7 +195,9 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
189
195
 
190
196
  function setClear( color, alpha ) {
191
197
 
192
- state.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );
198
+ color.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );
199
+
200
+ state.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.b, alpha, premultipliedAlpha );
193
201
 
194
202
  }
195
203
 
@@ -333,10 +333,6 @@ function WebGLLights( extensions, capabilities ) {
333
333
 
334
334
  const uniforms = cache.get( light );
335
335
 
336
- // (a) intensity is the total visible light emitted
337
- //uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );
338
-
339
- // (b) intensity is the brightness of the light
340
336
  uniforms.color.copy( color ).multiplyScalar( intensity );
341
337
 
342
338
  uniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );
@@ -1,10 +1,11 @@
1
1
  import { BackSide } from '../../constants.js';
2
+ import { getUnlitUniformColorSpace } from '../shaders/UniformsUtils.js';
2
3
 
3
4
  function WebGLMaterials( renderer, properties ) {
4
5
 
5
6
  function refreshFogUniforms( uniforms, fog ) {
6
7
 
7
- uniforms.fogColor.value.copy( fog.color );
8
+ fog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );
8
9
 
9
10
  if ( fog.isFog ) {
10
11
 
@@ -244,7 +244,8 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
244
244
 
245
245
  if ( ( _renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||
246
246
  ( material.displacementMap && material.displacementScale !== 0 ) ||
247
- ( material.alphaMap && material.alphaTest > 0 ) ) {
247
+ ( material.alphaMap && material.alphaTest > 0 ) ||
248
+ ( material.map && material.alphaTest > 0 ) ) {
248
249
 
249
250
  // in this case we need a unique material instance reflecting the
250
251
  // appropriate state
@@ -288,6 +289,7 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
288
289
 
289
290
  result.alphaMap = material.alphaMap;
290
291
  result.alphaTest = material.alphaTest;
292
+ result.map = material.map;
291
293
 
292
294
  result.clipShadows = material.clipShadows;
293
295
  result.clippingPlanes = material.clippingPlanes;