@tolokoban/tgd 2.0.1 → 2.0.4

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 (367) hide show
  1. package/lib/dist/buffer/buffer.js +37 -0
  2. package/lib/dist/buffer/index.js +2 -0
  3. package/lib/dist/camera/camera-orthographic.d.ts +13 -5
  4. package/lib/dist/camera/camera-orthographic.d.ts.map +1 -1
  5. package/lib/dist/camera/camera-orthographic.js +97 -0
  6. package/lib/dist/camera/camera-perspective.d.ts +19 -9
  7. package/lib/dist/camera/camera-perspective.d.ts.map +1 -1
  8. package/lib/dist/camera/camera-perspective.js +94 -0
  9. package/lib/dist/camera/camera.d.ts +84 -18
  10. package/lib/dist/camera/camera.d.ts.map +1 -1
  11. package/lib/dist/camera/camera.js +368 -0
  12. package/lib/dist/camera/index.d.ts +3 -3
  13. package/lib/dist/camera/index.d.ts.map +1 -1
  14. package/lib/dist/camera/index.js +4 -0
  15. package/lib/dist/canvas/gizmo/gizmo.d.ts +42 -0
  16. package/lib/dist/canvas/gizmo/gizmo.d.ts.map +1 -0
  17. package/lib/dist/canvas/gizmo/gizmo.js +183 -0
  18. package/lib/dist/canvas/gizmo/index.d.ts +2 -0
  19. package/lib/dist/canvas/gizmo/index.d.ts.map +1 -0
  20. package/lib/dist/canvas/gizmo/index.js +2 -0
  21. package/lib/dist/canvas/gizmo/painter/shader.frag +17 -0
  22. package/lib/dist/canvas/gizmo/painter/shader.vert +24 -0
  23. package/lib/dist/canvas/gizmo/painter/tips.d.ts +13 -0
  24. package/lib/dist/canvas/gizmo/painter/tips.d.ts.map +1 -0
  25. package/lib/dist/canvas/gizmo/painter/tips.js +96 -0
  26. package/lib/dist/canvas/index.d.ts +3 -0
  27. package/lib/dist/canvas/index.d.ts.map +1 -0
  28. package/lib/dist/canvas/index.js +3 -0
  29. package/lib/dist/canvas/landscape/index.d.ts +2 -0
  30. package/lib/dist/canvas/landscape/index.d.ts.map +1 -0
  31. package/lib/dist/canvas/landscape/index.js +2 -0
  32. package/lib/dist/canvas/landscape/landscape.d.ts +18 -0
  33. package/lib/dist/canvas/landscape/landscape.d.ts.map +1 -0
  34. package/lib/dist/canvas/landscape/landscape.js +40 -0
  35. package/lib/dist/color/color.d.ts +22 -0
  36. package/lib/dist/color/color.d.ts.map +1 -0
  37. package/lib/dist/color/color.js +160 -0
  38. package/lib/dist/color/index.d.ts +2 -0
  39. package/lib/dist/color/index.d.ts.map +1 -0
  40. package/lib/dist/color/index.js +2 -0
  41. package/lib/dist/context/animation/animation-manager.d.ts +8 -0
  42. package/lib/dist/context/animation/animation-manager.d.ts.map +1 -0
  43. package/lib/dist/context/animation/animation-manager.js +41 -0
  44. package/lib/dist/context/context.d.ts +95 -8
  45. package/lib/dist/context/context.d.ts.map +1 -1
  46. package/lib/dist/context/context.js +297 -0
  47. package/lib/dist/context/index.js +2 -0
  48. package/lib/dist/controller/camera/index.js +2 -0
  49. package/lib/dist/controller/camera/orbit.d.ts +79 -4
  50. package/lib/dist/controller/camera/orbit.d.ts.map +1 -1
  51. package/lib/dist/controller/camera/orbit.js +186 -0
  52. package/lib/dist/controller/index.js +2 -0
  53. package/lib/dist/dataset/dataset.d.ts +78 -10
  54. package/lib/dist/dataset/dataset.d.ts.map +1 -1
  55. package/lib/dist/dataset/dataset.js +217 -0
  56. package/lib/dist/dataset/index.js +2 -0
  57. package/lib/dist/debug.js +13 -0
  58. package/lib/dist/event/event.js +13 -0
  59. package/lib/dist/event/index.js +2 -0
  60. package/lib/dist/filter/blur.d.ts +10 -0
  61. package/lib/dist/filter/blur.d.ts.map +1 -0
  62. package/lib/dist/filter/blur.js +42 -0
  63. package/lib/dist/filter/filter.d.ts +39 -0
  64. package/lib/dist/filter/filter.d.ts.map +1 -0
  65. package/lib/dist/filter/filter.js +43 -0
  66. package/lib/dist/filter/hue-rotation.d.ts +12 -0
  67. package/lib/dist/filter/hue-rotation.d.ts.map +1 -0
  68. package/lib/dist/filter/hue-rotation.js +41 -0
  69. package/lib/dist/filter/index.d.ts +4 -0
  70. package/lib/dist/filter/index.d.ts.map +1 -0
  71. package/lib/dist/filter/index.js +4 -0
  72. package/lib/dist/geometry/box.d.ts +10 -0
  73. package/lib/dist/geometry/box.d.ts.map +1 -0
  74. package/lib/dist/geometry/box.js +136 -0
  75. package/lib/dist/geometry/geometry.d.ts +47 -0
  76. package/lib/dist/geometry/geometry.d.ts.map +1 -0
  77. package/lib/dist/geometry/geometry.js +190 -0
  78. package/lib/dist/geometry/index.d.ts +3 -0
  79. package/lib/dist/geometry/index.d.ts.map +1 -0
  80. package/lib/dist/geometry/index.js +3 -0
  81. package/lib/dist/index.d.ts +7 -0
  82. package/lib/dist/index.d.ts.map +1 -1
  83. package/lib/dist/index.js +21 -2
  84. package/lib/dist/input/index.js +4 -0
  85. package/lib/dist/input/inputs.d.ts.map +1 -1
  86. package/lib/dist/input/inputs.js +23 -0
  87. package/lib/dist/input/keyboard.d.ts +3 -0
  88. package/lib/dist/input/keyboard.d.ts.map +1 -1
  89. package/lib/dist/input/keyboard.js +46 -0
  90. package/lib/dist/input/pointer.d.ts +17 -33
  91. package/lib/dist/input/pointer.d.ts.map +1 -1
  92. package/lib/dist/input/pointer.js +138 -0
  93. package/lib/dist/light/index.d.ts +2 -0
  94. package/lib/dist/light/index.d.ts.map +1 -0
  95. package/lib/dist/light/index.js +2 -0
  96. package/lib/dist/light/light.d.ts +16 -0
  97. package/lib/dist/light/light.d.ts.map +1 -0
  98. package/lib/dist/light/light.js +19 -0
  99. package/lib/dist/loader/image.d.ts +4 -0
  100. package/lib/dist/loader/image.d.ts.map +1 -1
  101. package/lib/dist/loader/image.js +31 -0
  102. package/lib/dist/loader/index.js +2 -0
  103. package/lib/dist/material/diffuse.d.ts +28 -0
  104. package/lib/dist/material/diffuse.d.ts.map +1 -0
  105. package/lib/dist/material/diffuse.js +68 -0
  106. package/lib/dist/material/ghost.d.ts +19 -0
  107. package/lib/dist/material/ghost.d.ts.map +1 -0
  108. package/lib/dist/material/ghost.js +25 -0
  109. package/lib/dist/material/index.d.ts +5 -0
  110. package/lib/dist/material/index.d.ts.map +1 -0
  111. package/lib/dist/material/index.js +5 -0
  112. package/lib/dist/material/material.d.ts +29 -0
  113. package/lib/dist/material/material.d.ts.map +1 -0
  114. package/lib/dist/material/material.js +14 -0
  115. package/lib/dist/material/normals.d.ts +13 -0
  116. package/lib/dist/material/normals.d.ts.map +1 -0
  117. package/lib/dist/material/normals.js +20 -0
  118. package/lib/dist/math/index.d.ts +3 -0
  119. package/lib/dist/math/index.d.ts.map +1 -1
  120. package/lib/dist/math/index.js +8 -0
  121. package/lib/dist/math/mat3.d.ts +8 -0
  122. package/lib/dist/math/mat3.d.ts.map +1 -1
  123. package/lib/dist/math/mat3.js +154 -0
  124. package/lib/dist/math/mat4.d.ts +111 -2
  125. package/lib/dist/math/mat4.d.ts.map +1 -1
  126. package/lib/dist/math/mat4.js +402 -0
  127. package/lib/dist/math/mat4.test.js +57 -0
  128. package/lib/dist/math/quat.d.ts +1 -0
  129. package/lib/dist/math/quat.d.ts.map +1 -1
  130. package/lib/dist/math/quat.js +184 -0
  131. package/lib/dist/math/quat.test.js +45 -0
  132. package/lib/dist/math/transfo.d.ts +27 -0
  133. package/lib/dist/math/transfo.d.ts.map +1 -0
  134. package/lib/dist/math/transfo.js +86 -0
  135. package/lib/dist/math/vec2.d.ts +34 -0
  136. package/lib/dist/math/vec2.d.ts.map +1 -0
  137. package/lib/dist/math/vec2.js +119 -0
  138. package/lib/dist/math/vec3.d.ts +24 -13
  139. package/lib/dist/math/vec3.d.ts.map +1 -1
  140. package/lib/dist/math/vec3.js +187 -0
  141. package/lib/dist/math/vec3.test.d.ts +2 -0
  142. package/lib/dist/math/vec3.test.d.ts.map +1 -0
  143. package/lib/dist/math/vec3.test.js +22 -0
  144. package/lib/dist/math/vec4.d.ts +8 -4
  145. package/lib/dist/math/vec4.d.ts.map +1 -1
  146. package/lib/dist/math/vec4.js +152 -0
  147. package/lib/dist/math/vec4.test.js +15 -0
  148. package/lib/dist/painter/axis/axis.d.ts +1 -1
  149. package/lib/dist/painter/axis/axis.d.ts.map +1 -1
  150. package/lib/dist/painter/axis/axis.frag +11 -0
  151. package/lib/dist/painter/axis/axis.js +84 -0
  152. package/lib/dist/painter/axis/axis.vert +21 -0
  153. package/lib/dist/painter/axis/index.js +2 -0
  154. package/lib/dist/painter/background/background.d.ts +5 -1
  155. package/lib/dist/painter/background/background.d.ts.map +1 -1
  156. package/lib/dist/painter/background/background.frag +11 -0
  157. package/lib/dist/painter/background/background.js +63 -0
  158. package/lib/dist/painter/background/background.vert +16 -0
  159. package/lib/dist/painter/background/index.js +2 -0
  160. package/lib/dist/painter/clear.d.ts +11 -6
  161. package/lib/dist/painter/clear.d.ts.map +1 -1
  162. package/lib/dist/painter/clear.js +51 -0
  163. package/lib/dist/painter/depth.d.ts.map +1 -1
  164. package/lib/dist/painter/depth.js +34 -0
  165. package/lib/dist/painter/filter/filter.d.ts +23 -0
  166. package/lib/dist/painter/filter/filter.d.ts.map +1 -0
  167. package/lib/dist/painter/filter/filter.js +76 -0
  168. package/lib/dist/painter/filter/index.d.ts +2 -0
  169. package/lib/dist/painter/filter/index.d.ts.map +1 -0
  170. package/lib/dist/painter/filter/index.js +2 -0
  171. package/lib/dist/painter/framebuffer.d.ts +38 -0
  172. package/lib/dist/painter/framebuffer.d.ts.map +1 -0
  173. package/lib/dist/painter/framebuffer.js +102 -0
  174. package/lib/dist/painter/group.d.ts +4 -0
  175. package/lib/dist/painter/group.d.ts.map +1 -1
  176. package/lib/dist/painter/group.js +59 -0
  177. package/lib/dist/painter/index.d.ts +3 -1
  178. package/lib/dist/painter/index.d.ts.map +1 -1
  179. package/lib/dist/painter/index.js +12 -0
  180. package/lib/dist/painter/logic.d.ts +3 -0
  181. package/lib/dist/painter/logic.d.ts.map +1 -1
  182. package/lib/dist/painter/logic.js +16 -0
  183. package/lib/dist/painter/mesh/gltf/gltf.d.ts +14 -0
  184. package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -0
  185. package/lib/dist/painter/mesh/gltf/gltf.js +93 -0
  186. package/lib/dist/painter/mesh/gltf/index.d.ts +2 -0
  187. package/lib/dist/painter/mesh/gltf/index.d.ts.map +1 -0
  188. package/lib/dist/painter/mesh/gltf/index.js +2 -0
  189. package/lib/dist/painter/mesh/index.d.ts +4 -0
  190. package/lib/dist/painter/mesh/index.d.ts.map +1 -0
  191. package/lib/dist/painter/mesh/index.js +4 -0
  192. package/lib/dist/painter/mesh/mesh/index.d.ts +2 -0
  193. package/lib/dist/painter/mesh/mesh/index.d.ts.map +1 -0
  194. package/lib/dist/painter/mesh/mesh/index.js +2 -0
  195. package/lib/dist/painter/mesh/mesh/mesh.d.ts +32 -0
  196. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -0
  197. package/lib/dist/painter/mesh/mesh/mesh.js +128 -0
  198. package/lib/dist/painter/mesh/normals/index.d.ts +2 -0
  199. package/lib/dist/painter/mesh/normals/index.d.ts.map +1 -0
  200. package/lib/dist/painter/mesh/normals/index.js +2 -0
  201. package/lib/dist/painter/mesh/normals/normals.d.ts +18 -0
  202. package/lib/dist/painter/mesh/normals/normals.d.ts.map +1 -0
  203. package/lib/dist/painter/mesh/normals/normals.js +53 -0
  204. package/lib/dist/painter/mesh/normals/shader.frag +14 -0
  205. package/lib/dist/painter/mesh/normals/shader.vert +18 -0
  206. package/lib/dist/painter/node.d.ts +26 -0
  207. package/lib/dist/painter/node.d.ts.map +1 -0
  208. package/lib/dist/painter/node.js +67 -0
  209. package/lib/dist/painter/painter.d.ts +1 -0
  210. package/lib/dist/painter/painter.d.ts.map +1 -1
  211. package/lib/dist/painter/painter.js +4 -0
  212. package/lib/dist/painter/segments/index.js +2 -0
  213. package/lib/dist/painter/segments/segments.d.ts +56 -17
  214. package/lib/dist/painter/segments/segments.d.ts.map +1 -1
  215. package/lib/dist/painter/segments/segments.frag +12 -0
  216. package/lib/dist/painter/segments/segments.js +196 -0
  217. package/lib/dist/painter/segments/segments.vert +114 -0
  218. package/lib/dist/painter/skybox/index.js +2 -0
  219. package/lib/dist/painter/skybox/skybox.d.ts +2 -2
  220. package/lib/dist/painter/skybox/skybox.d.ts.map +1 -1
  221. package/lib/dist/painter/skybox/skybox.frag +15 -0
  222. package/lib/dist/painter/skybox/skybox.js +59 -0
  223. package/lib/dist/painter/skybox/skybox.vert +10 -0
  224. package/lib/dist/parser/for-each-line.d.ts +3 -0
  225. package/lib/dist/parser/for-each-line.d.ts.map +1 -1
  226. package/lib/dist/parser/for-each-line.js +17 -0
  227. package/lib/dist/parser/gltf/gltf.d.ts +34 -0
  228. package/lib/dist/parser/gltf/gltf.d.ts.map +1 -0
  229. package/lib/dist/parser/gltf/gltf.js +164 -0
  230. package/lib/dist/parser/gltf/index.d.ts +2 -0
  231. package/lib/dist/parser/gltf/index.d.ts.map +1 -0
  232. package/lib/dist/parser/gltf/index.js +2 -0
  233. package/lib/dist/parser/gltf/parser.d.ts +9 -0
  234. package/lib/dist/parser/gltf/parser.d.ts.map +1 -0
  235. package/lib/dist/parser/gltf/parser.js +53 -0
  236. package/lib/dist/parser/index.d.ts +1 -0
  237. package/lib/dist/parser/index.d.ts.map +1 -1
  238. package/lib/dist/parser/index.js +3 -0
  239. package/lib/dist/parser/mesh/wavefront.d.ts +70 -12
  240. package/lib/dist/parser/mesh/wavefront.d.ts.map +1 -1
  241. package/lib/dist/parser/mesh/wavefront.js +246 -0
  242. package/lib/dist/program/index.js +2 -0
  243. package/lib/dist/program/program.d.ts +15 -0
  244. package/lib/dist/program/program.d.ts.map +1 -1
  245. package/lib/dist/program/program.js +220 -0
  246. package/lib/dist/ref-map.d.ts +15 -0
  247. package/lib/dist/ref-map.d.ts.map +1 -1
  248. package/lib/dist/ref-map.js +48 -0
  249. package/lib/dist/resource/index.js +5 -0
  250. package/lib/dist/resource/program.d.ts.map +1 -1
  251. package/lib/dist/resource/program.js +20 -0
  252. package/lib/dist/resource/resource.d.ts +7 -1
  253. package/lib/dist/resource/resource.d.ts.map +1 -1
  254. package/lib/dist/resource/resource.js +48 -0
  255. package/lib/dist/resource/texture2d.d.ts +1 -0
  256. package/lib/dist/resource/texture2d.d.ts.map +1 -1
  257. package/lib/dist/resource/texture2d.js +20 -0
  258. package/lib/dist/resource/textureCube.d.ts.map +1 -1
  259. package/lib/dist/resource/textureCube.js +17 -0
  260. package/lib/dist/shader/code.d.ts +12 -0
  261. package/lib/dist/shader/code.d.ts.map +1 -0
  262. package/lib/dist/shader/code.js +32 -0
  263. package/lib/dist/shader/fragment.d.ts +23 -0
  264. package/lib/dist/shader/fragment.d.ts.map +1 -0
  265. package/lib/dist/shader/fragment.js +37 -0
  266. package/lib/dist/shader/vertex.d.ts +23 -0
  267. package/lib/dist/shader/vertex.d.ts.map +1 -0
  268. package/lib/dist/shader/vertex.js +35 -0
  269. package/lib/dist/texture/index.js +3 -0
  270. package/lib/dist/texture/texture2d.d.ts +4 -3
  271. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  272. package/lib/dist/texture/texture2d.js +132 -0
  273. package/lib/dist/texture/textureCube.d.ts.map +1 -1
  274. package/lib/dist/texture/textureCube.js +87 -0
  275. package/lib/dist/types/animation.d.ts +20 -0
  276. package/lib/dist/types/animation.d.ts.map +1 -0
  277. package/lib/dist/types/animation.js +2 -0
  278. package/lib/dist/types/arrays.d.ts +33 -0
  279. package/lib/dist/types/arrays.d.ts.map +1 -0
  280. package/lib/dist/types/arrays.js +2 -0
  281. package/lib/dist/types/context.d.ts +7 -2
  282. package/lib/dist/types/context.d.ts.map +1 -1
  283. package/lib/dist/types/context.js +2 -0
  284. package/lib/dist/types/gltf.d.ts +200 -0
  285. package/lib/dist/types/gltf.d.ts.map +1 -0
  286. package/lib/dist/types/gltf.js +117 -0
  287. package/lib/dist/types/guards.d.ts +25 -0
  288. package/lib/dist/types/guards.d.ts.map +1 -0
  289. package/lib/dist/types/guards.js +218 -0
  290. package/lib/dist/types/index.d.ts +2 -0
  291. package/lib/dist/types/index.d.ts.map +1 -1
  292. package/lib/dist/types/index.js +10 -0
  293. package/lib/dist/types/input-keyboard.d.ts +3 -0
  294. package/lib/dist/types/input-keyboard.d.ts.map +1 -1
  295. package/lib/dist/types/input-keyboard.js +2 -0
  296. package/lib/dist/types/input-pointer.d.ts +33 -20
  297. package/lib/dist/types/input-pointer.d.ts.map +1 -1
  298. package/lib/dist/types/input-pointer.js +2 -0
  299. package/lib/dist/types/mesh.d.ts +10 -0
  300. package/lib/dist/types/mesh.d.ts.map +1 -0
  301. package/lib/dist/types/mesh.js +2 -0
  302. package/lib/dist/types/painter.js +2 -0
  303. package/lib/dist/types/program.d.ts +15 -0
  304. package/lib/dist/types/program.d.ts.map +1 -1
  305. package/lib/dist/types/program.js +2 -0
  306. package/lib/dist/types/texture2d.d.ts +14 -6
  307. package/lib/dist/types/texture2d.d.ts.map +1 -1
  308. package/lib/dist/types/texture2d.js +2 -0
  309. package/lib/dist/types/textureCube.d.ts +39 -0
  310. package/lib/dist/types/textureCube.d.ts.map +1 -1
  311. package/lib/dist/types/textureCube.js +2 -0
  312. package/lib/dist/types/webgl.d.ts +28 -1
  313. package/lib/dist/types/webgl.d.ts.map +1 -1
  314. package/lib/dist/types/webgl.js +2 -0
  315. package/lib/dist/utils/action/camera.d.ts +13 -0
  316. package/lib/dist/utils/action/camera.d.ts.map +1 -0
  317. package/lib/dist/utils/action/camera.js +30 -0
  318. package/lib/dist/utils/action/index.d.ts +2 -0
  319. package/lib/dist/utils/action/index.d.ts.map +1 -0
  320. package/lib/dist/utils/action/index.js +2 -0
  321. package/lib/dist/utils/canvas.d.ts +9 -1
  322. package/lib/dist/utils/canvas.d.ts.map +1 -1
  323. package/lib/dist/utils/canvas.js +23 -0
  324. package/lib/dist/utils/ease-func/ease-func.d.ts +32 -0
  325. package/lib/dist/utils/ease-func/ease-func.d.ts.map +1 -0
  326. package/lib/dist/utils/ease-func/ease-func.js +142 -0
  327. package/lib/dist/utils/ease-func/index.d.ts +2 -0
  328. package/lib/dist/utils/ease-func/index.d.ts.map +1 -0
  329. package/lib/dist/utils/ease-func/index.js +2 -0
  330. package/lib/dist/utils/fetch/fetch.d.ts +2 -0
  331. package/lib/dist/utils/fetch/fetch.d.ts.map +1 -0
  332. package/lib/dist/utils/fetch/fetch.js +5 -0
  333. package/lib/dist/utils/fetch/index.d.ts +2 -0
  334. package/lib/dist/utils/fetch/index.d.ts.map +1 -0
  335. package/lib/dist/utils/fetch/index.js +2 -0
  336. package/lib/dist/utils/fullscreen.d.ts +21 -0
  337. package/lib/dist/utils/fullscreen.d.ts.map +1 -0
  338. package/lib/dist/utils/fullscreen.js +64 -0
  339. package/lib/dist/utils/index.d.ts +4 -0
  340. package/lib/dist/utils/index.d.ts.map +1 -1
  341. package/lib/dist/utils/index.js +6 -0
  342. package/lib/dist/utils/math.d.ts +3 -0
  343. package/lib/dist/utils/math.d.ts.map +1 -0
  344. package/lib/dist/utils/math.js +11 -0
  345. package/lib/dist/utils/ref-map.d.ts +22 -0
  346. package/lib/dist/utils/ref-map.d.ts.map +1 -0
  347. package/lib/dist/utils/ref-map.js +48 -0
  348. package/lib/dist/vao/index.js +2 -0
  349. package/lib/dist/vao/vao.d.ts +7 -1
  350. package/lib/dist/vao/vao.d.ts.map +1 -1
  351. package/lib/dist/vao/vao.js +70 -0
  352. package/package.json +2 -4
  353. package/lib/dist/index.js.map +0 -1
  354. package/lib/dist/mesh/mesh.d.ts +0 -11
  355. package/lib/dist/mesh/mesh.d.ts.map +0 -1
  356. package/lib/dist/painter/isometric/isometric.frag.d.ts +0 -3
  357. package/lib/dist/painter/isometric/isometric.frag.d.ts.map +0 -1
  358. package/lib/dist/painter/isometric/isometric.vert.d.ts +0 -3
  359. package/lib/dist/painter/isometric/isometric.vert.d.ts.map +0 -1
  360. package/lib/dist/painter/primitive/primitive.frag.d.ts +0 -3
  361. package/lib/dist/painter/primitive/primitive.frag.d.ts.map +0 -1
  362. package/lib/dist/painter/primitive/primitive.vert.d.ts +0 -3
  363. package/lib/dist/painter/primitive/primitive.vert.d.ts.map +0 -1
  364. package/lib/dist/painter/sprites/sprites-painter.frag.d.ts +0 -3
  365. package/lib/dist/painter/sprites/sprites-painter.frag.d.ts.map +0 -1
  366. package/lib/dist/painter/sprites/sprites-painter.vert.d.ts +0 -3
  367. package/lib/dist/painter/sprites/sprites-painter.vert.d.ts.map +0 -1
@@ -1,11 +1,22 @@
1
1
  import { TgdMat4, TgdVec3, TgdVec4 } from "../math";
2
2
  import { TgdProgram, TgdProgramOptions } from "../types";
3
+ /**
4
+ * This class helps to manage a WebGLProgram.
5
+ * It will report meaninfull errors and help you with
6
+ * the uniforms.
7
+ */
3
8
  export declare class TgdProgramImpl implements TgdProgram {
4
9
  readonly gl: WebGL2RenderingContext;
10
+ private readonly code;
11
+ /** Access to the real WebGLProgram object. */
5
12
  readonly program: WebGLProgram;
6
13
  private readonly shaders;
7
14
  private readonly uniformsLocations;
8
15
  constructor(gl: WebGL2RenderingContext, code: TgdProgramOptions);
16
+ toCode({ indent }?: Partial<{
17
+ indent: string;
18
+ }>): string;
19
+ hasAttribute(name: string): boolean;
9
20
  getAttribLocation(name: string): number;
10
21
  getUniformLocation(name: string): WebGLUniformLocation;
11
22
  uniform1f(name: string, value: number): void;
@@ -23,6 +34,10 @@ export declare class TgdProgramImpl implements TgdProgram {
23
34
  uniform3ui(name: string, x: number, y: number, z: number): void;
24
35
  uniform4ui(name: string, x: number, y: number, z: number, w: number): void;
25
36
  uniformMatrix4fv(name: string, mat4: TgdMat4): void;
37
+ /**
38
+ * Use the current program.
39
+ * This is equivalent to `gl.useProgram(program)`.
40
+ */
26
41
  use(): void;
27
42
  delete(): void;
28
43
  private createShader;
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAc;AAClD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAe;AAOvD,qBAAa,cAAe,YAAW,UAAU;aAQzB,EAAE,EAAE,sBAAsB;IAN9C,SAAgB,OAAO,EAAE,YAAY,CAAA;IAErC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0C;gBAGxD,EAAE,EAAE,sBAAsB,EAC1C,IAAI,EAAE,iBAAiB;IAuB3B,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IASvC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAmBtD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKrC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAK5C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKvD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAKtC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKlE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAKtC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKrC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAK5C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKvD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKlE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKtC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAK7C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKxD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKnE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAS5C,GAAG;IAKH,MAAM;IAMN,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,oBAAoB;CA0B/B"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE1D;;;;GAIG;AACH,qBAAa,cAAe,YAAW,UAAU;aAQzB,EAAE,EAAE,sBAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAC,IAAI;IARzB,8CAA8C;IAC9C,SAAgB,OAAO,EAAE,YAAY,CAAA;IAErC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0C;gBAGxD,EAAE,EAAE,sBAAsB,EACzB,IAAI,EAAE,iBAAiB;IA2B5C,MAAM,CAAC,EAAE,MAAW,EAAE,GAAE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAM;IAmBxD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMnC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IASvC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAoBtD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKrC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAK5C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKvD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAKtC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKlE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAKtC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKrC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAK5C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKvD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKlE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKtC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAK7C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKxD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKnE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAK5C;;;OAGG;IACH,GAAG;IAKH,MAAM;IAMN,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,oBAAoB;CA0B/B"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * This class helps to manage a WebGLProgram.
3
+ * It will report meaninfull errors and help you with
4
+ * the uniforms.
5
+ */
6
+ export class TgdProgramImpl {
7
+ gl;
8
+ code;
9
+ /** Access to the real WebGLProgram object. */
10
+ program;
11
+ shaders;
12
+ uniformsLocations;
13
+ constructor(gl, code) {
14
+ this.gl = gl;
15
+ this.code = code;
16
+ const prg = gl.createProgram();
17
+ if (!prg)
18
+ throw Error("Unable to create WebGLProgram!");
19
+ const vertShader = this.createShader("VERTEX_SHADER", code.vert);
20
+ gl.attachShader(prg, vertShader);
21
+ const fragShader = this.createShader("FRAGMENT_SHADER", code.frag);
22
+ gl.attachShader(prg, fragShader);
23
+ gl.linkProgram(prg);
24
+ if (!gl.getProgramParameter(prg, gl.LINK_STATUS)) {
25
+ const info = gl.getProgramInfoLog(prg) ?? "";
26
+ console.warn(info);
27
+ const errorLines = getErrorLines(info);
28
+ logCode("Vertex Shader", code.vert, errorLines);
29
+ logCode("Fragment Shader", code.frag, errorLines);
30
+ throw new Error("Could NOT link WebGL2 program!\n" + info);
31
+ }
32
+ this.program = prg;
33
+ this.shaders = [vertShader, fragShader];
34
+ this.uniformsLocations = this.getUniformsLocations();
35
+ gl.detachShader(prg, vertShader);
36
+ gl.deleteShader(vertShader);
37
+ gl.detachShader(prg, fragShader);
38
+ gl.deleteShader(fragShader);
39
+ }
40
+ toCode({ indent = "" } = {}) {
41
+ const lines = [
42
+ `function createProgram(gl: WebGL2RenderingContext) {`,
43
+ ` const prg = gl.createProgram()`,
44
+ ` const vertexShader = gl.createShader(gl.VERTEX_SHADER)`,
45
+ ` gl.shaderSource(vertexShader, \`${this.code.vert}\`)`,
46
+ ` gl.compileShader(vertexShader)`,
47
+ ` const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER)`,
48
+ ` gl.shaderSource(fragmentShader, \`${this.code.frag}\`)`,
49
+ ` gl.compileShader(fragmentShader)`,
50
+ ` gl.attachShader(prg, vertexShader)`,
51
+ ` gl.attachShader(prg, fragmentShader)`,
52
+ ` gl.linkProgram(prg)`,
53
+ ` return prg`,
54
+ `}`,
55
+ ];
56
+ return lines.map(line => `${indent}${line}`).join("\n");
57
+ }
58
+ hasAttribute(name) {
59
+ const { gl, program } = this;
60
+ const loc = gl.getAttribLocation(program, name);
61
+ return loc >= 0;
62
+ }
63
+ getAttribLocation(name) {
64
+ const { gl, program } = this;
65
+ const loc = gl.getAttribLocation(program, name);
66
+ if (loc < 0) {
67
+ throw Error(`Attribute "${name}" not found!`);
68
+ }
69
+ return loc;
70
+ }
71
+ getUniformLocation(name) {
72
+ const { uniformsLocations } = this;
73
+ const names = Object.keys(uniformsLocations);
74
+ if (name.length === 0) {
75
+ console.warn(`Uniform "${name}" has not been found: there is no active uniform in this program!`);
76
+ return 0;
77
+ }
78
+ const location = uniformsLocations[name];
79
+ if (!location) {
80
+ console.warn(`No active uniform found with name "${name}"!\nAvailable names are: ${names.join(", ")}.`);
81
+ }
82
+ return location;
83
+ }
84
+ uniform1f(name, value) {
85
+ const { gl } = this;
86
+ gl.uniform1f(this.getUniformLocation(name), value);
87
+ }
88
+ uniform2f(name, x, y) {
89
+ const { gl } = this;
90
+ gl.uniform2f(this.getUniformLocation(name), x, y);
91
+ }
92
+ uniform3f(name, x, y, z) {
93
+ const { gl } = this;
94
+ gl.uniform3f(this.getUniformLocation(name), x, y, z);
95
+ }
96
+ uniform3fv(name, vec3) {
97
+ const { gl } = this;
98
+ gl.uniform3fv(this.getUniformLocation(name), vec3);
99
+ }
100
+ uniform4f(name, x, y, z, w) {
101
+ const { gl } = this;
102
+ gl.uniform4f(this.getUniformLocation(name), x, y, z, w);
103
+ }
104
+ uniform4fv(name, vec4) {
105
+ const { gl } = this;
106
+ gl.uniform4fv(this.getUniformLocation(name), vec4);
107
+ }
108
+ uniform1i(name, value) {
109
+ const { gl } = this;
110
+ gl.uniform1i(this.getUniformLocation(name), value);
111
+ }
112
+ uniform2i(name, x, y) {
113
+ const { gl } = this;
114
+ gl.uniform2i(this.getUniformLocation(name), x, y);
115
+ }
116
+ uniform3i(name, x, y, z) {
117
+ const { gl } = this;
118
+ gl.uniform3i(this.getUniformLocation(name), x, y, z);
119
+ }
120
+ uniform4i(name, x, y, z, w) {
121
+ const { gl } = this;
122
+ gl.uniform4i(this.getUniformLocation(name), x, y, z, w);
123
+ }
124
+ uniform1ui(name, value) {
125
+ const { gl } = this;
126
+ gl.uniform1ui(this.getUniformLocation(name), value);
127
+ }
128
+ uniform2ui(name, x, y) {
129
+ const { gl } = this;
130
+ gl.uniform2ui(this.getUniformLocation(name), x, y);
131
+ }
132
+ uniform3ui(name, x, y, z) {
133
+ const { gl } = this;
134
+ gl.uniform3ui(this.getUniformLocation(name), x, y, z);
135
+ }
136
+ uniform4ui(name, x, y, z, w) {
137
+ const { gl } = this;
138
+ gl.uniform4ui(this.getUniformLocation(name), x, y, z, w);
139
+ }
140
+ uniformMatrix4fv(name, mat4) {
141
+ const { gl } = this;
142
+ gl.uniformMatrix4fv(this.getUniformLocation(name), false, mat4);
143
+ }
144
+ /**
145
+ * Use the current program.
146
+ * This is equivalent to `gl.useProgram(program)`.
147
+ */
148
+ use() {
149
+ const { gl, program } = this;
150
+ gl.useProgram(program);
151
+ }
152
+ delete() {
153
+ const { gl } = this;
154
+ this.shaders.forEach(shader => gl.deleteShader(shader));
155
+ gl.deleteProgram(this.program);
156
+ }
157
+ createShader(type, code) {
158
+ const { gl } = this;
159
+ const shader = gl.createShader(gl[type]);
160
+ if (!shader)
161
+ throw Error(`Unable to create a WebGLShader of type "${type}"!`);
162
+ gl.shaderSource(shader, code);
163
+ gl.compileShader(shader);
164
+ const info = gl.getShaderInfoLog(shader);
165
+ if (info) {
166
+ console.error(`Error in ${type} code:`, info);
167
+ const errorLines = getErrorLines(info);
168
+ logCode(type, code, errorLines);
169
+ throw Error(`Unable to compile ${type}!`);
170
+ }
171
+ return shader;
172
+ }
173
+ getUniformsLocations() {
174
+ const { gl, program } = this;
175
+ const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
176
+ if (typeof count !== "number")
177
+ throw Error("Unable to get the number of uniforms in a WebGLProgram!");
178
+ const uniforms = {};
179
+ for (let index = 0; index < count; index++) {
180
+ const uniform = gl.getActiveUniform(program, index);
181
+ if (!uniform)
182
+ continue;
183
+ const location = gl.getUniformLocation(program, uniform.name);
184
+ if (location === null)
185
+ throw Error(`Unable to get location for uniform "${uniform.name}"!`);
186
+ uniforms[uniform.name] = location;
187
+ }
188
+ return uniforms;
189
+ }
190
+ }
191
+ const RX_ERROR_LINE = /^ERROR:[ \t]+([0-9]+):([0-9]+):/g;
192
+ function getErrorLines(message) {
193
+ const lines = [];
194
+ const messages = [];
195
+ for (const line of message.split("\n")) {
196
+ RX_ERROR_LINE.lastIndex = -1;
197
+ const match = RX_ERROR_LINE.exec(line);
198
+ if (match) {
199
+ lines.push(parseInt(match[2], 10));
200
+ messages.push(line.substring(match[0].length).trim());
201
+ }
202
+ }
203
+ return { lines, messages };
204
+ }
205
+ function style(background, bold = false) {
206
+ return `color:#fff;background:${background};font-family:monospace;font-size:80%;font-weight:${bold ? "bolder" : "100"}`;
207
+ }
208
+ function logCode(title, code, errors) {
209
+ console.log(`%c${title}`, "font-weight:bolder;font-size:120%");
210
+ code.split("\n").forEach((line, index) => {
211
+ const num = index + 1;
212
+ const prefix = (num * 1e-4).toFixed(4).substring(2);
213
+ const background = errors.lines.includes(num) ? "#f00" : "#000";
214
+ console.log(`%c${prefix} %c${line}`, style(background), style(background, true));
215
+ if (errors.lines.includes(num)) {
216
+ console.error(errors.messages[errors.lines.indexOf(num)]);
217
+ }
218
+ });
219
+ }
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9ncmFtL3Byb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBUUg7SUFDQztJQVJyQiw4Q0FBOEM7SUFDOUIsT0FBTyxDQUFjO0lBRXBCLE9BQU8sQ0FBZTtJQUN0QixpQkFBaUIsQ0FBMEM7SUFFNUUsWUFDb0IsRUFBMEIsRUFDekIsSUFBdUI7UUFEeEIsT0FBRSxHQUFGLEVBQUUsQ0FBd0I7UUFDekIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFFeEMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQzlCLElBQUksQ0FBQyxHQUFHO1lBQUUsTUFBTSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtRQUV2RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDaEUsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDaEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEUsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDaEMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFBO1lBQzVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbEIs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LEtBQUssRUFBRSxFQUFFO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDckIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNuRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FDUCxLQUFLLE1BQU0sT0FBTyxJQUFJLEVBQUUsRUFDeEIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUNqQixLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUMxQixDQUFBO1FBQ0QsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDN0QsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyJ9
@@ -1,7 +1,22 @@
1
+ /**
2
+ * A Reference Map counts how many time you want to insert the same key.
3
+ * And it tells you when you delete it as many times.
4
+ */
1
5
  export default class RefMap<KeyType, ValType> {
2
6
  private readonly map;
3
7
  private readonly count;
8
+ /**
9
+ * If `key` is already stored in the map,
10
+ * we add a reference to the mapped value and return it.
11
+ * If not, we create the mapped value by calling `factory()`.
12
+ */
4
13
  add(key: KeyType, factory: () => ValType): ValType;
14
+ /**
15
+ * Delete a reference to `key`.
16
+ * If the last reference has been removed,
17
+ * then return the mapped value, otherwise
18
+ * return `undefined`.
19
+ */
5
20
  delete(key: KeyType): ValType | undefined;
6
21
  }
7
22
  //# sourceMappingURL=ref-map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ref-map.d.ts","sourceRoot":"","sources":["../src/ref-map.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAOnD,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,GAAG,OAAO;IAqBlD,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;CAe5C"}
1
+ {"version":3,"file":"ref-map.d.ts","sourceRoot":"","sources":["../src/ref-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAEnD;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,GAAG,OAAO;IAelD;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;CAe5C"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * A Reference Map counts how many time you want to insert the same key.
3
+ * And it tells you when you delete it as many times.
4
+ */
5
+ export default class RefMap {
6
+ map = new Map();
7
+ count = new Map();
8
+ /**
9
+ * If `key` is already stored in the map,
10
+ * we add a reference to the mapped value and return it.
11
+ * If not, we create the mapped value by calling `factory()`.
12
+ */
13
+ add(key, factory) {
14
+ const { map, count } = this;
15
+ if (count.has(key)) {
16
+ count.set(key, 1 + (count.get(key) ?? 0));
17
+ const curVal = map.get(key);
18
+ if (!curVal)
19
+ throw Error("[CountMap] Map should not be empty!");
20
+ return curVal;
21
+ }
22
+ const newVal = factory();
23
+ map.set(key, newVal);
24
+ count.set(key, 1);
25
+ return newVal;
26
+ }
27
+ /**
28
+ * Delete a reference to `key`.
29
+ * If the last reference has been removed,
30
+ * then return the mapped value, otherwise
31
+ * return `undefined`.
32
+ */
33
+ delete(key) {
34
+ const { map, count } = this;
35
+ if (!map.has(key))
36
+ return;
37
+ const newCount = (count.get(key) ?? 0) - 1;
38
+ if (newCount > 0) {
39
+ count.set(key, newCount);
40
+ return;
41
+ }
42
+ const value = map.get(key);
43
+ map.delete(key);
44
+ count.delete(key);
45
+ return value;
46
+ }
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWYtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxPQUFPLE9BQU8sTUFBTTtJQUNOLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQTtJQUNqQyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUE7SUFFbkQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxHQUFZLEVBQUUsT0FBc0I7UUFDcEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDM0IsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3pDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDM0IsSUFBSSxDQUFDLE1BQU07Z0JBQUUsTUFBTSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQTtZQUMvRCxPQUFPLE1BQU0sQ0FBQTtRQUNqQixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUE7UUFDeEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDcEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDakIsT0FBTyxNQUFNLENBQUE7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEdBQVk7UUFDZixNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQTtRQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFNO1FBRXpCLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDMUMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUN4QixPQUFNO1FBQ1YsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDMUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNmLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDakIsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztDQUNKIn0=
@@ -0,0 +1,5 @@
1
+ export * from "./program.js";
2
+ export * from "./resource.js";
3
+ export * from "./texture2d.js";
4
+ export * from "./textureCube.js";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVzb3VyY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxlQUFlLENBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/resource/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAe;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGxC,qBAAa,kBAAmB,SAAQ,WAAW,CAC/C,iBAAiB,EACjB,UAAU,CACb;aAC+B,EAAE,EAAE,sBAAsB;gBAA1B,EAAE,EAAE,sBAAsB;IAItD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU;IAI5D,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAIjD,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;CAG/D"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/resource/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGxC,qBAAa,kBAAmB,SAAQ,WAAW,CAC/C,iBAAiB,EACjB,UAAU,CACb;aAC+B,EAAE,EAAE,sBAAsB;gBAA1B,EAAE,EAAE,sBAAsB;IAItD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU;IAI5D,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAIjD,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;CAG/D"}
@@ -0,0 +1,20 @@
1
+ import { TgdResource } from "./resource.js";
2
+ import { TgdProgramImpl } from "./../program/index.js";
3
+ export class TgdResourceProgram extends TgdResource {
4
+ gl;
5
+ constructor(gl) {
6
+ super();
7
+ this.gl = gl;
8
+ }
9
+ actualCreate(input) {
10
+ return new TgdProgramImpl(this.gl, input);
11
+ }
12
+ actualDelete(program) {
13
+ if (program instanceof TgdProgramImpl)
14
+ program.delete();
15
+ }
16
+ makeKeyFromInput(input) {
17
+ return JSON.stringify(input);
18
+ }
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXNvdXJjZS9wcm9ncmFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUU3QyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FHdkM7SUFDK0I7SUFBNUIsWUFBNEIsRUFBMEI7UUFDbEQsS0FBSyxFQUFFLENBQUE7UUFEaUIsT0FBRSxHQUFGLEVBQUUsQ0FBd0I7SUFFdEQsQ0FBQztJQUVTLFlBQVksQ0FBQyxLQUF3QjtRQUMzQyxPQUFPLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVTLFlBQVksQ0FBQyxPQUFtQjtRQUN0QyxJQUFJLE9BQU8sWUFBWSxjQUFjO1lBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQzNELENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxLQUF3QjtRQUMvQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEMsQ0FBQztDQUNKIn0=
@@ -1,3 +1,9 @@
1
+ /**
2
+ * This class deals with WebGL resources.
3
+ *
4
+ * It prevents you from creatng multiple times the
5
+ * same resource by holding an internal ref counter.
6
+ */
1
7
  export declare abstract class TgdResource<InputType, OutputType> {
2
8
  private readonly keys;
3
9
  private readonly objects;
@@ -6,6 +12,6 @@ export declare abstract class TgdResource<InputType, OutputType> {
6
12
  delete(object: OutputType): void;
7
13
  protected abstract actualCreate(input: InputType, id: string): OutputType;
8
14
  protected abstract actualDelete(object: OutputType): void;
9
- protected makeKeyFromInput(input: InputType): string | null;
15
+ protected makeKeyFromInput(_input: InputType): string | null;
10
16
  }
11
17
  //# sourceMappingURL=resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/resource/resource.ts"],"names":[],"mappings":"AAQA,8BAAsB,WAAW,CAAC,SAAS,EAAE,UAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IAEvD,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU;IAkBjD,MAAM,CAAC,MAAM,EAAE,UAAU;IAkBzB,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU;IAEzE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAEzD,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI;CAG9D"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/resource/resource.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,8BAAsB,WAAW,CAAC,SAAS,EAAE,UAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IAEvD,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU;IAkBjD,MAAM,CAAC,MAAM,EAAE,UAAU;IAkBzB,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU;IAEzE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAEzD,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI;CAG/D"}
@@ -0,0 +1,48 @@
1
+ let counter = 1;
2
+ /**
3
+ * This class deals with WebGL resources.
4
+ *
5
+ * It prevents you from creatng multiple times the
6
+ * same resource by holding an internal ref counter.
7
+ */
8
+ export class TgdResource {
9
+ keys = new Map();
10
+ objects = new Map();
11
+ references = new Map();
12
+ create(input, id) {
13
+ const key = id ?? this.makeKeyFromInput(input) ?? `TgdResource:${counter++}`;
14
+ const refCount = this.references.get(key) ?? 0;
15
+ if (refCount < 1) {
16
+ const object = this.actualCreate(input, key);
17
+ this.keys.set(object, key);
18
+ this.objects.set(key, object);
19
+ this.references.set(key, 1);
20
+ return object;
21
+ }
22
+ const object = this.objects.get(key);
23
+ if (!object)
24
+ throw Error("[TgdResource.create] Panic!");
25
+ this.references.set(key, refCount + 1);
26
+ return object;
27
+ }
28
+ delete(object) {
29
+ const key = this.keys.get(object);
30
+ if (!key)
31
+ return;
32
+ const refCount = this.references.get(key) ?? 0;
33
+ if (refCount < 1)
34
+ return;
35
+ if (refCount > 1) {
36
+ this.references.set(key, refCount - 1);
37
+ return;
38
+ }
39
+ this.keys.delete(object);
40
+ this.objects.delete(key);
41
+ this.references.delete(key);
42
+ this.actualDelete(object);
43
+ }
44
+ makeKeyFromInput(_input) {
45
+ return null;
46
+ }
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVzb3VyY2UvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFBO0FBRWY7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQWdCLFdBQVc7SUFDWixJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUE7SUFDcEMsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFBO0lBQ3ZDLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQTtJQUV2RCxNQUFNLENBQUMsS0FBZ0IsRUFBRSxFQUFXO1FBQ2hDLE1BQU0sR0FBRyxHQUNMLEVBQUUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksZUFBZSxPQUFPLEVBQUUsRUFBRSxDQUFBO1FBQ3BFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM5QyxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQzNCLE9BQU8sTUFBTSxDQUFBO1FBQ2pCLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNwQyxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUE7UUFFdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN0QyxPQUFPLE1BQU0sQ0FBQTtJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWtCO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2pDLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTTtRQUVoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUMsSUFBSSxRQUFRLEdBQUcsQ0FBQztZQUFFLE9BQU07UUFFeEIsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQ3RDLE9BQU07UUFDVixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBTVMsZ0JBQWdCLENBQUMsTUFBaUI7UUFDeEMsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0NBQ0oifQ==
@@ -3,6 +3,7 @@ import { TgdTexture2D, TgdTexture2DOptions, TgdContextInterface } from "../types
3
3
  export declare class TgdResourceTexture2D extends TgdResource<Partial<TgdTexture2DOptions>, TgdTexture2D> {
4
4
  private readonly context;
5
5
  constructor(context: TgdContextInterface);
6
+ getDefaultEmpty(): TgdTexture2D;
6
7
  protected actualCreate(input: Partial<TgdTexture2DOptions>, id: string): TgdTexture2D;
7
8
  protected actualDelete(object: TgdTexture2D): void;
8
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"texture2d.d.ts","sourceRoot":"","sources":["../../src/resource/texture2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAA2B;AAEjD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAe;AAEhF,qBAAa,oBAAqB,SAAQ,WAAW,CACjD,OAAO,CAAC,mBAAmB,CAAC,EAC5B,YAAY,CACf;IACe,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,mBAAmB;IAIzD,SAAS,CAAC,YAAY,CAClB,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,EACnC,EAAE,EAAE,MAAM,GACX,YAAY;IAIf,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;CAGrD"}
1
+ {"version":3,"file":"texture2d.d.ts","sourceRoot":"","sources":["../../src/resource/texture2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EACH,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACtB,MAAM,YAAY,CAAA;AAEnB,qBAAa,oBAAqB,SAAQ,WAAW,CACjD,OAAO,CAAC,mBAAmB,CAAC,EAC5B,YAAY,CACf;IACe,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,mBAAmB;IAIzD,eAAe,IAAI,YAAY;IAI/B,SAAS,CAAC,YAAY,CAClB,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,EACnC,EAAE,EAAE,MAAM,GACX,YAAY;IAIf,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;CAGrD"}
@@ -0,0 +1,20 @@
1
+ import { TgdResource } from "./resource.js";
2
+ import { TgdTexture2DImpl } from "./../texture/index.js";
3
+ export class TgdResourceTexture2D extends TgdResource {
4
+ context;
5
+ constructor(context) {
6
+ super();
7
+ this.context = context;
8
+ }
9
+ getDefaultEmpty() {
10
+ return this.create({ width: 1, height: 1 }, "@tgd/DefaultTexture2D");
11
+ }
12
+ actualCreate(input, id) {
13
+ return new TgdTexture2DImpl(this.context, id, input);
14
+ }
15
+ actualDelete(object) {
16
+ if (object instanceof TgdTexture2DImpl)
17
+ object.delete();
18
+ }
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZTJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jlc291cmNlL3RleHR1cmUyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBTy9DLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxXQUd6QztJQUNnQztJQUE3QixZQUE2QixPQUE0QjtRQUNyRCxLQUFLLEVBQUUsQ0FBQTtRQURrQixZQUFPLEdBQVAsT0FBTyxDQUFxQjtJQUV6RCxDQUFDO0lBRUQsZUFBZTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLHVCQUF1QixDQUFDLENBQUE7SUFDeEUsQ0FBQztJQUVTLFlBQVksQ0FDbEIsS0FBbUMsRUFDbkMsRUFBVTtRQUVWLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBRVMsWUFBWSxDQUFDLE1BQW9CO1FBQ3ZDLElBQUksTUFBTSxZQUFZLGdCQUFnQjtZQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUMzRCxDQUFDO0NBQ0oifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"textureCube.d.ts","sourceRoot":"","sources":["../../src/resource/textureCube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAA2B;AAEjD,OAAO,EACH,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACtB,iBAAe;AAEhB,qBAAa,sBAAuB,SAAQ,WAAW,CACnD,qBAAqB,EACrB,cAAc,CACjB;aAC+B,OAAO,EAAE,mBAAmB;gBAA5B,OAAO,EAAE,mBAAmB;IAIxD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,qBAAqB,GAAG,cAAc;IAIpE,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;CAGvD"}
1
+ {"version":3,"file":"textureCube.d.ts","sourceRoot":"","sources":["../../src/resource/textureCube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EACH,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,YAAY,CAAA;AAEnB,qBAAa,sBAAuB,SAAQ,WAAW,CACnD,qBAAqB,EACrB,cAAc,CACjB;aAC+B,OAAO,EAAE,mBAAmB;gBAA5B,OAAO,EAAE,mBAAmB;IAIxD,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,qBAAqB,GAAG,cAAc;IAIpE,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;CAGvD"}
@@ -0,0 +1,17 @@
1
+ import { TgdResource } from "./resource.js";
2
+ import { TgdTextureCubeImpl } from "./../texture/index.js";
3
+ export class TgdResourceTextureCube extends TgdResource {
4
+ context;
5
+ constructor(context) {
6
+ super();
7
+ this.context = context;
8
+ }
9
+ actualCreate(input) {
10
+ return new TgdTextureCubeImpl(this.context, input);
11
+ }
12
+ actualDelete(object) {
13
+ if (object instanceof TgdTextureCubeImpl)
14
+ object.delete();
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZUN1YmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVzb3VyY2UvdGV4dHVyZUN1YmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQU9qRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsV0FHM0M7SUFDK0I7SUFBNUIsWUFBNEIsT0FBNEI7UUFDcEQsS0FBSyxFQUFFLENBQUE7UUFEaUIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7SUFFeEQsQ0FBQztJQUVTLFlBQVksQ0FBQyxLQUE0QjtRQUMvQyxPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBRVMsWUFBWSxDQUFDLE1BQXNCO1FBQ3pDLElBQUksTUFBTSxZQUFZLGtCQUFrQjtZQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUM3RCxDQUFDO0NBQ0oifQ==
@@ -0,0 +1,12 @@
1
+ import { WebglAttributeType, WebglUniformType } from "..";
2
+ export interface Variables<Type extends WebglAttributeType | WebglUniformType> {
3
+ [name: string]: Type;
4
+ }
5
+ export interface Functions {
6
+ [name: string]: CodeBloc;
7
+ }
8
+ export type CodeBloc = string | null | CodeBloc[];
9
+ export declare function stringifyCode(code: CodeBloc, indent?: string): string;
10
+ export declare function vars<Type extends WebglAttributeType | WebglUniformType>(def: Variables<Type>, prefix: string, comment?: string): CodeBloc[];
11
+ export declare function funcs(def: Functions, comment?: string): CodeBloc[];
12
+ //# sourceMappingURL=code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../src/shader/code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAA;AAEzD,MAAM,WAAW,SAAS,CAAC,IAAI,SAAS,kBAAkB,GAAG,gBAAgB;IACzE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,SAAS;IACtB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,QAAQ,EAAE,CAAA;AAEjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAK,GAAG,MAAM,CAWjE;AAED,wBAAgB,IAAI,CAAC,IAAI,SAAS,kBAAkB,GAAG,gBAAgB,EACnE,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,SAA6C,GACrD,QAAQ,EAAE,CAQZ;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,SAAmB,GAAG,QAAQ,EAAE,CAS5E"}
@@ -0,0 +1,32 @@
1
+ export function stringifyCode(code, indent = "") {
2
+ if (typeof code === "string")
3
+ return `${indent}${code}`;
4
+ if (!code)
5
+ return "";
6
+ const subIndent = `${indent} `;
7
+ return code
8
+ .filter(item => item !== null)
9
+ .filter(item => !Array.isArray(item) || item.length > 0)
10
+ .map(line => stringifyCode(line, subIndent))
11
+ .join("\n");
12
+ }
13
+ export function vars(def, prefix, comment = "----------------------------------------") {
14
+ const names = Object.keys(def);
15
+ if (names.length === 0)
16
+ return [];
17
+ return [
18
+ `// ${comment}`,
19
+ ...names.map(name => `${prefix} ${def[name]} ${name};`),
20
+ ];
21
+ }
22
+ export function funcs(def, comment = "Util functions") {
23
+ const names = Object.keys(def);
24
+ if (names.length === 0)
25
+ return [];
26
+ const result = [`// ${comment}`];
27
+ names.forEach(name => {
28
+ result.push(`${name} {`, def[name], "}", "");
29
+ });
30
+ return result;
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFkZXIvY29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQWMsRUFBRSxNQUFNLEdBQUcsRUFBRTtJQUNyRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFBO0lBRXZELElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFFcEIsTUFBTSxTQUFTLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQTtJQUNqQyxPQUFPLElBQUk7U0FDTixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO1NBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUN2RCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLElBQUksQ0FDaEIsR0FBb0IsRUFDcEIsTUFBYyxFQUNkLE9BQU8sR0FBRywwQ0FBMEM7SUFFcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFBO0lBRWpDLE9BQU87UUFDSCxNQUFNLE9BQU8sRUFBRTtRQUNmLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQztLQUMxRCxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQUMsR0FBYyxFQUFFLE9BQU8sR0FBRyxnQkFBZ0I7SUFDNUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFBO0lBRWpDLE1BQU0sTUFBTSxHQUFlLENBQUMsTUFBTSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzVDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDaEQsQ0FBQyxDQUFDLENBQUE7SUFDRixPQUFPLE1BQU0sQ0FBQTtBQUNqQixDQUFDIn0=
@@ -0,0 +1,23 @@
1
+ import { WebglAttributeType, WebglUniformType } from "..";
2
+ import { CodeBloc, Functions, Variables } from "./code";
3
+ /**
4
+ * @see https://registry.khronos.org/OpenGL/specs/es/3.0/GLSL_ES_Specification_3.00.pdf
5
+ */
6
+ export declare class TgdShaderFragment {
7
+ precision: "lowp" | "mediump" | "highp";
8
+ uniforms: Variables<WebglUniformType>;
9
+ varying: Variables<WebglAttributeType>;
10
+ outputs: Variables<WebglAttributeType>;
11
+ functions: Functions;
12
+ mainCode: CodeBloc;
13
+ constructor({ precision, uniforms, outputs, varying, functions, mainCode, }?: Partial<{
14
+ precision: "lowp" | "mediump" | "highp";
15
+ uniforms: Variables<WebglUniformType>;
16
+ outputs: Variables<WebglAttributeType>;
17
+ varying: Variables<WebglAttributeType>;
18
+ functions: Functions;
19
+ mainCode: CodeBloc;
20
+ }>);
21
+ get code(): string;
22
+ }
23
+ //# sourceMappingURL=fragment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fragment.d.ts","sourceRoot":"","sources":["../../src/shader/fragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAA;AACzD,OAAO,EACH,QAAQ,EACR,SAAS,EACT,SAAS,EAIZ,MAAM,QAAQ,CAAA;AAEf;;GAEG;AACH,qBAAa,iBAAiB;IACnB,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAY;IACnD,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAA;IACrC,OAAO,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAA;IACtC,OAAO,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAA;IACtC,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;gBAEb,EACR,SAAqB,EACrB,QAAa,EACb,OAEC,EACD,OAAY,EACZ,SAAc,EACd,QAAgD,GACnD,GAAE,OAAO,CAAC;QACP,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;QACvC,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAA;QACrC,OAAO,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAA;QACtC,OAAO,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAA;QACtC,SAAS,EAAE,SAAS,CAAA;QACpB,QAAQ,EAAE,QAAQ,CAAA;KACrB,CAAM;IASP,IAAI,IAAI,WAaP;CACJ"}