@needle-tools/three 0.162.12 → 0.169.2

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 (635) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +29789 -1941
  3. package/build/three.module.js +29095 -1933
  4. package/build/three.module.min.js +2 -2
  5. package/build/three.webgpu.js +80003 -0
  6. package/build/three.webgpu.min.js +6 -0
  7. package/build/three.webgpu.nodes.js +79951 -0
  8. package/build/three.webgpu.nodes.min.js +6 -0
  9. package/examples/jsm/Addons.js +2 -5
  10. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  11. package/examples/jsm/animation/CCDIKSolver.js +4 -2
  12. package/examples/jsm/capabilities/WebGL.js +27 -21
  13. package/examples/jsm/controls/ArcballControls.js +174 -158
  14. package/examples/jsm/controls/DragControls.js +260 -132
  15. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  16. package/examples/jsm/controls/FlyControls.js +194 -188
  17. package/examples/jsm/controls/OrbitControls.js +790 -797
  18. package/examples/jsm/controls/PointerLockControls.js +24 -15
  19. package/examples/jsm/controls/TrackballControls.js +469 -448
  20. package/examples/jsm/controls/TransformControls.js +98 -63
  21. package/examples/jsm/csm/CSMShader.js +4 -4
  22. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  23. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  24. package/examples/jsm/effects/StereoEffect.js +6 -1
  25. package/examples/jsm/environments/RoomEnvironment.js +2 -6
  26. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  27. package/examples/jsm/exporters/EXRExporter.js +19 -11
  28. package/examples/jsm/exporters/GLTFExporter.js +77 -8
  29. package/examples/jsm/exporters/KTX2Exporter.js +21 -13
  30. package/examples/jsm/exporters/OBJExporter.js +5 -1
  31. package/examples/jsm/exporters/PLYExporter.js +9 -7
  32. package/examples/jsm/exporters/USDZExporter.js +55 -11
  33. package/examples/jsm/geometries/DecalGeometry.js +4 -1
  34. package/examples/jsm/geometries/InstancedPointsGeometry.js +1 -1
  35. package/examples/jsm/geometries/TeapotGeometry.js +1 -1
  36. package/examples/jsm/geometries/TextGeometry.js +10 -2
  37. package/examples/jsm/helpers/LightProbeHelper.js +43 -44
  38. package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
  39. package/examples/jsm/helpers/ViewHelper.js +75 -61
  40. package/examples/jsm/interactive/HTMLMesh.js +7 -9
  41. package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  42. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  43. package/examples/jsm/libs/draco/README.md +2 -2
  44. package/examples/jsm/libs/fflate.module.js +694 -496
  45. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  46. package/examples/jsm/lights/LightProbeGenerator.js +24 -10
  47. package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
  48. package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
  49. package/examples/jsm/lines/LineMaterial.js +1 -17
  50. package/examples/jsm/lines/LineSegments2.js +15 -0
  51. package/examples/jsm/lines/Wireframe.js +16 -1
  52. package/examples/jsm/lines/webgpu/Line2.js +20 -0
  53. package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
  54. package/examples/jsm/loaders/3MFLoader.js +2 -0
  55. package/examples/jsm/loaders/ColladaLoader.js +9 -6
  56. package/examples/jsm/loaders/DRACOLoader.js +4 -2
  57. package/examples/jsm/loaders/EXRLoader.js +351 -97
  58. package/examples/jsm/loaders/FBXLoader.js +77 -78
  59. package/examples/jsm/loaders/GLTFLoader.js +76 -14
  60. package/examples/jsm/loaders/KTX2Loader.js +30 -22
  61. package/examples/jsm/loaders/LDrawLoader.js +3 -2
  62. package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
  63. package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
  64. package/examples/jsm/loaders/LUTImageLoader.js +0 -14
  65. package/examples/jsm/loaders/MMDLoader.js +31 -12
  66. package/examples/jsm/loaders/MTLLoader.js +4 -3
  67. package/examples/jsm/loaders/MaterialXLoader.js +45 -21
  68. package/examples/jsm/loaders/OBJLoader.js +5 -3
  69. package/examples/jsm/loaders/PCDLoader.js +14 -13
  70. package/examples/jsm/loaders/PDBLoader.js +3 -2
  71. package/examples/jsm/loaders/PLYLoader.js +8 -5
  72. package/examples/jsm/loaders/RGBMLoader.js +16 -0
  73. package/examples/jsm/loaders/STLLoader.js +3 -2
  74. package/examples/jsm/loaders/USDZLoader.js +124 -76
  75. package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
  76. package/examples/jsm/loaders/VRMLLoader.js +11 -11
  77. package/examples/jsm/loaders/VTKLoader.js +80 -6
  78. package/examples/jsm/loaders/XYZLoader.js +3 -2
  79. package/examples/jsm/loaders/lwo/IFFParser.js +8 -5
  80. package/examples/jsm/materials/MeshGouraudMaterial.js +7 -1
  81. package/examples/jsm/math/Octree.js +26 -20
  82. package/examples/jsm/misc/GPUComputationRenderer.js +9 -25
  83. package/examples/jsm/misc/Timer.js +1 -1
  84. package/examples/jsm/modifiers/CurveModifier.js +11 -9
  85. package/examples/jsm/modifiers/CurveModifierGPU.js +233 -0
  86. package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
  87. package/examples/jsm/objects/InstancedPoints.js +2 -2
  88. package/examples/jsm/objects/Lensflare.js +2 -2
  89. package/examples/jsm/objects/LensflareMesh.js +322 -0
  90. package/examples/jsm/objects/SkyMesh.js +187 -0
  91. package/examples/jsm/objects/Water2Mesh.js +158 -0
  92. package/examples/jsm/objects/WaterMesh.js +101 -0
  93. package/examples/jsm/physics/JoltPhysics.js +281 -0
  94. package/examples/jsm/physics/RapierPhysics.js +25 -5
  95. package/examples/jsm/postprocessing/GlitchPass.js +0 -3
  96. package/examples/jsm/postprocessing/LUTPass.js +5 -71
  97. package/examples/jsm/postprocessing/OutlinePass.js +31 -46
  98. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  99. package/examples/jsm/postprocessing/RenderTransitionPass.js +168 -0
  100. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  101. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  102. package/examples/jsm/postprocessing/SSAOPass.js +6 -12
  103. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
  104. package/examples/jsm/renderers/CSS2DRenderer.js +25 -5
  105. package/examples/jsm/renderers/CSS3DRenderer.js +24 -3
  106. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +1 -3
  107. package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
  108. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +7 -4
  109. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +19 -5
  110. package/examples/jsm/shaders/BleachBypassShader.js +1 -2
  111. package/examples/jsm/shaders/ColorifyShader.js +1 -2
  112. package/examples/jsm/shaders/FXAAShader.js +0 -2
  113. package/examples/jsm/shaders/GTAOShader.js +1 -1
  114. package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
  115. package/examples/jsm/shaders/OutputShader.js +1 -1
  116. package/examples/jsm/transpiler/GLSLDecoder.js +47 -5
  117. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -2
  118. package/examples/jsm/transpiler/TSLEncoder.js +24 -22
  119. package/examples/jsm/utils/BufferGeometryUtils.js +18 -16
  120. package/examples/jsm/utils/GeometryCompressionUtils.js +37 -122
  121. package/examples/jsm/utils/SceneUtils.js +60 -1
  122. package/examples/jsm/utils/ShadowMapViewer.js +3 -8
  123. package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
  124. package/examples/jsm/utils/SkeletonUtils.js +84 -66
  125. package/examples/jsm/utils/SortUtils.js +8 -5
  126. package/examples/jsm/utils/TextureUtils.js +3 -2
  127. package/examples/jsm/utils/TextureUtilsGPU.js +63 -0
  128. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  129. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  130. package/examples/jsm/webxr/XRHandModelFactory.js +4 -2
  131. package/package.json +11 -8
  132. package/src/Three.WebGPU.Nodes.js +200 -0
  133. package/src/Three.WebGPU.js +201 -0
  134. package/src/Three.js +23 -1
  135. package/src/animation/AnimationClip.js +1 -1
  136. package/src/animation/tracks/BooleanKeyframeTrack.js +10 -1
  137. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -2
  138. package/src/animation/tracks/StringKeyframeTrack.js +10 -1
  139. package/src/audio/Audio.js +2 -2
  140. package/src/constants.js +6 -7
  141. package/src/core/BufferAttribute.js +0 -9
  142. package/src/core/Clock.js +1 -1
  143. package/src/core/InterleavedBuffer.js +0 -9
  144. package/src/core/Object3D.js +34 -29
  145. package/src/core/Raycaster.js +6 -2
  146. package/src/core/RenderTarget.js +8 -0
  147. package/src/extras/Controls.js +32 -0
  148. package/src/extras/PMREMGenerator.js +12 -11
  149. package/src/extras/TextureUtils.js +210 -0
  150. package/src/geometries/CylinderGeometry.js +11 -4
  151. package/src/lights/Light.js +1 -0
  152. package/src/lights/LightShadow.js +5 -0
  153. package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
  154. package/src/loaders/FileLoader.js +5 -1
  155. package/src/loaders/LoaderUtils.js +3 -1
  156. package/src/loaders/MaterialLoader.js +8 -1
  157. package/src/loaders/ObjectLoader.js +36 -2
  158. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeLoader.js +27 -5
  159. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeMaterialLoader.js +22 -18
  160. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeObjectLoader.js +21 -1
  161. package/src/materials/Material.js +4 -0
  162. package/src/materials/MeshPhysicalMaterial.js +20 -0
  163. package/src/materials/ShaderMaterial.js +0 -4
  164. package/src/materials/nodes/InstancedPointsNodeMaterial.js +156 -0
  165. package/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +69 -68
  166. package/src/materials/nodes/LineBasicNodeMaterial.js +31 -0
  167. package/{examples/jsm/nodes/materials → src/materials/nodes}/LineDashedNodeMaterial.js +15 -12
  168. package/src/materials/nodes/MeshBasicNodeMaterial.js +77 -0
  169. package/src/materials/nodes/MeshLambertNodeMaterial.js +47 -0
  170. package/src/materials/nodes/MeshMatcapNodeMaterial.js +57 -0
  171. package/src/materials/nodes/MeshNormalNodeMaterial.js +44 -0
  172. package/src/materials/nodes/MeshPhongNodeMaterial.js +78 -0
  173. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +248 -0
  174. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshSSSNodeMaterial.js +10 -7
  175. package/src/materials/nodes/MeshStandardNodeMaterial.js +108 -0
  176. package/src/materials/nodes/MeshToonNodeMaterial.js +38 -0
  177. package/{examples/jsm/nodes/materials → src/materials/nodes}/NodeMaterial.js +198 -157
  178. package/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +7 -1
  179. package/{examples/jsm/nodes/materials → src/materials/nodes}/PointsNodeMaterial.js +10 -7
  180. package/src/materials/nodes/ShadowNodeMaterial.js +38 -0
  181. package/src/materials/nodes/SpriteNodeMaterial.js +123 -0
  182. package/src/materials/nodes/VolumeNodeMaterial.js +108 -0
  183. package/src/materials/nodes/manager/NodeMaterialObserver.js +302 -0
  184. package/src/math/Box2.js +4 -4
  185. package/src/math/Box3.js +6 -6
  186. package/src/math/ColorManagement.js +10 -0
  187. package/src/math/Matrix2.js +54 -0
  188. package/src/math/Spherical.js +4 -5
  189. package/src/math/Triangle.js +24 -0
  190. package/src/math/Vector4.js +13 -0
  191. package/src/nodes/Nodes.js +164 -0
  192. package/src/nodes/TSL.js +179 -0
  193. package/src/nodes/accessors/AccessorsUtils.js +25 -0
  194. package/src/nodes/accessors/BatchNode.js +128 -0
  195. package/src/nodes/accessors/Bitangent.js +13 -0
  196. package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +44 -6
  197. package/{examples/jsm → src}/nodes/accessors/BufferNode.js +13 -4
  198. package/src/nodes/accessors/Camera.js +13 -0
  199. package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +22 -15
  200. package/src/nodes/accessors/CubeTextureNode.js +79 -0
  201. package/src/nodes/accessors/InstanceNode.js +144 -0
  202. package/src/nodes/accessors/InstancedPointsMaterialNode.js +24 -0
  203. package/src/nodes/accessors/Lights.js +51 -0
  204. package/src/nodes/accessors/MaterialNode.js +441 -0
  205. package/src/nodes/accessors/MaterialProperties.js +3 -0
  206. package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +10 -5
  207. package/src/nodes/accessors/ModelNode.js +72 -0
  208. package/src/nodes/accessors/ModelViewProjectionNode.js +42 -0
  209. package/{examples/jsm → src}/nodes/accessors/MorphNode.js +51 -33
  210. package/src/nodes/accessors/Normal.js +88 -0
  211. package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +18 -34
  212. package/src/nodes/accessors/PointUVNode.js +30 -0
  213. package/src/nodes/accessors/Position.js +10 -0
  214. package/src/nodes/accessors/ReferenceBaseNode.js +171 -0
  215. package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +58 -9
  216. package/src/nodes/accessors/ReflectVector.js +10 -0
  217. package/src/nodes/accessors/RendererReferenceNode.js +35 -0
  218. package/{examples/jsm → src}/nodes/accessors/SceneNode.js +9 -6
  219. package/src/nodes/accessors/SkinningNode.js +191 -0
  220. package/src/nodes/accessors/StorageBufferNode.js +147 -0
  221. package/{examples/jsm/nodes/accessors/TextureStoreNode.js → src/nodes/accessors/StorageTextureNode.js} +35 -10
  222. package/src/nodes/accessors/Tangent.js +22 -0
  223. package/src/nodes/accessors/Texture3DNode.js +103 -0
  224. package/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +3 -32
  225. package/{examples/jsm → src}/nodes/accessors/TextureNode.js +123 -39
  226. package/src/nodes/accessors/TextureSizeNode.js +36 -0
  227. package/src/nodes/accessors/UV.js +3 -0
  228. package/{examples/jsm/nodes/accessors/UniformsNode.js → src/nodes/accessors/UniformArrayNode.js} +33 -15
  229. package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +10 -7
  230. package/src/nodes/accessors/VelocityNode.js +134 -0
  231. package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +9 -5
  232. package/{examples/jsm → src}/nodes/code/CodeNode.js +9 -5
  233. package/{examples/jsm → src}/nodes/code/ExpressionNode.js +10 -6
  234. package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +8 -5
  235. package/{examples/jsm → src}/nodes/code/FunctionNode.js +8 -31
  236. package/{examples/jsm → src}/nodes/code/ScriptableNode.js +24 -7
  237. package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +11 -8
  238. package/{examples/jsm → src}/nodes/core/AssignNode.js +12 -9
  239. package/{examples/jsm → src}/nodes/core/AttributeNode.js +29 -12
  240. package/{examples/jsm → src}/nodes/core/BypassNode.js +11 -7
  241. package/src/nodes/core/CacheNode.js +50 -0
  242. package/{examples/jsm → src}/nodes/core/ConstNode.js +6 -3
  243. package/{examples/jsm → src}/nodes/core/ContextNode.js +27 -11
  244. package/src/nodes/core/IndexNode.js +99 -0
  245. package/{examples/jsm → src}/nodes/core/InputNode.js +7 -3
  246. package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
  247. package/src/nodes/core/MRTNode.js +85 -0
  248. package/{examples/jsm → src}/nodes/core/Node.js +114 -57
  249. package/{examples/jsm → src}/nodes/core/NodeBuilder.js +327 -90
  250. package/src/nodes/core/NodeCache.js +36 -0
  251. package/{examples/jsm → src}/nodes/core/NodeFrame.js +52 -10
  252. package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
  253. package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
  254. package/{examples/jsm → src}/nodes/core/NodeUtils.js +56 -8
  255. package/{examples/jsm → src}/nodes/core/OutputStructNode.js +13 -12
  256. package/{examples/jsm → src}/nodes/core/ParameterNode.js +7 -4
  257. package/src/nodes/core/PropertyNode.js +88 -0
  258. package/{examples/jsm → src}/nodes/core/StackNode.js +31 -11
  259. package/{examples/jsm → src}/nodes/core/StructTypeNode.js +7 -3
  260. package/{examples/jsm → src}/nodes/core/TempNode.js +10 -6
  261. package/src/nodes/core/UniformGroupNode.js +59 -0
  262. package/{examples/jsm → src}/nodes/core/UniformNode.js +37 -5
  263. package/{examples/jsm → src}/nodes/core/VarNode.js +14 -14
  264. package/src/nodes/core/VaryingNode.js +108 -0
  265. package/{examples/jsm → src}/nodes/display/AfterImageNode.js +38 -28
  266. package/src/nodes/display/AnaglyphPassNode.js +67 -0
  267. package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +33 -30
  268. package/src/nodes/display/BleachBypass.js +26 -0
  269. package/src/nodes/display/BlendMode.js +54 -0
  270. package/src/nodes/display/BloomNode.js +341 -0
  271. package/{examples/jsm → src}/nodes/display/BumpMapNode.js +20 -38
  272. package/src/nodes/display/ColorAdjustment.js +46 -0
  273. package/src/nodes/display/ColorSpaceFunctions.js +38 -0
  274. package/src/nodes/display/ColorSpaceNode.js +114 -0
  275. package/src/nodes/display/DenoiseNode.js +204 -0
  276. package/src/nodes/display/DepthOfFieldNode.js +124 -0
  277. package/src/nodes/display/DotScreenNode.js +66 -0
  278. package/src/nodes/display/FXAANode.js +332 -0
  279. package/src/nodes/display/FilmNode.js +56 -0
  280. package/src/nodes/display/FrontFacingNode.js +45 -0
  281. package/src/nodes/display/GTAONode.js +331 -0
  282. package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +47 -24
  283. package/src/nodes/display/Lut3DNode.js +57 -0
  284. package/src/nodes/display/MotionBlur.js +25 -0
  285. package/{examples/jsm → src}/nodes/display/NormalMapNode.js +14 -14
  286. package/src/nodes/display/ParallaxBarrierPassNode.js +58 -0
  287. package/src/nodes/display/PassNode.js +378 -0
  288. package/src/nodes/display/PixelationPassNode.js +213 -0
  289. package/{examples/jsm → src}/nodes/display/PosterizeNode.js +8 -7
  290. package/src/nodes/display/RGBShiftNode.js +53 -0
  291. package/src/nodes/display/RenderOutputNode.js +60 -0
  292. package/src/nodes/display/SSAAPassNode.js +287 -0
  293. package/src/nodes/display/ScreenNode.js +181 -0
  294. package/src/nodes/display/Sepia.js +17 -0
  295. package/src/nodes/display/SobelOperatorNode.js +126 -0
  296. package/src/nodes/display/StereoCompositePassNode.js +110 -0
  297. package/src/nodes/display/StereoPassNode.js +83 -0
  298. package/src/nodes/display/ToneMappingFunctions.js +190 -0
  299. package/src/nodes/display/ToneMappingNode.js +67 -0
  300. package/src/nodes/display/ToonOutlinePassNode.js +111 -0
  301. package/src/nodes/display/TransitionNode.js +80 -0
  302. package/src/nodes/display/ViewportDepthNode.js +125 -0
  303. package/src/nodes/display/ViewportDepthTextureNode.js +33 -0
  304. package/src/nodes/display/ViewportSharedTextureNode.js +39 -0
  305. package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +20 -14
  306. package/src/nodes/fog/FogExp2Node.js +35 -0
  307. package/src/nodes/fog/FogNode.js +50 -0
  308. package/src/nodes/fog/FogRangeNode.js +36 -0
  309. package/src/nodes/functions/BSDF/BRDF_GGX.js +59 -0
  310. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  311. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  312. package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +2 -2
  313. package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
  314. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
  315. package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  316. package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
  317. package/src/nodes/functions/BSDF/LTC.js +131 -0
  318. package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  319. package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -4
  320. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
  321. package/src/nodes/functions/BasicLightingModel.js +78 -0
  322. package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +11 -9
  323. package/src/nodes/functions/PhysicalLightingModel.js +633 -0
  324. package/src/nodes/functions/ShadowMaskModel.js +31 -0
  325. package/src/nodes/functions/ToonLightingModel.js +51 -0
  326. package/src/nodes/functions/material/getGeometryRoughness.js +13 -0
  327. package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
  328. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  329. package/{examples/jsm → src}/nodes/geometry/RangeNode.js +28 -11
  330. package/src/nodes/gpgpu/AtomicFunctionNode.js +99 -0
  331. package/src/nodes/gpgpu/BarrierNode.js +40 -0
  332. package/src/nodes/gpgpu/ComputeBuiltinNode.js +98 -0
  333. package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +10 -6
  334. package/src/nodes/gpgpu/WorkgroupInfoNode.js +100 -0
  335. package/src/nodes/lighting/AONode.js +27 -0
  336. package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +6 -8
  337. package/src/nodes/lighting/AnalyticLightNode.js +522 -0
  338. package/src/nodes/lighting/BasicEnvironmentNode.js +30 -0
  339. package/src/nodes/lighting/BasicLightMapNode.js +32 -0
  340. package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +7 -9
  341. package/src/nodes/lighting/EnvironmentNode.js +138 -0
  342. package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +12 -11
  343. package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +7 -9
  344. package/src/nodes/lighting/IrradianceNode.js +27 -0
  345. package/src/nodes/lighting/LightProbeNode.js +53 -0
  346. package/{examples/jsm → src}/nodes/lighting/LightUtils.js +3 -3
  347. package/src/nodes/lighting/LightingContextNode.js +67 -0
  348. package/{examples/jsm → src}/nodes/lighting/LightingNode.js +9 -3
  349. package/src/nodes/lighting/LightsNode.js +250 -0
  350. package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +12 -13
  351. package/src/nodes/lighting/RectAreaLightNode.js +97 -0
  352. package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +14 -16
  353. package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +2 -2
  354. package/src/nodes/materialx/lib/mx_hsv.js +127 -0
  355. package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +500 -603
  356. package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
  357. package/{examples/jsm/nodes/math/CondNode.js → src/nodes/math/ConditionalNode.js} +48 -13
  358. package/src/nodes/math/Hash.js +13 -0
  359. package/src/nodes/math/MathNode.js +407 -0
  360. package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -7
  361. package/src/nodes/math/OperatorNode.js +319 -0
  362. package/{examples/jsm → src}/nodes/math/TriNoise3D.js +19 -29
  363. package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
  364. package/src/nodes/pmrem/PMREMNode.js +240 -0
  365. package/src/nodes/pmrem/PMREMUtils.js +288 -0
  366. package/src/nodes/procedural/Checker.js +14 -0
  367. package/src/nodes/tsl/TSLBase.js +30 -0
  368. package/{examples/jsm/nodes/shadernode/ShaderNode.js → src/nodes/tsl/TSLCore.js} +122 -96
  369. package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +9 -5
  370. package/{examples/jsm → src}/nodes/utils/ConvertNode.js +7 -3
  371. package/src/nodes/utils/CubeMapNode.js +160 -0
  372. package/src/nodes/utils/Discard.js +8 -0
  373. package/src/nodes/utils/EquirectUVNode.js +36 -0
  374. package/src/nodes/utils/FlipNode.js +68 -0
  375. package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +11 -5
  376. package/{examples/jsm → src}/nodes/utils/JoinNode.js +6 -3
  377. package/{examples/jsm → src}/nodes/utils/LoopNode.js +23 -12
  378. package/src/nodes/utils/MatcapUVNode.js +33 -0
  379. package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +16 -7
  380. package/{examples/jsm → src}/nodes/utils/OscNode.js +12 -8
  381. package/src/nodes/utils/Packing.js +4 -0
  382. package/src/nodes/utils/RTTNode.js +133 -0
  383. package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +21 -5
  384. package/{examples/jsm → src}/nodes/utils/RemapNode.js +12 -8
  385. package/{examples/jsm → src}/nodes/utils/RotateNode.js +8 -13
  386. package/{examples/jsm → src}/nodes/utils/SetNode.js +7 -4
  387. package/{examples/jsm → src}/nodes/utils/SplitNode.js +7 -3
  388. package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +10 -6
  389. package/src/nodes/utils/SpriteUtils.js +47 -0
  390. package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +11 -12
  391. package/{examples/jsm → src}/nodes/utils/TimerNode.js +8 -5
  392. package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +11 -9
  393. package/src/nodes/utils/UVUtils.js +19 -0
  394. package/src/nodes/utils/ViewportUtils.js +14 -0
  395. package/src/objects/BatchedMesh.js +302 -144
  396. package/src/objects/InstancedMesh.js +11 -1
  397. package/src/objects/LOD.js +21 -0
  398. package/src/objects/Line.js +67 -43
  399. package/src/objects/Mesh.js +7 -23
  400. package/src/objects/Points.js +2 -0
  401. package/src/renderers/WebGLRenderer.js +473 -224
  402. package/{examples/jsm → src}/renderers/common/Animation.js +3 -0
  403. package/{examples/jsm → src}/renderers/common/Attributes.js +4 -1
  404. package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
  405. package/{examples/jsm → src}/renderers/common/Background.js +18 -10
  406. package/src/renderers/common/BindGroup.js +18 -0
  407. package/src/renderers/common/Bindings.js +203 -0
  408. package/src/renderers/common/BundleGroup.js +26 -0
  409. package/src/renderers/common/ChainMap.js +59 -0
  410. package/{examples/jsm → src}/renderers/common/ClippingContext.js +24 -12
  411. package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
  412. package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +16 -4
  413. package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
  414. package/{examples/jsm → src}/renderers/common/Info.js +35 -15
  415. package/{examples/jsm → src}/renderers/common/Pipelines.js +2 -2
  416. package/src/renderers/common/PostProcessing.js +90 -0
  417. package/src/renderers/common/QuadMesh.js +55 -0
  418. package/src/renderers/common/RenderBundle.js +18 -0
  419. package/src/renderers/common/RenderBundles.js +38 -0
  420. package/{examples/jsm → src}/renderers/common/RenderContext.js +25 -2
  421. package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
  422. package/{examples/jsm → src}/renderers/common/RenderList.js +11 -2
  423. package/src/renderers/common/RenderObject.js +413 -0
  424. package/{examples/jsm → src}/renderers/common/RenderObjects.js +9 -2
  425. package/{examples/jsm → src}/renderers/common/Renderer.js +431 -83
  426. package/{examples/jsm → src}/renderers/common/SampledTexture.js +14 -5
  427. package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
  428. package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
  429. package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
  430. package/{examples/jsm → src}/renderers/common/Textures.js +15 -15
  431. package/{examples/jsm → src}/renderers/common/Uniform.js +10 -5
  432. package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
  433. package/src/renderers/common/extras/PMREMGenerator.js +771 -0
  434. package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
  435. package/src/renderers/common/nodes/NodeLibrary.js +118 -0
  436. package/src/renderers/common/nodes/NodeSampledTexture.js +64 -0
  437. package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +8 -1
  438. package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
  439. package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
  440. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
  441. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
  442. package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +106 -68
  443. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
  444. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  445. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
  446. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
  447. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
  448. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
  449. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  450. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
  451. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
  452. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +1 -0
  453. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  454. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  455. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
  456. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
  457. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
  458. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +1 -1
  459. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
  460. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +10 -31
  461. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
  462. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  463. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +38 -25
  464. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  465. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  466. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +19 -11
  467. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  468. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
  469. package/src/renderers/shaders/ShaderChunk.js +0 -2
  470. package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
  471. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -0
  472. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  473. package/src/renderers/shaders/ShaderLib.js +2 -1
  474. package/src/renderers/shaders/UniformsLib.js +3 -0
  475. package/src/renderers/shaders/UniformsUtils.js +10 -1
  476. package/src/renderers/webgl/WebGLAttributes.js +42 -38
  477. package/src/renderers/webgl/WebGLBackground.js +24 -3
  478. package/src/renderers/webgl/WebGLBindingStates.js +14 -51
  479. package/src/renderers/webgl/WebGLBufferRenderer.js +23 -22
  480. package/src/renderers/webgl/WebGLCapabilities.js +44 -13
  481. package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  482. package/src/renderers/webgl/WebGLExtensions.js +7 -20
  483. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +23 -21
  484. package/src/renderers/webgl/WebGLLights.js +21 -44
  485. package/src/renderers/webgl/WebGLMaterials.js +9 -8
  486. package/src/renderers/webgl/WebGLMorphtargets.js +78 -217
  487. package/src/renderers/webgl/WebGLProgram.js +46 -78
  488. package/src/renderers/webgl/WebGLPrograms.js +37 -40
  489. package/src/renderers/webgl/WebGLProperties.js +7 -0
  490. package/src/renderers/webgl/WebGLRenderStates.js +15 -9
  491. package/src/renderers/webgl/WebGLShadowMap.js +25 -25
  492. package/src/renderers/webgl/WebGLState.js +35 -58
  493. package/src/renderers/webgl/WebGLTextures.js +313 -358
  494. package/src/renderers/webgl/WebGLUniforms.js +12 -2
  495. package/src/renderers/webgl/WebGLUniformsGroups.js +8 -8
  496. package/src/renderers/webgl/WebGLUtils.js +9 -78
  497. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +389 -152
  498. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +145 -0
  499. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +245 -44
  500. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +7 -1
  501. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +2 -0
  502. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
  503. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +21 -3
  504. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +271 -43
  505. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +6 -23
  506. package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +318 -141
  507. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +42 -0
  508. package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +10 -7
  509. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +59 -0
  510. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +105 -0
  511. package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +424 -95
  512. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
  513. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +37 -18
  514. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +86 -32
  515. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +10 -1
  516. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +68 -27
  517. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
  518. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +235 -68
  519. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +43 -5
  520. package/src/renderers/webxr/WebXRDepthSensing.js +11 -6
  521. package/src/renderers/webxr/WebXRManager.js +53 -38
  522. package/src/scenes/Scene.js +7 -1
  523. package/src/textures/CompressedArrayTexture.js +14 -0
  524. package/src/textures/DataArrayTexture.js +14 -0
  525. package/src/textures/DepthTexture.js +1 -3
  526. package/src/textures/Texture.js +12 -2
  527. package/src/utils.js +62 -1
  528. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  529. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  530. package/examples/jsm/loaders/TiltLoader.js +0 -520
  531. package/examples/jsm/nodes/Nodes.js +0 -195
  532. package/examples/jsm/nodes/accessors/AccessorsUtils.js +0 -10
  533. package/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
  534. package/examples/jsm/nodes/accessors/CameraNode.js +0 -119
  535. package/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
  536. package/examples/jsm/nodes/accessors/InstanceNode.js +0 -71
  537. package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  538. package/examples/jsm/nodes/accessors/MaterialNode.js +0 -314
  539. package/examples/jsm/nodes/accessors/ModelNode.js +0 -33
  540. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +0 -39
  541. package/examples/jsm/nodes/accessors/NormalNode.js +0 -96
  542. package/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
  543. package/examples/jsm/nodes/accessors/PositionNode.js +0 -104
  544. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
  545. package/examples/jsm/nodes/accessors/SkinningNode.js +0 -124
  546. package/examples/jsm/nodes/accessors/StorageBufferNode.js +0 -72
  547. package/examples/jsm/nodes/accessors/TangentNode.js +0 -109
  548. package/examples/jsm/nodes/accessors/TextureSizeNode.js +0 -35
  549. package/examples/jsm/nodes/accessors/UVNode.js +0 -47
  550. package/examples/jsm/nodes/core/CacheNode.js +0 -49
  551. package/examples/jsm/nodes/core/IndexNode.js +0 -66
  552. package/examples/jsm/nodes/core/NodeCache.js +0 -26
  553. package/examples/jsm/nodes/core/NodeKeywords.js +0 -80
  554. package/examples/jsm/nodes/core/PropertyNode.js +0 -72
  555. package/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
  556. package/examples/jsm/nodes/core/VaryingNode.js +0 -65
  557. package/examples/jsm/nodes/display/BlendModeNode.js +0 -128
  558. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
  559. package/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
  560. package/examples/jsm/nodes/display/FrontFacingNode.js +0 -27
  561. package/examples/jsm/nodes/display/PassNode.js +0 -183
  562. package/examples/jsm/nodes/display/ToneMappingNode.js +0 -184
  563. package/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
  564. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
  565. package/examples/jsm/nodes/display/ViewportNode.js +0 -134
  566. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -31
  567. package/examples/jsm/nodes/fog/FogExp2Node.js +0 -35
  568. package/examples/jsm/nodes/fog/FogNode.js +0 -38
  569. package/examples/jsm/nodes/fog/FogRangeNode.js +0 -34
  570. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +0 -40
  571. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +0 -393
  572. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
  573. package/examples/jsm/nodes/lighting/AONode.js +0 -27
  574. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -241
  575. package/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -181
  576. package/examples/jsm/nodes/lighting/LightNode.js +0 -57
  577. package/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
  578. package/examples/jsm/nodes/lighting/LightsNode.js +0 -188
  579. package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  580. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
  581. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  582. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
  583. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  584. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
  585. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +0 -155
  586. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +0 -80
  587. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -90
  588. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +0 -130
  589. package/examples/jsm/nodes/math/HashNode.js +0 -34
  590. package/examples/jsm/nodes/math/MathNode.js +0 -391
  591. package/examples/jsm/nodes/math/OperatorNode.js +0 -274
  592. package/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
  593. package/examples/jsm/nodes/utils/DiscardNode.js +0 -27
  594. package/examples/jsm/nodes/utils/EquirectUVNode.js +0 -33
  595. package/examples/jsm/nodes/utils/MatcapUVNode.js +0 -30
  596. package/examples/jsm/nodes/utils/PackingNode.js +0 -55
  597. package/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
  598. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  599. package/examples/jsm/objects/QuadMesh.js +0 -66
  600. package/examples/jsm/renderers/common/Bindings.js +0 -173
  601. package/examples/jsm/renderers/common/ChainMap.js +0 -89
  602. package/examples/jsm/renderers/common/PostProcessing.js +0 -25
  603. package/examples/jsm/renderers/common/RenderObject.js +0 -221
  604. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  605. package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +0 -49
  606. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  607. package/examples/jsm/utils/GPUStatsPanel.js +0 -128
  608. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  609. package/src/renderers/WebGL1Renderer.js +0 -7
  610. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
  611. /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
  612. /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
  613. /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
  614. /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
  615. /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
  616. /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
  617. /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
  618. /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
  619. /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
  620. /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
  621. /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
  622. /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
  623. /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
  624. /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
  625. /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
  626. /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
  627. /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
  628. /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
  629. /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
  630. /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
  631. /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
  632. /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
  633. /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
  634. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
  635. /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
@@ -3,296 +3,157 @@ import { DataArrayTexture } from '../../textures/DataArrayTexture.js';
3
3
  import { Vector4 } from '../../math/Vector4.js';
4
4
  import { Vector2 } from '../../math/Vector2.js';
5
5
 
6
- function numericalSort( a, b ) {
7
-
8
- return a[ 0 ] - b[ 0 ];
9
-
10
- }
11
-
12
- function absNumericalSort( a, b ) {
13
-
14
- return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );
15
-
16
- }
17
-
18
6
  function WebGLMorphtargets( gl, capabilities, textures ) {
19
7
 
20
- const influencesList = {};
21
- const morphInfluences = new Float32Array( 8 );
22
8
  const morphTextures = new WeakMap();
23
9
  const morph = new Vector4();
24
10
 
25
- const workInfluences = [];
26
-
27
- for ( let i = 0; i < 8; i ++ ) {
28
-
29
- workInfluences[ i ] = [ i, 0 ];
30
-
31
- }
32
-
33
11
  function update( object, geometry, program ) {
34
12
 
35
13
  const objectInfluences = object.morphTargetInfluences;
36
14
 
37
- if ( capabilities.isWebGL2 === true ) {
38
-
39
- // instead of using attributes, the WebGL 2 code path encodes morph targets
40
- // into an array of data textures. Each layer represents a single morph target.
41
-
42
- const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
43
- const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
44
-
45
- let entry = morphTextures.get( geometry );
46
-
47
- if ( entry === undefined || entry.count !== morphTargetsCount ) {
48
-
49
- if ( entry !== undefined ) entry.texture.dispose();
50
-
51
- const hasMorphPosition = geometry.morphAttributes.position !== undefined;
52
- const hasMorphNormals = geometry.morphAttributes.normal !== undefined;
53
- const hasMorphColors = geometry.morphAttributes.color !== undefined;
54
-
55
- const morphTargets = geometry.morphAttributes.position || [];
56
- const morphNormals = geometry.morphAttributes.normal || [];
57
- const morphColors = geometry.morphAttributes.color || [];
58
-
59
- let vertexDataCount = 0;
60
-
61
- if ( hasMorphPosition === true ) vertexDataCount = 1;
62
- if ( hasMorphNormals === true ) vertexDataCount = 2;
63
- if ( hasMorphColors === true ) vertexDataCount = 3;
15
+ // the following encodes morph targets into an array of data textures. Each layer represents a single morph target.
64
16
 
65
- let width = geometry.attributes.position.count * vertexDataCount;
66
- let height = 1;
17
+ const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
18
+ const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
67
19
 
68
- if ( width > capabilities.maxTextureSize ) {
20
+ let entry = morphTextures.get( geometry );
69
21
 
70
- height = Math.ceil( width / capabilities.maxTextureSize );
71
- width = capabilities.maxTextureSize;
22
+ if ( entry === undefined || entry.count !== morphTargetsCount ) {
72
23
 
73
- }
74
-
75
- const buffer = new Float32Array( width * height * 4 * morphTargetsCount );
24
+ if ( entry !== undefined ) entry.texture.dispose();
76
25
 
77
- const texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );
78
- texture.type = FloatType;
79
- texture.needsUpdate = true;
26
+ const hasMorphPosition = geometry.morphAttributes.position !== undefined;
27
+ const hasMorphNormals = geometry.morphAttributes.normal !== undefined;
28
+ const hasMorphColors = geometry.morphAttributes.color !== undefined;
80
29
 
81
- // fill buffer
30
+ const morphTargets = geometry.morphAttributes.position || [];
31
+ const morphNormals = geometry.morphAttributes.normal || [];
32
+ const morphColors = geometry.morphAttributes.color || [];
82
33
 
83
- const vertexDataStride = vertexDataCount * 4;
34
+ let vertexDataCount = 0;
84
35
 
85
- for ( let i = 0; i < morphTargetsCount; i ++ ) {
36
+ if ( hasMorphPosition === true ) vertexDataCount = 1;
37
+ if ( hasMorphNormals === true ) vertexDataCount = 2;
38
+ if ( hasMorphColors === true ) vertexDataCount = 3;
86
39
 
87
- const morphTarget = morphTargets[ i ];
88
- const morphNormal = morphNormals[ i ];
89
- const morphColor = morphColors[ i ];
40
+ let width = geometry.attributes.position.count * vertexDataCount;
41
+ let height = 1;
90
42
 
91
- const offset = width * height * 4 * i;
43
+ if ( width > capabilities.maxTextureSize ) {
92
44
 
93
- for ( let j = 0; j < morphTarget.count; j ++ ) {
45
+ height = Math.ceil( width / capabilities.maxTextureSize );
46
+ width = capabilities.maxTextureSize;
94
47
 
95
- const stride = j * vertexDataStride;
48
+ }
96
49
 
97
- if ( hasMorphPosition === true ) {
50
+ const buffer = new Float32Array( width * height * 4 * morphTargetsCount );
98
51
 
99
- morph.fromBufferAttribute( morphTarget, j );
52
+ const texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );
53
+ texture.type = FloatType;
54
+ texture.needsUpdate = true;
100
55
 
101
- buffer[ offset + stride + 0 ] = morph.x;
102
- buffer[ offset + stride + 1 ] = morph.y;
103
- buffer[ offset + stride + 2 ] = morph.z;
104
- buffer[ offset + stride + 3 ] = 0;
56
+ // fill buffer
105
57
 
106
- }
58
+ const vertexDataStride = vertexDataCount * 4;
107
59
 
108
- if ( hasMorphNormals === true ) {
60
+ for ( let i = 0; i < morphTargetsCount; i ++ ) {
109
61
 
110
- morph.fromBufferAttribute( morphNormal, j );
62
+ const morphTarget = morphTargets[ i ];
63
+ const morphNormal = morphNormals[ i ];
64
+ const morphColor = morphColors[ i ];
111
65
 
112
- buffer[ offset + stride + 4 ] = morph.x;
113
- buffer[ offset + stride + 5 ] = morph.y;
114
- buffer[ offset + stride + 6 ] = morph.z;
115
- buffer[ offset + stride + 7 ] = 0;
66
+ const offset = width * height * 4 * i;
116
67
 
117
- }
68
+ for ( let j = 0; j < morphTarget.count; j ++ ) {
118
69
 
119
- if ( hasMorphColors === true ) {
70
+ const stride = j * vertexDataStride;
120
71
 
121
- morph.fromBufferAttribute( morphColor, j );
72
+ if ( hasMorphPosition === true ) {
122
73
 
123
- buffer[ offset + stride + 8 ] = morph.x;
124
- buffer[ offset + stride + 9 ] = morph.y;
125
- buffer[ offset + stride + 10 ] = morph.z;
126
- buffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;
74
+ morph.fromBufferAttribute( morphTarget, j );
127
75
 
128
- }
76
+ buffer[ offset + stride + 0 ] = morph.x;
77
+ buffer[ offset + stride + 1 ] = morph.y;
78
+ buffer[ offset + stride + 2 ] = morph.z;
79
+ buffer[ offset + stride + 3 ] = 0;
129
80
 
130
81
  }
131
82
 
132
- }
133
-
134
- entry = {
135
- count: morphTargetsCount,
136
- texture: texture,
137
- size: new Vector2( width, height )
138
- };
139
-
140
- morphTextures.set( geometry, entry );
141
-
142
- function disposeTexture() {
143
-
144
- texture.dispose();
145
-
146
- morphTextures.delete( geometry );
147
-
148
- geometry.removeEventListener( 'dispose', disposeTexture );
149
-
150
- }
151
-
152
- geometry.addEventListener( 'dispose', disposeTexture );
83
+ if ( hasMorphNormals === true ) {
153
84
 
154
- }
85
+ morph.fromBufferAttribute( morphNormal, j );
155
86
 
156
- //
157
- if ( object.isInstancedMesh === true && object.morphTexture !== null ) {
87
+ buffer[ offset + stride + 4 ] = morph.x;
88
+ buffer[ offset + stride + 5 ] = morph.y;
89
+ buffer[ offset + stride + 6 ] = morph.z;
90
+ buffer[ offset + stride + 7 ] = 0;
158
91
 
159
- program.getUniforms().setValue( gl, 'morphTexture', object.morphTexture, textures );
92
+ }
160
93
 
161
- } else {
94
+ if ( hasMorphColors === true ) {
162
95
 
163
- let morphInfluencesSum = 0;
96
+ morph.fromBufferAttribute( morphColor, j );
164
97
 
165
- for ( let i = 0; i < objectInfluences.length; i ++ ) {
98
+ buffer[ offset + stride + 8 ] = morph.x;
99
+ buffer[ offset + stride + 9 ] = morph.y;
100
+ buffer[ offset + stride + 10 ] = morph.z;
101
+ buffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;
166
102
 
167
- morphInfluencesSum += objectInfluences[ i ];
103
+ }
168
104
 
169
105
  }
170
106
 
171
- const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;
172
-
173
-
174
- program.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );
175
- program.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );
176
-
177
107
  }
178
108
 
179
- program.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );
180
- program.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );
181
-
182
- } else {
183
-
184
- // When object doesn't have morph target influences defined, we treat it as a 0-length array
185
- // This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences
109
+ entry = {
110
+ count: morphTargetsCount,
111
+ texture: texture,
112
+ size: new Vector2( width, height )
113
+ };
186
114
 
187
- const length = objectInfluences === undefined ? 0 : objectInfluences.length;
115
+ morphTextures.set( geometry, entry );
188
116
 
189
- let influences = influencesList[ geometry.id ];
117
+ function disposeTexture() {
190
118
 
191
- if ( influences === undefined || influences.length !== length ) {
119
+ texture.dispose();
192
120
 
193
- // initialise list
121
+ morphTextures.delete( geometry );
194
122
 
195
- influences = [];
196
-
197
- for ( let i = 0; i < length; i ++ ) {
198
-
199
- influences[ i ] = [ i, 0 ];
200
-
201
- }
202
-
203
- influencesList[ geometry.id ] = influences;
204
-
205
- }
206
-
207
- // Collect influences
208
-
209
- for ( let i = 0; i < length; i ++ ) {
210
-
211
- const influence = influences[ i ];
212
-
213
- influence[ 0 ] = i;
214
- influence[ 1 ] = objectInfluences[ i ];
123
+ geometry.removeEventListener( 'dispose', disposeTexture );
215
124
 
216
125
  }
217
126
 
218
- influences.sort( absNumericalSort );
127
+ geometry.addEventListener( 'dispose', disposeTexture );
219
128
 
220
- for ( let i = 0; i < 8; i ++ ) {
221
-
222
- if ( i < length && influences[ i ][ 1 ] ) {
223
-
224
- workInfluences[ i ][ 0 ] = influences[ i ][ 0 ];
225
- workInfluences[ i ][ 1 ] = influences[ i ][ 1 ];
226
-
227
- } else {
228
-
229
- workInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;
230
- workInfluences[ i ][ 1 ] = 0;
231
-
232
- }
129
+ }
233
130
 
234
- }
131
+ //
132
+ if ( object.isInstancedMesh === true && object.morphTexture !== null ) {
235
133
 
236
- workInfluences.sort( numericalSort );
134
+ program.getUniforms().setValue( gl, 'morphTexture', object.morphTexture, textures );
237
135
 
238
- const morphTargets = geometry.morphAttributes.position;
239
- const morphNormals = geometry.morphAttributes.normal;
136
+ } else {
240
137
 
241
138
  let morphInfluencesSum = 0;
242
139
 
243
- for ( let i = 0; i < 8; i ++ ) {
244
-
245
- const influence = workInfluences[ i ];
246
- const index = influence[ 0 ];
247
- const value = influence[ 1 ];
248
-
249
- if ( index !== Number.MAX_SAFE_INTEGER && value ) {
140
+ for ( let i = 0; i < objectInfluences.length; i ++ ) {
250
141
 
251
- if ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {
252
-
253
- geometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );
254
-
255
- }
256
-
257
- if ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {
258
-
259
- geometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );
260
-
261
- }
262
-
263
- morphInfluences[ i ] = value;
264
- morphInfluencesSum += value;
265
-
266
- } else {
267
-
268
- if ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {
269
-
270
- geometry.deleteAttribute( 'morphTarget' + i );
271
-
272
- }
273
-
274
- if ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {
275
-
276
- geometry.deleteAttribute( 'morphNormal' + i );
277
-
278
- }
279
-
280
- morphInfluences[ i ] = 0;
281
-
282
- }
142
+ morphInfluencesSum += objectInfluences[ i ];
283
143
 
284
144
  }
285
145
 
286
- // GLSL shader uses formula baseinfluence * base + sum(target * influence)
287
- // This allows us to switch between absolute morphs and relative morphs without changing shader code
288
- // When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)
289
146
  const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;
290
147
 
148
+
291
149
  program.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );
292
- program.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );
150
+ program.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );
293
151
 
294
152
  }
295
153
 
154
+ program.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );
155
+ program.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );
156
+
296
157
  }
297
158
 
298
159
  return {
@@ -3,6 +3,7 @@ import { WebGLShader } from './WebGLShader.js';
3
3
  import { ShaderChunk } from '../shaders/ShaderChunk.js';
4
4
  import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, AgXToneMapping, ACESFilmicToneMapping, NeutralToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GLSL3, LinearSRGBColorSpace, SRGBColorSpace, LinearDisplayP3ColorSpace, DisplayP3ColorSpace, P3Primaries, Rec709Primaries } from '../../constants.js';
5
5
  import { ColorManagement } from '../../math/ColorManagement.js';
6
+ import { Vector3 } from '../../math/Vector3.js';
6
7
 
7
8
  // From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/
8
9
  const COMPLETION_STATUS_KHR = 0x91B1;
@@ -113,7 +114,7 @@ function getToneMappingFunction( functionName, toneMapping ) {
113
114
  break;
114
115
 
115
116
  case CineonToneMapping:
116
- toneMappingName = 'OptimizedCineon';
117
+ toneMappingName = 'Cineon';
117
118
  break;
118
119
 
119
120
  case ACESFilmicToneMapping:
@@ -142,16 +143,27 @@ function getToneMappingFunction( functionName, toneMapping ) {
142
143
 
143
144
  }
144
145
 
145
- function generateExtensions( parameters ) {
146
+ const _v0 = /*@__PURE__*/ new Vector3();
146
147
 
147
- const chunks = [
148
- ( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.normalMapTangentSpace || parameters.clearcoatNormalMap || parameters.flatShading || parameters.alphaToCoverage || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',
149
- ( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',
150
- ( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',
151
- ( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''
152
- ];
148
+ function getLuminanceFunction() {
153
149
 
154
- return chunks.filter( filterEmptyLine ).join( '\n' );
150
+ ColorManagement.getLuminanceCoefficients( _v0 );
151
+
152
+ const r = _v0.x.toFixed( 4 );
153
+ const g = _v0.y.toFixed( 4 );
154
+ const b = _v0.z.toFixed( 4 );
155
+
156
+ return [
157
+
158
+ 'float luminance( const in vec3 rgb ) {',
159
+
160
+ ` const vec3 weights = vec3( ${ r }, ${ g }, ${ b } );`,
161
+
162
+ ' return dot( weights, rgb );',
163
+
164
+ '}'
165
+
166
+ ].join( '\n' );
155
167
 
156
168
  }
157
169
 
@@ -257,11 +269,7 @@ function resolveIncludes( string ) {
257
269
 
258
270
  }
259
271
 
260
- const shaderChunkMap = new Map( [
261
- [ 'encodings_fragment', 'colorspace_fragment' ], // @deprecated, r154
262
- [ 'encodings_pars_fragment', 'colorspace_pars_fragment' ], // @deprecated, r154
263
- [ 'output_fragment', 'opaque_fragment' ], // @deprecated, r154
264
- ] );
272
+ const shaderChunkMap = new Map();
265
273
 
266
274
  function includeReplacer( match, include ) {
267
275
 
@@ -322,27 +330,21 @@ function generatePrecision( parameters ) {
322
330
  precision ${parameters.precision} int;
323
331
  precision ${parameters.precision} sampler2D;
324
332
  precision ${parameters.precision} samplerCube;
333
+ precision ${parameters.precision} sampler3D;
334
+ precision ${parameters.precision} sampler2DArray;
335
+ precision ${parameters.precision} sampler2DShadow;
336
+ precision ${parameters.precision} samplerCubeShadow;
337
+ precision ${parameters.precision} sampler2DArrayShadow;
338
+ precision ${parameters.precision} isampler2D;
339
+ precision ${parameters.precision} isampler3D;
340
+ precision ${parameters.precision} isamplerCube;
341
+ precision ${parameters.precision} isampler2DArray;
342
+ precision ${parameters.precision} usampler2D;
343
+ precision ${parameters.precision} usampler3D;
344
+ precision ${parameters.precision} usamplerCube;
345
+ precision ${parameters.precision} usampler2DArray;
325
346
  `;
326
347
 
327
- if ( parameters.isWebGL2 ) {
328
-
329
- precisionstring += `precision ${parameters.precision} sampler3D;
330
- precision ${parameters.precision} sampler2DArray;
331
- precision ${parameters.precision} sampler2DShadow;
332
- precision ${parameters.precision} samplerCubeShadow;
333
- precision ${parameters.precision} sampler2DArrayShadow;
334
- precision ${parameters.precision} isampler2D;
335
- precision ${parameters.precision} isampler3D;
336
- precision ${parameters.precision} isamplerCube;
337
- precision ${parameters.precision} isampler2DArray;
338
- precision ${parameters.precision} usampler2D;
339
- precision ${parameters.precision} usampler3D;
340
- precision ${parameters.precision} usamplerCube;
341
- precision ${parameters.precision} usampler2DArray;
342
- `;
343
-
344
- }
345
-
346
348
  if ( parameters.precision === 'highp' ) {
347
349
 
348
350
  precisionstring += '\n#define HIGH_PRECISION';
@@ -491,8 +493,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
491
493
  const envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );
492
494
  const envMapCubeUVSize = generateCubeUVSize( parameters );
493
495
 
494
- const customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );
495
-
496
496
  const customVertexExtensions = generateVertexExtensions( parameters );
497
497
 
498
498
  const customDefines = generateDefines( defines );
@@ -521,8 +521,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
521
521
 
522
522
  prefixFragment = [
523
523
 
524
- customExtensions,
525
-
526
524
  '#define SHADER_TYPE ' + parameters.shaderType,
527
525
  '#define SHADER_NAME ' + parameters.shaderName,
528
526
 
@@ -549,6 +547,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
549
547
 
550
548
  parameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',
551
549
  parameters.batching ? '#define USE_BATCHING' : '',
550
+ parameters.batchingColor ? '#define USE_BATCHING_COLOR' : '',
552
551
  parameters.instancing ? '#define USE_INSTANCING' : '',
553
552
  parameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',
554
553
  parameters.instancingMorph ? '#define USE_INSTANCING_MORPH' : '',
@@ -644,10 +643,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
644
643
 
645
644
  parameters.morphTargets ? '#define USE_MORPHTARGETS' : '',
646
645
  parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',
647
- ( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',
648
- ( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',
649
- ( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',
650
- ( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',
646
+ ( parameters.morphColors ) ? '#define USE_MORPHCOLORS' : '',
647
+ ( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',
648
+ ( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',
651
649
  parameters.doubleSided ? '#define DOUBLE_SIDED' : '',
652
650
  parameters.flipSided ? '#define FLIP_SIDED' : '',
653
651
 
@@ -658,10 +656,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
658
656
 
659
657
  parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
660
658
 
661
- parameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',
662
-
663
659
  parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
664
- ( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',
660
+ parameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
665
661
 
666
662
  'uniform mat4 modelMatrix;',
667
663
  'uniform mat4 modelViewMatrix;',
@@ -727,31 +723,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
727
723
 
728
724
  '#endif',
729
725
 
730
- '#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',
731
-
732
- ' attribute vec3 morphTarget0;',
733
- ' attribute vec3 morphTarget1;',
734
- ' attribute vec3 morphTarget2;',
735
- ' attribute vec3 morphTarget3;',
736
-
737
- ' #ifdef USE_MORPHNORMALS',
738
-
739
- ' attribute vec3 morphNormal0;',
740
- ' attribute vec3 morphNormal1;',
741
- ' attribute vec3 morphNormal2;',
742
- ' attribute vec3 morphNormal3;',
743
-
744
- ' #else',
745
-
746
- ' attribute vec3 morphTarget4;',
747
- ' attribute vec3 morphTarget5;',
748
- ' attribute vec3 morphTarget6;',
749
- ' attribute vec3 morphTarget7;',
750
-
751
- ' #endif',
752
-
753
- '#endif',
754
-
755
726
  '#ifdef USE_SKINNING',
756
727
 
757
728
  ' attribute vec4 skinIndex;',
@@ -765,8 +736,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
765
736
 
766
737
  prefixFragment = [
767
738
 
768
- customExtensions,
769
-
770
739
  generatePrecision( parameters ),
771
740
 
772
741
  '#define SHADER_TYPE ' + parameters.shaderType,
@@ -803,6 +772,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
803
772
  parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
804
773
  parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',
805
774
 
775
+ parameters.dispersion ? '#define USE_DISPERSION' : '',
776
+
806
777
  parameters.iridescence ? '#define USE_IRIDESCENCE' : '',
807
778
  parameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',
808
779
  parameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',
@@ -827,7 +798,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
827
798
  parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',
828
799
 
829
800
  parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
830
- parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',
801
+ parameters.vertexColors || parameters.instancingColor || parameters.batchingColor ? '#define USE_COLOR' : '',
831
802
  parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
832
803
  parameters.vertexUv1s ? '#define USE_UV1' : '',
833
804
  parameters.vertexUv2s ? '#define USE_UV2' : '',
@@ -849,12 +820,10 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
849
820
 
850
821
  parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
851
822
 
852
- parameters.useLegacyLights ? '#define LEGACY_LIGHTS' : '',
853
-
854
823
  parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
855
824
 
856
825
  parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
857
- ( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',
826
+ parameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',
858
827
 
859
828
  'uniform mat4 viewMatrix;',
860
829
  'uniform vec3 cameraPosition;',
@@ -869,6 +838,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
869
838
 
870
839
  ShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below
871
840
  getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),
841
+ getLuminanceFunction(),
872
842
 
873
843
  parameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',
874
844
 
@@ -889,7 +859,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
889
859
  vertexShader = unrollLoops( vertexShader );
890
860
  fragmentShader = unrollLoops( fragmentShader );
891
861
 
892
- if ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {
862
+ if ( parameters.isRawShaderMaterial !== true ) {
893
863
 
894
864
  // GLSL 3.0 conversion for built-in materials and ShaderMaterial
895
865
 
@@ -897,14 +867,12 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
897
867
 
898
868
  prefixVertex = [
899
869
  customVertexExtensions,
900
- 'precision mediump sampler2DArray;',
901
870
  '#define attribute in',
902
871
  '#define varying out',
903
872
  '#define texture2D texture'
904
873
  ].join( '\n' ) + '\n' + prefixVertex;
905
874
 
906
875
  prefixFragment = [
907
- 'precision mediump sampler2DArray;',
908
876
  '#define varying in',
909
877
  ( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',
910
878
  ( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',