@plastic-software/three 0.180.0 → 0.181.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. package/build/three.cjs +944 -487
  2. package/build/three.core.js +506 -327
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +436 -164
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +8 -2
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +3753 -1177
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +3752 -1176
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  13. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  14. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  15. package/examples/jsm/controls/ArcballControls.js +1 -1
  16. package/examples/jsm/controls/DragControls.js +1 -1
  17. package/examples/jsm/controls/FirstPersonControls.js +1 -1
  18. package/examples/jsm/controls/FlyControls.js +1 -1
  19. package/examples/jsm/controls/OrbitControls.js +2 -2
  20. package/examples/jsm/controls/PointerLockControls.js +2 -2
  21. package/examples/jsm/controls/TrackballControls.js +1 -1
  22. package/examples/jsm/controls/TransformControls.js +1 -1
  23. package/examples/jsm/effects/AsciiEffect.js +8 -8
  24. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  25. package/examples/jsm/exporters/EXRExporter.js +1 -1
  26. package/examples/jsm/exporters/GLTFExporter.js +3 -3
  27. package/examples/jsm/exporters/USDZExporter.js +9 -2
  28. package/examples/jsm/geometries/DecalGeometry.js +2 -2
  29. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  30. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  31. package/examples/jsm/geometries/TextGeometry.js +3 -2
  32. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  33. package/examples/jsm/helpers/ViewHelper.js +43 -5
  34. package/examples/jsm/inspector/Inspector.js +427 -0
  35. package/examples/jsm/inspector/RendererInspector.js +415 -0
  36. package/examples/jsm/inspector/tabs/Console.js +204 -0
  37. package/examples/jsm/inspector/tabs/Parameters.js +332 -0
  38. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  39. package/examples/jsm/inspector/tabs/Viewer.js +166 -0
  40. package/examples/jsm/inspector/ui/Graph.js +95 -0
  41. package/examples/jsm/inspector/ui/Item.js +170 -0
  42. package/examples/jsm/inspector/ui/List.js +75 -0
  43. package/examples/jsm/inspector/ui/Profiler.js +170 -0
  44. package/examples/jsm/inspector/ui/Style.js +654 -0
  45. package/examples/jsm/inspector/ui/Tab.js +46 -0
  46. package/examples/jsm/inspector/ui/Values.js +423 -0
  47. package/examples/jsm/inspector/ui/utils.js +56 -0
  48. package/examples/jsm/interactive/HTMLMesh.js +6 -10
  49. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  50. package/examples/jsm/interactive/SelectionBox.js +30 -0
  51. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  52. package/examples/jsm/loaders/3MFLoader.js +1 -1
  53. package/examples/jsm/loaders/ColladaLoader.js +2 -2
  54. package/examples/jsm/loaders/DDSLoader.js +1 -1
  55. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  56. package/examples/jsm/loaders/FBXLoader.js +2 -2
  57. package/examples/jsm/loaders/FontLoader.js +23 -5
  58. package/examples/jsm/loaders/GLTFLoader.js +5 -3
  59. package/examples/jsm/loaders/KTX2Loader.js +28 -21
  60. package/examples/jsm/loaders/KTXLoader.js +2 -2
  61. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  62. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  63. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  64. package/examples/jsm/loaders/LWOLoader.js +2 -2
  65. package/examples/jsm/loaders/MaterialXLoader.js +22 -5
  66. package/examples/jsm/loaders/OBJLoader.js +1 -1
  67. package/examples/jsm/loaders/PDBLoader.js +1 -1
  68. package/examples/jsm/loaders/SVGLoader.js +2 -2
  69. package/examples/jsm/loaders/UltraHDRLoader.js +1 -1
  70. package/examples/jsm/math/ConvexHull.js +1 -1
  71. package/examples/jsm/math/ImprovedNoise.js +1 -1
  72. package/examples/jsm/math/SimplexNoise.js +1 -1
  73. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  74. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  75. package/examples/jsm/misc/TubePainter.js +383 -40
  76. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  77. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  78. package/examples/jsm/objects/Sky.js +1 -1
  79. package/examples/jsm/objects/SkyMesh.js +1 -1
  80. package/examples/jsm/objects/Water.js +3 -3
  81. package/examples/jsm/objects/WaterMesh.js +6 -6
  82. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  83. package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
  84. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  85. package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
  86. package/examples/jsm/renderers/SVGRenderer.js +1 -1
  87. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  88. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  89. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  90. package/examples/jsm/shaders/BokehShader.js +1 -1
  91. package/examples/jsm/shaders/BokehShader2.js +1 -1
  92. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  93. package/examples/jsm/shaders/FocusShader.js +1 -1
  94. package/examples/jsm/shaders/GTAOShader.js +2 -2
  95. package/examples/jsm/shaders/GodRaysShader.js +1 -1
  96. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  97. package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
  98. package/examples/jsm/shaders/SSRShader.js +1 -1
  99. package/examples/jsm/shaders/SepiaShader.js +1 -1
  100. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  101. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  102. package/examples/jsm/shaders/VignetteShader.js +1 -1
  103. package/examples/jsm/transpiler/TSLEncoder.js +7 -0
  104. package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
  105. package/examples/jsm/tsl/display/AnamorphicNode.js +2 -1
  106. package/examples/jsm/tsl/display/BloomNode.js +4 -0
  107. package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
  108. package/examples/jsm/tsl/display/DepthOfFieldNode.js +7 -0
  109. package/examples/jsm/tsl/display/GTAONode.js +45 -5
  110. package/examples/jsm/tsl/display/GaussianBlurNode.js +5 -3
  111. package/examples/jsm/tsl/display/OutlineNode.js +11 -0
  112. package/examples/jsm/tsl/display/SSGINode.js +654 -0
  113. package/examples/jsm/tsl/display/SSRNode.js +2 -0
  114. package/examples/jsm/tsl/display/SSSNode.js +488 -0
  115. package/examples/jsm/tsl/display/TRAANode.js +123 -6
  116. package/examples/jsm/tsl/display/boxBlur.js +1 -0
  117. package/examples/jsm/tsl/display/hashBlur.js +1 -0
  118. package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
  119. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  120. package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
  121. package/package.json +5 -10
  122. package/src/Three.Core.js +3 -2
  123. package/src/Three.TSL.js +7 -1
  124. package/src/Three.WebGPU.Nodes.js +2 -0
  125. package/src/Three.WebGPU.js +2 -0
  126. package/src/animation/AnimationClip.js +3 -2
  127. package/src/animation/AnimationMixer.js +3 -3
  128. package/src/animation/AnimationObjectGroup.js +2 -1
  129. package/src/animation/KeyframeTrack.js +7 -6
  130. package/src/animation/PropertyBinding.js +12 -11
  131. package/src/audio/Audio.js +10 -9
  132. package/src/audio/PositionalAudio.js +1 -1
  133. package/src/cameras/OrthographicCamera.js +1 -1
  134. package/src/cameras/PerspectiveCamera.js +1 -1
  135. package/src/cameras/StereoCamera.js +2 -2
  136. package/src/constants.js +1 -1
  137. package/src/core/BufferGeometry.js +8 -8
  138. package/src/core/EventDispatcher.js +1 -1
  139. package/src/core/InterleavedBuffer.js +1 -1
  140. package/src/core/InterleavedBufferAttribute.js +3 -2
  141. package/src/core/Object3D.js +3 -2
  142. package/src/core/Raycaster.js +2 -1
  143. package/src/core/RenderTarget.js +10 -1
  144. package/src/extras/Controls.js +5 -4
  145. package/src/extras/DataUtils.js +2 -1
  146. package/src/extras/Earcut.js +6 -0
  147. package/src/extras/ImageUtils.js +2 -2
  148. package/src/extras/PMREMGenerator.js +268 -55
  149. package/src/extras/core/Curve.js +2 -1
  150. package/src/extras/core/Interpolations.js +7 -1
  151. package/src/extras/core/ShapePath.js +4 -4
  152. package/src/extras/lib/earcut.js +7 -7
  153. package/src/geometries/BoxGeometry.js +1 -0
  154. package/src/geometries/CapsuleGeometry.js +1 -0
  155. package/src/geometries/CircleGeometry.js +1 -0
  156. package/src/geometries/ConeGeometry.js +1 -0
  157. package/src/geometries/CylinderGeometry.js +1 -0
  158. package/src/geometries/DodecahedronGeometry.js +1 -0
  159. package/src/geometries/ExtrudeGeometry.js +8 -6
  160. package/src/geometries/IcosahedronGeometry.js +1 -0
  161. package/src/geometries/LatheGeometry.js +1 -0
  162. package/src/geometries/OctahedronGeometry.js +1 -0
  163. package/src/geometries/PlaneGeometry.js +1 -0
  164. package/src/geometries/RingGeometry.js +1 -0
  165. package/src/geometries/ShapeGeometry.js +1 -0
  166. package/src/geometries/SphereGeometry.js +1 -0
  167. package/src/geometries/TetrahedronGeometry.js +1 -0
  168. package/src/geometries/TorusGeometry.js +1 -0
  169. package/src/geometries/TorusKnotGeometry.js +1 -0
  170. package/src/geometries/TubeGeometry.js +1 -0
  171. package/src/helpers/CameraHelper.js +1 -1
  172. package/src/loaders/AnimationLoader.js +2 -1
  173. package/src/loaders/AudioLoader.js +2 -1
  174. package/src/loaders/BufferGeometryLoader.js +2 -2
  175. package/src/loaders/Cache.js +2 -2
  176. package/src/loaders/DataTextureLoader.js +1 -1
  177. package/src/loaders/FileLoader.js +3 -2
  178. package/src/loaders/ImageBitmapLoader.js +5 -4
  179. package/src/loaders/ImageLoader.js +1 -1
  180. package/src/loaders/Loader.js +3 -3
  181. package/src/loaders/LoadingManager.js +25 -3
  182. package/src/loaders/MaterialLoader.js +3 -2
  183. package/src/loaders/ObjectLoader.js +13 -13
  184. package/src/loaders/TextureLoader.js +1 -1
  185. package/src/loaders/nodes/NodeLoader.js +3 -2
  186. package/src/materials/Material.js +4 -3
  187. package/src/materials/MeshBasicMaterial.js +1 -0
  188. package/src/materials/MeshDepthMaterial.js +1 -0
  189. package/src/materials/MeshLambertMaterial.js +2 -1
  190. package/src/materials/MeshMatcapMaterial.js +22 -0
  191. package/src/materials/MeshNormalMaterial.js +1 -0
  192. package/src/materials/MeshPhongMaterial.js +2 -1
  193. package/src/materials/MeshPhysicalMaterial.js +2 -1
  194. package/src/materials/MeshStandardMaterial.js +8 -7
  195. package/src/materials/MeshToonMaterial.js +1 -0
  196. package/src/materials/PointsMaterial.js +1 -1
  197. package/src/materials/ShaderMaterial.js +2 -2
  198. package/src/materials/nodes/Line2NodeMaterial.js +2 -2
  199. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  200. package/src/materials/nodes/NodeMaterial.js +62 -22
  201. package/src/materials/nodes/manager/NodeMaterialObserver.js +2 -1
  202. package/src/math/Color.js +6 -5
  203. package/src/math/ColorManagement.js +2 -2
  204. package/src/math/Cylindrical.js +1 -1
  205. package/src/math/Euler.js +2 -1
  206. package/src/math/MathUtils.js +13 -11
  207. package/src/math/Matrix2.js +1 -1
  208. package/src/math/Matrix3.js +2 -2
  209. package/src/math/Matrix4.js +7 -7
  210. package/src/math/Plane.js +1 -1
  211. package/src/math/Quaternion.js +68 -66
  212. package/src/math/Spherical.js +1 -1
  213. package/src/nodes/Nodes.js +1 -1
  214. package/src/nodes/TSL.js +1 -1
  215. package/src/nodes/accessors/CubeTextureNode.js +3 -2
  216. package/src/nodes/accessors/InstanceNode.js +22 -4
  217. package/src/nodes/accessors/Lights.js +10 -0
  218. package/src/nodes/accessors/Normal.js +5 -4
  219. package/src/nodes/accessors/Position.js +18 -2
  220. package/src/nodes/accessors/ReferenceNode.js +2 -1
  221. package/src/nodes/accessors/SceneNode.js +2 -1
  222. package/src/nodes/accessors/StorageBufferNode.js +2 -1
  223. package/src/nodes/accessors/StorageTextureNode.js +22 -0
  224. package/src/nodes/accessors/Texture3DNode.js +1 -1
  225. package/src/nodes/accessors/TextureNode.js +61 -27
  226. package/src/nodes/code/FunctionCallNode.js +5 -4
  227. package/src/nodes/core/ArrayNode.js +1 -0
  228. package/src/nodes/core/AttributeNode.js +2 -1
  229. package/src/nodes/core/ContextNode.js +5 -10
  230. package/src/nodes/core/IndexNode.js +2 -2
  231. package/src/nodes/core/InputNode.js +2 -1
  232. package/src/nodes/core/InspectorNode.js +128 -0
  233. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +40 -7
  234. package/src/nodes/core/Node.js +137 -12
  235. package/src/nodes/core/NodeBuilder.js +135 -21
  236. package/src/nodes/core/NodeFrame.js +20 -20
  237. package/src/nodes/core/NodeFunction.js +2 -1
  238. package/src/nodes/core/NodeParser.js +2 -1
  239. package/src/nodes/core/NodeUtils.js +17 -90
  240. package/src/nodes/core/ParameterNode.js +31 -0
  241. package/src/nodes/core/PropertyNode.js +7 -0
  242. package/src/nodes/core/StackNode.js +16 -14
  243. package/src/nodes/core/UniformNode.js +2 -1
  244. package/src/nodes/core/VarNode.js +70 -12
  245. package/src/nodes/core/VaryingNode.js +3 -2
  246. package/src/nodes/display/BlendModes.js +5 -4
  247. package/src/nodes/display/BumpMapNode.js +1 -1
  248. package/src/nodes/display/ColorAdjustment.js +1 -1
  249. package/src/nodes/display/NormalMapNode.js +2 -1
  250. package/src/nodes/display/PassNode.js +51 -10
  251. package/src/nodes/display/RenderOutputNode.js +28 -2
  252. package/src/nodes/display/ScreenNode.js +2 -1
  253. package/src/nodes/display/ToneMappingNode.js +31 -4
  254. package/src/nodes/display/ToonOutlinePassNode.js +8 -0
  255. package/src/nodes/fog/Fog.js +3 -2
  256. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  257. package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
  258. package/src/nodes/functions/BasicLightingModel.js +2 -1
  259. package/src/nodes/functions/PhysicalLightingModel.js +3 -2
  260. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  261. package/src/nodes/geometry/RangeNode.js +40 -4
  262. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
  263. package/src/nodes/gpgpu/ComputeNode.js +17 -5
  264. package/src/nodes/gpgpu/SubgroupFunctionNode.js +25 -0
  265. package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
  266. package/src/nodes/lighting/EnvironmentNode.js +6 -6
  267. package/src/nodes/lighting/LightsNode.js +2 -3
  268. package/src/nodes/lighting/PointShadowNode.js +6 -0
  269. package/src/nodes/lighting/ShadowFilterNode.js +2 -0
  270. package/src/nodes/lighting/ShadowNode.js +75 -8
  271. package/src/nodes/math/ConditionalNode.js +6 -5
  272. package/src/nodes/math/MathNode.js +22 -4
  273. package/src/nodes/math/OperatorNode.js +3 -2
  274. package/src/nodes/pmrem/PMREMUtils.js +117 -2
  275. package/src/nodes/shapes/Shapes.js +1 -1
  276. package/src/nodes/tsl/TSLBase.js +5 -2
  277. package/src/nodes/tsl/TSLCore.js +36 -15
  278. package/src/nodes/utils/DebugNode.js +2 -1
  279. package/src/nodes/utils/EventNode.js +36 -0
  280. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  281. package/src/nodes/utils/JoinNode.js +3 -2
  282. package/src/nodes/utils/LoopNode.js +20 -24
  283. package/src/nodes/utils/MemberNode.js +2 -1
  284. package/src/nodes/utils/PostProcessingUtils.js +28 -1
  285. package/src/nodes/utils/RTTNode.js +12 -2
  286. package/src/nodes/utils/ReflectorNode.js +10 -3
  287. package/src/objects/Line.js +2 -1
  288. package/src/objects/LineSegments.js +2 -1
  289. package/src/objects/Skeleton.js +3 -2
  290. package/src/objects/SkinnedMesh.js +3 -1
  291. package/src/objects/Sprite.js +2 -1
  292. package/src/renderers/WebGLRenderer.js +49 -33
  293. package/src/renderers/common/Animation.js +13 -1
  294. package/src/renderers/common/Backend.js +93 -30
  295. package/src/renderers/common/Background.js +2 -1
  296. package/src/renderers/common/Bindings.js +56 -2
  297. package/src/renderers/common/CanvasTarget.js +341 -0
  298. package/src/renderers/common/Geometries.js +26 -0
  299. package/src/renderers/common/Info.js +4 -2
  300. package/src/renderers/common/InspectorBase.js +146 -0
  301. package/src/renderers/common/PostProcessing.js +6 -25
  302. package/src/renderers/common/QuadMesh.js +7 -1
  303. package/src/renderers/common/RenderList.js +7 -3
  304. package/src/renderers/common/RenderObject.js +3 -1
  305. package/src/renderers/common/RenderObjects.js +1 -1
  306. package/src/renderers/common/Renderer.js +436 -228
  307. package/src/renderers/common/RendererUtils.js +9 -0
  308. package/src/renderers/common/SampledTexture.js +8 -0
  309. package/src/renderers/common/Sampler.js +37 -11
  310. package/src/renderers/common/StorageTexture.js +9 -1
  311. package/src/renderers/common/Textures.js +89 -35
  312. package/src/renderers/common/TimestampQueryPool.js +63 -1
  313. package/src/renderers/common/UniformsGroup.js +2 -1
  314. package/src/renderers/common/XRManager.js +7 -3
  315. package/src/renderers/common/extras/PMREMGenerator.js +160 -65
  316. package/src/renderers/common/nodes/NodeLibrary.js +4 -2
  317. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  318. package/src/renderers/common/nodes/Nodes.js +38 -16
  319. package/src/renderers/shaders/DFGLUTData.js +64 -0
  320. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  321. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
  322. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  323. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
  324. package/src/renderers/shaders/UniformsLib.js +1 -0
  325. package/src/renderers/shaders/UniformsUtils.js +25 -4
  326. package/src/renderers/webgl/WebGLCapabilities.js +2 -1
  327. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  328. package/src/renderers/webgl/WebGLInfo.js +3 -1
  329. package/src/renderers/webgl/WebGLProgram.js +11 -10
  330. package/src/renderers/webgl/WebGLPrograms.js +2 -1
  331. package/src/renderers/webgl/WebGLShadowMap.js +2 -1
  332. package/src/renderers/webgl/WebGLState.js +15 -14
  333. package/src/renderers/webgl/WebGLTextures.js +18 -14
  334. package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
  335. package/src/renderers/webgl-fallback/WebGLBackend.js +22 -41
  336. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +74 -11
  337. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  338. package/src/renderers/webgl-fallback/utils/WebGLState.js +6 -5
  339. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +117 -16
  340. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +42 -12
  341. package/src/renderers/webgpu/WebGPUBackend.js +134 -108
  342. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  343. package/src/renderers/webgpu/WebGPURenderer.js +3 -2
  344. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +21 -19
  345. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  346. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +5 -3
  347. package/src/renderers/webgpu/utils/WebGPUConstants.js +5 -0
  348. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +44 -16
  349. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
  350. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +146 -74
  351. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +29 -6
  352. package/src/renderers/webgpu/utils/WebGPUUtils.js +22 -2
  353. package/src/renderers/webxr/WebXRManager.js +3 -2
  354. package/src/textures/Source.js +2 -1
  355. package/src/textures/Texture.js +3 -2
  356. package/src/textures/VideoTexture.js +2 -0
  357. package/src/utils.js +67 -3
@@ -1,5 +1,5 @@
1
1
  import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, RGBAFormat, DepthFormat, DepthStencilFormat, UnsignedIntType, FloatType, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, UnsignedByteType, NoColorSpace, LinearSRGBColorSpace, NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, SRGBTransfer, LinearTransfer, UnsignedShortType, UnsignedInt248Type } from '../../constants.js';
2
- import { createElementNS } from '../../utils.js';
2
+ import { createElementNS, warn, error } from '../../utils.js';
3
3
  import { ColorManagement } from '../../math/ColorManagement.js';
4
4
  import { Vector2 } from '../../math/Vector2.js';
5
5
  import { getByteLength } from '../../extras/TextureUtils.js';
@@ -83,7 +83,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
83
83
  const context = canvas.getContext( '2d' );
84
84
  context.drawImage( image, 0, 0, width, height );
85
85
 
86
- console.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + dimensions.width + 'x' + dimensions.height + ') to (' + width + 'x' + height + ').' );
86
+ warn( 'WebGLRenderer: Texture has been resized from (' + dimensions.width + 'x' + dimensions.height + ') to (' + width + 'x' + height + ').' );
87
87
 
88
88
  return canvas;
89
89
 
@@ -91,7 +91,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
91
91
 
92
92
  if ( 'data' in image ) {
93
93
 
94
- console.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + dimensions.width + 'x' + dimensions.height + ').' );
94
+ warn( 'WebGLRenderer: Image in DataTexture is too big (' + dimensions.width + 'x' + dimensions.height + ').' );
95
95
 
96
96
  }
97
97
 
@@ -132,7 +132,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
132
132
 
133
133
  if ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];
134
134
 
135
- console.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \'' + internalFormatName + '\'' );
135
+ warn( 'WebGLRenderer: Attempt to use non-existing WebGL internal format \'' + internalFormatName + '\'' );
136
136
 
137
137
  }
138
138
 
@@ -245,7 +245,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
245
245
  } else if ( depthType === UnsignedShortType ) {
246
246
 
247
247
  glInternalFormat = _gl.DEPTH24_STENCIL8;
248
- console.warn( 'DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.' );
248
+ warn( 'DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.' );
249
249
 
250
250
  }
251
251
 
@@ -475,7 +475,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
475
475
 
476
476
  if ( textureUnit >= capabilities.maxTextures ) {
477
477
 
478
- console.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );
478
+ warn( 'WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );
479
479
 
480
480
  }
481
481
 
@@ -522,11 +522,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
522
522
 
523
523
  if ( image === null ) {
524
524
 
525
- console.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );
525
+ warn( 'WebGLRenderer: Texture marked for update but no image data found.' );
526
526
 
527
527
  } else if ( image.complete === false ) {
528
528
 
529
- console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );
529
+ warn( 'WebGLRenderer: Texture marked for update but image is incomplete' );
530
530
 
531
531
  } else {
532
532
 
@@ -554,6 +554,10 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
554
554
  uploadTexture( textureProperties, texture, slot );
555
555
  return;
556
556
 
557
+ } else if ( texture.isExternalTexture ) {
558
+
559
+ textureProperties.__webglTexture = texture.sourceTexture ? texture.sourceTexture : null;
560
+
557
561
  }
558
562
 
559
563
  state.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
@@ -623,7 +627,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
623
627
  ( texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter ||
624
628
  texture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter ) ) {
625
629
 
626
- console.warn( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );
630
+ warn( 'WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );
627
631
 
628
632
  }
629
633
 
@@ -1032,7 +1036,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1032
1036
 
1033
1037
  } else {
1034
1038
 
1035
- console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
1039
+ warn( 'WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
1036
1040
 
1037
1041
  }
1038
1042
 
@@ -1088,7 +1092,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1088
1092
 
1089
1093
  } else {
1090
1094
 
1091
- console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
1095
+ warn( 'WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
1092
1096
 
1093
1097
  }
1094
1098
 
@@ -1382,7 +1386,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
1382
1386
 
1383
1387
  } else {
1384
1388
 
1385
- console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );
1389
+ warn( 'WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );
1386
1390
 
1387
1391
  }
1388
1392
 
@@ -2275,13 +2279,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
2275
2279
 
2276
2280
  if ( format !== RGBAFormat || type !== UnsignedByteType ) {
2277
2281
 
2278
- console.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );
2282
+ warn( 'WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );
2279
2283
 
2280
2284
  }
2281
2285
 
2282
2286
  } else {
2283
2287
 
2284
- console.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );
2288
+ error( 'WebGLTextures: Unsupported texture color space:', colorSpace );
2285
2289
 
2286
2290
  }
2287
2291
 
@@ -1,3 +1,5 @@
1
+ import { error, warn } from '../../utils.js';
2
+
1
3
  function WebGLUniformsGroups( gl, info, capabilities, state ) {
2
4
 
3
5
  let buffers = {};
@@ -80,7 +82,7 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) {
80
82
 
81
83
  }
82
84
 
83
- console.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );
85
+ error( 'WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );
84
86
 
85
87
  return 0;
86
88
 
@@ -335,11 +337,11 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) {
335
337
 
336
338
  } else if ( value.isTexture ) {
337
339
 
338
- console.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );
340
+ warn( 'WebGLRenderer: Texture samplers can not be part of an uniforms group.' );
339
341
 
340
342
  } else {
341
343
 
342
- console.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );
344
+ warn( 'WebGLRenderer: Unsupported uniform value type.', value );
343
345
 
344
346
  }
345
347
 
@@ -11,7 +11,7 @@ import WebGLCapabilities from './utils/WebGLCapabilities.js';
11
11
  import { GLFeatureName } from './utils/WebGLConstants.js';
12
12
  import { WebGLBufferRenderer } from './WebGLBufferRenderer.js';
13
13
 
14
- import { warnOnce } from '../../utils.js';
14
+ import { warnOnce, warn, error } from '../../utils.js';
15
15
  import { WebGLCoordinateSystem, TimestampQuery } from '../../constants.js';
16
16
  import WebGLTimestampQueryPool from './utils/WebGLTimestampQueryPool.js';
17
17
 
@@ -219,7 +219,7 @@ class WebGLBackend extends Backend {
219
219
  const parameters = this.parameters;
220
220
 
221
221
  const contextAttributes = {
222
- antialias: renderer.samples > 0,
222
+ antialias: renderer.currentSamples > 0,
223
223
  alpha: true, // always true for performance reasons
224
224
  depth: renderer.depth,
225
225
  stencil: renderer.stencil
@@ -297,19 +297,6 @@ class WebGLBackend extends Backend {
297
297
 
298
298
  }
299
299
 
300
- /**
301
- * Can be used to synchronize CPU operations with GPU tasks. So when this method is called,
302
- * the CPU waits for the GPU to complete its operation (e.g. a compute task).
303
- *
304
- * @async
305
- * @return {Promise} A Promise that resolves when synchronization has been finished.
306
- */
307
- async waitForGPU() {
308
-
309
- await this.utils._clientWaitAsync();
310
-
311
- }
312
-
313
300
  /**
314
301
  * Ensures the backend is XR compatible.
315
302
  *
@@ -363,7 +350,7 @@ class WebGLBackend extends Backend {
363
350
  // are midframe flushes and an external depth texture.
364
351
  if ( ( this.extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) && renderTarget._autoAllocateDepthBuffer === true && renderTarget.multiview === false ) {
365
352
 
366
- console.warn( 'THREE.WebGLBackend: Render-to-texture extension was disabled because an external texture was provided' );
353
+ warn( 'WebGLBackend: Render-to-texture extension was disabled because an external texture was provided' );
367
354
 
368
355
  }
369
356
 
@@ -445,10 +432,6 @@ class WebGLBackend extends Backend {
445
432
 
446
433
  //
447
434
 
448
- renderContextData.frameCalls = this.renderer.info.render.frameCalls;
449
-
450
- //
451
-
452
435
  if ( renderContext.viewport ) {
453
436
 
454
437
  this.updateViewport( renderContext );
@@ -807,11 +790,6 @@ class WebGLBackend extends Backend {
807
790
  beginCompute( computeGroup ) {
808
791
 
809
792
  const { state, gl } = this;
810
- const computeGroupData = this.get( computeGroup );
811
-
812
- //
813
-
814
- computeGroupData.frameCalls = this.renderer.info.compute.frameCalls;
815
793
 
816
794
  //
817
795
 
@@ -874,6 +852,12 @@ class WebGLBackend extends Backend {
874
852
 
875
853
  count = count[ 0 ];
876
854
 
855
+ } else if ( count && typeof count === 'object' && count.isIndirectStorageBufferAttribute ) {
856
+
857
+ warnOnce( 'WebGLBackend.compute(): The count parameter must be a single number, not IndirectStorageBufferAttribute' );
858
+
859
+ count = computeNode.count;
860
+
877
861
  }
878
862
 
879
863
  if ( attributes[ 0 ].isStorageInstancedBufferAttribute ) {
@@ -1084,12 +1068,12 @@ class WebGLBackend extends Backend {
1084
1068
  if ( object._multiDrawInstances !== null ) {
1085
1069
 
1086
1070
  // @deprecated, r174
1087
- warnOnce( 'THREE.WebGLBackend: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.' );
1071
+ warnOnce( 'WebGLBackend: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.' );
1088
1072
  renderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances );
1089
1073
 
1090
1074
  } else if ( ! this.hasFeature( 'WEBGL_multi_draw' ) ) {
1091
1075
 
1092
- warnOnce( 'THREE.WebGLRenderer: WEBGL_multi_draw not supported.' );
1076
+ warnOnce( 'WebGLBackend: WEBGL_multi_draw not supported.' );
1093
1077
 
1094
1078
  } else {
1095
1079
 
@@ -1302,10 +1286,11 @@ class WebGLBackend extends Backend {
1302
1286
  * Destroys the GPU data for the given texture object.
1303
1287
  *
1304
1288
  * @param {Texture} texture - The texture.
1289
+ * @param {boolean} [isDefaultTexture=false] - Whether the texture uses a default GPU texture or not.
1305
1290
  */
1306
- destroyTexture( texture ) {
1291
+ destroyTexture( texture, isDefaultTexture = false ) {
1307
1292
 
1308
- this.textureUtils.destroyTexture( texture );
1293
+ this.textureUtils.destroyTexture( texture, isDefaultTexture );
1309
1294
 
1310
1295
  }
1311
1296
 
@@ -1330,21 +1315,15 @@ class WebGLBackend extends Backend {
1330
1315
  /**
1331
1316
  * This method does nothing since WebGL 2 has no concept of samplers.
1332
1317
  *
1333
- * @param {Texture} texture - The texture to create the sampler for.
1318
+ * @param {Texture} texture - The texture to update the sampler for.
1319
+ * @return {string} The current sampler key.
1334
1320
  */
1335
- createSampler( /*texture*/ ) {
1321
+ updateSampler( /*texture*/ ) {
1336
1322
 
1337
- //console.warn( 'Abstract class.' );
1323
+ return '';
1338
1324
 
1339
1325
  }
1340
1326
 
1341
- /**
1342
- * This method does nothing since WebGL 2 has no concept of samplers.
1343
- *
1344
- * @param {Texture} texture - The texture to destroy the sampler for.
1345
- */
1346
- destroySampler( /*texture*/ ) {}
1347
-
1348
1327
  // node builder
1349
1328
 
1350
1329
  /**
@@ -1547,7 +1526,7 @@ class WebGLBackend extends Backend {
1547
1526
  const vertexErrors = this._getShaderErrors( gl, glVertexShader, 'vertex' );
1548
1527
  const fragmentErrors = this._getShaderErrors( gl, glFragmentShader, 'fragment' );
1549
1528
 
1550
- console.error(
1529
+ error(
1551
1530
  'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +
1552
1531
  'VALIDATE_STATUS ' + gl.getProgramParameter( programGPU, gl.VALIDATE_STATUS ) + '\n\n' +
1553
1532
  'Program Info Log: ' + programLog + '\n' +
@@ -1559,7 +1538,7 @@ class WebGLBackend extends Backend {
1559
1538
 
1560
1539
  } else if ( programLog !== '' ) {
1561
1540
 
1562
- console.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );
1541
+ warn( 'WebGLProgram: Program Info Log:', programLog );
1563
1542
 
1564
1543
  }
1565
1544
 
@@ -2619,6 +2598,8 @@ class WebGLBackend extends Backend {
2619
2598
  */
2620
2599
  dispose() {
2621
2600
 
2601
+ if ( this.textureUtils !== null ) this.textureUtils.dispose();
2602
+
2622
2603
  const extension = this.extensions.get( 'WEBGL_lose_context' );
2623
2604
  if ( extension ) extension.loseContext();
2624
2605
 
@@ -1,4 +1,4 @@
1
- import { GLSLNodeParser, NodeBuilder, TextureNode, vectorComponents } from '../../../nodes/Nodes.js';
1
+ import { GLSLNodeParser, NodeBuilder, TextureNode, vectorComponents, CodeNode } from '../../../nodes/Nodes.js';
2
2
 
3
3
  import NodeUniformBuffer from '../../common/nodes/NodeUniformBuffer.js';
4
4
  import NodeUniformsGroup from '../../common/nodes/NodeUniformsGroup.js';
@@ -7,6 +7,12 @@ import { NodeSampledTexture, NodeSampledCubeTexture, NodeSampledTexture3D } from
7
7
 
8
8
  import { NoColorSpace, ByteType, ShortType, RGBAIntegerFormat, RGBIntegerFormat, RedIntegerFormat, RGIntegerFormat, UnsignedByteType, UnsignedIntType, UnsignedShortType, RedFormat, RGFormat, IntType, RGBFormat, RGBAFormat, FloatType } from '../../../constants.js';
9
9
  import { DataTexture } from '../../../textures/DataTexture.js';
10
+ import { error } from '../../../utils.js';
11
+
12
+ const glslPolyfills = {
13
+ bitcast_int_uint: new CodeNode( /* glsl */'uint tsl_bitcast_uint_to_int ( int x ) { return floatBitsToInt( uintBitsToFloat( x ) ); }' ),
14
+ bitcast_uint_int: new CodeNode( /* glsl */'uint tsl_bitcast_int_to_uint ( int x ) { return floatBitsToUint( intBitsToFloat ( x ) ); }' )
15
+ };
10
16
 
11
17
  const glslMethods = {
12
18
  textureDimensions: 'textureSize',
@@ -15,6 +21,8 @@ const glslMethods = {
15
21
  bitcast_int_float: 'intBitsToFloat',
16
22
  bitcast_uint_float: 'uintBitsToFloat',
17
23
  bitcast_float_uint: 'floatBitsToUint',
24
+ bitcast_uint_int: 'tsl_bitcast_uint_to_int',
25
+ bitcast_int_uint: 'tsl_bitcast_int_to_uint'
18
26
  };
19
27
 
20
28
  const precisionLib = {
@@ -126,6 +134,25 @@ class GLSLNodeBuilder extends NodeBuilder {
126
134
 
127
135
  }
128
136
 
137
+ /**
138
+ * Includes the given method name into the current
139
+ * function node.
140
+ *
141
+ * @private
142
+ * @param {string} name - The method name to include.
143
+ * @return {CodeNode} The respective code node.
144
+ */
145
+ _include( name ) {
146
+
147
+ const codeNode = glslPolyfills[ name ];
148
+ codeNode.build( this );
149
+
150
+ this.addInclude( codeNode );
151
+
152
+ return codeNode;
153
+
154
+ }
155
+
129
156
  /**
130
157
  * Returns the native shader method name for a given generic name.
131
158
  *
@@ -134,6 +161,12 @@ class GLSLNodeBuilder extends NodeBuilder {
134
161
  */
135
162
  getMethod( method ) {
136
163
 
164
+ if ( glslPolyfills[ method ] !== undefined ) {
165
+
166
+ this._include( method );
167
+
168
+ }
169
+
137
170
  return glslMethods[ method ] || method;
138
171
 
139
172
  }
@@ -147,7 +180,7 @@ class GLSLNodeBuilder extends NodeBuilder {
147
180
  */
148
181
  getBitcastMethod( type, inputType ) {
149
182
 
150
- return glslMethods[ `bitcast_${ inputType }_${ type }` ];
183
+ return this.getMethod( `bitcast_${ inputType }_${ type }` );
151
184
 
152
185
  }
153
186
 
@@ -367,7 +400,7 @@ ${ flowData.code }
367
400
  const channel = '.' + vectorComponents.join( '' ).slice( 0, itemSize );
368
401
  const uvSnippet = `ivec2(${indexSnippet} % ${ propertySizeName }, ${indexSnippet} / ${ propertySizeName })`;
369
402
 
370
- const snippet = this.generateTextureLoad( null, textureName, uvSnippet, null, null, '0' );
403
+ const snippet = this.generateTextureLoad( null, textureName, uvSnippet, '0', null, null );
371
404
 
372
405
  //
373
406
 
@@ -400,12 +433,14 @@ ${ flowData.code }
400
433
  * @param {?Texture} texture - The texture.
401
434
  * @param {string} textureProperty - The name of the texture uniform in the shader.
402
435
  * @param {string} uvIndexSnippet - A GLSL snippet that represents texture coordinates used for sampling.
436
+ * @param {?string} levelSnippet - A GLSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
403
437
  * @param {?string} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
404
438
  * @param {?string} offsetSnippet - A GLSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
405
- * @param {string} [levelSnippet='0u'] - A GLSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
406
439
  * @return {string} The GLSL snippet.
407
440
  */
408
- generateTextureLoad( texture, textureProperty, uvIndexSnippet, depthSnippet, offsetSnippet, levelSnippet = '0' ) {
441
+ generateTextureLoad( texture, textureProperty, uvIndexSnippet, levelSnippet, depthSnippet, offsetSnippet ) {
442
+
443
+ if ( levelSnippet === null ) levelSnippet = '0';
409
444
 
410
445
  let snippet;
411
446
 
@@ -578,7 +613,7 @@ ${ flowData.code }
578
613
 
579
614
  } else {
580
615
 
581
- console.error( `WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${ shaderStage } shader.` );
616
+ error( `WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${ shaderStage } shader.` );
582
617
 
583
618
  }
584
619
 
@@ -960,7 +995,8 @@ ${ flowData.code }
960
995
  }
961
996
 
962
997
  /**
963
- * Returns the instance index builtin.
998
+ * Contextually returns either the vertex stage instance index builtin
999
+ * or the linearized index of an compute invocation within a grid of workgroups.
964
1000
  *
965
1001
  * @return {string} The instance index.
966
1002
  */
@@ -971,7 +1007,7 @@ ${ flowData.code }
971
1007
  }
972
1008
 
973
1009
  /**
974
- * Returns the invocation local index builtin.
1010
+ * Returns a builtin representing the index of an invocation within its workgroup.
975
1011
  *
976
1012
  * @return {string} The invocation local index.
977
1013
  */
@@ -985,6 +1021,33 @@ ${ flowData.code }
985
1021
 
986
1022
  }
987
1023
 
1024
+ /**
1025
+ * Returns a builtin representing the size of a subgroup within the current shader.
1026
+ */
1027
+ getSubgroupSize() {
1028
+
1029
+ error( 'GLSLNodeBuilder: WebGLBackend does not support the subgroupSize node' );
1030
+
1031
+ }
1032
+
1033
+ /**
1034
+ * Returns a builtin representing the index of an invocation within its subgroup.
1035
+ */
1036
+ getInvocationSubgroupIndex() {
1037
+
1038
+ error( 'GLSLNodeBuilder: WebGLBackend does not support the invocationSubgroupIndex node' );
1039
+
1040
+ }
1041
+
1042
+ /**
1043
+ * Returns a builtin representing the index of the current invocation's subgroup within its workgroup.
1044
+ */
1045
+ getSubgroupIndex() {
1046
+
1047
+ error( 'GLSLNodeBuilder: WebGLBackend does not support the subgroupIndex node' );
1048
+
1049
+ }
1050
+
988
1051
  /**
989
1052
  * Returns the draw index builtin.
990
1053
  *
@@ -1316,6 +1379,9 @@ ${shaderData.extensions}
1316
1379
  // precision
1317
1380
  ${ defaultPrecisions }
1318
1381
 
1382
+ // structs
1383
+ ${shaderData.structs}
1384
+
1319
1385
  // uniforms
1320
1386
  ${shaderData.uniforms}
1321
1387
 
@@ -1325,9 +1391,6 @@ ${shaderData.varyings}
1325
1391
  // codes
1326
1392
  ${shaderData.codes}
1327
1393
 
1328
- // structs
1329
- ${shaderData.structs}
1330
-
1331
1394
  void main() {
1332
1395
 
1333
1396
  // vars
@@ -5,9 +5,8 @@ export const GLFeatureName = {
5
5
  'WEBGL_compressed_texture_etc': 'texture-compression-etc2',
6
6
  'WEBGL_compressed_texture_etc1': 'texture-compression-etc1',
7
7
  'WEBGL_compressed_texture_pvrtc': 'texture-compression-pvrtc',
8
- 'WEBKIT_WEBGL_compressed_texture_pvrtc': 'texture-compression-pvrtc',
9
- 'WEBGL_compressed_texture_s3tc': 'texture-compression-bc',
10
- 'EXT_texture_compression_bptc': 'texture-compression-bptc',
8
+ 'WEBGL_compressed_texture_s3tc': 'texture-compression-s3tc',
9
+ 'EXT_texture_compression_bptc': 'texture-compression-bc',
11
10
  'EXT_disjoint_timer_query_webgl2': 'timestamp-query',
12
11
  'OVR_multiview2': 'OVR_multiview2'
13
12
 
@@ -7,6 +7,7 @@ import {
7
7
  NeverDepth, AlwaysDepth, LessDepth, LessEqualDepth, EqualDepth, GreaterEqualDepth, GreaterDepth, NotEqualDepth
8
8
  } from '../../../constants.js';
9
9
  import { Vector4 } from '../../../math/Vector4.js';
10
+ import { error } from '../../../utils.js';
10
11
 
11
12
  let equationToGL, factorToGL;
12
13
 
@@ -343,7 +344,7 @@ class WebGLState {
343
344
  break;
344
345
 
345
346
  default:
346
- console.error( 'THREE.WebGLState: Invalid blending: ', blending );
347
+ error( 'WebGLState: Invalid blending: ', blending );
347
348
  break;
348
349
 
349
350
  }
@@ -361,15 +362,15 @@ class WebGLState {
361
362
  break;
362
363
 
363
364
  case SubtractiveBlending:
364
- console.error( 'THREE.WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true' );
365
+ error( 'WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true' );
365
366
  break;
366
367
 
367
368
  case MultiplyBlending:
368
- console.error( 'THREE.WebGLState: MultiplyBlending requires material.premultipliedAlpha = true' );
369
+ error( 'WebGLState: MultiplyBlending requires material.premultipliedAlpha = true' );
369
370
  break;
370
371
 
371
372
  default:
372
- console.error( 'THREE.WebGLState: Invalid blending: ', blending );
373
+ error( 'WebGLState: Invalid blending: ', blending );
373
374
  break;
374
375
 
375
376
  }
@@ -754,7 +755,7 @@ class WebGLState {
754
755
 
755
756
  this.setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );
756
757
 
757
- material.alphaToCoverage === true && this.backend.renderer.samples > 1
758
+ material.alphaToCoverage === true && this.backend.renderer.currentSamples > 0
758
759
  ? this.enable( gl.SAMPLE_ALPHA_TO_COVERAGE )
759
760
  : this.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );
760
761