super-three 0.184.0 → 0.185.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 (366) hide show
  1. package/build/three.cjs +1260 -927
  2. package/build/three.core.js +1104 -829
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +156 -98
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +11 -4
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +7538 -3367
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +7538 -3366
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/jsm/Addons.js +3 -0
  13. package/examples/jsm/controls/ArcballControls.js +6 -2
  14. package/examples/jsm/controls/FirstPersonControls.js +79 -42
  15. package/examples/jsm/controls/TransformControls.js +68 -15
  16. package/examples/jsm/csm/CSMFrustum.js +31 -6
  17. package/examples/jsm/csm/CSMShadowNode.js +4 -1
  18. package/examples/jsm/effects/AsciiEffect.js +14 -1
  19. package/examples/jsm/exporters/DRACOExporter.js +27 -6
  20. package/examples/jsm/exporters/GLTFExporter.js +114 -12
  21. package/examples/jsm/exporters/PLYExporter.js +286 -73
  22. package/examples/jsm/exporters/USDZExporter.js +347 -112
  23. package/examples/jsm/generators/CityGenerator.js +346 -0
  24. package/examples/jsm/generators/ForestGenerator.js +347 -0
  25. package/examples/jsm/generators/TerrainGenerator.js +504 -0
  26. package/examples/jsm/generators/TreeGenerator.js +377 -0
  27. package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
  28. package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
  29. package/examples/jsm/geometries/LoftGeometry.js +355 -0
  30. package/examples/jsm/helpers/LightProbeGridHelper.js +1 -1
  31. package/examples/jsm/helpers/LightProbeHelper.js +5 -4
  32. package/examples/jsm/helpers/ViewHelper.js +16 -6
  33. package/examples/jsm/inspector/Inspector.js +53 -15
  34. package/examples/jsm/inspector/RendererInspector.js +152 -36
  35. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +1 -1
  36. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +1 -1
  37. package/examples/jsm/inspector/tabs/Console.js +200 -18
  38. package/examples/jsm/inspector/tabs/Memory.js +8 -0
  39. package/examples/jsm/inspector/tabs/Parameters.js +64 -4
  40. package/examples/jsm/inspector/tabs/Performance.js +21 -6
  41. package/examples/jsm/inspector/tabs/Settings.js +51 -9
  42. package/examples/jsm/inspector/tabs/Timeline.js +178 -93
  43. package/examples/jsm/inspector/tabs/Viewer.js +628 -16
  44. package/examples/jsm/inspector/ui/Graph.js +162 -25
  45. package/examples/jsm/inspector/ui/Item.js +92 -13
  46. package/examples/jsm/inspector/ui/List.js +1 -1
  47. package/examples/jsm/inspector/ui/Profiler.js +90 -45
  48. package/examples/jsm/inspector/ui/Style.js +1788 -1401
  49. package/examples/jsm/inspector/ui/Tab.js +5 -3
  50. package/examples/jsm/inspector/ui/Values.js +71 -6
  51. package/examples/jsm/inspector/ui/utils.js +130 -10
  52. package/examples/jsm/libs/basis/README.md +0 -1
  53. package/examples/jsm/libs/demuxer_mp4.js +3 -3
  54. package/examples/jsm/libs/draco/README.md +0 -1
  55. package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
  56. package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
  57. package/examples/jsm/libs/mikktspace.module.js +34 -9
  58. package/examples/jsm/lighting/ClusteredLighting.js +55 -0
  59. package/examples/jsm/lighting/LightProbeGrid.js +106 -76
  60. package/examples/jsm/lines/LineMaterial.js +38 -15
  61. package/examples/jsm/lines/LineSegments2.js +8 -0
  62. package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
  63. package/examples/jsm/loaders/3DMLoader.js +1 -1
  64. package/examples/jsm/loaders/DRACOLoader.js +46 -13
  65. package/examples/jsm/loaders/EXRLoader.js +27 -55
  66. package/examples/jsm/loaders/HDRLoader.js +6 -28
  67. package/examples/jsm/loaders/KTX2Loader.js +31 -12
  68. package/examples/jsm/loaders/LDrawLoader.js +8 -8
  69. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  70. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  71. package/examples/jsm/loaders/LWOLoader.js +4 -0
  72. package/examples/jsm/loaders/LottieLoader.js +1 -1
  73. package/examples/jsm/loaders/MaterialXLoader.js +31 -9
  74. package/examples/jsm/loaders/NRRDLoader.js +3 -3
  75. package/examples/jsm/loaders/PCDLoader.js +7 -7
  76. package/examples/jsm/loaders/PLYLoader.js +218 -55
  77. package/examples/jsm/loaders/SVGLoader.js +547 -495
  78. package/examples/jsm/loaders/TTFLoader.js +1 -1
  79. package/examples/jsm/loaders/USDLoader.js +33 -9
  80. package/examples/jsm/loaders/VRMLLoader.js +1 -1
  81. package/examples/jsm/loaders/usd/USDAParser.js +93 -20
  82. package/examples/jsm/loaders/usd/USDCParser.js +1 -1
  83. package/examples/jsm/loaders/usd/USDComposer.js +52 -19
  84. package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
  85. package/examples/jsm/misc/Volume.js +2 -2
  86. package/examples/jsm/objects/GroundedSkybox.js +1 -1
  87. package/examples/jsm/objects/Reflector.js +2 -3
  88. package/examples/jsm/objects/Water2Mesh.js +1 -1
  89. package/examples/jsm/physics/AmmoPhysics.js +15 -8
  90. package/examples/jsm/physics/RapierPhysics.js +27 -2
  91. package/examples/jsm/shaders/VolumeShader.js +31 -44
  92. package/examples/jsm/transpiler/GLSLDecoder.js +6 -6
  93. package/examples/jsm/transpiler/Linker.js +1 -1
  94. package/examples/jsm/tsl/display/BloomNode.js +59 -19
  95. package/examples/jsm/tsl/display/DepthOfFieldNode.js +2 -2
  96. package/examples/jsm/tsl/display/FXAANode.js +11 -12
  97. package/examples/jsm/tsl/display/GTAONode.js +34 -13
  98. package/examples/jsm/tsl/display/GodraysNode.js +1 -1
  99. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
  100. package/examples/jsm/tsl/display/PixelationPassNode.js +2 -2
  101. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
  102. package/examples/jsm/tsl/display/SSAAPassNode.js +13 -25
  103. package/examples/jsm/tsl/display/SSGINode.js +89 -39
  104. package/examples/jsm/tsl/display/SSRNode.js +829 -132
  105. package/examples/jsm/tsl/display/SSSNode.js +2 -2
  106. package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
  107. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
  108. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +1 -1
  109. package/examples/jsm/tsl/math/curlNoise.js +107 -0
  110. package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
  111. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
  112. package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
  113. package/examples/jsm/tsl/utils/RNoise.js +51 -0
  114. package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
  115. package/examples/jsm/utils/BufferGeometryUtils.js +126 -59
  116. package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
  117. package/examples/jsm/utils/SceneOptimizer.js +1 -1
  118. package/examples/jsm/webxr/ARButton.js +1 -1
  119. package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
  120. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
  121. package/package.json +7 -7
  122. package/src/Three.TSL.js +10 -3
  123. package/src/Three.WebGPU.js +4 -0
  124. package/src/animation/AnimationAction.js +15 -11
  125. package/src/animation/AnimationClip.js +0 -139
  126. package/src/animation/KeyframeTrack.js +2 -2
  127. package/src/animation/PropertyBinding.js +2 -2
  128. package/src/cameras/Camera.js +2 -2
  129. package/src/cameras/StereoCamera.js +5 -2
  130. package/src/constants.js +1 -1
  131. package/src/core/BufferGeometry.js +29 -7
  132. package/src/core/Object3D.js +17 -7
  133. package/src/core/Raycaster.js +1 -1
  134. package/src/core/RenderTarget.js +15 -2
  135. package/src/extras/PMREMGenerator.js +6 -4
  136. package/src/extras/TextureUtils.js +1 -1
  137. package/src/extras/core/ShapePath.js +149 -160
  138. package/src/geometries/SphereGeometry.js +8 -3
  139. package/src/helpers/DirectionalLightHelper.js +2 -0
  140. package/src/helpers/HemisphereLightHelper.js +2 -0
  141. package/src/helpers/PointLightHelper.js +2 -0
  142. package/src/helpers/SpotLightHelper.js +1 -1
  143. package/src/loaders/DataTextureLoader.js +69 -38
  144. package/src/loaders/LoadingManager.js +5 -0
  145. package/src/loaders/MaterialLoader.js +36 -266
  146. package/src/loaders/ObjectLoader.js +3 -1
  147. package/src/materials/LineBasicMaterial.js +4 -0
  148. package/src/materials/Material.js +196 -1
  149. package/src/materials/MeshBasicMaterial.js +24 -0
  150. package/src/materials/MeshDepthMaterial.js +10 -0
  151. package/src/materials/MeshDistanceMaterial.js +10 -0
  152. package/src/materials/MeshLambertMaterial.js +40 -1
  153. package/src/materials/MeshMatcapMaterial.js +25 -1
  154. package/src/materials/MeshNormalMaterial.js +9 -1
  155. package/src/materials/MeshPhongMaterial.js +40 -1
  156. package/src/materials/MeshPhysicalMaterial.js +38 -0
  157. package/src/materials/MeshStandardMaterial.js +42 -1
  158. package/src/materials/MeshToonMaterial.js +34 -1
  159. package/src/materials/PointsMaterial.js +7 -0
  160. package/src/materials/ShaderMaterial.js +86 -0
  161. package/src/materials/SpriteMaterial.js +7 -0
  162. package/src/materials/nodes/Line2NodeMaterial.js +378 -322
  163. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  164. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  165. package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
  166. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +0 -30
  167. package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
  168. package/src/materials/nodes/MeshStandardNodeMaterial.js +0 -11
  169. package/src/materials/nodes/NodeMaterial.js +115 -71
  170. package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
  171. package/src/materials/nodes/manager/NodeMaterialObserver.js +49 -20
  172. package/src/math/Box3.js +5 -0
  173. package/src/math/FrustumArray.js +103 -133
  174. package/src/math/Interpolant.js +1 -1
  175. package/src/math/MathUtils.js +2 -2
  176. package/src/math/Matrix3.js +11 -0
  177. package/src/math/Matrix4.js +28 -3
  178. package/src/math/Vector2.js +2 -2
  179. package/src/math/Vector3.js +2 -2
  180. package/src/math/Vector4.js +2 -2
  181. package/src/math/interpolants/BezierInterpolant.js +4 -6
  182. package/src/nodes/Nodes.js +2 -5
  183. package/src/nodes/TSL.js +8 -6
  184. package/src/nodes/accessors/Arrays.js +4 -4
  185. package/src/nodes/accessors/Batch.js +108 -0
  186. package/src/nodes/accessors/Bitangent.js +2 -2
  187. package/src/nodes/accessors/BufferAttributeNode.js +13 -2
  188. package/src/nodes/accessors/Camera.js +7 -7
  189. package/src/nodes/accessors/ClippingNode.js +1 -1
  190. package/src/nodes/accessors/Instance.js +264 -0
  191. package/src/nodes/accessors/MaterialNode.js +18 -2
  192. package/src/nodes/accessors/MaterialProperties.js +4 -3
  193. package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
  194. package/src/nodes/accessors/Normal.js +13 -13
  195. package/src/nodes/accessors/Position.js +5 -1
  196. package/src/nodes/accessors/ReferenceNode.js +1 -0
  197. package/src/nodes/accessors/ReflectVector.js +3 -3
  198. package/src/nodes/accessors/SceneProperties.js +1 -1
  199. package/src/nodes/accessors/Skinning.js +263 -0
  200. package/src/nodes/accessors/StorageBufferNode.js +2 -2
  201. package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
  202. package/src/nodes/accessors/StorageTextureNode.js +39 -7
  203. package/src/nodes/accessors/Tangent.js +4 -4
  204. package/src/nodes/accessors/TextureNode.js +60 -5
  205. package/src/nodes/code/FunctionNode.js +2 -16
  206. package/src/nodes/core/MRTNode.js +7 -2
  207. package/src/nodes/core/Node.js +39 -2
  208. package/src/nodes/core/NodeBuilder.js +201 -41
  209. package/src/nodes/core/NodeUtils.js +13 -13
  210. package/src/nodes/core/OutputStructNode.js +1 -1
  211. package/src/nodes/core/OverrideContextNode.js +153 -0
  212. package/src/nodes/core/PropertyNode.js +51 -5
  213. package/src/nodes/core/StackNode.js +56 -34
  214. package/src/nodes/core/StructNode.js +4 -6
  215. package/src/nodes/core/StructTypeNode.js +6 -6
  216. package/src/nodes/core/VarNode.js +8 -0
  217. package/src/nodes/core/VaryingNode.js +12 -2
  218. package/src/nodes/display/BlendModes.js +1 -41
  219. package/src/nodes/display/BumpMapNode.js +6 -1
  220. package/src/nodes/display/ColorAdjustment.js +10 -9
  221. package/src/nodes/display/FrontFacingNode.js +38 -9
  222. package/src/nodes/display/NormalMapNode.js +2 -2
  223. package/src/nodes/display/PassNode.js +35 -43
  224. package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
  225. package/src/nodes/display/RenderOutputNode.js +12 -3
  226. package/src/nodes/functions/VolumetricLightingModel.js +40 -7
  227. package/src/nodes/gpgpu/WorkgroupInfoNode.js +1 -1
  228. package/src/nodes/lighting/EnvironmentNode.js +2 -2
  229. package/src/nodes/lighting/IESSpotLightNode.js +40 -2
  230. package/src/nodes/lighting/LightingContextNode.js +10 -2
  231. package/src/nodes/lighting/LightsNode.js +90 -37
  232. package/src/nodes/lighting/PointShadowNode.js +6 -1
  233. package/src/nodes/lighting/ShadowFilterNode.js +21 -52
  234. package/src/nodes/lighting/ShadowNode.js +34 -14
  235. package/src/nodes/materialx/lib/mx_noise.js +2 -2
  236. package/src/nodes/math/ConditionalNode.js +3 -3
  237. package/src/nodes/math/MathNode.js +39 -11
  238. package/src/nodes/math/OperatorNode.js +23 -23
  239. package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
  240. package/src/nodes/pmrem/PMREMNode.js +33 -2
  241. package/src/nodes/tsl/TSLCore.js +63 -18
  242. package/src/nodes/utils/EquirectUV.js +30 -5
  243. package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
  244. package/src/nodes/utils/Packing.js +35 -4
  245. package/src/nodes/utils/RTTNode.js +40 -24
  246. package/src/nodes/utils/ReflectorNode.js +1 -0
  247. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  248. package/src/objects/BatchedMesh.js +22 -14
  249. package/src/objects/InstancedMesh.js +0 -11
  250. package/src/objects/Skeleton.js +0 -9
  251. package/src/renderers/WebGLRenderer.js +19 -15
  252. package/src/renderers/common/Backend.js +49 -5
  253. package/src/renderers/common/Bindings.js +114 -45
  254. package/src/renderers/common/Buffer.js +9 -0
  255. package/src/renderers/common/ClippingContext.js +10 -2
  256. package/src/renderers/common/Info.js +63 -22
  257. package/src/renderers/common/Lighting.js +53 -5
  258. package/src/renderers/common/RenderList.js +41 -4
  259. package/src/renderers/common/RenderObject.js +73 -13
  260. package/src/renderers/common/Renderer.js +281 -108
  261. package/src/renderers/common/Sampler.js +16 -48
  262. package/src/renderers/common/Textures.js +32 -5
  263. package/src/renderers/common/TimestampQueryPool.js +1 -1
  264. package/src/renderers/common/UniformsGroup.js +31 -9
  265. package/src/renderers/common/XRManager.js +340 -22
  266. package/src/renderers/common/extras/PMREMGenerator.js +15 -38
  267. package/src/renderers/common/nodes/NodeBuilderState.js +9 -1
  268. package/src/renderers/common/nodes/NodeLibrary.js +4 -4
  269. package/src/renderers/common/nodes/NodeManager.js +63 -14
  270. package/src/renderers/common/nodes/NodeUniformBuffer.js +13 -0
  271. package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
  272. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
  273. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
  274. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
  275. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
  276. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
  277. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +1 -1
  278. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
  279. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
  280. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +1 -1
  281. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  282. package/src/renderers/shaders/ShaderLib/distance.glsl.js +1 -1
  283. package/src/renderers/webgl/WebGLOutput.js +2 -1
  284. package/src/renderers/webgl/WebGLProgram.js +5 -4
  285. package/src/renderers/webgl/WebGLPrograms.js +12 -5
  286. package/src/renderers/webgl/WebGLRenderLists.js +9 -1
  287. package/src/renderers/webgl/WebGLShaderCache.js +5 -11
  288. package/src/renderers/webgl/WebGLTextures.js +20 -7
  289. package/src/renderers/webgl/WebGLUniformsGroups.js +66 -38
  290. package/src/renderers/webgl-fallback/WebGLBackend.js +84 -25
  291. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +138 -8
  292. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
  293. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +52 -22
  294. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +4 -2
  295. package/src/renderers/webgpu/WebGPUBackend.js +480 -169
  296. package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
  297. package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
  298. package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
  299. package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
  300. package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
  301. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
  302. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
  303. package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
  304. package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
  305. package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
  306. package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
  307. package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
  308. package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
  309. package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
  310. package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
  311. package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
  312. package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
  313. package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
  314. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
  315. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
  316. package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
  317. package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
  318. package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
  319. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
  320. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +164 -7
  321. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
  322. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +98 -38
  323. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +72 -68
  324. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +164 -69
  325. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +158 -95
  326. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +297 -141
  327. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +33 -18
  328. package/src/renderers/webgpu/utils/WebGPUUtils.js +38 -3
  329. package/src/textures/DepthTexture.js +1 -1
  330. package/src/textures/ExternalTexture.js +0 -3
  331. package/examples/fonts/LICENSE +0 -13
  332. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  333. package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
  334. package/examples/fonts/README.md +0 -11
  335. package/examples/fonts/droid/NOTICE +0 -190
  336. package/examples/fonts/droid/README.txt +0 -18
  337. package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
  338. package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
  339. package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
  340. package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
  341. package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
  342. package/examples/fonts/gentilis_bold.typeface.json +0 -1
  343. package/examples/fonts/gentilis_regular.typeface.json +0 -1
  344. package/examples/fonts/helvetiker_bold.typeface.json +0 -1
  345. package/examples/fonts/helvetiker_regular.typeface.json +0 -1
  346. package/examples/fonts/optimer_bold.typeface.json +0 -1
  347. package/examples/fonts/optimer_regular.typeface.json +0 -1
  348. package/examples/fonts/ttf/README.md +0 -9
  349. package/examples/fonts/ttf/kenpixel.ttf +0 -0
  350. package/examples/jsm/inspector/extensions/extensions.json +0 -6
  351. package/examples/jsm/libs/ammo.wasm.js +0 -822
  352. package/examples/jsm/libs/ammo.wasm.wasm +0 -0
  353. package/examples/jsm/libs/draco/draco_encoder.js +0 -33
  354. package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
  355. package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
  356. package/examples/jsm/libs/opentype.module.js +0 -14506
  357. package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
  358. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
  359. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  360. package/examples/jsm/lighting/TiledLighting.js +0 -42
  361. package/examples/jsm/tsl/display/AnamorphicNode.js +0 -293
  362. package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
  363. package/src/nodes/accessors/BatchNode.js +0 -163
  364. package/src/nodes/accessors/InstanceNode.js +0 -349
  365. package/src/nodes/accessors/InstancedMeshNode.js +0 -50
  366. package/src/nodes/accessors/SkinningNode.js +0 -328
@@ -3,8 +3,8 @@ import ChainMap from '../ChainMap.js';
3
3
  import NodeBuilderState from './NodeBuilderState.js';
4
4
  import NodeMaterial from '../../../materials/nodes/NodeMaterial.js';
5
5
  import { cubeMapNode } from '../../../nodes/utils/CubeMapNode.js';
6
- import { NodeFrame, StackTrace } from '../../../nodes/Nodes.js';
7
- import { renderGroup, cubeTexture, texture, fog, rangeFogFactor, densityFogFactor, reference, pmremTexture, screenUV } from '../../../nodes/TSL.js';
6
+ import { NodeFrame, NodeUpdateType, StackTrace } from '../../../nodes/Nodes.js';
7
+ import { renderGroup, cubeTexture, texture, fog, rangeFogFactor, densityFogFactor, reference, pmremTexture, screenUV, uniform } from '../../../nodes/TSL.js';
8
8
  import { builtin } from '../../../nodes/accessors/BuiltinNode.js';
9
9
 
10
10
  import { CubeUVReflectionMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping } from '../../../constants.js';
@@ -14,6 +14,10 @@ import { error } from '../../../utils.js';
14
14
  const _chainKeys = [];
15
15
  const _cacheKeyValues = [];
16
16
 
17
+ // Dedicated uniform for output pass array layer selection
18
+ // This is separate from cameraIndex to avoid the sharedUniformGroup complexity
19
+ const _outputLayerIndex = /*@__PURE__*/ uniform( 0, 'int' ).setGroup( renderGroup );
20
+
17
21
  /**
18
22
  * This renderer module manages node-related objects and is the
19
23
  * primary interface between the renderer and the node system.
@@ -111,6 +115,12 @@ class NodeManager extends DataMap {
111
115
 
112
116
  const groupNode = nodeUniformsGroup.groupNode;
113
117
 
118
+ // groups that are updated per object always require an update so no further checks are needed
119
+
120
+ if ( groupNode.updateType === NodeUpdateType.OBJECT ) return true;
121
+
122
+ // check for update
123
+
114
124
  _chainKeys[ 0 ] = groupNode;
115
125
  _chainKeys[ 1 ] = nodeUniformsGroup;
116
126
 
@@ -444,7 +454,7 @@ class NodeManager extends DataMap {
444
454
 
445
455
  let nodeBuilderState = computeData.nodeBuilderState;
446
456
 
447
- if ( nodeBuilderState === undefined ) {
457
+ if ( nodeBuilderState === undefined || computeData.version !== computeNode.version ) {
448
458
 
449
459
  const nodeBuilder = this.backend.createNodeBuilder( computeNode, this.renderer );
450
460
  nodeBuilder.build();
@@ -452,6 +462,7 @@ class NodeManager extends DataMap {
452
462
  nodeBuilderState = this._createNodeBuilderState( nodeBuilder );
453
463
 
454
464
  computeData.nodeBuilderState = nodeBuilderState;
465
+ computeData.version = computeNode.version;
455
466
 
456
467
  }
457
468
 
@@ -478,6 +489,7 @@ class NodeManager extends DataMap {
478
489
  nodeBuilder.updateBeforeNodes,
479
490
  nodeBuilder.updateAfterNodes,
480
491
  nodeBuilder.observer,
492
+ nodeBuilder.hardwareClipping,
481
493
  nodeBuilder.transforms
482
494
  );
483
495
 
@@ -492,6 +504,8 @@ class NodeManager extends DataMap {
492
504
  */
493
505
  getEnvironmentNode( scene ) {
494
506
 
507
+ if ( this.renderer.lighting.enabled === false ) return null;
508
+
495
509
  this.updateEnvironment( scene );
496
510
 
497
511
  let environmentNode = null;
@@ -584,16 +598,23 @@ class NodeManager extends DataMap {
584
598
 
585
599
  if ( cacheKeyData.callId !== callId ) {
586
600
 
587
- const environmentNode = this.getEnvironmentNode( scene );
588
- const fogNode = this.getFogNode( scene );
601
+ _cacheKeyValues.push( this.renderer.getOutputRenderTarget() && this.renderer.getOutputRenderTarget().multiview ? 1 : 0 );
602
+ _cacheKeyValues.push( this.renderer.lighting.enabled ? 1 : 0 );
589
603
 
590
- if ( lightsNode ) _cacheKeyValues.push( lightsNode.getCacheKey( true ) );
591
- if ( environmentNode ) _cacheKeyValues.push( environmentNode.getCacheKey() );
592
- if ( fogNode ) _cacheKeyValues.push( fogNode.getCacheKey() );
604
+ if ( this.renderer.lighting.enabled ) {
593
605
 
594
- _cacheKeyValues.push( this.renderer.getOutputRenderTarget() && this.renderer.getOutputRenderTarget().multiview ? 1 : 0 );
595
- _cacheKeyValues.push( this.renderer.shadowMap.enabled ? 1 : 0 );
596
- _cacheKeyValues.push( this.renderer.shadowMap.type );
606
+ _cacheKeyValues.push( lightsNode.getCacheKey( true ) );
607
+
608
+ _cacheKeyValues.push( this.renderer.shadowMap.enabled ? 1 : 0 );
609
+ _cacheKeyValues.push( this.renderer.shadowMap.type );
610
+
611
+ const environmentNode = this.getEnvironmentNode( scene );
612
+ if ( environmentNode ) _cacheKeyValues.push( environmentNode.getCacheKey() );
613
+
614
+ }
615
+
616
+ const fogNode = this.getFogNode( scene );
617
+ if ( fogNode ) _cacheKeyValues.push( fogNode.getCacheKey() );
597
618
 
598
619
  cacheKeyData.callId = callId;
599
620
  cacheKeyData.cacheKey = hashArray( _cacheKeyValues );
@@ -864,14 +885,42 @@ class NodeManager extends DataMap {
864
885
 
865
886
  const renderer = this.renderer;
866
887
 
867
- const output = outputTarget.isArrayTexture ?
868
- texture( outputTarget, screenUV ).depth( builtin( 'gl_ViewID_OVR' ) ).renderOutput( renderer.toneMapping, renderer.currentColorSpace ) :
869
- texture( outputTarget, screenUV ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
888
+ let output;
889
+
890
+ if ( outputTarget.isArrayTexture ) {
891
+
892
+ if ( this.backend.isWebGLBackend ) {
893
+
894
+ output = texture( outputTarget, screenUV ).depth( builtin( 'gl_ViewID_OVR' ) ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
895
+
896
+ } else {
897
+
898
+ output = texture( outputTarget, screenUV ).depth( _outputLayerIndex ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
899
+
900
+ }
901
+
902
+ } else {
903
+
904
+ output = texture( outputTarget, screenUV ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
905
+
906
+ }
870
907
 
871
908
  return output;
872
909
 
873
910
  }
874
911
 
912
+ /**
913
+ * Sets the output layer index for array texture output pass.
914
+ * This should be called before each layer render during the output pass.
915
+ *
916
+ * @param {number} index - The layer index.
917
+ */
918
+ setOutputLayerIndex( index ) {
919
+
920
+ _outputLayerIndex.value = index;
921
+
922
+ }
923
+
875
924
  /**
876
925
  * Triggers the call of `updateBefore()` methods
877
926
  * for all nodes of the given render object.
@@ -1,4 +1,5 @@
1
1
  import UniformBuffer from '../UniformBuffer.js';
2
+ import { getFloatLength } from '../BufferUtils.js';
2
3
 
3
4
  let _id = 0;
4
5
 
@@ -89,6 +90,18 @@ class NodeUniformBuffer extends UniformBuffer {
89
90
 
90
91
  }
91
92
 
93
+ /**
94
+ * The buffer's byte length.
95
+ *
96
+ * @type {number}
97
+ * @readonly
98
+ */
99
+ get byteLength() {
100
+
101
+ return getFloatLength( this.buffer.byteLength );
102
+
103
+ }
104
+
92
105
  /**
93
106
  * The uniform buffer.
94
107
  *
@@ -64,12 +64,21 @@ vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
64
64
 
65
65
  }
66
66
 
67
- vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {
67
+ #define inverseTransformDirection transformDirectionByInverseViewMatrix // @deprecated r185
68
68
 
69
- // dir can be either a direction vector or a normal vector
70
- // upper-left 3x3 of matrix is assumed to be orthogonal
69
+ vec3 transformNormalByInverseViewMatrix( in vec3 normal, in mat4 viewMatrix ) {
71
70
 
72
- return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );
71
+ // upper-left 3x3 of view matrix is assumed to be orthogonal
72
+
73
+ return normalize( ( vec4( normal, 0.0 ) * viewMatrix ).xyz );
74
+
75
+ }
76
+
77
+ vec3 transformDirectionByInverseViewMatrix( in vec3 dir, in mat4 viewMatrix ) {
78
+
79
+ // upper-left 3x3 of view matrix is assumed to be orthogonal
80
+
81
+ return normalize( ( vec4( dir, 0.0 ) * viewMatrix ).xyz );
73
82
 
74
83
  }
75
84
 
@@ -53,11 +53,5 @@ transformedNormal = normalMatrix * transformedNormal;
53
53
 
54
54
  transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;
55
55
 
56
- #ifdef FLIP_SIDED
57
-
58
- transformedTangent = - transformedTangent;
59
-
60
- #endif
61
-
62
56
  #endif
63
57
  `;
@@ -16,7 +16,7 @@ export default /* glsl */`
16
16
  }
17
17
 
18
18
  // Transforming Normal Vectors with the Inverse Transformation
19
- vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
19
+ vec3 worldNormal = transformNormalByInverseViewMatrix( normal, viewMatrix );
20
20
 
21
21
  #ifdef ENVMAP_MODE_REFLECTION
22
22
 
@@ -5,7 +5,7 @@ export default /* glsl */`
5
5
 
6
6
  #ifdef ENVMAP_TYPE_CUBE_UV
7
7
 
8
- vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
8
+ vec3 worldNormal = transformNormalByInverseViewMatrix( normal, viewMatrix );
9
9
 
10
10
  vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );
11
11
 
@@ -28,7 +28,7 @@ export default /* glsl */`
28
28
  // Mixing the reflection with the normal is more accurate and keeps rough objects from gathering light from behind their tangent plane.
29
29
  reflectVec = normalize( mix( reflectVec, normal, pow4( roughness ) ) );
30
30
 
31
- reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
31
+ reflectVec = transformDirectionByInverseViewMatrix( reflectVec, viewMatrix );
32
32
 
33
33
  vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );
34
34
 
@@ -19,7 +19,7 @@ export default /* glsl */`
19
19
 
20
20
  }
21
21
 
22
- vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
22
+ vec3 worldNormal = transformNormalByInverseViewMatrix( transformedNormal, viewMatrix );
23
23
 
24
24
  #ifdef ENVMAP_MODE_REFLECTION
25
25
 
@@ -197,7 +197,7 @@ IncidentLight directLight;
197
197
  #ifdef USE_LIGHT_PROBES_GRID
198
198
 
199
199
  vec3 probeWorldPos = ( ( vec4( geometryPosition, 1.0 ) - viewMatrix[ 3 ] ) * viewMatrix ).xyz;
200
- vec3 probeWorldNormal = inverseTransformDirection( geometryNormal, viewMatrix );
200
+ vec3 probeWorldNormal = transformNormalByInverseViewMatrix( geometryNormal, viewMatrix );
201
201
  irradiance += getLightProbeGridIrradiance( probeWorldPos, probeWorldNormal );
202
202
 
203
203
  #endif
@@ -37,7 +37,7 @@ vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
37
37
 
38
38
  vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {
39
39
 
40
- vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
40
+ vec3 worldNormal = transformNormalByInverseViewMatrix( normal, viewMatrix );
41
41
 
42
42
  vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );
43
43
 
@@ -39,7 +39,7 @@ float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
39
39
 
40
40
  #endif
41
41
 
42
- #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )
42
+ #ifdef DOUBLE_SIDED
43
43
 
44
44
  tbn[0] *= faceDirection;
45
45
  tbn[1] *= faceDirection;
@@ -60,7 +60,7 @@ float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
60
60
 
61
61
  #endif
62
62
 
63
- #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )
63
+ #ifdef DOUBLE_SIDED
64
64
 
65
65
  tbn2[0] *= faceDirection;
66
66
  tbn2[1] *= faceDirection;
@@ -8,6 +8,12 @@ export default /* glsl */`
8
8
  vTangent = normalize( transformedTangent );
9
9
  vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );
10
10
 
11
+ #ifdef FLIP_SIDED
12
+
13
+ vBitangent = - vBitangent;
14
+
15
+ #endif
16
+
11
17
  #endif
12
18
 
13
19
  #endif
@@ -6,7 +6,7 @@ export default /* glsl */`
6
6
 
7
7
  // Offsetting the position used for querying occlusion along the world normal can be used to reduce shadow acne.
8
8
 
9
- vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
9
+ vec3 shadowWorldNormal = transformNormalByInverseViewMatrix( transformedNormal, viewMatrix );
10
10
 
11
11
  #else
12
12
 
@@ -21,7 +21,7 @@ export default /* glsl */`
21
21
 
22
22
  vec3 pos = vWorldPosition;
23
23
  vec3 v = normalize( cameraPosition - pos );
24
- vec3 n = inverseTransformDirection( normal, viewMatrix );
24
+ vec3 n = transformNormalByInverseViewMatrix( normal, viewMatrix );
25
25
 
26
26
  vec4 transmitted = getIBLVolumeRefraction(
27
27
  n, v, material.roughness, material.diffuseContribution, material.specularColorBlended, material.specularF90,
@@ -57,7 +57,7 @@ varying vec3 vWorldPosition;
57
57
  #include <alphahash_pars_fragment>
58
58
  #include <clipping_planes_pars_fragment>
59
59
 
60
- void main () {
60
+ void main() {
61
61
 
62
62
  vec4 diffuseColor = vec4( 1.0 );
63
63
  #include <clipping_planes_fragment>
@@ -29,13 +29,14 @@ const toneMappingMap = {
29
29
  [ CustomToneMapping ]: 'CUSTOM_TONE_MAPPING'
30
30
  };
31
31
 
32
- function WebGLOutput( type, width, height, depth, stencil ) {
32
+ function WebGLOutput( type, width, height, antialias, depth, stencil ) {
33
33
 
34
34
  // render targets for scene and post-processing
35
35
  const targetA = new WebGLRenderTarget( width, height, {
36
36
  type: type,
37
37
  depthBuffer: depth,
38
38
  stencilBuffer: stencil,
39
+ samples: antialias ? 4 : 0,
39
40
  depthTexture: depth ? new DepthTexture( width, height ) : undefined
40
41
  } );
41
42
 
@@ -265,7 +265,7 @@ function includeReplacer( match, include ) {
265
265
 
266
266
  } else {
267
267
 
268
- throw new Error( 'Can not resolve #include <' + include + '>' );
268
+ throw new Error( 'THREE.WebGLProgram: Can not resolve #include <' + include + '>' );
269
269
 
270
270
  }
271
271
 
@@ -896,9 +896,10 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
896
896
 
897
897
  gl.bindAttribLocation( program, 0, parameters.index0AttributeName );
898
898
 
899
- } else if ( parameters.morphTargets === true ) {
899
+ } else if ( parameters.hasPositionAttribute === true ) {
900
+
901
+ // below avoids the "Attribute 0 is disabled" performance penalty
900
902
 
901
- // programs with morphTargets displace position out of attribute 0
902
903
  gl.bindAttribLocation( program, 0, 'position' );
903
904
 
904
905
  }
@@ -937,7 +938,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
937
938
  const fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );
938
939
 
939
940
  error(
940
- 'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +
941
+ 'WebGLProgram: Shader Error ' + gl.getError() + ' - ' +
941
942
  'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\n\n' +
942
943
  'Material Name: ' + self.name + '\n' +
943
944
  'Material Type: ' + self.type + '\n\n' +
@@ -108,10 +108,13 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
108
108
  vertexShader = material.vertexShader;
109
109
  fragmentShader = material.fragmentShader;
110
110
 
111
- _customShaders.update( material );
111
+ const vertexShaderStage = _customShaders.getVertexShaderStage( material );
112
+ const fragmentShaderStage = _customShaders.getFragmentShaderStage( material );
112
113
 
113
- customVertexShaderID = _customShaders.getVertexShaderID( material );
114
- customFragmentShaderID = _customShaders.getFragmentShaderID( material );
114
+ _customShaders.update( material, vertexShaderStage, fragmentShaderStage );
115
+
116
+ customVertexShaderID = vertexShaderStage.id;
117
+ customFragmentShaderID = fragmentShaderStage.id;
115
118
 
116
119
  }
117
120
 
@@ -128,7 +131,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
128
131
  const HAS_ENVMAP = !! envMap;
129
132
  const HAS_AOMAP = !! material.aoMap;
130
133
  const HAS_LIGHTMAP = !! material.lightMap;
131
- const HAS_BUMPMAP = !! material.bumpMap;
134
+ const HAS_BUMPMAP = !! material.bumpMap && material.wireframe === false;
132
135
  const HAS_NORMALMAP = !! material.normalMap;
133
136
  const HAS_DISPLACEMENTMAP = !! material.displacementMap;
134
137
  const HAS_EMISSIVEMAP = !! material.emissiveMap;
@@ -327,6 +330,8 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
327
330
 
328
331
  skinning: object.isSkinnedMesh === true,
329
332
 
333
+ hasPositionAttribute: geometry.attributes.position !== undefined,
334
+
330
335
  morphTargets: geometry.morphAttributes.position !== undefined,
331
336
  morphNormals: geometry.morphAttributes.normal !== undefined,
332
337
  morphColors: geometry.morphAttributes.color !== undefined,
@@ -588,8 +593,10 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
588
593
  _programLayers.enable( 21 );
589
594
  if ( parameters.numLightProbeGrids > 0 )
590
595
  _programLayers.enable( 22 );
591
- if ( parameters.numMultiviewViews )
596
+ if ( parameters.hasPositionAttribute )
592
597
  _programLayers.enable( 23 );
598
+ if ( parameters.numMultiviewViews )
599
+ _programLayers.enable( 24 );
593
600
 
594
601
  array.push( _programLayers.mask );
595
602
 
@@ -159,12 +159,20 @@ function WebGLRenderList() {
159
159
 
160
160
  }
161
161
 
162
- function sort( customOpaqueSort, customTransparentSort ) {
162
+ function sort( customOpaqueSort, customTransparentSort, reversedDepth ) {
163
163
 
164
164
  if ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );
165
165
  if ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );
166
166
  if ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );
167
167
 
168
+ if ( reversedDepth ) {
169
+
170
+ opaque.reverse();
171
+ transmissive.reverse();
172
+ transparent.reverse();
173
+
174
+ }
175
+
168
176
  }
169
177
 
170
178
  function finish() {
@@ -9,13 +9,7 @@ class WebGLShaderCache {
9
9
 
10
10
  }
11
11
 
12
- update( material ) {
13
-
14
- const vertexShader = material.vertexShader;
15
- const fragmentShader = material.fragmentShader;
16
-
17
- const vertexShaderStage = this._getShaderStage( vertexShader );
18
- const fragmentShaderStage = this._getShaderStage( fragmentShader );
12
+ update( material, vertexShaderStage, fragmentShaderStage ) {
19
13
 
20
14
  const materialShaders = this._getShaderCacheForMaterial( material );
21
15
 
@@ -55,15 +49,15 @@ class WebGLShaderCache {
55
49
 
56
50
  }
57
51
 
58
- getVertexShaderID( material ) {
52
+ getVertexShaderStage( material ) {
59
53
 
60
- return this._getShaderStage( material.vertexShader ).id;
54
+ return this._getShaderStage( material.vertexShader );
61
55
 
62
56
  }
63
57
 
64
- getFragmentShaderID( material ) {
58
+ getFragmentShaderStage( material ) {
65
59
 
66
- return this._getShaderStage( material.fragmentShader ).id;
60
+ return this._getShaderStage( material.fragmentShader );
67
61
 
68
62
  }
69
63
 
@@ -1339,12 +1339,25 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1339
1339
 
1340
1340
  }
1341
1341
 
1342
- const level = 0;
1343
- const internalFormat = _gl.RGBA;
1344
- const srcFormat = _gl.RGBA;
1345
- const srcType = _gl.UNSIGNED_BYTE;
1342
+ if ( _gl.texElementImage2D.length === 3 ) {
1343
+
1344
+ // Chrome 150+
1345
+
1346
+ _gl.texElementImage2D( _gl.TEXTURE_2D, _gl.RGBA8, image );
1347
+
1348
+ } else {
1349
+
1350
+ // Chrome 138 - 149
1351
+
1352
+ const level = 0;
1353
+ const internalFormat = _gl.RGBA;
1354
+ const srcFormat = _gl.RGBA;
1355
+ const srcType = _gl.UNSIGNED_BYTE;
1356
+
1357
+ _gl.texElementImage2D( _gl.TEXTURE_2D, level, internalFormat, srcFormat, srcType, image );
1358
+
1359
+ }
1346
1360
 
1347
- _gl.texElementImage2D( _gl.TEXTURE_2D, level, internalFormat, srcFormat, srcType, image );
1348
1361
  _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MIN_FILTER, _gl.LINEAR );
1349
1362
  _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );
1350
1363
  _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );
@@ -1866,7 +1879,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1866
1879
 
1867
1880
  if ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {
1868
1881
 
1869
- throw new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );
1882
+ throw new Error( 'THREE.WebGLTextures: renderTarget.depthTexture must be an instance of THREE.DepthTexture.' );
1870
1883
 
1871
1884
  }
1872
1885
 
@@ -2005,7 +2018,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
2005
2018
 
2006
2019
  } else {
2007
2020
 
2008
- throw new Error( 'Unknown depthTexture format' );
2021
+ throw new Error( 'THREE.WebGLTextures: Unknown depthTexture format.' );
2009
2022
 
2010
2023
  }
2011
2024