super-three 0.179.0 → 0.184.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 (696) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +14522 -12207
  4. package/build/three.core.js +12005 -10954
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +2270 -1005
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +63 -18
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +16573 -7890
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +16533 -7888
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  15. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  16. package/examples/jsm/Addons.js +12 -4
  17. package/examples/jsm/animation/CCDIKSolver.js +8 -4
  18. package/examples/jsm/controls/ArcballControls.js +15 -12
  19. package/examples/jsm/controls/DragControls.js +9 -59
  20. package/examples/jsm/controls/FirstPersonControls.js +61 -57
  21. package/examples/jsm/controls/FlyControls.js +5 -1
  22. package/examples/jsm/controls/MapControls.js +55 -1
  23. package/examples/jsm/controls/OrbitControls.js +113 -10
  24. package/examples/jsm/controls/PointerLockControls.js +2 -10
  25. package/examples/jsm/controls/TrackballControls.js +9 -9
  26. package/examples/jsm/controls/TransformControls.js +35 -3
  27. package/examples/jsm/csm/CSM.js +2 -1
  28. package/examples/jsm/csm/CSMShadowNode.js +6 -2
  29. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  30. package/examples/jsm/effects/AsciiEffect.js +8 -8
  31. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  32. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  33. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  34. package/examples/jsm/exporters/EXRExporter.js +2 -2
  35. package/examples/jsm/exporters/GLTFExporter.js +185 -34
  36. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  37. package/examples/jsm/exporters/PLYExporter.js +1 -1
  38. package/examples/jsm/exporters/USDZExporter.js +31 -5
  39. package/examples/jsm/geometries/DecalGeometry.js +3 -3
  40. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  41. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  42. package/examples/jsm/geometries/TextGeometry.js +21 -2
  43. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  44. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  45. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  46. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  47. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  48. package/examples/jsm/helpers/ViewHelper.js +110 -13
  49. package/examples/jsm/inspector/Extension.js +13 -0
  50. package/examples/jsm/inspector/Inspector.js +542 -0
  51. package/examples/jsm/inspector/RendererInspector.js +425 -0
  52. package/examples/jsm/inspector/extensions/extensions.json +6 -0
  53. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  54. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  55. package/examples/jsm/inspector/tabs/Console.js +238 -0
  56. package/examples/jsm/inspector/tabs/Memory.js +128 -0
  57. package/examples/jsm/inspector/tabs/Parameters.js +380 -0
  58. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  59. package/examples/jsm/inspector/tabs/Settings.js +264 -0
  60. package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
  61. package/examples/jsm/inspector/tabs/Viewer.js +268 -0
  62. package/examples/jsm/inspector/ui/Graph.js +95 -0
  63. package/examples/jsm/inspector/ui/Item.js +170 -0
  64. package/examples/jsm/inspector/ui/List.js +75 -0
  65. package/examples/jsm/inspector/ui/Profiler.js +2072 -0
  66. package/examples/jsm/inspector/ui/Style.js +1667 -0
  67. package/examples/jsm/inspector/ui/Tab.js +265 -0
  68. package/examples/jsm/inspector/ui/Values.js +476 -0
  69. package/examples/jsm/inspector/ui/utils.js +69 -0
  70. package/examples/jsm/interaction/InteractionManager.js +226 -0
  71. package/examples/jsm/interactive/HTMLMesh.js +6 -10
  72. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  73. package/examples/jsm/interactive/SelectionBox.js +30 -0
  74. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  75. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  76. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  77. package/examples/jsm/lighting/LightProbeGrid.js +651 -0
  78. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  79. package/examples/jsm/lines/Line2.js +3 -3
  80. package/examples/jsm/lines/LineGeometry.js +1 -1
  81. package/examples/jsm/lines/LineMaterial.js +7 -1
  82. package/examples/jsm/lines/LineSegments2.js +2 -2
  83. package/examples/jsm/lines/Wireframe.js +2 -2
  84. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  85. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  86. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  87. package/examples/jsm/loaders/3DMLoader.js +5 -4
  88. package/examples/jsm/loaders/3MFLoader.js +3 -3
  89. package/examples/jsm/loaders/AMFLoader.js +2 -2
  90. package/examples/jsm/loaders/ColladaLoader.js +27 -4029
  91. package/examples/jsm/loaders/DDSLoader.js +1 -1
  92. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  93. package/examples/jsm/loaders/EXRLoader.js +692 -53
  94. package/examples/jsm/loaders/FBXLoader.js +237 -39
  95. package/examples/jsm/loaders/FontLoader.js +23 -5
  96. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  97. package/examples/jsm/loaders/GLTFLoader.js +159 -185
  98. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  99. package/examples/jsm/loaders/HDRLoader.js +485 -0
  100. package/examples/jsm/loaders/KMZLoader.js +5 -5
  101. package/examples/jsm/loaders/KTX2Loader.js +162 -53
  102. package/examples/jsm/loaders/KTXLoader.js +2 -2
  103. package/examples/jsm/loaders/LDrawLoader.js +41 -50
  104. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  105. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  106. package/examples/jsm/loaders/LWOLoader.js +9 -41
  107. package/examples/jsm/loaders/MaterialXLoader.js +22 -5
  108. package/examples/jsm/loaders/NRRDLoader.js +2 -2
  109. package/examples/jsm/loaders/OBJLoader.js +1 -1
  110. package/examples/jsm/loaders/PCDLoader.js +4 -2
  111. package/examples/jsm/loaders/PDBLoader.js +1 -1
  112. package/examples/jsm/loaders/RGBELoader.js +7 -473
  113. package/examples/jsm/loaders/SVGLoader.js +4 -4
  114. package/examples/jsm/loaders/TDSLoader.js +0 -2
  115. package/examples/jsm/loaders/TGALoader.js +0 -2
  116. package/examples/jsm/loaders/TTFLoader.js +4 -4
  117. package/examples/jsm/loaders/USDLoader.js +100 -40
  118. package/examples/jsm/loaders/UltraHDRLoader.js +287 -162
  119. package/examples/jsm/loaders/VOXLoader.js +660 -117
  120. package/examples/jsm/loaders/VRMLLoader.js +79 -2
  121. package/examples/jsm/loaders/VTKLoader.js +42 -25
  122. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  123. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  124. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  125. package/examples/jsm/loaders/usd/USDAParser.js +450 -363
  126. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  127. package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
  128. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  129. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  130. package/examples/jsm/math/ColorSpaces.js +19 -1
  131. package/examples/jsm/math/ConvexHull.js +3 -3
  132. package/examples/jsm/math/ImprovedNoise.js +1 -1
  133. package/examples/jsm/math/Lut.js +2 -2
  134. package/examples/jsm/math/Octree.js +131 -1
  135. package/examples/jsm/math/SimplexNoise.js +1 -1
  136. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  137. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  138. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  139. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  140. package/examples/jsm/misc/RollerCoaster.js +42 -4
  141. package/examples/jsm/misc/TubePainter.js +383 -40
  142. package/examples/jsm/misc/Volume.js +1 -2
  143. package/examples/jsm/misc/VolumeSlice.js +0 -1
  144. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  145. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  146. package/examples/jsm/objects/LensflareMesh.js +1 -1
  147. package/examples/jsm/objects/Reflector.js +73 -25
  148. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  149. package/examples/jsm/objects/Sky.js +91 -7
  150. package/examples/jsm/objects/SkyMesh.js +151 -17
  151. package/examples/jsm/objects/Water.js +7 -6
  152. package/examples/jsm/objects/Water2.js +5 -3
  153. package/examples/jsm/objects/WaterMesh.js +11 -13
  154. package/examples/jsm/physics/AmmoPhysics.js +12 -7
  155. package/examples/jsm/physics/JoltPhysics.js +10 -6
  156. package/examples/jsm/physics/RapierPhysics.js +9 -5
  157. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  158. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  159. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  160. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  161. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  162. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  163. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  164. package/examples/jsm/postprocessing/UnrealBloomPass.js +56 -24
  165. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  166. package/examples/jsm/renderers/CSS3DRenderer.js +8 -7
  167. package/examples/jsm/renderers/Projector.js +246 -28
  168. package/examples/jsm/renderers/SVGRenderer.js +175 -61
  169. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  170. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  171. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  172. package/examples/jsm/shaders/BokehShader.js +1 -1
  173. package/examples/jsm/shaders/BokehShader2.js +1 -1
  174. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  175. package/examples/jsm/shaders/FocusShader.js +1 -1
  176. package/examples/jsm/shaders/GTAOShader.js +21 -8
  177. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  178. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  179. package/examples/jsm/shaders/PoissonDenoiseShader.js +8 -4
  180. package/examples/jsm/shaders/SAOShader.js +17 -4
  181. package/examples/jsm/shaders/SSAOShader.js +11 -1
  182. package/examples/jsm/shaders/SSRShader.js +7 -6
  183. package/examples/jsm/shaders/SepiaShader.js +1 -1
  184. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  185. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  186. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +3 -5
  187. package/examples/jsm/shaders/VignetteShader.js +1 -1
  188. package/examples/jsm/transpiler/AST.js +44 -0
  189. package/examples/jsm/transpiler/GLSLDecoder.js +85 -25
  190. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  191. package/examples/jsm/transpiler/TSLEncoder.js +52 -10
  192. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  193. package/examples/jsm/transpiler/WGSLEncoder.js +51 -0
  194. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  195. package/examples/jsm/tsl/display/AfterImageNode.js +36 -24
  196. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  197. package/examples/jsm/tsl/display/AnamorphicNode.js +40 -5
  198. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  199. package/examples/jsm/tsl/display/BloomNode.js +23 -9
  200. package/examples/jsm/tsl/display/CRT.js +150 -0
  201. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +5 -37
  202. package/examples/jsm/tsl/display/DenoiseNode.js +3 -1
  203. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  204. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  205. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  206. package/examples/jsm/tsl/display/FXAANode.js +2 -2
  207. package/examples/jsm/tsl/display/GTAONode.js +59 -9
  208. package/examples/jsm/tsl/display/GaussianBlurNode.js +68 -35
  209. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  210. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  211. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  212. package/examples/jsm/tsl/display/OutlineNode.js +81 -20
  213. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  214. package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
  215. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  216. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  217. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  218. package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
  219. package/examples/jsm/tsl/display/SSGINode.js +638 -0
  220. package/examples/jsm/tsl/display/SSRNode.js +186 -69
  221. package/examples/jsm/tsl/display/SSSNode.js +490 -0
  222. package/examples/jsm/tsl/display/Shape.js +29 -0
  223. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  224. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  225. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  226. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  227. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  228. package/examples/jsm/tsl/display/TRAANode.js +381 -75
  229. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  230. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  231. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  232. package/examples/jsm/tsl/display/hashBlur.js +16 -18
  233. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  234. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  235. package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
  236. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  237. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  238. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  239. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  240. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  241. package/examples/jsm/tsl/math/Bayer.js +53 -3
  242. package/examples/jsm/utils/BufferGeometryUtils.js +3 -4
  243. package/examples/jsm/utils/ColorUtils.js +76 -0
  244. package/examples/jsm/utils/LDrawUtils.js +1 -1
  245. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  246. package/examples/jsm/utils/ShadowMapViewerGPU.js +13 -6
  247. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  248. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  249. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  250. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  251. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  252. package/examples/jsm/webxr/XRHandModelFactory.js +4 -7
  253. package/package.json +27 -38
  254. package/src/Three.Core.js +7 -3
  255. package/src/Three.TSL.js +61 -16
  256. package/src/Three.WebGPU.Nodes.js +7 -0
  257. package/src/Three.WebGPU.js +11 -0
  258. package/src/Three.js +1 -0
  259. package/src/animation/AnimationAction.js +12 -2
  260. package/src/animation/AnimationClip.js +21 -5
  261. package/src/animation/AnimationMixer.js +9 -3
  262. package/src/animation/AnimationObjectGroup.js +2 -1
  263. package/src/animation/AnimationUtils.js +1 -12
  264. package/src/animation/KeyframeTrack.js +54 -14
  265. package/src/animation/PropertyBinding.js +12 -11
  266. package/src/animation/PropertyMixer.js +4 -4
  267. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  268. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  269. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  270. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  271. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  272. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  273. package/src/audio/Audio.js +11 -10
  274. package/src/audio/AudioContext.js +2 -2
  275. package/src/audio/AudioListener.js +5 -3
  276. package/src/audio/PositionalAudio.js +1 -1
  277. package/src/cameras/Camera.js +32 -2
  278. package/src/cameras/CubeCamera.js +20 -0
  279. package/src/cameras/OrthographicCamera.js +1 -1
  280. package/src/cameras/PerspectiveCamera.js +1 -1
  281. package/src/cameras/StereoCamera.js +2 -2
  282. package/src/constants.js +100 -7
  283. package/src/core/BufferAttribute.js +13 -1
  284. package/src/core/BufferGeometry.js +24 -12
  285. package/src/core/Clock.js +7 -0
  286. package/src/core/EventDispatcher.js +1 -1
  287. package/src/core/InterleavedBuffer.js +1 -1
  288. package/src/core/InterleavedBufferAttribute.js +3 -2
  289. package/src/core/Object3D.js +55 -6
  290. package/src/core/Raycaster.js +4 -3
  291. package/src/core/RenderTarget.js +14 -5
  292. package/src/extras/Controls.js +5 -4
  293. package/src/extras/DataUtils.js +2 -1
  294. package/src/extras/Earcut.js +6 -0
  295. package/src/extras/ImageUtils.js +2 -2
  296. package/src/extras/PMREMGenerator.js +259 -57
  297. package/src/extras/TextureUtils.js +6 -1
  298. package/src/extras/core/Curve.js +2 -1
  299. package/src/extras/core/Interpolations.js +7 -1
  300. package/src/extras/core/ShapePath.js +4 -4
  301. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  302. package/src/extras/lib/earcut.js +8 -8
  303. package/src/geometries/BoxGeometry.js +1 -0
  304. package/src/geometries/CapsuleGeometry.js +1 -0
  305. package/src/geometries/CircleGeometry.js +1 -0
  306. package/src/geometries/ConeGeometry.js +1 -0
  307. package/src/geometries/CylinderGeometry.js +1 -0
  308. package/src/geometries/DodecahedronGeometry.js +1 -0
  309. package/src/geometries/ExtrudeGeometry.js +10 -8
  310. package/src/geometries/IcosahedronGeometry.js +1 -0
  311. package/src/geometries/LatheGeometry.js +1 -0
  312. package/src/geometries/OctahedronGeometry.js +1 -0
  313. package/src/geometries/PlaneGeometry.js +1 -0
  314. package/src/geometries/PolyhedronGeometry.js +1 -1
  315. package/src/geometries/RingGeometry.js +1 -0
  316. package/src/geometries/ShapeGeometry.js +1 -0
  317. package/src/geometries/SphereGeometry.js +1 -0
  318. package/src/geometries/TetrahedronGeometry.js +1 -0
  319. package/src/geometries/TorusGeometry.js +9 -3
  320. package/src/geometries/TorusKnotGeometry.js +1 -0
  321. package/src/geometries/TubeGeometry.js +1 -0
  322. package/src/helpers/CameraHelper.js +4 -1
  323. package/src/helpers/DirectionalLightHelper.js +4 -1
  324. package/src/helpers/HemisphereLightHelper.js +3 -0
  325. package/src/helpers/PointLightHelper.js +1 -25
  326. package/src/helpers/SpotLightHelper.js +3 -0
  327. package/src/lights/DirectionalLight.js +13 -0
  328. package/src/lights/HemisphereLight.js +10 -0
  329. package/src/lights/Light.js +1 -11
  330. package/src/lights/LightProbe.js +0 -15
  331. package/src/lights/LightShadow.js +15 -6
  332. package/src/lights/PointLight.js +15 -0
  333. package/src/lights/PointLightShadow.js +0 -86
  334. package/src/lights/SpotLight.js +22 -1
  335. package/src/lights/webgpu/IESSpotLight.js +2 -1
  336. package/src/lights/webgpu/ProjectorLight.js +1 -1
  337. package/src/loaders/AnimationLoader.js +2 -1
  338. package/src/loaders/AudioLoader.js +13 -2
  339. package/src/loaders/BufferGeometryLoader.js +2 -2
  340. package/src/loaders/Cache.js +30 -2
  341. package/src/loaders/DataTextureLoader.js +6 -4
  342. package/src/loaders/FileLoader.js +4 -4
  343. package/src/loaders/ImageBitmapLoader.js +17 -13
  344. package/src/loaders/ImageLoader.js +1 -1
  345. package/src/loaders/Loader.js +9 -3
  346. package/src/loaders/LoadingManager.js +25 -3
  347. package/src/loaders/MaterialLoader.js +6 -4
  348. package/src/loaders/ObjectLoader.js +57 -17
  349. package/src/loaders/TextureLoader.js +1 -1
  350. package/src/loaders/nodes/NodeLoader.js +5 -4
  351. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  352. package/src/materials/Material.js +18 -3
  353. package/src/materials/MeshBasicMaterial.js +1 -0
  354. package/src/materials/MeshDepthMaterial.js +1 -0
  355. package/src/materials/MeshDistanceMaterial.js +1 -1
  356. package/src/materials/MeshLambertMaterial.js +11 -1
  357. package/src/materials/MeshMatcapMaterial.js +22 -0
  358. package/src/materials/MeshNormalMaterial.js +1 -0
  359. package/src/materials/MeshPhongMaterial.js +11 -1
  360. package/src/materials/MeshPhysicalMaterial.js +2 -1
  361. package/src/materials/MeshStandardMaterial.js +8 -7
  362. package/src/materials/MeshToonMaterial.js +2 -1
  363. package/src/materials/PointsMaterial.js +1 -1
  364. package/src/materials/ShaderMaterial.js +22 -3
  365. package/src/materials/nodes/Line2NodeMaterial.js +36 -9
  366. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
  367. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  368. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
  369. package/src/materials/nodes/NodeMaterial.js +95 -35
  370. package/src/materials/nodes/PointsNodeMaterial.js +81 -28
  371. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  372. package/src/materials/nodes/manager/NodeMaterialObserver.js +194 -88
  373. package/src/math/Color.js +6 -5
  374. package/src/math/ColorManagement.js +9 -3
  375. package/src/math/Cylindrical.js +1 -1
  376. package/src/math/Euler.js +2 -1
  377. package/src/math/Line3.js +6 -5
  378. package/src/math/MathUtils.js +23 -21
  379. package/src/math/Matrix2.js +14 -10
  380. package/src/math/Matrix3.js +15 -11
  381. package/src/math/Matrix4.js +94 -81
  382. package/src/math/Plane.js +5 -4
  383. package/src/math/Quaternion.js +60 -84
  384. package/src/math/Sphere.js +1 -1
  385. package/src/math/Spherical.js +1 -1
  386. package/src/math/Triangle.js +1 -1
  387. package/src/math/Vector2.js +11 -7
  388. package/src/math/Vector3.js +15 -13
  389. package/src/math/Vector4.js +13 -9
  390. package/src/math/interpolants/BezierInterpolant.js +108 -0
  391. package/src/nodes/Nodes.js +86 -65
  392. package/src/nodes/TSL.js +11 -8
  393. package/src/nodes/accessors/Arrays.js +1 -1
  394. package/src/nodes/accessors/BatchNode.js +10 -10
  395. package/src/nodes/accessors/Bitangent.js +5 -5
  396. package/src/nodes/accessors/BufferAttributeNode.js +107 -15
  397. package/src/nodes/accessors/BufferNode.js +30 -3
  398. package/src/nodes/accessors/Camera.js +260 -13
  399. package/src/nodes/accessors/ClippingNode.js +10 -9
  400. package/src/nodes/accessors/CubeTextureNode.js +32 -6
  401. package/src/nodes/accessors/InstanceNode.js +164 -39
  402. package/src/nodes/accessors/Lights.js +10 -0
  403. package/src/nodes/accessors/MaterialNode.js +9 -1
  404. package/src/nodes/accessors/MaterialProperties.js +2 -5
  405. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  406. package/src/nodes/accessors/ModelNode.js +1 -1
  407. package/src/nodes/accessors/Normal.js +16 -15
  408. package/src/nodes/accessors/Object3DNode.js +2 -2
  409. package/src/nodes/accessors/Position.js +51 -3
  410. package/src/nodes/accessors/ReferenceBaseNode.js +7 -7
  411. package/src/nodes/accessors/ReferenceNode.js +11 -10
  412. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  413. package/src/nodes/accessors/SceneProperties.js +47 -0
  414. package/src/nodes/accessors/SkinningNode.js +27 -26
  415. package/src/nodes/accessors/StorageBufferNode.js +14 -24
  416. package/src/nodes/accessors/StorageTextureNode.js +62 -9
  417. package/src/nodes/accessors/Tangent.js +4 -14
  418. package/src/nodes/accessors/Texture3DNode.js +41 -31
  419. package/src/nodes/accessors/TextureNode.js +193 -63
  420. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  421. package/src/nodes/accessors/UserDataNode.js +1 -2
  422. package/src/nodes/accessors/VertexColorNode.js +1 -2
  423. package/src/nodes/code/FunctionCallNode.js +25 -5
  424. package/src/nodes/code/FunctionNode.js +25 -3
  425. package/src/nodes/core/ArrayNode.js +22 -2
  426. package/src/nodes/core/AssignNode.js +6 -5
  427. package/src/nodes/core/AttributeNode.js +5 -4
  428. package/src/nodes/core/BypassNode.js +1 -1
  429. package/src/nodes/core/ContextNode.js +133 -15
  430. package/src/nodes/core/IndexNode.js +4 -3
  431. package/src/nodes/core/InputNode.js +3 -2
  432. package/src/nodes/core/InspectorNode.js +128 -0
  433. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +41 -8
  434. package/src/nodes/core/MRTNode.js +48 -2
  435. package/src/nodes/core/Node.js +264 -46
  436. package/src/nodes/core/NodeBuilder.js +453 -87
  437. package/src/nodes/core/NodeError.js +28 -0
  438. package/src/nodes/core/NodeFrame.js +31 -23
  439. package/src/nodes/core/NodeFunction.js +2 -1
  440. package/src/nodes/core/NodeParser.js +2 -1
  441. package/src/nodes/core/NodeUniform.js +1 -1
  442. package/src/nodes/core/NodeUtils.js +25 -97
  443. package/src/nodes/core/OutputStructNode.js +12 -10
  444. package/src/nodes/core/ParameterNode.js +34 -3
  445. package/src/nodes/core/PropertyNode.js +26 -3
  446. package/src/nodes/core/StackNode.js +99 -23
  447. package/src/nodes/core/StackTrace.js +139 -0
  448. package/src/nodes/core/StructNode.js +22 -8
  449. package/src/nodes/core/StructTypeNode.js +13 -18
  450. package/src/nodes/core/SubBuildNode.js +4 -4
  451. package/src/nodes/core/UniformGroupNode.js +36 -6
  452. package/src/nodes/core/UniformNode.js +37 -13
  453. package/src/nodes/core/VarNode.js +96 -34
  454. package/src/nodes/core/VaryingNode.js +2 -18
  455. package/src/nodes/display/BlendModes.js +0 -63
  456. package/src/nodes/display/BumpMapNode.js +1 -1
  457. package/src/nodes/display/ColorAdjustment.js +18 -1
  458. package/src/nodes/display/ColorSpaceNode.js +3 -3
  459. package/src/nodes/display/FrontFacingNode.js +4 -8
  460. package/src/nodes/display/NormalMapNode.js +41 -5
  461. package/src/nodes/display/PassNode.js +175 -25
  462. package/src/nodes/display/RenderOutputNode.js +35 -9
  463. package/src/nodes/display/ScreenNode.js +47 -15
  464. package/src/nodes/display/ToneMappingNode.js +32 -5
  465. package/src/nodes/display/ToonOutlinePassNode.js +10 -2
  466. package/src/nodes/display/ViewportDepthNode.js +52 -4
  467. package/src/nodes/display/ViewportDepthTextureNode.js +14 -6
  468. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  469. package/src/nodes/display/ViewportTextureNode.js +72 -14
  470. package/src/nodes/fog/Fog.js +18 -34
  471. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  472. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  473. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  474. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  475. package/src/nodes/functions/BasicLightingModel.js +2 -1
  476. package/src/nodes/functions/PhysicalLightingModel.js +128 -46
  477. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  478. package/src/nodes/geometry/RangeNode.js +44 -6
  479. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  480. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  481. package/src/nodes/gpgpu/ComputeBuiltinNode.js +4 -4
  482. package/src/nodes/gpgpu/ComputeNode.js +76 -38
  483. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  484. package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -4
  485. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  486. package/src/nodes/lighting/EnvironmentNode.js +34 -9
  487. package/src/nodes/lighting/LightsNode.js +10 -32
  488. package/src/nodes/lighting/PointShadowNode.js +167 -148
  489. package/src/nodes/lighting/ShadowFilterNode.js +55 -65
  490. package/src/nodes/lighting/ShadowNode.js +189 -44
  491. package/src/nodes/math/BitcastNode.js +156 -0
  492. package/src/nodes/math/BitcountNode.js +433 -0
  493. package/src/nodes/math/ConditionalNode.js +25 -8
  494. package/src/nodes/math/MathNode.js +98 -57
  495. package/src/nodes/math/OperatorNode.js +8 -5
  496. package/src/nodes/math/PackFloatNode.js +98 -0
  497. package/src/nodes/math/UnpackFloatNode.js +96 -0
  498. package/src/nodes/pmrem/PMREMNode.js +1 -1
  499. package/src/nodes/pmrem/PMREMUtils.js +111 -2
  500. package/src/nodes/shapes/Shapes.js +1 -1
  501. package/src/nodes/tsl/TSLBase.js +6 -3
  502. package/src/nodes/tsl/TSLCore.js +488 -166
  503. package/src/nodes/utils/ArrayElementNode.js +14 -1
  504. package/src/nodes/utils/ConvertNode.js +1 -1
  505. package/src/nodes/utils/DebugNode.js +14 -13
  506. package/src/nodes/utils/EventNode.js +67 -2
  507. package/src/nodes/utils/FlipNode.js +1 -1
  508. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  509. package/src/nodes/utils/JoinNode.js +7 -4
  510. package/src/nodes/utils/LoopNode.js +20 -24
  511. package/src/nodes/utils/MemberNode.js +60 -8
  512. package/src/nodes/utils/Packing.js +13 -1
  513. package/src/nodes/utils/PostProcessingUtils.js +60 -1
  514. package/src/nodes/utils/RTTNode.js +14 -4
  515. package/src/nodes/utils/ReflectorNode.js +61 -11
  516. package/src/nodes/utils/Remap.js +48 -0
  517. package/src/nodes/utils/RotateNode.js +1 -1
  518. package/src/nodes/utils/SampleNode.js +12 -2
  519. package/src/nodes/utils/SetNode.js +1 -1
  520. package/src/nodes/utils/SplitNode.js +12 -1
  521. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  522. package/src/nodes/utils/Timer.js +0 -47
  523. package/src/nodes/utils/UVUtils.js +28 -0
  524. package/src/objects/BatchedMesh.js +46 -18
  525. package/src/objects/InstancedMesh.js +30 -3
  526. package/src/objects/LOD.js +1 -1
  527. package/src/objects/Line.js +3 -2
  528. package/src/objects/LineSegments.js +2 -1
  529. package/src/objects/Mesh.js +1 -1
  530. package/src/objects/Points.js +1 -1
  531. package/src/objects/Skeleton.js +12 -2
  532. package/src/objects/SkinnedMesh.js +29 -10
  533. package/src/objects/Sprite.js +4 -3
  534. package/src/renderers/WebGLRenderer.js +372 -179
  535. package/src/renderers/common/Animation.js +16 -4
  536. package/src/renderers/common/Attributes.js +16 -2
  537. package/src/renderers/common/Backend.js +137 -35
  538. package/src/renderers/common/Background.js +28 -14
  539. package/src/renderers/common/BindGroup.js +1 -16
  540. package/src/renderers/common/Binding.js +11 -0
  541. package/src/renderers/common/Bindings.js +83 -12
  542. package/src/renderers/common/BlendMode.js +143 -0
  543. package/src/renderers/common/Buffer.js +40 -0
  544. package/src/renderers/common/BundleGroup.js +1 -1
  545. package/src/renderers/common/CanvasTarget.js +341 -0
  546. package/src/renderers/common/ChainMap.js +30 -6
  547. package/src/renderers/common/ComputePipeline.js +1 -1
  548. package/src/renderers/common/CubeRenderTarget.js +51 -7
  549. package/src/renderers/common/DataMap.js +1 -1
  550. package/src/renderers/common/Geometries.js +55 -3
  551. package/src/renderers/common/Info.js +337 -6
  552. package/src/renderers/common/InspectorBase.js +151 -0
  553. package/src/renderers/common/Lighting.js +5 -21
  554. package/src/renderers/common/Pipelines.js +41 -8
  555. package/src/renderers/common/PostProcessing.js +9 -226
  556. package/src/renderers/common/QuadMesh.js +7 -1
  557. package/src/renderers/common/ReadbackBuffer.js +78 -0
  558. package/src/renderers/common/RenderBundle.js +3 -1
  559. package/src/renderers/common/RenderBundles.js +7 -3
  560. package/src/renderers/common/RenderContext.js +18 -2
  561. package/src/renderers/common/RenderContexts.js +33 -49
  562. package/src/renderers/common/RenderList.js +7 -3
  563. package/src/renderers/common/RenderLists.js +2 -1
  564. package/src/renderers/common/RenderObject.js +32 -6
  565. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  566. package/src/renderers/common/RenderObjects.js +22 -6
  567. package/src/renderers/common/RenderPipeline.js +232 -17
  568. package/src/renderers/common/Renderer.js +927 -335
  569. package/src/renderers/common/RendererUtils.js +9 -0
  570. package/src/renderers/common/SampledTexture.js +9 -1
  571. package/src/renderers/common/Sampler.js +52 -14
  572. package/src/renderers/common/StorageBuffer.js +13 -1
  573. package/src/renderers/common/StorageTexture.js +9 -1
  574. package/src/renderers/common/Textures.js +208 -47
  575. package/src/renderers/common/TimestampQueryPool.js +70 -6
  576. package/src/renderers/common/Uniform.js +8 -0
  577. package/src/renderers/common/UniformsGroup.js +64 -2
  578. package/src/renderers/common/XRManager.js +79 -51
  579. package/src/renderers/common/extras/PMREMGenerator.js +176 -79
  580. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  581. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  582. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +260 -95
  583. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  584. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  585. package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
  586. package/src/renderers/shaders/DFGLUTData.js +49 -0
  587. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  588. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  589. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  590. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  591. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  592. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  593. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -2
  594. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
  595. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  596. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  597. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  598. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  599. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  600. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
  601. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  602. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +152 -59
  603. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  604. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  605. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  606. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  607. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  608. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  609. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  610. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +221 -190
  611. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  612. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  613. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  614. package/src/renderers/shaders/ShaderChunk.js +5 -3
  615. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  616. package/src/renderers/shaders/ShaderLib/depth.glsl.js +4 -1
  617. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
  618. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  619. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  620. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  621. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  622. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  623. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  624. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  625. package/src/renderers/shaders/ShaderLib.js +7 -6
  626. package/src/renderers/shaders/UniformsLib.js +8 -5
  627. package/src/renderers/shaders/UniformsUtils.js +52 -9
  628. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  629. package/src/renderers/webgl/WebGLBackground.js +15 -15
  630. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  631. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  632. package/src/renderers/webgl/WebGLCapabilities.js +11 -5
  633. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  634. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  635. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  636. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  637. package/src/renderers/webgl/WebGLInfo.js +3 -1
  638. package/src/renderers/webgl/WebGLLights.js +18 -1
  639. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  640. package/src/renderers/webgl/WebGLObjects.js +3 -1
  641. package/src/renderers/webgl/WebGLOutput.js +270 -0
  642. package/src/renderers/webgl/WebGLProgram.js +63 -122
  643. package/src/renderers/webgl/WebGLPrograms.js +65 -52
  644. package/src/renderers/webgl/WebGLRenderLists.js +15 -0
  645. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  646. package/src/renderers/webgl/WebGLShadowMap.js +191 -26
  647. package/src/renderers/webgl/WebGLState.js +79 -40
  648. package/src/renderers/webgl/WebGLTextures.js +234 -68
  649. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  650. package/src/renderers/webgl/WebGLUniformsGroups.js +24 -3
  651. package/src/renderers/webgl/WebGLUtils.js +8 -3
  652. package/src/renderers/webgl-fallback/WebGLBackend.js +438 -235
  653. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  654. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +339 -84
  655. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  656. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  657. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  658. package/src/renderers/webgl-fallback/utils/WebGLState.js +229 -11
  659. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +237 -72
  660. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +56 -27
  661. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +8 -3
  662. package/src/renderers/webgpu/WebGPUBackend.js +403 -253
  663. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  664. package/src/renderers/webgpu/WebGPURenderer.js +5 -3
  665. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +491 -123
  666. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +108 -34
  667. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +360 -201
  668. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  669. package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -2
  670. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +111 -54
  671. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +155 -205
  672. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +407 -149
  673. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +36 -13
  674. package/src/renderers/webgpu/utils/WebGPUUtils.js +55 -13
  675. package/src/renderers/webxr/WebXRController.js +12 -0
  676. package/src/renderers/webxr/WebXRManager.js +45 -29
  677. package/src/textures/CubeDepthTexture.js +76 -0
  678. package/src/textures/ExternalTexture.js +15 -4
  679. package/src/textures/HTMLTexture.js +74 -0
  680. package/src/textures/Source.js +5 -4
  681. package/src/textures/Texture.js +19 -7
  682. package/src/textures/VideoTexture.js +2 -3
  683. package/src/utils.js +344 -3
  684. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
  685. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  686. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  687. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  688. package/src/nodes/accessors/SceneNode.js +0 -144
  689. package/src/nodes/code/ScriptableNode.js +0 -726
  690. package/src/nodes/code/ScriptableValueNode.js +0 -253
  691. package/src/nodes/display/PosterizeNode.js +0 -65
  692. package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
  693. package/src/nodes/utils/RemapNode.js +0 -125
  694. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  695. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  696. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -1,10 +1,12 @@
1
1
  import { BackSide } from '../../constants.js';
2
2
  import { getUnlitUniformColorSpace } from '../shaders/UniformsUtils.js';
3
- import { Euler } from '../../math/Euler.js';
3
+ import { Matrix3 } from '../../math/Matrix3.js';
4
4
  import { Matrix4 } from '../../math/Matrix4.js';
5
5
 
6
- const _e1 = /*@__PURE__*/ new Euler();
7
6
  const _m1 = /*@__PURE__*/ new Matrix4();
7
+ const _m = /*@__PURE__*/ new Matrix3();
8
+
9
+ _m.set( - 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0 );
8
10
 
9
11
  function WebGLMaterials( renderer, properties ) {
10
12
 
@@ -39,7 +41,11 @@ function WebGLMaterials( renderer, properties ) {
39
41
 
40
42
  function refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {
41
43
 
42
- if ( material.isMeshBasicMaterial ) {
44
+ if ( material.isNodeMaterial ) {
45
+
46
+ material.uniformsNeedUpdate = false;
47
+
48
+ } else if ( material.isMeshBasicMaterial ) {
43
49
 
44
50
  refreshUniformsCommon( uniforms, material );
45
51
 
@@ -47,6 +53,12 @@ function WebGLMaterials( renderer, properties ) {
47
53
 
48
54
  refreshUniformsCommon( uniforms, material );
49
55
 
56
+ if ( material.envMap ) {
57
+
58
+ uniforms.envMapIntensity.value = material.envMapIntensity;
59
+
60
+ }
61
+
50
62
  } else if ( material.isMeshToonMaterial ) {
51
63
 
52
64
  refreshUniformsCommon( uniforms, material );
@@ -57,6 +69,12 @@ function WebGLMaterials( renderer, properties ) {
57
69
  refreshUniformsCommon( uniforms, material );
58
70
  refreshUniformsPhong( uniforms, material );
59
71
 
72
+ if ( material.envMap ) {
73
+
74
+ uniforms.envMapIntensity.value = material.envMapIntensity;
75
+
76
+ }
77
+
60
78
  } else if ( material.isMeshStandardMaterial ) {
61
79
 
62
80
  refreshUniformsCommon( uniforms, material );
@@ -223,23 +241,16 @@ function WebGLMaterials( renderer, properties ) {
223
241
 
224
242
  uniforms.envMap.value = envMap;
225
243
 
226
- _e1.copy( envMapRotation );
244
+ // note: since the matrix is orthonormal, we can use the more-efficient transpose() in lieu of invert()
245
+ uniforms.envMapRotation.value.setFromMatrix4( _m1.makeRotationFromEuler( envMapRotation ) ).transpose();
227
246
 
228
- // accommodate left-handed frame
229
- _e1.x *= - 1; _e1.y *= - 1; _e1.z *= - 1;
230
247
 
231
248
  if ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) {
232
249
 
233
- // environment maps which are not cube render targets or PMREMs follow a different convention
234
- _e1.y *= - 1;
235
- _e1.z *= - 1;
250
+ uniforms.envMapRotation.value.premultiply( _m );
236
251
 
237
252
  }
238
253
 
239
- uniforms.envMapRotation.value.setFromMatrix4( _m1.makeRotationFromEuler( _e1 ) );
240
-
241
- uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;
242
-
243
254
  uniforms.reflectivity.value = material.reflectivity;
244
255
  uniforms.ior.value = material.ior;
245
256
  uniforms.refractionRatio.value = material.refractionRatio;
@@ -1,4 +1,4 @@
1
- function WebGLObjects( gl, geometries, attributes, info ) {
1
+ function WebGLObjects( gl, geometries, attributes, bindingStates, info ) {
2
2
 
3
3
  let updateMap = new WeakMap();
4
4
 
@@ -73,6 +73,8 @@ function WebGLObjects( gl, geometries, attributes, info ) {
73
73
 
74
74
  instancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );
75
75
 
76
+ bindingStates.releaseStatesOfObject( instancedMesh );
77
+
76
78
  attributes.remove( instancedMesh.instanceMatrix );
77
79
 
78
80
  if ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );
@@ -0,0 +1,270 @@
1
+ import {
2
+ NoToneMapping,
3
+ LinearToneMapping,
4
+ ReinhardToneMapping,
5
+ CineonToneMapping,
6
+ ACESFilmicToneMapping,
7
+ AgXToneMapping,
8
+ NeutralToneMapping,
9
+ CustomToneMapping,
10
+ SRGBTransfer,
11
+ HalfFloatType
12
+ } from '../../constants.js';
13
+ import { BufferGeometry } from '../../core/BufferGeometry.js';
14
+ import { Float32BufferAttribute } from '../../core/BufferAttribute.js';
15
+ import { RawShaderMaterial } from '../../materials/RawShaderMaterial.js';
16
+ import { Mesh } from '../../objects/Mesh.js';
17
+ import { OrthographicCamera } from '../../cameras/OrthographicCamera.js';
18
+ import { DepthTexture } from '../../textures/DepthTexture.js';
19
+ import { WebGLRenderTarget } from '../WebGLRenderTarget.js';
20
+ import { ColorManagement } from '../../math/ColorManagement.js';
21
+
22
+ const toneMappingMap = {
23
+ [ LinearToneMapping ]: 'LINEAR_TONE_MAPPING',
24
+ [ ReinhardToneMapping ]: 'REINHARD_TONE_MAPPING',
25
+ [ CineonToneMapping ]: 'CINEON_TONE_MAPPING',
26
+ [ ACESFilmicToneMapping ]: 'ACES_FILMIC_TONE_MAPPING',
27
+ [ AgXToneMapping ]: 'AGX_TONE_MAPPING',
28
+ [ NeutralToneMapping ]: 'NEUTRAL_TONE_MAPPING',
29
+ [ CustomToneMapping ]: 'CUSTOM_TONE_MAPPING'
30
+ };
31
+
32
+ function WebGLOutput( type, width, height, depth, stencil ) {
33
+
34
+ // render targets for scene and post-processing
35
+ const targetA = new WebGLRenderTarget( width, height, {
36
+ type: type,
37
+ depthBuffer: depth,
38
+ stencilBuffer: stencil,
39
+ depthTexture: depth ? new DepthTexture( width, height ) : undefined
40
+ } );
41
+
42
+ const targetB = new WebGLRenderTarget( width, height, {
43
+ type: HalfFloatType,
44
+ depthBuffer: false,
45
+ stencilBuffer: false
46
+ } );
47
+
48
+ // create fullscreen triangle geometry
49
+ const geometry = new BufferGeometry();
50
+ geometry.setAttribute( 'position', new Float32BufferAttribute( [ - 1, 3, 0, - 1, - 1, 0, 3, - 1, 0 ], 3 ) );
51
+ geometry.setAttribute( 'uv', new Float32BufferAttribute( [ 0, 2, 0, 0, 2, 0 ], 2 ) );
52
+
53
+ // create output material with tone mapping support
54
+ const material = new RawShaderMaterial( {
55
+ uniforms: {
56
+ tDiffuse: { value: null }
57
+ },
58
+ vertexShader: /* glsl */`
59
+ precision highp float;
60
+
61
+ uniform mat4 modelViewMatrix;
62
+ uniform mat4 projectionMatrix;
63
+
64
+ attribute vec3 position;
65
+ attribute vec2 uv;
66
+
67
+ varying vec2 vUv;
68
+
69
+ void main() {
70
+ vUv = uv;
71
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
72
+ }`,
73
+ fragmentShader: /* glsl */`
74
+ precision highp float;
75
+
76
+ uniform sampler2D tDiffuse;
77
+
78
+ varying vec2 vUv;
79
+
80
+ #include <tonemapping_pars_fragment>
81
+ #include <colorspace_pars_fragment>
82
+
83
+ void main() {
84
+ gl_FragColor = texture2D( tDiffuse, vUv );
85
+
86
+ #ifdef LINEAR_TONE_MAPPING
87
+ gl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb );
88
+ #elif defined( REINHARD_TONE_MAPPING )
89
+ gl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb );
90
+ #elif defined( CINEON_TONE_MAPPING )
91
+ gl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb );
92
+ #elif defined( ACES_FILMIC_TONE_MAPPING )
93
+ gl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb );
94
+ #elif defined( AGX_TONE_MAPPING )
95
+ gl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb );
96
+ #elif defined( NEUTRAL_TONE_MAPPING )
97
+ gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb );
98
+ #elif defined( CUSTOM_TONE_MAPPING )
99
+ gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb );
100
+ #endif
101
+
102
+ #ifdef SRGB_TRANSFER
103
+ gl_FragColor = sRGBTransferOETF( gl_FragColor );
104
+ #endif
105
+ }`,
106
+ depthTest: false,
107
+ depthWrite: false
108
+ } );
109
+
110
+ const mesh = new Mesh( geometry, material );
111
+ const camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
112
+
113
+ let _outputColorSpace = null;
114
+ let _outputToneMapping = null;
115
+ let _isCompositing = false;
116
+ let _savedToneMapping;
117
+ let _savedRenderTarget = null;
118
+ let _effects = [];
119
+ let _hasRenderPass = false;
120
+
121
+ this.setSize = function ( width, height ) {
122
+
123
+ targetA.setSize( width, height );
124
+ targetB.setSize( width, height );
125
+
126
+ for ( let i = 0; i < _effects.length; i ++ ) {
127
+
128
+ const effect = _effects[ i ];
129
+ if ( effect.setSize ) effect.setSize( width, height );
130
+
131
+ }
132
+
133
+ };
134
+
135
+ this.setEffects = function ( effects ) {
136
+
137
+ _effects = effects;
138
+ _hasRenderPass = _effects.length > 0 && _effects[ 0 ].isRenderPass === true;
139
+
140
+ const width = targetA.width;
141
+ const height = targetA.height;
142
+
143
+ for ( let i = 0; i < _effects.length; i ++ ) {
144
+
145
+ const effect = _effects[ i ];
146
+ if ( effect.setSize ) effect.setSize( width, height );
147
+
148
+ }
149
+
150
+ };
151
+
152
+ this.begin = function ( renderer, renderTarget ) {
153
+
154
+ // Don't begin during compositing phase (post-processing effects call render())
155
+ if ( _isCompositing ) return false;
156
+
157
+ if ( renderer.toneMapping === NoToneMapping && _effects.length === 0 ) return false;
158
+
159
+ _savedRenderTarget = renderTarget;
160
+
161
+ // resize internal buffers to match render target (e.g. XR resolution)
162
+ if ( renderTarget !== null ) {
163
+
164
+ const width = renderTarget.width;
165
+ const height = renderTarget.height;
166
+
167
+ if ( targetA.width !== width || targetA.height !== height ) {
168
+
169
+ this.setSize( width, height );
170
+
171
+ }
172
+
173
+ }
174
+
175
+ // if first effect is a RenderPass, it will set its own render target
176
+ if ( _hasRenderPass === false ) {
177
+
178
+ renderer.setRenderTarget( targetA );
179
+
180
+ }
181
+
182
+ // disable tone mapping during render - it will be applied in end()
183
+ _savedToneMapping = renderer.toneMapping;
184
+ renderer.toneMapping = NoToneMapping;
185
+
186
+ return true;
187
+
188
+ };
189
+
190
+ this.hasRenderPass = function () {
191
+
192
+ return _hasRenderPass;
193
+
194
+ };
195
+
196
+ this.end = function ( renderer, deltaTime ) {
197
+
198
+ // restore tone mapping
199
+ renderer.toneMapping = _savedToneMapping;
200
+
201
+ _isCompositing = true;
202
+
203
+ // run post-processing effects
204
+ let readBuffer = targetA;
205
+ let writeBuffer = targetB;
206
+
207
+ for ( let i = 0; i < _effects.length; i ++ ) {
208
+
209
+ const effect = _effects[ i ];
210
+
211
+ if ( effect.enabled === false ) continue;
212
+
213
+ effect.render( renderer, writeBuffer, readBuffer, deltaTime );
214
+
215
+ if ( effect.needsSwap !== false ) {
216
+
217
+ const temp = readBuffer;
218
+ readBuffer = writeBuffer;
219
+ writeBuffer = temp;
220
+
221
+ }
222
+
223
+ }
224
+
225
+ // update output material defines if settings changed
226
+ if ( _outputColorSpace !== renderer.outputColorSpace || _outputToneMapping !== renderer.toneMapping ) {
227
+
228
+ _outputColorSpace = renderer.outputColorSpace;
229
+ _outputToneMapping = renderer.toneMapping;
230
+
231
+ material.defines = {};
232
+
233
+ if ( ColorManagement.getTransfer( _outputColorSpace ) === SRGBTransfer ) material.defines.SRGB_TRANSFER = '';
234
+
235
+ const toneMapping = toneMappingMap[ _outputToneMapping ];
236
+ if ( toneMapping ) material.defines[ toneMapping ] = '';
237
+
238
+ material.needsUpdate = true;
239
+
240
+ }
241
+
242
+ // final output to canvas (or XR render target)
243
+ material.uniforms.tDiffuse.value = readBuffer.texture;
244
+ renderer.setRenderTarget( _savedRenderTarget );
245
+ renderer.render( mesh, camera );
246
+
247
+ _savedRenderTarget = null;
248
+ _isCompositing = false;
249
+
250
+ };
251
+
252
+ this.isCompositing = function () {
253
+
254
+ return _isCompositing;
255
+
256
+ };
257
+
258
+ this.dispose = function () {
259
+
260
+ if ( targetA.depthTexture ) targetA.depthTexture.dispose();
261
+ targetA.dispose();
262
+ targetB.dispose();
263
+ geometry.dispose();
264
+ material.dispose();
265
+
266
+ };
267
+
268
+ }
269
+
270
+ export { WebGLOutput };
@@ -1,10 +1,11 @@
1
1
  import { WebGLUniforms } from './WebGLUniforms.js';
2
2
  import { WebGLShader } from './WebGLShader.js';
3
3
  import { ShaderChunk } from '../shaders/ShaderChunk.js';
4
- import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, AgXToneMapping, ACESFilmicToneMapping, NeutralToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GLSL3, LinearTransfer, SRGBTransfer } from '../../constants.js';
4
+ import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFShadowMap, VSMShadowMap, AgXToneMapping, ACESFilmicToneMapping, NeutralToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GLSL3, LinearTransfer, SRGBTransfer } from '../../constants.js';
5
5
  import { ColorManagement } from '../../math/ColorManagement.js';
6
6
  import { Vector3 } from '../../math/Vector3.js';
7
7
  import { Matrix3 } from '../../math/Matrix3.js';
8
+ import { warn, error } from '../../utils.js';
8
9
 
9
10
  // From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/
10
11
  const COMPLETION_STATUS_KHR = 0x91B1;
@@ -47,7 +48,7 @@ function getEncodingComponents( colorSpace ) {
47
48
  return [ encodingMatrix, 'sRGBTransferOETF' ];
48
49
 
49
50
  default:
50
- console.warn( 'THREE.WebGLProgram: Unsupported color space: ', colorSpace );
51
+ warn( 'WebGLProgram: Unsupported color space: ', colorSpace );
51
52
  return [ encodingMatrix, 'LinearTransferOETF' ];
52
53
 
53
54
  }
@@ -67,7 +68,7 @@ function getShaderErrors( gl, shader, type ) {
67
68
  if ( errorMatches ) {
68
69
 
69
70
  // --enable-privileged-webgl-extension
70
- // console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );
71
+ // log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );
71
72
 
72
73
  const errorLine = parseInt( errorMatches[ 1 ] );
73
74
  return type.toUpperCase() + '\n\n' + errors + '\n\n' + handleSource( gl.getShaderSource( shader ), errorLine );
@@ -96,43 +97,24 @@ function getTexelEncodingFunction( functionName, colorSpace ) {
96
97
 
97
98
  }
98
99
 
99
- function getToneMappingFunction( functionName, toneMapping ) {
100
-
101
- let toneMappingName;
102
-
103
- switch ( toneMapping ) {
104
-
105
- case LinearToneMapping:
106
- toneMappingName = 'Linear';
107
- break;
108
-
109
- case ReinhardToneMapping:
110
- toneMappingName = 'Reinhard';
111
- break;
112
-
113
- case CineonToneMapping:
114
- toneMappingName = 'Cineon';
115
- break;
116
-
117
- case ACESFilmicToneMapping:
118
- toneMappingName = 'ACESFilmic';
119
- break;
100
+ const toneMappingFunctions = {
101
+ [ LinearToneMapping ]: 'Linear',
102
+ [ ReinhardToneMapping ]: 'Reinhard',
103
+ [ CineonToneMapping ]: 'Cineon',
104
+ [ ACESFilmicToneMapping ]: 'ACESFilmic',
105
+ [ AgXToneMapping ]: 'AgX',
106
+ [ NeutralToneMapping ]: 'Neutral',
107
+ [ CustomToneMapping ]: 'Custom'
108
+ };
120
109
 
121
- case AgXToneMapping:
122
- toneMappingName = 'AgX';
123
- break;
110
+ function getToneMappingFunction( functionName, toneMapping ) {
124
111
 
125
- case NeutralToneMapping:
126
- toneMappingName = 'Neutral';
127
- break;
112
+ const toneMappingName = toneMappingFunctions[ toneMapping ];
128
113
 
129
- case CustomToneMapping:
130
- toneMappingName = 'Custom';
131
- break;
114
+ if ( toneMappingName === undefined ) {
132
115
 
133
- default:
134
- console.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );
135
- toneMappingName = 'Linear';
116
+ warn( 'WebGLProgram: Unsupported toneMapping:', toneMapping );
117
+ return 'vec3 ' + functionName + '( vec3 color ) { return LinearToneMapping( color ); }';
136
118
 
137
119
  }
138
120
 
@@ -209,7 +191,7 @@ function fetchAttributeLocations( gl, program ) {
209
191
  if ( info.type === gl.FLOAT_MAT3 ) locationSize = 3;
210
192
  if ( info.type === gl.FLOAT_MAT4 ) locationSize = 4;
211
193
 
212
- // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );
194
+ // log( 'WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );
213
195
 
214
196
  attributes[ name ] = {
215
197
  type: info.type,
@@ -279,7 +261,7 @@ function includeReplacer( match, include ) {
279
261
  if ( newInclude !== undefined ) {
280
262
 
281
263
  string = ShaderChunk[ newInclude ];
282
- console.warn( 'THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.', include, newInclude );
264
+ warn( 'WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.', include, newInclude );
283
265
 
284
266
  } else {
285
267
 
@@ -360,99 +342,54 @@ function generatePrecision( parameters ) {
360
342
 
361
343
  }
362
344
 
363
- function generateShadowMapTypeDefine( parameters ) {
364
-
365
- let shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';
366
-
367
- if ( parameters.shadowMapType === PCFShadowMap ) {
368
-
369
- shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';
345
+ const shadowMapTypeDefines = {
346
+ [ PCFShadowMap ]: 'SHADOWMAP_TYPE_PCF',
347
+ [ VSMShadowMap ]: 'SHADOWMAP_TYPE_VSM'
348
+ };
370
349
 
371
- } else if ( parameters.shadowMapType === PCFSoftShadowMap ) {
372
-
373
- shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';
374
-
375
- } else if ( parameters.shadowMapType === VSMShadowMap ) {
376
-
377
- shadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';
378
-
379
- }
350
+ function generateShadowMapTypeDefine( parameters ) {
380
351
 
381
- return shadowMapTypeDefine;
352
+ return shadowMapTypeDefines[ parameters.shadowMapType ] || 'SHADOWMAP_TYPE_BASIC';
382
353
 
383
354
  }
384
355
 
385
- function generateEnvMapTypeDefine( parameters ) {
386
-
387
- let envMapTypeDefine = 'ENVMAP_TYPE_CUBE';
388
-
389
- if ( parameters.envMap ) {
390
-
391
- switch ( parameters.envMapMode ) {
392
-
393
- case CubeReflectionMapping:
394
- case CubeRefractionMapping:
395
- envMapTypeDefine = 'ENVMAP_TYPE_CUBE';
396
- break;
397
-
398
- case CubeUVReflectionMapping:
399
- envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';
400
- break;
356
+ const envMapTypeDefines = {
357
+ [ CubeReflectionMapping ]: 'ENVMAP_TYPE_CUBE',
358
+ [ CubeRefractionMapping ]: 'ENVMAP_TYPE_CUBE',
359
+ [ CubeUVReflectionMapping ]: 'ENVMAP_TYPE_CUBE_UV'
360
+ };
401
361
 
402
- }
362
+ function generateEnvMapTypeDefine( parameters ) {
403
363
 
404
- }
364
+ if ( parameters.envMap === false ) return 'ENVMAP_TYPE_CUBE';
405
365
 
406
- return envMapTypeDefine;
366
+ return envMapTypeDefines[ parameters.envMapMode ] || 'ENVMAP_TYPE_CUBE';
407
367
 
408
368
  }
409
369
 
410
- function generateEnvMapModeDefine( parameters ) {
411
-
412
- let envMapModeDefine = 'ENVMAP_MODE_REFLECTION';
413
-
414
- if ( parameters.envMap ) {
370
+ const envMapModeDefines = {
371
+ [ CubeRefractionMapping ]: 'ENVMAP_MODE_REFRACTION'
372
+ };
415
373
 
416
- switch ( parameters.envMapMode ) {
417
-
418
- case CubeRefractionMapping:
419
-
420
- envMapModeDefine = 'ENVMAP_MODE_REFRACTION';
421
- break;
422
-
423
- }
374
+ function generateEnvMapModeDefine( parameters ) {
424
375
 
425
- }
376
+ if ( parameters.envMap === false ) return 'ENVMAP_MODE_REFLECTION';
426
377
 
427
- return envMapModeDefine;
378
+ return envMapModeDefines[ parameters.envMapMode ] || 'ENVMAP_MODE_REFLECTION';
428
379
 
429
380
  }
430
381
 
431
- function generateEnvMapBlendingDefine( parameters ) {
432
-
433
- let envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';
434
-
435
- if ( parameters.envMap ) {
436
-
437
- switch ( parameters.combine ) {
438
-
439
- case MultiplyOperation:
440
- envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';
441
- break;
442
-
443
- case MixOperation:
444
- envMapBlendingDefine = 'ENVMAP_BLENDING_MIX';
445
- break;
382
+ const envMapBlendingDefines = {
383
+ [ MultiplyOperation ]: 'ENVMAP_BLENDING_MULTIPLY',
384
+ [ MixOperation ]: 'ENVMAP_BLENDING_MIX',
385
+ [ AddOperation ]: 'ENVMAP_BLENDING_ADD'
386
+ };
446
387
 
447
- case AddOperation:
448
- envMapBlendingDefine = 'ENVMAP_BLENDING_ADD';
449
- break;
450
-
451
- }
388
+ function generateEnvMapBlendingDefine( parameters ) {
452
389
 
453
- }
390
+ if ( parameters.envMap === false ) return 'ENVMAP_BLENDING_NONE';
454
391
 
455
- return envMapBlendingDefine;
392
+ return envMapBlendingDefines[ parameters.combine ] || 'ENVMAP_BLENDING_NONE';
456
393
 
457
394
  }
458
395
 
@@ -475,7 +412,7 @@ function generateCubeUVSize( parameters ) {
475
412
  function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
476
413
 
477
414
  // TODO Send this event to Three.js DevTools
478
- // console.log( 'WebGLProgram', cacheKey );
415
+ // log( 'WebGLProgram', cacheKey );
479
416
 
480
417
  const gl = renderer.getContext();
481
418
 
@@ -628,6 +565,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
628
565
  //
629
566
 
630
567
  parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
568
+ parameters.vertexNormals ? '#define HAS_NORMAL' : '',
631
569
  parameters.vertexColors ? '#define USE_COLOR' : '',
632
570
  parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
633
571
  parameters.vertexUv1s ? '#define USE_UV1' : '',
@@ -655,8 +593,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
655
593
 
656
594
  parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
657
595
 
658
- parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
659
- parameters.reversedDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
596
+ parameters.logarithmicDepthBuffer ? '#define USE_LOGARITHMIC_DEPTH_BUFFER' : '',
597
+ parameters.reversedDepthBuffer ? '#define USE_REVERSED_DEPTH_BUFFER' : '',
660
598
 
661
599
  'uniform mat4 modelMatrix;',
662
600
  'uniform mat4 modelViewMatrix;',
@@ -761,6 +699,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
761
699
  parameters.normalMap ? '#define USE_NORMALMAP' : '',
762
700
  parameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',
763
701
  parameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
702
+ parameters.packedNormalMap ? '#define USE_PACKED_NORMALMAP' : '',
764
703
  parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
765
704
 
766
705
  parameters.anisotropy ? '#define USE_ANISOTROPY' : '',
@@ -797,8 +736,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
797
736
  parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',
798
737
 
799
738
  parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
800
- parameters.vertexColors || parameters.instancingColor || parameters.batchingColor ? '#define USE_COLOR' : '',
801
- parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
739
+ parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',
740
+ parameters.vertexAlphas || parameters.batchingColor ? '#define USE_COLOR_ALPHA' : '',
802
741
  parameters.vertexUv1s ? '#define USE_UV1' : '',
803
742
  parameters.vertexUv2s ? '#define USE_UV2' : '',
804
743
  parameters.vertexUv3s ? '#define USE_UV3' : '',
@@ -819,11 +758,13 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
819
758
 
820
759
  parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
821
760
 
761
+ parameters.numLightProbeGrids > 0 ? '#define USE_LIGHT_PROBES_GRID' : '',
762
+
822
763
  parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
823
764
  parameters.decodeVideoTextureEmissive ? '#define DECODE_VIDEO_TEXTURE_EMISSIVE' : '',
824
765
 
825
- parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
826
- parameters.reversedDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
766
+ parameters.logarithmicDepthBuffer ? '#define USE_LOGARITHMIC_DEPTH_BUFFER' : '',
767
+ parameters.reversedDepthBuffer ? '#define USE_REVERSED_DEPTH_BUFFER' : '',
827
768
 
828
769
  'uniform mat4 viewMatrix;',
829
770
  'uniform vec3 cameraPosition;',
@@ -940,8 +881,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
940
881
  const vertexGlsl = versionString + prefixVertex + vertexShader;
941
882
  const fragmentGlsl = versionString + prefixFragment + fragmentShader;
942
883
 
943
- // console.log( '*VERTEX*', vertexGlsl );
944
- // console.log( '*FRAGMENT*', fragmentGlsl );
884
+ // log( '*VERTEX*', vertexGlsl );
885
+ // log( '*FRAGMENT*', fragmentGlsl );
945
886
 
946
887
  const glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );
947
888
  const glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );
@@ -995,7 +936,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
995
936
  const vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );
996
937
  const fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );
997
938
 
998
- console.error(
939
+ error(
999
940
  'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +
1000
941
  'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\n\n' +
1001
942
  'Material Name: ' + self.name + '\n' +
@@ -1009,7 +950,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
1009
950
 
1010
951
  } else if ( programLog !== '' ) {
1011
952
 
1012
- console.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );
953
+ warn( 'WebGLProgram: Program Info Log:', programLog );
1013
954
 
1014
955
  } else if ( vertexLog === '' || fragmentLog === '' ) {
1015
956