@luma.gl/webgl 8.5.15 → 8.5.16

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 (194) hide show
  1. package/dist/dist.js +732 -848
  2. package/dist/dist.min.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/classes/accessor.js +31 -33
  5. package/dist/es5/classes/accessor.js.map +1 -1
  6. package/dist/es5/classes/buffer.js +24 -26
  7. package/dist/es5/classes/buffer.js.map +1 -1
  8. package/dist/es5/classes/clear.js.map +1 -1
  9. package/dist/es5/classes/copy-and-blit.js +3 -3
  10. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  11. package/dist/es5/classes/framebuffer.js +70 -72
  12. package/dist/es5/classes/framebuffer.js.map +1 -1
  13. package/dist/es5/classes/program-configuration.js.map +1 -1
  14. package/dist/es5/classes/program.js +11 -13
  15. package/dist/es5/classes/program.js.map +1 -1
  16. package/dist/es5/classes/query.js +47 -49
  17. package/dist/es5/classes/query.js.map +1 -1
  18. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  19. package/dist/es5/classes/renderbuffer.js +37 -39
  20. package/dist/es5/classes/renderbuffer.js.map +1 -1
  21. package/dist/es5/classes/resource.js +13 -15
  22. package/dist/es5/classes/resource.js.map +1 -1
  23. package/dist/es5/classes/shader.js +38 -44
  24. package/dist/es5/classes/shader.js.map +1 -1
  25. package/dist/es5/classes/texture-2d.js +16 -17
  26. package/dist/es5/classes/texture-2d.js.map +1 -1
  27. package/dist/es5/classes/texture-3d.js +15 -17
  28. package/dist/es5/classes/texture-3d.js.map +1 -1
  29. package/dist/es5/classes/texture-cube.js +10 -12
  30. package/dist/es5/classes/texture-cube.js.map +1 -1
  31. package/dist/es5/classes/texture-formats.js +1 -1
  32. package/dist/es5/classes/texture-formats.js.map +1 -1
  33. package/dist/es5/classes/texture.js +24 -26
  34. package/dist/es5/classes/texture.js.map +1 -1
  35. package/dist/es5/classes/transform-feedback.js +16 -22
  36. package/dist/es5/classes/transform-feedback.js.map +1 -1
  37. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  38. package/dist/es5/classes/uniforms.js +2 -2
  39. package/dist/es5/classes/uniforms.js.map +1 -1
  40. package/dist/es5/classes/vertex-array-object.js +69 -71
  41. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  42. package/dist/es5/classes/vertex-array.js.map +1 -1
  43. package/dist/es5/debug/debug-program-configuration.js +1 -1
  44. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  45. package/dist/es5/debug/debug-uniforms.js +1 -1
  46. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  47. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  48. package/dist/es5/features/check-glsl-extension.js.map +1 -1
  49. package/dist/es5/features/check-old-ie.js.map +1 -1
  50. package/dist/es5/features/features.js +2 -2
  51. package/dist/es5/features/features.js.map +1 -1
  52. package/dist/es5/features/index.js +16 -16
  53. package/dist/es5/features/index.js.map +1 -1
  54. package/dist/es5/features/limits.js +1 -1
  55. package/dist/es5/features/limits.js.map +1 -1
  56. package/dist/es5/features/webgl-features-table.js.map +1 -1
  57. package/dist/es5/features/webgl-limits-table.js.map +1 -1
  58. package/dist/es5/glsl-utils/format-glsl-error.js.map +1 -1
  59. package/dist/es5/glsl-utils/get-shader-name.js.map +1 -1
  60. package/dist/es5/glsl-utils/get-shader-type-name.js.map +1 -1
  61. package/dist/es5/glsl-utils/get-shader-version.js.map +1 -1
  62. package/dist/es5/glsl-utils/index.js +11 -7
  63. package/dist/es5/glsl-utils/index.js.map +1 -1
  64. package/dist/es5/index.js +104 -104
  65. package/dist/es5/index.js.map +1 -1
  66. package/dist/es5/init.d.ts +1 -1
  67. package/dist/es5/init.js +4 -4
  68. package/dist/es5/init.js.map +1 -1
  69. package/dist/es5/utils/array-utils-flat.js +2 -2
  70. package/dist/es5/utils/array-utils-flat.js.map +1 -1
  71. package/dist/es5/utils/assert.js.map +1 -1
  72. package/dist/es5/utils/check-props.js.map +1 -1
  73. package/dist/es5/utils/format-value.js.map +1 -1
  74. package/dist/es5/utils/is-old-ie.js.map +1 -1
  75. package/dist/es5/utils/load-file.js +1 -1
  76. package/dist/es5/utils/load-file.js.map +1 -1
  77. package/dist/es5/utils/stub-methods.js.map +1 -1
  78. package/dist/es5/utils/utils.js +2 -2
  79. package/dist/es5/utils/utils.js.map +1 -1
  80. package/dist/es5/webgl-utils/attribute-utils.js +3 -3
  81. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  82. package/dist/es5/webgl-utils/constants-to-keys.js +1 -1
  83. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  84. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  85. package/dist/es5/webgl-utils/get-error.js +1 -1
  86. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  87. package/dist/es5/webgl-utils/request-animation-frame.js +1 -1
  88. package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
  89. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  90. package/dist/es5/webgl-utils/typed-array-utils.js +1 -1
  91. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  92. package/dist/esm/bundle.js.map +1 -1
  93. package/dist/esm/classes/accessor.js +12 -3
  94. package/dist/esm/classes/accessor.js.map +1 -1
  95. package/dist/esm/classes/buffer.js +41 -28
  96. package/dist/esm/classes/buffer.js.map +1 -1
  97. package/dist/esm/classes/clear.js +14 -12
  98. package/dist/esm/classes/clear.js.map +1 -1
  99. package/dist/esm/classes/copy-and-blit.js +27 -21
  100. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  101. package/dist/esm/classes/framebuffer.js +89 -64
  102. package/dist/esm/classes/framebuffer.js.map +1 -1
  103. package/dist/esm/classes/program-configuration.js.map +1 -1
  104. package/dist/esm/classes/program.js +40 -32
  105. package/dist/esm/classes/program.js.map +1 -1
  106. package/dist/esm/classes/query.js +11 -6
  107. package/dist/esm/classes/query.js.map +1 -1
  108. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  109. package/dist/esm/classes/renderbuffer.js +25 -19
  110. package/dist/esm/classes/renderbuffer.js.map +1 -1
  111. package/dist/esm/classes/resource.js +34 -19
  112. package/dist/esm/classes/resource.js.map +1 -1
  113. package/dist/esm/classes/shader.js +13 -10
  114. package/dist/esm/classes/shader.js.map +1 -1
  115. package/dist/esm/classes/texture-2d.js +2 -1
  116. package/dist/esm/classes/texture-2d.js.map +1 -1
  117. package/dist/esm/classes/texture-3d.js +17 -14
  118. package/dist/esm/classes/texture-3d.js.map +1 -1
  119. package/dist/esm/classes/texture-cube.js +23 -19
  120. package/dist/esm/classes/texture-cube.js.map +1 -1
  121. package/dist/esm/classes/texture-formats.js.map +1 -1
  122. package/dist/esm/classes/texture.js +47 -35
  123. package/dist/esm/classes/texture.js.map +1 -1
  124. package/dist/esm/classes/transform-feedback.js +12 -6
  125. package/dist/esm/classes/transform-feedback.js.map +1 -1
  126. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  127. package/dist/esm/classes/uniforms.js +6 -6
  128. package/dist/esm/classes/uniforms.js.map +1 -1
  129. package/dist/esm/classes/vertex-array-object.js +17 -9
  130. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  131. package/dist/esm/classes/vertex-array.js +17 -7
  132. package/dist/esm/classes/vertex-array.js.map +1 -1
  133. package/dist/esm/debug/debug-program-configuration.js +4 -4
  134. package/dist/esm/debug/debug-program-configuration.js.map +1 -1
  135. package/dist/esm/debug/debug-uniforms.js +16 -14
  136. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  137. package/dist/esm/debug/debug-vertex-array.js +16 -14
  138. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  139. package/dist/esm/features/check-glsl-extension.js +3 -2
  140. package/dist/esm/features/check-glsl-extension.js.map +1 -1
  141. package/dist/esm/features/check-old-ie.js +2 -1
  142. package/dist/esm/features/check-old-ie.js.map +1 -1
  143. package/dist/esm/features/features.js +1 -1
  144. package/dist/esm/features/features.js.map +1 -1
  145. package/dist/esm/features/index.js.map +1 -1
  146. package/dist/esm/features/limits.js.map +1 -1
  147. package/dist/esm/features/webgl-features-table.js +1 -1
  148. package/dist/esm/features/webgl-features-table.js.map +1 -1
  149. package/dist/esm/features/webgl-limits-table.js.map +1 -1
  150. package/dist/esm/glsl-utils/format-glsl-error.js +9 -7
  151. package/dist/esm/glsl-utils/format-glsl-error.js.map +1 -1
  152. package/dist/esm/glsl-utils/get-shader-name.js +2 -1
  153. package/dist/esm/glsl-utils/get-shader-name.js.map +1 -1
  154. package/dist/esm/glsl-utils/get-shader-type-name.js.map +1 -1
  155. package/dist/esm/glsl-utils/get-shader-version.js.map +1 -1
  156. package/dist/esm/glsl-utils/index.js.map +1 -1
  157. package/dist/esm/index.js.map +1 -1
  158. package/dist/esm/init.d.ts +1 -1
  159. package/dist/esm/init.js +4 -4
  160. package/dist/esm/init.js.map +1 -1
  161. package/dist/esm/utils/array-utils-flat.js +7 -6
  162. package/dist/esm/utils/array-utils-flat.js.map +1 -1
  163. package/dist/esm/utils/assert.js.map +1 -1
  164. package/dist/esm/utils/check-props.js +4 -4
  165. package/dist/esm/utils/check-props.js.map +1 -1
  166. package/dist/esm/utils/format-value.js +4 -3
  167. package/dist/esm/utils/format-value.js.map +1 -1
  168. package/dist/esm/utils/is-old-ie.js +2 -1
  169. package/dist/esm/utils/is-old-ie.js.map +1 -1
  170. package/dist/esm/utils/load-file.js +3 -2
  171. package/dist/esm/utils/load-file.js.map +1 -1
  172. package/dist/esm/utils/stub-methods.js +2 -3
  173. package/dist/esm/utils/stub-methods.js.map +1 -1
  174. package/dist/esm/utils/utils.js +3 -2
  175. package/dist/esm/utils/utils.js.map +1 -1
  176. package/dist/esm/webgl-utils/attribute-utils.js +11 -8
  177. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  178. package/dist/esm/webgl-utils/constants-to-keys.js +3 -3
  179. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  180. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  181. package/dist/esm/webgl-utils/get-error.js +1 -1
  182. package/dist/esm/webgl-utils/get-error.js.map +1 -1
  183. package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
  184. package/dist/esm/webgl-utils/texture-utils.js +1 -1
  185. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  186. package/dist/esm/webgl-utils/typed-array-utils.js +19 -15
  187. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  188. package/package.json +5 -5
  189. package/src/classes/framebuffer.js +1 -0
  190. package/src/classes/transform-feedback.js +1 -1
  191. package/src/classes/vertex-array-object.js +1 -1
  192. package/src/init.d.ts +1 -1
  193. package/src/init.js +1 -1
  194. package/src/webgl-utils/texture-utils.js +2 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/query.js"],"names":["Resource","FEATURES","hasFeatures","isWebGL2","assert","GL_QUERY_RESULT","GL_QUERY_RESULT_AVAILABLE","GL_TIME_ELAPSED_EXT","GL_GPU_DISJOINT_EXT","GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN","GL_ANY_SAMPLES_PASSED","GL_ANY_SAMPLES_PASSED_CONSERVATIVE","Query","Symbol","toStringTag","isSupported","gl","opts","webgl2","hasTimerQuery","TIMER_QUERY","supported","key","constructor","target","_queryPending","_pollingPromise","Object","seal","beginTimeElapsedQuery","begin","beginOcclusionQuery","conservative","beginTransformFeedbackQuery","gl2","beginQuery","handle","end","endQuery","isResultAvailable","resultAvailable","getQueryParameter","isTimerDisjoint","getParameter","getResult","getTimerMilliseconds","createPoll","limit","Number","POSITIVE_INFINITY","counter","Promise","resolve","reject","poll","requestAnimationFrame","_createHandle","createQuery","_deleteHandle","deleteQuery"],"mappings":"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","sourcesContent":["// WebGL2 Query (also handles disjoint timer extensions)\nimport Resource from './resource';\nimport {FEATURES, hasFeatures} from '../features';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\nconst GL_QUERY_RESULT = 0x8866; // Returns a GLuint containing the query result.\nconst GL_QUERY_RESULT_AVAILABLE = 0x8867; // whether query result is available.\n\nconst GL_TIME_ELAPSED_EXT = 0x88bf; // Elapsed time (in nanoseconds).\nconst GL_GPU_DISJOINT_EXT = 0x8fbb; // Whether GPU performed any disjoint operation.\n\nconst GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8c88; // #primitives written to feedback buffers\nconst GL_ANY_SAMPLES_PASSED = 0x8c2f; // Occlusion query (if drawing passed depth test)\nconst GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8d6a; // Occlusion query less accurate/faster version\n\nexport default class Query extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Query';\n }\n // Returns true if Query is supported by the WebGL implementation\n // Can also check whether timestamp queries are available.\n static isSupported(gl, opts = []) {\n const webgl2 = isWebGL2(gl);\n\n // Initial value\n const hasTimerQuery = hasFeatures(gl, FEATURES.TIMER_QUERY);\n let supported = webgl2 || hasTimerQuery;\n\n for (const key of opts) {\n switch (key) {\n case 'queries':\n supported = supported && webgl2;\n break;\n case 'timers':\n supported = supported && hasTimerQuery;\n break;\n default:\n assert(false);\n }\n }\n\n return supported;\n }\n\n // Create a query class\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n this.target = null;\n this._queryPending = false;\n this._pollingPromise = null;\n\n Object.seal(this);\n }\n\n // Shortcut for timer query (dependent on extension in both WebGL1 and 2)\n // Measures GPU time delta between this call and a matching `end` call in the\n // GPU instruction stream.\n beginTimeElapsedQuery() {\n return this.begin(GL_TIME_ELAPSED_EXT);\n }\n\n // Shortcut for occlusion queries\n beginOcclusionQuery({conservative = false} = {}) {\n return this.begin(conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);\n }\n\n // Shortcut for transformFeedbackQuery\n beginTransformFeedbackQuery() {\n return this.begin(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);\n }\n\n // Due to OpenGL API limitations, after calling `begin()` on one Query\n // instance, `end()` must be called on that same instance before\n // calling `begin()` on another query. While there can be multiple\n // outstanding queries representing disjoint `begin()`/`end()` intervals.\n // It is not possible to interleave or overlap `begin` and `end` calls.\n begin(target) {\n // Don't start a new query if one is already active.\n if (this._queryPending) {\n return this;\n }\n\n this.target = target;\n this.gl2.beginQuery(this.target, this.handle);\n\n return this;\n }\n\n // ends the current query\n end() {\n // Can't end a new query if the last one hasn't been resolved.\n if (this._queryPending) {\n return this;\n }\n\n if (this.target) {\n this.gl2.endQuery(this.target);\n this.target = null;\n this._queryPending = true;\n }\n return this;\n }\n\n // Returns true if the query result is available\n isResultAvailable() {\n if (!this._queryPending) {\n return false;\n }\n\n const resultAvailable = this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT_AVAILABLE);\n if (resultAvailable) {\n this._queryPending = false;\n }\n return resultAvailable;\n }\n\n // Timing query is disjoint, i.e. results are invalid\n isTimerDisjoint() {\n return this.gl2.getParameter(GL_GPU_DISJOINT_EXT);\n }\n\n // Returns query result.\n getResult() {\n return this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT);\n }\n\n // Returns the query result, converted to milliseconds to match JavaScript conventions.\n getTimerMilliseconds() {\n return this.getResult() / 1e6;\n }\n\n // Polls the query\n createPoll(limit = Number.POSITIVE_INFINITY) {\n if (this._pollingPromise) {\n return this._pollingPromise;\n }\n\n let counter = 0;\n\n this._pollingPromise = new Promise((resolve, reject) => {\n const poll = () => {\n if (this.isResultAvailable()) {\n resolve(this.getResult());\n this._pollingPromise = null;\n } else if (counter++ > limit) {\n reject('Timed out');\n this._pollingPromise = null;\n } else {\n requestAnimationFrame(poll);\n }\n };\n\n requestAnimationFrame(poll);\n });\n\n return this._pollingPromise;\n }\n\n _createHandle() {\n return Query.isSupported(this.gl) ? this.gl2.createQuery() : null;\n }\n\n _deleteHandle() {\n this.gl2.deleteQuery(this.handle);\n }\n}\n"],"file":"query.js"}
1
+ {"version":3,"file":"query.js","names":["Resource","FEATURES","hasFeatures","isWebGL2","assert","GL_QUERY_RESULT","GL_QUERY_RESULT_AVAILABLE","GL_TIME_ELAPSED_EXT","GL_GPU_DISJOINT_EXT","GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN","GL_ANY_SAMPLES_PASSED","GL_ANY_SAMPLES_PASSED_CONSERVATIVE","Query","Symbol","toStringTag","isSupported","gl","opts","webgl2","hasTimerQuery","TIMER_QUERY","supported","key","constructor","target","_queryPending","_pollingPromise","Object","seal","beginTimeElapsedQuery","begin","beginOcclusionQuery","conservative","beginTransformFeedbackQuery","gl2","beginQuery","handle","end","endQuery","isResultAvailable","resultAvailable","getQueryParameter","isTimerDisjoint","getParameter","getResult","getTimerMilliseconds","createPoll","limit","Number","POSITIVE_INFINITY","counter","Promise","resolve","reject","poll","requestAnimationFrame","_createHandle","createQuery","_deleteHandle","deleteQuery"],"sources":["../../../src/classes/query.js"],"sourcesContent":["// WebGL2 Query (also handles disjoint timer extensions)\nimport Resource from './resource';\nimport {FEATURES, hasFeatures} from '../features';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\nconst GL_QUERY_RESULT = 0x8866; // Returns a GLuint containing the query result.\nconst GL_QUERY_RESULT_AVAILABLE = 0x8867; // whether query result is available.\n\nconst GL_TIME_ELAPSED_EXT = 0x88bf; // Elapsed time (in nanoseconds).\nconst GL_GPU_DISJOINT_EXT = 0x8fbb; // Whether GPU performed any disjoint operation.\n\nconst GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8c88; // #primitives written to feedback buffers\nconst GL_ANY_SAMPLES_PASSED = 0x8c2f; // Occlusion query (if drawing passed depth test)\nconst GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8d6a; // Occlusion query less accurate/faster version\n\nexport default class Query extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Query';\n }\n // Returns true if Query is supported by the WebGL implementation\n // Can also check whether timestamp queries are available.\n static isSupported(gl, opts = []) {\n const webgl2 = isWebGL2(gl);\n\n // Initial value\n const hasTimerQuery = hasFeatures(gl, FEATURES.TIMER_QUERY);\n let supported = webgl2 || hasTimerQuery;\n\n for (const key of opts) {\n switch (key) {\n case 'queries':\n supported = supported && webgl2;\n break;\n case 'timers':\n supported = supported && hasTimerQuery;\n break;\n default:\n assert(false);\n }\n }\n\n return supported;\n }\n\n // Create a query class\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n this.target = null;\n this._queryPending = false;\n this._pollingPromise = null;\n\n Object.seal(this);\n }\n\n // Shortcut for timer query (dependent on extension in both WebGL1 and 2)\n // Measures GPU time delta between this call and a matching `end` call in the\n // GPU instruction stream.\n beginTimeElapsedQuery() {\n return this.begin(GL_TIME_ELAPSED_EXT);\n }\n\n // Shortcut for occlusion queries\n beginOcclusionQuery({conservative = false} = {}) {\n return this.begin(conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);\n }\n\n // Shortcut for transformFeedbackQuery\n beginTransformFeedbackQuery() {\n return this.begin(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);\n }\n\n // Due to OpenGL API limitations, after calling `begin()` on one Query\n // instance, `end()` must be called on that same instance before\n // calling `begin()` on another query. While there can be multiple\n // outstanding queries representing disjoint `begin()`/`end()` intervals.\n // It is not possible to interleave or overlap `begin` and `end` calls.\n begin(target) {\n // Don't start a new query if one is already active.\n if (this._queryPending) {\n return this;\n }\n\n this.target = target;\n this.gl2.beginQuery(this.target, this.handle);\n\n return this;\n }\n\n // ends the current query\n end() {\n // Can't end a new query if the last one hasn't been resolved.\n if (this._queryPending) {\n return this;\n }\n\n if (this.target) {\n this.gl2.endQuery(this.target);\n this.target = null;\n this._queryPending = true;\n }\n return this;\n }\n\n // Returns true if the query result is available\n isResultAvailable() {\n if (!this._queryPending) {\n return false;\n }\n\n const resultAvailable = this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT_AVAILABLE);\n if (resultAvailable) {\n this._queryPending = false;\n }\n return resultAvailable;\n }\n\n // Timing query is disjoint, i.e. results are invalid\n isTimerDisjoint() {\n return this.gl2.getParameter(GL_GPU_DISJOINT_EXT);\n }\n\n // Returns query result.\n getResult() {\n return this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT);\n }\n\n // Returns the query result, converted to milliseconds to match JavaScript conventions.\n getTimerMilliseconds() {\n return this.getResult() / 1e6;\n }\n\n // Polls the query\n createPoll(limit = Number.POSITIVE_INFINITY) {\n if (this._pollingPromise) {\n return this._pollingPromise;\n }\n\n let counter = 0;\n\n this._pollingPromise = new Promise((resolve, reject) => {\n const poll = () => {\n if (this.isResultAvailable()) {\n resolve(this.getResult());\n this._pollingPromise = null;\n } else if (counter++ > limit) {\n reject('Timed out');\n this._pollingPromise = null;\n } else {\n requestAnimationFrame(poll);\n }\n };\n\n requestAnimationFrame(poll);\n });\n\n return this._pollingPromise;\n }\n\n _createHandle() {\n return Query.isSupported(this.gl) ? this.gl2.createQuery() : null;\n }\n\n _deleteHandle() {\n this.gl2.deleteQuery(this.handle);\n }\n}\n"],"mappings":"AACA,OAAOA,QAAP,MAAqB,YAArB;AACA,SAAQC,QAAR,EAAkBC,WAAlB,QAAoC,aAApC;AACA,SAAQC,QAAR,QAAuB,kBAAvB;AACA,SAAQC,MAAR,QAAqB,iBAArB;AAEA,MAAMC,eAAe,GAAG,MAAxB;AACA,MAAMC,yBAAyB,GAAG,MAAlC;AAEA,MAAMC,mBAAmB,GAAG,MAA5B;AACA,MAAMC,mBAAmB,GAAG,MAA5B;AAEA,MAAMC,wCAAwC,GAAG,MAAjD;AACA,MAAMC,qBAAqB,GAAG,MAA9B;AACA,MAAMC,kCAAkC,GAAG,MAA3C;AAEA,eAAe,MAAMC,KAAN,SAAoBZ,QAApB,CAA6B;EAEnB,KAAlBa,MAAM,CAACC,WAAW,IAAI;IACzB,OAAO,OAAP;EACD;;EAGiB,OAAXC,WAAW,CAACC,EAAD,EAAgB;IAAA,IAAXC,IAAW,uEAAJ,EAAI;IAChC,MAAMC,MAAM,GAAGf,QAAQ,CAACa,EAAD,CAAvB;IAGA,MAAMG,aAAa,GAAGjB,WAAW,CAACc,EAAD,EAAKf,QAAQ,CAACmB,WAAd,CAAjC;IACA,IAAIC,SAAS,GAAGH,MAAM,IAAIC,aAA1B;;IAEA,KAAK,MAAMG,GAAX,IAAkBL,IAAlB,EAAwB;MACtB,QAAQK,GAAR;QACE,KAAK,SAAL;UACED,SAAS,GAAGA,SAAS,IAAIH,MAAzB;UACA;;QACF,KAAK,QAAL;UACEG,SAAS,GAAGA,SAAS,IAAIF,aAAzB;UACA;;QACF;UACEf,MAAM,CAAC,KAAD,CAAN;MARJ;IAUD;;IAED,OAAOiB,SAAP;EACD;;EAGDE,WAAW,CAACP,EAAD,EAAgB;IAAA,IAAXC,IAAW,uEAAJ,EAAI;IACzB,MAAMD,EAAN,EAAUC,IAAV;IAEA,KAAKO,MAAL,GAAc,IAAd;IACA,KAAKC,aAAL,GAAqB,KAArB;IACA,KAAKC,eAAL,GAAuB,IAAvB;IAEAC,MAAM,CAACC,IAAP,CAAY,IAAZ;EACD;;EAKDC,qBAAqB,GAAG;IACtB,OAAO,KAAKC,KAAL,CAAWvB,mBAAX,CAAP;EACD;;EAGDwB,mBAAmB,GAA8B;IAAA,IAA7B;MAACC,YAAY,GAAG;IAAhB,CAA6B,uEAAJ,EAAI;IAC/C,OAAO,KAAKF,KAAL,CAAWE,YAAY,GAAGrB,kCAAH,GAAwCD,qBAA/D,CAAP;EACD;;EAGDuB,2BAA2B,GAAG;IAC5B,OAAO,KAAKH,KAAL,CAAWrB,wCAAX,CAAP;EACD;;EAODqB,KAAK,CAACN,MAAD,EAAS;IAEZ,IAAI,KAAKC,aAAT,EAAwB;MACtB,OAAO,IAAP;IACD;;IAED,KAAKD,MAAL,GAAcA,MAAd;IACA,KAAKU,GAAL,CAASC,UAAT,CAAoB,KAAKX,MAAzB,EAAiC,KAAKY,MAAtC;IAEA,OAAO,IAAP;EACD;;EAGDC,GAAG,GAAG;IAEJ,IAAI,KAAKZ,aAAT,EAAwB;MACtB,OAAO,IAAP;IACD;;IAED,IAAI,KAAKD,MAAT,EAAiB;MACf,KAAKU,GAAL,CAASI,QAAT,CAAkB,KAAKd,MAAvB;MACA,KAAKA,MAAL,GAAc,IAAd;MACA,KAAKC,aAAL,GAAqB,IAArB;IACD;;IACD,OAAO,IAAP;EACD;;EAGDc,iBAAiB,GAAG;IAClB,IAAI,CAAC,KAAKd,aAAV,EAAyB;MACvB,OAAO,KAAP;IACD;;IAED,MAAMe,eAAe,GAAG,KAAKN,GAAL,CAASO,iBAAT,CAA2B,KAAKL,MAAhC,EAAwC9B,yBAAxC,CAAxB;;IACA,IAAIkC,eAAJ,EAAqB;MACnB,KAAKf,aAAL,GAAqB,KAArB;IACD;;IACD,OAAOe,eAAP;EACD;;EAGDE,eAAe,GAAG;IAChB,OAAO,KAAKR,GAAL,CAASS,YAAT,CAAsBnC,mBAAtB,CAAP;EACD;;EAGDoC,SAAS,GAAG;IACV,OAAO,KAAKV,GAAL,CAASO,iBAAT,CAA2B,KAAKL,MAAhC,EAAwC/B,eAAxC,CAAP;EACD;;EAGDwC,oBAAoB,GAAG;IACrB,OAAO,KAAKD,SAAL,KAAmB,GAA1B;EACD;;EAGDE,UAAU,GAAmC;IAAA,IAAlCC,KAAkC,uEAA1BC,MAAM,CAACC,iBAAmB;;IAC3C,IAAI,KAAKvB,eAAT,EAA0B;MACxB,OAAO,KAAKA,eAAZ;IACD;;IAED,IAAIwB,OAAO,GAAG,CAAd;IAEA,KAAKxB,eAAL,GAAuB,IAAIyB,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;MACtD,MAAMC,IAAI,GAAG,MAAM;QACjB,IAAI,KAAKf,iBAAL,EAAJ,EAA8B;UAC5Ba,OAAO,CAAC,KAAKR,SAAL,EAAD,CAAP;UACA,KAAKlB,eAAL,GAAuB,IAAvB;QACD,CAHD,MAGO,IAAIwB,OAAO,KAAKH,KAAhB,EAAuB;UAC5BM,MAAM,CAAC,WAAD,CAAN;UACA,KAAK3B,eAAL,GAAuB,IAAvB;QACD,CAHM,MAGA;UACL6B,qBAAqB,CAACD,IAAD,CAArB;QACD;MACF,CAVD;;MAYAC,qBAAqB,CAACD,IAAD,CAArB;IACD,CAdsB,CAAvB;IAgBA,OAAO,KAAK5B,eAAZ;EACD;;EAED8B,aAAa,GAAG;IACd,OAAO5C,KAAK,CAACG,WAAN,CAAkB,KAAKC,EAAvB,IAA6B,KAAKkB,GAAL,CAASuB,WAAT,EAA7B,GAAsD,IAA7D;EACD;;EAEDC,aAAa,GAAG;IACd,KAAKxB,GAAL,CAASyB,WAAT,CAAqB,KAAKvB,MAA1B;EACD;;AAvJyC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/renderbuffer-formats.js"],"names":["EXT_FLOAT_WEBGL2","bpp","gl2"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\n\n// Define local extension strings to optimize minification\n// const SRGB = 'EXT_sRGB';\n// const EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';\nconst EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';\n// const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';\n\n// NOTE(Tarek): bpp === \"bytes per pixel\", used for\n// memory usage calculations.\nexport default {\n [GL.DEPTH_COMPONENT16]: {bpp: 2}, // 16 depth bits.\n [GL.DEPTH_COMPONENT24]: {gl2: true, bpp: 3},\n [GL.DEPTH_COMPONENT32F]: {gl2: true, bpp: 4},\n\n [GL.STENCIL_INDEX8]: {bpp: 1}, // 8 stencil bits.\n\n [GL.DEPTH_STENCIL]: {bpp: 4},\n [GL.DEPTH24_STENCIL8]: {gl2: true, bpp: 4},\n [GL.DEPTH32F_STENCIL8]: {gl2: true, bpp: 5},\n\n // When using a WebGL 1 context, color renderbuffer formats are limited\n [GL.RGBA4]: {bpp: 2},\n [GL.RGB565]: {bpp: 2},\n [GL.RGB5_A1]: {bpp: 2},\n\n // When using a WebGL 2 context, the following values are available additionally:\n [GL.R8]: {gl2: true, bpp: 1},\n [GL.R8UI]: {gl2: true, bpp: 1},\n [GL.R8I]: {gl2: true, bpp: 1},\n [GL.R16UI]: {gl2: true, bpp: 2},\n [GL.R16I]: {gl2: true, bpp: 2},\n [GL.R32UI]: {gl2: true, bpp: 4},\n [GL.R32I]: {gl2: true, bpp: 4},\n [GL.RG8]: {gl2: true, bpp: 2},\n [GL.RG8UI]: {gl2: true, bpp: 2},\n [GL.RG8I]: {gl2: true, bpp: 2},\n [GL.RG16UI]: {gl2: true, bpp: 4},\n [GL.RG16I]: {gl2: true, bpp: 4},\n [GL.RG32UI]: {gl2: true, bpp: 8},\n [GL.RG32I]: {gl2: true, bpp: 8},\n [GL.RGB8]: {gl2: true, bpp: 3},\n [GL.RGBA8]: {gl2: true, bpp: 4},\n // [GL.SRGB8_ALPHA8]: {gl2: true, gl1: SRGB}, // When using the EXT_sRGB WebGL1 extension\n [GL.RGB10_A2]: {gl2: true, bpp: 4},\n [GL.RGBA8UI]: {gl2: true, bpp: 4},\n [GL.RGBA8I]: {gl2: true, bpp: 4},\n [GL.RGB10_A2UI]: {gl2: true, bpp: 4},\n [GL.RGBA16UI]: {gl2: true, bpp: 8},\n [GL.RGBA16I]: {gl2: true, bpp: 8},\n [GL.RGBA32I]: {gl2: true, bpp: 16},\n [GL.RGBA32UI]: {gl2: true, bpp: 16},\n\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n [GL.R16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 2},\n [GL.RG16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RGBA16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n [GL.R32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RG32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n // TODO - can't get WEBGL_color_buffer_float to work on renderbuffers\n [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 16},\n // [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},\n [GL.R11F_G11F_B10F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4}\n};\n"],"file":"renderbuffer-formats.js"}
1
+ {"version":3,"file":"renderbuffer-formats.js","names":["EXT_FLOAT_WEBGL2","bpp","gl2"],"sources":["../../../src/classes/renderbuffer-formats.js"],"sourcesContent":["import GL from '@luma.gl/constants';\n\n// Define local extension strings to optimize minification\n// const SRGB = 'EXT_sRGB';\n// const EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';\nconst EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';\n// const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';\n\n// NOTE(Tarek): bpp === \"bytes per pixel\", used for\n// memory usage calculations.\nexport default {\n [GL.DEPTH_COMPONENT16]: {bpp: 2}, // 16 depth bits.\n [GL.DEPTH_COMPONENT24]: {gl2: true, bpp: 3},\n [GL.DEPTH_COMPONENT32F]: {gl2: true, bpp: 4},\n\n [GL.STENCIL_INDEX8]: {bpp: 1}, // 8 stencil bits.\n\n [GL.DEPTH_STENCIL]: {bpp: 4},\n [GL.DEPTH24_STENCIL8]: {gl2: true, bpp: 4},\n [GL.DEPTH32F_STENCIL8]: {gl2: true, bpp: 5},\n\n // When using a WebGL 1 context, color renderbuffer formats are limited\n [GL.RGBA4]: {bpp: 2},\n [GL.RGB565]: {bpp: 2},\n [GL.RGB5_A1]: {bpp: 2},\n\n // When using a WebGL 2 context, the following values are available additionally:\n [GL.R8]: {gl2: true, bpp: 1},\n [GL.R8UI]: {gl2: true, bpp: 1},\n [GL.R8I]: {gl2: true, bpp: 1},\n [GL.R16UI]: {gl2: true, bpp: 2},\n [GL.R16I]: {gl2: true, bpp: 2},\n [GL.R32UI]: {gl2: true, bpp: 4},\n [GL.R32I]: {gl2: true, bpp: 4},\n [GL.RG8]: {gl2: true, bpp: 2},\n [GL.RG8UI]: {gl2: true, bpp: 2},\n [GL.RG8I]: {gl2: true, bpp: 2},\n [GL.RG16UI]: {gl2: true, bpp: 4},\n [GL.RG16I]: {gl2: true, bpp: 4},\n [GL.RG32UI]: {gl2: true, bpp: 8},\n [GL.RG32I]: {gl2: true, bpp: 8},\n [GL.RGB8]: {gl2: true, bpp: 3},\n [GL.RGBA8]: {gl2: true, bpp: 4},\n // [GL.SRGB8_ALPHA8]: {gl2: true, gl1: SRGB}, // When using the EXT_sRGB WebGL1 extension\n [GL.RGB10_A2]: {gl2: true, bpp: 4},\n [GL.RGBA8UI]: {gl2: true, bpp: 4},\n [GL.RGBA8I]: {gl2: true, bpp: 4},\n [GL.RGB10_A2UI]: {gl2: true, bpp: 4},\n [GL.RGBA16UI]: {gl2: true, bpp: 8},\n [GL.RGBA16I]: {gl2: true, bpp: 8},\n [GL.RGBA32I]: {gl2: true, bpp: 16},\n [GL.RGBA32UI]: {gl2: true, bpp: 16},\n\n // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension\n [GL.R16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 2},\n [GL.RG16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RGBA16F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n [GL.R32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4},\n [GL.RG32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 8},\n // TODO - can't get WEBGL_color_buffer_float to work on renderbuffers\n [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 16},\n // [GL.RGBA32F]: {gl2: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},\n [GL.R11F_G11F_B10F]: {gl2: EXT_FLOAT_WEBGL2, bpp: 4}\n};\n"],"mappings":"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"}
@@ -24,32 +24,36 @@ export default class Renderbuffer extends Resource {
24
24
  return 'Renderbuffer';
25
25
  }
26
26
 
27
- static isSupported(gl, {
28
- format
29
- } = {
30
- format: null
31
- }) {
27
+ static isSupported(gl) {
28
+ let {
29
+ format
30
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
31
+ format: null
32
+ };
32
33
  return !format || isFormatSupported(gl, format, RENDERBUFFER_FORMATS);
33
34
  }
34
35
 
35
- static getSamplesForFormat(gl, {
36
- format
37
- }) {
36
+ static getSamplesForFormat(gl, _ref) {
37
+ let {
38
+ format
39
+ } = _ref;
38
40
  return gl.getInternalformatParameter(36161, format, 32937);
39
41
  }
40
42
 
41
- constructor(gl, opts = {}) {
43
+ constructor(gl) {
44
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
42
45
  super(gl, opts);
43
46
  this.initialize(opts);
44
47
  Object.seal(this);
45
48
  }
46
49
 
47
- initialize({
48
- format,
49
- width = 1,
50
- height = 1,
51
- samples = 0
52
- }) {
50
+ initialize(_ref2) {
51
+ let {
52
+ format,
53
+ width = 1,
54
+ height = 1,
55
+ samples = 0
56
+ } = _ref2;
53
57
  assert(format, 'Needs format');
54
58
 
55
59
  this._trackDeallocatedMemory();
@@ -72,10 +76,12 @@ export default class Renderbuffer extends Resource {
72
76
  return this;
73
77
  }
74
78
 
75
- resize({
76
- width,
77
- height
78
- }) {
79
+ resize(_ref3) {
80
+ let {
81
+ width,
82
+ height
83
+ } = _ref3;
84
+
79
85
  if (width !== this.width || height !== this.height) {
80
86
  return this.initialize({
81
87
  width,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/renderbuffer.js"],"names":["Resource","RENDERBUFFER_FORMATS","isWebGL2","assert","isFormatSupported","gl","format","formats","info","value","gl2","gl1","getExtension","Renderbuffer","Symbol","toStringTag","isSupported","getSamplesForFormat","getInternalformatParameter","constructor","opts","initialize","Object","seal","width","height","samples","_trackDeallocatedMemory","bindRenderbuffer","handle","renderbufferStorageMultisample","renderbufferStorage","_trackAllocatedMemory","bpp","resize","_createHandle","createRenderbuffer","_deleteHandle","deleteRenderbuffer","_bindHandle","_syncHandle","getParameter","_getParameter","pname","getRenderbufferParameter"],"mappings":"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","sourcesContent":["/* eslint-disable no-inline-comments */\nimport GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport RENDERBUFFER_FORMATS from './renderbuffer-formats';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\nfunction isFormatSupported(gl, format, formats) {\n const info = formats[format];\n if (!info) {\n return false;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n if (typeof value === 'string') {\n return gl.getExtension(value);\n }\n return value;\n}\n\nexport default class Renderbuffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Renderbuffer';\n }\n static isSupported(gl, {format} = {format: null}) {\n return !format || isFormatSupported(gl, format, RENDERBUFFER_FORMATS);\n }\n\n static getSamplesForFormat(gl, {format}) {\n // Polyfilled to return [0] under WebGL1\n return gl.getInternalformatParameter(GL.RENDERBUFFER, format, GL.SAMPLES);\n }\n\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n // @ts-ignore\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n // Creates and initializes a renderbuffer object's data store\n initialize({format, width = 1, height = 1, samples = 0}) {\n assert(format, 'Needs format');\n\n this._trackDeallocatedMemory();\n\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n\n if (samples !== 0 && isWebGL2(this.gl)) {\n // @ts-ignore\n this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);\n } else {\n this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);\n }\n\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n\n this.format = format;\n this.width = width;\n this.height = height;\n this.samples = samples;\n\n this._trackAllocatedMemory(\n this.width * this.height * (this.samples || 1) * RENDERBUFFER_FORMATS[this.format].bpp\n );\n\n return this;\n }\n\n resize({width, height}) {\n // Don't resize if width/height haven't changed\n if (width !== this.width || height !== this.height) {\n return this.initialize({width, height, format: this.format, samples: this.samples});\n }\n return this;\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createRenderbuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteRenderbuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _bindHandle(handle) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);\n }\n\n _syncHandle(handle) {\n this.format = this.getParameter(GL.RENDERBUFFER_INTERNAL_FORMAT);\n this.width = this.getParameter(GL.RENDERBUFFER_WIDTH);\n this.height = this.getParameter(GL.RENDERBUFFER_HEIGHT);\n this.samples = this.getParameter(GL.RENDERBUFFER_SAMPLES);\n }\n\n // @param {Boolean} opt.autobind=true - method call will bind/unbind object\n // @returns {GLenum|GLint} - depends on pname\n _getParameter(pname) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n const value = this.gl.getRenderbufferParameter(GL.RENDERBUFFER, pname);\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n return value;\n }\n}\n"],"file":"renderbuffer.js"}
1
+ {"version":3,"file":"renderbuffer.js","names":["Resource","RENDERBUFFER_FORMATS","isWebGL2","assert","isFormatSupported","gl","format","formats","info","value","gl2","gl1","getExtension","Renderbuffer","Symbol","toStringTag","isSupported","getSamplesForFormat","getInternalformatParameter","constructor","opts","initialize","Object","seal","width","height","samples","_trackDeallocatedMemory","bindRenderbuffer","handle","renderbufferStorageMultisample","renderbufferStorage","_trackAllocatedMemory","bpp","resize","_createHandle","createRenderbuffer","_deleteHandle","deleteRenderbuffer","_bindHandle","_syncHandle","getParameter","_getParameter","pname","getRenderbufferParameter"],"sources":["../../../src/classes/renderbuffer.js"],"sourcesContent":["/* eslint-disable no-inline-comments */\nimport GL from '@luma.gl/constants';\nimport Resource from './resource';\nimport RENDERBUFFER_FORMATS from './renderbuffer-formats';\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\nfunction isFormatSupported(gl, format, formats) {\n const info = formats[format];\n if (!info) {\n return false;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n if (typeof value === 'string') {\n return gl.getExtension(value);\n }\n return value;\n}\n\nexport default class Renderbuffer extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Renderbuffer';\n }\n static isSupported(gl, {format} = {format: null}) {\n return !format || isFormatSupported(gl, format, RENDERBUFFER_FORMATS);\n }\n\n static getSamplesForFormat(gl, {format}) {\n // Polyfilled to return [0] under WebGL1\n return gl.getInternalformatParameter(GL.RENDERBUFFER, format, GL.SAMPLES);\n }\n\n constructor(gl, opts = {}) {\n super(gl, opts);\n\n // @ts-ignore\n this.initialize(opts);\n\n Object.seal(this);\n }\n\n // Creates and initializes a renderbuffer object's data store\n initialize({format, width = 1, height = 1, samples = 0}) {\n assert(format, 'Needs format');\n\n this._trackDeallocatedMemory();\n\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n\n if (samples !== 0 && isWebGL2(this.gl)) {\n // @ts-ignore\n this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);\n } else {\n this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);\n }\n\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n\n this.format = format;\n this.width = width;\n this.height = height;\n this.samples = samples;\n\n this._trackAllocatedMemory(\n this.width * this.height * (this.samples || 1) * RENDERBUFFER_FORMATS[this.format].bpp\n );\n\n return this;\n }\n\n resize({width, height}) {\n // Don't resize if width/height haven't changed\n if (width !== this.width || height !== this.height) {\n return this.initialize({width, height, format: this.format, samples: this.samples});\n }\n return this;\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createRenderbuffer();\n }\n\n _deleteHandle() {\n this.gl.deleteRenderbuffer(this.handle);\n this._trackDeallocatedMemory();\n }\n\n _bindHandle(handle) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);\n }\n\n _syncHandle(handle) {\n this.format = this.getParameter(GL.RENDERBUFFER_INTERNAL_FORMAT);\n this.width = this.getParameter(GL.RENDERBUFFER_WIDTH);\n this.height = this.getParameter(GL.RENDERBUFFER_HEIGHT);\n this.samples = this.getParameter(GL.RENDERBUFFER_SAMPLES);\n }\n\n // @param {Boolean} opt.autobind=true - method call will bind/unbind object\n // @returns {GLenum|GLint} - depends on pname\n _getParameter(pname) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n const value = this.gl.getRenderbufferParameter(GL.RENDERBUFFER, pname);\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n return value;\n }\n}\n"],"mappings":"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"}
@@ -10,7 +10,8 @@ export default class Resource {
10
10
  return 'Resource';
11
11
  }
12
12
 
13
- constructor(gl, opts = {}) {
13
+ constructor(gl) {
14
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14
15
  assertWebGLContext(gl);
15
16
  const {
16
17
  id,
@@ -35,16 +36,18 @@ export default class Resource {
35
36
  }
36
37
 
37
38
  toString() {
38
- return `${this[Symbol.toStringTag] || this.constructor.name}(${this.id})`;
39
+ return "".concat(this[Symbol.toStringTag] || this.constructor.name, "(").concat(this.id, ")");
39
40
  }
40
41
 
41
42
  get handle() {
42
43
  return this._handle;
43
44
  }
44
45
 
45
- delete({
46
- deleteChildren = false
47
- } = {}) {
46
+ delete() {
47
+ let {
48
+ deleteChildren = false
49
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
50
+
48
51
  const children = this._handle && this._deleteHandle(this._handle);
49
52
 
50
53
  if (this._handle) {
@@ -60,7 +63,9 @@ export default class Resource {
60
63
  return this;
61
64
  }
62
65
 
63
- bind(funcOrHandle = this.handle) {
66
+ bind() {
67
+ let funcOrHandle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.handle;
68
+
64
69
  if (typeof funcOrHandle !== 'function') {
65
70
  this._bindHandle(funcOrHandle);
66
71
 
@@ -88,7 +93,8 @@ export default class Resource {
88
93
  this.bind(null);
89
94
  }
90
95
 
91
- getParameter(pname, opts = {}) {
96
+ getParameter(pname) {
97
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
92
98
  pname = getKeyValue(this.gl, pname);
93
99
  assert(pname);
94
100
  const parameters = this.constructor.PARAMETERS || {};
@@ -109,7 +115,8 @@ export default class Resource {
109
115
  return this._getParameter(pname, opts);
110
116
  }
111
117
 
112
- getParameters(options = {}) {
118
+ getParameters() {
119
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
113
120
  const {
114
121
  parameters,
115
122
  keys
@@ -211,37 +218,45 @@ export default class Resource {
211
218
  const name = this[Symbol.toStringTag];
212
219
  const stats = lumaStats.get('Resource Counts');
213
220
  stats.get('Resources Created').incrementCount();
214
- stats.get(`${name}s Created`).incrementCount();
215
- stats.get(`${name}s Active`).incrementCount();
221
+ stats.get("".concat(name, "s Created")).incrementCount();
222
+ stats.get("".concat(name, "s Active")).incrementCount();
216
223
  }
217
224
 
218
225
  _removeStats() {
219
226
  const name = this[Symbol.toStringTag];
220
227
  const stats = lumaStats.get('Resource Counts');
221
- stats.get(`${name}s Active`).decrementCount();
228
+ stats.get("".concat(name, "s Active")).decrementCount();
222
229
  }
223
230
 
224
- _trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {
231
+ _trackAllocatedMemory(bytes) {
232
+ let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this[Symbol.toStringTag];
233
+
225
234
  this._doTrackAllocatedMemory(bytes, name);
226
235
 
227
- this._doTrackAllocatedMemory(bytes, name, this.gl.stats.get(`Memory Usage`));
236
+ this._doTrackAllocatedMemory(bytes, name, this.gl.stats.get("Memory Usage"));
228
237
  }
229
238
 
230
- _doTrackAllocatedMemory(bytes, name = this[Symbol.toStringTag], stats = lumaStats.get(`Memory Usage`)) {
239
+ _doTrackAllocatedMemory(bytes) {
240
+ let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this[Symbol.toStringTag];
241
+ let stats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : lumaStats.get("Memory Usage");
231
242
  stats.get('GPU Memory').addCount(bytes);
232
- stats.get(`${name} Memory`).addCount(bytes);
243
+ stats.get("".concat(name, " Memory")).addCount(bytes);
233
244
  this.byteLength = bytes;
234
245
  }
235
246
 
236
- _trackDeallocatedMemory(name = this[Symbol.toStringTag]) {
247
+ _trackDeallocatedMemory() {
248
+ let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this[Symbol.toStringTag];
249
+
237
250
  this._doTrackDeallocatedMemory(name);
238
251
 
239
- this._doTrackDeallocatedMemory(name, this.gl.stats.get(`Memory Usage`));
252
+ this._doTrackDeallocatedMemory(name, this.gl.stats.get("Memory Usage"));
240
253
  }
241
254
 
242
- _doTrackDeallocatedMemory(name = this[Symbol.toStringTag], stats = lumaStats.get(`Memory Usage`)) {
255
+ _doTrackDeallocatedMemory() {
256
+ let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this[Symbol.toStringTag];
257
+ let stats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : lumaStats.get("Memory Usage");
243
258
  stats.get('GPU Memory').subtractCount(this.byteLength);
244
- stats.get(`${name} Memory`).subtractCount(this.byteLength);
259
+ stats.get("".concat(name, " Memory")).subtractCount(this.byteLength);
245
260
  this.byteLength = 0;
246
261
  }
247
262
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/resource.js"],"names":["isWebGL2","assertWebGLContext","lumaStats","StatsManager","getKey","getKeyValue","assert","uid","stubRemovedMethods","ERR_RESOURCE_METHOD_UNDEFINED","Resource","Symbol","toStringTag","constructor","gl","opts","id","userData","gl2","_bound","_handle","handle","undefined","_createHandle","byteLength","_initStats","_addStats","toString","name","delete","deleteChildren","children","_deleteHandle","_removeStats","filter","Boolean","forEach","child","bind","funcOrHandle","_bindHandle","value","unbind","getParameter","pname","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","getParameters","options","keys","values","parameterKeys","Object","key","type","setParameter","Error","_setParameter","setParameters","className","version","methodNames","initialize","_getOptsFromHandle","_context","luma","stats","get","incrementCount","decrementCount","_trackAllocatedMemory","bytes","_doTrackAllocatedMemory","addCount","_trackDeallocatedMemory","_doTrackDeallocatedMemory","subtractCount"],"mappings":"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","sourcesContent":["import {isWebGL2, assertWebGLContext} from '@luma.gl/gltools';\nimport {lumaStats, StatsManager} from '../init';\nimport {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n// TODO - Handle context loss\n// function glGetContextLossCount(gl) {\n// return (gl.luma && gl.luma.glCount) || 0;\n// }\n\nexport default class Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Resource';\n }\n constructor(gl, opts = {}) {\n assertWebGLContext(gl);\n\n const {id, userData = {}} = opts;\n this.gl = gl;\n // @ts-ignore\n this.gl2 = gl;\n // this.ext = polyfillContext(gl);\n this.id = id || uid(this[Symbol.toStringTag]);\n this.userData = userData;\n this._bound = false;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n this._handle = opts.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n // Only meaningful for resources that allocate GPU memory\n this.byteLength = 0;\n\n this._initStats();\n this._addStats();\n }\n\n toString() {\n return `${this[Symbol.toStringTag] || this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.opts);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.opts);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-ignore\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this._removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-ignore\n if (children && deleteChildren) {\n // @ts-ignore\n children.filter(Boolean).forEach(child => child.delete());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param {GLenum} pname\n * @return {GLint|GLfloat|GLenum} param\n */\n getParameter(pname, opts = {}) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, opts);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-ignore\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {string} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(opts) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n /** @returns {number} */\n _getParameter(pname, opts) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n\n _initStats() {\n this.gl.stats = this.gl.stats || new StatsManager();\n }\n\n _addStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n _trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {\n this._doTrackAllocatedMemory(bytes, name);\n this._doTrackAllocatedMemory(bytes, name, this.gl.stats.get(`Memory Usage`));\n }\n\n _doTrackAllocatedMemory(\n bytes,\n name = this[Symbol.toStringTag],\n stats = lumaStats.get(`Memory Usage`)\n ) {\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n this.byteLength = bytes;\n }\n\n _trackDeallocatedMemory(name = this[Symbol.toStringTag]) {\n this._doTrackDeallocatedMemory(name);\n this._doTrackDeallocatedMemory(name, this.gl.stats.get(`Memory Usage`));\n }\n\n _doTrackDeallocatedMemory(\n name = this[Symbol.toStringTag],\n stats = lumaStats.get(`Memory Usage`)\n ) {\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n this.byteLength = 0;\n }\n}\n"],"file":"resource.js"}
1
+ {"version":3,"file":"resource.js","names":["isWebGL2","assertWebGLContext","lumaStats","StatsManager","getKey","getKeyValue","assert","uid","stubRemovedMethods","ERR_RESOURCE_METHOD_UNDEFINED","Resource","Symbol","toStringTag","constructor","gl","opts","id","userData","gl2","_bound","_handle","handle","undefined","_createHandle","byteLength","_initStats","_addStats","toString","name","delete","deleteChildren","children","_deleteHandle","_removeStats","filter","Boolean","forEach","child","bind","funcOrHandle","_bindHandle","value","unbind","getParameter","pname","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","getParameters","options","keys","values","parameterKeys","Object","key","type","setParameter","Error","_setParameter","setParameters","className","version","methodNames","initialize","_getOptsFromHandle","_context","luma","stats","get","incrementCount","decrementCount","_trackAllocatedMemory","bytes","_doTrackAllocatedMemory","addCount","_trackDeallocatedMemory","_doTrackDeallocatedMemory","subtractCount"],"sources":["../../../src/classes/resource.js"],"sourcesContent":["import {isWebGL2, assertWebGLContext} from '@luma.gl/gltools';\nimport {lumaStats, StatsManager} from '../init';\nimport {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n// TODO - Handle context loss\n// function glGetContextLossCount(gl) {\n// return (gl.luma && gl.luma.glCount) || 0;\n// }\n\nexport default class Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Resource';\n }\n constructor(gl, opts = {}) {\n assertWebGLContext(gl);\n\n const {id, userData = {}} = opts;\n this.gl = gl;\n // @ts-ignore\n this.gl2 = gl;\n // this.ext = polyfillContext(gl);\n this.id = id || uid(this[Symbol.toStringTag]);\n this.userData = userData;\n this._bound = false;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n this._handle = opts.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n // Only meaningful for resources that allocate GPU memory\n this.byteLength = 0;\n\n this._initStats();\n this._addStats();\n }\n\n toString() {\n return `${this[Symbol.toStringTag] || this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.opts);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.opts);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-ignore\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this._removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-ignore\n if (children && deleteChildren) {\n // @ts-ignore\n children.filter(Boolean).forEach(child => child.delete());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param {GLenum} pname\n * @return {GLint|GLfloat|GLenum} param\n */\n getParameter(pname, opts = {}) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, opts);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-ignore\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {string} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(opts) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n /** @returns {number} */\n _getParameter(pname, opts) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n\n _initStats() {\n this.gl.stats = this.gl.stats || new StatsManager();\n }\n\n _addStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n _trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {\n this._doTrackAllocatedMemory(bytes, name);\n this._doTrackAllocatedMemory(bytes, name, this.gl.stats.get(`Memory Usage`));\n }\n\n _doTrackAllocatedMemory(\n bytes,\n name = this[Symbol.toStringTag],\n stats = lumaStats.get(`Memory Usage`)\n ) {\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n this.byteLength = bytes;\n }\n\n _trackDeallocatedMemory(name = this[Symbol.toStringTag]) {\n this._doTrackDeallocatedMemory(name);\n this._doTrackDeallocatedMemory(name, this.gl.stats.get(`Memory Usage`));\n }\n\n _doTrackDeallocatedMemory(\n name = this[Symbol.toStringTag],\n stats = lumaStats.get(`Memory Usage`)\n ) {\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n this.byteLength = 0;\n }\n}\n"],"mappings":"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"}
@@ -26,7 +26,7 @@ export class Shader extends Resource {
26
26
  constructor(gl, props) {
27
27
  assertWebGLContext(gl);
28
28
  assert(typeof props.source === 'string', ERR_SOURCE);
29
- const id = getShaderName(props.source, null) || props.id || uid(`unnamed ${Shader.getTypeName(props.shaderType)}`);
29
+ const id = getShaderName(props.source, null) || props.id || uid("unnamed ".concat(Shader.getTypeName(props.shaderType)));
30
30
  super(gl, {
31
31
  id
32
32
  });
@@ -35,9 +35,10 @@ export class Shader extends Resource {
35
35
  this.initialize(props);
36
36
  }
37
37
 
38
- initialize({
39
- source
40
- }) {
38
+ initialize(_ref) {
39
+ let {
40
+ source
41
+ } = _ref;
41
42
  const shaderName = getShaderName(source, null);
42
43
 
43
44
  if (shaderName) {
@@ -52,7 +53,7 @@ export class Shader extends Resource {
52
53
  }
53
54
 
54
55
  toString() {
55
- return `${Shader.getTypeName(this.shaderType)}:${this.id}`;
56
+ return "".concat(Shader.getTypeName(this.shaderType), ":").concat(this.id);
56
57
  }
57
58
 
58
59
  getName() {
@@ -68,9 +69,11 @@ export class Shader extends Resource {
68
69
  return extension ? extension.getTranslatedShaderSource(this.handle) : 'No translated source available. WEBGL_debug_shaders not implemented';
69
70
  }
70
71
 
71
- _compile(source = this.source) {
72
+ _compile() {
73
+ let source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.source;
74
+
72
75
  if (!source.startsWith('#version ')) {
73
- source = `#version 100\n${source}`;
76
+ source = "#version 100\n".concat(source);
74
77
  }
75
78
 
76
79
  this.source = source;
@@ -85,9 +88,9 @@ export class Shader extends Resource {
85
88
  errors,
86
89
  warnings
87
90
  } = parseGLSLCompilerError(infoLog, this.source, this.shaderType, this.id);
88
- log.error(`GLSL compilation errors in ${shaderName}\n${errors}`)();
89
- log.warn(`GLSL compilation warnings in ${shaderName}\n${warnings}`)();
90
- throw new Error(`GLSL compilation errors in ${shaderName}`);
91
+ log.error("GLSL compilation errors in ".concat(shaderName, "\n").concat(errors))();
92
+ log.warn("GLSL compilation warnings in ".concat(shaderName, "\n").concat(warnings))();
93
+ throw new Error("GLSL compilation errors in ".concat(shaderName));
91
94
  }
92
95
  }
93
96
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/shader.js"],"names":["assertWebGLContext","log","parseGLSLCompilerError","getShaderName","assert","uid","Resource","ERR_SOURCE","Shader","Symbol","toStringTag","getTypeName","shaderType","constructor","gl","props","source","id","initialize","shaderName","_compile","getParameter","pname","getShaderParameter","handle","toString","getName","getSource","getShaderSource","getTranslatedSource","extension","getExtension","getTranslatedShaderSource","startsWith","shaderSource","compileShader","compileStatus","infoLog","getShaderInfoLog","errors","warnings","error","warn","Error","_deleteHandle","deleteShader","_getOptsFromHandle","type","VertexShader","Object","assign","_createHandle","createShader","FragmentShader"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {assertWebGLContext, log} from '@luma.gl/gltools';\nimport {parseGLSLCompilerError, getShaderName} from '../glsl-utils';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport Resource from './resource';\n\nconst ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';\n\n// For now this is an internal class\nexport class Shader extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Shader';\n }\n\n static getTypeName(shaderType) {\n switch (shaderType) {\n case GL.VERTEX_SHADER:\n return 'vertex-shader';\n case GL.FRAGMENT_SHADER:\n return 'fragment-shader';\n default:\n assert(false);\n return 'unknown';\n }\n }\n\n /* eslint-disable max-statements */\n constructor(gl, props) {\n assertWebGLContext(gl);\n\n // Validate arguments\n assert(typeof props.source === 'string', ERR_SOURCE);\n\n // Deduce an id, from shader source, or supplied id, or shader type\n const id =\n getShaderName(props.source, null) ||\n props.id ||\n uid(`unnamed ${Shader.getTypeName(props.shaderType)}`);\n\n super(gl, {id});\n\n this.shaderType = props.shaderType;\n this.source = props.source;\n\n this.initialize(props);\n }\n\n initialize({source}) {\n const shaderName = getShaderName(source, null);\n if (shaderName) {\n this.id = uid(shaderName);\n }\n this._compile(source);\n }\n\n // Accessors\n\n getParameter(pname) {\n return this.gl.getShaderParameter(this.handle, pname);\n }\n\n toString() {\n return `${Shader.getTypeName(this.shaderType)}:${this.id}`;\n }\n\n getName() {\n return getShaderName(this.source) || 'unnamed-shader';\n }\n\n getSource() {\n return this.gl.getShaderSource(this.handle);\n }\n\n // Debug method - Returns translated source if available\n getTranslatedSource() {\n const extension = this.gl.getExtension('WEBGL_debug_shaders');\n return extension\n ? extension.getTranslatedShaderSource(this.handle)\n : 'No translated source available. WEBGL_debug_shaders not implemented';\n }\n\n // PRIVATE METHODS\n _compile(source = this.source) {\n if (!source.startsWith('#version ')) {\n source = `#version 100\\n${source}`;\n }\n this.source = source;\n this.gl.shaderSource(this.handle, this.source);\n this.gl.compileShader(this.handle);\n\n // TODO - For performance reasons, avoid checking shader compilation errors on production?\n // TODO - Load log even when no error reported, to catch warnings?\n // https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings\n const compileStatus = this.getParameter(GL.COMPILE_STATUS);\n if (!compileStatus) {\n const infoLog = this.gl.getShaderInfoLog(this.handle);\n const {shaderName, errors, warnings} = parseGLSLCompilerError(\n infoLog,\n this.source,\n this.shaderType,\n this.id\n );\n log.error(`GLSL compilation errors in ${shaderName}\\n${errors}`)();\n log.warn(`GLSL compilation warnings in ${shaderName}\\n${warnings}`)();\n throw new Error(`GLSL compilation errors in ${shaderName}`);\n }\n }\n\n _deleteHandle() {\n this.gl.deleteShader(this.handle);\n }\n\n _getOptsFromHandle() {\n return {\n type: this.getParameter(GL.SHADER_TYPE),\n source: this.getSource()\n };\n }\n}\n\nexport class VertexShader extends Shader {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'VertexShader';\n }\n\n constructor(gl, props) {\n // Signature: new VertexShader(gl, source)\n if (typeof props === 'string') {\n props = {source: props};\n }\n super(gl, Object.assign({}, props, {shaderType: GL.VERTEX_SHADER}));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.VERTEX_SHADER);\n }\n}\n\nexport class FragmentShader extends Shader {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'FragmentShader';\n }\n constructor(gl, props) {\n // Signature: new FragmentShader(gl, source)\n if (typeof props === 'string') {\n props = {source: props};\n }\n\n super(gl, Object.assign({}, props, {shaderType: GL.FRAGMENT_SHADER}));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.FRAGMENT_SHADER);\n }\n}\n"],"file":"shader.js"}
1
+ {"version":3,"file":"shader.js","names":["assertWebGLContext","log","parseGLSLCompilerError","getShaderName","assert","uid","Resource","ERR_SOURCE","Shader","Symbol","toStringTag","getTypeName","shaderType","constructor","gl","props","source","id","initialize","shaderName","_compile","getParameter","pname","getShaderParameter","handle","toString","getName","getSource","getShaderSource","getTranslatedSource","extension","getExtension","getTranslatedShaderSource","startsWith","shaderSource","compileShader","compileStatus","infoLog","getShaderInfoLog","errors","warnings","error","warn","Error","_deleteHandle","deleteShader","_getOptsFromHandle","type","VertexShader","Object","assign","_createHandle","createShader","FragmentShader"],"sources":["../../../src/classes/shader.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {assertWebGLContext, log} from '@luma.gl/gltools';\nimport {parseGLSLCompilerError, getShaderName} from '../glsl-utils';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport Resource from './resource';\n\nconst ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';\n\n// For now this is an internal class\nexport class Shader extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Shader';\n }\n\n static getTypeName(shaderType) {\n switch (shaderType) {\n case GL.VERTEX_SHADER:\n return 'vertex-shader';\n case GL.FRAGMENT_SHADER:\n return 'fragment-shader';\n default:\n assert(false);\n return 'unknown';\n }\n }\n\n /* eslint-disable max-statements */\n constructor(gl, props) {\n assertWebGLContext(gl);\n\n // Validate arguments\n assert(typeof props.source === 'string', ERR_SOURCE);\n\n // Deduce an id, from shader source, or supplied id, or shader type\n const id =\n getShaderName(props.source, null) ||\n props.id ||\n uid(`unnamed ${Shader.getTypeName(props.shaderType)}`);\n\n super(gl, {id});\n\n this.shaderType = props.shaderType;\n this.source = props.source;\n\n this.initialize(props);\n }\n\n initialize({source}) {\n const shaderName = getShaderName(source, null);\n if (shaderName) {\n this.id = uid(shaderName);\n }\n this._compile(source);\n }\n\n // Accessors\n\n getParameter(pname) {\n return this.gl.getShaderParameter(this.handle, pname);\n }\n\n toString() {\n return `${Shader.getTypeName(this.shaderType)}:${this.id}`;\n }\n\n getName() {\n return getShaderName(this.source) || 'unnamed-shader';\n }\n\n getSource() {\n return this.gl.getShaderSource(this.handle);\n }\n\n // Debug method - Returns translated source if available\n getTranslatedSource() {\n const extension = this.gl.getExtension('WEBGL_debug_shaders');\n return extension\n ? extension.getTranslatedShaderSource(this.handle)\n : 'No translated source available. WEBGL_debug_shaders not implemented';\n }\n\n // PRIVATE METHODS\n _compile(source = this.source) {\n if (!source.startsWith('#version ')) {\n source = `#version 100\\n${source}`;\n }\n this.source = source;\n this.gl.shaderSource(this.handle, this.source);\n this.gl.compileShader(this.handle);\n\n // TODO - For performance reasons, avoid checking shader compilation errors on production?\n // TODO - Load log even when no error reported, to catch warnings?\n // https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings\n const compileStatus = this.getParameter(GL.COMPILE_STATUS);\n if (!compileStatus) {\n const infoLog = this.gl.getShaderInfoLog(this.handle);\n const {shaderName, errors, warnings} = parseGLSLCompilerError(\n infoLog,\n this.source,\n this.shaderType,\n this.id\n );\n log.error(`GLSL compilation errors in ${shaderName}\\n${errors}`)();\n log.warn(`GLSL compilation warnings in ${shaderName}\\n${warnings}`)();\n throw new Error(`GLSL compilation errors in ${shaderName}`);\n }\n }\n\n _deleteHandle() {\n this.gl.deleteShader(this.handle);\n }\n\n _getOptsFromHandle() {\n return {\n type: this.getParameter(GL.SHADER_TYPE),\n source: this.getSource()\n };\n }\n}\n\nexport class VertexShader extends Shader {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'VertexShader';\n }\n\n constructor(gl, props) {\n // Signature: new VertexShader(gl, source)\n if (typeof props === 'string') {\n props = {source: props};\n }\n super(gl, Object.assign({}, props, {shaderType: GL.VERTEX_SHADER}));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.VERTEX_SHADER);\n }\n}\n\nexport class FragmentShader extends Shader {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'FragmentShader';\n }\n constructor(gl, props) {\n // Signature: new FragmentShader(gl, source)\n if (typeof props === 'string') {\n props = {source: props};\n }\n\n super(gl, Object.assign({}, props, {shaderType: GL.FRAGMENT_SHADER}));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.FRAGMENT_SHADER);\n }\n}\n"],"mappings":"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"}
@@ -10,7 +10,8 @@ export default class Texture2D extends Texture {
10
10
  return Texture.isSupported(gl, opts);
11
11
  }
12
12
 
13
- constructor(gl, props = {}) {
13
+ constructor(gl) {
14
+ let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14
15
  assertWebGLContext(gl);
15
16
 
16
17
  if (props instanceof Promise || typeof props === 'string') {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/texture-2d.js"],"names":["assertWebGLContext","Texture","loadImage","Texture2D","Symbol","toStringTag","isSupported","gl","opts","constructor","props","Promise","data","Object","assign","target","initialize","seal"],"mappings":"AACA,SAAQA,kBAAR,QAAiC,kBAAjC;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,SAAQC,SAAR,QAAwB,oBAAxB;AAEA,eAAe,MAAMC,SAAN,SAAwBF,OAAxB,CAAgC;AAE7C,OAAKG,MAAM,CAACC,WAAZ,IAA2B;AACzB,WAAO,WAAP;AACD;;AAED,SAAOC,WAAP,CAAmBC,EAAnB,EAAuBC,IAAvB,EAA6B;AAC3B,WAAOP,OAAO,CAACK,WAAR,CAAoBC,EAApB,EAAwBC,IAAxB,CAAP;AACD;;AAEDC,EAAAA,WAAW,CAACF,EAAD,EAAKG,KAAK,GAAG,EAAb,EAAiB;AAC1BV,IAAAA,kBAAkB,CAACO,EAAD,CAAlB;;AAGA,QAAIG,KAAK,YAAYC,OAAjB,IAA4B,OAAOD,KAAP,KAAiB,QAAjD,EAA2D;AACzDA,MAAAA,KAAK,GAAG;AAACE,QAAAA,IAAI,EAAEF;AAAP,OAAR;AACD;;AAGD,QAAI,OAAOA,KAAK,CAACE,IAAb,KAAsB,QAA1B,EAAoC;AAClCF,MAAAA,KAAK,GAAGG,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBJ,KAAlB,EAAyB;AAACE,QAAAA,IAAI,EAAEV,SAAS,CAACQ,KAAK,CAACE,IAAP;AAAhB,OAAzB,CAAR;AACD;;AAED,UAAML,EAAN,EAAUM,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBJ,KAAlB,EAAyB;AAACK,MAAAA,MAAM;AAAP,KAAzB,CAAV;AAEA,SAAKC,UAAL,CAAgBN,KAAhB;AAEAG,IAAAA,MAAM,CAACI,IAAP,CAAY,IAAZ;AACD;;AA5B4C","sourcesContent":["import GL from '@luma.gl/constants';\nimport {assertWebGLContext} from '@luma.gl/gltools';\nimport Texture from './texture';\nimport {loadImage} from '../utils/load-file';\n\nexport default class Texture2D extends Texture {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture2D';\n }\n\n static isSupported(gl, opts) {\n return Texture.isSupported(gl, opts);\n }\n\n constructor(gl, props = {}) {\n assertWebGLContext(gl);\n\n // Signature: new Texture2D(gl, url | Promise)\n if (props instanceof Promise || typeof props === 'string') {\n props = {data: props};\n }\n\n // Signature: new Texture2D(gl, {data: url})\n if (typeof props.data === 'string') {\n props = Object.assign({}, props, {data: loadImage(props.data)});\n }\n\n super(gl, Object.assign({}, props, {target: GL.TEXTURE_2D}));\n\n this.initialize(props);\n\n Object.seal(this);\n }\n}\n"],"file":"texture-2d.js"}
1
+ {"version":3,"file":"texture-2d.js","names":["assertWebGLContext","Texture","loadImage","Texture2D","Symbol","toStringTag","isSupported","gl","opts","constructor","props","Promise","data","Object","assign","target","initialize","seal"],"sources":["../../../src/classes/texture-2d.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {assertWebGLContext} from '@luma.gl/gltools';\nimport Texture from './texture';\nimport {loadImage} from '../utils/load-file';\n\nexport default class Texture2D extends Texture {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture2D';\n }\n\n static isSupported(gl, opts) {\n return Texture.isSupported(gl, opts);\n }\n\n constructor(gl, props = {}) {\n assertWebGLContext(gl);\n\n // Signature: new Texture2D(gl, url | Promise)\n if (props instanceof Promise || typeof props === 'string') {\n props = {data: props};\n }\n\n // Signature: new Texture2D(gl, {data: url})\n if (typeof props.data === 'string') {\n props = Object.assign({}, props, {data: loadImage(props.data)});\n }\n\n super(gl, Object.assign({}, props, {target: GL.TEXTURE_2D}));\n\n this.initialize(props);\n\n Object.seal(this);\n }\n}\n"],"mappings":"AACA,SAAQA,kBAAR,QAAiC,kBAAjC;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,SAAQC,SAAR,QAAwB,oBAAxB;AAEA,eAAe,MAAMC,SAAN,SAAwBF,OAAxB,CAAgC;EAEtB,KAAlBG,MAAM,CAACC,WAAW,IAAI;IACzB,OAAO,WAAP;EACD;;EAEiB,OAAXC,WAAW,CAACC,EAAD,EAAKC,IAAL,EAAW;IAC3B,OAAOP,OAAO,CAACK,WAAR,CAAoBC,EAApB,EAAwBC,IAAxB,CAAP;EACD;;EAEDC,WAAW,CAACF,EAAD,EAAiB;IAAA,IAAZG,KAAY,uEAAJ,EAAI;IAC1BV,kBAAkB,CAACO,EAAD,CAAlB;;IAGA,IAAIG,KAAK,YAAYC,OAAjB,IAA4B,OAAOD,KAAP,KAAiB,QAAjD,EAA2D;MACzDA,KAAK,GAAG;QAACE,IAAI,EAAEF;MAAP,CAAR;IACD;;IAGD,IAAI,OAAOA,KAAK,CAACE,IAAb,KAAsB,QAA1B,EAAoC;MAClCF,KAAK,GAAGG,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBJ,KAAlB,EAAyB;QAACE,IAAI,EAAEV,SAAS,CAACQ,KAAK,CAACE,IAAP;MAAhB,CAAzB,CAAR;IACD;;IAED,MAAML,EAAN,EAAUM,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBJ,KAAlB,EAAyB;MAACK,MAAM;IAAP,CAAzB,CAAV;IAEA,KAAKC,UAAL,CAAgBN,KAAhB;IAEAG,MAAM,CAACI,IAAP,CAAY,IAAZ;EACD;;AA5B4C"}
@@ -11,7 +11,8 @@ export default class Texture3D extends Texture {
11
11
  return isWebGL2(gl);
12
12
  }
13
13
 
14
- constructor(gl, props = {}) {
14
+ constructor(gl) {
15
+ let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
15
16
  assertWebGL2Context(gl);
16
17
  props = Object.assign({
17
18
  depth: 1
@@ -24,19 +25,21 @@ export default class Texture3D extends Texture {
24
25
  Object.seal(this);
25
26
  }
26
27
 
27
- setImageData({
28
- level = 0,
29
- dataFormat = 6408,
30
- width,
31
- height,
32
- depth = 1,
33
- border = 0,
34
- format,
35
- type = 5121,
36
- offset = 0,
37
- data,
38
- parameters = {}
39
- }) {
28
+ setImageData(_ref) {
29
+ let {
30
+ level = 0,
31
+ dataFormat = 6408,
32
+ width,
33
+ height,
34
+ depth = 1,
35
+ border = 0,
36
+ format,
37
+ type = 5121,
38
+ offset = 0,
39
+ data,
40
+ parameters = {}
41
+ } = _ref;
42
+
40
43
  this._trackDeallocatedMemory('Texture');
41
44
 
42
45
  this.gl.bindTexture(this.target, this.handle);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/texture-3d.js"],"names":["isWebGL2","assertWebGL2Context","withParameters","Texture","DATA_FORMAT_CHANNELS","TYPE_SIZES","Buffer","Texture3D","Symbol","toStringTag","isSupported","gl","constructor","props","Object","assign","depth","target","unpackFlipY","initialize","seal","setImageData","level","dataFormat","width","height","border","format","type","offset","data","parameters","_trackDeallocatedMemory","bindTexture","handle","ArrayBuffer","isView","texImage3D","bindBuffer","byteLength","_trackAllocatedMemory","channels","channelSize","loaded"],"mappings":"AACA,SAAQA,QAAR,EAAkBC,mBAAlB,EAAuCC,cAAvC,QAA4D,kBAA5D;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,SAAQC,oBAAR,EAA8BC,UAA9B,QAA+C,mBAA/C;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA,eAAe,MAAMC,SAAN,SAAwBJ,OAAxB,CAAgC;AAE7C,OAAKK,MAAM,CAACC,WAAZ,IAA2B;AACzB,WAAO,WAAP;AACD;;AAED,SAAOC,WAAP,CAAmBC,EAAnB,EAAuB;AACrB,WAAOX,QAAQ,CAACW,EAAD,CAAf;AACD;;AAEDC,EAAAA,WAAW,CAACD,EAAD,EAAKE,KAAK,GAAG,EAAb,EAAiB;AAC1BZ,IAAAA,mBAAmB,CAACU,EAAD,CAAnB;AACAE,IAAAA,KAAK,GAAGC,MAAM,CAACC,MAAP,CAAc;AAACC,MAAAA,KAAK,EAAE;AAAR,KAAd,EAA0BH,KAA1B,EAAiC;AAACI,MAAAA,MAAM,OAAP;AAAwBC,MAAAA,WAAW,EAAE;AAArC,KAAjC,CAAR;AACA,UAAMP,EAAN,EAAUE,KAAV;AACA,SAAKM,UAAL,CAAgBN,KAAhB;AAEAC,IAAAA,MAAM,CAACM,IAAP,CAAY,IAAZ;AACD;;AAGDC,EAAAA,YAAY,CAAC;AACXC,IAAAA,KAAK,GAAG,CADG;AAEXC,IAAAA,UAAU,OAFC;AAGXC,IAAAA,KAHW;AAIXC,IAAAA,MAJW;AAKXT,IAAAA,KAAK,GAAG,CALG;AAMXU,IAAAA,MAAM,GAAG,CANE;AAOXC,IAAAA,MAPW;AAQXC,IAAAA,IAAI,OARO;AASXC,IAAAA,MAAM,GAAG,CATE;AAUXC,IAAAA,IAVW;AAWXC,IAAAA,UAAU,GAAG;AAXF,GAAD,EAYT;AACD,SAAKC,uBAAL,CAA6B,SAA7B;;AAEA,SAAKrB,EAAL,CAAQsB,WAAR,CAAoB,KAAKhB,MAAzB,EAAiC,KAAKiB,MAAtC;AAEAhC,IAAAA,cAAc,CAAC,KAAKS,EAAN,EAAUoB,UAAV,EAAsB,MAAM;AACxC,UAAII,WAAW,CAACC,MAAZ,CAAmBN,IAAnB,CAAJ,EAA8B;AAE5B,aAAKnB,EAAL,CAAQ0B,UAAR,CACE,KAAKpB,MADP,EAEEK,KAFF,EAGEC,UAHF,EAIEC,KAJF,EAKEC,MALF,EAMET,KANF,EAOEU,MAPF,EAQEC,MARF,EASEC,IATF,EAUEE,IAVF;AAYD;;AAED,UAAIA,IAAI,YAAYxB,MAApB,EAA4B;AAC1B,aAAKK,EAAL,CAAQ2B,UAAR,QAA2CR,IAAI,CAACI,MAAhD;AAEA,aAAKvB,EAAL,CAAQ0B,UAAR,CACE,KAAKpB,MADP,EAEEK,KAFF,EAGEC,UAHF,EAIEC,KAJF,EAKEC,MALF,EAMET,KANF,EAOEU,MAPF,EAQEC,MARF,EASEC,IATF,EAUEC,MAVF;AAYD;AACF,KAjCa,CAAd;;AAmCA,QAAIC,IAAI,IAAIA,IAAI,CAACS,UAAjB,EAA6B;AAC3B,WAAKC,qBAAL,CAA2BV,IAAI,CAACS,UAAhC,EAA4C,SAA5C;AACD,KAFD,MAEO;AAGL,YAAME,QAAQ,GAAGrC,oBAAoB,CAAC,KAAKmB,UAAN,CAApB,IAAyC,CAA1D;AAEA,YAAMmB,WAAW,GAAGrC,UAAU,CAAC,KAAKuB,IAAN,CAAV,IAAyB,CAA7C;;AAEA,WAAKY,qBAAL,CACE,KAAKhB,KAAL,GAAa,KAAKC,MAAlB,GAA2B,KAAKT,KAAhC,GAAwCyB,QAAxC,GAAmDC,WADrD,EAEE,SAFF;AAID;;AAED,SAAKC,MAAL,GAAc,IAAd;AAEA,WAAO,IAAP;AACD;;AA1F4C","sourcesContent":["import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, withParameters} from '@luma.gl/gltools';\nimport Texture from './texture';\nimport {DATA_FORMAT_CHANNELS, TYPE_SIZES} from './texture-formats';\nimport Buffer from './buffer';\n\nexport default class Texture3D extends Texture {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture3D';\n }\n\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n assertWebGL2Context(gl);\n props = Object.assign({depth: 1}, props, {target: GL.TEXTURE_3D, unpackFlipY: false});\n super(gl, props);\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // Image 3D copies from Typed Array or WebGLBuffer\n setImageData({\n level = 0,\n dataFormat = GL.RGBA,\n width,\n height,\n depth = 1,\n border = 0,\n format,\n type = GL.UNSIGNED_BYTE,\n offset = 0,\n data,\n parameters = {}\n }) {\n this._trackDeallocatedMemory('Texture');\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n if (ArrayBuffer.isView(data)) {\n // @ts-ignore\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n data\n );\n }\n\n if (data instanceof Buffer) {\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);\n // @ts-ignore\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n offset\n );\n }\n });\n\n if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n // @ts-ignore\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n // @ts-ignore\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(\n this.width * this.height * this.depth * channels * channelSize,\n 'Texture'\n );\n }\n\n this.loaded = true;\n\n return this;\n }\n}\n"],"file":"texture-3d.js"}
1
+ {"version":3,"file":"texture-3d.js","names":["isWebGL2","assertWebGL2Context","withParameters","Texture","DATA_FORMAT_CHANNELS","TYPE_SIZES","Buffer","Texture3D","Symbol","toStringTag","isSupported","gl","constructor","props","Object","assign","depth","target","unpackFlipY","initialize","seal","setImageData","level","dataFormat","width","height","border","format","type","offset","data","parameters","_trackDeallocatedMemory","bindTexture","handle","ArrayBuffer","isView","texImage3D","bindBuffer","byteLength","_trackAllocatedMemory","channels","channelSize","loaded"],"sources":["../../../src/classes/texture-3d.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, withParameters} from '@luma.gl/gltools';\nimport Texture from './texture';\nimport {DATA_FORMAT_CHANNELS, TYPE_SIZES} from './texture-formats';\nimport Buffer from './buffer';\n\nexport default class Texture3D extends Texture {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture3D';\n }\n\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n assertWebGL2Context(gl);\n props = Object.assign({depth: 1}, props, {target: GL.TEXTURE_3D, unpackFlipY: false});\n super(gl, props);\n this.initialize(props);\n\n Object.seal(this);\n }\n\n // Image 3D copies from Typed Array or WebGLBuffer\n setImageData({\n level = 0,\n dataFormat = GL.RGBA,\n width,\n height,\n depth = 1,\n border = 0,\n format,\n type = GL.UNSIGNED_BYTE,\n offset = 0,\n data,\n parameters = {}\n }) {\n this._trackDeallocatedMemory('Texture');\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n if (ArrayBuffer.isView(data)) {\n // @ts-ignore\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n data\n );\n }\n\n if (data instanceof Buffer) {\n this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);\n // @ts-ignore\n this.gl.texImage3D(\n this.target,\n level,\n dataFormat,\n width,\n height,\n depth,\n border,\n format,\n type,\n offset\n );\n }\n });\n\n if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n // @ts-ignore\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n // @ts-ignore\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(\n this.width * this.height * this.depth * channels * channelSize,\n 'Texture'\n );\n }\n\n this.loaded = true;\n\n return this;\n }\n}\n"],"mappings":"AACA,SAAQA,QAAR,EAAkBC,mBAAlB,EAAuCC,cAAvC,QAA4D,kBAA5D;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,SAAQC,oBAAR,EAA8BC,UAA9B,QAA+C,mBAA/C;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA,eAAe,MAAMC,SAAN,SAAwBJ,OAAxB,CAAgC;EAEtB,KAAlBK,MAAM,CAACC,WAAW,IAAI;IACzB,OAAO,WAAP;EACD;;EAEiB,OAAXC,WAAW,CAACC,EAAD,EAAK;IACrB,OAAOX,QAAQ,CAACW,EAAD,CAAf;EACD;;EAEDC,WAAW,CAACD,EAAD,EAAiB;IAAA,IAAZE,KAAY,uEAAJ,EAAI;IAC1BZ,mBAAmB,CAACU,EAAD,CAAnB;IACAE,KAAK,GAAGC,MAAM,CAACC,MAAP,CAAc;MAACC,KAAK,EAAE;IAAR,CAAd,EAA0BH,KAA1B,EAAiC;MAACI,MAAM,OAAP;MAAwBC,WAAW,EAAE;IAArC,CAAjC,CAAR;IACA,MAAMP,EAAN,EAAUE,KAAV;IACA,KAAKM,UAAL,CAAgBN,KAAhB;IAEAC,MAAM,CAACM,IAAP,CAAY,IAAZ;EACD;;EAGDC,YAAY,OAYT;IAAA,IAZU;MACXC,KAAK,GAAG,CADG;MAEXC,UAAU,OAFC;MAGXC,KAHW;MAIXC,MAJW;MAKXT,KAAK,GAAG,CALG;MAMXU,MAAM,GAAG,CANE;MAOXC,MAPW;MAQXC,IAAI,OARO;MASXC,MAAM,GAAG,CATE;MAUXC,IAVW;MAWXC,UAAU,GAAG;IAXF,CAYV;;IACD,KAAKC,uBAAL,CAA6B,SAA7B;;IAEA,KAAKrB,EAAL,CAAQsB,WAAR,CAAoB,KAAKhB,MAAzB,EAAiC,KAAKiB,MAAtC;IAEAhC,cAAc,CAAC,KAAKS,EAAN,EAAUoB,UAAV,EAAsB,MAAM;MACxC,IAAII,WAAW,CAACC,MAAZ,CAAmBN,IAAnB,CAAJ,EAA8B;QAE5B,KAAKnB,EAAL,CAAQ0B,UAAR,CACE,KAAKpB,MADP,EAEEK,KAFF,EAGEC,UAHF,EAIEC,KAJF,EAKEC,MALF,EAMET,KANF,EAOEU,MAPF,EAQEC,MARF,EASEC,IATF,EAUEE,IAVF;MAYD;;MAED,IAAIA,IAAI,YAAYxB,MAApB,EAA4B;QAC1B,KAAKK,EAAL,CAAQ2B,UAAR,QAA2CR,IAAI,CAACI,MAAhD;QAEA,KAAKvB,EAAL,CAAQ0B,UAAR,CACE,KAAKpB,MADP,EAEEK,KAFF,EAGEC,UAHF,EAIEC,KAJF,EAKEC,MALF,EAMET,KANF,EAOEU,MAPF,EAQEC,MARF,EASEC,IATF,EAUEC,MAVF;MAYD;IACF,CAjCa,CAAd;;IAmCA,IAAIC,IAAI,IAAIA,IAAI,CAACS,UAAjB,EAA6B;MAC3B,KAAKC,qBAAL,CAA2BV,IAAI,CAACS,UAAhC,EAA4C,SAA5C;IACD,CAFD,MAEO;MAGL,MAAME,QAAQ,GAAGrC,oBAAoB,CAAC,KAAKmB,UAAN,CAApB,IAAyC,CAA1D;MAEA,MAAMmB,WAAW,GAAGrC,UAAU,CAAC,KAAKuB,IAAN,CAAV,IAAyB,CAA7C;;MAEA,KAAKY,qBAAL,CACE,KAAKhB,KAAL,GAAa,KAAKC,MAAlB,GAA2B,KAAKT,KAAhC,GAAwCyB,QAAxC,GAAmDC,WADrD,EAEE,SAFF;IAID;;IAED,KAAKC,MAAL,GAAc,IAAd;IAEA,OAAO,IAAP;EACD;;AA1F4C"}