@gnsx/three 0.184.20 → 0.185.3

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 +1261 -926
  2. package/build/three.core.js +1104 -829
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +157 -97
  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 +7542 -3371
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +7542 -3370
  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 +67 -58
  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 +124 -91
  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 -74
  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 +92 -37
  232. package/src/nodes/lighting/PointShadowNode.js +7 -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 +21 -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 +42 -4
  259. package/src/renderers/common/RenderObject.js +73 -13
  260. package/src/renderers/common/Renderer.js +282 -109
  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 +11 -4
  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 );
@@ -888,14 +909,42 @@ class NodeManager extends DataMap {
888
909
 
889
910
  const renderer = this.renderer;
890
911
 
891
- const output = outputTarget.isArrayTexture ?
892
- texture( outputTarget, screenUV ).depth( builtin( 'gl_ViewID_OVR' ) ).renderOutput( renderer.toneMapping, renderer.currentColorSpace ) :
893
- texture( outputTarget, screenUV ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
912
+ let output;
913
+
914
+ if ( outputTarget.isArrayTexture ) {
915
+
916
+ if ( this.backend.isWebGLBackend ) {
917
+
918
+ output = texture( outputTarget, screenUV ).depth( builtin( 'gl_ViewID_OVR' ) ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
919
+
920
+ } else {
921
+
922
+ output = texture( outputTarget, screenUV ).depth( _outputLayerIndex ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
923
+
924
+ }
925
+
926
+ } else {
927
+
928
+ output = texture( outputTarget, screenUV ).renderOutput( renderer.toneMapping, renderer.currentColorSpace );
929
+
930
+ }
894
931
 
895
932
  return output;
896
933
 
897
934
  }
898
935
 
936
+ /**
937
+ * Sets the output layer index for array texture output pass.
938
+ * This should be called before each layer render during the output pass.
939
+ *
940
+ * @param {number} index - The layer index.
941
+ */
942
+ setOutputLayerIndex( index ) {
943
+
944
+ _outputLayerIndex.value = index;
945
+
946
+ }
947
+
899
948
  /**
900
949
  * Triggers the call of `updateBefore()` methods
901
950
  * 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
 
@@ -847,9 +847,10 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
847
847
 
848
848
  gl.bindAttribLocation( program, 0, parameters.index0AttributeName );
849
849
 
850
- } else if ( parameters.morphTargets === true ) {
850
+ } else if ( parameters.hasPositionAttribute === true ) {
851
+
852
+ // below avoids the "Attribute 0 is disabled" performance penalty
851
853
 
852
- // programs with morphTargets displace position out of attribute 0
853
854
  gl.bindAttribLocation( program, 0, 'position' );
854
855
 
855
856
  }
@@ -888,7 +889,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
888
889
  const fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );
889
890
 
890
891
  error(
891
- 'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +
892
+ 'WebGLProgram: Shader Error ' + gl.getError() + ' - ' +
892
893
  'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\n\n' +
893
894
  'Material Name: ' + self.name + '\n' +
894
895
  '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
 
@@ -126,7 +129,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
126
129
  const HAS_ENVMAP = !! envMap;
127
130
  const HAS_AOMAP = !! material.aoMap;
128
131
  const HAS_LIGHTMAP = !! material.lightMap;
129
- const HAS_BUMPMAP = !! material.bumpMap;
132
+ const HAS_BUMPMAP = !! material.bumpMap && material.wireframe === false;
130
133
  const HAS_NORMALMAP = !! material.normalMap;
131
134
  const HAS_DISPLACEMENTMAP = !! material.displacementMap;
132
135
  const HAS_EMISSIVEMAP = !! material.emissiveMap;
@@ -324,6 +327,8 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
324
327
 
325
328
  skinning: object.isSkinnedMesh === true,
326
329
 
330
+ hasPositionAttribute: geometry.attributes.position !== undefined,
331
+
327
332
  morphTargets: geometry.morphAttributes.position !== undefined,
328
333
  morphNormals: geometry.morphAttributes.normal !== undefined,
329
334
  morphColors: geometry.morphAttributes.color !== undefined,
@@ -585,6 +590,8 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
585
590
  _programLayers.enable( 21 );
586
591
  if ( parameters.numLightProbeGrids > 0 )
587
592
  _programLayers.enable( 22 );
593
+ if ( parameters.hasPositionAttribute )
594
+ _programLayers.enable( 23 );
588
595
 
589
596
  array.push( _programLayers.mask );
590
597
 
@@ -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
 
@@ -1295,12 +1295,25 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1295
1295
 
1296
1296
  }
1297
1297
 
1298
- const level = 0;
1299
- const internalFormat = _gl.RGBA;
1300
- const srcFormat = _gl.RGBA;
1301
- const srcType = _gl.UNSIGNED_BYTE;
1298
+ if ( _gl.texElementImage2D.length === 3 ) {
1299
+
1300
+ // Chrome 150+
1301
+
1302
+ _gl.texElementImage2D( _gl.TEXTURE_2D, _gl.RGBA8, image );
1303
+
1304
+ } else {
1305
+
1306
+ // Chrome 138 - 149
1307
+
1308
+ const level = 0;
1309
+ const internalFormat = _gl.RGBA;
1310
+ const srcFormat = _gl.RGBA;
1311
+ const srcType = _gl.UNSIGNED_BYTE;
1312
+
1313
+ _gl.texElementImage2D( _gl.TEXTURE_2D, level, internalFormat, srcFormat, srcType, image );
1314
+
1315
+ }
1302
1316
 
1303
- _gl.texElementImage2D( _gl.TEXTURE_2D, level, internalFormat, srcFormat, srcType, image );
1304
1317
  _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MIN_FILTER, _gl.LINEAR );
1305
1318
  _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );
1306
1319
  _gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );
@@ -1747,7 +1760,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1747
1760
 
1748
1761
  if ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {
1749
1762
 
1750
- throw new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );
1763
+ throw new Error( 'THREE.WebGLTextures: renderTarget.depthTexture must be an instance of THREE.DepthTexture.' );
1751
1764
 
1752
1765
  }
1753
1766
 
@@ -1845,7 +1858,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1845
1858
 
1846
1859
  } else {
1847
1860
 
1848
- throw new Error( 'Unknown depthTexture format' );
1861
+ throw new Error( 'THREE.WebGLTextures: Unknown depthTexture format.' );
1849
1862
 
1850
1863
  }
1851
1864