super-three 0.165.0 → 0.168.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 (462) hide show
  1. package/build/three.cjs +854 -410
  2. package/build/three.module.js +849 -411
  3. package/build/three.module.min.js +1 -1
  4. package/build/three.webgpu.js +77755 -0
  5. package/build/three.webgpu.min.js +6 -0
  6. package/examples/jsm/Addons.js +5 -2
  7. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  8. package/examples/jsm/capabilities/WebGL.js +27 -21
  9. package/examples/jsm/controls/ArcballControls.js +174 -158
  10. package/examples/jsm/controls/DragControls.js +260 -132
  11. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  12. package/examples/jsm/controls/FlyControls.js +194 -188
  13. package/examples/jsm/controls/OrbitControls.js +777 -786
  14. package/examples/jsm/controls/PointerLockControls.js +24 -15
  15. package/examples/jsm/controls/TrackballControls.js +453 -452
  16. package/examples/jsm/csm/CSMShader.js +4 -4
  17. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  18. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  19. package/examples/jsm/effects/StereoEffect.js +6 -1
  20. package/examples/jsm/environments/RoomEnvironment.js +1 -1
  21. package/examples/jsm/exporters/GLTFExporter.js +13 -4
  22. package/examples/jsm/exporters/USDZExporter.js +29 -8
  23. package/examples/jsm/geometries/TeapotGeometry.js +1 -1
  24. package/examples/jsm/helpers/LightProbeHelper.js +42 -43
  25. package/examples/jsm/helpers/ViewHelper.js +51 -2
  26. package/examples/jsm/libs/tween.module.js +64 -75
  27. package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
  28. package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
  29. package/examples/jsm/lines/webgpu/Line2.js +20 -0
  30. package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
  31. package/examples/jsm/loaders/FBXLoader.js +23 -45
  32. package/examples/jsm/loaders/GLTFLoader.js +10 -4
  33. package/examples/jsm/loaders/KTX2Loader.js +19 -7
  34. package/examples/jsm/loaders/MaterialXLoader.js +10 -10
  35. package/examples/jsm/loaders/PCDLoader.js +9 -9
  36. package/examples/jsm/loaders/USDZLoader.js +124 -76
  37. package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
  38. package/examples/jsm/loaders/VTKLoader.js +76 -3
  39. package/examples/jsm/misc/GPUComputationRenderer.js +9 -19
  40. package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
  41. package/examples/jsm/objects/InstancedPoints.js +2 -2
  42. package/examples/jsm/objects/SkyMesh.js +188 -0
  43. package/examples/jsm/objects/Water2Mesh.js +159 -0
  44. package/examples/jsm/objects/WaterMesh.js +102 -0
  45. package/examples/jsm/physics/RapierPhysics.js +20 -0
  46. package/examples/jsm/postprocessing/OutlinePass.js +31 -46
  47. package/examples/jsm/postprocessing/RenderTransitionPass.js +13 -38
  48. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  49. package/examples/jsm/postprocessing/SSAOPass.js +6 -9
  50. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
  51. package/examples/jsm/shaders/BleachBypassShader.js +1 -2
  52. package/examples/jsm/shaders/ColorifyShader.js +1 -2
  53. package/examples/jsm/shaders/FXAAShader.js +0 -2
  54. package/examples/jsm/shaders/GTAOShader.js +1 -1
  55. package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
  56. package/examples/jsm/shaders/OutputShader.js +1 -1
  57. package/examples/jsm/transpiler/GLSLDecoder.js +46 -4
  58. package/examples/jsm/transpiler/TSLEncoder.js +24 -22
  59. package/examples/jsm/utils/TextureUtils.js +1 -1
  60. package/package.json +8 -6
  61. package/src/Three.WebGPU.js +200 -0
  62. package/src/Three.js +3 -0
  63. package/src/constants.js +4 -1
  64. package/src/core/Object3D.js +22 -22
  65. package/src/extras/Controls.js +32 -0
  66. package/src/extras/TextureUtils.js +210 -0
  67. package/src/lights/Light.js +1 -0
  68. package/src/lights/LightShadow.js +5 -0
  69. package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
  70. package/src/loaders/ObjectLoader.js +33 -2
  71. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeLoader.js +6 -4
  72. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeMaterialLoader.js +2 -2
  73. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeObjectLoader.js +2 -1
  74. package/src/materials/Material.js +7 -1
  75. package/{examples/jsm/nodes/materials → src/materials/nodes}/InstancedPointsNodeMaterial.js +36 -27
  76. package/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +37 -40
  77. package/src/materials/nodes/LineBasicNodeMaterial.js +27 -0
  78. package/{examples/jsm/nodes/materials → src/materials/nodes}/LineDashedNodeMaterial.js +10 -11
  79. package/src/materials/nodes/MeshBasicNodeMaterial.js +73 -0
  80. package/src/materials/nodes/MeshLambertNodeMaterial.js +43 -0
  81. package/src/materials/nodes/MeshMatcapNodeMaterial.js +53 -0
  82. package/src/materials/nodes/MeshNormalNodeMaterial.js +40 -0
  83. package/src/materials/nodes/MeshPhongNodeMaterial.js +74 -0
  84. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshPhysicalNodeMaterial.js +22 -20
  85. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshSSSNodeMaterial.js +6 -6
  86. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshStandardNodeMaterial.js +28 -11
  87. package/src/materials/nodes/MeshToonNodeMaterial.js +34 -0
  88. package/{examples/jsm/nodes/materials → src/materials/nodes}/NodeMaterial.js +142 -96
  89. package/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +1 -1
  90. package/{examples/jsm/nodes/materials → src/materials/nodes}/PointsNodeMaterial.js +5 -6
  91. package/src/materials/nodes/ShadowNodeMaterial.js +34 -0
  92. package/{examples/jsm/nodes/materials → src/materials/nodes}/SpriteNodeMaterial.js +13 -13
  93. package/{examples/jsm/nodes/materials → src/materials/nodes}/VolumeNodeMaterial.js +14 -16
  94. package/src/math/Box2.js +4 -4
  95. package/src/math/Box3.js +6 -6
  96. package/src/math/ColorManagement.js +10 -0
  97. package/src/math/Matrix2.js +54 -0
  98. package/src/math/Vector4.js +13 -0
  99. package/src/nodes/Nodes.js +164 -0
  100. package/src/nodes/TSL.js +176 -0
  101. package/{examples/jsm → src}/nodes/accessors/AccessorsUtils.js +8 -8
  102. package/src/nodes/accessors/BatchNode.js +124 -0
  103. package/{examples/jsm/nodes/accessors/BitangentNode.js → src/nodes/accessors/Bitangent.js} +9 -9
  104. package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +41 -6
  105. package/{examples/jsm → src}/nodes/accessors/BufferNode.js +4 -4
  106. package/src/nodes/accessors/Camera.js +19 -0
  107. package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +16 -14
  108. package/src/nodes/accessors/CubeTextureNode.js +76 -0
  109. package/src/nodes/accessors/InstanceNode.js +144 -0
  110. package/src/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
  111. package/{examples/jsm → src}/nodes/accessors/MaterialNode.js +66 -49
  112. package/src/nodes/accessors/MaterialProperties.js +3 -0
  113. package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +6 -4
  114. package/src/nodes/accessors/ModelNode.js +37 -0
  115. package/{examples/jsm → src}/nodes/accessors/ModelViewProjectionNode.js +6 -7
  116. package/{examples/jsm → src}/nodes/accessors/MorphNode.js +35 -31
  117. package/src/nodes/accessors/Normal.js +62 -0
  118. package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +11 -11
  119. package/src/nodes/accessors/PointUVNode.js +26 -0
  120. package/src/nodes/accessors/Position.js +10 -0
  121. package/src/nodes/accessors/ReferenceBaseNode.js +143 -0
  122. package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +14 -8
  123. package/src/nodes/accessors/ReflectVector.js +10 -0
  124. package/{examples/jsm → src}/nodes/accessors/RendererReferenceNode.js +6 -6
  125. package/{examples/jsm → src}/nodes/accessors/SceneNode.js +5 -6
  126. package/src/nodes/accessors/SkinningNode.js +187 -0
  127. package/{examples/jsm → src}/nodes/accessors/StorageBufferNode.js +54 -6
  128. package/{examples/jsm → src}/nodes/accessors/StorageTextureNode.js +16 -7
  129. package/src/nodes/accessors/Tangent.js +22 -0
  130. package/{examples/jsm → src}/nodes/accessors/Texture3DNode.js +11 -11
  131. package/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +3 -32
  132. package/{examples/jsm → src}/nodes/accessors/TextureNode.js +69 -37
  133. package/{examples/jsm → src}/nodes/accessors/TextureSizeNode.js +4 -6
  134. package/{examples/jsm/nodes/accessors/UniformsNode.js → src/nodes/accessors/UniformArrayNode.js} +24 -9
  135. package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +4 -4
  136. package/src/nodes/accessors/VelocityNode.js +83 -0
  137. package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +6 -5
  138. package/{examples/jsm → src}/nodes/code/CodeNode.js +5 -5
  139. package/{examples/jsm → src}/nodes/code/ExpressionNode.js +4 -4
  140. package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +5 -5
  141. package/{examples/jsm → src}/nodes/code/FunctionNode.js +5 -23
  142. package/{examples/jsm → src}/nodes/code/ScriptableNode.js +18 -6
  143. package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +6 -7
  144. package/{examples/jsm → src}/nodes/core/AssignNode.js +5 -5
  145. package/{examples/jsm → src}/nodes/core/AttributeNode.js +22 -21
  146. package/{examples/jsm → src}/nodes/core/BypassNode.js +5 -5
  147. package/src/nodes/core/CacheNode.js +46 -0
  148. package/{examples/jsm → src}/nodes/core/ConstNode.js +2 -2
  149. package/{examples/jsm → src}/nodes/core/ContextNode.js +17 -11
  150. package/{examples/jsm → src}/nodes/core/IndexNode.js +17 -6
  151. package/{examples/jsm → src}/nodes/core/InputNode.js +2 -2
  152. package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
  153. package/src/nodes/core/MRTNode.js +82 -0
  154. package/{examples/jsm → src}/nodes/core/Node.js +57 -31
  155. package/{examples/jsm → src}/nodes/core/NodeBuilder.js +216 -65
  156. package/src/nodes/core/NodeCache.js +36 -0
  157. package/{examples/jsm → src}/nodes/core/NodeFrame.js +42 -0
  158. package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
  159. package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
  160. package/{examples/jsm → src}/nodes/core/NodeUtils.js +7 -1
  161. package/{examples/jsm → src}/nodes/core/OutputStructNode.js +4 -4
  162. package/{examples/jsm → src}/nodes/core/ParameterNode.js +4 -4
  163. package/src/nodes/core/PropertyNode.js +84 -0
  164. package/{examples/jsm → src}/nodes/core/StackNode.js +26 -10
  165. package/{examples/jsm → src}/nodes/core/StructTypeNode.js +2 -2
  166. package/{examples/jsm → src}/nodes/core/TempNode.js +4 -4
  167. package/src/nodes/core/UniformGroupNode.js +55 -0
  168. package/{examples/jsm → src}/nodes/core/UniformNode.js +14 -5
  169. package/{examples/jsm → src}/nodes/core/VarNode.js +8 -12
  170. package/{examples/jsm → src}/nodes/core/VaryingNode.js +13 -5
  171. package/{examples/jsm → src}/nodes/display/AfterImageNode.js +27 -35
  172. package/src/nodes/display/AnaglyphPassNode.js +61 -0
  173. package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +27 -30
  174. package/src/nodes/display/BleachBypass.js +26 -0
  175. package/src/nodes/display/BlendMode.js +54 -0
  176. package/src/nodes/display/BloomNode.js +335 -0
  177. package/{examples/jsm → src}/nodes/display/BumpMapNode.js +7 -12
  178. package/src/nodes/display/ColorAdjustment.js +46 -0
  179. package/src/nodes/display/ColorSpaceFunctions.js +38 -0
  180. package/src/nodes/display/ColorSpaceNode.js +85 -0
  181. package/src/nodes/display/DenoiseNode.js +201 -0
  182. package/src/nodes/display/DepthOfFieldNode.js +121 -0
  183. package/src/nodes/display/DotScreenNode.js +63 -0
  184. package/src/nodes/display/FXAANode.js +329 -0
  185. package/src/nodes/display/FilmNode.js +53 -0
  186. package/src/nodes/display/FrontFacingNode.js +41 -0
  187. package/src/nodes/display/GTAONode.js +328 -0
  188. package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +44 -24
  189. package/src/nodes/display/Lut3DNode.js +54 -0
  190. package/src/nodes/display/MotionBlur.js +25 -0
  191. package/{examples/jsm → src}/nodes/display/NormalMapNode.js +9 -11
  192. package/src/nodes/display/ParallaxBarrierPassNode.js +55 -0
  193. package/src/nodes/display/PassNode.js +367 -0
  194. package/src/nodes/display/PixelationPassNode.js +206 -0
  195. package/{examples/jsm → src}/nodes/display/PosterizeNode.js +4 -6
  196. package/src/nodes/display/RGBShiftNode.js +50 -0
  197. package/src/nodes/display/RenderOutputNode.js +56 -0
  198. package/src/nodes/display/SSAAPassNode.js +284 -0
  199. package/src/nodes/display/Sepia.js +17 -0
  200. package/src/nodes/display/SobelOperatorNode.js +123 -0
  201. package/src/nodes/display/StereoCompositePassNode.js +107 -0
  202. package/src/nodes/display/StereoPassNode.js +80 -0
  203. package/src/nodes/display/ToneMappingFunctions.js +190 -0
  204. package/src/nodes/display/ToneMappingNode.js +66 -0
  205. package/src/nodes/display/TransitionNode.js +77 -0
  206. package/src/nodes/display/ViewportDepthNode.js +121 -0
  207. package/src/nodes/display/ViewportDepthTextureNode.js +30 -0
  208. package/{examples/jsm → src}/nodes/display/ViewportNode.js +28 -26
  209. package/src/nodes/display/ViewportSharedTextureNode.js +36 -0
  210. package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +12 -12
  211. package/{examples/jsm → src}/nodes/fog/FogExp2Node.js +4 -6
  212. package/{examples/jsm → src}/nodes/fog/FogNode.js +5 -7
  213. package/{examples/jsm → src}/nodes/fog/FogRangeNode.js +4 -6
  214. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_GGX.js +4 -4
  215. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  216. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  217. package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +2 -2
  218. package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
  219. package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
  220. package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  221. package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
  222. package/src/nodes/functions/BSDF/LTC.js +131 -0
  223. package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  224. package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  225. package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  226. package/src/nodes/functions/BasicLightingModel.js +78 -0
  227. package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +10 -8
  228. package/{examples/jsm → src}/nodes/functions/PhysicalLightingModel.js +73 -31
  229. package/{examples/jsm → src}/nodes/functions/ShadowMaskModel.js +1 -1
  230. package/{examples/jsm → src}/nodes/functions/ToonLightingModel.js +6 -4
  231. package/src/nodes/functions/material/getGeometryRoughness.js +13 -0
  232. package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
  233. package/{examples/jsm → src}/nodes/geometry/RangeNode.js +23 -10
  234. package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +5 -5
  235. package/src/nodes/lighting/AONode.js +24 -0
  236. package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +2 -7
  237. package/src/nodes/lighting/AnalyticLightNode.js +354 -0
  238. package/src/nodes/lighting/BasicEnvironmentNode.js +27 -0
  239. package/src/nodes/lighting/BasicLightMapNode.js +29 -0
  240. package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +3 -9
  241. package/{examples/jsm → src}/nodes/lighting/EnvironmentNode.js +23 -21
  242. package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +4 -7
  243. package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +3 -8
  244. package/{examples/jsm → src}/nodes/lighting/IrradianceNode.js +2 -2
  245. package/{examples/jsm → src}/nodes/lighting/LightNode.js +5 -5
  246. package/src/nodes/lighting/LightProbeNode.js +76 -0
  247. package/{examples/jsm → src}/nodes/lighting/LightUtils.js +3 -3
  248. package/src/nodes/lighting/LightingContextNode.js +64 -0
  249. package/{examples/jsm → src}/nodes/lighting/LightingNode.js +4 -2
  250. package/src/nodes/lighting/LightsNode.js +231 -0
  251. package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +4 -10
  252. package/src/nodes/lighting/RectAreaLightNode.js +93 -0
  253. package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +4 -10
  254. package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +2 -2
  255. package/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +43 -46
  256. package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +500 -603
  257. package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
  258. package/{examples/jsm/nodes/math/CondNode.js → src/nodes/math/ConditionalNode.js} +31 -13
  259. package/src/nodes/math/Hash.js +13 -0
  260. package/src/nodes/math/MathNode.js +404 -0
  261. package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -7
  262. package/{examples/jsm → src}/nodes/math/OperatorNode.js +100 -58
  263. package/{examples/jsm → src}/nodes/math/TriNoise3D.js +19 -29
  264. package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
  265. package/{examples/jsm → src}/nodes/pmrem/PMREMNode.js +60 -16
  266. package/{examples/jsm → src}/nodes/pmrem/PMREMUtils.js +46 -46
  267. package/src/nodes/procedural/Checker.js +14 -0
  268. package/src/nodes/tsl/TSLBase.js +30 -0
  269. package/{examples/jsm/nodes/shadernode/ShaderNode.js → src/nodes/tsl/TSLCore.js} +106 -96
  270. package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +2 -2
  271. package/{examples/jsm → src}/nodes/utils/ConvertNode.js +2 -2
  272. package/src/nodes/utils/CubeMapNode.js +157 -0
  273. package/src/nodes/utils/Discard.js +8 -0
  274. package/{examples/jsm → src}/nodes/utils/EquirectUVNode.js +5 -5
  275. package/src/nodes/utils/FlipNode.js +65 -0
  276. package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +7 -5
  277. package/{examples/jsm → src}/nodes/utils/JoinNode.js +2 -2
  278. package/{examples/jsm → src}/nodes/utils/LoopNode.js +19 -12
  279. package/{examples/jsm → src}/nodes/utils/MatcapUVNode.js +6 -6
  280. package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +12 -6
  281. package/{examples/jsm → src}/nodes/utils/OscNode.js +7 -7
  282. package/src/nodes/utils/Packing.js +4 -0
  283. package/src/nodes/utils/RTTNode.js +130 -0
  284. package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +17 -4
  285. package/{examples/jsm → src}/nodes/utils/RemapNode.js +7 -7
  286. package/{examples/jsm → src}/nodes/utils/RotateNode.js +4 -12
  287. package/{examples/jsm → src}/nodes/utils/SetNode.js +2 -2
  288. package/{examples/jsm → src}/nodes/utils/SplitNode.js +2 -2
  289. package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +5 -5
  290. package/src/nodes/utils/SpriteUtils.js +47 -0
  291. package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +4 -6
  292. package/{examples/jsm → src}/nodes/utils/TimerNode.js +5 -5
  293. package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +7 -9
  294. package/src/nodes/utils/UVUtils.js +19 -0
  295. package/src/nodes/utils/ViewportUtils.js +14 -0
  296. package/src/objects/BatchedMesh.js +169 -190
  297. package/src/objects/InstancedMesh.js +1 -1
  298. package/src/renderers/WebGLRenderer.js +60 -23
  299. package/{examples/jsm → src}/renderers/common/Attributes.js +2 -1
  300. package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
  301. package/{examples/jsm → src}/renderers/common/Background.js +12 -4
  302. package/src/renderers/common/BindGroup.js +18 -0
  303. package/{examples/jsm → src}/renderers/common/Bindings.js +45 -32
  304. package/{examples/jsm → src}/renderers/common/ClippingContext.js +18 -7
  305. package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
  306. package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +16 -4
  307. package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
  308. package/{examples/jsm → src}/renderers/common/Info.js +34 -6
  309. package/src/renderers/common/PostProcessing.js +90 -0
  310. package/{examples/jsm/objects → src/renderers/common}/QuadMesh.js +8 -3
  311. package/{examples/jsm → src}/renderers/common/RenderContext.js +25 -1
  312. package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
  313. package/{examples/jsm → src}/renderers/common/RenderList.js +1 -1
  314. package/{examples/jsm → src}/renderers/common/RenderObject.js +45 -12
  315. package/{examples/jsm → src}/renderers/common/Renderer.js +151 -73
  316. package/{examples/jsm → src}/renderers/common/SampledTexture.js +14 -5
  317. package/src/renderers/common/StandardRenderer.js +18 -0
  318. package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
  319. package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
  320. package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
  321. package/{examples/jsm → src}/renderers/common/Textures.js +14 -14
  322. package/{examples/jsm → src}/renderers/common/Uniform.js +9 -4
  323. package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
  324. package/{examples/jsm → src}/renderers/common/extras/PMREMGenerator.js +25 -25
  325. package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
  326. package/src/renderers/common/nodes/NodeLibrary.js +118 -0
  327. package/{examples/jsm → src}/renderers/common/nodes/NodeSampledTexture.js +8 -7
  328. package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +2 -1
  329. package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
  330. package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
  331. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
  332. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
  333. package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +69 -21
  334. package/src/renderers/common/nodes/StandardNodeLibrary.js +105 -0
  335. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +16 -1
  336. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  337. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +1 -1
  338. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
  339. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
  340. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  341. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  342. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -4
  343. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  344. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  345. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
  346. package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
  347. package/src/renderers/shaders/UniformsLib.js +3 -0
  348. package/src/renderers/webgl/WebGLAttributes.js +2 -2
  349. package/src/renderers/webgl/WebGLBufferRenderer.js +6 -19
  350. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +6 -18
  351. package/src/renderers/webgl/WebGLLights.js +6 -0
  352. package/src/renderers/webgl/WebGLProgram.js +27 -1
  353. package/src/renderers/webgl/WebGLPrograms.js +1 -1
  354. package/src/renderers/webgl/WebGLProperties.js +7 -0
  355. package/src/renderers/webgl/WebGLTextures.js +75 -57
  356. package/src/renderers/webgl/WebGLUniforms.js +12 -2
  357. package/src/renderers/webgl/WebGLUniformsGroups.js +7 -7
  358. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +242 -120
  359. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +227 -44
  360. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +2 -2
  361. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +1 -0
  362. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
  363. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +22 -1
  364. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +62 -23
  365. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +1 -1
  366. package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +242 -136
  367. package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +9 -9
  368. package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +281 -107
  369. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
  370. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  371. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +64 -33
  372. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +4 -1
  373. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +34 -36
  374. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
  375. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +76 -44
  376. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +42 -4
  377. package/src/renderers/webxr/WebXRDepthSensing.js +6 -0
  378. package/src/renderers/webxr/WebXRManager.js +37 -24
  379. package/src/textures/CompressedArrayTexture.js +1 -1
  380. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  381. package/examples/jsm/nodes/Nodes.js +0 -202
  382. package/examples/jsm/nodes/accessors/BatchNode.js +0 -78
  383. package/examples/jsm/nodes/accessors/CameraNode.js +0 -12
  384. package/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
  385. package/examples/jsm/nodes/accessors/InstanceNode.js +0 -94
  386. package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  387. package/examples/jsm/nodes/accessors/ModelNode.js +0 -36
  388. package/examples/jsm/nodes/accessors/NormalNode.js +0 -14
  389. package/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
  390. package/examples/jsm/nodes/accessors/PositionNode.js +0 -10
  391. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -6
  392. package/examples/jsm/nodes/accessors/SkinningNode.js +0 -124
  393. package/examples/jsm/nodes/accessors/TangentNode.js +0 -23
  394. package/examples/jsm/nodes/core/CacheNode.js +0 -49
  395. package/examples/jsm/nodes/core/NodeCache.js +0 -26
  396. package/examples/jsm/nodes/core/NodeKeywords.js +0 -80
  397. package/examples/jsm/nodes/core/PropertyNode.js +0 -83
  398. package/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
  399. package/examples/jsm/nodes/display/BlendModeNode.js +0 -128
  400. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
  401. package/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
  402. package/examples/jsm/nodes/display/FrontFacingNode.js +0 -40
  403. package/examples/jsm/nodes/display/PassNode.js +0 -201
  404. package/examples/jsm/nodes/display/ToneMappingNode.js +0 -188
  405. package/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
  406. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
  407. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -37
  408. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
  409. package/examples/jsm/nodes/lighting/AONode.js +0 -27
  410. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -256
  411. package/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
  412. package/examples/jsm/nodes/lighting/LightsNode.js +0 -215
  413. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
  414. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  415. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
  416. package/examples/jsm/nodes/materials/MeshMatcapNodeMaterial.js +0 -52
  417. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -38
  418. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
  419. package/examples/jsm/nodes/materials/MeshToonNodeMaterial.js +0 -34
  420. package/examples/jsm/nodes/materials/ShadowNodeMaterial.js +0 -34
  421. package/examples/jsm/nodes/math/HashNode.js +0 -34
  422. package/examples/jsm/nodes/math/MathNode.js +0 -391
  423. package/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
  424. package/examples/jsm/nodes/utils/DiscardNode.js +0 -27
  425. package/examples/jsm/nodes/utils/PackingNode.js +0 -55
  426. package/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
  427. package/examples/jsm/renderers/common/PostProcessing.js +0 -33
  428. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  429. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  430. /package/{examples/jsm/nodes/accessors/UVNode.js → src/nodes/accessors/UV.js} +0 -0
  431. /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
  432. /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
  433. /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
  434. /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
  435. /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
  436. /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
  437. /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
  438. /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
  439. /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
  440. /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
  441. /package/{examples/jsm → src}/renderers/common/Animation.js +0 -0
  442. /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
  443. /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
  444. /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
  445. /package/{examples/jsm → src}/renderers/common/ChainMap.js +0 -0
  446. /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
  447. /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
  448. /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
  449. /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
  450. /package/{examples/jsm → src}/renderers/common/Pipelines.js +0 -0
  451. /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
  452. /package/{examples/jsm → src}/renderers/common/RenderBundle.js +0 -0
  453. /package/{examples/jsm → src}/renderers/common/RenderBundles.js +0 -0
  454. /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
  455. /package/{examples/jsm → src}/renderers/common/RenderObjects.js +0 -0
  456. /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
  457. /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
  458. /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
  459. /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
  460. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBufferRenderer.js +0 -0
  461. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
  462. /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
@@ -1,8 +1,13 @@
1
1
  import DataMap from '../DataMap.js';
2
2
  import ChainMap from '../ChainMap.js';
3
3
  import NodeBuilderState from './NodeBuilderState.js';
4
- import { EquirectangularReflectionMapping, EquirectangularRefractionMapping, NoToneMapping, SRGBColorSpace } from 'three';
5
- import { NodeFrame, vec4, objectGroup, renderGroup, frameGroup, cubeTexture, texture, rangeFog, densityFog, reference, viewportBottomLeft, normalWorld, pmremTexture, viewportTopLeft } from '../../../nodes/Nodes.js';
4
+ import { cubeMapNode } from '../../../nodes/utils/CubeMapNode.js';
5
+ import { NodeFrame } from '../../../nodes/Nodes.js';
6
+ import { objectGroup, renderGroup, frameGroup, cubeTexture, texture, rangeFog, densityFog, reference, normalWorld, pmremTexture, viewportUV } from '../../../nodes/TSL.js';
7
+
8
+ import { EquirectangularReflectionMapping, EquirectangularRefractionMapping } from '../../../constants.js';
9
+
10
+ const outputNodeMap = new WeakMap();
6
11
 
7
12
  class Nodes extends DataMap {
8
13
 
@@ -107,8 +112,10 @@ class Nodes extends DataMap {
107
112
 
108
113
  if ( nodeBuilderState === undefined ) {
109
114
 
110
- const nodeBuilder = this.backend.createNodeBuilder( renderObject.object, this.renderer, renderObject.scene );
115
+ const nodeBuilder = this.backend.createNodeBuilder( renderObject.object, this.renderer );
116
+ nodeBuilder.scene = renderObject.scene;
111
117
  nodeBuilder.material = renderObject.material;
118
+ nodeBuilder.camera = renderObject.camera;
112
119
  nodeBuilder.context.material = renderObject.material;
113
120
  nodeBuilder.lightsNode = renderObject.lightsNode;
114
121
  nodeBuilder.environmentNode = this.getEnvironmentNode( renderObject.scene );
@@ -182,6 +189,8 @@ class Nodes extends DataMap {
182
189
  nodeBuilder.getBindings(),
183
190
  nodeBuilder.updateNodes,
184
191
  nodeBuilder.updateBeforeNodes,
192
+ nodeBuilder.updateAfterNodes,
193
+ nodeBuilder.instanceBindGroups,
185
194
  nodeBuilder.transforms
186
195
  );
187
196
 
@@ -219,7 +228,7 @@ class Nodes extends DataMap {
219
228
 
220
229
  const cacheKey = [];
221
230
 
222
- if ( lightsNode ) cacheKey.push( lightsNode.getCacheKey() );
231
+ if ( lightsNode ) cacheKey.push( lightsNode.getCacheKey( true ) );
223
232
  if ( environmentNode ) cacheKey.push( environmentNode.getCacheKey() );
224
233
  if ( fogNode ) cacheKey.push( fogNode.getCacheKey() );
225
234
 
@@ -257,17 +266,39 @@ class Nodes extends DataMap {
257
266
 
258
267
  if ( background ) {
259
268
 
260
- if ( sceneData.background !== background ) {
269
+ const forceUpdate = ( scene.backgroundBlurriness === 0 && sceneData.backgroundBlurriness > 0 ) || ( scene.backgroundBlurriness > 0 && sceneData.backgroundBlurriness === 0 );
270
+
271
+ if ( sceneData.background !== background || forceUpdate ) {
261
272
 
262
273
  let backgroundNode = null;
263
274
 
264
275
  if ( background.isCubeTexture === true || ( background.mapping === EquirectangularReflectionMapping || background.mapping === EquirectangularRefractionMapping ) ) {
265
276
 
266
- backgroundNode = pmremTexture( background, normalWorld );
277
+ if ( scene.backgroundBlurriness > 0 ) {
278
+
279
+ backgroundNode = pmremTexture( background, normalWorld );
280
+
281
+ } else {
282
+
283
+ let envMap;
284
+
285
+ if ( background.isCubeTexture === true ) {
286
+
287
+ envMap = cubeTexture( background );
288
+
289
+ } else {
290
+
291
+ envMap = texture( background );
292
+
293
+ }
294
+
295
+ backgroundNode = cubeMapNode( envMap );
296
+
297
+ }
267
298
 
268
299
  } else if ( background.isTexture === true ) {
269
300
 
270
- backgroundNode = texture( background, viewportBottomLeft ).setUpdateMatrix( true );
301
+ backgroundNode = texture( background, viewportUV.flipY() ).setUpdateMatrix( true );
271
302
 
272
303
  } else if ( background.isColor !== true ) {
273
304
 
@@ -277,6 +308,7 @@ class Nodes extends DataMap {
277
308
 
278
309
  sceneData.backgroundNode = backgroundNode;
279
310
  sceneData.background = background;
311
+ sceneData.backgroundBlurriness = scene.backgroundBlurriness;
280
312
 
281
313
  }
282
314
 
@@ -386,29 +418,30 @@ class Nodes extends DataMap {
386
418
 
387
419
  }
388
420
 
389
- getOutputNode( outputTexture ) {
421
+ getOutputCacheKey() {
390
422
 
391
- let output = texture( outputTexture, viewportTopLeft );
423
+ const renderer = this.renderer;
392
424
 
393
- if ( this.isToneMappingState ) {
425
+ return renderer.toneMapping + ',' + renderer.currentColorSpace;
394
426
 
395
- if ( this.renderer.toneMappingNode ) {
427
+ }
396
428
 
397
- output = vec4( this.renderer.toneMappingNode.context( { color: output.rgb } ), output.a );
429
+ hasOutputChange( outputTarget ) {
398
430
 
399
- } else if ( this.renderer.toneMapping !== NoToneMapping ) {
431
+ const cacheKey = outputNodeMap.get( outputTarget );
400
432
 
401
- output = output.toneMapping( this.renderer.toneMapping );
433
+ return cacheKey !== this.getOutputCacheKey();
402
434
 
403
- }
435
+ }
404
436
 
405
- }
437
+ getOutputNode( outputTexture ) {
406
438
 
407
- if ( this.renderer.currentColorSpace === SRGBColorSpace ) {
439
+ const renderer = this.renderer;
440
+ const cacheKey = this.getOutputCacheKey();
408
441
 
409
- output = output.linearToColorSpace( this.renderer.currentColorSpace );
442
+ const output = texture( outputTexture, viewportUV ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
410
443
 
411
- }
444
+ outputNodeMap.set( outputTexture, cacheKey );
412
445
 
413
446
  return output;
414
447
 
@@ -416,12 +449,27 @@ class Nodes extends DataMap {
416
449
 
417
450
  updateBefore( renderObject ) {
418
451
 
419
- const nodeFrame = this.getNodeFrameForRender( renderObject );
420
452
  const nodeBuilder = renderObject.getNodeBuilderState();
421
453
 
422
454
  for ( const node of nodeBuilder.updateBeforeNodes ) {
423
455
 
424
- nodeFrame.updateBeforeNode( node );
456
+ // update frame state for each node
457
+
458
+ this.getNodeFrameForRender( renderObject ).updateBeforeNode( node );
459
+
460
+ }
461
+
462
+ }
463
+
464
+ updateAfter( renderObject ) {
465
+
466
+ const nodeBuilder = renderObject.getNodeBuilderState();
467
+
468
+ for ( const node of nodeBuilder.updateAfterNodes ) {
469
+
470
+ // update frame state for each node
471
+
472
+ this.getNodeFrameForRender( renderObject ).updateAfterNode( node );
425
473
 
426
474
  }
427
475
 
@@ -0,0 +1,105 @@
1
+ import NodeLibrary from './NodeLibrary.js';
2
+
3
+ // Materials
4
+ import { MeshPhongMaterial } from '../../../materials/MeshPhongMaterial.js';
5
+ import MeshPhongNodeMaterial from '../../../materials/nodes/MeshPhongNodeMaterial.js';
6
+ import { MeshStandardMaterial } from '../../../materials/MeshStandardMaterial.js';
7
+ import MeshStandardNodeMaterial from '../../../materials/nodes/MeshStandardNodeMaterial.js';
8
+ import { MeshPhysicalMaterial } from '../../../materials/MeshPhysicalMaterial.js';
9
+ import MeshPhysicalNodeMaterial from '../../../materials/nodes/MeshPhysicalNodeMaterial.js';
10
+ import { MeshToonMaterial } from '../../../materials/MeshToonMaterial.js';
11
+ import MeshToonNodeMaterial from '../../../materials/nodes/MeshToonNodeMaterial.js';
12
+ import { MeshBasicMaterial } from '../../../materials/MeshBasicMaterial.js';
13
+ import MeshBasicNodeMaterial from '../../../materials/nodes/MeshBasicNodeMaterial.js';
14
+ import { MeshLambertMaterial } from '../../../materials/MeshLambertMaterial.js';
15
+ import MeshLambertNodeMaterial from '../../../materials/nodes/MeshLambertNodeMaterial.js';
16
+ import { MeshNormalMaterial } from '../../../materials/MeshNormalMaterial.js';
17
+ import MeshNormalNodeMaterial from '../../../materials/nodes/MeshNormalNodeMaterial.js';
18
+ import { MeshMatcapMaterial } from '../../../materials/MeshMatcapMaterial.js';
19
+ import MeshMatcapNodeMaterial from '../../../materials/nodes/MeshMatcapNodeMaterial.js';
20
+ import { LineBasicMaterial } from '../../../materials/LineBasicMaterial.js';
21
+ import LineBasicNodeMaterial from '../../../materials/nodes/LineBasicNodeMaterial.js';
22
+ import { LineDashedMaterial } from '../../../materials/LineDashedMaterial.js';
23
+ import LineDashedNodeMaterial from '../../../materials/nodes/LineDashedNodeMaterial.js';
24
+ import { PointsMaterial } from '../../../materials/PointsMaterial.js';
25
+ import PointsNodeMaterial from '../../../materials/nodes/PointsNodeMaterial.js';
26
+ import { SpriteMaterial } from '../../../materials/SpriteMaterial.js';
27
+ import SpriteNodeMaterial from '../../../materials/nodes/SpriteNodeMaterial.js';
28
+ import { ShadowMaterial } from '../../../materials/ShadowMaterial.js';
29
+ import ShadowNodeMaterial from '../../../materials/nodes/ShadowNodeMaterial.js';
30
+ //import { MeshDepthMaterial } from '../../../materials/MeshDepthMaterial.js';
31
+ //import MeshDepthNodeMaterial from '../../../materials/nodes/MeshDepthNodeMaterial.js';
32
+ //import { MeshDistanceMaterial } from '../../../materials/MeshDistanceMaterial.js';
33
+ //import MeshDistanceNodeMaterial from '../../../materials/nodes/MeshDistanceNodeMaterial.js';
34
+
35
+ // Lights
36
+ import { PointLight } from '../../../lights/PointLight.js';
37
+ import { PointLightNode } from '../../../nodes/Nodes.js';
38
+ import { DirectionalLight } from '../../../lights/DirectionalLight.js';
39
+ import { DirectionalLightNode } from '../../../nodes/Nodes.js';
40
+ import { RectAreaLight } from '../../../lights/RectAreaLight.js';
41
+ import { RectAreaLightNode } from '../../../nodes/Nodes.js';
42
+ import { SpotLight } from '../../../lights/SpotLight.js';
43
+ import { SpotLightNode } from '../../../nodes/Nodes.js';
44
+ import { AmbientLight } from '../../../lights/AmbientLight.js';
45
+ import { AmbientLightNode } from '../../../nodes/Nodes.js';
46
+ import { HemisphereLight } from '../../../lights/HemisphereLight.js';
47
+ import { HemisphereLightNode } from '../../../nodes/Nodes.js';
48
+ import { LightProbe } from '../../../lights/LightProbe.js';
49
+ import { LightProbeNode } from '../../../nodes/Nodes.js';
50
+ import IESSpotLight from '../../../lights/webgpu/IESSpotLight.js';
51
+ import { IESSpotLightNode } from '../../../nodes/Nodes.js';
52
+
53
+ // Tone Mapping
54
+ import { LinearToneMapping, ReinhardToneMapping, CineonToneMapping, ACESFilmicToneMapping, AgXToneMapping, NeutralToneMapping } from '../../../constants.js';
55
+ import * as TMF from '../../../nodes/display/ToneMappingFunctions.js';
56
+
57
+ // Color Space
58
+ import { LinearSRGBColorSpace, SRGBColorSpace } from '../../../constants.js';
59
+ import { getColorSpaceMethod } from '../../../nodes/display/ColorSpaceNode.js';
60
+ import * as CSF from '../../../nodes/display/ColorSpaceFunctions.js';
61
+
62
+ class StandardNodeLibrary extends NodeLibrary {
63
+
64
+ constructor() {
65
+
66
+ super();
67
+
68
+ this.addMaterial( MeshPhongNodeMaterial, MeshPhongMaterial );
69
+ this.addMaterial( MeshStandardNodeMaterial, MeshStandardMaterial );
70
+ this.addMaterial( MeshPhysicalNodeMaterial, MeshPhysicalMaterial );
71
+ this.addMaterial( MeshToonNodeMaterial, MeshToonMaterial );
72
+ this.addMaterial( MeshBasicNodeMaterial, MeshBasicMaterial );
73
+ this.addMaterial( MeshLambertNodeMaterial, MeshLambertMaterial );
74
+ this.addMaterial( MeshNormalNodeMaterial, MeshNormalMaterial );
75
+ this.addMaterial( MeshMatcapNodeMaterial, MeshMatcapMaterial );
76
+ this.addMaterial( LineBasicNodeMaterial, LineBasicMaterial );
77
+ this.addMaterial( LineDashedNodeMaterial, LineDashedMaterial );
78
+ this.addMaterial( PointsNodeMaterial, PointsMaterial );
79
+ this.addMaterial( SpriteNodeMaterial, SpriteMaterial );
80
+ this.addMaterial( ShadowNodeMaterial, ShadowMaterial );
81
+
82
+ this.addLight( PointLightNode, PointLight );
83
+ this.addLight( DirectionalLightNode, DirectionalLight );
84
+ this.addLight( RectAreaLightNode, RectAreaLight );
85
+ this.addLight( SpotLightNode, SpotLight );
86
+ this.addLight( AmbientLightNode, AmbientLight );
87
+ this.addLight( HemisphereLightNode, HemisphereLight );
88
+ this.addLight( LightProbeNode, LightProbe );
89
+ this.addLight( IESSpotLightNode, IESSpotLight );
90
+
91
+ this.addToneMapping( TMF.LinearToneMapping, LinearToneMapping );
92
+ this.addToneMapping( TMF.ReinhardToneMapping, ReinhardToneMapping );
93
+ this.addToneMapping( TMF.CineonToneMapping, CineonToneMapping );
94
+ this.addToneMapping( TMF.ACESFilmicToneMapping, ACESFilmicToneMapping );
95
+ this.addToneMapping( TMF.AgXToneMapping, AgXToneMapping );
96
+ this.addToneMapping( TMF.NeutralToneMapping, NeutralToneMapping );
97
+
98
+ this.addColorSpace( CSF.LinearTosRGB, getColorSpaceMethod( LinearSRGBColorSpace, SRGBColorSpace ) );
99
+ this.addColorSpace( CSF.sRGBToLinear, getColorSpaceMethod( SRGBColorSpace, LinearSRGBColorSpace ) );
100
+
101
+ }
102
+
103
+ }
104
+
105
+ export default StandardNodeLibrary;
@@ -1,7 +1,12 @@
1
1
  export default /* glsl */`
2
2
  #ifdef USE_BATCHING
3
- attribute float batchId;
3
+ #if ! defined( GL_ANGLE_multi_draw )
4
+ #define gl_DrawID _gl_DrawID
5
+ uniform int _gl_DrawID;
6
+ #endif
7
+
4
8
  uniform highp sampler2D batchingTexture;
9
+ uniform highp usampler2D batchingIdTexture;
5
10
  mat4 getBatchingMatrix( const in float i ) {
6
11
 
7
12
  int size = textureSize( batchingTexture, 0 ).x;
@@ -15,6 +20,16 @@ export default /* glsl */`
15
20
  return mat4( v1, v2, v3, v4 );
16
21
 
17
22
  }
23
+
24
+ float getIndirectIndex( const in int i ) {
25
+
26
+ int size = textureSize( batchingIdTexture, 0 ).x;
27
+ int x = i % size;
28
+ int y = i / size;
29
+ return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );
30
+
31
+ }
32
+
18
33
  #endif
19
34
 
20
35
  #ifdef USE_BATCHING_COLOR
@@ -1,5 +1,5 @@
1
1
  export default /* glsl */`
2
2
  #ifdef USE_BATCHING
3
- mat4 batchingMatrix = getBatchingMatrix( batchId );
3
+ mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );
4
4
  #endif
5
5
  `;
@@ -23,7 +23,7 @@ export default /* glsl */`
23
23
 
24
24
  #ifdef USE_BATCHING_COLOR
25
25
 
26
- vec3 batchingColor = getBatchingColor( batchId );
26
+ vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );
27
27
 
28
28
  vColor.xyz *= batchingColor.xyz;
29
29
 
@@ -32,13 +32,4 @@ vec4 sRGBTransferOETF( in vec4 value ) {
32
32
  return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
33
33
  }
34
34
 
35
- // @deprecated, r156
36
- vec4 LinearToLinear( in vec4 value ) {
37
- return value;
38
- }
39
-
40
- // @deprecated, r156
41
- vec4 LinearTosRGB( in vec4 value ) {
42
- return sRGBTransferOETF( value );
43
- }
44
35
  `;
@@ -85,16 +85,6 @@ mat3 transposeMat3( const in mat3 m ) {
85
85
 
86
86
  }
87
87
 
88
- float luminance( const in vec3 rgb ) {
89
-
90
- // assumes rgb is in linear color space with sRGB primaries and D65 white point
91
-
92
- const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );
93
-
94
- return dot( weights, rgb );
95
-
96
- }
97
-
98
88
  bool isPerspectiveMatrix( mat4 m ) {
99
89
 
100
90
  return m[ 2 ][ 3 ] == - 1.0;
@@ -68,7 +68,7 @@ IncidentLight directLight;
68
68
 
69
69
  #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
70
70
  pointLightShadow = pointLightShadows[ i ];
71
- directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
71
+ directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
72
72
  #endif
73
73
 
74
74
  RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
@@ -116,7 +116,7 @@ IncidentLight directLight;
116
116
 
117
117
  #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
118
118
  spotLightShadow = spotLightShadows[ i ];
119
- directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
119
+ directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
120
120
  #endif
121
121
 
122
122
  RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
@@ -142,7 +142,7 @@ IncidentLight directLight;
142
142
 
143
143
  #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )
144
144
  directionalLightShadow = directionalLightShadows[ i ];
145
- directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
145
+ directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
146
146
  #endif
147
147
 
148
148
  RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
@@ -9,36 +9,68 @@ vec3 unpackRGBToNormal( const in vec3 rgb ) {
9
9
 
10
10
  const float PackUpscale = 256. / 255.; // fraction -> 0..1 (including 1)
11
11
  const float UnpackDownscale = 255. / 256.; // 0..1 -> fraction (excluding 1)
12
+ const float ShiftRight8 = 1. / 256.;
13
+ const float Inv255 = 1. / 255.;
12
14
 
13
- const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );
14
- const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );
15
+ const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );
15
16
 
16
- const float ShiftRight8 = 1. / 256.;
17
+ const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );
18
+ const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );
19
+ const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );
17
20
 
18
21
  vec4 packDepthToRGBA( const in float v ) {
19
- vec4 r = vec4( fract( v * PackFactors ), v );
20
- r.yzw -= r.xyz * ShiftRight8; // tidy overflow
21
- return r * PackUpscale;
22
+ if( v <= 0.0 )
23
+ return vec4( 0., 0., 0., 0. );
24
+ if( v >= 1.0 )
25
+ return vec4( 1., 1., 1., 1. );
26
+ float vuf;
27
+ float af = modf( v * PackFactors.a, vuf );
28
+ float bf = modf( vuf * ShiftRight8, vuf );
29
+ float gf = modf( vuf * ShiftRight8, vuf );
30
+ return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );
31
+ }
32
+
33
+ vec3 packDepthToRGB( const in float v ) {
34
+ if( v <= 0.0 )
35
+ return vec3( 0., 0., 0. );
36
+ if( v >= 1.0 )
37
+ return vec3( 1., 1., 1. );
38
+ float vuf;
39
+ float bf = modf( v * PackFactors.b, vuf );
40
+ float gf = modf( vuf * ShiftRight8, vuf );
41
+ // the 0.9999 tweak is unimportant, very tiny empirical improvement
42
+ // return vec3( vuf * Inv255, gf * PackUpscale, bf * 0.9999 );
43
+ return vec3( vuf * Inv255, gf * PackUpscale, bf );
44
+ }
45
+
46
+ vec2 packDepthToRG( const in float v ) {
47
+ if( v <= 0.0 )
48
+ return vec2( 0., 0. );
49
+ if( v >= 1.0 )
50
+ return vec2( 1., 1. );
51
+ float vuf;
52
+ float gf = modf( v * 256., vuf );
53
+ return vec2( vuf * Inv255, gf );
22
54
  }
23
55
 
24
56
  float unpackRGBAToDepth( const in vec4 v ) {
25
- return dot( v, UnpackFactors );
57
+ return dot( v, UnpackFactors4 );
26
58
  }
27
59
 
28
- vec2 packDepthToRG( in highp float v ) {
29
- return packDepthToRGBA( v ).yx;
60
+ float unpackRGBToDepth( const in vec3 v ) {
61
+ return dot( v, UnpackFactors3 );
30
62
  }
31
63
 
32
- float unpackRGToDepth( const in highp vec2 v ) {
33
- return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );
64
+ float unpackRGToDepth( const in vec2 v ) {
65
+ return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;
34
66
  }
35
67
 
36
- vec4 pack2HalfToRGBA( vec2 v ) {
68
+ vec4 pack2HalfToRGBA( const in vec2 v ) {
37
69
  vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );
38
70
  return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );
39
71
  }
40
72
 
41
- vec2 unpackRGBATo2Half( vec4 v ) {
73
+ vec2 unpackRGBATo2Half( const in vec4 v ) {
42
74
  return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );
43
75
  }
44
76
 
@@ -19,6 +19,7 @@ export default /* glsl */`
19
19
  varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
20
20
 
21
21
  struct DirectionalLightShadow {
22
+ float shadowIntensity;
22
23
  float shadowBias;
23
24
  float shadowNormalBias;
24
25
  float shadowRadius;
@@ -34,6 +35,7 @@ export default /* glsl */`
34
35
  uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];
35
36
 
36
37
  struct SpotLightShadow {
38
+ float shadowIntensity;
37
39
  float shadowBias;
38
40
  float shadowNormalBias;
39
41
  float shadowRadius;
@@ -50,6 +52,7 @@ export default /* glsl */`
50
52
  varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
51
53
 
52
54
  struct PointLightShadow {
55
+ float shadowIntensity;
53
56
  float shadowBias;
54
57
  float shadowNormalBias;
55
58
  float shadowRadius;
@@ -103,7 +106,7 @@ export default /* glsl */`
103
106
 
104
107
  }
105
108
 
106
- float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
109
+ float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
107
110
 
108
111
  float shadow = 1.0;
109
112
 
@@ -196,7 +199,7 @@ export default /* glsl */`
196
199
 
197
200
  }
198
201
 
199
- return shadow;
202
+ return mix( 1.0, shadow, shadowIntensity );
200
203
 
201
204
  }
202
205
 
@@ -271,7 +274,7 @@ export default /* glsl */`
271
274
 
272
275
  }
273
276
 
274
- float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
277
+ float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
275
278
 
276
279
  float shadow = 1.0;
277
280
 
@@ -316,7 +319,7 @@ export default /* glsl */`
316
319
 
317
320
  }
318
321
 
319
- return shadow;
322
+ return mix( 1.0, shadow, shadowIntensity );
320
323
 
321
324
  }
322
325
 
@@ -15,6 +15,7 @@ export default /* glsl */`
15
15
  varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
16
16
 
17
17
  struct DirectionalLightShadow {
18
+ float shadowIntensity;
18
19
  float shadowBias;
19
20
  float shadowNormalBias;
20
21
  float shadowRadius;
@@ -28,6 +29,7 @@ export default /* glsl */`
28
29
  #if NUM_SPOT_LIGHT_SHADOWS > 0
29
30
 
30
31
  struct SpotLightShadow {
32
+ float shadowIntensity;
31
33
  float shadowBias;
32
34
  float shadowNormalBias;
33
35
  float shadowRadius;
@@ -44,6 +46,7 @@ export default /* glsl */`
44
46
  varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
45
47
 
46
48
  struct PointLightShadow {
49
+ float shadowIntensity;
47
50
  float shadowBias;
48
51
  float shadowNormalBias;
49
52
  float shadowRadius;
@@ -13,7 +13,7 @@ float getShadowMask() {
13
13
  for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
14
14
 
15
15
  directionalLight = directionalLightShadows[ i ];
16
- shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
16
+ shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
17
17
 
18
18
  }
19
19
  #pragma unroll_loop_end
@@ -28,7 +28,7 @@ float getShadowMask() {
28
28
  for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
29
29
 
30
30
  spotLight = spotLightShadows[ i ];
31
- shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
31
+ shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
32
32
 
33
33
  }
34
34
  #pragma unroll_loop_end
@@ -43,7 +43,7 @@ float getShadowMask() {
43
43
  for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
44
44
 
45
45
  pointLight = pointLightShadows[ i ];
46
- shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
46
+ shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
47
47
 
48
48
  }
49
49
  #pragma unroll_loop_end
@@ -22,9 +22,9 @@ vec3 ReinhardToneMapping( vec3 color ) {
22
22
  }
23
23
 
24
24
  // source: http://filmicworlds.com/blog/filmic-tonemapping-operators/
25
- vec3 OptimizedCineonToneMapping( vec3 color ) {
25
+ vec3 CineonToneMapping( vec3 color ) {
26
26
 
27
- // optimized filmic operator by Jim Hejl and Richard Burgess-Dawson
27
+ // filmic operator by Jim Hejl and Richard Burgess-Dawson
28
28
  color *= toneMappingExposure;
29
29
  color = max( vec3( 0.0 ), color - 0.004 );
30
30
  return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );
@@ -91,6 +91,14 @@ void main() {
91
91
 
92
92
  gl_FragColor = packDepthToRGBA( fragCoordZ );
93
93
 
94
+ #elif DEPTH_PACKING == 3202
95
+
96
+ gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );
97
+
98
+ #elif DEPTH_PACKING == 3203
99
+
100
+ gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );
101
+
94
102
  #endif
95
103
 
96
104
  }
@@ -130,6 +130,7 @@ const UniformsLib = {
130
130
  } },
131
131
 
132
132
  directionalLightShadows: { value: [], properties: {
133
+ shadowIntensity: 1,
133
134
  shadowBias: {},
134
135
  shadowNormalBias: {},
135
136
  shadowRadius: {},
@@ -150,6 +151,7 @@ const UniformsLib = {
150
151
  } },
151
152
 
152
153
  spotLightShadows: { value: [], properties: {
154
+ shadowIntensity: 1,
153
155
  shadowBias: {},
154
156
  shadowNormalBias: {},
155
157
  shadowRadius: {},
@@ -168,6 +170,7 @@ const UniformsLib = {
168
170
  } },
169
171
 
170
172
  pointLightShadows: { value: [], properties: {
173
+ shadowIntensity: 1,
171
174
  shadowBias: {},
172
175
  shadowNormalBias: {},
173
176
  shadowRadius: {},
@@ -145,6 +145,8 @@ function WebGLAttributes( gl ) {
145
145
 
146
146
  function update( attribute, bufferType ) {
147
147
 
148
+ if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
149
+
148
150
  if ( attribute.isGLBufferAttribute ) {
149
151
 
150
152
  const cached = buffers.get( attribute );
@@ -164,8 +166,6 @@ function WebGLAttributes( gl ) {
164
166
 
165
167
  }
166
168
 
167
- if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
168
-
169
169
  const data = buffers.get( attribute );
170
170
 
171
171
  if ( data === undefined ) {