@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/texture-formats.js"],"names":["TEXTURE_FORMATS","dataFormat","types","gl2","DATA_FORMAT_CHANNELS","TYPE_SIZES","isFormatSupported","gl","format","info","gl1","undefined","value","getExtension","isLinearFilteringSupported"],"mappings":";;;;;;;;;;;;;AACA;;;;AAUO,IAAMA,eAAe,iFAEhB;AAACC,EAAAA,UAAU,MAAX;AAAqBC,EAAAA,KAAK,EAAE;AAA5B,CAFgB,yDAKf;AACTD,EAAAA,UAAU,MADD;AAETC,EAAAA,KAAK,EAAE;AAFE,CALe,yDASd;AAACD,EAAAA,UAAU,MAAX;AAAuBC,EAAAA,KAAK,EAAE;AAA9B,CATc,yDAUV;AAACD,EAAAA,UAAU,MAAX;AAA2BC,EAAAA,KAAK,EAAE;AAAlC,CAVU,yDAWJ;AAACD,EAAAA,UAAU,MAAX;AAAiCC,EAAAA,KAAK,EAAE;AAAxC,CAXI,0DAcf;AAACD,EAAAA,UAAU,MAAX;AAAqBC,EAAAA,KAAK,EAAE,MAA5B;AAAwCC,EAAAA,GAAG,EAAE;AAA7C,CAde,0DAed;AAACF,EAAAA,UAAU,OAAX;AAAoBC,EAAAA,KAAK,EAAE,MAA3B;AAAuCC,EAAAA,GAAG,EAAE;AAA5C,CAfc,0DAgBb;AAACF,EAAAA,UAAU,MAAX;AAAqBC,EAAAA,KAAK,EAAE,MAA5B;AAAwCC,EAAAA,GAAG,EAAE;AAA7C,CAhBa,0DAiBZ;AAACF,EAAAA,UAAU,MAAX;AAAsBC,EAAAA,KAAK,EAAE,MAA7B;AAAyCC,EAAAA,GAAG,EAAE;AAA9C,CAjBY,oBAArB;;AAmGA,IAAMC,oBAAoB,2FACrB,CADqB,+DAEb,CAFa,+DAGtB,CAHsB,+DAId,CAJc,8DAKrB,CALqB,+DAMb,CANa,8DAOpB,CAPoB,+DAQZ,CARY,8DAST,CATS,+DAUX,CAVW,8DAWnB,CAXmB,8DAYf,CAZe,8DAaT,CAbS,yBAA1B;;AAgBA,IAAMC,UAAU,uEACT,CADS,oDAEF,CAFE,oDAGX,CAHW,oDAIA,CAJA,oDAKT,CALS,oDAMJ,CANI,oDAOV,CAPU,oDAQD,CARC,eAAhB;;;AAWA,SAASC,iBAAT,CAA2BC,EAA3B,EAA+BC,MAA/B,EAAuC;AAC5C,MAAMC,IAAI,GAAGT,eAAe,CAACQ,MAAD,CAA5B;;AACA,MAAI,CAACC,IAAL,EAAW;AACT,WAAO,KAAP;AACD;;AACD,MAAIA,IAAI,CAACC,GAAL,KAAaC,SAAb,IAA0BF,IAAI,CAACN,GAAL,KAAaQ,SAA3C,EAAsD;AAEpD,WAAO,IAAP;AACD;;AACD,MAAMC,KAAK,GAAG,uBAASL,EAAT,IAAeE,IAAI,CAACN,GAAL,IAAYM,IAAI,CAACC,GAAhC,GAAsCD,IAAI,CAACC,GAAzD;AACA,SAAO,OAAOE,KAAP,KAAiB,QAAjB,GAA4BL,EAAE,CAACM,YAAH,CAAgBD,KAAhB,CAA5B,GAAqDA,KAA5D;AACD;;AAEM,SAASE,0BAAT,CAAoCP,EAApC,EAAwCC,MAAxC,EAAgD;AACrD,MAAMC,IAAI,GAAGT,eAAe,CAACQ,MAAD,CAA5B;;AACA,UAAQC,IAAI,IAAIA,IAAI,CAACP,KAAL,CAAW,CAAX,CAAhB;AAEE;AACE,aAAOK,EAAE,CAACM,YAAH,CAAgB,0BAAhB,CAAP;;AAEF;AACE,aAAON,EAAE,CAACM,YAAH,CAAgB,+BAAhB,CAAP;;AACF;AACE,aAAO,IAAP;AARJ;AAUD","sourcesContent":["import GL from '@luma.gl/constants';\nimport {isWebGL2} from '@luma.gl/gltools';\n\n// const S3TC = 'WEBGL_compressed_texture_s3tc';\n// const PVRTC = 'WEBGL_compressed_texture_pvrtc';\n// const ES3 = 'WEBGL_compressed_texture_es3';\n// const ETC1 = 'WEBGL_compressed_texture_etc1';\n// const SRGB = 'EXT_sRGB';\n// const DEPTH = 'WEBGL_depth_texture';\n\n// Legal combinations for internalFormat, format and type\nexport const TEXTURE_FORMATS = {\n // Unsized texture format - more performance\n [GL.RGB]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n // TODO: format: GL.RGBA type: GL.FLOAT is supported in WebGL1 when 'OES_texure_float' is suported\n // we need to update this table structure to specify extensions (gl1: 'OES_texure_float', gl2: false) for each type.\n [GL.RGBA]: {\n dataFormat: GL.RGBA,\n types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]\n },\n [GL.ALPHA]: {dataFormat: GL.ALPHA, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE]: {dataFormat: GL.LUMINANCE, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE_ALPHA]: {dataFormat: GL.LUMINANCE_ALPHA, types: [GL.UNSIGNED_BYTE]},\n\n // 32 bit floats\n [GL.R32F]: {dataFormat: GL.RED, types: [GL.FLOAT], gl2: true},\n [GL.RG32F]: {dataFormat: GL.RG, types: [GL.FLOAT], gl2: true},\n [GL.RGB32F]: {dataFormat: GL.RGB, types: [GL.FLOAT], gl2: true},\n [GL.RGBA32F]: {dataFormat: GL.RGBA, types: [GL.FLOAT], gl2: true}\n\n // [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1: DEPTH},\n // [GL.DEPTH_STENCIL]: {gl1: DEPTH},\n\n // Sized texture format - more performance\n // R\n // [GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RG\n // [GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGB\n // [GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n // [GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_half_float'},\n // [GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_float'},\n // [GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGBA\n // [GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n // [GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n // [GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n\n // Compressed formats\n\n // WEBGL_compressed_texture_s3tc\n\n // [GL.COMPRESSED_RGB_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT3_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT5_EXT]: {compressed: true, gl1: S3TC},\n\n // WEBGL_compressed_texture_es3\n\n // [GL.COMPRESSED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_SIGNED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_SIGNED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_RGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_RGBA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RBG\n // [GL.COMPRESSED_SRGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n /* WebGL2 guaranteed availability compressed formats?\n COMPRESSED_R11_EAC RED\n COMPRESSED_SIGNED_R11_EAC RED\n COMPRESSED_RG11_EAC RG\n COMPRESSED_SIGNED_RG11_EAC RG\n COMPRESSED_RGB8_ETC2 RGB\n COMPRESSED_SRGB8_ETC2 RGB\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_RGBA8_ETC2_EAC RGBA\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n */\n\n // WEBGL_compressed_texture_pvrtc\n\n // [GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n\n // WEBGL_compressed_texture_etc1\n\n // [GL.COMPRESSED_RGB_ETC1_WEBGL]: {compressed: true, gl1: ETC1},\n\n // WEBGL_compressed_texture_atc\n\n // [GL.COMPRESSED_RGB_ATC_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL]: {compressed: true, gl1: ETC1}\n};\n\nexport const DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\nexport const TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\nexport function isFormatSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n if (info.gl1 === undefined && info.gl2 === undefined) {\n // No info - always supported\n return true;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n return typeof value === 'string' ? gl.getExtension(value) : value;\n}\n\nexport function isLinearFilteringSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n switch (info && info.types[0]) {\n // Both WebGL1 and WebGL2?\n case GL.FLOAT:\n return gl.getExtension('OES_texture_float_linear');\n // Not in WebGL2?\n case GL.HALF_FLOAT:\n return gl.getExtension('OES_texture_half_float_linear');\n default:\n return true;\n }\n}\n"],"file":"texture-formats.js"}
1
+ {"version":3,"file":"texture-formats.js","names":["TEXTURE_FORMATS","dataFormat","types","gl2","DATA_FORMAT_CHANNELS","TYPE_SIZES","isFormatSupported","gl","format","info","gl1","undefined","value","isWebGL2","getExtension","isLinearFilteringSupported"],"sources":["../../../src/classes/texture-formats.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {isWebGL2} from '@luma.gl/gltools';\n\n// const S3TC = 'WEBGL_compressed_texture_s3tc';\n// const PVRTC = 'WEBGL_compressed_texture_pvrtc';\n// const ES3 = 'WEBGL_compressed_texture_es3';\n// const ETC1 = 'WEBGL_compressed_texture_etc1';\n// const SRGB = 'EXT_sRGB';\n// const DEPTH = 'WEBGL_depth_texture';\n\n// Legal combinations for internalFormat, format and type\nexport const TEXTURE_FORMATS = {\n // Unsized texture format - more performance\n [GL.RGB]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5]},\n // TODO: format: GL.RGBA type: GL.FLOAT is supported in WebGL1 when 'OES_texure_float' is suported\n // we need to update this table structure to specify extensions (gl1: 'OES_texure_float', gl2: false) for each type.\n [GL.RGBA]: {\n dataFormat: GL.RGBA,\n types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4, GL.UNSIGNED_SHORT_5_5_5_1]\n },\n [GL.ALPHA]: {dataFormat: GL.ALPHA, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE]: {dataFormat: GL.LUMINANCE, types: [GL.UNSIGNED_BYTE]},\n [GL.LUMINANCE_ALPHA]: {dataFormat: GL.LUMINANCE_ALPHA, types: [GL.UNSIGNED_BYTE]},\n\n // 32 bit floats\n [GL.R32F]: {dataFormat: GL.RED, types: [GL.FLOAT], gl2: true},\n [GL.RG32F]: {dataFormat: GL.RG, types: [GL.FLOAT], gl2: true},\n [GL.RGB32F]: {dataFormat: GL.RGB, types: [GL.FLOAT], gl2: true},\n [GL.RGBA32F]: {dataFormat: GL.RGBA, types: [GL.FLOAT], gl2: true}\n\n // [GL.DEPTH_COMPONENT]: {types: [GL.UNSIGNED_SHORT, GL.UNSIGNED_INT, GL.UNSIGNED_INT_24_8], gl1: DEPTH},\n // [GL.DEPTH_STENCIL]: {gl1: DEPTH},\n\n // Sized texture format - more performance\n // R\n // [GL.R8]: {dataFormat: GL.RED, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.R16F]: {dataFormat: GL.RED, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.R8UI]: {dataFormat: GL.RED_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RG\n // [GL.RG8]: {dataFormat: GL.RG, types: [GL.UNSIGNED_BYTE], gl2: true},\n // [GL.RG16F]: {dataFormat: GL.RG, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RG8UI]: {dataFormat: GL.RG_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGB\n // [GL.RGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB565]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_6_5], gl2: true},\n // [GL.R11F_G11F_B10F]: {dataFormat: GL.RGB, types: [GL.UNSIGNED_INT_10F_11F_11F_REV, GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGB9_E5]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_half_float'},\n // [GL.RGB16F]: {dataFormat: GL.RGB, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true, gl1: 'WEBGL_color_buffer_float'},\n // [GL.RGB8UI]: {dataFormat: GL.RGB_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true},\n // // RGBA\n // [GL.RGBA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.SRGB8_ALPHA8]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE], gl2: true, gl1: SRGB},\n // [GL.RGB5_A1]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_5_5_5_1], gl2: true},\n // [GL.RGBA4]: {dataFormat: GL.RGBA, types: [GL.UNSIGNED_BYTE, GL.UNSIGNED_SHORT_4_4_4_4], gl2: true},\n // [GL.RGBA16F]: {dataFormat: GL.RGBA, types: [GL.HALF_FLOAT, GL.FLOAT], gl2: true},\n // [GL.RGBA8UI]: {dataFormat: GL.RGBA_INTEGER, types: [GL.UNSIGNED_BYTE], gl2: true}\n\n // Compressed formats\n\n // WEBGL_compressed_texture_s3tc\n\n // [GL.COMPRESSED_RGB_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT1_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT3_EXT]: {compressed: true, gl1: S3TC},\n // [GL.COMPRESSED_RGBA_S3TC_DXT5_EXT]: {compressed: true, gl1: S3TC},\n\n // WEBGL_compressed_texture_es3\n\n // [GL.COMPRESSED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_SIGNED_R11_EAC]: {compressed: true, gl1: ES3}, // RED\n // [GL.COMPRESSED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_SIGNED_RG11_EAC]: {compressed: true, gl1: ES3}, // RG\n // [GL.COMPRESSED_RGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_RGBA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RBG\n // [GL.COMPRESSED_SRGB8_ETC2]: {compressed: true, gl1: ES3}, // RGB\n // [GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n // [GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2]: {compressed: true, gl1: ES3}, // RGBA\n /* WebGL2 guaranteed availability compressed formats?\n COMPRESSED_R11_EAC RED\n COMPRESSED_SIGNED_R11_EAC RED\n COMPRESSED_RG11_EAC RG\n COMPRESSED_SIGNED_RG11_EAC RG\n COMPRESSED_RGB8_ETC2 RGB\n COMPRESSED_SRGB8_ETC2 RGB\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA\n COMPRESSED_RGBA8_ETC2_EAC RGBA\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n */\n\n // WEBGL_compressed_texture_pvrtc\n\n // [GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n // [GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG]: {compressed: true, gl1: PVRTC},\n\n // WEBGL_compressed_texture_etc1\n\n // [GL.COMPRESSED_RGB_ETC1_WEBGL]: {compressed: true, gl1: ETC1},\n\n // WEBGL_compressed_texture_atc\n\n // [GL.COMPRESSED_RGB_ATC_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL]: {compressed: true, gl1: ETC1},\n // [GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL]: {compressed: true, gl1: ETC1}\n};\n\nexport const DATA_FORMAT_CHANNELS = {\n [GL.RED]: 1,\n [GL.RED_INTEGER]: 1,\n [GL.RG]: 2,\n [GL.RG_INTEGER]: 2,\n [GL.RGB]: 3,\n [GL.RGB_INTEGER]: 3,\n [GL.RGBA]: 4,\n [GL.RGBA_INTEGER]: 4,\n [GL.DEPTH_COMPONENT]: 1,\n [GL.DEPTH_STENCIL]: 1,\n [GL.ALPHA]: 1,\n [GL.LUMINANCE]: 1,\n [GL.LUMINANCE_ALPHA]: 2\n};\n\nexport const TYPE_SIZES = {\n [GL.FLOAT]: 4,\n [GL.UNSIGNED_INT]: 4,\n [GL.INT]: 4,\n [GL.UNSIGNED_SHORT]: 2,\n [GL.SHORT]: 2,\n [GL.HALF_FLOAT]: 2,\n [GL.BYTE]: 1,\n [GL.UNSIGNED_BYTE]: 1\n};\n\nexport function isFormatSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n if (!info) {\n return false;\n }\n if (info.gl1 === undefined && info.gl2 === undefined) {\n // No info - always supported\n return true;\n }\n const value = isWebGL2(gl) ? info.gl2 || info.gl1 : info.gl1;\n return typeof value === 'string' ? gl.getExtension(value) : value;\n}\n\nexport function isLinearFilteringSupported(gl, format) {\n const info = TEXTURE_FORMATS[format];\n switch (info && info.types[0]) {\n // Both WebGL1 and WebGL2?\n case GL.FLOAT:\n return gl.getExtension('OES_texture_float_linear');\n // Not in WebGL2?\n case GL.HALF_FLOAT:\n return gl.getExtension('OES_texture_half_float_linear');\n default:\n return true;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AACA;;;;AAUO,IAAMA,eAAe,iFAEhB;EAACC,UAAU,MAAX;EAAqBC,KAAK,EAAE;AAA5B,CAFgB,yDAKf;EACTD,UAAU,MADD;EAETC,KAAK,EAAE;AAFE,CALe,yDASd;EAACD,UAAU,MAAX;EAAuBC,KAAK,EAAE;AAA9B,CATc,yDAUV;EAACD,UAAU,MAAX;EAA2BC,KAAK,EAAE;AAAlC,CAVU,yDAWJ;EAACD,UAAU,MAAX;EAAiCC,KAAK,EAAE;AAAxC,CAXI,0DAcf;EAACD,UAAU,MAAX;EAAqBC,KAAK,EAAE,MAA5B;EAAwCC,GAAG,EAAE;AAA7C,CAde,0DAed;EAACF,UAAU,OAAX;EAAoBC,KAAK,EAAE,MAA3B;EAAuCC,GAAG,EAAE;AAA5C,CAfc,0DAgBb;EAACF,UAAU,MAAX;EAAqBC,KAAK,EAAE,MAA5B;EAAwCC,GAAG,EAAE;AAA7C,CAhBa,0DAiBZ;EAACF,UAAU,MAAX;EAAsBC,KAAK,EAAE,MAA7B;EAAyCC,GAAG,EAAE;AAA9C,CAjBY,oBAArB;;AAmGA,IAAMC,oBAAoB,2FACrB,CADqB,+DAEb,CAFa,+DAGtB,CAHsB,+DAId,CAJc,8DAKrB,CALqB,+DAMb,CANa,8DAOpB,CAPoB,+DAQZ,CARY,8DAST,CATS,+DAUX,CAVW,8DAWnB,CAXmB,8DAYf,CAZe,8DAaT,CAbS,yBAA1B;;AAgBA,IAAMC,UAAU,uEACT,CADS,oDAEF,CAFE,oDAGX,CAHW,oDAIA,CAJA,oDAKT,CALS,oDAMJ,CANI,oDAOV,CAPU,oDAQD,CARC,eAAhB;;;AAWA,SAASC,iBAAT,CAA2BC,EAA3B,EAA+BC,MAA/B,EAAuC;EAC5C,IAAMC,IAAI,GAAGT,eAAe,CAACQ,MAAD,CAA5B;;EACA,IAAI,CAACC,IAAL,EAAW;IACT,OAAO,KAAP;EACD;;EACD,IAAIA,IAAI,CAACC,GAAL,KAAaC,SAAb,IAA0BF,IAAI,CAACN,GAAL,KAAaQ,SAA3C,EAAsD;IAEpD,OAAO,IAAP;EACD;;EACD,IAAMC,KAAK,GAAG,IAAAC,iBAAA,EAASN,EAAT,IAAeE,IAAI,CAACN,GAAL,IAAYM,IAAI,CAACC,GAAhC,GAAsCD,IAAI,CAACC,GAAzD;EACA,OAAO,OAAOE,KAAP,KAAiB,QAAjB,GAA4BL,EAAE,CAACO,YAAH,CAAgBF,KAAhB,CAA5B,GAAqDA,KAA5D;AACD;;AAEM,SAASG,0BAAT,CAAoCR,EAApC,EAAwCC,MAAxC,EAAgD;EACrD,IAAMC,IAAI,GAAGT,eAAe,CAACQ,MAAD,CAA5B;;EACA,QAAQC,IAAI,IAAIA,IAAI,CAACP,KAAL,CAAW,CAAX,CAAhB;IAEE;MACE,OAAOK,EAAE,CAACO,YAAH,CAAgB,0BAAhB,CAAP;;IAEF;MACE,OAAOP,EAAE,CAACO,YAAH,CAAgB,+BAAhB,CAAP;;IACF;MACE,OAAO,IAAP;EARJ;AAUD"}
@@ -31,7 +31,7 @@ var _assert = require("../utils/assert");
31
31
 
32
32
  var _utils = require("../utils/utils");
33
33
 
34
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
34
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
35
35
 
36
36
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
37
37
 
@@ -39,39 +39,17 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
39
39
 
40
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
41
41
 
42
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
42
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
43
43
 
44
44
  var NPOT_MIN_FILTERS = [9729, 9728];
45
45
 
46
46
  var WebGLBuffer = globalThis.WebGLBuffer || function WebGLBuffer() {};
47
47
 
48
- var Texture = function (_Resource) {
48
+ var Texture = function (_Resource, _Symbol$toStringTag) {
49
49
  (0, _inherits2.default)(Texture, _Resource);
50
50
 
51
51
  var _super = _createSuper(Texture);
52
52
 
53
- (0, _createClass2.default)(Texture, [{
54
- key: Symbol.toStringTag,
55
- get: function get() {
56
- return 'Texture';
57
- }
58
- }], [{
59
- key: "isSupported",
60
- value: function isSupported(gl) {
61
- var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
62
- var format = opts.format,
63
- linearFiltering = opts.linearFiltering;
64
- var supported = true;
65
-
66
- if (format) {
67
- supported = supported && (0, _textureFormats.isFormatSupported)(gl, format);
68
- supported = supported && (!linearFiltering || (0, _textureFormats.isLinearFilteringSupported)(gl, format));
69
- }
70
-
71
- return supported;
72
- }
73
- }]);
74
-
75
53
  function Texture(gl, props) {
76
54
  var _this;
77
55
 
@@ -100,6 +78,11 @@ var Texture = function (_Resource) {
100
78
  }
101
79
 
102
80
  (0, _createClass2.default)(Texture, [{
81
+ key: _Symbol$toStringTag,
82
+ get: function get() {
83
+ return 'Texture';
84
+ }
85
+ }, {
103
86
  key: "toString",
104
87
  value: function toString() {
105
88
  return "Texture(".concat(this.id, ",").concat(this.width, "x").concat(this.height, ")");
@@ -797,9 +780,24 @@ var Texture = function (_Resource) {
797
780
 
798
781
  return param;
799
782
  }
783
+ }], [{
784
+ key: "isSupported",
785
+ value: function isSupported(gl) {
786
+ var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
787
+ var format = opts.format,
788
+ linearFiltering = opts.linearFiltering;
789
+ var supported = true;
790
+
791
+ if (format) {
792
+ supported = supported && (0, _textureFormats.isFormatSupported)(gl, format);
793
+ supported = supported && (!linearFiltering || (0, _textureFormats.isLinearFilteringSupported)(gl, format));
794
+ }
795
+
796
+ return supported;
797
+ }
800
798
  }]);
801
799
  return Texture;
802
- }(_resource.default);
800
+ }(_resource.default, Symbol.toStringTag);
803
801
 
804
802
  exports.default = Texture;
805
803
  //# sourceMappingURL=texture.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/texture.js"],"names":["NPOT_MIN_FILTERS","WebGLBuffer","globalThis","Texture","Symbol","toStringTag","gl","opts","format","linearFiltering","supported","props","id","handle","target","textureUnit","undefined","loaded","width","height","depth","type","dataFormat","border","mipmaps","data","Promise","then","resolvedImageData","initialize","Object","assign","pixels","isVideo","HTMLVideoElement","readyState","HAVE_METADATA","_video","addEventListener","recreate","parameters","pixelStore","compressed","_deduceParameters","Number","isFinite","activeTexture","bindTexture","_isNPOT","log","warn","_updateForNPOT","setImageData","generateMipmap","setParameters","video","lastTime","HAVE_CURRENT_DATA","currentTime","setSubImageData","params","options","_trackDeallocatedMemory","level","offset","dataType","_getDataType","gl2","compressedTextureSize","texImage2D","bindBuffer","entries","levelIndex","levelData","compressedTexImage2D","levelSize","_trackAllocatedMemory","byteLength","channels","DATA_FORMAT_CHANNELS","channelSize","TYPE_SIZES","x","y","ndarray","shape","Buffer","compressedTexSubImage2D","texSubImage2D","ArrayBuffer","isView","error","getParameter","textureFormat","TEXTURE_FORMATS","types","_deduceImageSize","size","ImageData","HTMLImageElement","naturalWidth","naturalHeight","HTMLCanvasElement","ImageBitmap","videoWidth","videoHeight","createTexture","deleteTexture","pname","value","getTexParameter","param","_getNPOTParam","texParameterf","texParameteri","TEXTURE_MIN_FILTER","LINEAR","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","indexOf","Resource"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\n\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {\n TEXTURE_FORMATS,\n DATA_FORMAT_CHANNELS,\n TYPE_SIZES,\n isFormatSupported,\n isLinearFilteringSupported\n} from './texture-formats';\nimport {assert} from '../utils/assert';\nimport {uid, isPowerOfTwo} from '../utils/utils';\n\n// Supported min filters for NPOT texture.\nconst NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];\n\n// Polyfill\n// Note (Tarek): Do we really need to support this API?\nconst WebGLBuffer = globalThis.WebGLBuffer || function WebGLBuffer() {};\n\nexport default class Texture extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture';\n }\n static isSupported(gl, opts = {}) {\n const {format, linearFiltering} = opts;\n let supported = true;\n if (format) {\n supported = supported && isFormatSupported(gl, format);\n supported = supported && (!linearFiltering || isLinearFilteringSupported(gl, format));\n }\n return supported;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n constructor(gl, props) {\n const {\n id = uid('texture'),\n handle,\n target\n // , magFilter, minFilter, wrapS, wrapT\n } = props;\n\n super(gl, {id, handle});\n\n this.target = target;\n this.textureUnit = undefined;\n\n // Program.draw() checks the loaded flag of all textures to avoid\n // Textures that are still loading from promises\n // Set to true as soon as texture has been initialized with valid data\n this.loaded = false;\n\n this.width = undefined;\n this.height = undefined;\n this.depth = undefined;\n this.format = undefined;\n this.type = undefined;\n this.dataFormat = undefined;\n this.border = undefined;\n this.textureUnit = undefined;\n this.mipmaps = undefined;\n }\n\n toString() {\n return `Texture(${this.id},${this.width}x${this.height})`;\n }\n\n /* eslint-disable max-len, max-statements */\n initialize(props = {}) {\n let data = props.data;\n\n if (data instanceof Promise) {\n data.then(resolvedImageData =>\n this.initialize(\n Object.assign({}, props, {\n pixels: resolvedImageData,\n data: resolvedImageData\n })\n )\n );\n return this;\n }\n const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;\n // @ts-ignore\n if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {\n this._video = null; // Declare member before the object is sealed\n data.addEventListener('loadeddata', () => this.initialize(props));\n return this;\n }\n\n const {\n pixels = null,\n format = GL.RGBA,\n border = 0,\n recreate = false,\n parameters = {},\n pixelStore = {},\n textureUnit = undefined\n } = props;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n // TODO - This looks backwards? Commenting out for now until we decide\n // which prop to use\n // log.deprecated('data', 'pixels')();\n data = pixels;\n }\n\n let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;\n const {depth = 0} = props;\n\n // Deduce width and height\n ({width, height, compressed, dataFormat, type} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n // Store opts for accessors\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.format = format;\n this.type = type;\n this.dataFormat = dataFormat;\n this.border = border;\n this.textureUnit = textureUnit;\n\n if (Number.isFinite(this.textureUnit)) {\n this.gl.activeTexture(GL.TEXTURE0 + this.textureUnit);\n this.gl.bindTexture(this.target, this.handle);\n }\n\n if (mipmaps && this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n mipmaps = false;\n\n this._updateForNPOT(parameters);\n }\n\n this.mipmaps = mipmaps;\n\n this.setImageData({\n data,\n width,\n height,\n depth,\n format,\n type,\n dataFormat,\n border,\n mipmaps,\n parameters: pixelStore,\n compressed\n });\n\n if (mipmaps) {\n this.generateMipmap();\n }\n\n // Set texture sampler parameters\n this.setParameters(parameters);\n\n // TODO - Store data to enable auto recreate on context loss\n if (recreate) {\n this.data = data;\n }\n if (isVideo) {\n this._video = {\n video: data,\n parameters,\n // @ts-ignore\n lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1\n };\n }\n\n return this;\n }\n\n update() {\n if (this._video) {\n const {video, parameters, lastTime} = this._video;\n // @ts-ignore\n if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {\n return;\n }\n this.setSubImageData({\n data: video,\n parameters\n });\n if (this.mipmaps) {\n this.generateMipmap();\n }\n this._video.lastTime = video.currentTime;\n }\n }\n\n // If size has changed, reinitializes with current format\n // note clears image and mipmaps\n resize({height, width, mipmaps = false}) {\n if (width !== this.width || height !== this.height) {\n return this.initialize({\n width,\n height,\n format: this.format,\n type: this.type,\n dataFormat: this.dataFormat,\n border: this.border,\n mipmaps\n });\n }\n return this;\n }\n\n // Call to regenerate mipmaps after modifying texture(s)\n generateMipmap(params = {}) {\n if (this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n return this;\n }\n\n this.mipmaps = true;\n\n this.gl.bindTexture(this.target, this.handle);\n withParameters(this.gl, params, () => {\n this.gl.generateMipmap(this.target);\n });\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n /*\n * Allocates storage\n * @param {*} pixels -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} width -\n * @param {GLint} height -\n * @param {GLint} mipMapLevel -\n * @param {GLenum} format - format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n /* eslint-disable max-len, max-statements, complexity */\n setImageData(options) {\n this._trackDeallocatedMemory('Texture');\n\n const {\n target = this.target,\n pixels = null,\n level = 0,\n format = this.format,\n border = this.border,\n offset = 0,\n parameters = {}\n } = options;\n\n let {\n data = null,\n type = this.type,\n width = this.width,\n height = this.height,\n dataFormat = this.dataFormat,\n compressed = false\n } = options;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n const {gl} = this;\n gl.bindTexture(this.target, this.handle);\n\n let dataType = null;\n ({data, dataType} = this._getDataType({data, compressed}));\n\n let gl2;\n\n let compressedTextureSize = 0;\n\n withParameters(this.gl, parameters, () => {\n switch (dataType) {\n case 'null':\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n break;\n case 'typed-array':\n // Looks like this assert is not necessary, as offset is ignored under WebGL1\n // assert((offset === 0 || isWebGL2(gl)), 'offset supported in WebGL2 only');\n // @ts-ignore\n gl.texImage2D(\n target,\n level,\n format,\n width,\n height,\n border,\n dataFormat,\n type,\n data,\n // @ts-ignore\n offset\n );\n break;\n case 'buffer':\n // WebGL2 enables creating textures directly from a WebGL buffer\n gl2 = assertWebGL2Context(gl);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);\n gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n break;\n case 'browser-object':\n if (isWebGL2(gl)) {\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n } else {\n gl.texImage2D(target, level, format, dataFormat, type, data);\n }\n break;\n case 'compressed':\n for (const [levelIndex, levelData] of data.entries()) {\n gl.compressedTexImage2D(\n target,\n levelIndex,\n levelData.format,\n levelData.width,\n levelData.height,\n border,\n levelData.data\n );\n compressedTextureSize += levelData.levelSize;\n }\n break;\n default:\n assert(false, 'Unknown image data type');\n }\n });\n\n if (dataType === 'compressed') {\n this._trackAllocatedMemory(compressedTextureSize, 'Texture');\n } else if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');\n }\n\n this.loaded = true;\n\n return this;\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Redefines an area of an existing texture\n * Note: does not allocate storage\n */\n /*\n * Redefines an area of an existing texture\n * @param {*} pixels, data -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} x - xOffset from where texture to be updated\n * @param {GLint} y - yOffset from where texture to be updated\n * @param {GLint} width - width of the sub image to be updated\n * @param {GLint} height - height of the sub image to be updated\n * @param {GLint} level - mip level to be updated\n * @param {GLenum} format - internal format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer or ArrayBufferView\n * @param {GLenum} dataFormat - format of image data.\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n setSubImageData({\n target = this.target,\n pixels = null,\n data = null,\n x = 0,\n y = 0,\n width = this.width,\n height = this.height,\n level = 0,\n format = this.format,\n type = this.type,\n dataFormat = this.dataFormat,\n compressed = false,\n offset = 0,\n border = this.border,\n parameters = {}\n }) {\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n assert(this.depth === 0, 'texSubImage not supported for 3D textures');\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n // Support ndarrays\n if (data && data.data) {\n const ndarray = data;\n data = ndarray.data;\n width = ndarray.shape[0];\n height = ndarray.shape[1];\n }\n\n // Support buffers\n if (data instanceof Buffer) {\n data = data.handle;\n }\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n // TODO - x,y parameters\n if (compressed) {\n this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n } else if (data === null) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n } else if (ArrayBuffer.isView(data)) {\n // const gl2 = assertWebGL2Context(this.gl);\n // @ts-ignore last offset parameter is ignored under WebGL1\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n } else if (data instanceof WebGLBuffer) {\n // WebGL2 allows us to create texture directly from a WebGL buffer\n const gl2 = assertWebGL2Context(this.gl);\n // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n } else if (isWebGL2(this.gl)) {\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n const gl2 = assertWebGL2Context(this.gl);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n } else {\n this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n }\n });\n\n this.gl.bindTexture(this.target, null);\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Defines a two-dimensional texture image or cube-map texture image with\n * pixels from the current framebuffer (rather than from client memory).\n * (gl.copyTexImage2D wrapper)\n *\n * Note that binding a texture into a Framebuffer's color buffer and\n * rendering can be faster.\n */\n copyFramebuffer(opts = {}) {\n log.error(\n 'Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n getActiveUnit() {\n return this.gl.getParameter(GL.ACTIVE_TEXTURE) - GL.TEXTURE0;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n\n bind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, this.handle);\n return textureUnit;\n }\n\n unbind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, null);\n return textureUnit;\n }\n\n // PRIVATE METHODS\n\n _getDataType({data, compressed = false}) {\n if (compressed) {\n return {data, dataType: 'compressed'};\n }\n if (data === null) {\n return {data, dataType: 'null'};\n }\n if (ArrayBuffer.isView(data)) {\n return {data, dataType: 'typed-array'};\n }\n if (data instanceof Buffer) {\n return {data: data.handle, dataType: 'buffer'};\n }\n if (data instanceof WebGLBuffer) {\n return {data, dataType: 'buffer'};\n }\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n return {data, dataType: 'browser-object'};\n }\n\n /* Copied from texture-2d.js\n // WebGL2\n setPixels(opts = {}) {\n const {\n buffer,\n width = null,\n height = null,\n mipmapLevel = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n\n // This signature of texImage2D uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, buffer.target);\n // And as always, we must also bind the texture itself\n this.bind();\n\n gl.texImage2D(gl.TEXTURE_2D,\n mipmapLevel, format, width, height, border, format, type, buffer.target);\n\n this.unbind();\n gl.bindBuffer(GL.GL.PIXEL_UNPACK_BUFFER, null);\n return this;\n }\n\n setImageDataFromCompressedBuffer(opts) {\n const {\n buffer,\n // offset = 0,\n width = null,\n height = null,\n mipmapLevel = 0,\n internalFormat = GL.RGBA,\n // format = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n gl.compressedTexImage2D(this.target,\n mipmapLevel, internalFormat, width, height, border, buffer);\n // gl.compressedTexSubImage2D(target,\n // level, xoffset, yoffset, width, height, format, ArrayBufferView? pixels);\n return this;\n }\n\n copySubImage(opts) {\n const {\n // pixels,\n // offset = 0,\n // x,\n // y,\n // width,\n // height,\n // mipmapLevel = 0,\n // internalFormat = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n // border = 0\n } = opts;\n\n // if (pixels instanceof ArrayBufferView) {\n // gl.texSubImage2D(target, level, x, y, width, height, format, type, pixels);\n // }\n // gl.texSubImage2D(target, level, x, y, format, type, ? pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLImageElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLCanvasElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLVideoElement pixels);\n // // Additional signature in a WebGL 2 context:\n // gl.texSubImage2D(target, level, x, y, format, type, GLintptr offset);\n }\n */\n\n // HELPER METHODS\n\n _deduceParameters(opts) {\n const {format, data} = opts;\n let {width, height, dataFormat, type, compressed} = opts;\n\n // Deduce format and type from format\n const textureFormat = TEXTURE_FORMATS[format];\n dataFormat = dataFormat || (textureFormat && textureFormat.dataFormat);\n type = type || (textureFormat && textureFormat.types[0]);\n\n // Deduce compression from format\n compressed = compressed || (textureFormat && textureFormat.compressed);\n\n ({width, height} = this._deduceImageSize(data, width, height));\n\n return {dataFormat, type, compressed, width, height, format, data};\n }\n\n // eslint-disable-next-line complexity\n _deduceImageSize(data, width, height) {\n let size;\n\n if (typeof ImageData !== 'undefined' && data instanceof ImageData) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n size = {width: data.naturalWidth, height: data.naturalHeight};\n } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {\n size = {width: data.width, height: data.height};\n } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n size = {width: data.videoWidth, height: data.videoHeight};\n } else if (!data) {\n size = {width: width >= 0 ? width : 1, height: height >= 0 ? height : 1};\n } else {\n size = {width, height};\n }\n\n assert(size, 'Could not deduced texture size');\n assert(\n width === undefined || size.width === width,\n 'Deduced texture width does not match supplied width'\n );\n assert(\n height === undefined || size.height === height,\n 'Deduced texture height does not match supplied height'\n );\n\n return size;\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createTexture();\n }\n\n _deleteHandle() {\n this.gl.deleteTexture(this.handle);\n this._trackDeallocatedMemory('Texture');\n }\n\n _getParameter(pname) {\n switch (pname) {\n case GL.TEXTURE_WIDTH:\n return this.width;\n case GL.TEXTURE_HEIGHT:\n return this.height;\n default:\n this.gl.bindTexture(this.target, this.handle);\n const value = this.gl.getTexParameter(this.target, pname);\n this.gl.bindTexture(this.target, null);\n return value;\n }\n }\n\n _setParameter(pname, param) {\n this.gl.bindTexture(this.target, this.handle);\n\n // NOTE: Apply NPOT workaround\n param = this._getNPOTParam(pname, param);\n\n // Apparently there are some integer/float conversion rules that made\n // the WebGL committe expose two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n switch (pname) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.gl.texParameterf(this.handle, pname, param);\n break;\n\n case GL.TEXTURE_WIDTH:\n case GL.TEXTURE_HEIGHT:\n assert(false);\n break;\n\n default:\n this.gl.texParameteri(this.target, pname, param);\n break;\n }\n\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n _isNPOT() {\n if (isWebGL2(this.gl)) {\n // NPOT restriction is only for WebGL1\n return false;\n }\n // Width and height not available, consider it is not NPOT texture\n if (!this.width || !this.height) {\n return false;\n }\n return !isPowerOfTwo(this.width) || !isPowerOfTwo(this.height);\n }\n\n // Update default settings which are not supported by NPOT textures.\n _updateForNPOT(parameters) {\n if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;\n }\n if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_S to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;\n }\n if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_T to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;\n }\n }\n\n _getNPOTParam(pname, param) {\n if (this._isNPOT()) {\n switch (pname) {\n case GL.TEXTURE_MIN_FILTER:\n if (NPOT_MIN_FILTERS.indexOf(param) === -1) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n param = GL.LINEAR;\n }\n break;\n case GL.TEXTURE_WRAP_S:\n case GL.TEXTURE_WRAP_T:\n if (param !== GL.CLAMP_TO_EDGE) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, ${getKey(this.gl, pname)} to CLAMP_TO_EDGE`)();\n param = GL.CLAMP_TO_EDGE;\n }\n break;\n default:\n break;\n }\n }\n return param;\n }\n}\n"],"file":"texture.js"}
1
+ {"version":3,"file":"texture.js","names":["NPOT_MIN_FILTERS","WebGLBuffer","globalThis","Texture","gl","props","id","uid","handle","target","textureUnit","undefined","loaded","width","height","depth","format","type","dataFormat","border","mipmaps","data","Promise","then","resolvedImageData","initialize","Object","assign","pixels","isVideo","HTMLVideoElement","readyState","HAVE_METADATA","_video","addEventListener","recreate","parameters","pixelStore","compressed","_deduceParameters","Number","isFinite","activeTexture","bindTexture","_isNPOT","log","warn","_updateForNPOT","setImageData","generateMipmap","setParameters","video","lastTime","HAVE_CURRENT_DATA","currentTime","setSubImageData","params","withParameters","options","_trackDeallocatedMemory","level","offset","dataType","_getDataType","gl2","compressedTextureSize","texImage2D","assertWebGL2Context","bindBuffer","isWebGL2","entries","levelIndex","levelData","compressedTexImage2D","levelSize","assert","_trackAllocatedMemory","byteLength","channels","DATA_FORMAT_CHANNELS","channelSize","TYPE_SIZES","x","y","ndarray","shape","Buffer","compressedTexSubImage2D","texSubImage2D","ArrayBuffer","isView","opts","error","getParameter","textureFormat","TEXTURE_FORMATS","types","_deduceImageSize","size","ImageData","HTMLImageElement","naturalWidth","naturalHeight","HTMLCanvasElement","ImageBitmap","videoWidth","videoHeight","createTexture","deleteTexture","pname","value","getTexParameter","param","_getNPOTParam","texParameterf","texParameteri","isPowerOfTwo","TEXTURE_MIN_FILTER","LINEAR","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","indexOf","linearFiltering","supported","isFormatSupported","isLinearFilteringSupported","Resource","Symbol","toStringTag"],"sources":["../../../src/classes/texture.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, withParameters, log} from '@luma.gl/gltools';\n\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {\n TEXTURE_FORMATS,\n DATA_FORMAT_CHANNELS,\n TYPE_SIZES,\n isFormatSupported,\n isLinearFilteringSupported\n} from './texture-formats';\nimport {assert} from '../utils/assert';\nimport {uid, isPowerOfTwo} from '../utils/utils';\n\n// Supported min filters for NPOT texture.\nconst NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];\n\n// Polyfill\n// Note (Tarek): Do we really need to support this API?\nconst WebGLBuffer = globalThis.WebGLBuffer || function WebGLBuffer() {};\n\nexport default class Texture extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Texture';\n }\n static isSupported(gl, opts = {}) {\n const {format, linearFiltering} = opts;\n let supported = true;\n if (format) {\n supported = supported && isFormatSupported(gl, format);\n supported = supported && (!linearFiltering || isLinearFilteringSupported(gl, format));\n }\n return supported;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n constructor(gl, props) {\n const {\n id = uid('texture'),\n handle,\n target\n // , magFilter, minFilter, wrapS, wrapT\n } = props;\n\n super(gl, {id, handle});\n\n this.target = target;\n this.textureUnit = undefined;\n\n // Program.draw() checks the loaded flag of all textures to avoid\n // Textures that are still loading from promises\n // Set to true as soon as texture has been initialized with valid data\n this.loaded = false;\n\n this.width = undefined;\n this.height = undefined;\n this.depth = undefined;\n this.format = undefined;\n this.type = undefined;\n this.dataFormat = undefined;\n this.border = undefined;\n this.textureUnit = undefined;\n this.mipmaps = undefined;\n }\n\n toString() {\n return `Texture(${this.id},${this.width}x${this.height})`;\n }\n\n /* eslint-disable max-len, max-statements */\n initialize(props = {}) {\n let data = props.data;\n\n if (data instanceof Promise) {\n data.then(resolvedImageData =>\n this.initialize(\n Object.assign({}, props, {\n pixels: resolvedImageData,\n data: resolvedImageData\n })\n )\n );\n return this;\n }\n const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;\n // @ts-ignore\n if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {\n this._video = null; // Declare member before the object is sealed\n data.addEventListener('loadeddata', () => this.initialize(props));\n return this;\n }\n\n const {\n pixels = null,\n format = GL.RGBA,\n border = 0,\n recreate = false,\n parameters = {},\n pixelStore = {},\n textureUnit = undefined\n } = props;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n // TODO - This looks backwards? Commenting out for now until we decide\n // which prop to use\n // log.deprecated('data', 'pixels')();\n data = pixels;\n }\n\n let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;\n const {depth = 0} = props;\n\n // Deduce width and height\n ({width, height, compressed, dataFormat, type} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n // Store opts for accessors\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.format = format;\n this.type = type;\n this.dataFormat = dataFormat;\n this.border = border;\n this.textureUnit = textureUnit;\n\n if (Number.isFinite(this.textureUnit)) {\n this.gl.activeTexture(GL.TEXTURE0 + this.textureUnit);\n this.gl.bindTexture(this.target, this.handle);\n }\n\n if (mipmaps && this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n mipmaps = false;\n\n this._updateForNPOT(parameters);\n }\n\n this.mipmaps = mipmaps;\n\n this.setImageData({\n data,\n width,\n height,\n depth,\n format,\n type,\n dataFormat,\n border,\n mipmaps,\n parameters: pixelStore,\n compressed\n });\n\n if (mipmaps) {\n this.generateMipmap();\n }\n\n // Set texture sampler parameters\n this.setParameters(parameters);\n\n // TODO - Store data to enable auto recreate on context loss\n if (recreate) {\n this.data = data;\n }\n if (isVideo) {\n this._video = {\n video: data,\n parameters,\n // @ts-ignore\n lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1\n };\n }\n\n return this;\n }\n\n update() {\n if (this._video) {\n const {video, parameters, lastTime} = this._video;\n // @ts-ignore\n if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {\n return;\n }\n this.setSubImageData({\n data: video,\n parameters\n });\n if (this.mipmaps) {\n this.generateMipmap();\n }\n this._video.lastTime = video.currentTime;\n }\n }\n\n // If size has changed, reinitializes with current format\n // note clears image and mipmaps\n resize({height, width, mipmaps = false}) {\n if (width !== this.width || height !== this.height) {\n return this.initialize({\n width,\n height,\n format: this.format,\n type: this.type,\n dataFormat: this.dataFormat,\n border: this.border,\n mipmaps\n });\n }\n return this;\n }\n\n // Call to regenerate mipmaps after modifying texture(s)\n generateMipmap(params = {}) {\n if (this._isNPOT()) {\n log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();\n return this;\n }\n\n this.mipmaps = true;\n\n this.gl.bindTexture(this.target, this.handle);\n withParameters(this.gl, params, () => {\n this.gl.generateMipmap(this.target);\n });\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n /*\n * Allocates storage\n * @param {*} pixels -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} width -\n * @param {GLint} height -\n * @param {GLint} mipMapLevel -\n * @param {GLenum} format - format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n /* eslint-disable max-len, max-statements, complexity */\n setImageData(options) {\n this._trackDeallocatedMemory('Texture');\n\n const {\n target = this.target,\n pixels = null,\n level = 0,\n format = this.format,\n border = this.border,\n offset = 0,\n parameters = {}\n } = options;\n\n let {\n data = null,\n type = this.type,\n width = this.width,\n height = this.height,\n dataFormat = this.dataFormat,\n compressed = false\n } = options;\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n const {gl} = this;\n gl.bindTexture(this.target, this.handle);\n\n let dataType = null;\n ({data, dataType} = this._getDataType({data, compressed}));\n\n let gl2;\n\n let compressedTextureSize = 0;\n\n withParameters(this.gl, parameters, () => {\n switch (dataType) {\n case 'null':\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n break;\n case 'typed-array':\n // Looks like this assert is not necessary, as offset is ignored under WebGL1\n // assert((offset === 0 || isWebGL2(gl)), 'offset supported in WebGL2 only');\n // @ts-ignore\n gl.texImage2D(\n target,\n level,\n format,\n width,\n height,\n border,\n dataFormat,\n type,\n data,\n // @ts-ignore\n offset\n );\n break;\n case 'buffer':\n // WebGL2 enables creating textures directly from a WebGL buffer\n gl2 = assertWebGL2Context(gl);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);\n gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n break;\n case 'browser-object':\n if (isWebGL2(gl)) {\n gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);\n } else {\n gl.texImage2D(target, level, format, dataFormat, type, data);\n }\n break;\n case 'compressed':\n for (const [levelIndex, levelData] of data.entries()) {\n gl.compressedTexImage2D(\n target,\n levelIndex,\n levelData.format,\n levelData.width,\n levelData.height,\n border,\n levelData.data\n );\n compressedTextureSize += levelData.levelSize;\n }\n break;\n default:\n assert(false, 'Unknown image data type');\n }\n });\n\n if (dataType === 'compressed') {\n this._trackAllocatedMemory(compressedTextureSize, 'Texture');\n } else if (data && data.byteLength) {\n this._trackAllocatedMemory(data.byteLength, 'Texture');\n } else {\n // NOTE(Tarek): Default to RGBA bytes\n const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;\n const channelSize = TYPE_SIZES[this.type] || 1;\n\n this._trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');\n }\n\n this.loaded = true;\n\n return this;\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Redefines an area of an existing texture\n * Note: does not allocate storage\n */\n /*\n * Redefines an area of an existing texture\n * @param {*} pixels, data -\n * null - create empty texture of specified format\n * Typed array - init from image data in typed array\n * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer\n * HTMLImageElement|Image - Inits with content of image. Auto width/height\n * HTMLCanvasElement - Inits with contents of canvas. Auto width/height\n * HTMLVideoElement - Creates video texture. Auto width/height\n *\n * @param {GLint} x - xOffset from where texture to be updated\n * @param {GLint} y - yOffset from where texture to be updated\n * @param {GLint} width - width of the sub image to be updated\n * @param {GLint} height - height of the sub image to be updated\n * @param {GLint} level - mip level to be updated\n * @param {GLenum} format - internal format of image data.\n * @param {GLenum} type\n * - format of array (autodetect from type) or\n * - (WEBGL2) format of buffer or ArrayBufferView\n * @param {GLenum} dataFormat - format of image data.\n * @param {Number} offset - (WEBGL2) offset from start of buffer\n * @param {GLint} border - must be 0.\n * @parameters - temporary settings to be applied, can be used to supply pixel store settings.\n */\n setSubImageData({\n target = this.target,\n pixels = null,\n data = null,\n x = 0,\n y = 0,\n width = this.width,\n height = this.height,\n level = 0,\n format = this.format,\n type = this.type,\n dataFormat = this.dataFormat,\n compressed = false,\n offset = 0,\n border = this.border,\n parameters = {}\n }) {\n ({type, dataFormat, compressed, width, height} = this._deduceParameters({\n format,\n type,\n dataFormat,\n compressed,\n data,\n width,\n height\n }));\n\n assert(this.depth === 0, 'texSubImage not supported for 3D textures');\n\n // pixels variable is for API compatibility purpose\n if (!data) {\n data = pixels;\n }\n\n // Support ndarrays\n if (data && data.data) {\n const ndarray = data;\n data = ndarray.data;\n width = ndarray.shape[0];\n height = ndarray.shape[1];\n }\n\n // Support buffers\n if (data instanceof Buffer) {\n data = data.handle;\n }\n\n this.gl.bindTexture(this.target, this.handle);\n\n withParameters(this.gl, parameters, () => {\n // TODO - x,y parameters\n if (compressed) {\n this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);\n } else if (data === null) {\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);\n } else if (ArrayBuffer.isView(data)) {\n // const gl2 = assertWebGL2Context(this.gl);\n // @ts-ignore last offset parameter is ignored under WebGL1\n this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);\n } else if (data instanceof WebGLBuffer) {\n // WebGL2 allows us to create texture directly from a WebGL buffer\n const gl2 = assertWebGL2Context(this.gl);\n // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);\n gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);\n } else if (isWebGL2(this.gl)) {\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n const gl2 = assertWebGL2Context(this.gl);\n gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);\n } else {\n this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);\n }\n });\n\n this.gl.bindTexture(this.target, null);\n }\n /* eslint-enable max-len, max-statements, complexity */\n\n /**\n * Defines a two-dimensional texture image or cube-map texture image with\n * pixels from the current framebuffer (rather than from client memory).\n * (gl.copyTexImage2D wrapper)\n *\n * Note that binding a texture into a Framebuffer's color buffer and\n * rendering can be faster.\n */\n copyFramebuffer(opts = {}) {\n log.error(\n 'Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})'\n )();\n return null;\n }\n\n getActiveUnit() {\n return this.gl.getParameter(GL.ACTIVE_TEXTURE) - GL.TEXTURE0;\n }\n\n // target cannot be modified by bind:\n // textures are special because when you first bind them to a target,\n // they get special information. When you first bind a texture as a\n // GL_TEXTURE_2D, you are actually setting special state in the texture.\n // You are saying that this texture is a 2D texture.\n // And it will always be a 2D texture; this state cannot be changed ever.\n // If you have a texture that was first bound as a GL_TEXTURE_2D,\n // you must always bind it as a GL_TEXTURE_2D;\n // attempting to bind it as GL_TEXTURE_1D will give rise to an error\n // (while run-time).\n\n bind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, this.handle);\n return textureUnit;\n }\n\n unbind(textureUnit = this.textureUnit) {\n const {gl} = this;\n\n if (textureUnit !== undefined) {\n this.textureUnit = textureUnit;\n gl.activeTexture(gl.TEXTURE0 + textureUnit);\n }\n\n gl.bindTexture(this.target, null);\n return textureUnit;\n }\n\n // PRIVATE METHODS\n\n _getDataType({data, compressed = false}) {\n if (compressed) {\n return {data, dataType: 'compressed'};\n }\n if (data === null) {\n return {data, dataType: 'null'};\n }\n if (ArrayBuffer.isView(data)) {\n return {data, dataType: 'typed-array'};\n }\n if (data instanceof Buffer) {\n return {data: data.handle, dataType: 'buffer'};\n }\n if (data instanceof WebGLBuffer) {\n return {data, dataType: 'buffer'};\n }\n // Assume data is a browser supported object (ImageData, Canvas, ...)\n return {data, dataType: 'browser-object'};\n }\n\n /* Copied from texture-2d.js\n // WebGL2\n setPixels(opts = {}) {\n const {\n buffer,\n width = null,\n height = null,\n mipmapLevel = 0,\n format = GL.RGBA,\n type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n\n // This signature of texImage2D uses currently bound GL.PIXEL_UNPACK_BUFFER\n gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, buffer.target);\n // And as always, we must also bind the texture itself\n this.bind();\n\n gl.texImage2D(gl.TEXTURE_2D,\n mipmapLevel, format, width, height, border, format, type, buffer.target);\n\n this.unbind();\n gl.bindBuffer(GL.GL.PIXEL_UNPACK_BUFFER, null);\n return this;\n }\n\n setImageDataFromCompressedBuffer(opts) {\n const {\n buffer,\n // offset = 0,\n width = null,\n height = null,\n mipmapLevel = 0,\n internalFormat = GL.RGBA,\n // format = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n border = 0\n } = opts;\n\n const {gl} = this;\n gl.compressedTexImage2D(this.target,\n mipmapLevel, internalFormat, width, height, border, buffer);\n // gl.compressedTexSubImage2D(target,\n // level, xoffset, yoffset, width, height, format, ArrayBufferView? pixels);\n return this;\n }\n\n copySubImage(opts) {\n const {\n // pixels,\n // offset = 0,\n // x,\n // y,\n // width,\n // height,\n // mipmapLevel = 0,\n // internalFormat = GL.RGBA,\n // type = GL.UNSIGNED_BYTE,\n // border = 0\n } = opts;\n\n // if (pixels instanceof ArrayBufferView) {\n // gl.texSubImage2D(target, level, x, y, width, height, format, type, pixels);\n // }\n // gl.texSubImage2D(target, level, x, y, format, type, ? pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLImageElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLCanvasElement pixels);\n // gl.texSubImage2D(target, level, x, y, format, type, HTMLVideoElement pixels);\n // // Additional signature in a WebGL 2 context:\n // gl.texSubImage2D(target, level, x, y, format, type, GLintptr offset);\n }\n */\n\n // HELPER METHODS\n\n _deduceParameters(opts) {\n const {format, data} = opts;\n let {width, height, dataFormat, type, compressed} = opts;\n\n // Deduce format and type from format\n const textureFormat = TEXTURE_FORMATS[format];\n dataFormat = dataFormat || (textureFormat && textureFormat.dataFormat);\n type = type || (textureFormat && textureFormat.types[0]);\n\n // Deduce compression from format\n compressed = compressed || (textureFormat && textureFormat.compressed);\n\n ({width, height} = this._deduceImageSize(data, width, height));\n\n return {dataFormat, type, compressed, width, height, format, data};\n }\n\n // eslint-disable-next-line complexity\n _deduceImageSize(data, width, height) {\n let size;\n\n if (typeof ImageData !== 'undefined' && data instanceof ImageData) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {\n size = {width: data.naturalWidth, height: data.naturalHeight};\n } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {\n size = {width: data.width, height: data.height};\n } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {\n size = {width: data.width, height: data.height};\n } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {\n size = {width: data.videoWidth, height: data.videoHeight};\n } else if (!data) {\n size = {width: width >= 0 ? width : 1, height: height >= 0 ? height : 1};\n } else {\n size = {width, height};\n }\n\n assert(size, 'Could not deduced texture size');\n assert(\n width === undefined || size.width === width,\n 'Deduced texture width does not match supplied width'\n );\n assert(\n height === undefined || size.height === height,\n 'Deduced texture height does not match supplied height'\n );\n\n return size;\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createTexture();\n }\n\n _deleteHandle() {\n this.gl.deleteTexture(this.handle);\n this._trackDeallocatedMemory('Texture');\n }\n\n _getParameter(pname) {\n switch (pname) {\n case GL.TEXTURE_WIDTH:\n return this.width;\n case GL.TEXTURE_HEIGHT:\n return this.height;\n default:\n this.gl.bindTexture(this.target, this.handle);\n const value = this.gl.getTexParameter(this.target, pname);\n this.gl.bindTexture(this.target, null);\n return value;\n }\n }\n\n _setParameter(pname, param) {\n this.gl.bindTexture(this.target, this.handle);\n\n // NOTE: Apply NPOT workaround\n param = this._getNPOTParam(pname, param);\n\n // Apparently there are some integer/float conversion rules that made\n // the WebGL committe expose two parameter setting functions in JavaScript.\n // For now, pick the float version for parameters specified as GLfloat.\n switch (pname) {\n case GL.TEXTURE_MIN_LOD:\n case GL.TEXTURE_MAX_LOD:\n this.gl.texParameterf(this.handle, pname, param);\n break;\n\n case GL.TEXTURE_WIDTH:\n case GL.TEXTURE_HEIGHT:\n assert(false);\n break;\n\n default:\n this.gl.texParameteri(this.target, pname, param);\n break;\n }\n\n this.gl.bindTexture(this.target, null);\n return this;\n }\n\n _isNPOT() {\n if (isWebGL2(this.gl)) {\n // NPOT restriction is only for WebGL1\n return false;\n }\n // Width and height not available, consider it is not NPOT texture\n if (!this.width || !this.height) {\n return false;\n }\n return !isPowerOfTwo(this.width) || !isPowerOfTwo(this.height);\n }\n\n // Update default settings which are not supported by NPOT textures.\n _updateForNPOT(parameters) {\n if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;\n }\n if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_S to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;\n }\n if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_T to CLAMP_TO_EDGE`)();\n parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;\n }\n }\n\n _getNPOTParam(pname, param) {\n if (this._isNPOT()) {\n switch (pname) {\n case GL.TEXTURE_MIN_FILTER:\n if (NPOT_MIN_FILTERS.indexOf(param) === -1) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();\n param = GL.LINEAR;\n }\n break;\n case GL.TEXTURE_WRAP_S:\n case GL.TEXTURE_WRAP_T:\n if (param !== GL.CLAMP_TO_EDGE) {\n // log.warn(`texture: ${this} is Non-Power-Of-Two, ${getKey(this.gl, pname)} to CLAMP_TO_EDGE`)();\n param = GL.CLAMP_TO_EDGE;\n }\n break;\n default:\n break;\n }\n }\n return param;\n }\n}\n"],"mappings":"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"}
@@ -9,10 +9,10 @@ exports.default = void 0;
9
9
 
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
 
12
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
-
14
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
13
 
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
16
16
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
17
 
18
18
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
@@ -29,25 +29,13 @@ var _utils = require("../utils/utils");
29
29
 
30
30
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
31
31
 
32
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
32
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
33
33
 
34
- var TransformFeedback = function (_Resource) {
34
+ var TransformFeedback = function (_Resource, _Symbol$toStringTag) {
35
35
  (0, _inherits2.default)(TransformFeedback, _Resource);
36
36
 
37
37
  var _super = _createSuper(TransformFeedback);
38
38
 
39
- (0, _createClass2.default)(TransformFeedback, [{
40
- key: Symbol.toStringTag,
41
- get: function get() {
42
- return 'TransformFeedback';
43
- }
44
- }], [{
45
- key: "isSupported",
46
- value: function isSupported(gl) {
47
- return (0, _gltools.isWebGL2)(gl);
48
- }
49
- }]);
50
-
51
39
  function TransformFeedback(gl) {
52
40
  var _this;
53
41
 
@@ -65,6 +53,11 @@ var TransformFeedback = function (_Resource) {
65
53
  }
66
54
 
67
55
  (0, _createClass2.default)(TransformFeedback, [{
56
+ key: _Symbol$toStringTag,
57
+ get: function get() {
58
+ return 'TransformFeedback';
59
+ }
60
+ }, {
68
61
  key: "initialize",
69
62
  value: function initialize() {
70
63
  var _this2 = this;
@@ -119,8 +112,6 @@ var TransformFeedback = function (_Resource) {
119
112
  }, {
120
113
  key: "setBuffer",
121
114
  value: function setBuffer(locationOrName, bufferOrParams) {
122
- var _this4 = this;
123
-
124
115
  var location = this._getVaryingIndex(locationOrName);
125
116
 
126
117
  var _this$_getBufferParam = this._getBufferParams(bufferOrParams),
@@ -131,9 +122,7 @@ var TransformFeedback = function (_Resource) {
131
122
  if (location < 0) {
132
123
  this.unused[locationOrName] = buffer;
133
124
 
134
- _gltools.log.warn(function () {
135
- return "".concat(_this4.id, " unused varying buffer ").concat(locationOrName);
136
- })();
125
+ _gltools.log.warn("".concat(this.id, " unused varying buffer ").concat(locationOrName))();
137
126
 
138
127
  return this;
139
128
  }
@@ -261,9 +250,14 @@ var TransformFeedback = function (_Resource) {
261
250
  value: function _bindHandle(handle) {
262
251
  this.gl.bindTransformFeedback(36386, this.handle);
263
252
  }
253
+ }], [{
254
+ key: "isSupported",
255
+ value: function isSupported(gl) {
256
+ return (0, _gltools.isWebGL2)(gl);
257
+ }
264
258
  }]);
265
259
  return TransformFeedback;
266
- }(_resource.default);
260
+ }(_resource.default, Symbol.toStringTag);
267
261
 
268
262
  exports.default = TransformFeedback;
269
263
  //# sourceMappingURL=transform-feedback.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/transform-feedback.js"],"names":["TransformFeedback","Symbol","toStringTag","gl","props","initialize","stubRemovedMethods","Object","seal","buffers","unused","configuration","bindOnUse","bind","_unbindBuffers","setProps","program","setBuffers","bufferName","setBuffer","locationOrName","bufferOrParams","location","_getVaryingIndex","_getBufferParams","buffer","byteSize","byteOffset","log","warn","id","_bindBuffer","primitiveMode","bindTransformFeedback","handle","_bindBuffers","beginTransformFeedback","endTransformFeedback","Buffer","undefined","byteLength","getVaryingInfo","Number","isFinite","bufferIndex","index","bindBufferBase","bindBufferRange","createTransformFeedback","deleteTransformFeedback","Resource"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, log} from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {isObjectEmpty} from '../utils/utils';\n\n// NOTE: The `bindOnUse` flag is a major workaround:\n// See https://github.com/KhronosGroup/WebGL/issues/2346\n\nexport default class TransformFeedback extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'TransformFeedback';\n }\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n assertWebGL2Context(gl);\n super(gl, props);\n\n this.initialize(props);\n this.stubRemovedMethods('TransformFeedback', 'v6.0', ['pause', 'resume']);\n Object.seal(this);\n }\n\n initialize(props = {}) {\n this.buffers = {};\n this.unused = {};\n this.configuration = null;\n this.bindOnUse = true;\n\n // Unbind any currently bound buffers\n if (!isObjectEmpty(this.buffers)) {\n this.bind(() => this._unbindBuffers());\n }\n\n this.setProps(props);\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n if ('buffers' in props) {\n this.setBuffers(props.buffers);\n }\n }\n\n setBuffers(buffers = {}) {\n this.bind(() => {\n for (const bufferName in buffers) {\n this.setBuffer(bufferName, buffers[bufferName]);\n }\n });\n return this;\n }\n\n setBuffer(locationOrName, bufferOrParams) {\n const location = this._getVaryingIndex(locationOrName);\n const {buffer, byteSize, byteOffset} = this._getBufferParams(bufferOrParams);\n\n if (location < 0) {\n this.unused[locationOrName] = buffer;\n log.warn(() => `${this.id} unused varying buffer ${locationOrName}`)();\n return this;\n }\n\n this.buffers[location] = bufferOrParams;\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n if (!this.bindOnUse) {\n this._bindBuffer(location, buffer, byteOffset, byteSize);\n }\n\n return this;\n }\n\n begin(primitiveMode = GL.POINTS) {\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n this._bindBuffers();\n // @ts-ignore\n this.gl.beginTransformFeedback(primitiveMode);\n return this;\n }\n\n end() {\n // @ts-ignore\n this.gl.endTransformFeedback();\n this._unbindBuffers();\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);\n return this;\n }\n\n // PRIVATE METHODS\n\n _getBufferParams(bufferOrParams) {\n let byteOffset;\n let byteSize;\n let buffer;\n if (bufferOrParams instanceof Buffer === false) {\n buffer = bufferOrParams.buffer;\n byteSize = bufferOrParams.byteSize;\n byteOffset = bufferOrParams.byteOffset;\n } else {\n buffer = bufferOrParams;\n }\n // to use bindBufferRange, either offset or size must be specified, use default value for the other.\n if (byteOffset !== undefined || byteSize !== undefined) {\n byteOffset = byteOffset || 0;\n byteSize = byteSize || buffer.byteLength - byteOffset;\n }\n return {buffer, byteOffset, byteSize};\n }\n\n _getVaryingInfo(locationOrName) {\n return this.configuration && this.configuration.getVaryingInfo(locationOrName);\n }\n\n _getVaryingIndex(locationOrName) {\n if (this.configuration) {\n return this.configuration.getVaryingInfo(locationOrName).location;\n }\n const location = Number(locationOrName);\n return Number.isFinite(location) ? location : -1;\n }\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n _bindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n const {buffer, byteSize, byteOffset} = this._getBufferParams(this.buffers[bufferIndex]);\n this._bindBuffer(bufferIndex, buffer, byteOffset, byteSize);\n }\n }\n }\n\n _unbindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n this._bindBuffer(bufferIndex, null);\n }\n }\n }\n\n _bindBuffer(index, buffer, byteOffset = 0, byteSize) {\n const handle = buffer && buffer.handle;\n if (!handle || byteSize === undefined) {\n // @ts-ignore\n this.gl.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle);\n } else {\n // @ts-ignore\n this.gl.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteSize);\n }\n return this;\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n // @ts-ignore\n return this.gl.createTransformFeedback();\n }\n\n _deleteHandle() {\n // @ts-ignore\n this.gl.deleteTransformFeedback(this.handle);\n }\n\n _bindHandle(handle) {\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n }\n}\n"],"file":"transform-feedback.js"}
1
+ {"version":3,"file":"transform-feedback.js","names":["TransformFeedback","gl","props","assertWebGL2Context","initialize","stubRemovedMethods","Object","seal","buffers","unused","configuration","bindOnUse","isObjectEmpty","bind","_unbindBuffers","setProps","program","setBuffers","bufferName","setBuffer","locationOrName","bufferOrParams","location","_getVaryingIndex","_getBufferParams","buffer","byteSize","byteOffset","log","warn","id","_bindBuffer","primitiveMode","bindTransformFeedback","handle","_bindBuffers","beginTransformFeedback","endTransformFeedback","Buffer","undefined","byteLength","getVaryingInfo","Number","isFinite","bufferIndex","index","bindBufferBase","bindBufferRange","createTransformFeedback","deleteTransformFeedback","isWebGL2","Resource","Symbol","toStringTag"],"sources":["../../../src/classes/transform-feedback.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {isWebGL2, assertWebGL2Context, log} from '@luma.gl/gltools';\nimport Resource from './resource';\nimport Buffer from './buffer';\nimport {isObjectEmpty} from '../utils/utils';\n\n// NOTE: The `bindOnUse` flag is a major workaround:\n// See https://github.com/KhronosGroup/WebGL/issues/2346\n\nexport default class TransformFeedback extends Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'TransformFeedback';\n }\n static isSupported(gl) {\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n assertWebGL2Context(gl);\n super(gl, props);\n\n this.initialize(props);\n this.stubRemovedMethods('TransformFeedback', 'v6.0', ['pause', 'resume']);\n Object.seal(this);\n }\n\n initialize(props = {}) {\n this.buffers = {};\n this.unused = {};\n this.configuration = null;\n this.bindOnUse = true;\n\n // Unbind any currently bound buffers\n if (!isObjectEmpty(this.buffers)) {\n this.bind(() => this._unbindBuffers());\n }\n\n this.setProps(props);\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n if ('buffers' in props) {\n this.setBuffers(props.buffers);\n }\n }\n\n setBuffers(buffers = {}) {\n this.bind(() => {\n for (const bufferName in buffers) {\n this.setBuffer(bufferName, buffers[bufferName]);\n }\n });\n return this;\n }\n\n setBuffer(locationOrName, bufferOrParams) {\n const location = this._getVaryingIndex(locationOrName);\n const {buffer, byteSize, byteOffset} = this._getBufferParams(bufferOrParams);\n\n if (location < 0) {\n this.unused[locationOrName] = buffer;\n log.warn(`${this.id} unused varying buffer ${locationOrName}`)();\n return this;\n }\n\n this.buffers[location] = bufferOrParams;\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n if (!this.bindOnUse) {\n this._bindBuffer(location, buffer, byteOffset, byteSize);\n }\n\n return this;\n }\n\n begin(primitiveMode = GL.POINTS) {\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n this._bindBuffers();\n // @ts-ignore\n this.gl.beginTransformFeedback(primitiveMode);\n return this;\n }\n\n end() {\n // @ts-ignore\n this.gl.endTransformFeedback();\n this._unbindBuffers();\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);\n return this;\n }\n\n // PRIVATE METHODS\n\n _getBufferParams(bufferOrParams) {\n let byteOffset;\n let byteSize;\n let buffer;\n if (bufferOrParams instanceof Buffer === false) {\n buffer = bufferOrParams.buffer;\n byteSize = bufferOrParams.byteSize;\n byteOffset = bufferOrParams.byteOffset;\n } else {\n buffer = bufferOrParams;\n }\n // to use bindBufferRange, either offset or size must be specified, use default value for the other.\n if (byteOffset !== undefined || byteSize !== undefined) {\n byteOffset = byteOffset || 0;\n byteSize = byteSize || buffer.byteLength - byteOffset;\n }\n return {buffer, byteOffset, byteSize};\n }\n\n _getVaryingInfo(locationOrName) {\n return this.configuration && this.configuration.getVaryingInfo(locationOrName);\n }\n\n _getVaryingIndex(locationOrName) {\n if (this.configuration) {\n return this.configuration.getVaryingInfo(locationOrName).location;\n }\n const location = Number(locationOrName);\n return Number.isFinite(location) ? location : -1;\n }\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n _bindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n const {buffer, byteSize, byteOffset} = this._getBufferParams(this.buffers[bufferIndex]);\n this._bindBuffer(bufferIndex, buffer, byteOffset, byteSize);\n }\n }\n }\n\n _unbindBuffers() {\n if (this.bindOnUse) {\n for (const bufferIndex in this.buffers) {\n this._bindBuffer(bufferIndex, null);\n }\n }\n }\n\n _bindBuffer(index, buffer, byteOffset = 0, byteSize) {\n const handle = buffer && buffer.handle;\n if (!handle || byteSize === undefined) {\n // @ts-ignore\n this.gl.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle);\n } else {\n // @ts-ignore\n this.gl.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteSize);\n }\n return this;\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n // @ts-ignore\n return this.gl.createTransformFeedback();\n }\n\n _deleteHandle() {\n // @ts-ignore\n this.gl.deleteTransformFeedback(this.handle);\n }\n\n _bindHandle(handle) {\n // @ts-ignore\n this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/classes/uniform-buffer-layout.js"],"names":["ERR_ARGUMENT","GL_FLOAT","GL_INT","GL_UNSIGNED_INT","UniformBufferLayout","layout","size","key","_addUniform","data","Float32Array","typedArray","Int32Array","buffer","Uint32Array","index","offset","undefined","begin","offsets","end","sizes","subarray","values","_setValue","value","type","set","uniformType","typeAndComponents","count","components","_alignTo"],"mappings":"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","sourcesContent":["// @ts-nocheck\n\n/* eslint-disable camelcase */\nimport {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';\nimport {assert} from '../utils/assert';\n\nconst ERR_ARGUMENT = 'UniformBufferLayout illegal argument';\n\n// Local constants - these will \"collapse\" during minification\nconst GL_FLOAT = 0x1406;\nconst GL_INT = 0x1404;\nconst GL_UNSIGNED_INT = 0x1405;\n\n// Std140 layout for uniforms\nexport default class UniformBufferLayout {\n constructor(layout) {\n this.layout = {};\n this.size = 0;\n\n // Add layout (type, size and offset) definitions for each uniform in the layout\n for (const key in layout) {\n this._addUniform(key, layout[key]);\n }\n\n this.size += (4 - (this.size % 4)) % 4;\n\n // Allocate three typed arrays pointing at same memory\n const data = new Float32Array(this.size);\n this.typedArray = {\n [GL_FLOAT]: data,\n [GL_INT]: new Int32Array(data.buffer),\n [GL_UNSIGNED_INT]: new Uint32Array(data.buffer)\n };\n }\n\n // Get number of bytes needed for buffer allocation\n getBytes() {\n return this.size * 4;\n }\n\n // Get the current data as Float32Array, for bufferSubData\n getData() {\n return this.typedArray[GL_FLOAT];\n }\n\n // Get offset and data for one object (for bufferSubData)\n getSubData(index) {\n let data;\n let offset;\n if (index === undefined) {\n data = this.data;\n offset = 0;\n } else {\n const begin = this.offsets[index];\n const end = begin + this.sizes[index];\n data = this.data.subarray(begin, end);\n offset = begin * 4;\n }\n return {data, offset};\n }\n\n // Set a map of values\n setUniforms(values) {\n for (const key in values) {\n this._setValue(key, values[key]);\n }\n return this;\n }\n\n _setValue(key, value) {\n const layout = this.layout[key];\n assert(layout, 'UniformLayoutStd140 illegal argument');\n const typedArray = this.typedArray[layout.type];\n if (layout.size === 1) {\n // single value -> just set it\n typedArray[layout.offset] = value;\n } else {\n // vector/matrix -> copy the supplied (typed) array, starting from offset\n typedArray.set(value, layout.offset);\n }\n }\n\n _addUniform(key, uniformType) {\n const typeAndComponents = decomposeCompositeGLType(uniformType);\n assert(typeAndComponents, ERR_ARGUMENT);\n const {type, components: count} = typeAndComponents;\n\n // First, align (bump) current offset to an even multiple of current object (1, 2, 4)\n this.size = this._alignTo(this.size, count);\n // Use the aligned size as the offset of the current uniform.\n const offset = this.size;\n // Then, add our object's padded size ((1, 2, multiple of 4) to the current offset\n this.size += count;\n\n this.layout[key] = {type, size: count, offset};\n }\n\n // Align offset to 1, 2 or 4 elements (4, 8 or 16 bytes)\n _alignTo(size, count) {\n switch (count) {\n case 1:\n return size; // Pad upwards to even multiple of 2\n case 2:\n return size + (size % 2); // Pad upwards to even multiple of 2\n default:\n return size + ((4 - (size % 4)) % 4); // Pad upwards to even multiple of 4\n }\n }\n}\n"],"file":"uniform-buffer-layout.js"}
1
+ {"version":3,"file":"uniform-buffer-layout.js","names":["ERR_ARGUMENT","GL_FLOAT","GL_INT","GL_UNSIGNED_INT","UniformBufferLayout","layout","size","key","_addUniform","data","Float32Array","typedArray","Int32Array","buffer","Uint32Array","index","offset","undefined","begin","offsets","end","sizes","subarray","values","_setValue","value","assert","type","set","uniformType","typeAndComponents","decomposeCompositeGLType","count","components","_alignTo"],"sources":["../../../src/classes/uniform-buffer-layout.js"],"sourcesContent":["// @ts-nocheck\n\n/* eslint-disable camelcase */\nimport {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';\nimport {assert} from '../utils/assert';\n\nconst ERR_ARGUMENT = 'UniformBufferLayout illegal argument';\n\n// Local constants - these will \"collapse\" during minification\nconst GL_FLOAT = 0x1406;\nconst GL_INT = 0x1404;\nconst GL_UNSIGNED_INT = 0x1405;\n\n// Std140 layout for uniforms\nexport default class UniformBufferLayout {\n constructor(layout) {\n this.layout = {};\n this.size = 0;\n\n // Add layout (type, size and offset) definitions for each uniform in the layout\n for (const key in layout) {\n this._addUniform(key, layout[key]);\n }\n\n this.size += (4 - (this.size % 4)) % 4;\n\n // Allocate three typed arrays pointing at same memory\n const data = new Float32Array(this.size);\n this.typedArray = {\n [GL_FLOAT]: data,\n [GL_INT]: new Int32Array(data.buffer),\n [GL_UNSIGNED_INT]: new Uint32Array(data.buffer)\n };\n }\n\n // Get number of bytes needed for buffer allocation\n getBytes() {\n return this.size * 4;\n }\n\n // Get the current data as Float32Array, for bufferSubData\n getData() {\n return this.typedArray[GL_FLOAT];\n }\n\n // Get offset and data for one object (for bufferSubData)\n getSubData(index) {\n let data;\n let offset;\n if (index === undefined) {\n data = this.data;\n offset = 0;\n } else {\n const begin = this.offsets[index];\n const end = begin + this.sizes[index];\n data = this.data.subarray(begin, end);\n offset = begin * 4;\n }\n return {data, offset};\n }\n\n // Set a map of values\n setUniforms(values) {\n for (const key in values) {\n this._setValue(key, values[key]);\n }\n return this;\n }\n\n _setValue(key, value) {\n const layout = this.layout[key];\n assert(layout, 'UniformLayoutStd140 illegal argument');\n const typedArray = this.typedArray[layout.type];\n if (layout.size === 1) {\n // single value -> just set it\n typedArray[layout.offset] = value;\n } else {\n // vector/matrix -> copy the supplied (typed) array, starting from offset\n typedArray.set(value, layout.offset);\n }\n }\n\n _addUniform(key, uniformType) {\n const typeAndComponents = decomposeCompositeGLType(uniformType);\n assert(typeAndComponents, ERR_ARGUMENT);\n const {type, components: count} = typeAndComponents;\n\n // First, align (bump) current offset to an even multiple of current object (1, 2, 4)\n this.size = this._alignTo(this.size, count);\n // Use the aligned size as the offset of the current uniform.\n const offset = this.size;\n // Then, add our object's padded size ((1, 2, multiple of 4) to the current offset\n this.size += count;\n\n this.layout[key] = {type, size: count, offset};\n }\n\n // Align offset to 1, 2 or 4 elements (4, 8 or 16 bytes)\n _alignTo(size, count) {\n switch (count) {\n case 1:\n return size; // Pad upwards to even multiple of 2\n case 2:\n return size + (size % 2); // Pad upwards to even multiple of 2\n default:\n return size + ((4 - (size % 4)) % 4); // Pad upwards to even multiple of 4\n }\n }\n}\n"],"mappings":"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"}
@@ -5,10 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.getUniformSetter = getUniformSetter;
9
- exports.parseUniformName = parseUniformName;
10
8
  exports.checkUniformValues = checkUniformValues;
11
9
  exports.copyUniform = copyUniform;
10
+ exports.getUniformSetter = getUniformSetter;
11
+ exports.parseUniformName = parseUniformName;
12
12
 
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
14