@codexo/exojs 2.1.0 → 2.1.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 (351) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +3 -3
  3. package/dist/esm/audio/AbstractMedia.d.ts +3 -3
  4. package/dist/esm/audio/AbstractMedia.js +7 -2
  5. package/dist/esm/audio/AbstractMedia.js.map +1 -1
  6. package/dist/esm/audio/AudioAnalyser.d.ts +1 -1
  7. package/dist/esm/audio/AudioAnalyser.js +13 -3
  8. package/dist/esm/audio/AudioAnalyser.js.map +1 -1
  9. package/dist/esm/audio/Media.d.ts +1 -1
  10. package/dist/esm/audio/Music.d.ts +2 -2
  11. package/dist/esm/audio/Music.js +2 -1
  12. package/dist/esm/audio/Music.js.map +1 -1
  13. package/dist/esm/audio/Sound.d.ts +2 -2
  14. package/dist/esm/audio/Sound.js +10 -9
  15. package/dist/esm/audio/Sound.js.map +1 -1
  16. package/dist/esm/audio/audio-context.d.ts +1 -1
  17. package/dist/esm/core/Application.d.ts +5 -5
  18. package/dist/esm/core/Application.js +15 -7
  19. package/dist/esm/core/Application.js.map +1 -1
  20. package/dist/esm/core/Bounds.d.ts +2 -2
  21. package/dist/esm/core/Bounds.js +6 -8
  22. package/dist/esm/core/Bounds.js.map +1 -1
  23. package/dist/esm/core/Clock.js +3 -2
  24. package/dist/esm/core/Clock.js.map +1 -1
  25. package/dist/esm/core/Color.d.ts +1 -1
  26. package/dist/esm/core/Color.js +148 -144
  27. package/dist/esm/core/Color.js.map +1 -1
  28. package/dist/esm/core/Quadtree.d.ts +2 -2
  29. package/dist/esm/core/Quadtree.js +6 -4
  30. package/dist/esm/core/Quadtree.js.map +1 -1
  31. package/dist/esm/core/Scene.d.ts +5 -5
  32. package/dist/esm/core/Scene.js +5 -6
  33. package/dist/esm/core/Scene.js.map +1 -1
  34. package/dist/esm/core/SceneManager.js +42 -41
  35. package/dist/esm/core/SceneManager.js.map +1 -1
  36. package/dist/esm/core/SceneNode.d.ts +11 -11
  37. package/dist/esm/core/SceneNode.js +22 -24
  38. package/dist/esm/core/SceneNode.js.map +1 -1
  39. package/dist/esm/core/Signal.js +6 -4
  40. package/dist/esm/core/Signal.js.map +1 -1
  41. package/dist/esm/core/Time.d.ts +1 -1
  42. package/dist/esm/core/Time.js +10 -9
  43. package/dist/esm/core/Time.js.map +1 -1
  44. package/dist/esm/core/Timer.d.ts +1 -1
  45. package/dist/esm/core/Timer.js +1 -0
  46. package/dist/esm/core/Timer.js.map +1 -1
  47. package/dist/esm/core/types.d.ts +1 -1
  48. package/dist/esm/core/utils.d.ts +3 -3
  49. package/dist/esm/index.js +3 -2
  50. package/dist/esm/index.js.map +1 -1
  51. package/dist/esm/input/ArcadeStickGamepadMapping.js +1 -1
  52. package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
  53. package/dist/esm/input/GameCubeGamepadMapping.js +1 -4
  54. package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
  55. package/dist/esm/input/Gamepad.d.ts +1 -1
  56. package/dist/esm/input/Gamepad.js +19 -15
  57. package/dist/esm/input/Gamepad.js.map +1 -1
  58. package/dist/esm/input/GamepadChannels.js +2 -0
  59. package/dist/esm/input/GamepadChannels.js.map +1 -1
  60. package/dist/esm/input/GamepadControl.js +5 -0
  61. package/dist/esm/input/GamepadControl.js.map +1 -1
  62. package/dist/esm/input/GamepadMapping.js +2 -0
  63. package/dist/esm/input/GamepadMapping.js.map +1 -1
  64. package/dist/esm/input/GamepadPromptLayouts.js +19 -19
  65. package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
  66. package/dist/esm/input/GenericDualAnalogGamepadMapping.js +1 -1
  67. package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
  68. package/dist/esm/input/Input.d.ts +2 -2
  69. package/dist/esm/input/Input.js +8 -7
  70. package/dist/esm/input/Input.js.map +1 -1
  71. package/dist/esm/input/InputManager.d.ts +3 -3
  72. package/dist/esm/input/InputManager.js +43 -39
  73. package/dist/esm/input/InputManager.js.map +1 -1
  74. package/dist/esm/input/JoyConLeftGamepadMapping.js +1 -4
  75. package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
  76. package/dist/esm/input/JoyConRightGamepadMapping.js +1 -4
  77. package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
  78. package/dist/esm/input/PlayStationGamepadMapping.js +1 -4
  79. package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
  80. package/dist/esm/input/Pointer.d.ts +3 -3
  81. package/dist/esm/input/Pointer.js +12 -3
  82. package/dist/esm/input/Pointer.js.map +1 -1
  83. package/dist/esm/input/SteamControllerGamepadMapping.js +1 -4
  84. package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
  85. package/dist/esm/input/SwitchProGamepadMapping.js +1 -4
  86. package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
  87. package/dist/esm/input/XboxGamepadMapping.js +1 -4
  88. package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
  89. package/dist/esm/input/types.js +7 -1
  90. package/dist/esm/input/types.js.map +1 -1
  91. package/dist/esm/math/AbstractVector.d.ts +1 -1
  92. package/dist/esm/math/Circle.d.ts +6 -6
  93. package/dist/esm/math/Circle.js +17 -14
  94. package/dist/esm/math/Circle.js.map +1 -1
  95. package/dist/esm/math/Collision.d.ts +2 -2
  96. package/dist/esm/math/Collision.js +13 -0
  97. package/dist/esm/math/Collision.js.map +1 -0
  98. package/dist/esm/math/Ellipse.d.ts +6 -6
  99. package/dist/esm/math/Ellipse.js +11 -8
  100. package/dist/esm/math/Ellipse.js.map +1 -1
  101. package/dist/esm/math/Flags.d.ts +1 -1
  102. package/dist/esm/math/Flags.js +1 -1
  103. package/dist/esm/math/Flags.js.map +1 -1
  104. package/dist/esm/math/Interval.d.ts +1 -1
  105. package/dist/esm/math/Interval.js +3 -1
  106. package/dist/esm/math/Interval.js.map +1 -1
  107. package/dist/esm/math/Line.d.ts +6 -6
  108. package/dist/esm/math/Line.js +11 -8
  109. package/dist/esm/math/Line.js.map +1 -1
  110. package/dist/esm/math/Matrix.d.ts +1 -1
  111. package/dist/esm/math/Matrix.js +11 -2
  112. package/dist/esm/math/Matrix.js.map +1 -1
  113. package/dist/esm/math/ObservableSize.js +1 -0
  114. package/dist/esm/math/ObservableSize.js.map +1 -1
  115. package/dist/esm/math/ObservableVector.d.ts +1 -1
  116. package/dist/esm/math/ObservableVector.js +3 -0
  117. package/dist/esm/math/ObservableVector.js.map +1 -1
  118. package/dist/esm/math/PolarVector.d.ts +1 -1
  119. package/dist/esm/math/PolarVector.js +2 -0
  120. package/dist/esm/math/PolarVector.js.map +1 -1
  121. package/dist/esm/math/Polygon.d.ts +6 -6
  122. package/dist/esm/math/Polygon.js +17 -15
  123. package/dist/esm/math/Polygon.js.map +1 -1
  124. package/dist/esm/math/PolygonLike.d.ts +1 -1
  125. package/dist/esm/math/Random.js +4 -4
  126. package/dist/esm/math/Random.js.map +1 -1
  127. package/dist/esm/math/Rectangle.d.ts +7 -7
  128. package/dist/esm/math/Rectangle.js +17 -14
  129. package/dist/esm/math/Rectangle.js.map +1 -1
  130. package/dist/esm/math/Segment.d.ts +2 -2
  131. package/dist/esm/math/Segment.js +2 -0
  132. package/dist/esm/math/Segment.js.map +1 -1
  133. package/dist/esm/math/ShapeLike.d.ts +2 -2
  134. package/dist/esm/math/Size.d.ts +1 -1
  135. package/dist/esm/math/Size.js +3 -1
  136. package/dist/esm/math/Size.js.map +1 -1
  137. package/dist/esm/math/Transformable.js +9 -11
  138. package/dist/esm/math/Transformable.js.map +1 -1
  139. package/dist/esm/math/Vector.d.ts +5 -5
  140. package/dist/esm/math/Vector.js +13 -10
  141. package/dist/esm/math/Vector.js.map +1 -1
  142. package/dist/esm/math/collision-detection.d.ts +7 -7
  143. package/dist/esm/math/collision-detection.js +9 -9
  144. package/dist/esm/math/collision-detection.js.map +1 -1
  145. package/dist/esm/math/collision-primitives.d.ts +2 -2
  146. package/dist/esm/math/collision-primitives.js +4 -4
  147. package/dist/esm/math/collision-primitives.js.map +1 -1
  148. package/dist/esm/math/geometry.d.ts +1 -1
  149. package/dist/esm/math/utils.d.ts +1 -1
  150. package/dist/esm/math/utils.js +17 -11
  151. package/dist/esm/math/utils.js.map +1 -1
  152. package/dist/esm/particles/Particle.d.ts +4 -4
  153. package/dist/esm/particles/Particle.js +9 -11
  154. package/dist/esm/particles/Particle.js.map +1 -1
  155. package/dist/esm/particles/ParticleProperties.d.ts +3 -3
  156. package/dist/esm/particles/ParticleSystem.d.ts +6 -6
  157. package/dist/esm/particles/ParticleSystem.js +10 -9
  158. package/dist/esm/particles/ParticleSystem.js.map +1 -1
  159. package/dist/esm/particles/affectors/ColorAffector.d.ts +4 -4
  160. package/dist/esm/particles/affectors/ColorAffector.js +2 -0
  161. package/dist/esm/particles/affectors/ColorAffector.js.map +1 -1
  162. package/dist/esm/particles/affectors/ForceAffector.d.ts +4 -4
  163. package/dist/esm/particles/affectors/ForceAffector.js +1 -0
  164. package/dist/esm/particles/affectors/ForceAffector.js.map +1 -1
  165. package/dist/esm/particles/affectors/ParticleAffector.d.ts +2 -2
  166. package/dist/esm/particles/affectors/ScaleAffector.d.ts +4 -4
  167. package/dist/esm/particles/affectors/ScaleAffector.js +1 -0
  168. package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -1
  169. package/dist/esm/particles/affectors/TorqueAffector.d.ts +3 -3
  170. package/dist/esm/particles/affectors/TorqueAffector.js +1 -0
  171. package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -1
  172. package/dist/esm/particles/emitters/ParticleEmitter.d.ts +2 -2
  173. package/dist/esm/particles/emitters/ParticleOptions.d.ts +15 -4
  174. package/dist/esm/particles/emitters/ParticleOptions.js +20 -0
  175. package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -1
  176. package/dist/esm/particles/emitters/UniversalEmitter.d.ts +4 -4
  177. package/dist/esm/particles/emitters/UniversalEmitter.js +3 -1
  178. package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -1
  179. package/dist/esm/physics/RapierPhysicsWorld.d.ts +4 -4
  180. package/dist/esm/physics/RapierPhysicsWorld.js +19 -8
  181. package/dist/esm/physics/RapierPhysicsWorld.js.map +1 -1
  182. package/dist/esm/rendering/CallbackRenderPass.js +1 -0
  183. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  184. package/dist/esm/rendering/Container.d.ts +2 -2
  185. package/dist/esm/rendering/Container.js +9 -9
  186. package/dist/esm/rendering/Container.js.map +1 -1
  187. package/dist/esm/rendering/Drawable.d.ts +2 -2
  188. package/dist/esm/rendering/Drawable.js +2 -5
  189. package/dist/esm/rendering/Drawable.js.map +1 -1
  190. package/dist/esm/rendering/RenderNode.d.ts +6 -6
  191. package/dist/esm/rendering/RenderNode.js +9 -12
  192. package/dist/esm/rendering/RenderNode.js.map +1 -1
  193. package/dist/esm/rendering/RenderTarget.d.ts +3 -3
  194. package/dist/esm/rendering/RenderTarget.js +7 -3
  195. package/dist/esm/rendering/RenderTarget.js.map +1 -1
  196. package/dist/esm/rendering/RenderTargetPass.d.ts +1 -1
  197. package/dist/esm/rendering/RenderTargetPass.js +4 -0
  198. package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
  199. package/dist/esm/rendering/RendererRegistry.js +2 -4
  200. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  201. package/dist/esm/rendering/SceneRenderRuntime.d.ts +2 -2
  202. package/dist/esm/rendering/View.d.ts +4 -4
  203. package/dist/esm/rendering/View.js +28 -24
  204. package/dist/esm/rendering/View.js.map +1 -1
  205. package/dist/esm/rendering/filters/BlurFilter.d.ts +2 -2
  206. package/dist/esm/rendering/filters/BlurFilter.js +4 -4
  207. package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
  208. package/dist/esm/rendering/filters/ColorFilter.d.ts +3 -3
  209. package/dist/esm/rendering/filters/ColorFilter.js +2 -1
  210. package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
  211. package/dist/esm/rendering/filters/Filter.d.ts +2 -2
  212. package/dist/esm/rendering/primitives/DrawableShape.d.ts +4 -4
  213. package/dist/esm/rendering/primitives/DrawableShape.js +3 -0
  214. package/dist/esm/rendering/primitives/DrawableShape.js.map +1 -1
  215. package/dist/esm/rendering/primitives/Geometry.js +3 -0
  216. package/dist/esm/rendering/primitives/Geometry.js.map +1 -1
  217. package/dist/esm/rendering/primitives/Graphics.d.ts +4 -4
  218. package/dist/esm/rendering/primitives/Graphics.js +4 -7
  219. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  220. package/dist/esm/rendering/shader/Shader.js +5 -3
  221. package/dist/esm/rendering/shader/Shader.js.map +1 -1
  222. package/dist/esm/rendering/shader/ShaderAttribute.js +5 -1
  223. package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
  224. package/dist/esm/rendering/shader/ShaderUniform.d.ts +1 -1
  225. package/dist/esm/rendering/shader/ShaderUniform.js +6 -1
  226. package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
  227. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +5 -5
  228. package/dist/esm/rendering/sprite/AnimatedSprite.js +8 -8
  229. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  230. package/dist/esm/rendering/sprite/Sprite.d.ts +6 -6
  231. package/dist/esm/rendering/sprite/Sprite.js +4 -4
  232. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  233. package/dist/esm/rendering/sprite/Spritesheet.d.ts +1 -1
  234. package/dist/esm/rendering/sprite/Spritesheet.js +4 -3
  235. package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
  236. package/dist/esm/rendering/text/Text.d.ts +2 -2
  237. package/dist/esm/rendering/text/Text.js +5 -1
  238. package/dist/esm/rendering/text/Text.js.map +1 -1
  239. package/dist/esm/rendering/text/TextStyle.js +14 -1
  240. package/dist/esm/rendering/text/TextStyle.js.map +1 -1
  241. package/dist/esm/rendering/texture/RenderTexture.d.ts +3 -3
  242. package/dist/esm/rendering/texture/RenderTexture.js +14 -9
  243. package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
  244. package/dist/esm/rendering/texture/Sampler.d.ts +1 -1
  245. package/dist/esm/rendering/texture/Sampler.js +7 -0
  246. package/dist/esm/rendering/texture/Sampler.js.map +1 -1
  247. package/dist/esm/rendering/texture/Texture.d.ts +3 -3
  248. package/dist/esm/rendering/texture/Texture.js +19 -17
  249. package/dist/esm/rendering/texture/Texture.js.map +1 -1
  250. package/dist/esm/rendering/video/Video.d.ts +3 -3
  251. package/dist/esm/rendering/video/Video.js +15 -10
  252. package/dist/esm/rendering/video/Video.js.map +1 -1
  253. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +1 -1
  254. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +16 -9
  255. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  256. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js +2 -4
  257. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js.map +1 -1
  258. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +1 -1
  259. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js +11 -5
  260. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js.map +1 -1
  261. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +2 -2
  262. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +5 -3
  263. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
  264. package/dist/esm/rendering/webgl2/WebGl2RenderManager.d.ts +4 -4
  265. package/dist/esm/rendering/webgl2/WebGl2RenderManager.js +28 -20
  266. package/dist/esm/rendering/webgl2/WebGl2RenderManager.js.map +1 -1
  267. package/dist/esm/rendering/webgl2/WebGl2RendererRuntime.d.ts +1 -1
  268. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js +9 -1
  269. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
  270. package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js +7 -0
  271. package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js.map +1 -1
  272. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.d.ts +1 -1
  273. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js +5 -4
  274. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js.map +1 -1
  275. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js +2 -4
  276. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js.map +1 -1
  277. package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts +1 -1
  278. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +3 -3
  279. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +85 -65
  280. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
  281. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.d.ts +5 -9
  282. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js +177 -113
  283. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js.map +1 -1
  284. package/dist/esm/rendering/webgpu/WebGpuRenderManager.d.ts +4 -4
  285. package/dist/esm/rendering/webgpu/WebGpuRenderManager.js +79 -65
  286. package/dist/esm/rendering/webgpu/WebGpuRenderManager.js.map +1 -1
  287. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +3 -3
  288. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +172 -132
  289. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  290. package/dist/esm/resources/AbstractAssetFactory.js +1 -3
  291. package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
  292. package/dist/esm/resources/AssetManifest.js +2 -0
  293. package/dist/esm/resources/AssetManifest.js.map +1 -1
  294. package/dist/esm/resources/FactoryRegistry.js +1 -3
  295. package/dist/esm/resources/FactoryRegistry.js.map +1 -1
  296. package/dist/esm/resources/IndexedDbDatabase.d.ts +1 -1
  297. package/dist/esm/resources/IndexedDbDatabase.js +7 -3
  298. package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
  299. package/dist/esm/resources/IndexedDbStore.js +1 -0
  300. package/dist/esm/resources/IndexedDbStore.js.map +1 -1
  301. package/dist/esm/resources/Loader.d.ts +1 -1
  302. package/dist/esm/resources/Loader.js +21 -17
  303. package/dist/esm/resources/Loader.js.map +1 -1
  304. package/dist/esm/resources/factories/BinaryFactory.d.ts +1 -1
  305. package/dist/esm/resources/factories/BinaryFactory.js +1 -4
  306. package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
  307. package/dist/esm/resources/factories/FontFactory.d.ts +1 -1
  308. package/dist/esm/resources/factories/FontFactory.js +2 -5
  309. package/dist/esm/resources/factories/FontFactory.js.map +1 -1
  310. package/dist/esm/resources/factories/ImageFactory.d.ts +1 -1
  311. package/dist/esm/resources/factories/ImageFactory.js +1 -4
  312. package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
  313. package/dist/esm/resources/factories/JsonFactory.d.ts +1 -1
  314. package/dist/esm/resources/factories/JsonFactory.js +1 -4
  315. package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
  316. package/dist/esm/resources/factories/MusicFactory.d.ts +3 -3
  317. package/dist/esm/resources/factories/MusicFactory.js +2 -5
  318. package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
  319. package/dist/esm/resources/factories/SoundFactory.d.ts +3 -3
  320. package/dist/esm/resources/factories/SoundFactory.js +1 -4
  321. package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
  322. package/dist/esm/resources/factories/SvgFactory.d.ts +1 -1
  323. package/dist/esm/resources/factories/SvgFactory.js +1 -4
  324. package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
  325. package/dist/esm/resources/factories/TextFactory.d.ts +1 -1
  326. package/dist/esm/resources/factories/TextFactory.js +1 -4
  327. package/dist/esm/resources/factories/TextFactory.js.map +1 -1
  328. package/dist/esm/resources/factories/TextureFactory.d.ts +3 -3
  329. package/dist/esm/resources/factories/TextureFactory.js +1 -4
  330. package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
  331. package/dist/esm/resources/factories/VideoFactory.d.ts +4 -4
  332. package/dist/esm/resources/factories/VideoFactory.js +2 -5
  333. package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
  334. package/dist/esm/resources/factories/VttFactory.d.ts +1 -1
  335. package/dist/esm/resources/factories/VttFactory.js +1 -4
  336. package/dist/esm/resources/factories/VttFactory.js.map +1 -1
  337. package/dist/esm/resources/factories/WasmFactory.d.ts +1 -1
  338. package/dist/esm/resources/factories/WasmFactory.js +1 -4
  339. package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
  340. package/dist/esm/resources/utils.js +5 -5
  341. package/dist/esm/resources/utils.js.map +1 -1
  342. package/dist/exo.esm.js +2074 -1813
  343. package/dist/exo.esm.js.map +1 -1
  344. package/dist/exo.esm.min.js +1 -1
  345. package/dist/exo.esm.min.js.map +1 -1
  346. package/dist/exo.global.js +2074 -1813
  347. package/dist/exo.global.js.map +1 -1
  348. package/dist/exo.global.min.js +1 -1
  349. package/dist/exo.global.min.js.map +1 -1
  350. package/package.json +96 -99
  351. package/dist/exo.d.ts +0 -4748
@@ -5,15 +5,8 @@ import { getWebGpuBlendState } from './WebGpuBlendState.js';
5
5
 
6
6
  /// <reference types="@webgpu/types" />
7
7
  const primitiveShaderSource = `
8
- struct TransformUniforms {
9
- matrix: mat4x4<f32>,
10
- };
11
-
12
- @group(0) @binding(0)
13
- var<uniform> uniforms: TransformUniforms;
14
-
15
8
  struct VertexInput {
16
- @location(0) position: vec2<f32>,
9
+ @location(0) position: vec4<f32>,
17
10
  @location(1) color: vec4<f32>,
18
11
  };
19
12
 
@@ -26,7 +19,7 @@ struct VertexOutput {
26
19
  fn vertexMain(input: VertexInput) -> VertexOutput {
27
20
  var output: VertexOutput;
28
21
 
29
- output.position = uniforms.matrix * vec4<f32>(input.position, 0.0, 1.0);
22
+ output.position = input.position;
30
23
  output.color = vec4<f32>(input.color.rgb * input.color.a, input.color.a);
31
24
 
32
25
  return output;
@@ -37,33 +30,32 @@ fn fragmentMain(input: VertexOutput) -> @location(0) vec4<f32> {
37
30
  return input.color;
38
31
  }
39
32
  `;
40
- const vertexStrideBytes = 12;
41
- const transformByteLength = 64;
33
+ // 4 floats (pre-transformed clip-space position) + 1 u32 (color) = 20 bytes.
34
+ // The CPU applies (view * shape.globalTransform) to each vertex before writing
35
+ // it into the vertex buffer, so the shader outputs the position as-is. This
36
+ // matches the sprite renderer's approach and eliminates the need for a per-
37
+ // drawcall uniform binding.
38
+ const vertexStrideBytes = 20;
39
+ const wordsPerVertex = vertexStrideBytes / Uint32Array.BYTES_PER_ELEMENT;
42
40
  class WebGpuPrimitiveRenderer extends AbstractWebGpuRenderer {
43
- constructor() {
44
- super(...arguments);
45
- this._combinedTransform = new Matrix();
46
- this._drawCalls = [];
47
- this._drawCallCount = 0;
48
- this._transformData = new Float32Array(transformByteLength / Float32Array.BYTES_PER_ELEMENT);
49
- this._pipelines = new Map();
50
- this._renderManager = null;
51
- this._device = null;
52
- this._shaderModule = null;
53
- this._bindGroupLayout = null;
54
- this._pipelineLayout = null;
55
- this._uniformBuffer = null;
56
- this._bindGroup = null;
57
- this._vertexBuffer = null;
58
- this._indexBuffer = null;
59
- this._vertexBufferCapacity = 0;
60
- this._indexBufferCapacity = 0;
61
- this._vertexData = new ArrayBuffer(0);
62
- this._float32View = new Float32Array(this._vertexData);
63
- this._uint32View = new Uint32Array(this._vertexData);
64
- this._generatedIndexData = new Uint16Array(0);
65
- this._sequentialIndexData = new Uint16Array(0);
66
- }
41
+ _combinedTransform = new Matrix();
42
+ _drawCalls = [];
43
+ _drawCallCount = 0;
44
+ _pipelines = new Map();
45
+ _renderManager = null;
46
+ _device = null;
47
+ _shaderModule = null;
48
+ _pipelineLayout = null;
49
+ _vertexBuffer = null;
50
+ _indexBuffer = null;
51
+ _vertexBufferCapacity = 0;
52
+ _indexBufferCapacity = 0;
53
+ _vertexData = new ArrayBuffer(0);
54
+ _float32View = new Float32Array(this._vertexData);
55
+ _uint32View = new Uint32Array(this._vertexData);
56
+ _packedIndexData = new Uint16Array(0);
57
+ _generatedIndexData = new Uint16Array(0);
58
+ _sequentialIndexData = new Uint16Array(0);
67
59
  render(shape) {
68
60
  const runtime = this._renderManager;
69
61
  if (runtime === null) {
@@ -98,60 +90,121 @@ class WebGpuPrimitiveRenderer extends AbstractWebGpuRenderer {
98
90
  flush() {
99
91
  const runtime = this._renderManager;
100
92
  const device = this._device;
101
- const bindGroup = this._bindGroup;
102
- const uniformBuffer = this._uniformBuffer;
103
- if (!runtime || !device || !bindGroup || !uniformBuffer) {
93
+ if (!runtime || !device) {
104
94
  return;
105
95
  }
106
96
  if (this._drawCallCount === 0 && !runtime.clearRequested) {
107
97
  return;
108
98
  }
109
- const encoder = device.createCommandEncoder();
110
- const pass = encoder.beginRenderPass({
111
- colorAttachments: [runtime.createColorAttachment()],
112
- });
113
- runtime.stats.renderPasses++;
114
99
  const scissor = runtime.getScissorRect();
115
100
  const maskClipsAll = scissor !== null && (scissor.width <= 0 || scissor.height <= 0);
116
- if (scissor !== null && !maskClipsAll) {
117
- pass.setScissorRect(scissor.x, scissor.y, scissor.width, scissor.height);
118
- }
119
- if (!maskClipsAll) {
101
+ // Phase 1: resolve drawcalls and record each one's offsets into the
102
+ // shared packed buffers. Transform gets baked into the vertex data
103
+ // during phase 2 so no per-drawcall uniform binding is needed.
104
+ const plan = [];
105
+ const resolvedDrawCalls = [];
106
+ let totalVertices = 0;
107
+ let totalIndices = 0;
108
+ if (this._drawCallCount > 0 && !maskClipsAll) {
120
109
  for (let drawCallIndex = 0; drawCallIndex < this._drawCallCount; drawCallIndex++) {
121
110
  const drawCall = this._drawCalls[drawCallIndex];
122
111
  const shape = drawCall.shape;
123
- const vertices = shape.geometry.vertices;
124
- const resolvedDrawCall = this._resolveDrawCall(shape);
125
- if (resolvedDrawCall === null) {
112
+ const resolved = this._resolveDrawCall(shape);
113
+ resolvedDrawCalls.push(resolved);
114
+ if (resolved === null) {
126
115
  continue;
127
116
  }
128
117
  const pipeline = this._getPipeline({
129
- topology: resolvedDrawCall.topology,
130
- usesStripIndex: resolvedDrawCall.usesStripIndex,
118
+ topology: resolved.topology,
119
+ usesStripIndex: resolved.usesStripIndex,
131
120
  blendMode: drawCall.blendMode,
132
121
  format: runtime.renderTargetFormat,
133
122
  });
134
- this._ensureVertexCapacity(resolvedDrawCall.vertexCount);
135
- this._writeVertexData(vertices, shape.color.toRgba());
136
- this._writeTransformData(runtime, shape);
137
- device.queue.writeBuffer(this._vertexBuffer, 0, this._vertexData, 0, resolvedDrawCall.vertexCount * vertexStrideBytes);
138
- device.queue.writeBuffer(uniformBuffer, 0, this._transformData.buffer, this._transformData.byteOffset, this._transformData.byteLength);
139
- pass.setPipeline(pipeline);
140
- pass.setBindGroup(0, bindGroup);
141
- pass.setVertexBuffer(0, this._vertexBuffer);
142
- if (resolvedDrawCall.indices !== null && resolvedDrawCall.indexCount > 0) {
143
- this._ensureIndexCapacity(resolvedDrawCall.indexCount);
144
- device.queue.writeBuffer(this._indexBuffer, 0, resolvedDrawCall.indices.buffer, resolvedDrawCall.indices.byteOffset, resolvedDrawCall.indexCount * Uint16Array.BYTES_PER_ELEMENT);
145
- pass.setIndexBuffer(this._indexBuffer, 'uint16');
146
- pass.drawIndexed(resolvedDrawCall.indexCount);
123
+ plan.push({
124
+ pipeline,
125
+ vertexByteOffset: totalVertices * vertexStrideBytes,
126
+ vertexCount: resolved.vertexCount,
127
+ indexByteOffset: totalIndices * Uint16Array.BYTES_PER_ELEMENT,
128
+ indexCount: resolved.indexCount,
129
+ });
130
+ totalVertices += resolved.vertexCount;
131
+ totalIndices += resolved.indexCount;
132
+ }
133
+ }
134
+ // If nothing will actually render, still honor a pending clear with
135
+ // a single empty pass so createColorAttachment consumes the clear
136
+ // state exactly once.
137
+ if (plan.length === 0) {
138
+ if (runtime.clearRequested) {
139
+ const encoder = device.createCommandEncoder();
140
+ const pass = encoder.beginRenderPass({
141
+ colorAttachments: [runtime.createColorAttachment()],
142
+ });
143
+ runtime.stats.renderPasses++;
144
+ pass.end();
145
+ runtime.submit(encoder.finish());
146
+ }
147
+ this._drawCallCount = 0;
148
+ return;
149
+ }
150
+ // Phase 2: size GPU buffers for the whole-frame totals, then pack
151
+ // every drawcall's CPU-side data. _writeShapeVertices applies
152
+ // (view * shape.globalTransform) per-vertex so the shader simply
153
+ // outputs input.position unchanged.
154
+ this._ensureVertexCapacity(totalVertices);
155
+ if (totalIndices > 0) {
156
+ this._ensureIndexCapacity(totalIndices);
157
+ if (this._packedIndexData.length < totalIndices) {
158
+ this._packedIndexData = new Uint16Array(Math.max(totalIndices, this._packedIndexData.length === 0 ? 1 : this._packedIndexData.length * 2));
159
+ }
160
+ }
161
+ {
162
+ let vOffset = 0;
163
+ let iOffset = 0;
164
+ for (let i = 0; i < this._drawCallCount; i++) {
165
+ const resolved = resolvedDrawCalls[i];
166
+ if (resolved === null) {
167
+ continue;
147
168
  }
148
- else {
149
- pass.draw(resolvedDrawCall.vertexCount);
169
+ const drawCall = this._drawCalls[i];
170
+ const shape = drawCall.shape;
171
+ this._writeShapeVertices(runtime, shape, vOffset);
172
+ if (resolved.indices !== null && resolved.indexCount > 0) {
173
+ this._packedIndexData.set(resolved.indices.subarray(0, resolved.indexCount), iOffset);
174
+ iOffset += resolved.indexCount;
150
175
  }
151
- runtime.stats.batches++;
152
- runtime.stats.drawCalls++;
176
+ vOffset += resolved.vertexCount;
153
177
  }
154
178
  }
179
+ // Phase 3: single writeBuffer per GPU buffer covers the whole frame.
180
+ device.queue.writeBuffer(this._vertexBuffer, 0, this._vertexData, 0, totalVertices * vertexStrideBytes);
181
+ if (totalIndices > 0) {
182
+ device.queue.writeBuffer(this._indexBuffer, 0, this._packedIndexData.buffer, this._packedIndexData.byteOffset, totalIndices * Uint16Array.BYTES_PER_ELEMENT);
183
+ }
184
+ // Phase 4: single render pass. Per-draw state is just pipeline and
185
+ // vertex/index subrange offsets — the transform has already been
186
+ // baked into the vertex data.
187
+ const encoder = device.createCommandEncoder();
188
+ const pass = encoder.beginRenderPass({
189
+ colorAttachments: [runtime.createColorAttachment()],
190
+ });
191
+ runtime.stats.renderPasses++;
192
+ if (scissor !== null) {
193
+ pass.setScissorRect(scissor.x, scissor.y, scissor.width, scissor.height);
194
+ }
195
+ for (const planned of plan) {
196
+ pass.setPipeline(planned.pipeline);
197
+ pass.setVertexBuffer(0, this._vertexBuffer, planned.vertexByteOffset);
198
+ if (planned.indexCount > 0) {
199
+ pass.setIndexBuffer(this._indexBuffer, 'uint16', planned.indexByteOffset);
200
+ pass.drawIndexed(planned.indexCount);
201
+ }
202
+ else {
203
+ pass.draw(planned.vertexCount);
204
+ }
205
+ runtime.stats.batches++;
206
+ runtime.stats.drawCalls++;
207
+ }
155
208
  pass.end();
156
209
  runtime.submit(encoder.finish());
157
210
  this._drawCallCount = 0;
@@ -164,65 +217,76 @@ class WebGpuPrimitiveRenderer extends AbstractWebGpuRenderer {
164
217
  this._renderManager = runtime;
165
218
  this._device = this._renderManager.device;
166
219
  this._shaderModule = this._device.createShaderModule({ code: primitiveShaderSource });
167
- this._bindGroupLayout = this._device.createBindGroupLayout({
168
- entries: [{
169
- binding: 0,
170
- visibility: GPUShaderStage.VERTEX,
171
- buffer: {
172
- type: 'uniform',
173
- },
174
- }],
175
- });
220
+ // Transform is applied per-vertex on the CPU, so no uniform binding
221
+ // is needed — the shader outputs input.position directly.
176
222
  this._pipelineLayout = this._device.createPipelineLayout({
177
- bindGroupLayouts: [this._bindGroupLayout],
178
- });
179
- this._uniformBuffer = this._device.createBuffer({
180
- size: transformByteLength,
181
- usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
182
- });
183
- this._bindGroup = this._device.createBindGroup({
184
- layout: this._bindGroupLayout,
185
- entries: [{
186
- binding: 0,
187
- resource: {
188
- buffer: this._uniformBuffer,
189
- },
190
- }],
223
+ bindGroupLayouts: [],
191
224
  });
192
225
  }
193
226
  onDisconnect() {
194
227
  this.flush();
195
228
  this._destroyBuffers();
196
229
  this._pipelines.clear();
197
- this._uniformBuffer?.destroy();
198
- this._uniformBuffer = null;
199
- this._bindGroup = null;
200
- this._bindGroupLayout = null;
201
230
  this._pipelineLayout = null;
202
231
  this._shaderModule = null;
203
232
  this._device = null;
204
233
  this._renderManager = null;
205
234
  this._drawCallCount = 0;
206
235
  }
207
- _writeTransformData(runtime, shape) {
236
+ _writeShapeVertices(runtime, shape, vertexStart) {
237
+ // Matrix.combine is `other * this` (see Matrix.rotate and
238
+ // SceneNode.getGlobalTransform, both of which chain via
239
+ // local.combine(parent.global) to yield parent.global * local).
240
+ //
241
+ // We need view * global applied to a local vertex, so start with
242
+ // global and combine with view — that gives
243
+ // _combinedTransform = view * global.
208
244
  const matrix = this._combinedTransform
209
- .copy(runtime.view.getTransform())
210
- .combine(shape.getGlobalTransform());
211
- this._transformData.set([
212
- matrix.a, matrix.c, 0, 0,
213
- matrix.b, matrix.d, 0, 0,
214
- 0, 0, 1, 0,
215
- matrix.x, matrix.y, 0, matrix.z,
216
- ]);
217
- }
218
- _writeVertexData(vertices, color) {
245
+ .copy(shape.getGlobalTransform())
246
+ .combine(runtime.view.getTransform());
247
+ // Match the original uniform-based WGSL layout exactly.
248
+ //
249
+ // The shader packs the Matrix's 9 fields into a 4x4 mat (column-major
250
+ // in WGSL):
251
+ // col 0 = [a, c, 0, 0]
252
+ // col 1 = [b, d, 0, 0]
253
+ // col 2 = [0, 0, 1, 0]
254
+ // col 3 = [x, y, 0, z]
255
+ //
256
+ // Multiplied by vec4(px, py, 0, 1):
257
+ // out = col0*px + col1*py + col2*0 + col3*1
258
+ // out.x = a*px + b*py + x
259
+ // out.y = c*px + d*py + y
260
+ // out.z = 0
261
+ // out.w = z
262
+ //
263
+ // The Matrix class represents the affine matrix in the order
264
+ // [a b x]
265
+ // [c d y]
266
+ // [e f z]
267
+ // so a/b/c/d are rotation+scale (note: b on the TOP row, c on the
268
+ // LEFT column, not the other way around) and x/y/z the translation /
269
+ // w component. Matrix.toArray(false) confirms this layout.
270
+ const a = matrix.a;
271
+ const b = matrix.b;
272
+ const c = matrix.c;
273
+ const d = matrix.d;
274
+ const tx = matrix.x;
275
+ const ty = matrix.y;
276
+ const tw = matrix.z;
277
+ const color = shape.color.toRgba();
278
+ const vertices = shape.geometry.vertices;
219
279
  const vertexCount = vertices.length / 2;
220
280
  for (let i = 0; i < vertexCount; i++) {
221
281
  const sourceIndex = i * 2;
222
- const targetIndex = i * 3;
223
- this._float32View[targetIndex] = vertices[sourceIndex];
224
- this._float32View[targetIndex + 1] = vertices[sourceIndex + 1];
225
- this._uint32View[targetIndex + 2] = color;
282
+ const targetIndex = (vertexStart + i) * wordsPerVertex;
283
+ const px = vertices[sourceIndex];
284
+ const py = vertices[sourceIndex + 1];
285
+ this._float32View[targetIndex + 0] = a * px + b * py + tx;
286
+ this._float32View[targetIndex + 1] = c * px + d * py + ty;
287
+ this._float32View[targetIndex + 2] = 0;
288
+ this._float32View[targetIndex + 3] = tw;
289
+ this._uint32View[targetIndex + 4] = color;
226
290
  }
227
291
  }
228
292
  _ensureVertexCapacity(vertexCount) {
@@ -269,10 +333,10 @@ class WebGpuPrimitiveRenderer extends AbstractWebGpuRenderer {
269
333
  attributes: [{
270
334
  shaderLocation: 0,
271
335
  offset: 0,
272
- format: 'float32x2',
336
+ format: 'float32x4',
273
337
  }, {
274
338
  shaderLocation: 1,
275
- offset: 8,
339
+ offset: 16,
276
340
  format: 'unorm8x4',
277
341
  }],
278
342
  }],
@@ -1 +1 @@
1
- {"version":3,"file":"WebGpuPrimitiveRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuPrimitiveRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebGpuPrimitiveRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuPrimitiveRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { Color } from 'core/Color';
2
- import type { Application } from 'core/Application';
3
- import { BlendModes } from 'rendering/types';
1
+ import { Color } from '@/core/Color';
2
+ import type { Application } from '@/core/Application';
3
+ import { BlendModes } from '@/rendering/types';
4
4
  import { RenderBackendType } from '../RenderBackendType';
5
5
  import { RendererRegistry } from '../RendererRegistry';
6
6
  import type { Drawable } from '../Drawable';
@@ -12,7 +12,7 @@ import type { View } from '../View';
12
12
  import type { WebGpuRendererRuntime } from './WebGpuRendererRuntime';
13
13
  import { RenderTarget } from '../RenderTarget';
14
14
  import { RenderTexture } from '../texture/RenderTexture';
15
- import type { Rectangle } from 'math/Rectangle';
15
+ import type { Rectangle } from '@/math/Rectangle';
16
16
  import type { RenderStats } from '../RenderStats';
17
17
  interface PixelMaskState {
18
18
  x: number;
@@ -16,33 +16,36 @@ import { Vector } from '../../math/Vector.js';
16
16
  /// <reference types="@webgpu/types" />
17
17
  const managedTextureFormat = 'rgba8unorm';
18
18
  class WebGpuRenderManager {
19
+ backendType = RenderBackendType.WebGpu;
20
+ rendererRegistry = new RendererRegistry();
21
+ _canvas;
22
+ _rootRenderTarget;
23
+ _clearColor = new Color();
24
+ _textureStates = new Map();
25
+ _textureDestroyHandlers = new Map();
26
+ _renderTargetDestroyHandlers = new Map();
27
+ _temporaryRenderTextures = [];
28
+ _maskStack = [];
29
+ _maskPixelStack = [];
30
+ _maskPointA = new Vector();
31
+ _maskPointB = new Vector();
32
+ _mipmapShaderModule = null;
33
+ _mipmapBindGroupLayout = null;
34
+ _mipmapPipelineLayout = null;
35
+ _mipmapPipeline = null;
36
+ _mipmapSampler = null;
37
+ _context = null;
38
+ _device = null;
39
+ _format = null;
40
+ _initializePromise = null;
41
+ _renderTarget;
42
+ _renderer = null;
43
+ _blendMode = null;
44
+ _texture = null;
45
+ _clearRequested = false;
46
+ _hasPresentedFrame = false;
47
+ _stats = createRenderStats();
19
48
  constructor(app) {
20
- this.backendType = RenderBackendType.WebGpu;
21
- this.rendererRegistry = new RendererRegistry();
22
- this._clearColor = new Color();
23
- this._textureStates = new Map();
24
- this._textureDestroyHandlers = new Map();
25
- this._renderTargetDestroyHandlers = new Map();
26
- this._temporaryRenderTextures = [];
27
- this._maskStack = [];
28
- this._maskPixelStack = [];
29
- this._maskPointA = new Vector();
30
- this._maskPointB = new Vector();
31
- this._mipmapShaderModule = null;
32
- this._mipmapBindGroupLayout = null;
33
- this._mipmapPipelineLayout = null;
34
- this._mipmapPipeline = null;
35
- this._mipmapSampler = null;
36
- this._context = null;
37
- this._device = null;
38
- this._format = null;
39
- this._initializePromise = null;
40
- this._renderer = null;
41
- this._blendMode = null;
42
- this._texture = null;
43
- this._clearRequested = false;
44
- this._hasPresentedFrame = false;
45
- this._stats = createRenderStats();
46
49
  const { width, height, clearColor, } = app.options;
47
50
  this._canvas = app.canvas;
48
51
  this._rootRenderTarget = new RenderTarget(width, height, true);
@@ -368,10 +371,11 @@ class WebGpuRenderManager {
368
371
  if (typeof gpuNavigator.gpu.getPreferredCanvasFormat !== 'function') {
369
372
  throw new Error('WebGPU is available, but navigator.gpu.getPreferredCanvasFormat is not implemented.');
370
373
  }
371
- const context = this._canvas.getContext('webgpu');
372
- if (context === null) {
373
- throw new Error('Could not create WebGPU canvas context.');
374
- }
374
+ // Request the adapter before acquiring a WebGPU canvas context.
375
+ // getContext('webgpu') is exclusive per canvas — once it succeeds, the
376
+ // same canvas can no longer produce a WebGL2 context. Doing it the
377
+ // other way round means an unavailable adapter still locks the canvas
378
+ // and breaks the automatic WebGL2 fallback in Application.
375
379
  let adapter = null;
376
380
  try {
377
381
  adapter = await gpuNavigator.gpu.requestAdapter();
@@ -382,6 +386,10 @@ class WebGpuRenderManager {
382
386
  if (adapter === null) {
383
387
  throw new Error('Could not acquire a WebGPU adapter.');
384
388
  }
389
+ const context = this._canvas.getContext('webgpu');
390
+ if (context === null) {
391
+ throw new Error('Could not create WebGPU canvas context.');
392
+ }
385
393
  if (typeof adapter.requestDevice !== 'function') {
386
394
  throw new Error('WebGPU adapter does not expose requestDevice().');
387
395
  }
@@ -672,41 +680,47 @@ class WebGpuRenderManager {
672
680
  _getMipmapResources() {
673
681
  if (this._mipmapShaderModule === null || this._mipmapBindGroupLayout === null || this._mipmapPipelineLayout === null || this._mipmapPipeline === null || this._mipmapSampler === null) {
674
682
  this._mipmapShaderModule = this.device.createShaderModule({
675
- code: `
676
- struct VertexOutput {
677
- @builtin(position) position: vec4<f32>,
678
- @location(0) texcoord: vec2<f32>,
679
- };
680
-
681
- @group(0) @binding(0)
682
- var sourceTexture: texture_2d<f32>;
683
- @group(0) @binding(1)
684
- var sourceSampler: sampler;
685
-
686
- @vertex
687
- fn vertexMain(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
688
- var positions = array<vec2<f32>, 3>(
689
- vec2<f32>(-1.0, -1.0),
690
- vec2<f32>(3.0, -1.0),
691
- vec2<f32>(-1.0, 3.0)
692
- );
693
- var texcoords = array<vec2<f32>, 3>(
694
- vec2<f32>(0.0, 0.0),
695
- vec2<f32>(2.0, 0.0),
696
- vec2<f32>(0.0, 2.0)
697
- );
698
- var output: VertexOutput;
699
-
700
- output.position = vec4<f32>(positions[vertexIndex], 0.0, 1.0);
701
- output.texcoord = texcoords[vertexIndex];
702
-
703
- return output;
704
- }
705
-
706
- @fragment
707
- fn fragmentMain(input: VertexOutput) -> @location(0) vec4<f32> {
708
- return textureSample(sourceTexture, sourceSampler, input.texcoord);
709
- }
683
+ code: `
684
+ struct VertexOutput {
685
+ @builtin(position) position: vec4<f32>,
686
+ @location(0) texcoord: vec2<f32>,
687
+ };
688
+
689
+ @group(0) @binding(0)
690
+ var sourceTexture: texture_2d<f32>;
691
+ @group(0) @binding(1)
692
+ var sourceSampler: sampler;
693
+
694
+ @vertex
695
+ fn vertexMain(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
696
+ var positions = array<vec2<f32>, 3>(
697
+ vec2<f32>(-1.0, -1.0),
698
+ vec2<f32>(3.0, -1.0),
699
+ vec2<f32>(-1.0, 3.0)
700
+ );
701
+ // Y is flipped vs the position array: NDC Y points up, but texture UV
702
+ // Y points down (UV (0,0) is the top-left of the source). Matching the
703
+ // two ensures that the output texture's top-left pixel samples from the
704
+ // source's top-left, so every mip level has the same orientation as the
705
+ // level above it. Prior to this, odd mip levels were rendered upside
706
+ // down, producing visible texture flips at view-size doublings.
707
+ var texcoords = array<vec2<f32>, 3>(
708
+ vec2<f32>(0.0, 1.0),
709
+ vec2<f32>(2.0, 1.0),
710
+ vec2<f32>(0.0, -1.0)
711
+ );
712
+ var output: VertexOutput;
713
+
714
+ output.position = vec4<f32>(positions[vertexIndex], 0.0, 1.0);
715
+ output.texcoord = texcoords[vertexIndex];
716
+
717
+ return output;
718
+ }
719
+
720
+ @fragment
721
+ fn fragmentMain(input: VertexOutput) -> @location(0) vec4<f32> {
722
+ return textureSample(sourceTexture, sourceSampler, input.texcoord);
723
+ }
710
724
  `,
711
725
  });
712
726
  this._mipmapBindGroupLayout = this.device.createBindGroupLayout({