super-three 0.181.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 (539) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +13152 -11354
  4. package/build/three.core.js +12319 -11539
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +1808 -781
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +27 -13
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +10523 -6263
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +10484 -6262
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +11 -3
  15. package/examples/jsm/animation/CCDIKSolver.js +7 -3
  16. package/examples/jsm/controls/ArcballControls.js +7 -4
  17. package/examples/jsm/controls/DragControls.js +2 -2
  18. package/examples/jsm/controls/FirstPersonControls.js +58 -54
  19. package/examples/jsm/controls/FlyControls.js +4 -0
  20. package/examples/jsm/controls/MapControls.js +55 -1
  21. package/examples/jsm/controls/OrbitControls.js +111 -8
  22. package/examples/jsm/controls/TrackballControls.js +8 -8
  23. package/examples/jsm/controls/TransformControls.js +34 -2
  24. package/examples/jsm/csm/CSM.js +2 -1
  25. package/examples/jsm/csm/CSMShadowNode.js +6 -2
  26. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  27. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  28. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  29. package/examples/jsm/exporters/EXRExporter.js +1 -1
  30. package/examples/jsm/exporters/GLTFExporter.js +152 -9
  31. package/examples/jsm/exporters/USDZExporter.js +22 -3
  32. package/examples/jsm/geometries/DecalGeometry.js +1 -1
  33. package/examples/jsm/geometries/TextGeometry.js +18 -0
  34. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  35. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  36. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  37. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  38. package/examples/jsm/helpers/ViewHelper.js +67 -8
  39. package/examples/jsm/inspector/Extension.js +13 -0
  40. package/examples/jsm/inspector/Inspector.js +203 -88
  41. package/examples/jsm/inspector/RendererInspector.js +14 -4
  42. package/examples/jsm/inspector/extensions/extensions.json +6 -0
  43. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  44. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  45. package/examples/jsm/inspector/tabs/Console.js +41 -7
  46. package/examples/jsm/inspector/tabs/Memory.js +128 -0
  47. package/examples/jsm/inspector/tabs/Parameters.js +51 -3
  48. package/examples/jsm/inspector/tabs/Performance.js +4 -4
  49. package/examples/jsm/inspector/tabs/Settings.js +264 -0
  50. package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
  51. package/examples/jsm/inspector/tabs/Viewer.js +107 -5
  52. package/examples/jsm/inspector/ui/Graph.js +2 -2
  53. package/examples/jsm/inspector/ui/List.js +1 -1
  54. package/examples/jsm/inspector/ui/Profiler.js +1936 -34
  55. package/examples/jsm/inspector/ui/Style.js +1044 -31
  56. package/examples/jsm/inspector/ui/Tab.js +222 -3
  57. package/examples/jsm/inspector/ui/Values.js +55 -2
  58. package/examples/jsm/inspector/ui/utils.js +13 -0
  59. package/examples/jsm/interaction/InteractionManager.js +226 -0
  60. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  61. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  62. package/examples/jsm/lighting/LightProbeGrid.js +651 -0
  63. package/examples/jsm/lines/LineMaterial.js +7 -1
  64. package/examples/jsm/loaders/3DMLoader.js +5 -4
  65. package/examples/jsm/loaders/3MFLoader.js +2 -2
  66. package/examples/jsm/loaders/AMFLoader.js +2 -2
  67. package/examples/jsm/loaders/ColladaLoader.js +24 -4026
  68. package/examples/jsm/loaders/DRACOLoader.js +5 -5
  69. package/examples/jsm/loaders/EXRLoader.js +687 -48
  70. package/examples/jsm/loaders/FBXLoader.js +235 -37
  71. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  72. package/examples/jsm/loaders/GLTFLoader.js +146 -178
  73. package/examples/jsm/loaders/HDRLoader.js +1 -2
  74. package/examples/jsm/loaders/KMZLoader.js +5 -5
  75. package/examples/jsm/loaders/KTX2Loader.js +27 -5
  76. package/examples/jsm/loaders/LDrawLoader.js +41 -50
  77. package/examples/jsm/loaders/LWOLoader.js +7 -39
  78. package/examples/jsm/loaders/NRRDLoader.js +2 -2
  79. package/examples/jsm/loaders/PCDLoader.js +4 -2
  80. package/examples/jsm/loaders/SVGLoader.js +2 -2
  81. package/examples/jsm/loaders/TDSLoader.js +0 -2
  82. package/examples/jsm/loaders/TGALoader.js +0 -2
  83. package/examples/jsm/loaders/USDLoader.js +100 -40
  84. package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
  85. package/examples/jsm/loaders/VOXLoader.js +660 -117
  86. package/examples/jsm/loaders/VRMLLoader.js +79 -2
  87. package/examples/jsm/loaders/VTKLoader.js +42 -25
  88. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  89. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  90. package/examples/jsm/loaders/usd/USDAParser.js +450 -363
  91. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  92. package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
  93. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  94. package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
  95. package/examples/jsm/math/Octree.js +131 -1
  96. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  97. package/examples/jsm/misc/RollerCoaster.js +42 -4
  98. package/examples/jsm/misc/Volume.js +0 -1
  99. package/examples/jsm/misc/VolumeSlice.js +0 -1
  100. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  101. package/examples/jsm/objects/LensflareMesh.js +1 -1
  102. package/examples/jsm/objects/Reflector.js +73 -25
  103. package/examples/jsm/objects/Sky.js +90 -6
  104. package/examples/jsm/objects/SkyMesh.js +150 -16
  105. package/examples/jsm/objects/Water.js +4 -3
  106. package/examples/jsm/objects/Water2.js +5 -3
  107. package/examples/jsm/objects/WaterMesh.js +5 -7
  108. package/examples/jsm/physics/AmmoPhysics.js +12 -7
  109. package/examples/jsm/physics/JoltPhysics.js +10 -6
  110. package/examples/jsm/physics/RapierPhysics.js +9 -5
  111. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  112. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  113. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  114. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  115. package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
  116. package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
  117. package/examples/jsm/renderers/Projector.js +246 -28
  118. package/examples/jsm/renderers/SVGRenderer.js +174 -60
  119. package/examples/jsm/shaders/GTAOShader.js +19 -6
  120. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  121. package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
  122. package/examples/jsm/shaders/SAOShader.js +17 -4
  123. package/examples/jsm/shaders/SSAOShader.js +11 -1
  124. package/examples/jsm/shaders/SSRShader.js +6 -5
  125. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
  126. package/examples/jsm/shaders/VignetteShader.js +1 -1
  127. package/examples/jsm/transpiler/AST.js +44 -0
  128. package/examples/jsm/transpiler/GLSLDecoder.js +63 -6
  129. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  130. package/examples/jsm/transpiler/TSLEncoder.js +46 -3
  131. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  132. package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
  133. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  134. package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
  135. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  136. package/examples/jsm/tsl/display/AnamorphicNode.js +12 -1
  137. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  138. package/examples/jsm/tsl/display/BloomNode.js +16 -6
  139. package/examples/jsm/tsl/display/CRT.js +150 -0
  140. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
  141. package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
  142. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -1
  143. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  144. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  145. package/examples/jsm/tsl/display/FXAANode.js +2 -2
  146. package/examples/jsm/tsl/display/GTAONode.js +6 -4
  147. package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
  148. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  149. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  150. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  151. package/examples/jsm/tsl/display/OutlineNode.js +69 -19
  152. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  153. package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
  154. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  155. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  156. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  157. package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
  158. package/examples/jsm/tsl/display/SSGINode.js +8 -24
  159. package/examples/jsm/tsl/display/SSRNode.js +8 -8
  160. package/examples/jsm/tsl/display/SSSNode.js +6 -4
  161. package/examples/jsm/tsl/display/Shape.js +29 -0
  162. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  163. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  164. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  165. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  166. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  167. package/examples/jsm/tsl/display/TRAANode.js +315 -126
  168. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  169. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  170. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  171. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  172. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  173. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  174. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  175. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  176. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  177. package/examples/jsm/tsl/math/Bayer.js +53 -3
  178. package/examples/jsm/utils/BufferGeometryUtils.js +2 -3
  179. package/examples/jsm/utils/ColorUtils.js +76 -0
  180. package/examples/jsm/utils/LDrawUtils.js +1 -1
  181. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  182. package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
  183. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  184. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  185. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  186. package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
  187. package/package.json +24 -30
  188. package/src/Three.Core.js +3 -1
  189. package/src/Three.TSL.js +25 -11
  190. package/src/Three.WebGPU.Nodes.js +5 -0
  191. package/src/Three.WebGPU.js +9 -0
  192. package/src/Three.js +1 -0
  193. package/src/animation/AnimationAction.js +12 -2
  194. package/src/animation/AnimationClip.js +1 -1
  195. package/src/animation/AnimationMixer.js +6 -0
  196. package/src/animation/AnimationUtils.js +1 -12
  197. package/src/animation/KeyframeTrack.js +47 -8
  198. package/src/animation/PropertyMixer.js +4 -4
  199. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  200. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  201. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  202. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  203. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  204. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  205. package/src/audio/Audio.js +1 -1
  206. package/src/audio/AudioContext.js +2 -2
  207. package/src/audio/AudioListener.js +5 -3
  208. package/src/cameras/Camera.js +32 -2
  209. package/src/cameras/CubeCamera.js +20 -0
  210. package/src/constants.js +90 -5
  211. package/src/core/BufferAttribute.js +13 -1
  212. package/src/core/BufferGeometry.js +14 -2
  213. package/src/core/Clock.js +7 -0
  214. package/src/core/Object3D.js +52 -4
  215. package/src/core/Raycaster.js +2 -2
  216. package/src/core/RenderTarget.js +4 -4
  217. package/src/extras/PMREMGenerator.js +7 -18
  218. package/src/extras/TextureUtils.js +5 -1
  219. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  220. package/src/geometries/ExtrudeGeometry.js +2 -2
  221. package/src/geometries/PolyhedronGeometry.js +1 -1
  222. package/src/geometries/TorusGeometry.js +8 -3
  223. package/src/helpers/CameraHelper.js +3 -0
  224. package/src/helpers/DirectionalLightHelper.js +4 -1
  225. package/src/helpers/HemisphereLightHelper.js +3 -0
  226. package/src/helpers/PointLightHelper.js +1 -25
  227. package/src/helpers/SpotLightHelper.js +3 -0
  228. package/src/lights/DirectionalLight.js +13 -0
  229. package/src/lights/HemisphereLight.js +10 -0
  230. package/src/lights/Light.js +1 -11
  231. package/src/lights/LightProbe.js +0 -15
  232. package/src/lights/LightShadow.js +15 -6
  233. package/src/lights/PointLight.js +15 -0
  234. package/src/lights/PointLightShadow.js +0 -86
  235. package/src/lights/SpotLight.js +22 -1
  236. package/src/lights/webgpu/IESSpotLight.js +2 -1
  237. package/src/loaders/AudioLoader.js +11 -1
  238. package/src/loaders/Cache.js +28 -0
  239. package/src/loaders/DataTextureLoader.js +6 -4
  240. package/src/loaders/FileLoader.js +2 -3
  241. package/src/loaders/ImageBitmapLoader.js +12 -9
  242. package/src/loaders/Loader.js +6 -0
  243. package/src/loaders/MaterialLoader.js +3 -2
  244. package/src/loaders/ObjectLoader.js +46 -6
  245. package/src/loaders/nodes/NodeLoader.js +2 -2
  246. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  247. package/src/materials/Material.js +2 -0
  248. package/src/materials/MeshLambertMaterial.js +9 -0
  249. package/src/materials/MeshPhongMaterial.js +9 -0
  250. package/src/materials/MeshToonMaterial.js +1 -1
  251. package/src/materials/ShaderMaterial.js +20 -1
  252. package/src/materials/nodes/Line2NodeMaterial.js +34 -7
  253. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
  254. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
  255. package/src/materials/nodes/NodeMaterial.js +45 -25
  256. package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -86
  257. package/src/math/Line3.js +6 -5
  258. package/src/math/MathUtils.js +10 -10
  259. package/src/math/Matrix2.js +13 -9
  260. package/src/math/Matrix3.js +13 -9
  261. package/src/math/Matrix4.js +87 -74
  262. package/src/math/Plane.js +4 -3
  263. package/src/math/Quaternion.js +3 -29
  264. package/src/math/Sphere.js +1 -1
  265. package/src/math/Triangle.js +1 -1
  266. package/src/math/Vector2.js +11 -7
  267. package/src/math/Vector3.js +15 -13
  268. package/src/math/Vector4.js +13 -9
  269. package/src/math/interpolants/BezierInterpolant.js +108 -0
  270. package/src/nodes/Nodes.js +86 -68
  271. package/src/nodes/TSL.js +7 -7
  272. package/src/nodes/accessors/Arrays.js +1 -1
  273. package/src/nodes/accessors/BatchNode.js +10 -10
  274. package/src/nodes/accessors/Bitangent.js +5 -5
  275. package/src/nodes/accessors/BufferAttributeNode.js +107 -15
  276. package/src/nodes/accessors/BufferNode.js +29 -2
  277. package/src/nodes/accessors/Camera.js +149 -28
  278. package/src/nodes/accessors/ClippingNode.js +4 -4
  279. package/src/nodes/accessors/CubeTextureNode.js +27 -2
  280. package/src/nodes/accessors/InstanceNode.js +148 -43
  281. package/src/nodes/accessors/MaterialNode.js +9 -1
  282. package/src/nodes/accessors/MaterialProperties.js +2 -5
  283. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  284. package/src/nodes/accessors/ModelNode.js +1 -1
  285. package/src/nodes/accessors/Normal.js +11 -11
  286. package/src/nodes/accessors/Object3DNode.js +1 -1
  287. package/src/nodes/accessors/Position.js +34 -2
  288. package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
  289. package/src/nodes/accessors/ReferenceNode.js +8 -8
  290. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  291. package/src/nodes/accessors/SceneProperties.js +47 -0
  292. package/src/nodes/accessors/SkinningNode.js +27 -26
  293. package/src/nodes/accessors/StorageBufferNode.js +14 -25
  294. package/src/nodes/accessors/StorageTextureNode.js +40 -9
  295. package/src/nodes/accessors/Tangent.js +4 -14
  296. package/src/nodes/accessors/Texture3DNode.js +32 -35
  297. package/src/nodes/accessors/TextureNode.js +67 -23
  298. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  299. package/src/nodes/accessors/UserDataNode.js +1 -2
  300. package/src/nodes/accessors/VertexColorNode.js +1 -2
  301. package/src/nodes/code/FunctionCallNode.js +1 -1
  302. package/src/nodes/code/FunctionNode.js +2 -3
  303. package/src/nodes/core/ArrayNode.js +21 -2
  304. package/src/nodes/core/AssignNode.js +3 -3
  305. package/src/nodes/core/AttributeNode.js +3 -3
  306. package/src/nodes/core/BypassNode.js +1 -1
  307. package/src/nodes/core/ContextNode.js +104 -5
  308. package/src/nodes/core/IndexNode.js +2 -1
  309. package/src/nodes/core/InputNode.js +1 -1
  310. package/src/nodes/core/InspectorNode.js +1 -1
  311. package/src/nodes/core/IsolateNode.js +1 -1
  312. package/src/nodes/core/MRTNode.js +48 -2
  313. package/src/nodes/core/Node.js +112 -15
  314. package/src/nodes/core/NodeBuilder.js +284 -66
  315. package/src/nodes/core/NodeError.js +28 -0
  316. package/src/nodes/core/NodeFrame.js +12 -4
  317. package/src/nodes/core/NodeUtils.js +11 -9
  318. package/src/nodes/core/OutputStructNode.js +12 -10
  319. package/src/nodes/core/ParameterNode.js +4 -4
  320. package/src/nodes/core/PropertyNode.js +19 -3
  321. package/src/nodes/core/StackNode.js +66 -17
  322. package/src/nodes/core/StackTrace.js +139 -0
  323. package/src/nodes/core/StructNode.js +17 -3
  324. package/src/nodes/core/StructTypeNode.js +12 -18
  325. package/src/nodes/core/SubBuildNode.js +2 -2
  326. package/src/nodes/core/UniformGroupNode.js +36 -6
  327. package/src/nodes/core/UniformNode.js +21 -5
  328. package/src/nodes/core/VarNode.js +48 -23
  329. package/src/nodes/core/VaryingNode.js +2 -19
  330. package/src/nodes/display/BlendModes.js +0 -64
  331. package/src/nodes/display/ColorAdjustment.js +17 -0
  332. package/src/nodes/display/ColorSpaceNode.js +3 -3
  333. package/src/nodes/display/NormalMapNode.js +39 -4
  334. package/src/nodes/display/PassNode.js +125 -16
  335. package/src/nodes/display/RenderOutputNode.js +7 -7
  336. package/src/nodes/display/ScreenNode.js +4 -2
  337. package/src/nodes/display/ToneMappingNode.js +1 -1
  338. package/src/nodes/display/ToonOutlinePassNode.js +2 -2
  339. package/src/nodes/display/ViewportDepthNode.js +52 -4
  340. package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
  341. package/src/nodes/display/ViewportTextureNode.js +39 -11
  342. package/src/nodes/fog/Fog.js +18 -35
  343. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
  344. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  345. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  346. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  347. package/src/nodes/functions/PhysicalLightingModel.js +126 -45
  348. package/src/nodes/geometry/RangeNode.js +5 -3
  349. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  350. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  351. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
  352. package/src/nodes/gpgpu/ComputeNode.js +74 -48
  353. package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
  354. package/src/nodes/gpgpu/WorkgroupInfoNode.js +4 -4
  355. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  356. package/src/nodes/lighting/EnvironmentNode.js +28 -3
  357. package/src/nodes/lighting/LightsNode.js +7 -28
  358. package/src/nodes/lighting/PointShadowNode.js +162 -149
  359. package/src/nodes/lighting/ShadowFilterNode.js +53 -65
  360. package/src/nodes/lighting/ShadowNode.js +120 -42
  361. package/src/nodes/math/BitcastNode.js +1 -1
  362. package/src/nodes/math/BitcountNode.js +433 -0
  363. package/src/nodes/math/ConditionalNode.js +3 -3
  364. package/src/nodes/math/MathNode.js +76 -41
  365. package/src/nodes/math/OperatorNode.js +3 -2
  366. package/src/nodes/math/PackFloatNode.js +98 -0
  367. package/src/nodes/math/UnpackFloatNode.js +96 -0
  368. package/src/nodes/pmrem/PMREMNode.js +1 -1
  369. package/src/nodes/pmrem/PMREMUtils.js +9 -15
  370. package/src/nodes/tsl/TSLBase.js +1 -1
  371. package/src/nodes/tsl/TSLCore.js +38 -17
  372. package/src/nodes/utils/ArrayElementNode.js +14 -1
  373. package/src/nodes/utils/ConvertNode.js +1 -1
  374. package/src/nodes/utils/DebugNode.js +12 -12
  375. package/src/nodes/utils/EventNode.js +31 -2
  376. package/src/nodes/utils/FlipNode.js +1 -1
  377. package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
  378. package/src/nodes/utils/JoinNode.js +3 -3
  379. package/src/nodes/utils/LoopNode.js +1 -1
  380. package/src/nodes/utils/MemberNode.js +2 -2
  381. package/src/nodes/utils/Packing.js +13 -1
  382. package/src/nodes/utils/PostProcessingUtils.js +33 -1
  383. package/src/nodes/utils/RTTNode.js +1 -1
  384. package/src/nodes/utils/ReflectorNode.js +3 -4
  385. package/src/nodes/utils/Remap.js +48 -0
  386. package/src/nodes/utils/RotateNode.js +1 -1
  387. package/src/nodes/utils/SampleNode.js +1 -1
  388. package/src/nodes/utils/SetNode.js +1 -1
  389. package/src/nodes/utils/SplitNode.js +1 -1
  390. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  391. package/src/nodes/utils/UVUtils.js +28 -0
  392. package/src/objects/BatchedMesh.js +44 -16
  393. package/src/objects/InstancedMesh.js +30 -3
  394. package/src/objects/Line.js +1 -1
  395. package/src/objects/Mesh.js +1 -1
  396. package/src/objects/Points.js +1 -1
  397. package/src/objects/Skeleton.js +9 -0
  398. package/src/objects/SkinnedMesh.js +26 -9
  399. package/src/renderers/WebGLRenderer.js +329 -145
  400. package/src/renderers/common/Animation.js +3 -3
  401. package/src/renderers/common/Attributes.js +15 -1
  402. package/src/renderers/common/Backend.js +29 -8
  403. package/src/renderers/common/Background.js +26 -13
  404. package/src/renderers/common/BindGroup.js +1 -16
  405. package/src/renderers/common/Binding.js +11 -0
  406. package/src/renderers/common/Bindings.js +29 -14
  407. package/src/renderers/common/BlendMode.js +143 -0
  408. package/src/renderers/common/Buffer.js +40 -0
  409. package/src/renderers/common/BundleGroup.js +1 -1
  410. package/src/renderers/common/ChainMap.js +30 -6
  411. package/src/renderers/common/ComputePipeline.js +1 -1
  412. package/src/renderers/common/CubeRenderTarget.js +51 -7
  413. package/src/renderers/common/Geometries.js +29 -3
  414. package/src/renderers/common/Info.js +333 -4
  415. package/src/renderers/common/InspectorBase.js +6 -1
  416. package/src/renderers/common/Lighting.js +5 -21
  417. package/src/renderers/common/Pipelines.js +40 -7
  418. package/src/renderers/common/PostProcessing.js +8 -206
  419. package/src/renderers/common/ReadbackBuffer.js +78 -0
  420. package/src/renderers/common/RenderBundle.js +3 -1
  421. package/src/renderers/common/RenderBundles.js +7 -3
  422. package/src/renderers/common/RenderContext.js +16 -0
  423. package/src/renderers/common/RenderContexts.js +33 -49
  424. package/src/renderers/common/RenderLists.js +2 -1
  425. package/src/renderers/common/RenderObject.js +17 -5
  426. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  427. package/src/renderers/common/RenderObjects.js +21 -5
  428. package/src/renderers/common/RenderPipeline.js +232 -17
  429. package/src/renderers/common/Renderer.js +481 -117
  430. package/src/renderers/common/Sampler.js +4 -4
  431. package/src/renderers/common/StorageBuffer.js +13 -1
  432. package/src/renderers/common/Textures.js +89 -4
  433. package/src/renderers/common/TimestampQueryPool.js +5 -3
  434. package/src/renderers/common/Uniform.js +8 -0
  435. package/src/renderers/common/UniformsGroup.js +62 -1
  436. package/src/renderers/common/XRManager.js +37 -29
  437. package/src/renderers/common/extras/PMREMGenerator.js +25 -23
  438. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  439. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +242 -99
  440. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  441. package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
  442. package/src/renderers/shaders/DFGLUTData.js +19 -34
  443. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  444. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  445. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  446. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  447. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  448. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  449. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
  450. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  451. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  452. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  453. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  454. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
  455. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  456. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
  457. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  458. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  459. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  460. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
  461. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  462. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  463. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  464. package/src/renderers/shaders/ShaderChunk.js +5 -3
  465. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  466. package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
  467. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
  468. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  469. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  470. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  471. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  472. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  473. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  474. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  475. package/src/renderers/shaders/ShaderLib.js +7 -6
  476. package/src/renderers/shaders/UniformsLib.js +7 -5
  477. package/src/renderers/shaders/UniformsUtils.js +27 -5
  478. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  479. package/src/renderers/webgl/WebGLBackground.js +15 -15
  480. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  481. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  482. package/src/renderers/webgl/WebGLCapabilities.js +9 -4
  483. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  484. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  485. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  486. package/src/renderers/webgl/WebGLLights.js +18 -1
  487. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  488. package/src/renderers/webgl/WebGLObjects.js +3 -1
  489. package/src/renderers/webgl/WebGLOutput.js +270 -0
  490. package/src/renderers/webgl/WebGLProgram.js +49 -109
  491. package/src/renderers/webgl/WebGLPrograms.js +63 -51
  492. package/src/renderers/webgl/WebGLRenderLists.js +15 -0
  493. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  494. package/src/renderers/webgl/WebGLShadowMap.js +188 -24
  495. package/src/renderers/webgl/WebGLState.js +75 -37
  496. package/src/renderers/webgl/WebGLTextures.js +215 -54
  497. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  498. package/src/renderers/webgl/WebGLUniformsGroups.js +19 -0
  499. package/src/renderers/webgl/WebGLUtils.js +6 -2
  500. package/src/renderers/webgl-fallback/WebGLBackend.js +253 -82
  501. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  502. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +173 -74
  503. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  504. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  505. package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
  506. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +68 -53
  507. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
  508. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +6 -2
  509. package/src/renderers/webgpu/WebGPUBackend.js +260 -140
  510. package/src/renderers/webgpu/WebGPURenderer.js +2 -1
  511. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +366 -90
  512. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +107 -34
  513. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +357 -200
  514. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  515. package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
  516. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +61 -23
  517. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +152 -200
  518. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +156 -59
  519. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +7 -7
  520. package/src/renderers/webgpu/utils/WebGPUUtils.js +33 -11
  521. package/src/renderers/webxr/WebXRController.js +12 -0
  522. package/src/renderers/webxr/WebXRManager.js +4 -2
  523. package/src/textures/CubeDepthTexture.js +76 -0
  524. package/src/textures/HTMLTexture.js +74 -0
  525. package/src/textures/Source.js +2 -2
  526. package/src/textures/Texture.js +16 -5
  527. package/src/utils.js +280 -3
  528. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  529. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  530. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  531. package/src/nodes/accessors/SceneNode.js +0 -145
  532. package/src/nodes/code/ScriptableNode.js +0 -726
  533. package/src/nodes/code/ScriptableValueNode.js +0 -253
  534. package/src/nodes/display/PosterizeNode.js +0 -65
  535. package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
  536. package/src/nodes/utils/RemapNode.js +0 -125
  537. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  538. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  539. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -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,7 +1,7 @@
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';
@@ -97,43 +97,24 @@ function getTexelEncodingFunction( functionName, colorSpace ) {
97
97
 
98
98
  }
99
99
 
100
- function getToneMappingFunction( functionName, toneMapping ) {
101
-
102
- let toneMappingName;
103
-
104
- switch ( toneMapping ) {
105
-
106
- case LinearToneMapping:
107
- toneMappingName = 'Linear';
108
- break;
109
-
110
- case ReinhardToneMapping:
111
- toneMappingName = 'Reinhard';
112
- break;
113
-
114
- case CineonToneMapping:
115
- toneMappingName = 'Cineon';
116
- break;
117
-
118
- case ACESFilmicToneMapping:
119
- toneMappingName = 'ACESFilmic';
120
- 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
+ };
121
109
 
122
- case AgXToneMapping:
123
- toneMappingName = 'AgX';
124
- break;
110
+ function getToneMappingFunction( functionName, toneMapping ) {
125
111
 
126
- case NeutralToneMapping:
127
- toneMappingName = 'Neutral';
128
- break;
112
+ const toneMappingName = toneMappingFunctions[ toneMapping ];
129
113
 
130
- case CustomToneMapping:
131
- toneMappingName = 'Custom';
132
- break;
114
+ if ( toneMappingName === undefined ) {
133
115
 
134
- default:
135
- warn( 'WebGLProgram: Unsupported toneMapping:', toneMapping );
136
- toneMappingName = 'Linear';
116
+ warn( 'WebGLProgram: Unsupported toneMapping:', toneMapping );
117
+ return 'vec3 ' + functionName + '( vec3 color ) { return LinearToneMapping( color ); }';
137
118
 
138
119
  }
139
120
 
@@ -361,99 +342,54 @@ function generatePrecision( parameters ) {
361
342
 
362
343
  }
363
344
 
364
- function generateShadowMapTypeDefine( parameters ) {
365
-
366
- let shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';
367
-
368
- if ( parameters.shadowMapType === PCFShadowMap ) {
369
-
370
- shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';
345
+ const shadowMapTypeDefines = {
346
+ [ PCFShadowMap ]: 'SHADOWMAP_TYPE_PCF',
347
+ [ VSMShadowMap ]: 'SHADOWMAP_TYPE_VSM'
348
+ };
371
349
 
372
- } else if ( parameters.shadowMapType === PCFSoftShadowMap ) {
373
-
374
- shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';
375
-
376
- } else if ( parameters.shadowMapType === VSMShadowMap ) {
377
-
378
- shadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';
379
-
380
- }
350
+ function generateShadowMapTypeDefine( parameters ) {
381
351
 
382
- return shadowMapTypeDefine;
352
+ return shadowMapTypeDefines[ parameters.shadowMapType ] || 'SHADOWMAP_TYPE_BASIC';
383
353
 
384
354
  }
385
355
 
386
- function generateEnvMapTypeDefine( parameters ) {
387
-
388
- let envMapTypeDefine = 'ENVMAP_TYPE_CUBE';
389
-
390
- if ( parameters.envMap ) {
391
-
392
- switch ( parameters.envMapMode ) {
393
-
394
- case CubeReflectionMapping:
395
- case CubeRefractionMapping:
396
- envMapTypeDefine = 'ENVMAP_TYPE_CUBE';
397
- break;
398
-
399
- case CubeUVReflectionMapping:
400
- envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';
401
- break;
356
+ const envMapTypeDefines = {
357
+ [ CubeReflectionMapping ]: 'ENVMAP_TYPE_CUBE',
358
+ [ CubeRefractionMapping ]: 'ENVMAP_TYPE_CUBE',
359
+ [ CubeUVReflectionMapping ]: 'ENVMAP_TYPE_CUBE_UV'
360
+ };
402
361
 
403
- }
362
+ function generateEnvMapTypeDefine( parameters ) {
404
363
 
405
- }
364
+ if ( parameters.envMap === false ) return 'ENVMAP_TYPE_CUBE';
406
365
 
407
- return envMapTypeDefine;
366
+ return envMapTypeDefines[ parameters.envMapMode ] || 'ENVMAP_TYPE_CUBE';
408
367
 
409
368
  }
410
369
 
411
- function generateEnvMapModeDefine( parameters ) {
412
-
413
- let envMapModeDefine = 'ENVMAP_MODE_REFLECTION';
414
-
415
- if ( parameters.envMap ) {
370
+ const envMapModeDefines = {
371
+ [ CubeRefractionMapping ]: 'ENVMAP_MODE_REFRACTION'
372
+ };
416
373
 
417
- switch ( parameters.envMapMode ) {
418
-
419
- case CubeRefractionMapping:
420
-
421
- envMapModeDefine = 'ENVMAP_MODE_REFRACTION';
422
- break;
423
-
424
- }
374
+ function generateEnvMapModeDefine( parameters ) {
425
375
 
426
- }
376
+ if ( parameters.envMap === false ) return 'ENVMAP_MODE_REFLECTION';
427
377
 
428
- return envMapModeDefine;
378
+ return envMapModeDefines[ parameters.envMapMode ] || 'ENVMAP_MODE_REFLECTION';
429
379
 
430
380
  }
431
381
 
432
- function generateEnvMapBlendingDefine( parameters ) {
433
-
434
- let envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';
435
-
436
- if ( parameters.envMap ) {
437
-
438
- switch ( parameters.combine ) {
439
-
440
- case MultiplyOperation:
441
- envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';
442
- break;
443
-
444
- case MixOperation:
445
- envMapBlendingDefine = 'ENVMAP_BLENDING_MIX';
446
- break;
382
+ const envMapBlendingDefines = {
383
+ [ MultiplyOperation ]: 'ENVMAP_BLENDING_MULTIPLY',
384
+ [ MixOperation ]: 'ENVMAP_BLENDING_MIX',
385
+ [ AddOperation ]: 'ENVMAP_BLENDING_ADD'
386
+ };
447
387
 
448
- case AddOperation:
449
- envMapBlendingDefine = 'ENVMAP_BLENDING_ADD';
450
- break;
451
-
452
- }
388
+ function generateEnvMapBlendingDefine( parameters ) {
453
389
 
454
- }
390
+ if ( parameters.envMap === false ) return 'ENVMAP_BLENDING_NONE';
455
391
 
456
- return envMapBlendingDefine;
392
+ return envMapBlendingDefines[ parameters.combine ] || 'ENVMAP_BLENDING_NONE';
457
393
 
458
394
  }
459
395
 
@@ -629,6 +565,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
629
565
  //
630
566
 
631
567
  parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
568
+ parameters.vertexNormals ? '#define HAS_NORMAL' : '',
632
569
  parameters.vertexColors ? '#define USE_COLOR' : '',
633
570
  parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
634
571
  parameters.vertexUv1s ? '#define USE_UV1' : '',
@@ -762,6 +699,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
762
699
  parameters.normalMap ? '#define USE_NORMALMAP' : '',
763
700
  parameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',
764
701
  parameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',
702
+ parameters.packedNormalMap ? '#define USE_PACKED_NORMALMAP' : '',
765
703
  parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
766
704
 
767
705
  parameters.anisotropy ? '#define USE_ANISOTROPY' : '',
@@ -798,8 +736,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
798
736
  parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',
799
737
 
800
738
  parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
801
- parameters.vertexColors || parameters.instancingColor || parameters.batchingColor ? '#define USE_COLOR' : '',
802
- parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
739
+ parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',
740
+ parameters.vertexAlphas || parameters.batchingColor ? '#define USE_COLOR_ALPHA' : '',
803
741
  parameters.vertexUv1s ? '#define USE_UV1' : '',
804
742
  parameters.vertexUv2s ? '#define USE_UV2' : '',
805
743
  parameters.vertexUv3s ? '#define USE_UV3' : '',
@@ -820,6 +758,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
820
758
 
821
759
  parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
822
760
 
761
+ parameters.numLightProbeGrids > 0 ? '#define USE_LIGHT_PROBES_GRID' : '',
762
+
823
763
  parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
824
764
  parameters.decodeVideoTextureEmissive ? '#define DECODE_VIDEO_TEXTURE_EMISSIVE' : '',
825
765