@nativescript/canvas 2.0.0-alpha.2 → 2.0.0-alpha.20

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 (385) hide show
  1. package/Canvas/common.js +63 -32
  2. package/Canvas/common.js.map +1 -1
  3. package/Canvas/index.android.d.ts +10 -0
  4. package/Canvas/index.android.js +88 -27
  5. package/Canvas/index.android.js.map +1 -1
  6. package/Canvas/index.d.ts +5 -0
  7. package/Canvas/index.ios.d.ts +10 -2
  8. package/Canvas/index.ios.js +148 -77
  9. package/Canvas/index.ios.js.map +1 -1
  10. package/Canvas2D/CanvasGradient/index.d.ts +9 -2
  11. package/Canvas2D/CanvasGradient/index.js +23 -2
  12. package/Canvas2D/CanvasGradient/index.js.map +1 -1
  13. package/Canvas2D/CanvasPattern/index.d.ts +9 -2
  14. package/Canvas2D/CanvasPattern/index.js +20 -2
  15. package/Canvas2D/CanvasPattern/index.js.map +1 -1
  16. package/Canvas2D/CanvasRenderingContext2D/index.d.ts +120 -132
  17. package/Canvas2D/CanvasRenderingContext2D/{index.android.js → index.js} +135 -126
  18. package/Canvas2D/CanvasRenderingContext2D/index.js.map +1 -0
  19. package/Canvas2D/DOMMatrix/index.d.ts +74 -2
  20. package/Canvas2D/DOMMatrix/index.js +180 -2
  21. package/Canvas2D/DOMMatrix/index.js.map +1 -1
  22. package/Canvas2D/ImageData/index.d.ts +15 -2
  23. package/Canvas2D/ImageData/index.js +66 -2
  24. package/Canvas2D/ImageData/index.js.map +1 -1
  25. package/Canvas2D/Path2D/index.d.ts +21 -2
  26. package/Canvas2D/Path2D/index.js +87 -2
  27. package/Canvas2D/Path2D/index.js.map +1 -1
  28. package/Canvas2D/TextMetrics/index.d.ts +17 -2
  29. package/Canvas2D/TextMetrics/index.js +44 -2
  30. package/Canvas2D/TextMetrics/index.js.map +1 -1
  31. package/Dom/Dom.d.ts +10 -0
  32. package/Dom/Dom.js +36 -0
  33. package/Dom/Dom.js.map +1 -0
  34. package/Dom/Fill.d.ts +4 -0
  35. package/Dom/Fill.js +8 -0
  36. package/Dom/Fill.js.map +1 -0
  37. package/Dom/Group.d.ts +21 -0
  38. package/Dom/Group.js +179 -0
  39. package/Dom/Group.js.map +1 -0
  40. package/Dom/Image.d.ts +12 -0
  41. package/Dom/Image.js +33 -0
  42. package/Dom/Image.js.map +1 -0
  43. package/Dom/Paint.d.ts +15 -0
  44. package/Dom/Paint.js +57 -0
  45. package/Dom/Paint.js.map +1 -0
  46. package/Dom/Shadow.d.ts +10 -0
  47. package/Dom/Shadow.js +26 -0
  48. package/Dom/Shadow.js.map +1 -0
  49. package/Dom/Text.d.ts +9 -0
  50. package/Dom/Text.js +50 -0
  51. package/Dom/Text.js.map +1 -0
  52. package/Dom/index.d.ts +8 -0
  53. package/Dom/index.js +9 -0
  54. package/Dom/index.js.map +1 -0
  55. package/Dom/shapes/Circle.d.ts +21 -0
  56. package/Dom/shapes/Circle.js +98 -0
  57. package/Dom/shapes/Circle.js.map +1 -0
  58. package/Dom/shapes/Line.d.ts +9 -0
  59. package/Dom/shapes/Line.js +37 -0
  60. package/Dom/shapes/Line.js.map +1 -0
  61. package/Dom/shapes/Path.d.ts +8 -0
  62. package/Dom/shapes/Path.js +31 -0
  63. package/Dom/shapes/Path.js.map +1 -0
  64. package/Dom/shapes/Points.d.ts +15 -0
  65. package/Dom/shapes/Points.js +20 -0
  66. package/Dom/shapes/Points.js.map +1 -0
  67. package/Dom/shapes/Rect.d.ts +15 -0
  68. package/Dom/shapes/Rect.js +63 -0
  69. package/Dom/shapes/Rect.js.map +1 -0
  70. package/Dom/shapes/RoundedRect.d.ts +12 -0
  71. package/Dom/shapes/RoundedRect.js +96 -0
  72. package/Dom/shapes/RoundedRect.js.map +1 -0
  73. package/Dom/shapes/index.d.ts +6 -0
  74. package/Dom/shapes/index.js +7 -0
  75. package/Dom/shapes/index.js.map +1 -0
  76. package/ImageAsset/index.d.ts +28 -2
  77. package/ImageAsset/index.js +158 -2
  78. package/ImageAsset/index.js.map +1 -1
  79. package/ImageBitmap/{index.android.d.ts → index.d.ts} +3 -2
  80. package/ImageBitmap/{index.android.js → index.js} +32 -10
  81. package/ImageBitmap/index.js.map +1 -0
  82. package/LICENSE +201 -0
  83. package/SVG/SVG.js.map +1 -1
  84. package/TextDecoder/index.d.ts +9 -2
  85. package/TextDecoder/index.js +53 -2
  86. package/TextDecoder/index.js.map +1 -1
  87. package/TextEncoder/index.d.ts +9 -2
  88. package/TextEncoder/index.js +51 -2
  89. package/TextEncoder/index.js.map +1 -1
  90. package/WebGL/WebGLExtensions/index.d.ts +159 -242
  91. package/WebGL/WebGLExtensions/{index.android.js → index.js} +1 -1
  92. package/WebGL/WebGLExtensions/index.js.map +1 -0
  93. package/WebGL/WebGLRenderingContext/index.d.ts +153 -293
  94. package/WebGL/WebGLRenderingContext/{index.android.js → index.js} +37 -14
  95. package/WebGL/WebGLRenderingContext/index.js.map +1 -0
  96. package/WebGL2/WebGL2RenderingContext/common.d.ts +1 -0
  97. package/WebGL2/WebGL2RenderingContext/common.js +3 -0
  98. package/WebGL2/WebGL2RenderingContext/common.js.map +1 -1
  99. package/WebGL2/WebGL2RenderingContext/index.d.ts +101 -455
  100. package/WebGL2/WebGL2RenderingContext/{index.android.js → index.js} +19 -7
  101. package/WebGL2/WebGL2RenderingContext/index.js.map +1 -0
  102. package/angular/esm2020/index.mjs +5 -5
  103. package/angular/fesm2015/nativescript-canvas-angular.mjs +4 -4
  104. package/angular/fesm2015/nativescript-canvas-angular.mjs.map +1 -1
  105. package/angular/fesm2020/nativescript-canvas-angular.mjs +4 -4
  106. package/angular/fesm2020/nativescript-canvas-angular.mjs.map +1 -1
  107. package/angular/package.json +2 -2
  108. package/helpers.js +3 -0
  109. package/helpers.js.map +1 -1
  110. package/package.json +3 -2
  111. package/platforms/android/canvas-release.aar +0 -0
  112. package/platforms/ios/CanvasNative.xcframework/Info.plist +5 -5
  113. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
  114. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +134 -1722
  115. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative.h +1 -3
  116. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +142 -0
  117. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
  118. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  119. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +5486 -0
  120. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +153 -0
  121. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  122. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +91 -3202
  123. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/module.modulemap +2 -2
  124. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/{TNSCanvas.nib → NSCCanvas.nib} +0 -0
  125. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  126. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
  127. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +258 -3444
  128. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative.h +1 -3
  129. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +142 -0
  130. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
  131. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  132. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  133. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +5486 -0
  134. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +153 -0
  135. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  136. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +91 -3202
  137. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +5486 -0
  138. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +153 -0
  139. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  140. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +91 -3202
  141. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/module.modulemap +2 -2
  142. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/{TNSCanvas.nib → NSCCanvas.nib} +0 -0
  143. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +49 -93
  144. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  145. package/platforms/ios/Podfile +2 -1
  146. package/platforms/ios/build.xcconfig +5 -0
  147. package/platforms/ios/src/CanvasModule.h +10 -0
  148. package/platforms/ios/src/CanvasModule.mm +14 -0
  149. package/platforms/ios/src/cpp/CanvasJSIModule.h +60 -0
  150. package/platforms/ios/src/cpp/CanvasJSIModule.mm +1105 -0
  151. package/platforms/ios/src/cpp/Helpers.h +63 -0
  152. package/platforms/ios/src/cpp/ImageAssetImpl.h +30 -0
  153. package/platforms/ios/src/cpp/ImageAssetImpl.mm +417 -0
  154. package/platforms/ios/src/cpp/ImageBitmapImpl.h +41 -0
  155. package/platforms/ios/src/cpp/ImageBitmapImpl.mm +126 -0
  156. package/platforms/ios/src/cpp/JSICallback.h +15 -0
  157. package/platforms/ios/src/cpp/JSIReadFileCallback.h +16 -0
  158. package/platforms/ios/src/cpp/OnRafCallback.h +24 -0
  159. package/platforms/ios/src/cpp/OnRafCallback.mm +25 -0
  160. package/platforms/ios/src/cpp/RafImpl.h +27 -0
  161. package/platforms/ios/src/cpp/RafImpl.mm +10 -0
  162. package/platforms/ios/src/cpp/TextDecoderImpl.h +28 -0
  163. package/platforms/ios/src/cpp/TextDecoderImpl.mm +97 -0
  164. package/platforms/ios/src/cpp/TextEncoderImpl.h +28 -0
  165. package/platforms/ios/src/cpp/TextEncoderImpl.mm +60 -0
  166. package/platforms/ios/src/cpp/VecMutableBuffer.h +46 -0
  167. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.cc +6156 -0
  168. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.h +2867 -0
  169. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.h +28 -0
  170. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.mm +42 -0
  171. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.h +29 -0
  172. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.mm +49 -0
  173. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +75 -0
  174. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.mm +1972 -0
  175. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.h +29 -0
  176. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.mm +68 -0
  177. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.h +29 -0
  178. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.mm +149 -0
  179. package/platforms/ios/src/cpp/canvas2d/Path2D.h +27 -0
  180. package/platforms/ios/src/cpp/canvas2d/Path2D.mm +335 -0
  181. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.h +29 -0
  182. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.mm +68 -0
  183. package/platforms/ios/src/cpp/gl.h +29 -0
  184. package/platforms/ios/src/cpp/rust/cxx.cc +793 -0
  185. package/platforms/ios/src/cpp/rust/cxx.h +1111 -0
  186. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.h +28 -0
  187. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.mm +39 -0
  188. package/platforms/ios/src/cpp/webgl/WebGLBuffer.h +24 -0
  189. package/platforms/ios/src/cpp/webgl/WebGLFramebuffer.h +24 -0
  190. package/platforms/ios/src/cpp/webgl/WebGLProgram.h +24 -0
  191. package/platforms/ios/src/cpp/webgl/WebGLRenderbuffer.h +24 -0
  192. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.h +517 -0
  193. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.mm +5958 -0
  194. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.h +90 -0
  195. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.mm +118 -0
  196. package/platforms/ios/src/cpp/webgl/WebGLShader.h +24 -0
  197. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.h +28 -0
  198. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.mm +40 -0
  199. package/platforms/ios/src/cpp/webgl/WebGLTexture.h +23 -0
  200. package/platforms/ios/src/cpp/webgl/WebGLUniformLocation.h +28 -0
  201. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.h +28 -0
  202. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.mm +108 -0
  203. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.h +16 -0
  204. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.mm +28 -0
  205. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.h +17 -0
  206. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.mm +42 -0
  207. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.h +28 -0
  208. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.mm +295 -0
  209. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.h +18 -0
  210. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.mm +40 -0
  211. package/platforms/ios/src/cpp/webgl/extensions/EXT_shader_texture_lodImpl.h +29 -0
  212. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.h +18 -0
  213. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.mm +37 -0
  214. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.h +18 -0
  215. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.mm +28 -0
  216. package/platforms/ios/src/cpp/webgl/extensions/OES_fbo_render_mipmap.h +30 -0
  217. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.h +18 -0
  218. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.mm +31 -0
  219. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_floatImpl.h +30 -0
  220. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_float_linearImpl.h +31 -0
  221. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.h +18 -0
  222. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.mm +28 -0
  223. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_float_linearImpl.h +30 -0
  224. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.h +32 -0
  225. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.mm +127 -0
  226. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.h +20 -0
  227. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.mm +45 -0
  228. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.h +18 -0
  229. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.mm +45 -0
  230. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.h +18 -0
  231. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.mm +31 -0
  232. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.h +18 -0
  233. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.mm +70 -0
  234. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.h +18 -0
  235. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.mm +47 -0
  236. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.h +18 -0
  237. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.mm +46 -0
  238. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.h +19 -0
  239. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.mm +49 -0
  240. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.h +19 -0
  241. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.mm +30 -0
  242. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.h +31 -0
  243. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.mm +177 -0
  244. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.h +31 -0
  245. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.mm +64 -0
  246. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.h +431 -0
  247. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.mm +4551 -0
  248. package/platforms/ios/src/cpp/webgl2/WebGLQuery.h +21 -0
  249. package/platforms/ios/src/cpp/webgl2/WebGLSampler.h +21 -0
  250. package/platforms/ios/src/cpp/webgl2/WebGLSyncImpl.h +24 -0
  251. package/platforms/ios/src/cpp/webgl2/WebGLTransformFeedback.h +21 -0
  252. package/platforms/ios/src/cpp/webgl2/WebGLVertexArrayObject.h +21 -0
  253. package/platforms/ios/src/module.modulemap +4 -0
  254. package/Canvas2D/CanvasGradient/CanvasGradient.android.d.ts +0 -10
  255. package/Canvas2D/CanvasGradient/CanvasGradient.android.js +0 -26
  256. package/Canvas2D/CanvasGradient/CanvasGradient.android.js.map +0 -1
  257. package/Canvas2D/CanvasGradient/CanvasGradient.d.ts +0 -12
  258. package/Canvas2D/CanvasGradient/CanvasGradient.ios.d.ts +0 -8
  259. package/Canvas2D/CanvasGradient/CanvasGradient.ios.js +0 -19
  260. package/Canvas2D/CanvasGradient/CanvasGradient.ios.js.map +0 -1
  261. package/Canvas2D/CanvasGradient/common.d.ts +0 -3
  262. package/Canvas2D/CanvasGradient/common.js +0 -3
  263. package/Canvas2D/CanvasGradient/common.js.map +0 -1
  264. package/Canvas2D/CanvasPattern/CanvasPattern.android.d.ts +0 -8
  265. package/Canvas2D/CanvasPattern/CanvasPattern.android.js +0 -20
  266. package/Canvas2D/CanvasPattern/CanvasPattern.android.js.map +0 -1
  267. package/Canvas2D/CanvasPattern/CanvasPattern.d.ts +0 -8
  268. package/Canvas2D/CanvasPattern/CanvasPattern.ios.d.ts +0 -6
  269. package/Canvas2D/CanvasPattern/CanvasPattern.ios.js +0 -10
  270. package/Canvas2D/CanvasPattern/CanvasPattern.ios.js.map +0 -1
  271. package/Canvas2D/CanvasPattern/common.d.ts +0 -7
  272. package/Canvas2D/CanvasPattern/common.js +0 -9
  273. package/Canvas2D/CanvasPattern/common.js.map +0 -1
  274. package/Canvas2D/CanvasRenderingContext2D/common.d.ts +0 -87
  275. package/Canvas2D/CanvasRenderingContext2D/common.js +0 -12
  276. package/Canvas2D/CanvasRenderingContext2D/common.js.map +0 -1
  277. package/Canvas2D/CanvasRenderingContext2D/index.android.d.ts +0 -112
  278. package/Canvas2D/CanvasRenderingContext2D/index.android.js.map +0 -1
  279. package/Canvas2D/CanvasRenderingContext2D/index.ios.d.ts +0 -110
  280. package/Canvas2D/CanvasRenderingContext2D/index.ios.js +0 -897
  281. package/Canvas2D/CanvasRenderingContext2D/index.ios.js.map +0 -1
  282. package/Canvas2D/DOMMatrix/DOMMatrix.android.d.ts +0 -72
  283. package/Canvas2D/DOMMatrix/DOMMatrix.android.js +0 -177
  284. package/Canvas2D/DOMMatrix/DOMMatrix.android.js.map +0 -1
  285. package/Canvas2D/DOMMatrix/DOMMatrix.d.ts +0 -30
  286. package/Canvas2D/DOMMatrix/DOMMatrix.ios.d.ts +0 -48
  287. package/Canvas2D/DOMMatrix/DOMMatrix.ios.js +0 -142
  288. package/Canvas2D/DOMMatrix/DOMMatrix.ios.js.map +0 -1
  289. package/Canvas2D/DOMMatrix/common.d.ts +0 -27
  290. package/Canvas2D/DOMMatrix/common.js +0 -9
  291. package/Canvas2D/DOMMatrix/common.js.map +0 -1
  292. package/Canvas2D/ImageData/ImageData.android.d.ts +0 -9
  293. package/Canvas2D/ImageData/ImageData.android.js +0 -65
  294. package/Canvas2D/ImageData/ImageData.android.js.map +0 -1
  295. package/Canvas2D/ImageData/ImageData.d.ts +0 -11
  296. package/Canvas2D/ImageData/ImageData.ios.d.ts +0 -10
  297. package/Canvas2D/ImageData/ImageData.ios.js +0 -45
  298. package/Canvas2D/ImageData/ImageData.ios.js.map +0 -1
  299. package/Canvas2D/ImageData/common.d.ts +0 -9
  300. package/Canvas2D/ImageData/common.js +0 -13
  301. package/Canvas2D/ImageData/common.js.map +0 -1
  302. package/Canvas2D/Path2D/Path2D.android.d.ts +0 -18
  303. package/Canvas2D/Path2D/Path2D.android.js +0 -83
  304. package/Canvas2D/Path2D/Path2D.android.js.map +0 -1
  305. package/Canvas2D/Path2D/Path2D.d.ts +0 -26
  306. package/Canvas2D/Path2D/Path2D.ios.d.ts +0 -15
  307. package/Canvas2D/Path2D/Path2D.ios.js +0 -55
  308. package/Canvas2D/Path2D/Path2D.ios.js.map +0 -1
  309. package/Canvas2D/Path2D/common.d.ts +0 -17
  310. package/Canvas2D/Path2D/common.js +0 -12
  311. package/Canvas2D/Path2D/common.js.map +0 -1
  312. package/Canvas2D/TextMetrics/TextMetrics.android.d.ts +0 -16
  313. package/Canvas2D/TextMetrics/TextMetrics.android.js +0 -43
  314. package/Canvas2D/TextMetrics/TextMetrics.android.js.map +0 -1
  315. package/Canvas2D/TextMetrics/TextMetrics.d.ts +0 -7
  316. package/Canvas2D/TextMetrics/TextMetrics.ios.d.ts +0 -16
  317. package/Canvas2D/TextMetrics/TextMetrics.ios.js +0 -43
  318. package/Canvas2D/TextMetrics/TextMetrics.ios.js.map +0 -1
  319. package/Canvas2D/TextMetrics/common.d.ts +0 -18
  320. package/Canvas2D/TextMetrics/common.js +0 -13
  321. package/Canvas2D/TextMetrics/common.js.map +0 -1
  322. package/ImageAsset/ImageAsset.android.d.ts +0 -20
  323. package/ImageAsset/ImageAsset.android.js +0 -149
  324. package/ImageAsset/ImageAsset.android.js.map +0 -1
  325. package/ImageAsset/ImageAsset.d.ts +0 -31
  326. package/ImageAsset/ImageAsset.ios.d.ts +0 -22
  327. package/ImageAsset/ImageAsset.ios.js +0 -114
  328. package/ImageAsset/ImageAsset.ios.js.map +0 -1
  329. package/ImageAsset/common.d.ts +0 -13
  330. package/ImageAsset/common.js +0 -21
  331. package/ImageAsset/common.js.map +0 -1
  332. package/ImageBitmap/common.d.ts +0 -8
  333. package/ImageBitmap/common.js +0 -9
  334. package/ImageBitmap/common.js.map +0 -1
  335. package/ImageBitmap/index.android.js.map +0 -1
  336. package/ImageBitmap/index.ios.d.ts +0 -12
  337. package/ImageBitmap/index.ios.js +0 -283
  338. package/ImageBitmap/index.ios.js.map +0 -1
  339. package/TextDecoder/TextDecoder.android.d.ts +0 -8
  340. package/TextDecoder/TextDecoder.android.js +0 -52
  341. package/TextDecoder/TextDecoder.android.js.map +0 -1
  342. package/TextDecoder/TextDecoder.d.ts +0 -10
  343. package/TextDecoder/TextDecoder.ios.d.ts +0 -6
  344. package/TextDecoder/TextDecoder.ios.js +0 -37
  345. package/TextDecoder/TextDecoder.ios.js.map +0 -1
  346. package/TextDecoder/common.d.ts +0 -8
  347. package/TextDecoder/common.js +0 -13
  348. package/TextDecoder/common.js.map +0 -1
  349. package/TextEncoder/TextEncoder.android.d.ts +0 -8
  350. package/TextEncoder/TextEncoder.android.js +0 -50
  351. package/TextEncoder/TextEncoder.android.js.map +0 -1
  352. package/TextEncoder/TextEncoder.d.ts +0 -10
  353. package/TextEncoder/TextEncoder.ios.d.ts +0 -6
  354. package/TextEncoder/TextEncoder.ios.js +0 -14
  355. package/TextEncoder/TextEncoder.ios.js.map +0 -1
  356. package/TextEncoder/common.d.ts +0 -7
  357. package/TextEncoder/common.js +0 -9
  358. package/TextEncoder/common.js.map +0 -1
  359. package/WebGL/WebGLExtensions/index.android.d.ts +0 -209
  360. package/WebGL/WebGLExtensions/index.android.js.map +0 -1
  361. package/WebGL/WebGLExtensions/index.ios.d.ts +0 -192
  362. package/WebGL/WebGLExtensions/index.ios.js +0 -250
  363. package/WebGL/WebGLExtensions/index.ios.js.map +0 -1
  364. package/WebGL/WebGLRenderingContext/index.android.d.ts +0 -165
  365. package/WebGL/WebGLRenderingContext/index.android.js.map +0 -1
  366. package/WebGL/WebGLRenderingContext/index.ios.d.ts +0 -163
  367. package/WebGL/WebGLRenderingContext/index.ios.js +0 -1168
  368. package/WebGL/WebGLRenderingContext/index.ios.js.map +0 -1
  369. package/WebGL2/WebGL2RenderingContext/index.android.d.ts +0 -103
  370. package/WebGL2/WebGL2RenderingContext/index.android.js.map +0 -1
  371. package/WebGL2/WebGL2RenderingContext/index.ios.d.ts +0 -102
  372. package/WebGL2/WebGL2RenderingContext/index.ios.js +0 -618
  373. package/WebGL2/WebGL2RenderingContext/index.ios.js.map +0 -1
  374. package/angular/nativescript-canvas-angular.d.ts +0 -5
  375. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/Utils.h +0 -26
  376. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64.swiftsourceinfo +0 -0
  377. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftdoc +0 -0
  378. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface +0 -3264
  379. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/Utils.h +0 -26
  380. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64.swiftsourceinfo +0 -0
  381. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64.swiftsourceinfo +0 -0
  382. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftdoc +0 -0
  383. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface +0 -3264
  384. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftdoc +0 -0
  385. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftinterface +0 -3264
@@ -0,0 +1,4551 @@
1
+ //
2
+ // Created by Osei Fortune on 22/03/2022.
3
+ //
4
+
5
+ #include "WebGL2RenderingContext.h"
6
+
7
+ WebGL2RenderingContext::WebGL2RenderingContext(rust::Box<WebGLState> state) : WebGLRenderingContext(
8
+ std::move(state), WebGLRenderingVersion::V2) {
9
+ }
10
+
11
+
12
+ WebGL2RenderingContext::WebGL2RenderingContext(rust::Box<WebGLState> state,
13
+ WebGLRenderingVersion version)
14
+ : WebGLRenderingContext(std::move(state), version) {
15
+
16
+ }
17
+
18
+
19
+ std::vector<jsi::PropNameID> WebGL2RenderingContext::getPropertyNames(jsi::Runtime &rt) {
20
+ std::vector<jsi::PropNameID> ret;
21
+
22
+ // gl2 + gl1 props
23
+ ret.reserve(353 + 434);
24
+
25
+ // 351
26
+ ret.push_back(jsi::PropNameID::forAscii(rt, "beginQuery"));
27
+ ret.push_back(jsi::PropNameID::forAscii(rt, "beginTransformFeedback"));
28
+ ret.push_back(jsi::PropNameID::forAscii(rt, "bindBufferBase"));
29
+ ret.push_back(jsi::PropNameID::forAscii(rt, "bindBufferRange"));
30
+ ret.push_back(jsi::PropNameID::forAscii(rt, "bindSampler"));
31
+ ret.push_back(jsi::PropNameID::forAscii(rt, "bindTransformFeedback"));
32
+ ret.push_back(jsi::PropNameID::forAscii(rt, "bindVertexArray"));
33
+ ret.push_back(jsi::PropNameID::forAscii(rt, "blitFramebuffer"));
34
+ ret.push_back(jsi::PropNameID::forAscii(rt, "clearBufferfi"));
35
+ ret.push_back(jsi::PropNameID::forAscii(rt, "clearBufferfv"));
36
+ ret.push_back(jsi::PropNameID::forAscii(rt, "clearBufferiv"));
37
+ ret.push_back(jsi::PropNameID::forAscii(rt, "clearBufferuiv"));
38
+ ret.push_back(jsi::PropNameID::forAscii(rt, "clientWaitSync"));
39
+ ret.push_back(jsi::PropNameID::forAscii(rt, "compressedTexSubImage3D"));
40
+ ret.push_back(jsi::PropNameID::forAscii(rt, "copyBufferSubData"));
41
+ ret.push_back(jsi::PropNameID::forAscii(rt, "copyTexSubImage3D"));
42
+ ret.push_back(jsi::PropNameID::forAscii(rt, "createQuery"));
43
+ ret.push_back(jsi::PropNameID::forAscii(rt, "createSampler"));
44
+ ret.push_back(jsi::PropNameID::forAscii(rt, "createTransformFeedback"));
45
+ ret.push_back(jsi::PropNameID::forAscii(rt, "createVertexArray"));
46
+ ret.push_back(jsi::PropNameID::forAscii(rt, "deleteQuery"));
47
+ ret.push_back(jsi::PropNameID::forAscii(rt, "deleteSampler"));
48
+ ret.push_back(jsi::PropNameID::forAscii(rt, "deleteSync"));
49
+ ret.push_back(jsi::PropNameID::forAscii(rt, "deleteTransformFeedback"));
50
+ ret.push_back(jsi::PropNameID::forAscii(rt, "deleteVertexArray"));
51
+ ret.push_back(jsi::PropNameID::forAscii(rt, "drawArraysInstanced"));
52
+ ret.push_back(jsi::PropNameID::forAscii(rt, "drawBuffers"));
53
+ ret.push_back(jsi::PropNameID::forAscii(rt, "drawElementsInstanced"));
54
+ ret.push_back(jsi::PropNameID::forAscii(rt, "drawRangeElements"));
55
+ ret.push_back(jsi::PropNameID::forAscii(rt, "endQuery"));
56
+ ret.push_back(jsi::PropNameID::forAscii(rt, "endTransformFeedback"));
57
+ ret.push_back(jsi::PropNameID::forAscii(rt, "fenceSync"));
58
+ ret.push_back(jsi::PropNameID::forAscii(rt, "framebufferTextureLayer"));
59
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniform1ui"));
60
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniform1uiv"));
61
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniform2ui"));
62
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniform2uiv"));
63
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniform3ui"));
64
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniform3uiv"));
65
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniform4ui"));
66
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniform4uiv"));
67
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniformBlockBinding"));
68
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniformMatrix2x3fv"));
69
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniformMatrix2x4fv"));
70
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniformMatrix3x2fv"));
71
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniformMatrix3x4fv"));
72
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniformMatrix4x2fv"));
73
+ ret.push_back(jsi::PropNameID::forAscii(rt, "uniformMatrix4x3fv"));
74
+ ret.push_back(jsi::PropNameID::forAscii(rt, "vertexAttribDivisor"));
75
+ ret.push_back(jsi::PropNameID::forAscii(rt, "vertexAttribI4i"));
76
+ ret.push_back(jsi::PropNameID::forAscii(rt, "vertexAttribI4iv"));
77
+ ret.push_back(jsi::PropNameID::forAscii(rt, "vertexAttribI4ui"));
78
+ ret.push_back(jsi::PropNameID::forAscii(rt, "vertexAttribI4uiv"));
79
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getActiveUniformBlockName"));
80
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getActiveUniformBlockParameter"));
81
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getActiveUniforms"));
82
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getBufferSubData"));
83
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getFragDataLocation"));
84
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getIndexedParameter"));
85
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getInternalformatParameter"));
86
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getParameter"));
87
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getQueryParameter"));
88
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getQuery"));
89
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getSamplerParameter"));
90
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getSyncParameter"));
91
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getTransformFeedbackVarying"));
92
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getUniformBlockIndex"));
93
+ ret.push_back(jsi::PropNameID::forAscii(rt, "getUniformIndices"));
94
+ ret.push_back(jsi::PropNameID::forAscii(rt, "invalidateFramebuffer"));
95
+ ret.push_back(jsi::PropNameID::forAscii(rt, "invalidateSubFramebuffer"));
96
+ ret.push_back(jsi::PropNameID::forAscii(rt, "isQuery"));
97
+ ret.push_back(jsi::PropNameID::forAscii(rt, "isSampler"));
98
+ ret.push_back(jsi::PropNameID::forAscii(rt, "isSync"));
99
+ ret.push_back(jsi::PropNameID::forAscii(rt, "isTransformFeedback"));
100
+ ret.push_back(jsi::PropNameID::forAscii(rt, "isVertexArray"));
101
+ ret.push_back(jsi::PropNameID::forAscii(rt, "pauseTransformFeedback"));
102
+ ret.push_back(jsi::PropNameID::forAscii(rt, "readBuffer"));
103
+ ret.push_back(jsi::PropNameID::forAscii(rt, "renderbufferStorageMultisample"));
104
+ ret.push_back(jsi::PropNameID::forAscii(rt, "resumeTransformFeedback"));
105
+ ret.push_back(jsi::PropNameID::forAscii(rt, "samplerParameterf"));
106
+ ret.push_back(jsi::PropNameID::forAscii(rt, "samplerParameteri"));
107
+ ret.push_back(jsi::PropNameID::forAscii(rt, "texImage3D"));
108
+ ret.push_back(jsi::PropNameID::forAscii(rt, "texStorage2D"));
109
+ ret.push_back(jsi::PropNameID::forAscii(rt, "texStorage3D"));
110
+ ret.push_back(jsi::PropNameID::forAscii(rt, "texSubImage3D"));
111
+ ret.push_back(jsi::PropNameID::forAscii(rt, "transformFeedbackVaryings"));
112
+
113
+
114
+ ret.push_back(jsi::PropNameID::forAscii(rt, "READ_BUFFER"));
115
+
116
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNPACK_ROW_LENGTH"));
117
+
118
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNPACK_SKIP_ROWS"));
119
+
120
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNPACK_SKIP_PIXELS"));
121
+
122
+ ret.push_back(jsi::PropNameID::forAscii(rt, "PACK_ROW_LENGTH"));
123
+
124
+ ret.push_back(jsi::PropNameID::forAscii(rt, "PACK_SKIP_ROWS"));
125
+
126
+ ret.push_back(jsi::PropNameID::forAscii(rt, "PACK_SKIP_PIXELS"));
127
+
128
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_BINDING_3D"));
129
+
130
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNPACK_SKIP_IMAGES"));
131
+
132
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNPACK_IMAGE_HEIGHT"));
133
+
134
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_3D_TEXTURE_SIZE"));
135
+
136
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_ELEMENTS_VERTICES"));
137
+
138
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_ELEMENTS_INDICES"));
139
+
140
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_TEXTURE_LOD_BIAS"));
141
+
142
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_FRAGMENT_UNIFORM_COMPONENTS"));
143
+
144
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_VERTEX_UNIFORM_COMPONENTS"));
145
+
146
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_ARRAY_TEXTURE_LAYERS"));
147
+
148
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MIN_PROGRAM_TEXEL_OFFSET"));
149
+
150
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_PROGRAM_TEXEL_OFFSET"));
151
+
152
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_VARYING_COMPONENTS"));
153
+
154
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAGMENT_SHADER_DERIVATIVE_HINT"));
155
+
156
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RASTERIZER_DISCARD"));
157
+
158
+ ret.push_back(jsi::PropNameID::forAscii(rt, "VERTEX_ARRAY_BINDING"));
159
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_VERTEX_OUTPUT_COMPONENTS"));
160
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_FRAGMENT_INPUT_COMPONENTS"));
161
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_SERVER_WAIT_TIMEOUT"));
162
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_ELEMENT_INDEX"));
163
+
164
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RED"));
165
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB8"));
166
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGBA8"));
167
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB10_A2"));
168
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_3D"));
169
+
170
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_WRAP_R"));
171
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_MIN_LOD"));
172
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_MAX_LOD"));
173
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_BASE_LEVEL"));
174
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_MAX_LEVEL"));
175
+
176
+
177
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_COMPARE_MODE"));
178
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_COMPARE_FUNC"));
179
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SRGB"));
180
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SRGB8"));
181
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SRGB8_ALPHA8"));
182
+
183
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COMPARE_REF_TO_TEXTURE"));
184
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGBA32F"));
185
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB32F"));
186
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGBA16F"));
187
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB16F"));
188
+
189
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_2D_ARRAY"));
190
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_BINDING_2D_ARRAY"));
191
+ ret.push_back(jsi::PropNameID::forAscii(rt, "R11F_G11F_B10F"));
192
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB9_E5"));
193
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGBA32UI"));
194
+
195
+
196
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB32UI"));
197
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGBA16UI"));
198
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB16UI"));
199
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGBA8UI"));
200
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB8UI"));
201
+
202
+
203
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGBA32I"));
204
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB32I"));
205
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGBA16I"));
206
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB16I"));
207
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGBA8I"));
208
+
209
+
210
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB8I"));
211
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RED_INTEGER"));
212
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB_INTEGER"));
213
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGBA_INTEGER"));
214
+ ret.push_back(jsi::PropNameID::forAscii(rt, "R8"));
215
+
216
+
217
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG8"));
218
+ ret.push_back(jsi::PropNameID::forAscii(rt, "R16F"));
219
+ ret.push_back(jsi::PropNameID::forAscii(rt, "R32F"));
220
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG16F"));
221
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG32F"));
222
+
223
+
224
+ ret.push_back(jsi::PropNameID::forAscii(rt, "R8I"));
225
+ ret.push_back(jsi::PropNameID::forAscii(rt, "R8UI"));
226
+ ret.push_back(jsi::PropNameID::forAscii(rt, "R16I"));
227
+ ret.push_back(jsi::PropNameID::forAscii(rt, "R16UI"));
228
+ ret.push_back(jsi::PropNameID::forAscii(rt, "R32I"));
229
+
230
+
231
+ ret.push_back(jsi::PropNameID::forAscii(rt, "R32UI"));
232
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG8I"));
233
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG8UI"));
234
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG16I"));
235
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG16UI"));
236
+
237
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG32I"));
238
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG32UI"));
239
+ ret.push_back(jsi::PropNameID::forAscii(rt, "R8_SNORM"));
240
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG8_SNORM"));
241
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB8_SNORM"));
242
+
243
+
244
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGBA8_SNORM"));
245
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RGB10_A2UI"));
246
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_IMMUTABLE_FORMAT"));
247
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TEXTURE_IMMUTABLE_LEVELS"));
248
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_INT_2_10_10_10_REV"));
249
+
250
+
251
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_INT_10F_11F_11F_REV"));
252
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_INT_5_9_9_9_REV"));
253
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FLOAT_32_UNSIGNED_INT_24_8_REV"));
254
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_INT_24_8"));
255
+ ret.push_back(jsi::PropNameID::forAscii(rt, "HALF_FLOAT"));
256
+
257
+
258
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG"));
259
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RG_INTEGER"));
260
+ ret.push_back(jsi::PropNameID::forAscii(rt, "INT_2_10_10_10_REV"));
261
+ ret.push_back(jsi::PropNameID::forAscii(rt, "QUERY_RESULT_AVAILABLE"));
262
+ ret.push_back(jsi::PropNameID::forAscii(rt, "QUERY_RESULT"));
263
+
264
+
265
+ ret.push_back(jsi::PropNameID::forAscii(rt, "CURRENT_QUERY"));
266
+ ret.push_back(jsi::PropNameID::forAscii(rt, "ANY_SAMPLES_PASSED"));
267
+ ret.push_back(jsi::PropNameID::forAscii(rt, "ANY_SAMPLES_PASSED_CONSERVATIVE"));
268
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_DRAW_BUFFERS"));
269
+
270
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER0"));
271
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER1"));
272
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER2"));
273
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER3)"));
274
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER4"));
275
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER5"));
276
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER6"));
277
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER7"));
278
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER8"));
279
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER9"));
280
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER10"));
281
+
282
+ /* Getting GL parameter information */
283
+
284
+ /* Textures */
285
+
286
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER11"));
287
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER12"));
288
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER13"));
289
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER14"));
290
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_BUFFER15"));
291
+
292
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_COLOR_ATTACHMENTS"));
293
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT1"));
294
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT2"));
295
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT3"));
296
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT4"));
297
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT5"));
298
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT6"));
299
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT7"));
300
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT8"));
301
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT9"));
302
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT10"));
303
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT11"));
304
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT12"));
305
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT13"));
306
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT14"));
307
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR_ATTACHMENT15"));
308
+
309
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SAMPLER_3D"));
310
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SAMPLER_2D_SHADOW"));
311
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SAMPLER_2D_ARRAY"));
312
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SAMPLER_2D_ARRAY_SHADOW"));
313
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SAMPLER_CUBE_SHADOW"));
314
+
315
+ ret.push_back(jsi::PropNameID::forAscii(rt, "INT_SAMPLER_2D"));
316
+ ret.push_back(jsi::PropNameID::forAscii(rt, "INT_SAMPLER_3D"));
317
+ ret.push_back(jsi::PropNameID::forAscii(rt, "INT_SAMPLER_CUBE"));
318
+ ret.push_back(jsi::PropNameID::forAscii(rt, "INT_SAMPLER_2D_ARRAY"));
319
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_INT_SAMPLER_2D"));
320
+
321
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_INT_SAMPLER_3D"));
322
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_INT_SAMPLER_CUBE"));
323
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_INT_SAMPLER_2D_ARRAY"));
324
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_SAMPLES"));
325
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SAMPLER_BINDING"));
326
+
327
+ ret.push_back(jsi::PropNameID::forAscii(rt, "PIXEL_PACK_BUFFER"));
328
+ ret.push_back(jsi::PropNameID::forAscii(rt, "PIXEL_UNPACK_BUFFER"));
329
+ ret.push_back(jsi::PropNameID::forAscii(rt, "PIXEL_PACK_BUFFER_BINDING"));
330
+ ret.push_back(jsi::PropNameID::forAscii(rt, "PIXEL_UNPACK_BUFFER_BINDING"));
331
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COPY_READ_BUFFER"));
332
+
333
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COPY_WRITE_BUFFER"));
334
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COPY_READ_BUFFER_BINDING"));
335
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COPY_WRITE_BUFFER_BINDING"));
336
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FLOAT_MAT2x3"));
337
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FLOAT_MAT2x4"));
338
+
339
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FLOAT_MAT3x2"));
340
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FLOAT_MAT3x4"));
341
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FLOAT_MAT4x2"));
342
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FLOAT_MAT4x3"));
343
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_INT_VEC2"));
344
+
345
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_INT_VEC3"));
346
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_INT_VEC4"));
347
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNED_NORMALIZED"));
348
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SIGNED_NORMALIZED"));
349
+
350
+ /* Vertex attributes */
351
+
352
+ ret.push_back(jsi::PropNameID::forAscii(rt, "VERTEX_ATTRIB_ARRAY_INTEGER"));
353
+ ret.push_back(jsi::PropNameID::forAscii(rt, "VERTEX_ATTRIB_ARRAY_DIVISOR"));
354
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TRANSFORM_FEEDBACK_BUFFER_MODE"));
355
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS"));
356
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TRANSFORM_FEEDBACK_VARYINGS"));
357
+
358
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TRANSFORM_FEEDBACK_BUFFER_START"));
359
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TRANSFORM_FEEDBACK_BUFFER_SIZE"));
360
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN"));
361
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS"));
362
+
363
+ /* Textures */
364
+
365
+ /* Pixel types */
366
+
367
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS"));
368
+ ret.push_back(jsi::PropNameID::forAscii(rt, "INTERLEAVED_ATTRIBS"));
369
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SEPARATE_ATTRIBS"));
370
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TRANSFORM_FEEDBACK_BUFFER"));
371
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TRANSFORM_FEEDBACK_BUFFER_BINDING"));
372
+
373
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TRANSFORM_FEEDBACK"));
374
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TRANSFORM_FEEDBACK_PAUSED"));
375
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TRANSFORM_FEEDBACK_ACTIVE"));
376
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TRANSFORM_FEEDBACK_BINDING"));
377
+
378
+ /* Pixel types */
379
+
380
+ /* Queries */
381
+
382
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING"));
383
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE"));
384
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAMEBUFFER_ATTACHMENT_RED_SIZE"));
385
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAMEBUFFER_ATTACHMENT_GREEN_SIZE"));
386
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAMEBUFFER_ATTACHMENT_BLUE_SIZE"));
387
+
388
+ /* Queries */
389
+
390
+ /* Draw buffers */
391
+
392
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE"));
393
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE"));
394
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE"));
395
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAMEBUFFER_DEFAULT"));
396
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DEPTH_STENCIL_ATTACHMENT"));
397
+
398
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DEPTH_STENCIL"));
399
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DEPTH24_STENCIL8"));
400
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_FRAMEBUFFER_BINDING"));
401
+ ret.push_back(jsi::PropNameID::forAscii(rt, "READ_FRAMEBUFFER"));
402
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DRAW_FRAMEBUFFER"));
403
+
404
+ ret.push_back(jsi::PropNameID::forAscii(rt, "READ_FRAMEBUFFER_BINDING"));
405
+ ret.push_back(jsi::PropNameID::forAscii(rt, "RENDERBUFFER_SAMPLES"));
406
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER"));
407
+ ret.push_back(jsi::PropNameID::forAscii(rt, "FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"));
408
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BUFFER"));
409
+
410
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BUFFER_BINDING"));
411
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BUFFER_START"));
412
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BUFFER_SIZE"));
413
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_VERTEX_UNIFORM_BLOCKS"));
414
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_FRAGMENT_UNIFORM_BLOCKS"));
415
+
416
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_COMBINED_UNIFORM_BLOCKS"));
417
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_UNIFORM_BUFFER_BINDINGS"));
418
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_UNIFORM_BLOCK_SIZE"));
419
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS"));
420
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS"));
421
+
422
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BUFFER_OFFSET_ALIGNMENT"));
423
+ ret.push_back(jsi::PropNameID::forAscii(rt, "ACTIVE_UNIFORM_BLOCKS"));
424
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_TYPE"));
425
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_SIZE"));
426
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BLOCK_INDEX"));
427
+
428
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_OFFSET"));
429
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_ARRAY_STRIDE"));
430
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_MATRIX_STRIDE"));
431
+
432
+ /* Draw buffers */
433
+
434
+ /* Samplers */
435
+
436
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_IS_ROW_MAJOR"));
437
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BLOCK_BINDING"));
438
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BLOCK_DATA_SIZE"));
439
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BLOCK_ACTIVE_UNIFORMS"));
440
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES"));
441
+
442
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER"));
443
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER"));
444
+ ret.push_back(jsi::PropNameID::forAscii(rt, "OBJECT_TYPE"));
445
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SYNC_CONDITION"));
446
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SYNC_STATUS"));
447
+
448
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SYNC_FLAGS"));
449
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SYNC_FENCE"));
450
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SYNC_GPU_COMMANDS_COMPLETE"));
451
+ ret.push_back(jsi::PropNameID::forAscii(rt, "UNSIGNALED"));
452
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SIGNALED"));
453
+
454
+ /* Samplers */
455
+
456
+ /* Buffers */
457
+
458
+ ret.push_back(jsi::PropNameID::forAscii(rt, "ALREADY_SIGNALED"));
459
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TIMEOUT_EXPIRED"));
460
+ ret.push_back(jsi::PropNameID::forAscii(rt, "CONDITION_SATISFIED"));
461
+ ret.push_back(jsi::PropNameID::forAscii(rt, "WAIT_FAILED"));
462
+ ret.push_back(jsi::PropNameID::forAscii(rt, "SYNC_FLUSH_COMMANDS_BIT"));
463
+
464
+ ret.push_back(jsi::PropNameID::forAscii(rt, "COLOR"));
465
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DEPTH"));
466
+ ret.push_back(jsi::PropNameID::forAscii(rt, "STENCIL"));
467
+
468
+ /* Buffers */
469
+
470
+ /* Data types */
471
+
472
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MIN"));
473
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX"));
474
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DEPTH_COMPONENT24"));
475
+ ret.push_back(jsi::PropNameID::forAscii(rt, "STREAM_READ"));
476
+ ret.push_back(jsi::PropNameID::forAscii(rt, "STREAM_COPY"));
477
+
478
+ ret.push_back(jsi::PropNameID::forAscii(rt, "STATIC_READ"));
479
+ ret.push_back(jsi::PropNameID::forAscii(rt, "STATIC_COPY"));
480
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DYNAMIC_READ"));
481
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DYNAMIC_COPY"));
482
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DEPTH_COMPONENT32F"));
483
+ ret.push_back(jsi::PropNameID::forAscii(rt, "DEPTH32F_STENCIL8"));
484
+
485
+ /* Data types */
486
+
487
+ ret.push_back(jsi::PropNameID::forAscii(rt, "INVALID_INDEX"));
488
+ ret.push_back(jsi::PropNameID::forAscii(rt, "TIMEOUT_IGNORED"));
489
+
490
+ /* Vertex attributes */
491
+
492
+ /* Transform feedback */
493
+
494
+ ret.push_back(jsi::PropNameID::forAscii(rt, "MAX_CLIENT_WAIT_TIMEOUT_WEBGL"));
495
+
496
+ /* Transform feedback */
497
+
498
+
499
+ /* GL 1 */
500
+
501
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "__resized"));
502
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "__startRaf"));
503
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "__stopRaf"));
504
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("activeTexture")));
505
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("attachShader")));
506
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("bindAttribLocation")));
507
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("bindBuffer")));
508
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("bindFramebuffer")));
509
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("bindRenderbuffer")));
510
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("bindTexture")));
511
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("blendColor")));
512
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("blendEquationSeparate")));
513
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("blendEquation")));
514
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("blendFuncSeparate")));
515
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("blendFunc")));
516
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("bufferData")));
517
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("bufferSubData")));
518
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("checkFramebufferStatus")));
519
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("clearColor")));
520
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("clearDepth")));
521
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("clearStencil")));
522
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("clear")));
523
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("colorMask")));
524
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("commit")));
525
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("compileShader")));
526
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("compressedTexImage2D")));
527
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("compressedTexSubImage2D")));
528
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("copyTexImage2D")));
529
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("copyTexSubImage2D")));
530
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("createBuffer")));
531
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("createFramebuffer")));
532
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("createProgram")));
533
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("createRenderbuffer")));
534
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("createShader")));
535
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("createTexture")));
536
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("cullFace")));
537
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("deleteBuffer")));
538
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("deleteFramebuffer")));
539
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("deleteProgram")));
540
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("deleteRenderbuffer")));
541
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("deleteShader")));
542
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("deleteTexture")));
543
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("depthFunc")));
544
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("depthMask")));
545
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("depthRange")));
546
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("detachShader")));
547
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("disableVertexAttribArray")));
548
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("disable")));
549
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("drawArrays")));
550
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("drawElements")));
551
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("enableVertexAttribArray")));
552
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("enable")));
553
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("finish")));
554
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("flush")));
555
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("framebufferRenderbuffer")));
556
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("framebufferTexture2D")));
557
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("frontFace")));
558
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("generateMipmap")));
559
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getActiveAttrib")));
560
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getActiveUniform")));
561
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getAttachedShaders")));
562
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getAttribLocation")));
563
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getBufferParameter")));
564
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getContextAttributes")));
565
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getError")));
566
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getExtension")));
567
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getFramebufferAttachmentParameter")));
568
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getParameter")));
569
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getProgramInfoLog")));
570
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getProgramParameter")));
571
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getRenderbufferParameter")));
572
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getShaderInfoLog")));
573
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getShaderParameter")));
574
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getShaderPrecisionFormat")));
575
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getShaderSource")));
576
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getSupportedExtensions")));
577
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getTexParameter")));
578
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getUniformLocation")));
579
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getUniform")));
580
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getVertexAttribOffset")));
581
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getVertexAttrib")));
582
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("hint")));
583
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("isBuffer")));
584
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("isContextLost")));
585
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("isEnabled")));
586
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("isFramebuffer")));
587
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("isProgram")));
588
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("isRenderbuffer")));
589
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("isShader")));
590
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("isTexture")));
591
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("lineWidth")));
592
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("linkProgram")));
593
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("pixelStorei")));
594
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("polygonOffset")));
595
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("readPixels")));
596
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("renderbufferStorage")));
597
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("sampleCoverage")));
598
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("scissor")));
599
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("shaderSource")));
600
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("stencilFuncSeparate")));
601
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("stencilFunc")));
602
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("stencilMaskSeparate")));
603
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("stencilMask")));
604
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("stencilOpSeparate")));
605
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("stencilOp")));
606
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("texImage2D")));
607
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("texParameterf")));
608
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("texParameteri")));
609
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("texSubImage2D")));
610
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform1f")));
611
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform1iv")));
612
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform1fv")));
613
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform1i")));
614
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform2f")));
615
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform2iv")));
616
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform2fv")));
617
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform2i")));
618
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform3f")));
619
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform3iv")));
620
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform3fv")));
621
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform3i")));
622
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform4f")));
623
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform4iv")));
624
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform4fv")));
625
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniform4i")));
626
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniformMatrix2fv")));
627
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniformMatrix3fv")));
628
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("uniformMatrix4fv")));
629
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("useProgram")));
630
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("validateProgram")));
631
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("vertexAttrib1f")));
632
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("vertexAttrib1fv")));
633
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("vertexAttrib2f")));
634
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("vertexAttrib2fv")));
635
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("vertexAttrib3f")));
636
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("vertexAttrib3fv")));
637
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("vertexAttrib4f")));
638
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("vertexAttrib4fv")));
639
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("vertexAttribPointer")));
640
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("viewport")));
641
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("__toDataURL")));
642
+
643
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DEPTH_BUFFER_BIT"));
644
+
645
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_BUFFER_BIT"));
646
+
647
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "COLOR_BUFFER_BIT"));
648
+
649
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "POINTS"));
650
+
651
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LINES"));
652
+
653
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LINE_LOOP"));
654
+
655
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LINE_STRIP"));
656
+
657
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TRIANGLES"));
658
+
659
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TRIANGLE_STRIP"));
660
+
661
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TRIANGLE_FAN"));
662
+
663
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ZERO"));
664
+
665
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ONE"));
666
+
667
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SRC_COLOR"));
668
+
669
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ONE_MINUS_SRC_COLOR"));
670
+
671
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SRC_ALPHA"));
672
+
673
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ONE_MINUS_SRC_ALPHA"));
674
+
675
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DST_ALPHA"));
676
+
677
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ONE_MINUS_DST_ALPHA"));
678
+
679
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DST_COLOR"));
680
+
681
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ONE_MINUS_DST_COLOR"));
682
+
683
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SRC_ALPHA_SATURATE"));
684
+
685
+
686
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "CONSTANT_COLOR"));
687
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ONE_MINUS_CONSTANT_COLOR"));
688
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "CONSTANT_ALPHA"));
689
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ONE_MINUS_CONSTANT_ALPHA"));
690
+
691
+
692
+ /* Blending equations */
693
+
694
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FUNC_ADD"));
695
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FUNC_SUBTRACT"));
696
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FUNC_REVERSE_SUBTRACT"));
697
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BLEND_EQUATION"));
698
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BLEND_EQUATION_RGB"));
699
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BLEND_EQUATION_ALPHA"));
700
+
701
+
702
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BLEND_DST_RGB"));
703
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BLEND_SRC_RGB"));
704
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BLEND_DST_ALPHA"));
705
+
706
+
707
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BLEND_SRC_ALPHA"));
708
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BLEND_COLOR"));
709
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ARRAY_BUFFER_BINDING"));
710
+
711
+
712
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ELEMENT_ARRAY_BUFFER_BINDING"));
713
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LINE_WIDTH"));
714
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ALIASED_POINT_SIZE_RANGE"));
715
+
716
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ALIASED_LINE_WIDTH_RANGE"));
717
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "CULL_FACE_MODE"));
718
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRONT_FACE"));
719
+
720
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DEPTH_RANGE"));
721
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DEPTH_WRITEMASK"));
722
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DEPTH_CLEAR_VALUE"));
723
+
724
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DEPTH_FUNC"));
725
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_CLEAR_VALUE"));
726
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_FUNC"));
727
+
728
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_FAIL"));
729
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_PASS_DEPTH_FAIL"));
730
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_PASS_DEPTH_PASS"));
731
+
732
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_REF"));
733
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_VALUE_MASK"));
734
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_WRITEMASK"));
735
+
736
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_BACK_FUNC"));
737
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_BACK_FAIL"));
738
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_BACK_PASS_DEPTH_FAIL"));
739
+
740
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_BACK_PASS_DEPTH_PASS"));
741
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_BACK_REF"));
742
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_BACK_VALUE_MASK"));
743
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_BACK_WRITEMASK"));
744
+
745
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VIEWPORT"));
746
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SCISSOR_BOX"));
747
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "COLOR_CLEAR_VALUE"));
748
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "COLOR_WRITEMASK"));
749
+
750
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "UNPACK_ALIGNMENT"));
751
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "PACK_ALIGNMENT"));
752
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MAX_TEXTURE_SIZE"));
753
+
754
+
755
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MAX_VIEWPORT_DIMS"));
756
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SUBPIXEL_BITS"));
757
+
758
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RED_BITS"));
759
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "GREEN_BITS"));
760
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BLUE_BITS"));
761
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ALPHA_BITS"));
762
+
763
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_BITS"));
764
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "POLYGON_OFFSET_UNITS"));
765
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "POLYGON_OFFSET_FACTOR"));
766
+
767
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_BINDING_2D"));
768
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SAMPLE_BUFFERS"));
769
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SAMPLES"));
770
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SAMPLE_COVERAGE_VALUE"));
771
+
772
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SAMPLE_COVERAGE_INVERT"));
773
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "COMPRESSED_TEXTURE_FORMATS"));
774
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VENDOR"));
775
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERER"));
776
+
777
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VERSION"));
778
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "IMPLEMENTATION_COLOR_READ_TYPE"));
779
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "IMPLEMENTATION_COLOR_READ_FORMAT"));
780
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BROWSER_DEFAULT_WEBGL"));
781
+
782
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STATIC_DRAW"));
783
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STREAM_DRAW"));
784
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DYNAMIC_DRAW"));
785
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ARRAY_BUFFER"));
786
+
787
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ELEMENT_ARRAY_BUFFER"));
788
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BUFFER_SIZE"));
789
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BUFFER_USAGE"));
790
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "CURRENT_VERTEX_ATTRIB"));
791
+
792
+
793
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VERTEX_ATTRIB_ARRAY_ENABLED"));
794
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VERTEX_ATTRIB_ARRAY_SIZE"));
795
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VERTEX_ATTRIB_ARRAY_STRIDE"));
796
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VERTEX_ATTRIB_ARRAY_TYPE"));
797
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VERTEX_ATTRIB_ARRAY_NORMALIZED"));
798
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VERTEX_ATTRIB_ARRAY_POINTER"));
799
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"));
800
+
801
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "CULL_FACE"));
802
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRONT"));
803
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BACK"));
804
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRONT_AND_BACK"));
805
+
806
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BLEND"));
807
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DEPTH_TEST"));
808
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DITHER"));
809
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "POLYGON_OFFSET_FILL"));
810
+
811
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SAMPLE_ALPHA_TO_COVERAGE"));
812
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SAMPLE_COVERAGE"));
813
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SCISSOR_TEST"));
814
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_TEST"));
815
+
816
+
817
+ /* Errors */
818
+
819
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "NO_ERROR"));
820
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "INVALID_ENUM"));
821
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "INVALID_VALUE"));
822
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "INVALID_OPERATION"));
823
+
824
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "OUT_OF_MEMORY"));
825
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "CONTEXT_LOST_WEBGL"));
826
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "CW"));
827
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "CCW"));
828
+
829
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DONT_CARE"));
830
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FASTEST"));
831
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "NICEST"));
832
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "GENERATE_MIPMAP_HINT"));
833
+
834
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BYTE"));
835
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "UNSIGNED_BYTE"));
836
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SHORT"));
837
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "UNSIGNED_SHORT"));
838
+
839
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "INT"));
840
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "UNSIGNED_INT"));
841
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FLOAT"));
842
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DEPTH_COMPONENT"));
843
+
844
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ALPHA"));
845
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RGB"));
846
+
847
+ /* Clearing buffers */
848
+
849
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RGBA"));
850
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LUMINANCE"));
851
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LUMINANCE_ALPHA"));
852
+
853
+ /* Clearing buffers */
854
+
855
+ /* Rendering primitives */
856
+
857
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "UNSIGNED_SHORT_4_4_4_4"));
858
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "UNSIGNED_SHORT_5_5_5_1"));
859
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "UNSIGNED_SHORT_5_6_5"));
860
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAGMENT_SHADER"));
861
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VERTEX_SHADER"));
862
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "COMPILE_STATUS"));
863
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DELETE_STATUS"));
864
+
865
+ /* Rendering primitives */
866
+
867
+ /* Blending modes */
868
+
869
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LINK_STATUS"));
870
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "VALIDATE_STATUS"));
871
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ATTACHED_SHADERS"));
872
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ACTIVE_ATTRIBUTES"));
873
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ACTIVE_UNIFORMS"));
874
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MAX_VERTEX_ATTRIBS"));
875
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MAX_VERTEX_UNIFORM_VECTORS"));
876
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MAX_VARYING_VECTORS"));
877
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MAX_COMBINED_TEXTURE_IMAGE_UNITS"));
878
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MAX_VERTEX_TEXTURE_IMAGE_UNITS"));
879
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MAX_TEXTURE_IMAGE_UNITS"));
880
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MAX_FRAGMENT_UNIFORM_VECTORS"));
881
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SHADER_TYPE"));
882
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SHADING_LANGUAGE_VERSION"));
883
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "CURRENT_PROGRAM"));
884
+
885
+ /* Blending modes */
886
+
887
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "NEVER"));
888
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LESS"));
889
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "EQUAL"));
890
+
891
+ /* Blending equations */
892
+
893
+ /* Getting GL parameter information */
894
+
895
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LEQUAL"));
896
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "GREATER"));
897
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "NOTEQUAL"));
898
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "GEQUAL"));
899
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ALWAYS"));
900
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "KEEP"));
901
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "REPLACE"));
902
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "INCR"));
903
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DECR"));
904
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "INVERT"));
905
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "INCR_WRAP"));
906
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DECR_WRAP"));
907
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "NEAREST"));
908
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LINEAR"));
909
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "NEAREST_MIPMAP_NEAREST"));
910
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LINEAR_MIPMAP_NEAREST"));
911
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "NEAREST_MIPMAP_LINEAR"));
912
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LINEAR_MIPMAP_LINEAR"));
913
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_MAG_FILTER"));
914
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_MIN_FILTER"));
915
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_WRAP_S"));
916
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_WRAP_T"));
917
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_2D"));
918
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE"));
919
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_CUBE_MAP"));
920
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_BINDING_CUBE_MAP"));
921
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_CUBE_MAP_POSITIVE_X"));
922
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_CUBE_MAP_NEGATIVE_X"));
923
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_CUBE_MAP_POSITIVE_Y"));
924
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_CUBE_MAP_NEGATIVE_Y"));
925
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_CUBE_MAP_POSITIVE_Z"));
926
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE_CUBE_MAP_NEGATIVE_Z"));
927
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MAX_CUBE_MAP_TEXTURE_SIZE"));
928
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE0"));
929
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE1"));
930
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE2"));
931
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE3"));
932
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE4"));
933
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE5"));
934
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE6"));
935
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE7"));
936
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE8"));
937
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE9"));
938
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE10"));
939
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE11"));
940
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE12"));
941
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE13"));
942
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE14"));
943
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE15"));
944
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE16"));
945
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE17"));
946
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE18"));
947
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE19"));
948
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE20"));
949
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE21"));
950
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE22"));
951
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE23"));
952
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE24"));
953
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE25"));
954
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE26"));
955
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE27"));
956
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE28"));
957
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE29"));
958
+
959
+ /* Getting GL parameter information */
960
+
961
+ /* Buffers */
962
+
963
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE30"));
964
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "TEXTURE31"));
965
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "ACTIVE_TEXTURE"));
966
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "REPEAT"));
967
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "CLAMP_TO_EDGE"));
968
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MIRRORED_REPEAT"));
969
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FLOAT_VEC2"));
970
+
971
+ /* Buffers */
972
+
973
+ /* Vertex attributes */
974
+
975
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FLOAT_VEC3"));
976
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FLOAT_VEC4"));
977
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "INT_VEC2"));
978
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "INT_VEC3"));
979
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "INT_VEC4"));
980
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BOOL"));
981
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BOOL_VEC2"));
982
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BOOL_VEC3"));
983
+
984
+ /* Vertex attributes */
985
+
986
+ /* Culling */
987
+
988
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "BOOL_VEC4"));
989
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FLOAT_MAT2"));
990
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FLOAT_MAT3"));
991
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FLOAT_MAT4"));
992
+
993
+ /* Culling */
994
+
995
+ /* Enabling and disabling */
996
+
997
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SAMPLER_2D"));
998
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "SAMPLER_CUBE"));
999
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LOW_FLOAT"));
1000
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MEDIUM_FLOAT"));
1001
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "HIGH_FLOAT"));
1002
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "LOW_INT"));
1003
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MEDIUM_INT"));
1004
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "HIGH_INT"));
1005
+
1006
+ /* Enabling and disabling */
1007
+
1008
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAMEBUFFER"));
1009
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERBUFFER"));
1010
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RGBA4"));
1011
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RGB5_A1"));
1012
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RGB565"));
1013
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DEPTH_COMPONENT16"));
1014
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_INDEX8"));
1015
+
1016
+ /* Errors */
1017
+
1018
+ /* Front face directions */
1019
+
1020
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DEPTH_STENCIL"));
1021
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERBUFFER_WIDTH"));
1022
+
1023
+ /* Front face directions */
1024
+
1025
+ /* Hints */
1026
+
1027
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERBUFFER_HEIGHT"));
1028
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERBUFFER_INTERNAL_FORMAT"));
1029
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERBUFFER_RED_SIZE"));
1030
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERBUFFER_GREEN_SIZE"));
1031
+
1032
+ /* Hints */
1033
+
1034
+ /* Data types */
1035
+
1036
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERBUFFER_BLUE_SIZE"));
1037
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERBUFFER_ALPHA_SIZE"));
1038
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERBUFFER_DEPTH_SIZE"));
1039
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERBUFFER_STENCIL_SIZE"));
1040
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE"));
1041
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"));
1042
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"));
1043
+
1044
+ /* Data types */
1045
+
1046
+ /* Pixel formats */
1047
+
1048
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE"));
1049
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "COLOR_ATTACHMENT0"));
1050
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DEPTH_ATTACHMENT"));
1051
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "STENCIL_ATTACHMENT"));
1052
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "DEPTH_STENCIL_ATTACHMENT"));
1053
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "NONE"));
1054
+
1055
+ /* Pixel formats */
1056
+
1057
+ /* Pixel types */
1058
+
1059
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAMEBUFFER_COMPLETE"));
1060
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAMEBUFFER_INCOMPLETE_ATTACHMENT"));
1061
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"));
1062
+
1063
+ /* Pixel types */
1064
+
1065
+ /* Shaders */
1066
+
1067
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAMEBUFFER_INCOMPLETE_DIMENSIONS"));
1068
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAMEBUFFER_UNSUPPORTED"));
1069
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "FRAMEBUFFER_BINDING"));
1070
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "RENDERBUFFER_BINDING"));
1071
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "MAX_RENDERBUFFER_SIZE"));
1072
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "INVALID_FRAMEBUFFER_OPERATION"));
1073
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "UNPACK_FLIP_Y_WEBGL"));
1074
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "UNPACK_PREMULTIPLY_ALPHA_WEBGL"));
1075
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "UNPACK_COLORSPACE_CONVERSION_WEBGL"));
1076
+
1077
+
1078
+ /* GL 1 */
1079
+
1080
+
1081
+ return ret;
1082
+ }
1083
+
1084
+ jsi::Value WebGL2RenderingContext::get(jsi::Runtime &runtime, const jsi::PropNameID &name) {
1085
+ auto methodName = name.utf8(runtime);
1086
+
1087
+ auto prop = GetProperty(methodName);
1088
+
1089
+
1090
+ if (methodName == "beginQuery") {
1091
+ return jsi::Function::createFromHostFunction(runtime,
1092
+ jsi::PropNameID::forAscii(runtime, methodName),
1093
+ 2,
1094
+ [this](jsi::Runtime &runtime,
1095
+ const jsi::Value &thisValue,
1096
+ const jsi::Value *arguments,
1097
+ size_t count) -> jsi::Value {
1098
+
1099
+ if (count > 1 && arguments[0].isNumber() &&
1100
+ arguments[1].isObject()) {
1101
+ auto target = (uint32_t) arguments[0].asNumber();
1102
+ auto queryObject = arguments[1].asObject(
1103
+ runtime);
1104
+
1105
+ if (queryObject.isHostObject(
1106
+ runtime)) {
1107
+ auto query = queryObject.asHostObject<WebGLQuery>(
1108
+ runtime);
1109
+ canvas_native_webgl2_begin_query(
1110
+ target,
1111
+ query->GetQuery(),
1112
+ this->GetState()
1113
+ );
1114
+ }
1115
+ }
1116
+ return jsi::Value::undefined();
1117
+ }
1118
+ );
1119
+ } else if (methodName == "beginTransformFeedback") {
1120
+ return jsi::Function::createFromHostFunction(runtime,
1121
+ jsi::PropNameID::forAscii(runtime, methodName),
1122
+ 1,
1123
+ [this](jsi::Runtime &runtime,
1124
+ const jsi::Value &thisValue,
1125
+ const jsi::Value *arguments,
1126
+ size_t count) -> jsi::Value {
1127
+
1128
+ if (count > 0 && arguments[0].isNumber()) {
1129
+ canvas_native_webgl2_begin_transform_feedback(
1130
+ (uint32_t) arguments[0].asNumber(),
1131
+ this->GetState()
1132
+ );
1133
+ }
1134
+
1135
+ return jsi::Value::undefined();
1136
+ }
1137
+ );
1138
+ } else if (methodName == "bindBufferBase") {
1139
+ return jsi::Function::createFromHostFunction(runtime,
1140
+ jsi::PropNameID::forAscii(runtime, methodName),
1141
+ 3,
1142
+ [this](jsi::Runtime &runtime,
1143
+ const jsi::Value &thisValue,
1144
+ const jsi::Value *arguments,
1145
+ size_t count) -> jsi::Value {
1146
+
1147
+ if (count > 2 && arguments[2].isObject()) {
1148
+ auto target = (uint32_t) arguments[0].asNumber();
1149
+ auto index = (uint32_t) arguments[1].asNumber();
1150
+ auto bufferObject = arguments[2].asObject(
1151
+ runtime);
1152
+ if (bufferObject.isHostObject(
1153
+ runtime)) {
1154
+ auto buffer = bufferObject.asHostObject<WebGLBuffer>(
1155
+ runtime);
1156
+
1157
+ canvas_native_webgl2_bind_buffer_base(
1158
+ target,
1159
+ index,
1160
+ buffer->GetBuffer(),
1161
+ this->GetState()
1162
+ );
1163
+ }
1164
+ }
1165
+
1166
+ return jsi::Value::undefined();
1167
+ }
1168
+ );
1169
+ } else if (methodName == "bindBufferRange") {
1170
+ return jsi::Function::createFromHostFunction(runtime,
1171
+ jsi::PropNameID::forAscii(runtime, methodName),
1172
+ 5,
1173
+ [this](jsi::Runtime &runtime,
1174
+ const jsi::Value &thisValue,
1175
+ const jsi::Value *arguments,
1176
+ size_t count) -> jsi::Value {
1177
+
1178
+ if (count > 4 && arguments[2].isObject()) {
1179
+ auto target = (uint32_t) arguments[0].asNumber();
1180
+ auto index = (uint32_t) arguments[1].asNumber();
1181
+ auto offset = arguments[3].asNumber();
1182
+ auto size = arguments[4].asNumber();
1183
+ auto bufferObject = arguments[2].asObject(
1184
+ runtime);
1185
+ if (bufferObject.isHostObject(
1186
+ runtime)) {
1187
+ auto buffer = bufferObject.asHostObject<WebGLBuffer>(
1188
+ runtime);
1189
+ canvas_native_webgl2_bind_buffer_range(
1190
+ target,
1191
+ index,
1192
+ buffer->GetBuffer(),
1193
+ static_cast<ssize_t>(offset),
1194
+ static_cast<ssize_t>(size),
1195
+ this->GetState()
1196
+ );
1197
+ }
1198
+ }
1199
+
1200
+ return jsi::Value::undefined();
1201
+
1202
+ }
1203
+ );
1204
+ } else if (methodName == "bindSampler") {
1205
+ return jsi::Function::createFromHostFunction(runtime,
1206
+ jsi::PropNameID::forAscii(runtime, methodName),
1207
+ 2,
1208
+ [this](jsi::Runtime &runtime,
1209
+ const jsi::Value &thisValue,
1210
+ const jsi::Value *arguments,
1211
+ size_t count) -> jsi::Value {
1212
+
1213
+ if (count > 1 && arguments[1].isObject()) {
1214
+ auto samplerObject = arguments[1].asObject(
1215
+ runtime);
1216
+ if (samplerObject.isHostObject(
1217
+ runtime)) {
1218
+ auto unit = (uint32_t) arguments[0].asNumber();
1219
+ auto sampler = samplerObject.asHostObject<WebGLSampler>(
1220
+ runtime);
1221
+
1222
+ canvas_native_webgl2_bind_sampler(
1223
+ unit,
1224
+ sampler->GetSampler(),
1225
+ this->GetState()
1226
+ );
1227
+ }
1228
+ }
1229
+
1230
+ return jsi::Value::undefined();
1231
+
1232
+ }
1233
+ );
1234
+ } else if (methodName == "bindTransformFeedback") {
1235
+ return jsi::Function::createFromHostFunction(runtime,
1236
+ jsi::PropNameID::forAscii(runtime, methodName),
1237
+ 2,
1238
+ [this](jsi::Runtime &runtime,
1239
+ const jsi::Value &thisValue,
1240
+ const jsi::Value *arguments,
1241
+ size_t count) -> jsi::Value {
1242
+
1243
+ if (count > 1 && arguments[1].isObject()) {
1244
+ auto transformFeedbackObject = arguments[1].asObject(
1245
+ runtime);
1246
+ if (transformFeedbackObject.isHostObject(
1247
+ runtime)) {
1248
+ auto target = (uint32_t) arguments[0].asNumber();
1249
+ auto transformFeedback = transformFeedbackObject.asHostObject<WebGLTransformFeedback>(
1250
+ runtime);
1251
+
1252
+ canvas_native_webgl2_bind_transform_feedback(
1253
+ target,
1254
+ transformFeedback->GetFeedback(),
1255
+ this->GetState()
1256
+ );
1257
+ }
1258
+ }
1259
+
1260
+ return jsi::Value::undefined();
1261
+ }
1262
+ );
1263
+ } else if (methodName == "bindVertexArray") {
1264
+ return jsi::Function::createFromHostFunction(runtime,
1265
+ jsi::PropNameID::forAscii(runtime, methodName),
1266
+ 3,
1267
+ [this](jsi::Runtime &runtime,
1268
+ const jsi::Value &thisValue,
1269
+ const jsi::Value *arguments,
1270
+ size_t count) -> jsi::Value {
1271
+
1272
+ if (count > 0) {
1273
+ if (arguments[0].isNull()) {
1274
+ canvas_native_webgl2_bind_vertex_array(
1275
+ 0,
1276
+ this->GetState()
1277
+ );
1278
+ return jsi::Value::undefined();
1279
+ }
1280
+
1281
+ if (arguments[0].isObject()) {
1282
+ auto vertexArrayObject = arguments[0].asObject(
1283
+ runtime);
1284
+ if (vertexArrayObject.isHostObject(
1285
+ runtime)) {
1286
+ auto vertexArray = vertexArrayObject.asHostObject<WebGLVertexArrayObject>(
1287
+ runtime);
1288
+
1289
+ if (vertexArray != nullptr) {
1290
+
1291
+ canvas_native_webgl2_bind_vertex_array(
1292
+ vertexArray->GetVertexArrayObject(),
1293
+ this->GetState()
1294
+ );
1295
+ }
1296
+ }
1297
+ }
1298
+
1299
+ }
1300
+
1301
+ return jsi::Value::undefined();
1302
+ }
1303
+ );
1304
+ } else if (methodName == "blitFramebuffer") {
1305
+ return jsi::Function::createFromHostFunction(runtime,
1306
+ jsi::PropNameID::forAscii(runtime, methodName),
1307
+ 10,
1308
+ [this](jsi::Runtime &runtime,
1309
+ const jsi::Value &thisValue,
1310
+ const jsi::Value *arguments,
1311
+ size_t count) -> jsi::Value {
1312
+
1313
+ if (count > 9) {
1314
+ auto srcX0 = (int32_t) arguments[0].asNumber();
1315
+ auto srcY0 = (int32_t) arguments[1].asNumber();
1316
+
1317
+ auto srcX1 = (int32_t) arguments[2].asNumber();
1318
+ auto srcY1 = (int32_t) arguments[3].asNumber();
1319
+
1320
+ auto dstX0 = (int32_t) arguments[4].asNumber();
1321
+ auto dstY0 = (int32_t) arguments[5].asNumber();
1322
+
1323
+ auto dstX1 = (int32_t) arguments[6].asNumber();
1324
+ auto dstY1 = (int32_t) arguments[7].asNumber();
1325
+
1326
+ auto mask = (uint32_t) arguments[8].asNumber();
1327
+ auto filter = (uint32_t) arguments[9].asNumber();
1328
+ canvas_native_webgl2_blit_framebuffer(
1329
+ srcX0,
1330
+ srcY0,
1331
+ srcX1,
1332
+ srcY1,
1333
+ dstX0,
1334
+ dstY0,
1335
+ dstX1,
1336
+ dstY1,
1337
+ mask,
1338
+ filter,
1339
+ this->GetState()
1340
+ );
1341
+ }
1342
+
1343
+ return jsi::Value::undefined();
1344
+
1345
+ }
1346
+ );
1347
+ } else if (methodName == "clearBufferfv") {
1348
+ return jsi::Function::createFromHostFunction(runtime,
1349
+ jsi::PropNameID::forAscii(runtime, methodName),
1350
+ 3,
1351
+ [this](jsi::Runtime &runtime,
1352
+ const jsi::Value &thisValue,
1353
+ const jsi::Value *arguments,
1354
+ size_t count) -> jsi::Value {
1355
+
1356
+ if (count > 2 && arguments[0].isObject() &&
1357
+ arguments[1].isObject()) {
1358
+ auto bufferObject = arguments[0].asObject(
1359
+ runtime);
1360
+ auto drawbuffer = (int32_t) arguments[1].asNumber();
1361
+ auto values = arguments[2].asObject(
1362
+ runtime);
1363
+ if (bufferObject.isHostObject(
1364
+ runtime)) {
1365
+ auto buffer = bufferObject.asHostObject<WebGLBuffer>(
1366
+ runtime);
1367
+ if (values.isArray(runtime)) {
1368
+ auto array = values.getArray(
1369
+ runtime);
1370
+ auto len = array.size(runtime);
1371
+ rust::Vec<float> buf;
1372
+ buf.reserve(len);
1373
+ for (int j = 0; j < len; ++j) {
1374
+ auto item = array.getValueAtIndex(
1375
+ runtime, j);
1376
+ if (!item.isNumber()) {
1377
+ buf.push_back(
1378
+ std::nanf(""));
1379
+ } else {
1380
+ buf.push_back(
1381
+ static_cast<float>(item.asNumber())
1382
+ );
1383
+ }
1384
+ }
1385
+
1386
+ rust::Slice<const float> slice(
1387
+ buf.data(),
1388
+ buf.size());
1389
+ canvas_native_webgl2_clear_bufferfv(
1390
+ buffer->GetBuffer(),
1391
+ drawbuffer,
1392
+ slice,
1393
+ this->GetState()
1394
+ );
1395
+
1396
+ } else if (values.isFloat32Array(
1397
+ runtime)) {
1398
+ auto buff = values.getTypedArray(
1399
+ runtime);
1400
+ auto slice = GetTypedArrayData<const float>(
1401
+ runtime, buff);
1402
+ canvas_native_webgl2_clear_bufferfv(
1403
+ buffer->GetBuffer(),
1404
+ drawbuffer,
1405
+ slice,
1406
+ this->GetState()
1407
+ );
1408
+ }
1409
+ }
1410
+ }
1411
+
1412
+ return jsi::Value::undefined();
1413
+ }
1414
+ );
1415
+ } else if (methodName == "clearBufferiv") {
1416
+ return jsi::Function::createFromHostFunction(runtime,
1417
+ jsi::PropNameID::forAscii(runtime, methodName),
1418
+ 3,
1419
+ [this](jsi::Runtime &runtime,
1420
+ const jsi::Value &thisValue,
1421
+ const jsi::Value *arguments,
1422
+ size_t count) -> jsi::Value {
1423
+
1424
+ if (count > 2 && arguments[0].isObject() &&
1425
+ arguments[1].isObject()) {
1426
+ auto bufferObject = arguments[0].asObject(
1427
+ runtime);
1428
+ auto drawbuffer = (int32_t) arguments[1].asNumber();
1429
+ auto values = arguments[2].asObject(
1430
+ runtime);
1431
+ if (bufferObject.isHostObject(
1432
+ runtime)) {
1433
+ auto buffer = bufferObject.asHostObject<WebGLBuffer>(
1434
+ runtime);
1435
+ if (values.isArray(runtime)) {
1436
+ auto array = values.getArray(
1437
+ runtime);
1438
+ auto len = array.size(runtime);
1439
+ rust::Vec<int32_t> buf;
1440
+ buf.reserve(len);
1441
+ for (int j = 0; j < len; ++j) {
1442
+ auto item = array.getValueAtIndex(
1443
+ runtime, j);
1444
+ buf.push_back(
1445
+ static_cast<int32_t>(item.asNumber())
1446
+ );
1447
+ }
1448
+ rust::Slice<const int32_t> slice(
1449
+ buf.data(),
1450
+ buf.size());
1451
+
1452
+ canvas_native_webgl2_clear_bufferiv(
1453
+ buffer->GetBuffer(),
1454
+ drawbuffer,
1455
+ slice,
1456
+ this->GetState()
1457
+ );
1458
+
1459
+ } else if (values.isInt32Array(
1460
+ runtime)) {
1461
+ auto buff = values.getTypedArray(
1462
+ runtime);
1463
+ auto slice = GetTypedArrayData<const int32_t>(
1464
+ runtime, buff);
1465
+ canvas_native_webgl2_clear_bufferiv(
1466
+ buffer->GetBuffer(),
1467
+ drawbuffer,
1468
+ slice,
1469
+ this->GetState()
1470
+ );
1471
+ }
1472
+ }
1473
+ }
1474
+
1475
+ return jsi::Value::undefined();
1476
+ }
1477
+ );
1478
+ } else if (methodName == "clearBufferuiv") {
1479
+ return jsi::Function::createFromHostFunction(runtime,
1480
+ jsi::PropNameID::forAscii(runtime, methodName),
1481
+ 3,
1482
+ [this](jsi::Runtime &runtime,
1483
+ const jsi::Value &thisValue,
1484
+ const jsi::Value *arguments,
1485
+ size_t count) -> jsi::Value {
1486
+ if (count > 2 && arguments[0].isObject() &&
1487
+ arguments[1].isObject()) {
1488
+ auto bufferObject = arguments[0].asObject(
1489
+ runtime);
1490
+ auto drawbuffer = (int32_t) arguments[1].asNumber();
1491
+ auto values = arguments[2].asObject(
1492
+ runtime);
1493
+ if (bufferObject.isHostObject(
1494
+ runtime)) {
1495
+ auto buffer = bufferObject.asHostObject<WebGLBuffer>(
1496
+ runtime);
1497
+ if (values.isArray(runtime)) {
1498
+ auto array = values.getArray(
1499
+ runtime);
1500
+ auto len = array.size(runtime);
1501
+ rust::Vec<uint32_t> buf;
1502
+ buf.reserve(len);
1503
+ for (int j = 0; j < len; ++j) {
1504
+ auto item = array.getValueAtIndex(
1505
+ runtime, j);
1506
+ buf.push_back(
1507
+ static_cast<uint32_t>(item.asNumber())
1508
+ );
1509
+ }
1510
+
1511
+ rust::Slice<const uint32_t> slice(
1512
+ buf.data(),
1513
+ buf.size());
1514
+
1515
+ canvas_native_webgl2_clear_bufferuiv(
1516
+ buffer->GetBuffer(),
1517
+ drawbuffer,
1518
+ slice,
1519
+ this->GetState()
1520
+ );
1521
+
1522
+ } else if (values.isUint32Array(
1523
+ runtime)) {
1524
+ auto buff = values.getTypedArray(
1525
+ runtime);
1526
+ auto slice = GetTypedArrayData<const uint32_t>(
1527
+ runtime, buff);
1528
+ canvas_native_webgl2_clear_bufferuiv(
1529
+ buffer->GetBuffer(),
1530
+ drawbuffer,
1531
+ slice,
1532
+ this->GetState()
1533
+ );
1534
+ }
1535
+ }
1536
+ }
1537
+ return jsi::Value::undefined();
1538
+
1539
+ }
1540
+ );
1541
+ } else if (methodName == "clientWaitSync") {
1542
+ return jsi::Function::createFromHostFunction(runtime,
1543
+ jsi::PropNameID::forAscii(runtime, methodName),
1544
+ 3,
1545
+ [this](jsi::Runtime &runtime,
1546
+ const jsi::Value &thisValue,
1547
+ const jsi::Value *arguments,
1548
+ size_t count) -> jsi::Value {
1549
+
1550
+
1551
+ if (count > 2 && arguments[0].isObject()) {
1552
+ auto syncObject = arguments[0].asObject(
1553
+ runtime);
1554
+
1555
+ if (syncObject.isHostObject(runtime)) {
1556
+ auto sync = syncObject.asHostObject<WebGLSyncImpl>(
1557
+ runtime);
1558
+ if (sync != nullptr) {
1559
+ auto flags = (uint32_t) arguments[1].asNumber();
1560
+ auto timeout = arguments[2].asNumber();
1561
+ auto ret = canvas_native_webgl2_client_wait_sync(
1562
+ sync->GetSync(),
1563
+ flags,
1564
+ static_cast<ssize_t>(timeout),
1565
+ this->GetState()
1566
+ );
1567
+ return {(int32_t) ret};
1568
+ }
1569
+ }
1570
+ }
1571
+ // todo decide if WAIT_FAILED should be returned here
1572
+ return jsi::Value::undefined();
1573
+ }
1574
+ );
1575
+ } else if (methodName == "compressedTexSubImage3D") {
1576
+ return jsi::Function::createFromHostFunction(runtime,
1577
+ jsi::PropNameID::forAscii(runtime, methodName),
1578
+ 12,
1579
+ [this](jsi::Runtime &runtime,
1580
+ const jsi::Value &thisValue,
1581
+ const jsi::Value *arguments,
1582
+ size_t count) -> jsi::Value {
1583
+ if (count > 8) {
1584
+ auto target = (uint32_t) arguments[0].asNumber();
1585
+ auto level = (int32_t) arguments[1].asNumber();
1586
+ auto xoffset = (int32_t) arguments[2].asNumber();
1587
+ auto yoffset = (int32_t) arguments[3].asNumber();
1588
+ auto zoffset = (int32_t) arguments[4].asNumber();
1589
+ auto width = (int32_t) arguments[5].asNumber();
1590
+ auto height = (int32_t) arguments[6].asNumber();
1591
+ auto depth = (int32_t) arguments[7].asNumber();
1592
+ auto format = (uint32_t) arguments[8].asNumber();
1593
+
1594
+ if (arguments[9].isObject()) {
1595
+ auto imageSizeOrBuf = arguments[9].asObject(
1596
+ runtime);
1597
+ if (imageSizeOrBuf.isTypedArray(
1598
+ runtime)) {
1599
+ auto array = imageSizeOrBuf.getTypedArray(
1600
+ runtime);
1601
+ auto slice = GetTypedArrayData<const uint8_t>(
1602
+ runtime, array);
1603
+
1604
+ size_t srcOffset = 0;
1605
+ if (arguments[10].isNumber()) {
1606
+ srcOffset = static_cast<size_t>(arguments[10].asNumber());
1607
+ }
1608
+ size_t srcLengthOverride = 0;
1609
+ if (arguments[11].isNumber()) {
1610
+ srcLengthOverride = static_cast<size_t>(arguments[11].asNumber());
1611
+ }
1612
+
1613
+
1614
+ canvas_native_webgl2_compressed_tex_sub_image3d(
1615
+ target,
1616
+ level,
1617
+ xoffset,
1618
+ yoffset,
1619
+ zoffset,
1620
+ width,
1621
+ height,
1622
+ depth,
1623
+ format,
1624
+ slice,
1625
+ srcOffset,
1626
+ srcLengthOverride,
1627
+ this->GetState()
1628
+ );
1629
+ }
1630
+ } else {
1631
+ auto imageSizeOrBuf = (int32_t) arguments[0].asNumber();
1632
+ auto offset = 0;
1633
+ if (arguments[10].isNumber()) {
1634
+ offset = (int32_t) arguments[10].asNumber();
1635
+ }
1636
+ canvas_native_webgl2_compressed_tex_sub_image3d_none(
1637
+ target,
1638
+ level,
1639
+ xoffset,
1640
+ yoffset,
1641
+ zoffset,
1642
+ width,
1643
+ height,
1644
+ depth,
1645
+ format,
1646
+ imageSizeOrBuf,
1647
+ offset,
1648
+ this->GetState()
1649
+ );
1650
+ }
1651
+ }
1652
+ return jsi::Value::undefined();
1653
+ }
1654
+ );
1655
+ } else if (methodName == "copyBufferSubData") {
1656
+ return jsi::Function::createFromHostFunction(runtime,
1657
+ jsi::PropNameID::forAscii(runtime, methodName),
1658
+ 5,
1659
+ [this](jsi::Runtime &runtime,
1660
+ const jsi::Value &thisValue,
1661
+ const jsi::Value *arguments,
1662
+ size_t count) -> jsi::Value {
1663
+ if (count > 4) {
1664
+ auto readTarget = (uint32_t) arguments[0].asNumber();
1665
+ auto writeTarget = (uint32_t) arguments[1].asNumber();
1666
+ auto readOffset = arguments[2].asNumber();
1667
+ auto writeOffset = arguments[3].asNumber();
1668
+ auto size = arguments[4].asNumber();
1669
+ canvas_native_webgl2_copy_buffer_sub_data(
1670
+ readTarget,
1671
+ writeTarget,
1672
+ static_cast<ssize_t>(readOffset),
1673
+ static_cast<ssize_t>(writeOffset),
1674
+ static_cast<ssize_t>(size),
1675
+ this->GetState()
1676
+ );
1677
+ }
1678
+
1679
+ return jsi::Value::undefined();
1680
+ }
1681
+ );
1682
+ } else if (methodName == "copyTexSubImage3D") {
1683
+ return jsi::Function::createFromHostFunction(runtime,
1684
+ jsi::PropNameID::forAscii(runtime, methodName),
1685
+ 9,
1686
+ [this](jsi::Runtime &runtime,
1687
+ const jsi::Value &thisValue,
1688
+ const jsi::Value *arguments,
1689
+ size_t count) -> jsi::Value {
1690
+
1691
+ if (count > 8) {
1692
+ auto target = (uint32_t) arguments[0].asNumber();
1693
+ auto level = (int32_t) arguments[1].asNumber();
1694
+ auto xoffset = (int32_t) arguments[2].asNumber();
1695
+ auto yoffset = (int32_t) arguments[3].asNumber();
1696
+ auto zoffset = (int32_t) arguments[4].asNumber();
1697
+ auto x = (int32_t) arguments[5].asNumber();
1698
+ auto y = (int32_t) arguments[6].asNumber();
1699
+ auto width = (int32_t) arguments[7].asNumber();
1700
+ auto height = (int32_t) arguments[8].asNumber();
1701
+ canvas_native_webgl2_copy_tex_sub_image3d(
1702
+ target,
1703
+ level,
1704
+ xoffset,
1705
+ yoffset,
1706
+ zoffset,
1707
+ x,
1708
+ y,
1709
+ width,
1710
+ height,
1711
+ this->GetState()
1712
+ );
1713
+ }
1714
+
1715
+ return jsi::Value::undefined();
1716
+ }
1717
+ );
1718
+ } else if (methodName == "createQuery") {
1719
+ return jsi::Function::createFromHostFunction(runtime,
1720
+ jsi::PropNameID::forAscii(runtime, methodName),
1721
+ 0,
1722
+ [this](jsi::Runtime &runtime,
1723
+ const jsi::Value &thisValue,
1724
+ const jsi::Value *arguments,
1725
+ size_t count) -> jsi::Value {
1726
+
1727
+ auto ret = canvas_native_webgl2_create_query(
1728
+ this->GetState());
1729
+ auto query = std::make_shared<WebGLQuery>(
1730
+ ret);
1731
+ return jsi::Object::createFromHostObject(
1732
+ runtime, query);
1733
+ }
1734
+ );
1735
+ } else if (methodName == "createSampler") {
1736
+ return jsi::Function::createFromHostFunction(runtime,
1737
+ jsi::PropNameID::forAscii(runtime, methodName),
1738
+ 0,
1739
+ [this](jsi::Runtime &runtime,
1740
+ const jsi::Value &thisValue,
1741
+ const jsi::Value *arguments,
1742
+ size_t count) -> jsi::Value {
1743
+ auto ret = canvas_native_webgl2_create_sampler(
1744
+ this->GetState());
1745
+ auto sampler = std::make_shared<WebGLSampler>(
1746
+ ret);
1747
+ return jsi::Object::createFromHostObject(
1748
+ runtime, sampler);
1749
+ }
1750
+ );
1751
+ } else if (methodName == "createTransformFeedback") {
1752
+ return jsi::Function::createFromHostFunction(runtime,
1753
+ jsi::PropNameID::forAscii(runtime, methodName),
1754
+ 0,
1755
+ [this](jsi::Runtime &runtime,
1756
+ const jsi::Value &thisValue,
1757
+ const jsi::Value *arguments,
1758
+ size_t count) -> jsi::Value {
1759
+ auto ret = canvas_native_webgl2_create_transform_feedback(
1760
+ this->GetState());
1761
+
1762
+ auto feedback = std::make_shared<WebGLTransformFeedback>(
1763
+ ret);
1764
+ return jsi::Object::createFromHostObject(
1765
+ runtime, feedback);
1766
+ }
1767
+ );
1768
+ } else if (methodName == "createVertexArray") {
1769
+ return jsi::Function::createFromHostFunction(runtime,
1770
+ jsi::PropNameID::forAscii(runtime, methodName),
1771
+ 0,
1772
+ [this](jsi::Runtime &runtime,
1773
+ const jsi::Value &thisValue,
1774
+ const jsi::Value *arguments,
1775
+ size_t count) -> jsi::Value {
1776
+ auto ret = canvas_native_webgl2_create_vertex_array(
1777
+ this->GetState());
1778
+
1779
+ auto vertexArrayObject = std::make_shared<WebGLVertexArrayObject>(
1780
+ ret);
1781
+ return jsi::Object::createFromHostObject(
1782
+ runtime, vertexArrayObject);
1783
+ }
1784
+ );
1785
+ } else if (methodName == "clearBufferfi") {
1786
+ return jsi::Function::createFromHostFunction(runtime,
1787
+ jsi::PropNameID::forAscii(runtime, methodName),
1788
+ 4,
1789
+ [this](jsi::Runtime &runtime,
1790
+ const jsi::Value &thisValue,
1791
+ const jsi::Value *arguments,
1792
+ size_t count) -> jsi::Value {
1793
+
1794
+
1795
+ if (count > 3 && arguments[0].isObject()) {
1796
+ auto bufferObject = arguments[0].asObject(
1797
+ runtime);
1798
+ if (bufferObject.isHostObject(
1799
+ runtime)) {
1800
+ auto buffer = bufferObject.asHostObject<WebGLBuffer>(
1801
+ runtime);
1802
+ if (buffer != nullptr) {
1803
+ auto drawbuffer = (int32_t) arguments[1].asNumber();
1804
+ auto depth = arguments[2].asNumber();
1805
+ auto stencil = (int32_t) arguments[3].asNumber();
1806
+ canvas_native_webgl2_clear_bufferfi(
1807
+ buffer->GetBuffer(),
1808
+ drawbuffer,
1809
+ static_cast<float>(depth),
1810
+ stencil,
1811
+ this->GetState()
1812
+ );
1813
+ }
1814
+
1815
+ }
1816
+ }
1817
+
1818
+ return jsi::Value::undefined();
1819
+
1820
+ }
1821
+ );
1822
+ } else if (methodName == "deleteQuery") {
1823
+ return jsi::Function::createFromHostFunction(runtime,
1824
+ jsi::PropNameID::forAscii(runtime, methodName),
1825
+ 1,
1826
+ [this](jsi::Runtime &runtime,
1827
+ const jsi::Value &thisValue,
1828
+ const jsi::Value *arguments,
1829
+ size_t count) -> jsi::Value {
1830
+
1831
+ if (arguments[0].isObject()) {
1832
+ auto queryObject = arguments[0].asObject(
1833
+ runtime);
1834
+ if (queryObject.isHostObject(
1835
+ runtime)) {
1836
+ auto query = queryObject.asHostObject<WebGLQuery>(
1837
+ runtime);
1838
+
1839
+ if (query != nullptr) {
1840
+ canvas_native_webgl2_delete_query_with_query(
1841
+ query->GetQuery(),
1842
+ this->GetState()
1843
+ );
1844
+ }
1845
+
1846
+ }
1847
+ }
1848
+
1849
+ return jsi::Value::undefined();
1850
+ }
1851
+ );
1852
+ } else if (methodName == "deleteSampler") {
1853
+ return jsi::Function::createFromHostFunction(runtime,
1854
+ jsi::PropNameID::forAscii(runtime, methodName),
1855
+ 1,
1856
+ [this](jsi::Runtime &runtime,
1857
+ const jsi::Value &thisValue,
1858
+ const jsi::Value *arguments,
1859
+ size_t count) -> jsi::Value {
1860
+
1861
+ if (arguments[0].isObject()) {
1862
+ auto samplerObject = arguments[0].asObject(
1863
+ runtime);
1864
+ if (samplerObject.isHostObject(
1865
+ runtime)) {
1866
+ auto sampler = samplerObject.asHostObject<WebGLSampler>(
1867
+ runtime);
1868
+
1869
+ if (sampler != nullptr) {
1870
+ canvas_native_webgl2_delete_sampler_with_sampler(
1871
+ sampler->GetSampler(),
1872
+ this->GetState()
1873
+ );
1874
+ }
1875
+ }
1876
+ }
1877
+
1878
+ return jsi::Value::undefined();
1879
+ }
1880
+ );
1881
+ } else if (methodName == "deleteSync") {
1882
+ return jsi::Function::createFromHostFunction(runtime,
1883
+ jsi::PropNameID::forAscii(runtime, methodName),
1884
+ 3,
1885
+ [this](jsi::Runtime &runtime,
1886
+ const jsi::Value &thisValue,
1887
+ const jsi::Value *arguments,
1888
+ size_t count) -> jsi::Value {
1889
+
1890
+ if (arguments[0].isObject()) {
1891
+ auto syncObject = arguments[0].asObject(
1892
+ runtime);
1893
+ if (syncObject.isHostObject(runtime)) {
1894
+ auto sync = syncObject.asHostObject<WebGLSyncImpl>(
1895
+ runtime);
1896
+
1897
+ if (sync != nullptr) {
1898
+ canvas_native_webgl2_delete_sync_with_sync(
1899
+ sync->GetSync(),
1900
+ this->GetState()
1901
+ );
1902
+ }
1903
+ }
1904
+ }
1905
+ return jsi::Value::undefined();
1906
+ }
1907
+ );
1908
+ } else if (methodName == "deleteTransformFeedback") {
1909
+ return jsi::Function::createFromHostFunction(runtime,
1910
+ jsi::PropNameID::forAscii(runtime, methodName),
1911
+ 3,
1912
+ [this](jsi::Runtime &runtime,
1913
+ const jsi::Value &thisValue,
1914
+ const jsi::Value *arguments,
1915
+ size_t count) -> jsi::Value {
1916
+
1917
+ if (arguments[0].isObject()) {
1918
+ auto transformFeedbackObject = arguments[0].asObject(
1919
+ runtime);
1920
+ if (transformFeedbackObject.isHostObject(
1921
+ runtime)) {
1922
+ auto transformFeedback = transformFeedbackObject.asHostObject<WebGLTransformFeedback>(
1923
+ runtime);
1924
+
1925
+ if (transformFeedback != nullptr) {
1926
+ canvas_native_webgl2_delete_transform_feedback(
1927
+ transformFeedback->GetFeedback(),
1928
+ this->GetState()
1929
+ );
1930
+ }
1931
+
1932
+ }
1933
+ }
1934
+
1935
+ return jsi::Value::undefined();
1936
+ }
1937
+ );
1938
+ } else if (methodName == "deleteVertexArray") {
1939
+ return jsi::Function::createFromHostFunction(runtime,
1940
+ jsi::PropNameID::forAscii(runtime, methodName),
1941
+ 3,
1942
+ [this](jsi::Runtime &runtime,
1943
+ const jsi::Value &thisValue,
1944
+ const jsi::Value *arguments,
1945
+ size_t count) -> jsi::Value {
1946
+
1947
+ if (arguments[0].isObject()) {
1948
+ auto vertexArrayObject = arguments[0].asObject(
1949
+ runtime);
1950
+ if (vertexArrayObject.isHostObject(
1951
+ runtime)) {
1952
+ auto vertexArray = vertexArrayObject.asHostObject<WebGLVertexArrayObject>(
1953
+ runtime);
1954
+ if (vertexArray != nullptr) {
1955
+ canvas_native_webgl2_delete_vertex_array_with_vertex_array(
1956
+ vertexArray->GetVertexArrayObject(),
1957
+ this->GetState()
1958
+ );
1959
+ }
1960
+
1961
+ }
1962
+ }
1963
+
1964
+ return jsi::Value::undefined();
1965
+ }
1966
+ );
1967
+ } else if (methodName == "drawArraysInstanced") {
1968
+ return jsi::Function::createFromHostFunction(runtime,
1969
+ jsi::PropNameID::forAscii(runtime, methodName),
1970
+ 4,
1971
+ [this](jsi::Runtime &runtime,
1972
+ const jsi::Value &thisValue,
1973
+ const jsi::Value *arguments,
1974
+ size_t count) -> jsi::Value {
1975
+
1976
+ if (count > 3) {
1977
+ auto mode = (uint32_t) arguments[0].asNumber();
1978
+ auto first = (int32_t) arguments[1].asNumber();
1979
+ auto count_ = (int32_t) arguments[2].asNumber();
1980
+ auto instanceCount = (int32_t) arguments[3].asNumber();
1981
+ canvas_native_webgl2_draw_arrays_instanced(
1982
+ mode,
1983
+ first,
1984
+ count_,
1985
+ instanceCount,
1986
+ this->GetState()
1987
+ );
1988
+
1989
+ this->UpdateInvalidateState();
1990
+ }
1991
+ return jsi::Value::undefined();
1992
+ }
1993
+ );
1994
+ } else if (methodName == "drawBuffers") {
1995
+ return jsi::Function::createFromHostFunction(runtime,
1996
+ jsi::PropNameID::forAscii(runtime, methodName),
1997
+ 1,
1998
+ [this](jsi::Runtime &runtime,
1999
+ const jsi::Value &thisValue,
2000
+ const jsi::Value *arguments,
2001
+ size_t count) -> jsi::Value {
2002
+
2003
+
2004
+ if (arguments[0].isObject()) {
2005
+ auto buffersObject = arguments[0].asObject(
2006
+ runtime);
2007
+ if (buffersObject.isArray(runtime)) {
2008
+ auto array = buffersObject.getArray(
2009
+ runtime);
2010
+ auto len = array.size(runtime);
2011
+ rust::Vec<uint32_t> buf;
2012
+ buf.reserve(len);
2013
+ for (int j = 0; j < len; ++j) {
2014
+ auto item = array.getValueAtIndex(
2015
+ runtime, j);
2016
+ buf.emplace_back(
2017
+ (uint32_t) item.asNumber());
2018
+ }
2019
+ rust::Slice<const uint32_t> slice(
2020
+ buf.data(), buf.size());
2021
+ canvas_native_webgl2_draw_buffers(
2022
+ slice,
2023
+ this->GetState());
2024
+ }
2025
+ }
2026
+
2027
+ return jsi::Value::undefined();
2028
+ }
2029
+ );
2030
+ } else if (methodName == "drawElementsInstanced") {
2031
+ return jsi::Function::createFromHostFunction(runtime,
2032
+ jsi::PropNameID::forAscii(runtime, methodName),
2033
+ 5,
2034
+ [this](jsi::Runtime &runtime,
2035
+ const jsi::Value &thisValue,
2036
+ const jsi::Value *arguments,
2037
+ size_t count) -> jsi::Value {
2038
+ if (count > 4) {
2039
+ auto mode = (uint32_t) arguments[0].asNumber();
2040
+ auto count_ = (int32_t) arguments[1].asNumber();
2041
+ auto type = (uint32_t) arguments[2].asNumber();
2042
+ auto offset = arguments[3].asNumber();
2043
+ auto instanceCount = (int32_t) arguments[4].asNumber();
2044
+ canvas_native_webgl2_draw_elements_instanced(
2045
+ mode,
2046
+ count_,
2047
+ type,
2048
+ static_cast<ssize_t>(offset),
2049
+ instanceCount,
2050
+ this->GetState()
2051
+ );
2052
+
2053
+ this->UpdateInvalidateState();
2054
+ }
2055
+ return jsi::Value::undefined();
2056
+ }
2057
+ );
2058
+ } else if (methodName == "drawRangeElements") {
2059
+ return jsi::Function::createFromHostFunction(runtime,
2060
+ jsi::PropNameID::forAscii(runtime, methodName),
2061
+ 6,
2062
+ [this](jsi::Runtime &runtime,
2063
+ const jsi::Value &thisValue,
2064
+ const jsi::Value *arguments,
2065
+ size_t count) -> jsi::Value {
2066
+ if (count > 5) {
2067
+ auto mode = (uint32_t) arguments[0].asNumber();
2068
+ auto start = (uint32_t) arguments[1].asNumber();
2069
+ auto end = (uint32_t) arguments[2].asNumber();
2070
+ auto count_ = (int32_t) arguments[3].asNumber();
2071
+ auto type = (uint32_t) arguments[4].asNumber();
2072
+ auto offset = arguments[5].asNumber();
2073
+ canvas_native_webgl2_draw_range_elements(
2074
+ mode,
2075
+ start,
2076
+ end,
2077
+ count_,
2078
+ type,
2079
+ static_cast<ssize_t>(offset),
2080
+ this->GetState()
2081
+ );
2082
+
2083
+ this->UpdateInvalidateState();
2084
+ }
2085
+ return jsi::Value::undefined();
2086
+ }
2087
+ );
2088
+ } else if (methodName == "endQuery") {
2089
+ return jsi::Function::createFromHostFunction(runtime,
2090
+ jsi::PropNameID::forAscii(runtime, methodName),
2091
+ 1,
2092
+ [this](jsi::Runtime &runtime,
2093
+ const jsi::Value &thisValue,
2094
+ const jsi::Value *arguments,
2095
+ size_t count) -> jsi::Value {
2096
+
2097
+
2098
+ if (arguments[0].isNumber()) {
2099
+ auto target = (uint32_t) arguments[0].asNumber();
2100
+ canvas_native_webgl2_end_query(target,
2101
+ this->GetState());
2102
+ }
2103
+
2104
+ return jsi::Value::undefined();
2105
+ }
2106
+ );
2107
+ } else if (methodName == "endTransformFeedback") {
2108
+ return jsi::Function::createFromHostFunction(runtime,
2109
+ jsi::PropNameID::forAscii(runtime, methodName),
2110
+ 03,
2111
+ [this](jsi::Runtime &runtime,
2112
+ const jsi::Value &thisValue,
2113
+ const jsi::Value *arguments,
2114
+ size_t count) -> jsi::Value {
2115
+ canvas_native_webgl2_end_transform_feedback(
2116
+ this->GetState());
2117
+ return jsi::Value::undefined();
2118
+ }
2119
+ );
2120
+ } else if (methodName == "fenceSync") {
2121
+ return jsi::Function::createFromHostFunction(runtime,
2122
+ jsi::PropNameID::forAscii(runtime, methodName),
2123
+ 2,
2124
+ [this](jsi::Runtime &runtime,
2125
+ const jsi::Value &thisValue,
2126
+ const jsi::Value *arguments,
2127
+ size_t count) -> jsi::Value {
2128
+
2129
+ if (count > 1) {
2130
+ auto condition = (uint32_t) arguments[0].asNumber();
2131
+ auto flags = (uint32_t) arguments[1].asNumber();
2132
+ auto sync = canvas_native_webgl2_fence_sync(
2133
+ condition,
2134
+ flags,
2135
+ this->GetState()
2136
+ );
2137
+
2138
+ return jsi::Object::createFromHostObject(runtime, std::make_shared<WebGLSyncImpl>(std::move(sync)));
2139
+ }
2140
+
2141
+ return jsi::Value::undefined();
2142
+ }
2143
+ );
2144
+ } else if (methodName == "framebufferTextureLayer") {
2145
+ return jsi::Function::createFromHostFunction(runtime,
2146
+ jsi::PropNameID::forAscii(runtime, methodName),
2147
+ 5,
2148
+ [this](jsi::Runtime &runtime,
2149
+ const jsi::Value &thisValue,
2150
+ const jsi::Value *arguments,
2151
+ size_t count) -> jsi::Value {
2152
+
2153
+
2154
+ if (count > 4 && arguments[2].isObject()) {
2155
+ auto textureObject = arguments[2].asObject(
2156
+ runtime);
2157
+ if (textureObject.isHostObject(
2158
+ runtime)) {
2159
+ auto target = (uint32_t) arguments[0].asNumber();
2160
+ auto attachment = (uint32_t) arguments[1].asNumber();
2161
+ auto texture = textureObject.asHostObject<WebGLTexture>(
2162
+ runtime);
2163
+ auto level = (int32_t) arguments[3].asNumber();
2164
+ auto layer = (int32_t) arguments[4].asNumber();
2165
+ if (texture != nullptr) {
2166
+ canvas_native_webgl2_framebuffer_texture_layer(
2167
+ target,
2168
+ attachment,
2169
+ texture->GetTexture(),
2170
+ level,
2171
+ layer,
2172
+ this->GetState()
2173
+ );
2174
+ }
2175
+ }
2176
+
2177
+ }
2178
+
2179
+ return jsi::Value::undefined();
2180
+ }
2181
+ );
2182
+ } else if (methodName == "getActiveUniformBlockName") {
2183
+ return jsi::Function::createFromHostFunction(runtime,
2184
+ jsi::PropNameID::forAscii(runtime, methodName),
2185
+ 2,
2186
+ [this](jsi::Runtime &runtime,
2187
+ const jsi::Value &thisValue,
2188
+ const jsi::Value *arguments,
2189
+ size_t count) -> jsi::Value {
2190
+
2191
+
2192
+ if (count > 1) {
2193
+ auto program = getHostObject<WebGLProgram>(
2194
+ runtime, arguments[0]);
2195
+ if (program != nullptr) {
2196
+ auto uniformBlockIndex = (uint32_t) arguments[1].asNumber();
2197
+ auto name = canvas_native_webgl2_get_active_uniform_block_name(
2198
+ program->GetProgram(),
2199
+ uniformBlockIndex,
2200
+ this->GetState()
2201
+ );
2202
+ return jsi::String::createFromAscii(
2203
+ runtime, name.data(),
2204
+ name.size());
2205
+ }
2206
+
2207
+ }
2208
+
2209
+ return jsi::Value::undefined();
2210
+ }
2211
+ );
2212
+ } else if (methodName == "getActiveUniformBlockParameter") {
2213
+ return jsi::Function::createFromHostFunction(runtime,
2214
+ jsi::PropNameID::forAscii(runtime, methodName),
2215
+ 3,
2216
+ [this](jsi::Runtime &runtime,
2217
+ const jsi::Value &thisValue,
2218
+ const jsi::Value *arguments,
2219
+ size_t count) -> jsi::Value {
2220
+
2221
+
2222
+ if (count > 2) {
2223
+
2224
+ auto program = getHostObject<WebGLProgram>(
2225
+ runtime, arguments[0]);
2226
+
2227
+ if (program != nullptr) {
2228
+ auto uniformBlockIndex = (uint32_t) arguments[1].asNumber();
2229
+ auto pname = (uint32_t) arguments[2].asNumber();
2230
+ auto ret = canvas_native_webgl2_get_active_uniform_block_parameter(
2231
+ program->GetProgram(),
2232
+ uniformBlockIndex,
2233
+ pname,
2234
+ this->GetState()
2235
+ );
2236
+
2237
+ switch (pname) {
2238
+ case GL_UNIFORM_BLOCK_BINDING:
2239
+ case GL_UNIFORM_BLOCK_DATA_SIZE:
2240
+ case GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS:
2241
+ return {canvas_native_webgl_result_get_i32(
2242
+ *ret)};
2243
+ case GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: {
2244
+ auto value = canvas_native_webgl_result_get_u32_array(
2245
+ *ret);
2246
+ auto buffer = std::make_shared<VecMutableBuffer<uint32_t>>(
2247
+ std::move(value));
2248
+ auto array = jsi::ArrayBuffer(
2249
+ runtime, buffer);
2250
+
2251
+ auto Uint32Array = runtime.global()
2252
+ .getProperty(
2253
+ runtime,
2254
+ "Uint32Array")
2255
+ .asObject(runtime)
2256
+ .asFunction(
2257
+ runtime);
2258
+
2259
+
2260
+ return Uint32Array.callAsConstructor(
2261
+ runtime, array);
2262
+ }
2263
+ case GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:
2264
+ case GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:
2265
+ return {canvas_native_webgl_result_get_bool(
2266
+ *ret)};
2267
+ default:
2268
+ return jsi::Value::null();
2269
+ }
2270
+ }
2271
+ }
2272
+
2273
+ return jsi::Value::null();
2274
+ }
2275
+ );
2276
+ } else if (methodName == "getActiveUniforms") {
2277
+ return jsi::Function::createFromHostFunction(runtime,
2278
+ jsi::PropNameID::forAscii(runtime, methodName),
2279
+ 3,
2280
+ [this](jsi::Runtime &runtime,
2281
+ const jsi::Value &thisValue,
2282
+ const jsi::Value *arguments,
2283
+ size_t count) -> jsi::Value {
2284
+
2285
+
2286
+ if (count > 2 && arguments[1].isObject()) {
2287
+
2288
+ auto program = getHostObject<WebGLProgram>(
2289
+ runtime, arguments[0]);
2290
+ auto uniformIndicesObject = arguments[1].asObject(
2291
+ runtime);
2292
+ auto pname = (uint32_t) arguments[2].asNumber();
2293
+
2294
+ if (uniformIndicesObject.isArray(
2295
+ runtime)) {
2296
+ auto uniformIndices = uniformIndicesObject.asArray(
2297
+ runtime);
2298
+ auto size = uniformIndices.size(
2299
+ runtime);
2300
+ rust::Vec<uint32_t> buf;
2301
+ buf.reserve(size);
2302
+ for (int j = 0; j < size; j++) {
2303
+ auto item = (uint32_t) uniformIndices.getValueAtIndex(
2304
+ runtime, j).asNumber();
2305
+ buf.emplace_back(item);
2306
+ }
2307
+ rust::Slice<const uint32_t> slice(
2308
+ buf.data(), buf.size());
2309
+ auto ret = canvas_native_webgl2_get_active_uniforms(
2310
+ program->GetProgram(),
2311
+ slice,
2312
+ pname,
2313
+ this->GetState()
2314
+ );
2315
+
2316
+ switch (pname) {
2317
+ case GL_UNIFORM_TYPE:
2318
+ case GL_UNIFORM_SIZE: {
2319
+ auto value = canvas_native_webgl_result_get_u32_array(
2320
+ *ret);
2321
+ auto array = jsi::Array(
2322
+ runtime,
2323
+ value.size());
2324
+ auto len = value.size();
2325
+ for (int j = 0;
2326
+ j < len; ++j) {
2327
+ auto item = value[j];
2328
+ array.setValueAtIndex(
2329
+ runtime, j,
2330
+ jsi::Value(
2331
+ (int32_t) item));
2332
+ }
2333
+ return array;
2334
+ }
2335
+ break;
2336
+ case GL_UNIFORM_BLOCK_INDEX:
2337
+ case GL_UNIFORM_OFFSET:
2338
+ case GL_UNIFORM_ARRAY_STRIDE:
2339
+ case GL_UNIFORM_MATRIX_STRIDE: {
2340
+ auto value = canvas_native_webgl_result_get_i32_array(
2341
+ *ret);
2342
+ auto array = jsi::Array(
2343
+ runtime,
2344
+ value.size());
2345
+ auto len = value.size();
2346
+ for (int j = 0;
2347
+ j < len; ++j) {
2348
+ auto item = value[j];
2349
+ array.setValueAtIndex(
2350
+ runtime, j,
2351
+ jsi::Value(
2352
+ item));
2353
+ }
2354
+ return array;
2355
+ }
2356
+ case GL_UNIFORM_IS_ROW_MAJOR: {
2357
+ auto value = canvas_native_webgl_result_get_bool_array(
2358
+ *ret);
2359
+ auto len = value.size();
2360
+ auto array = jsi::Array(
2361
+ runtime,
2362
+ len);
2363
+ for (int j = 0;
2364
+ j < len; ++j) {
2365
+ bool item =
2366
+ value[j] == 1;
2367
+ array.setValueAtIndex(
2368
+ runtime, j,
2369
+ jsi::Value(
2370
+ item));
2371
+ }
2372
+ return array;
2373
+ }
2374
+ default:
2375
+ return jsi::Value::null();
2376
+ }
2377
+ }
2378
+
2379
+
2380
+ }
2381
+ return jsi::Value::null();
2382
+ }
2383
+ );
2384
+ } else if (methodName == "getBufferSubData") {
2385
+ return jsi::Function::createFromHostFunction(runtime,
2386
+ jsi::PropNameID::forAscii(runtime, methodName),
2387
+ 5,
2388
+ [this](jsi::Runtime &runtime,
2389
+ const jsi::Value &thisValue,
2390
+ const jsi::Value *arguments,
2391
+ size_t count) -> jsi::Value {
2392
+
2393
+
2394
+ if (count >= 3 &&
2395
+ arguments[2].isObject()) {
2396
+ auto target = (uint32_t) arguments[0].asNumber();
2397
+ auto srcByteOffset = arguments[1].asNumber();
2398
+ auto dstDataObject = arguments[2].asObject(
2399
+ runtime);
2400
+
2401
+ if (dstDataObject.isTypedArray(
2402
+ runtime)) {
2403
+
2404
+
2405
+ auto array = dstDataObject.getTypedArray(
2406
+ runtime);
2407
+
2408
+ auto size = array.size(runtime) / array.length(runtime);
2409
+
2410
+ ssize_t dstOffsetValue = 0;
2411
+ if (arguments[3].isNumber()) {
2412
+ dstOffsetValue = static_cast<ssize_t>(arguments[3].asNumber()) * size;
2413
+ }
2414
+
2415
+ ssize_t lengthValue = 0;
2416
+ if (arguments[4].isNumber()) {
2417
+ lengthValue = static_cast<ssize_t>(arguments[4].asNumber()) * size;
2418
+ }
2419
+
2420
+
2421
+ auto slice = GetTypedArrayData<uint8_t>(
2422
+ runtime, array);
2423
+
2424
+ canvas_native_webgl2_get_buffer_sub_data(
2425
+ target,
2426
+ static_cast<ssize_t>(srcByteOffset),
2427
+ slice,
2428
+ dstOffsetValue,
2429
+ lengthValue,
2430
+ this->GetState()
2431
+ );
2432
+ }
2433
+ }
2434
+
2435
+ return jsi::Value::undefined();
2436
+ }
2437
+ );
2438
+ } else if (methodName == "getFragDataLocation") {
2439
+ return jsi::Function::createFromHostFunction(runtime,
2440
+ jsi::PropNameID::forAscii(runtime, methodName),
2441
+ 2,
2442
+ [this](jsi::Runtime &runtime,
2443
+ const jsi::Value &thisValue,
2444
+ const jsi::Value *arguments,
2445
+ size_t count) -> jsi::Value {
2446
+
2447
+
2448
+ if (count > 1 && arguments[1].isString()) {
2449
+ auto program = getHostObject<WebGLProgram>(
2450
+ runtime, arguments[0]);
2451
+
2452
+ if (program != nullptr) {
2453
+ auto name = arguments[1].asString(
2454
+ runtime).utf8(runtime);
2455
+
2456
+ auto ret = canvas_native_webgl2_get_frag_data_location(
2457
+ program->GetProgram(),
2458
+ rust::Str(name.c_str()),
2459
+ this->GetState()
2460
+ );
2461
+
2462
+ return {ret};
2463
+ }
2464
+ }
2465
+
2466
+ return jsi::Value::null();
2467
+ }
2468
+ );
2469
+ } else if (methodName == "getIndexedParameter") {
2470
+ return jsi::Function::createFromHostFunction(runtime,
2471
+ jsi::PropNameID::forAscii(runtime, methodName),
2472
+ 2,
2473
+ [this](jsi::Runtime &runtime,
2474
+ const jsi::Value &thisValue,
2475
+ const jsi::Value *arguments,
2476
+ size_t count) -> jsi::Value {
2477
+
2478
+ if (count > 1) {
2479
+ auto target = (uint32_t) arguments[0].asNumber();
2480
+ auto index = (uint32_t) arguments[1].asNumber();
2481
+ auto ret = canvas_native_webgl2_get_indexed_parameter(
2482
+ target,
2483
+ index,
2484
+ this->GetState()
2485
+ );
2486
+
2487
+ switch (target) {
2488
+ case GL_UNIFORM_BUFFER_BINDING:
2489
+ case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: {
2490
+ auto buffer = canvas_native_webgl2_indexed_parameter_get_buffer_value(
2491
+ *ret);
2492
+ return jsi::Object::createFromHostObject(
2493
+ runtime,
2494
+ std::make_shared<WebGLBuffer>(
2495
+ buffer));
2496
+ }
2497
+ break;
2498
+ case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
2499
+ case GL_TRANSFORM_FEEDBACK_BUFFER_START:
2500
+ case GL_UNIFORM_BUFFER_SIZE:
2501
+ case GL_UNIFORM_BUFFER_START: {
2502
+ auto value = canvas_native_webgl2_indexed_parameter_get_value(
2503
+ *ret);
2504
+ return {static_cast<double>(value)};
2505
+ }
2506
+ break;
2507
+ default:
2508
+ return jsi::Value::null();
2509
+ }
2510
+ }
2511
+
2512
+ return jsi::Value::null();
2513
+ }
2514
+ );
2515
+ } else if (methodName == "getInternalformatParameter") {
2516
+ return jsi::Function::createFromHostFunction(runtime,
2517
+ jsi::PropNameID::forAscii(runtime, methodName),
2518
+ 3,
2519
+ [this](jsi::Runtime &runtime,
2520
+ const jsi::Value &thisValue,
2521
+ const jsi::Value *arguments,
2522
+ size_t count) -> jsi::Value {
2523
+ if (count > 2) {
2524
+ auto target = (uint32_t) arguments[0].asNumber();
2525
+ auto internalformat = (uint32_t) arguments[1].asNumber();
2526
+ auto pname = (uint32_t) arguments[2].asNumber();
2527
+ switch (internalformat) {
2528
+ case GL_RGB:
2529
+ case GL_RGBA:
2530
+ case GL_R8UI:
2531
+ case GL_R8I:
2532
+ case GL_R16UI:
2533
+ case GL_R16I:
2534
+ case GL_R32UI:
2535
+ case GL_R32I:
2536
+ case GL_RG8UI:
2537
+ case GL_RG8I:
2538
+ case GL_RG16UI:
2539
+ case GL_RG16I:
2540
+ case GL_RG32UI:
2541
+ case GL_RG32I:
2542
+ case GL_RGBA8UI:
2543
+ case GL_RGBA8I:
2544
+ case GL_RGB10_A2UI:
2545
+ case GL_RGBA16UI:
2546
+ case GL_RGBA16I:
2547
+ case GL_RGBA32UI:
2548
+ case GL_RGBA32I: {
2549
+ // empty
2550
+
2551
+ auto value = rust::Vec<int32_t>();
2552
+ auto buffer = std::make_shared<VecMutableBuffer<int32_t>>(
2553
+ std::move(value));
2554
+ auto array = jsi::ArrayBuffer(
2555
+ runtime, buffer);
2556
+
2557
+ auto Int32Array = runtime.global()
2558
+ .getProperty(runtime,
2559
+ "Int32Array")
2560
+ .asObject(runtime)
2561
+ .asFunction(runtime);
2562
+
2563
+
2564
+ return Int32Array.callAsConstructor(
2565
+ runtime, array);
2566
+ }
2567
+ case GL_R8:
2568
+ case GL_RG8:
2569
+ case GL_RGB565:
2570
+ case GL_RGBA8:
2571
+ case GL_SRGB8_ALPHA8:
2572
+ case GL_RGB5_A1:
2573
+ case GL_RGBA4:
2574
+ case GL_RGB10_A2:
2575
+ case GL_DEPTH_COMPONENT16:
2576
+ case GL_DEPTH_COMPONENT24:
2577
+ case GL_DEPTH_COMPONENT32F:
2578
+ case GL_DEPTH24_STENCIL8:
2579
+ case GL_DEPTH32F_STENCIL8:
2580
+ case GL_STENCIL_INDEX8:
2581
+ // noop
2582
+ break;
2583
+ case GL_R16F:
2584
+ case GL_RG16F:
2585
+ case GL_R32F:
2586
+ case GL_RG32F:
2587
+ case GL_RGBA32F:
2588
+ case GL_R11F_G11F_B10F:
2589
+ // noop
2590
+ break;
2591
+ default:
2592
+ return jsi::Value::null();
2593
+ }
2594
+
2595
+
2596
+ auto ret = canvas_native_webgl2_get_internalformat_parameter(
2597
+ target,
2598
+ internalformat,
2599
+ pname,
2600
+ this->GetState()
2601
+ );
2602
+
2603
+ if (pname == GL_SAMPLES) {
2604
+ auto value = canvas_native_webgl_result_get_i32_array(
2605
+ *ret);
2606
+
2607
+ auto buffer = std::make_shared<VecMutableBuffer<int32_t>>(
2608
+ std::move(value));
2609
+ auto array = jsi::ArrayBuffer(
2610
+ runtime,
2611
+ buffer);
2612
+
2613
+ auto Int32Array = runtime.global()
2614
+ .getProperty(runtime,
2615
+ "Int32Array")
2616
+ .asObject(runtime)
2617
+ .asFunction(runtime);
2618
+
2619
+
2620
+ return Int32Array.callAsConstructor(
2621
+ runtime, array);
2622
+ } else {
2623
+ return jsi::Value::null();
2624
+ }
2625
+ }
2626
+
2627
+ return jsi::Value::null();
2628
+ }
2629
+ );
2630
+ } else if (methodName == "getParameter") {
2631
+ return jsi::Function::createFromHostFunction(runtime,
2632
+ jsi::PropNameID::forAscii(runtime, methodName),
2633
+ 1,
2634
+ [this](jsi::Runtime &runtime,
2635
+ const jsi::Value &thisValue,
2636
+ const jsi::Value *arguments,
2637
+ size_t count) -> jsi::Value {
2638
+
2639
+ if (count > 0) {
2640
+ auto pname = (uint32_t) arguments[0].asNumber();
2641
+ auto result = canvas_native_webgl2_get_parameter(
2642
+ pname,
2643
+ this->GetState());
2644
+ switch (pname) {
2645
+ case GL_COPY_READ_BUFFER_BINDING:
2646
+ case GL_COPY_WRITE_BUFFER_BINDING:
2647
+ case GL_DRAW_FRAMEBUFFER_BINDING:
2648
+ return {canvas_native_webgl_result_get_i32(
2649
+ *result)};
2650
+ default:
2651
+ return this->GetParameterInternal(
2652
+ runtime, pname,
2653
+ std::move(result));
2654
+ }
2655
+ }
2656
+
2657
+ return jsi::Value::null();
2658
+ }
2659
+ );
2660
+ } else if (methodName == "getQueryParameter") {
2661
+ return jsi::Function::createFromHostFunction(runtime,
2662
+ jsi::PropNameID::forAscii(runtime, methodName),
2663
+ 2,
2664
+ [this](jsi::Runtime &runtime,
2665
+ const jsi::Value &thisValue,
2666
+ const jsi::Value *arguments,
2667
+ size_t count) -> jsi::Value {
2668
+
2669
+
2670
+ if (count > 1) {
2671
+ auto query = getHostObject<WebGLQuery>(
2672
+ runtime, arguments[0]);
2673
+ if (query != nullptr) {
2674
+ auto pname = (uint32_t) arguments[1].asNumber();
2675
+
2676
+
2677
+ auto ret = canvas_native_webgl2_get_query_parameter(
2678
+ query->GetQuery(),
2679
+ pname,
2680
+ this->GetState());
2681
+ if (pname == GL_QUERY_RESULT) {
2682
+ return {canvas_native_webgl_result_get_bool(
2683
+ *ret)};
2684
+ } else if (pname ==
2685
+ GL_QUERY_RESULT_AVAILABLE) {
2686
+ return {(int32_t) canvas_native_webgl_result_get_u32(
2687
+ *ret)};
2688
+ }
2689
+ }
2690
+ }
2691
+
2692
+ return jsi::Value::null();
2693
+ }
2694
+ );
2695
+ } else if (methodName == "getQuery") {
2696
+ return jsi::Function::createFromHostFunction(runtime,
2697
+ jsi::PropNameID::forAscii(runtime, methodName),
2698
+ 2,
2699
+ [this](jsi::Runtime &runtime,
2700
+ const jsi::Value &thisValue,
2701
+ const jsi::Value *arguments,
2702
+ size_t count) -> jsi::Value {
2703
+
2704
+ if (count > 1) {
2705
+ auto target = (uint32_t) arguments[0].asNumber();
2706
+ auto pname = (uint32_t) arguments[1].asNumber();
2707
+ auto ret = canvas_native_webgl2_get_query(
2708
+ target,
2709
+ pname,
2710
+ this->GetState());
2711
+ if (pname == GL_CURRENT_QUERY) {
2712
+ return {canvas_native_webgl_result_get_i32(
2713
+ *ret)};
2714
+ }
2715
+ }
2716
+
2717
+ return jsi::Value::null();
2718
+ }
2719
+ );
2720
+ } else if (methodName == "getSamplerParameter") {
2721
+ return jsi::Function::createFromHostFunction(runtime,
2722
+ jsi::PropNameID::forAscii(runtime, methodName),
2723
+ 2,
2724
+ [this](jsi::Runtime &runtime,
2725
+ const jsi::Value &thisValue,
2726
+ const jsi::Value *arguments,
2727
+ size_t count) -> jsi::Value {
2728
+
2729
+ if (count > 1) {
2730
+ auto sampler = getHostObject<WebGLSampler>(
2731
+ runtime, arguments[0]);
2732
+ if (sampler != nullptr) {
2733
+ auto pname = (uint32_t) arguments[1].asNumber();
2734
+ auto ret = canvas_native_webgl2_get_sampler_parameter(
2735
+ sampler->GetSampler(),
2736
+ pname,
2737
+ this->GetState());
2738
+
2739
+ switch (pname) {
2740
+ case GL_TEXTURE_MAX_LOD:
2741
+ case GL_TEXTURE_MIN_LOD:
2742
+ return {static_cast<double>(canvas_native_webgl_result_get_f32(
2743
+ *ret))};
2744
+ case GL_TEXTURE_COMPARE_FUNC:
2745
+ case GL_TEXTURE_COMPARE_MODE:
2746
+ case GL_TEXTURE_MAG_FILTER:
2747
+ case GL_TEXTURE_MIN_FILTER:
2748
+ case GL_TEXTURE_WRAP_R:
2749
+ case GL_TEXTURE_WRAP_S:
2750
+ case GL_TEXTURE_WRAP_T:
2751
+ return {canvas_native_webgl_result_get_i32(
2752
+ *ret)};
2753
+ default:
2754
+ return jsi::Value::null();
2755
+ }
2756
+ }
2757
+ }
2758
+
2759
+ return jsi::Value::null();
2760
+ }
2761
+ );
2762
+ } else if (methodName == "getSyncParameter") {
2763
+ return jsi::Function::createFromHostFunction(runtime,
2764
+ jsi::PropNameID::forAscii(runtime, methodName),
2765
+ 2,
2766
+ [this](jsi::Runtime &runtime,
2767
+ const jsi::Value &thisValue,
2768
+ const jsi::Value *arguments,
2769
+ size_t count) -> jsi::Value {
2770
+
2771
+ if (count > 1) {
2772
+ auto sync = getHostObject<WebGLSyncImpl>(
2773
+ runtime, arguments[0]);
2774
+ if (sync != nullptr) {
2775
+ auto pname = (uint32_t) arguments[1].asNumber();
2776
+ auto ret = canvas_native_webgl2_get_sync_parameter(
2777
+ sync->GetSync(),
2778
+ pname,
2779
+ this->GetState());
2780
+
2781
+ switch (pname) {
2782
+ case GL_OBJECT_TYPE:
2783
+ case GL_SYNC_STATUS:
2784
+ case GL_SYNC_CONDITION:
2785
+ case GL_SYNC_FLAGS:
2786
+ return {canvas_native_webgl_result_get_i32(
2787
+ *ret)};
2788
+ default:
2789
+ return jsi::Value::null();
2790
+ }
2791
+ }
2792
+ }
2793
+ return jsi::Value::null();
2794
+ }
2795
+ );
2796
+ } else if (methodName == "getTransformFeedbackVarying") {
2797
+ return jsi::Function::createFromHostFunction(runtime,
2798
+ jsi::PropNameID::forAscii(runtime, methodName),
2799
+ 2,
2800
+ [this](jsi::Runtime &runtime,
2801
+ const jsi::Value &thisValue,
2802
+ const jsi::Value *arguments,
2803
+ size_t count) -> jsi::Value {
2804
+ if (count > 1) {
2805
+ auto program = getHostObject<WebGLProgram>(
2806
+ runtime, arguments[0]);
2807
+ auto index = (uint32_t) arguments[1].asNumber();
2808
+ if (program != nullptr) {
2809
+ auto ret = canvas_native_webgl2_get_transform_feedback_varying(
2810
+ program->GetProgram(),
2811
+ index,
2812
+ this->GetState()
2813
+ );
2814
+
2815
+ if (canvas_native_webgl_active_info_get_is_empty(
2816
+ *ret)) {
2817
+ return jsi::Value::null();
2818
+ }
2819
+
2820
+ auto info = std::make_shared<WebGLActiveInfoImpl>(
2821
+ std::move(ret));
2822
+
2823
+ return jsi::Object::createFromHostObject(
2824
+ runtime, info);
2825
+ }
2826
+ }
2827
+
2828
+ return jsi::Value::null();
2829
+ }
2830
+ );
2831
+ } else if (methodName == "getUniformBlockIndex") {
2832
+ return jsi::Function::createFromHostFunction(runtime,
2833
+ jsi::PropNameID::forAscii(runtime, methodName),
2834
+ 2,
2835
+ [this](jsi::Runtime &runtime,
2836
+ const jsi::Value &thisValue,
2837
+ const jsi::Value *arguments,
2838
+ size_t count) -> jsi::Value {
2839
+ if (count > 1) {
2840
+ auto program = getHostObject<WebGLProgram>(
2841
+ runtime, arguments[0]);
2842
+ auto index = arguments[1].asString(runtime).utf8(runtime);
2843
+ if (program != nullptr) {
2844
+ auto ret = canvas_native_webgl2_get_uniform_block_index(program->GetProgram(), rust::Str(index.c_str()), this->GetState());
2845
+
2846
+ return jsi::Value((int)ret);
2847
+ }
2848
+ }
2849
+
2850
+ return jsi::Value::null();
2851
+ }
2852
+ );
2853
+ } else if (methodName == "getUniformIndices") {
2854
+ return jsi::Function::createFromHostFunction(runtime,
2855
+ jsi::PropNameID::forAscii(runtime, methodName),
2856
+ 2,
2857
+ [this](jsi::Runtime &runtime,
2858
+ const jsi::Value &thisValue,
2859
+ const jsi::Value *arguments,
2860
+ size_t count) -> jsi::Value {
2861
+
2862
+ if (count > 1 && arguments[1].isObject()) {
2863
+ auto program = getHostObject<WebGLProgram>(
2864
+ runtime, arguments[0]);
2865
+ auto uniformNamesObject = arguments[1].asObject(
2866
+ runtime);
2867
+ if (program != nullptr &&
2868
+ uniformNamesObject.isArray(
2869
+ runtime)) {
2870
+ auto uniformNames = uniformNamesObject.getArray(
2871
+ runtime);
2872
+ auto len = uniformNames.size(
2873
+ runtime);
2874
+ rust::Vec<rust::Str> store;
2875
+ store.reserve(len);
2876
+ for (int j = 0; j < len; ++j) {
2877
+ auto name = uniformNames.getValueAtIndex(
2878
+ runtime, j).asString(
2879
+ runtime).utf8(runtime);
2880
+ rust::Str val(name.data(),
2881
+ name.size());
2882
+ store.push_back(val);
2883
+ }
2884
+ rust::Slice<const rust::Str> slice(
2885
+ store.data(),
2886
+ store.size());
2887
+ auto ret = canvas_native_webgl2_get_uniform_indices(
2888
+ program->GetProgram(),
2889
+ slice,
2890
+ this->GetState());
2891
+
2892
+ auto retSize = ret.size();
2893
+ auto result = jsi::Array(runtime,
2894
+ retSize);
2895
+ for (int j = 0; j < retSize; ++j) {
2896
+ auto item = ret[j];
2897
+ result.setValueAtIndex(runtime,
2898
+ j,
2899
+ jsi::Value(
2900
+ (int32_t) item));
2901
+ }
2902
+
2903
+ return result;
2904
+ }
2905
+ }
2906
+
2907
+ return jsi::Value::null();
2908
+ }
2909
+ );
2910
+ } else if (methodName == "invalidateFramebuffer") {
2911
+ return jsi::Function::createFromHostFunction(runtime,
2912
+ jsi::PropNameID::forAscii(runtime, methodName),
2913
+ 2,
2914
+ [this](jsi::Runtime &runtime,
2915
+ const jsi::Value &thisValue,
2916
+ const jsi::Value *arguments,
2917
+ size_t count) -> jsi::Value {
2918
+
2919
+
2920
+ if (count > 1 && arguments[1].isObject()) {
2921
+ auto target = (uint32_t) arguments[0].asNumber();
2922
+ auto attachments = arguments[1].asObject(
2923
+ runtime);
2924
+
2925
+ if (attachments.isArray(runtime)) {
2926
+ auto array = attachments.getArray(
2927
+ runtime);
2928
+ auto len = array.size(runtime);
2929
+ rust::Vec<uint32_t> buf;
2930
+ buf.reserve(len);
2931
+ for (int j = 0; j < len; ++j) {
2932
+ auto item = (uint32_t) array.getValueAtIndex(
2933
+ runtime, j).asNumber();
2934
+ buf.push_back(item);
2935
+ }
2936
+
2937
+ rust::Slice<const uint32_t> slice(
2938
+ buf.data(), buf.size());
2939
+ canvas_native_webgl2_invalidate_framebuffer(
2940
+ target, slice,
2941
+ this->GetState());
2942
+ }
2943
+ }
2944
+
2945
+ return jsi::Value::undefined();
2946
+ }
2947
+ );
2948
+ } else if (methodName == "invalidateSubFramebuffer") {
2949
+ return jsi::Function::createFromHostFunction(runtime,
2950
+ jsi::PropNameID::forAscii(runtime, methodName),
2951
+ 6,
2952
+ [this](jsi::Runtime &runtime,
2953
+ const jsi::Value &thisValue,
2954
+ const jsi::Value *arguments,
2955
+ size_t count) -> jsi::Value {
2956
+
2957
+
2958
+ if (count > 5 && arguments[1].isObject()) {
2959
+ auto attachments = arguments[1].asObject(
2960
+ runtime);
2961
+ if (attachments.isArray(runtime)) {
2962
+ auto target = (uint32_t) arguments[0].asNumber();
2963
+ auto x = (int32_t) arguments[2].asNumber();
2964
+ auto y = (int32_t) arguments[3].asNumber();
2965
+ auto width = (int32_t) arguments[4].asNumber();
2966
+ auto height = (int32_t) arguments[5].asNumber();
2967
+
2968
+ auto array = attachments.getArray(
2969
+ runtime);
2970
+ auto len = array.size(runtime);
2971
+ rust::Vec<uint32_t> buf;
2972
+ buf.reserve(len);
2973
+ for (int j = 0; j < len; ++j) {
2974
+ auto item = (uint) array.getValueAtIndex(
2975
+ runtime, j).asNumber();
2976
+ buf.push_back(item);
2977
+ }
2978
+ rust::Slice<const uint32_t> slice(
2979
+ buf.data(), buf.size());
2980
+
2981
+ canvas_native_webgl2_invalidate_sub_framebuffer(
2982
+ target,
2983
+ slice,
2984
+ x,
2985
+ y,
2986
+ width,
2987
+ height,
2988
+ this->GetState());
2989
+ }
2990
+
2991
+
2992
+ }
2993
+
2994
+ return jsi::Value::undefined();
2995
+ }
2996
+ );
2997
+ } else if (methodName == "isQuery") {
2998
+ return jsi::Function::createFromHostFunction(runtime,
2999
+ jsi::PropNameID::forAscii(runtime, methodName),
3000
+ 1,
3001
+ [this](jsi::Runtime &runtime,
3002
+ const jsi::Value &thisValue,
3003
+ const jsi::Value *arguments,
3004
+ size_t count) -> jsi::Value {
3005
+ if (count > 0) {
3006
+ auto query = getHostObject<WebGLQuery>(
3007
+ runtime, arguments[0]);
3008
+ if (query != nullptr) {
3009
+ auto ret = canvas_native_webgl2_is_query(
3010
+ query->GetQuery(),
3011
+ this->GetState());
3012
+ return {ret};
3013
+ }
3014
+ }
3015
+ // todo check return
3016
+ return {false};
3017
+ }
3018
+ );
3019
+ } else if (methodName == "isSampler") {
3020
+ return jsi::Function::createFromHostFunction(runtime,
3021
+ jsi::PropNameID::forAscii(runtime, methodName),
3022
+ 1,
3023
+ [this](jsi::Runtime &runtime,
3024
+ const jsi::Value &thisValue,
3025
+ const jsi::Value *arguments,
3026
+ size_t count) -> jsi::Value {
3027
+ if (count > 0) {
3028
+ auto sampler = getHostObject<WebGLSampler>(
3029
+ runtime, arguments[0]);
3030
+ if (sampler != nullptr) {
3031
+ auto ret = canvas_native_webgl2_is_sampler(
3032
+ sampler->GetSampler(),
3033
+ this->GetState());
3034
+ return {ret};
3035
+ }
3036
+ }
3037
+ // todo check return
3038
+ return {false};
3039
+ }
3040
+ );
3041
+ } else if (methodName == "isSync") {
3042
+ return jsi::Function::createFromHostFunction(runtime,
3043
+ jsi::PropNameID::forAscii(runtime, methodName),
3044
+ 1,
3045
+ [this](jsi::Runtime &runtime,
3046
+ const jsi::Value &thisValue,
3047
+ const jsi::Value *arguments,
3048
+ size_t count) -> jsi::Value {
3049
+ if (count > 0) {
3050
+ auto sync = getHostObject<WebGLSyncImpl>(
3051
+ runtime, arguments[0]);
3052
+ if (sync != nullptr) {
3053
+ auto ret = canvas_native_webgl2_is_sync(
3054
+ sync->GetSync(),
3055
+ this->GetState());
3056
+ return {ret};
3057
+ }
3058
+ }
3059
+ // todo check return
3060
+ return {false};
3061
+ }
3062
+ );
3063
+ } else if (methodName == "isTransformFeedback") {
3064
+ return jsi::Function::createFromHostFunction(runtime,
3065
+ jsi::PropNameID::forAscii(runtime, methodName),
3066
+ 1,
3067
+ [this](jsi::Runtime &runtime,
3068
+ const jsi::Value &thisValue,
3069
+ const jsi::Value *arguments,
3070
+ size_t count) -> jsi::Value {
3071
+ if (count > 0) {
3072
+ auto transformFeedback = getHostObject<WebGLTransformFeedback>(
3073
+ runtime, arguments[0]);
3074
+ if (transformFeedback != nullptr) {
3075
+ auto ret = canvas_native_webgl2_is_transform_feedback(
3076
+ transformFeedback->GetFeedback(),
3077
+ this->GetState());
3078
+ return {ret};
3079
+ }
3080
+ }
3081
+ // todo check return
3082
+ return {false};
3083
+ }
3084
+ );
3085
+ } else if (methodName == "isVertexArray") {
3086
+ return jsi::Function::createFromHostFunction(runtime,
3087
+ jsi::PropNameID::forAscii(runtime, methodName),
3088
+ 3,
3089
+ [this](jsi::Runtime &runtime,
3090
+ const jsi::Value &thisValue,
3091
+ const jsi::Value *arguments,
3092
+ size_t count) -> jsi::Value {
3093
+ if (count > 0) {
3094
+ auto vertexArray = getHostObject<WebGLVertexArrayObject>(
3095
+ runtime, arguments[0]);
3096
+ if (vertexArray != nullptr) {
3097
+ auto ret = canvas_native_webgl2_is_vertex_array(
3098
+ vertexArray->GetVertexArrayObject(),
3099
+ this->GetState());
3100
+ return {ret};
3101
+ }
3102
+ }
3103
+ // todo check return
3104
+ return {false};
3105
+
3106
+
3107
+ }
3108
+ );
3109
+ } else if (methodName == "pauseTransformFeedback") {
3110
+ return jsi::Function::createFromHostFunction(runtime,
3111
+ jsi::PropNameID::forAscii(runtime, methodName),
3112
+ 0,
3113
+ [this](jsi::Runtime &runtime,
3114
+ const jsi::Value &thisValue,
3115
+ const jsi::Value *arguments,
3116
+ size_t count) -> jsi::Value {
3117
+
3118
+ canvas_native_webgl2_pause_transform_feedback(
3119
+ this->GetState());
3120
+
3121
+ return jsi::Value::undefined();
3122
+ }
3123
+ );
3124
+ } else if (methodName == "readBuffer") {
3125
+ return jsi::Function::createFromHostFunction(runtime,
3126
+ jsi::PropNameID::forAscii(runtime, methodName),
3127
+ 1,
3128
+ [this](jsi::Runtime &runtime,
3129
+ const jsi::Value &thisValue,
3130
+ const jsi::Value *arguments,
3131
+ size_t count) -> jsi::Value {
3132
+ if (count > 0) {
3133
+ auto src = (uint32_t) arguments[0].asNumber();
3134
+ canvas_native_webgl2_read_buffer(
3135
+ src,
3136
+ this->GetState()
3137
+ );
3138
+ }
3139
+
3140
+ return jsi::Value::undefined();
3141
+ }
3142
+ );
3143
+ } else if (methodName == "renderbufferStorageMultisample") {
3144
+ return jsi::Function::createFromHostFunction(runtime,
3145
+ jsi::PropNameID::forAscii(runtime, methodName),
3146
+ 5,
3147
+ [this](jsi::Runtime &runtime,
3148
+ const jsi::Value &thisValue,
3149
+ const jsi::Value *arguments,
3150
+ size_t count) -> jsi::Value {
3151
+
3152
+ if (count > 4) {
3153
+ auto target = (uint32_t) arguments[0].asNumber();
3154
+ auto samples = (int32_t) arguments[1].asNumber();
3155
+ auto internalFormat = (uint32_t) arguments[2].asNumber();
3156
+ auto width = (int32_t) arguments[3].asNumber();
3157
+ auto height = (int32_t) arguments[4].asNumber();
3158
+ canvas_native_webgl2_renderbuffer_storage_multisample(
3159
+ target,
3160
+ samples,
3161
+ internalFormat,
3162
+ width,
3163
+ height,
3164
+ this->GetState()
3165
+ );
3166
+ }
3167
+
3168
+ return jsi::Value::undefined();
3169
+ }
3170
+ );
3171
+ } else if (methodName == "resumeTransformFeedback") {
3172
+ return jsi::Function::createFromHostFunction(runtime,
3173
+ jsi::PropNameID::forAscii(runtime, methodName),
3174
+ 0,
3175
+ [this](jsi::Runtime &runtime,
3176
+ const jsi::Value &thisValue,
3177
+ const jsi::Value *arguments,
3178
+ size_t count) -> jsi::Value {
3179
+ canvas_native_webgl2_resume_transform_feedback(
3180
+ this->GetState());
3181
+ return jsi::Value::undefined();
3182
+ }
3183
+ );
3184
+ } else if (methodName == "samplerParameterf") {
3185
+ return jsi::Function::createFromHostFunction(runtime,
3186
+ jsi::PropNameID::forAscii(runtime, methodName),
3187
+ 3,
3188
+ [this](jsi::Runtime &runtime,
3189
+ const jsi::Value &thisValue,
3190
+ const jsi::Value *arguments,
3191
+ size_t count) -> jsi::Value {
3192
+
3193
+ if (count > 2) {
3194
+ auto sampler = getHostObject<WebGLSampler>(
3195
+ runtime, arguments[0]);
3196
+ auto pname = (uint32_t) arguments[1].asNumber();
3197
+ auto param = arguments[2].asNumber();
3198
+ if (sampler != nullptr) {
3199
+ canvas_native_webgl2_sampler_parameterf(
3200
+ sampler->GetSampler(),
3201
+ pname,
3202
+ static_cast<float>(param),
3203
+ this->GetState());
3204
+ }
3205
+ }
3206
+
3207
+ return jsi::Value::undefined();
3208
+ }
3209
+ );
3210
+ } else if (methodName == "samplerParameteri") {
3211
+ return jsi::Function::createFromHostFunction(runtime,
3212
+ jsi::PropNameID::forAscii(runtime, methodName),
3213
+ 3,
3214
+ [this](jsi::Runtime &runtime,
3215
+ const jsi::Value &thisValue,
3216
+ const jsi::Value *arguments,
3217
+ size_t count) -> jsi::Value {
3218
+
3219
+ if (count > 2) {
3220
+ auto sampler = getHostObject<WebGLSampler>(
3221
+ runtime, arguments[0]);
3222
+ auto pname = (uint32_t) arguments[1].asNumber();
3223
+ auto param = (int32_t) arguments[2].asNumber();
3224
+ if (sampler != nullptr) {
3225
+ canvas_native_webgl2_sampler_parameteri(
3226
+ sampler->GetSampler(),
3227
+ pname,
3228
+ param,
3229
+ this->GetState());
3230
+ }
3231
+ }
3232
+
3233
+ return jsi::Value::undefined();
3234
+ }
3235
+ );
3236
+ } else if (methodName == "texImage3D") {
3237
+ return jsi::Function::createFromHostFunction(runtime,
3238
+ jsi::PropNameID::forAscii(runtime, methodName),
3239
+ 3,
3240
+ [this](jsi::Runtime &runtime,
3241
+ const jsi::Value &thisValue,
3242
+ const jsi::Value *arguments,
3243
+ size_t count) -> jsi::Value {
3244
+
3245
+ if (count == 10) {
3246
+ auto target = (int32_t) arguments[0].asNumber();
3247
+ auto level = (int32_t) arguments[1].asNumber();
3248
+ auto internalformat = (int32_t) arguments[2].asNumber();
3249
+ auto width = (int32_t) arguments[3].asNumber();
3250
+ auto height = (int32_t) arguments[4].asNumber();
3251
+ auto depth = (int32_t) arguments[5].asNumber();
3252
+ auto border = (int32_t) arguments[6].asNumber();
3253
+ auto format = (int32_t) arguments[7].asNumber();
3254
+ auto type = (uint32_t) arguments[8].asNumber();
3255
+
3256
+
3257
+ if (arguments[9].isNumber()) {
3258
+ auto imageOrPixelsOrOffset = arguments[9].asNumber();
3259
+ canvas_native_webgl2_tex_image3d_none(
3260
+ target,
3261
+ level,
3262
+ internalformat,
3263
+ width,
3264
+ height,
3265
+ depth,
3266
+ border,
3267
+ format,
3268
+ type,
3269
+ static_cast<ssize_t>(imageOrPixelsOrOffset),
3270
+ this->GetState()
3271
+ );
3272
+ return jsi::Value::undefined();
3273
+ }
3274
+
3275
+ if (arguments[9].isObject()) {
3276
+ auto imageOrPixelsOrOffsetObject = arguments[9].asObject(
3277
+ runtime);
3278
+
3279
+ if (imageOrPixelsOrOffsetObject.isTypedArray(
3280
+ runtime)) {
3281
+ auto buf = imageOrPixelsOrOffsetObject.getTypedArray(
3282
+ runtime);
3283
+ auto slice = GetTypedArrayData<const uint8_t>(
3284
+ runtime, buf);
3285
+
3286
+
3287
+ canvas_native_webgl2_tex_image3d(
3288
+ target,
3289
+ level,
3290
+ internalformat,
3291
+ width,
3292
+ height,
3293
+ depth,
3294
+ border,
3295
+ format,
3296
+ type,
3297
+ slice,
3298
+ this->GetState()
3299
+ );
3300
+ return jsi::Value::undefined();
3301
+ }
3302
+
3303
+ try {
3304
+ auto image_asset = getHostObject<ImageAssetImpl>(
3305
+ runtime, arguments[9]);
3306
+ if (image_asset != nullptr) {
3307
+ canvas_native_webgl2_tex_image3d_asset(
3308
+ target,
3309
+ level,
3310
+ internalformat,
3311
+ width,
3312
+ height,
3313
+ depth,
3314
+ border,
3315
+ format,
3316
+ type,
3317
+ image_asset->GetImageAsset(),
3318
+ this->GetState()
3319
+ );
3320
+
3321
+ return jsi::Value::undefined();
3322
+ }
3323
+ } catch (...) {}
3324
+
3325
+ try {
3326
+ auto image_bitmap = getHostObject<ImageBitmapImpl>(
3327
+ runtime, arguments[9]);
3328
+ if (image_bitmap != nullptr) {
3329
+ canvas_native_webgl2_tex_image3d_asset(
3330
+ target,
3331
+ level,
3332
+ internalformat,
3333
+ width,
3334
+ height,
3335
+ depth,
3336
+ border,
3337
+ format,
3338
+ type,
3339
+ image_bitmap->GetImageAsset(),
3340
+ this->GetState()
3341
+ );
3342
+
3343
+ return jsi::Value::undefined();
3344
+ }
3345
+ } catch (...) {}
3346
+
3347
+
3348
+ }
3349
+ } else if (count > 10) {
3350
+
3351
+ auto target = (int32_t) arguments[0].asNumber();
3352
+ auto level = (int32_t) arguments[1].asNumber();
3353
+ auto internalformat = (int32_t) arguments[2].asNumber();
3354
+ auto width = (int32_t) arguments[3].asNumber();
3355
+ auto height = (int32_t) arguments[4].asNumber();
3356
+ auto depth = (int32_t) arguments[5].asNumber();
3357
+ auto border = (int32_t) arguments[6].asNumber();
3358
+ auto format = (int32_t) arguments[7].asNumber();
3359
+ auto type = (uint32_t) arguments[8].asNumber();
3360
+ if (arguments[9].isObject()) {
3361
+ auto imageOrPixelsOrOffset = arguments[9].asObject(
3362
+ runtime);
3363
+ size_t srcOffsetValue = 0;
3364
+ if (arguments[9].isNumber()) {
3365
+ srcOffsetValue = static_cast<size_t>(arguments[9].asNumber());
3366
+ }
3367
+
3368
+ if (imageOrPixelsOrOffset.isTypedArray(
3369
+ runtime)) {
3370
+ auto buf = imageOrPixelsOrOffset.getTypedArray(
3371
+ runtime);
3372
+ auto size = buf.size(runtime);
3373
+ auto array = GetTypedArrayData<const uint8_t>(
3374
+ runtime, buf);
3375
+
3376
+ srcOffsetValue =
3377
+ srcOffsetValue * size;
3378
+ if (srcOffsetValue >
3379
+ size) {
3380
+ return jsi::Value::undefined();
3381
+ }
3382
+
3383
+ canvas_native_webgl2_tex_image3d_offset(
3384
+ target,
3385
+ level,
3386
+ internalformat,
3387
+ width,
3388
+ height,
3389
+ depth,
3390
+ border,
3391
+ format,
3392
+ type,
3393
+ array,
3394
+ srcOffsetValue,
3395
+ this->GetState()
3396
+ );
3397
+ return jsi::Value::undefined();
3398
+ }
3399
+ }
3400
+
3401
+ }
3402
+
3403
+ return jsi::Value::undefined();
3404
+ }
3405
+ );
3406
+ } else if (methodName == "texStorage2D") {
3407
+ return jsi::Function::createFromHostFunction(runtime,
3408
+ jsi::PropNameID::forAscii(runtime, methodName),
3409
+ 5,
3410
+ [this](jsi::Runtime &runtime,
3411
+ const jsi::Value &thisValue,
3412
+ const jsi::Value *arguments,
3413
+ size_t count) -> jsi::Value {
3414
+ if (count > 4) {
3415
+ auto target = (uint32_t) arguments[0].asNumber();
3416
+ auto levels = (int32_t) arguments[1].asNumber();
3417
+ auto internalFormat = (uint32_t) arguments[2].asNumber();
3418
+ auto width = (int32_t) arguments[3].asNumber();
3419
+ auto height = (int32_t) arguments[4].asNumber();
3420
+ canvas_native_webgl2_tex_storage2d(
3421
+ target,
3422
+ levels,
3423
+ internalFormat,
3424
+ width,
3425
+ height,
3426
+ this->GetState()
3427
+ );
3428
+ }
3429
+
3430
+ return jsi::Value::undefined();
3431
+
3432
+ }
3433
+ );
3434
+ } else if (methodName == "texStorage3D") {
3435
+ return jsi::Function::createFromHostFunction(runtime,
3436
+ jsi::PropNameID::forAscii(runtime, methodName),
3437
+ 6,
3438
+ [this](jsi::Runtime &runtime,
3439
+ const jsi::Value &thisValue,
3440
+ const jsi::Value *arguments,
3441
+ size_t count) -> jsi::Value {
3442
+
3443
+ if (count > 5) {
3444
+ auto target = (uint32_t) arguments[0].asNumber();
3445
+ auto levels = (int32_t) arguments[1].asNumber();
3446
+ auto internalFormat = (uint32_t) arguments[2].asNumber();
3447
+ auto width = (int32_t) arguments[3].asNumber();
3448
+ auto height = (int32_t) arguments[4].asNumber();
3449
+ auto depth = (int32_t) arguments[5].asNumber();
3450
+ canvas_native_webgl2_tex_storage3d(
3451
+ target,
3452
+ levels,
3453
+ internalFormat,
3454
+ width,
3455
+ height,
3456
+ depth,
3457
+ this->GetState()
3458
+ );
3459
+ }
3460
+
3461
+ return jsi::Value::undefined();
3462
+
3463
+ }
3464
+ );
3465
+ } else if (methodName == "texSubImage3D") {
3466
+ return jsi::Function::createFromHostFunction(runtime,
3467
+ jsi::PropNameID::forAscii(runtime, methodName),
3468
+ 12,
3469
+ [this](jsi::Runtime &runtime,
3470
+ const jsi::Value &thisValue,
3471
+ const jsi::Value *arguments,
3472
+ size_t count) -> jsi::Value {
3473
+ if (count == 11) {
3474
+ auto target = (uint32_t) arguments[0].asNumber();
3475
+ auto level = (int32_t) arguments[1].asNumber();
3476
+ auto xoffset = (int32_t) arguments[2].asNumber();
3477
+ auto yoffset = (int32_t) arguments[3].asNumber();
3478
+ auto zoffset = (int32_t) arguments[4].asNumber();
3479
+ auto width = (int32_t) arguments[5].asNumber();
3480
+ auto height = (int32_t) arguments[6].asNumber();
3481
+ auto depth = (int32_t) arguments[7].asNumber();
3482
+ auto format = (uint32_t) arguments[8].asNumber();
3483
+ auto type = (int32_t) arguments[9].asNumber();
3484
+
3485
+ if (arguments[10].isNumber()) {
3486
+ auto imageOrPixelsOrOffset = arguments[10].asNumber();
3487
+ canvas_native_webgl2_tex_sub_image3d_none(
3488
+ target,
3489
+ level,
3490
+ xoffset,
3491
+ yoffset,
3492
+ zoffset,
3493
+ width,
3494
+ height,
3495
+ depth,
3496
+ format,
3497
+ type,
3498
+ static_cast<ssize_t>(imageOrPixelsOrOffset),
3499
+ this->GetState()
3500
+ );
3501
+ return jsi::Value::undefined();
3502
+ }
3503
+
3504
+ if (arguments[10].isObject()) {
3505
+ auto imageOrPixelsOrOffsetObject = arguments[10].asObject(
3506
+ runtime);
3507
+ if (imageOrPixelsOrOffsetObject.isTypedArray(
3508
+ runtime)) {
3509
+ auto array = imageOrPixelsOrOffsetObject.getTypedArray(
3510
+ runtime);
3511
+ auto slice = GetTypedArrayData<const uint8_t>(
3512
+ runtime, array);
3513
+
3514
+ canvas_native_webgl2_tex_sub_image3d(
3515
+ target,
3516
+ level,
3517
+ xoffset,
3518
+ yoffset,
3519
+ zoffset,
3520
+ width,
3521
+ height,
3522
+ depth,
3523
+ format,
3524
+ type,
3525
+ slice,
3526
+ this->GetState()
3527
+ );
3528
+
3529
+ return jsi::Value::undefined();
3530
+ }
3531
+
3532
+ auto asset = getHostObject<ImageAssetImpl>(
3533
+ runtime, arguments[10]);
3534
+ if (asset != nullptr) {
3535
+
3536
+ canvas_native_webgl2_tex_sub_image3d_asset(
3537
+ target,
3538
+ level,
3539
+ xoffset,
3540
+ yoffset,
3541
+ zoffset,
3542
+ width,
3543
+ height,
3544
+ depth,
3545
+ format,
3546
+ type,
3547
+ asset->GetImageAsset(),
3548
+ this->GetState()
3549
+ );
3550
+ }
3551
+
3552
+ }
3553
+
3554
+ } else if (count > 11) {
3555
+ auto target = (uint32_t) arguments[0].asNumber();
3556
+ auto level = (int32_t) arguments[1].asNumber();
3557
+ auto xoffset = (int32_t) arguments[2].asNumber();
3558
+ auto yoffset = (int32_t) arguments[3].asNumber();
3559
+ auto zoffset = (int32_t) arguments[4].asNumber();
3560
+ auto width = (int32_t) arguments[5].asNumber();
3561
+ auto height = (int32_t) arguments[6].asNumber();
3562
+ auto depth = (int32_t) arguments[7].asNumber();
3563
+ auto format = (uint32_t) arguments[8].asNumber();
3564
+ auto type = (uint32_t) arguments[9].asNumber();
3565
+
3566
+ size_t srcOffsetValue = 0;
3567
+ if (arguments[11].isNumber()) {
3568
+ srcOffsetValue = static_cast<size_t>(arguments[11].asNumber());
3569
+ }
3570
+
3571
+ if (arguments[10].isObject()) {
3572
+ auto imageOrPixelsOrOffsetObject = arguments[10].asObject(
3573
+ runtime);
3574
+
3575
+ if (imageOrPixelsOrOffsetObject.isTypedArray(
3576
+ runtime)) {
3577
+ auto array = imageOrPixelsOrOffsetObject.getTypedArray(
3578
+ runtime);
3579
+ auto buf = GetTypedArrayData<uint8_t>(
3580
+ runtime, array);
3581
+ auto size = array.size(
3582
+ runtime);
3583
+ srcOffsetValue =
3584
+ srcOffsetValue * size;
3585
+ if (srcOffsetValue > size) {
3586
+ return jsi::Value::undefined();
3587
+ }
3588
+
3589
+ rust::Slice<const uint8_t> slice(
3590
+ buf.data(),
3591
+ buf.size());
3592
+
3593
+ canvas_native_webgl2_tex_sub_image3d_offset(
3594
+ target,
3595
+ level,
3596
+ xoffset,
3597
+ yoffset,
3598
+ zoffset,
3599
+ width,
3600
+ height,
3601
+ depth,
3602
+ format,
3603
+ type,
3604
+ slice,
3605
+ srcOffsetValue,
3606
+ this->GetState()
3607
+ );
3608
+ }
3609
+
3610
+ }
3611
+ }
3612
+
3613
+ return jsi::Value::undefined();
3614
+
3615
+ }
3616
+ );
3617
+ } else if (methodName == "transformFeedbackVaryings") {
3618
+ return jsi::Function::createFromHostFunction(runtime,
3619
+ jsi::PropNameID::forAscii(runtime, methodName),
3620
+ 3,
3621
+ [this](jsi::Runtime &runtime,
3622
+ const jsi::Value &thisValue,
3623
+ const jsi::Value *arguments,
3624
+ size_t count) -> jsi::Value {
3625
+ if (count > 2 && arguments[1].isObject()) {
3626
+ auto program = getHostObject<WebGLProgram>(
3627
+ runtime, arguments[0]);
3628
+ auto varyingsObject = arguments[1].asObject(
3629
+ runtime);
3630
+ auto bufferMode = (uint32_t) arguments[2].asNumber();
3631
+
3632
+ if (program != nullptr &&
3633
+ varyingsObject.isArray(runtime)) {
3634
+ auto varyings = varyingsObject.getArray(
3635
+ runtime);
3636
+ auto len = varyings.size(runtime);
3637
+ rust::Vec<rust::Str> buf;
3638
+ buf.reserve(len);
3639
+ for (int j = 0; j < len; ++j) {
3640
+ auto name = varyings.getValueAtIndex(
3641
+ runtime, j).asString(
3642
+ runtime).utf8(runtime);
3643
+ rust::Str val(name.data(),
3644
+ name.size());
3645
+ buf.emplace_back(val);
3646
+ }
3647
+
3648
+ rust::Slice<const rust::Str> slice(
3649
+ buf.data(), buf.size());
3650
+
3651
+ canvas_native_webgl2_transform_feedback_varyings(
3652
+ program->GetProgram(),
3653
+ slice,
3654
+ bufferMode,
3655
+ this->GetState()
3656
+ );
3657
+ }
3658
+ }
3659
+ return jsi::Value::undefined();
3660
+ }
3661
+ );
3662
+ } else if (methodName == "uniform1ui") {
3663
+ return jsi::Function::createFromHostFunction(runtime,
3664
+ jsi::PropNameID::forAscii(runtime, methodName),
3665
+ 2,
3666
+ [this](jsi::Runtime &runtime,
3667
+ const jsi::Value &thisValue,
3668
+ const jsi::Value *arguments,
3669
+ size_t count) -> jsi::Value {
3670
+
3671
+ if (count > 1 && arguments[1].isNumber()) {
3672
+
3673
+ auto location = getHostObject<WebGLUniformLocation>(
3674
+ runtime, arguments[0]);
3675
+ auto v0 = (uint32_t) arguments[1].asNumber();
3676
+
3677
+ if (location != nullptr) {
3678
+ canvas_native_webgl2_uniform1ui(
3679
+ location->GetUniformLocation(),
3680
+ v0,
3681
+ this->GetState()
3682
+ );
3683
+ }
3684
+ }
3685
+ return jsi::Value::undefined();
3686
+ }
3687
+ );
3688
+ } else if (methodName == "uniform1uiv") {
3689
+ return jsi::Function::createFromHostFunction(runtime,
3690
+ jsi::PropNameID::forAscii(runtime, methodName),
3691
+ 2,
3692
+ [this](jsi::Runtime &runtime,
3693
+ const jsi::Value &thisValue,
3694
+ const jsi::Value *arguments,
3695
+ size_t count) -> jsi::Value {
3696
+
3697
+ if (count > 1 && arguments[1].isObject()) {
3698
+ auto location = getHostObject<WebGLUniformLocation>(
3699
+ runtime, arguments[0]);
3700
+ auto data = arguments[1].asObject(
3701
+ runtime);
3702
+ if (location != nullptr &&
3703
+ data.isUint32Array(runtime)) {
3704
+ auto array = data.getTypedArray(
3705
+ runtime);
3706
+ auto slice = GetTypedArrayData<const uint32_t>(
3707
+ runtime, array);
3708
+ canvas_native_webgl2_uniform1uiv(
3709
+ location->GetUniformLocation(),
3710
+ slice,
3711
+ this->GetState()
3712
+ );
3713
+ } else {
3714
+ rust::Vec<uint32_t> buf;
3715
+ auto array = data.getArray(
3716
+ runtime);
3717
+ auto len = array.size(runtime);
3718
+ buf.reserve(len);
3719
+ for (int i = 0; i < len; i++) {
3720
+ auto item = (uint32_t) array.getValueAtIndex(
3721
+ runtime, i).asNumber();
3722
+ buf.push_back(item);
3723
+ }
3724
+ rust::Slice<const uint32_t> slice(
3725
+ buf.data(), buf.size());
3726
+ canvas_native_webgl2_uniform1uiv(
3727
+ location->GetUniformLocation(),
3728
+ slice,
3729
+ this->GetState()
3730
+ );
3731
+ }
3732
+
3733
+
3734
+ }
3735
+ return jsi::Value::undefined();
3736
+
3737
+ }
3738
+ );
3739
+ } else if (methodName == "uniform2ui") {
3740
+ return jsi::Function::createFromHostFunction(runtime,
3741
+ jsi::PropNameID::forAscii(runtime, methodName),
3742
+ 3,
3743
+ [this](jsi::Runtime &runtime,
3744
+ const jsi::Value &thisValue,
3745
+ const jsi::Value *arguments,
3746
+ size_t count) -> jsi::Value {
3747
+
3748
+ if (count > 2) {
3749
+ auto location = getHostObject<WebGLUniformLocation>(
3750
+ runtime, arguments[0]);
3751
+ auto v0 = (uint32_t) arguments[1].asNumber();
3752
+ auto v1 = (uint32_t) arguments[2].asNumber();
3753
+
3754
+ if (location != nullptr) {
3755
+ canvas_native_webgl2_uniform2ui(
3756
+ location->GetUniformLocation(),
3757
+ v0,
3758
+ v1,
3759
+ this->GetState()
3760
+ );
3761
+ }
3762
+
3763
+
3764
+ }
3765
+ return jsi::Value::undefined();
3766
+ }
3767
+ );
3768
+ } else if (methodName == "uniform2uiv") {
3769
+ return jsi::Function::createFromHostFunction(runtime,
3770
+ jsi::PropNameID::forAscii(runtime, methodName),
3771
+ 1,
3772
+ [this](jsi::Runtime &runtime,
3773
+ const jsi::Value &thisValue,
3774
+ const jsi::Value *arguments,
3775
+ size_t count) -> jsi::Value {
3776
+
3777
+ if (count > 1 && arguments[1].isObject()) {
3778
+
3779
+ auto location = getHostObject<WebGLUniformLocation>(
3780
+ runtime, arguments[0]);
3781
+ auto data = arguments[1].asObject(
3782
+ runtime);
3783
+
3784
+ if (data.isUint32Array(runtime)) {
3785
+ auto array = data.getTypedArray(
3786
+ runtime);
3787
+ auto slice = GetTypedArrayData<const uint32_t>(
3788
+ runtime, array);
3789
+ canvas_native_webgl2_uniform2uiv(
3790
+ location->GetUniformLocation(),
3791
+ slice,
3792
+ this->GetState()
3793
+ );
3794
+ } else {
3795
+ rust::Vec<uint32_t> buf;
3796
+ auto array = data.getArray(
3797
+ runtime);
3798
+ auto len = array.size(runtime);
3799
+ buf.reserve(len);
3800
+ for (int i = 0; i < len; i++) {
3801
+ auto item = (uint32_t) array.getValueAtIndex(
3802
+ runtime, i).asNumber();
3803
+ buf.push_back(item);
3804
+ }
3805
+
3806
+ rust::Slice<const uint32_t> slice(
3807
+ buf.data(), buf.size());
3808
+ canvas_native_webgl2_uniform2uiv(
3809
+ location->GetUniformLocation(),
3810
+ slice,
3811
+ this->GetState()
3812
+ );
3813
+ }
3814
+ }
3815
+ return jsi::Value::undefined();
3816
+
3817
+ }
3818
+ );
3819
+ } else if (methodName == "uniform3ui") {
3820
+ return jsi::Function::createFromHostFunction(runtime,
3821
+ jsi::PropNameID::forAscii(runtime, methodName),
3822
+ 4,
3823
+ [this](jsi::Runtime &runtime,
3824
+ const jsi::Value &thisValue,
3825
+ const jsi::Value *arguments,
3826
+ size_t count) -> jsi::Value {
3827
+ if (count > 3) {
3828
+ auto location = getHostObject<WebGLUniformLocation>(
3829
+ runtime, arguments[0]);
3830
+ auto v0 = (uint32_t) arguments[1].asNumber();
3831
+ auto v1 = (uint32_t) arguments[2].asNumber();
3832
+ auto v2 = (uint32_t) arguments[3].asNumber();
3833
+ if (location != nullptr) {
3834
+ canvas_native_webgl2_uniform3ui(
3835
+ location->GetUniformLocation(),
3836
+ v0,
3837
+ v1,
3838
+ v2,
3839
+ this->GetState()
3840
+ );
3841
+ }
3842
+ }
3843
+
3844
+ return jsi::Value::undefined();
3845
+ }
3846
+ );
3847
+ } else if (methodName == "uniform3uiv") {
3848
+ return jsi::Function::createFromHostFunction(runtime,
3849
+ jsi::PropNameID::forAscii(runtime, methodName),
3850
+ 2,
3851
+ [this](jsi::Runtime &runtime,
3852
+ const jsi::Value &thisValue,
3853
+ const jsi::Value *arguments,
3854
+ size_t count) -> jsi::Value {
3855
+
3856
+ if (count > 1 && arguments[1].isObject()) {
3857
+ auto location = getHostObject<WebGLUniformLocation>(
3858
+ runtime, arguments[0]);
3859
+ auto data = arguments[1].asObject(
3860
+ runtime);
3861
+
3862
+ if (data.isUint32Array(runtime)) {
3863
+ auto array = data.getTypedArray(
3864
+ runtime);
3865
+ auto slice = GetTypedArrayData<const uint32_t>(
3866
+ runtime, array);
3867
+ canvas_native_webgl2_uniform3uiv(
3868
+ location->GetUniformLocation(),
3869
+ slice,
3870
+ this->GetState()
3871
+ );
3872
+ } else {
3873
+ rust::Vec<uint32_t> buf;
3874
+ auto array = data.getArray(
3875
+ runtime);
3876
+ auto len = array.size(runtime);
3877
+ buf.reserve(len);
3878
+ for (int i = 0; i < len; i++) {
3879
+ auto item = array.getValueAtIndex(
3880
+ runtime, i).asNumber();
3881
+ buf.push_back((uint32_t) item);
3882
+ }
3883
+
3884
+ rust::Slice<const uint32_t> slice(
3885
+ buf.data(), buf.size());
3886
+
3887
+ canvas_native_webgl2_uniform3uiv(
3888
+ location->GetUniformLocation(),
3889
+ slice,
3890
+ this->GetState()
3891
+ );
3892
+ }
3893
+ }
3894
+ return jsi::Value::undefined();
3895
+
3896
+ }
3897
+ );
3898
+ } else if (methodName == "uniform4ui") {
3899
+ return jsi::Function::createFromHostFunction(runtime,
3900
+ jsi::PropNameID::forAscii(runtime, methodName),
3901
+ 5,
3902
+ [this](jsi::Runtime &runtime,
3903
+ const jsi::Value &thisValue,
3904
+ const jsi::Value *arguments,
3905
+ size_t count) -> jsi::Value {
3906
+
3907
+ if (count > 4) {
3908
+
3909
+ auto location = getHostObject<WebGLUniformLocation>(
3910
+ runtime, arguments[0]);
3911
+ auto v0 = (uint32_t) arguments[1].asNumber();
3912
+ auto v1 = (uint32_t) arguments[2].asNumber();
3913
+ auto v2 = (uint32_t) arguments[3].asNumber();
3914
+ auto v3 = (uint32_t) arguments[4].asNumber();
3915
+ if (location != nullptr) {
3916
+ canvas_native_webgl2_uniform4ui(
3917
+ location->GetUniformLocation(),
3918
+ v0,
3919
+ v1,
3920
+ v2,
3921
+ v3,
3922
+ this->GetState()
3923
+ );
3924
+ }
3925
+ }
3926
+
3927
+ return jsi::Value::undefined();
3928
+ }
3929
+ );
3930
+ } else if (methodName == "uniform4uiv") {
3931
+ return jsi::Function::createFromHostFunction(runtime,
3932
+ jsi::PropNameID::forAscii(runtime, methodName),
3933
+ 2,
3934
+ [this](jsi::Runtime &runtime,
3935
+ const jsi::Value &thisValue,
3936
+ const jsi::Value *arguments,
3937
+ size_t count) -> jsi::Value {
3938
+
3939
+
3940
+ if (count > 1 && arguments[1].isObject()) {
3941
+
3942
+ auto location = getHostObject<WebGLUniformLocation>(
3943
+ runtime, arguments[0]);
3944
+ auto data = arguments[1].asObject(
3945
+ runtime);
3946
+
3947
+ if (data.isUint32Array(runtime)) {
3948
+ auto array = data.getTypedArray(
3949
+ runtime);
3950
+ auto slice = GetTypedArrayData<const uint32_t>(
3951
+ runtime, array);
3952
+ canvas_native_webgl2_uniform4uiv(
3953
+ location->GetUniformLocation(),
3954
+ slice,
3955
+ this->GetState()
3956
+ );
3957
+ } else {
3958
+ rust::Vec<uint32_t> buf;
3959
+ auto array = data.getArray(
3960
+ runtime);
3961
+ auto len = array.size(runtime);
3962
+ buf.reserve(len);
3963
+ for (int i = 0; i < len; i++) {
3964
+ auto item = array.getValueAtIndex(
3965
+ runtime, i).asNumber();
3966
+ buf.push_back((uint32_t) item);
3967
+ }
3968
+
3969
+ rust::Slice<const uint32_t> slice(
3970
+ buf.data(), buf.size());
3971
+
3972
+ canvas_native_webgl2_uniform4uiv(
3973
+ location->GetUniformLocation(),
3974
+ slice,
3975
+ this->GetState()
3976
+ );
3977
+ }
3978
+ }
3979
+
3980
+ return jsi::Value::undefined();
3981
+
3982
+ }
3983
+ );
3984
+ } else if (methodName == "uniformBlockBinding") {
3985
+ return jsi::Function::createFromHostFunction(runtime,
3986
+ jsi::PropNameID::forAscii(runtime, methodName),
3987
+ 3,
3988
+ [this](jsi::Runtime &runtime,
3989
+ const jsi::Value &thisValue,
3990
+ const jsi::Value *arguments,
3991
+ size_t count) -> jsi::Value {
3992
+ if (count > 2) {
3993
+
3994
+ auto program = getHostObject<WebGLProgram>(
3995
+ runtime, arguments[0]);
3996
+ auto uniformBlockIndex = arguments[1].asNumber();
3997
+ auto uniformBlockBinding = arguments[2].asNumber();
3998
+
3999
+ if (program != nullptr) {
4000
+ canvas_native_webgl2_uniform_block_binding(
4001
+ program->GetProgram(),
4002
+ (uint32_t) uniformBlockIndex,
4003
+ (uint32_t) uniformBlockBinding,
4004
+ this->GetState()
4005
+ );
4006
+ }
4007
+
4008
+ }
4009
+ return jsi::Value::undefined();
4010
+ }
4011
+ );
4012
+ } else if (methodName == "uniformMatrix2x3fv") {
4013
+ return jsi::Function::createFromHostFunction(runtime,
4014
+ jsi::PropNameID::forAscii(runtime, methodName),
4015
+ 3,
4016
+ [this](jsi::Runtime &runtime,
4017
+ const jsi::Value &thisValue,
4018
+ const jsi::Value *arguments,
4019
+ size_t count) -> jsi::Value {
4020
+
4021
+ if (count > 2 && arguments[2].isObject()) {
4022
+
4023
+ auto location = getHostObject<WebGLUniformLocation>(
4024
+ runtime, arguments[0]);
4025
+ auto transpose = arguments[1].asBool();
4026
+ auto data = arguments[2].asObject(
4027
+ runtime);
4028
+
4029
+ if (data.isFloat32Array(runtime)) {
4030
+ auto array = data.getTypedArray(
4031
+ runtime);
4032
+ auto slice = GetTypedArrayData<const float>(
4033
+ runtime, array);
4034
+ canvas_native_webgl2_uniform_matrix2x3fv(
4035
+ location->GetUniformLocation(),
4036
+ transpose,
4037
+ slice,
4038
+ this->GetState()
4039
+ );
4040
+ } else if (data.isArray(runtime)) {
4041
+ rust::Vec<float> buf;
4042
+ auto array = data.getArray(
4043
+ runtime);
4044
+ auto len = array.size(runtime);
4045
+ for (int i = 0; i < len; i++) {
4046
+ auto item = array.getValueAtIndex(
4047
+ runtime, i);
4048
+ if (item.isNumber()) {
4049
+ buf.push_back(
4050
+ static_cast<float>(item.asNumber()));
4051
+ } else {
4052
+ buf.push_back(
4053
+ std::nanf(""));
4054
+ }
4055
+ }
4056
+
4057
+ rust::Slice<const float> slice(
4058
+ buf.data(), buf.size());
4059
+
4060
+ canvas_native_webgl2_uniform_matrix2x3fv(
4061
+ location->GetUniformLocation(),
4062
+ transpose,
4063
+ slice,
4064
+ this->GetState()
4065
+ );
4066
+ }
4067
+ }
4068
+ return jsi::Value::undefined();
4069
+
4070
+ }
4071
+ );
4072
+ } else if (methodName == "uniformMatrix2x4fv") {
4073
+ return jsi::Function::createFromHostFunction(runtime,
4074
+ jsi::PropNameID::forAscii(runtime, methodName),
4075
+ 3,
4076
+ [this](jsi::Runtime &runtime,
4077
+ const jsi::Value &thisValue,
4078
+ const jsi::Value *arguments,
4079
+ size_t count) -> jsi::Value {
4080
+
4081
+ if (count > 2 && arguments[2].isObject()) {
4082
+
4083
+ auto location = getHostObject<WebGLUniformLocation>(
4084
+ runtime, arguments[0]);
4085
+ auto transpose = arguments[1].asBool();
4086
+ auto data = arguments[2].asObject(
4087
+ runtime);
4088
+
4089
+ if (data.isFloat32Array(runtime)) {
4090
+ auto array = data.getTypedArray(
4091
+ runtime);
4092
+ auto slice = GetTypedArrayData<const float>(
4093
+ runtime, array);
4094
+ canvas_native_webgl2_uniform_matrix2x4fv(
4095
+ location->GetUniformLocation(),
4096
+ transpose,
4097
+ slice,
4098
+ this->GetState()
4099
+ );
4100
+ } else if (data.isArray(runtime)) {
4101
+ rust::Vec<float> buf;
4102
+ auto array = data.getArray(
4103
+ runtime);
4104
+ auto len = array.size(runtime);
4105
+ for (int i = 0; i < len; i++) {
4106
+ auto item = array.getValueAtIndex(
4107
+ runtime, i);
4108
+ if (item.isNumber()) {
4109
+ buf.push_back(
4110
+ static_cast<float>(item.asNumber()));
4111
+ } else {
4112
+ buf.push_back(
4113
+ std::nanf(""));
4114
+ }
4115
+ }
4116
+ rust::Slice<const float> slice(
4117
+ buf.data(), buf.size());
4118
+
4119
+ canvas_native_webgl2_uniform_matrix2x4fv(
4120
+ location->GetUniformLocation(),
4121
+ transpose,
4122
+ slice,
4123
+ this->GetState()
4124
+ );
4125
+ }
4126
+ }
4127
+
4128
+ return jsi::Value::undefined();
4129
+ }
4130
+ );
4131
+ } else if (methodName == "uniformMatrix3x2fv") {
4132
+ return jsi::Function::createFromHostFunction(runtime,
4133
+ jsi::PropNameID::forAscii(runtime, methodName),
4134
+ 3,
4135
+ [this](jsi::Runtime &runtime,
4136
+ const jsi::Value &thisValue,
4137
+ const jsi::Value *arguments,
4138
+ size_t count) -> jsi::Value {
4139
+
4140
+ if (count > 2 && arguments[2].isObject()) {
4141
+
4142
+ auto location = getHostObject<WebGLUniformLocation>(
4143
+ runtime, arguments[0]);
4144
+ auto transpose = arguments[1].asBool();
4145
+ auto data = arguments[2].asObject(
4146
+ runtime);
4147
+
4148
+ if (data.isFloat32Array(runtime)) {
4149
+ auto array = data.getTypedArray(
4150
+ runtime);
4151
+ auto slice = GetTypedArrayData<const float>(
4152
+ runtime, array);
4153
+ canvas_native_webgl2_uniform_matrix3x2fv(
4154
+ location->GetUniformLocation(),
4155
+ transpose,
4156
+ slice,
4157
+ this->GetState()
4158
+ );
4159
+ } else if (data.isArray(runtime)) {
4160
+ rust::Vec<float> buf;
4161
+ auto array = data.getArray(
4162
+ runtime);
4163
+ auto len = array.size(runtime);
4164
+ for (int i = 0; i < len; i++) {
4165
+ auto item = array.getValueAtIndex(
4166
+ runtime, i);
4167
+ if (item.isNumber()) {
4168
+ buf.push_back(
4169
+ static_cast<float>(item.asNumber()));
4170
+ } else {
4171
+ buf.push_back(
4172
+ std::nanf(""));
4173
+ }
4174
+ }
4175
+
4176
+ rust::Slice<const float> slice(
4177
+ buf.data(), buf.size());
4178
+
4179
+ canvas_native_webgl2_uniform_matrix3x2fv(
4180
+ location->GetUniformLocation(),
4181
+ transpose,
4182
+ slice,
4183
+ this->GetState()
4184
+ );
4185
+ }
4186
+ }
4187
+
4188
+ return jsi::Value::undefined();
4189
+ }
4190
+ );
4191
+ } else if (methodName == "uniformMatrix3x4fv") {
4192
+ return jsi::Function::createFromHostFunction(runtime,
4193
+ jsi::PropNameID::forAscii(runtime, methodName),
4194
+ 3,
4195
+ [this](jsi::Runtime &runtime,
4196
+ const jsi::Value &thisValue,
4197
+ const jsi::Value *arguments,
4198
+ size_t count) -> jsi::Value {
4199
+ if (count > 2 && arguments[2].isObject()) {
4200
+
4201
+ auto location = getHostObject<WebGLUniformLocation>(
4202
+ runtime, arguments[0]);
4203
+ auto transpose = arguments[1].asBool();
4204
+ auto data = arguments[2].asObject(
4205
+ runtime);
4206
+
4207
+ if (data.isFloat32Array(runtime)) {
4208
+ auto array = data.getTypedArray(
4209
+ runtime);
4210
+ auto slice = GetTypedArrayData<const float>(
4211
+ runtime, array);
4212
+ canvas_native_webgl2_uniform_matrix3x4fv(
4213
+ location->GetUniformLocation(),
4214
+ transpose,
4215
+ slice,
4216
+ this->GetState()
4217
+ );
4218
+ } else if (data.isArray(runtime)) {
4219
+ rust::Vec<float> buf;
4220
+ auto array = data.getArray(
4221
+ runtime);
4222
+ auto len = array.size(runtime);
4223
+ for (int i = 0; i < len; i++) {
4224
+ auto item = array.getValueAtIndex(
4225
+ runtime, i);
4226
+ if (item.isNumber()) {
4227
+ buf.push_back(
4228
+ static_cast<float>(item.asNumber()));
4229
+ } else {
4230
+ buf.push_back(
4231
+ std::nanf(""));
4232
+ }
4233
+ }
4234
+
4235
+ rust::Slice<const float> slice(
4236
+ buf.data(), buf.size());
4237
+
4238
+ canvas_native_webgl2_uniform_matrix3x4fv(
4239
+ location->GetUniformLocation(),
4240
+ transpose,
4241
+ slice,
4242
+ this->GetState()
4243
+ );
4244
+ }
4245
+ }
4246
+
4247
+ return jsi::Value::undefined();
4248
+ }
4249
+ );
4250
+ } else if (methodName == "uniformMatrix4x2fv") {
4251
+ return jsi::Function::createFromHostFunction(runtime,
4252
+ jsi::PropNameID::forAscii(runtime, methodName),
4253
+ 3,
4254
+ [this](jsi::Runtime &runtime,
4255
+ const jsi::Value &thisValue,
4256
+ const jsi::Value *arguments,
4257
+ size_t count) -> jsi::Value {
4258
+ if (count > 2 && arguments[2].isObject()) {
4259
+
4260
+ auto location = getHostObject<WebGLUniformLocation>(
4261
+ runtime, arguments[0]);
4262
+ auto transpose = arguments[1].asBool();
4263
+ auto data = arguments[2].asObject(
4264
+ runtime);
4265
+
4266
+ if (data.isFloat32Array(runtime)) {
4267
+ auto array = data.getTypedArray(
4268
+ runtime);
4269
+ auto slice = GetTypedArrayData<const float>(
4270
+ runtime, array);
4271
+ canvas_native_webgl2_uniform_matrix4x2fv(
4272
+ location->GetUniformLocation(),
4273
+ transpose,
4274
+ slice,
4275
+ this->GetState()
4276
+ );
4277
+ } else if (data.isArray(runtime)) {
4278
+ rust::Vec<float> buf;
4279
+ auto array = data.getArray(
4280
+ runtime);
4281
+ auto len = array.size(runtime);
4282
+ for (int i = 0; i < len; i++) {
4283
+ auto item = array.getValueAtIndex(
4284
+ runtime, i);
4285
+ if (item.isNumber()) {
4286
+ buf.push_back(
4287
+ static_cast<float>(item.asNumber()));
4288
+ } else {
4289
+ buf.push_back(
4290
+ std::nanf(""));
4291
+ }
4292
+ }
4293
+
4294
+ rust::Slice<const float> slice(
4295
+ buf.data(), buf.size());
4296
+
4297
+ canvas_native_webgl2_uniform_matrix4x2fv(
4298
+ location->GetUniformLocation(),
4299
+ transpose,
4300
+ slice,
4301
+ this->GetState()
4302
+ );
4303
+ }
4304
+ }
4305
+ return jsi::Value::undefined();
4306
+
4307
+ }
4308
+ );
4309
+ } else if (methodName == "uniformMatrix4x3fv") {
4310
+ return jsi::Function::createFromHostFunction(runtime,
4311
+ jsi::PropNameID::forAscii(runtime, methodName),
4312
+ 3,
4313
+ [this](jsi::Runtime &runtime,
4314
+ const jsi::Value &thisValue,
4315
+ const jsi::Value *arguments,
4316
+ size_t count) -> jsi::Value {
4317
+ if (count > 2 && arguments[2].isObject()) {
4318
+
4319
+ auto location = getHostObject<WebGLUniformLocation>(
4320
+ runtime, arguments[0]);
4321
+ auto transpose = arguments[1].asBool();
4322
+ auto data = arguments[2].asObject(
4323
+ runtime);
4324
+
4325
+ if (data.isFloat32Array(runtime)) {
4326
+ auto array = data.getTypedArray(
4327
+ runtime);
4328
+ auto slice = GetTypedArrayData<const float>(
4329
+ runtime, array);
4330
+ canvas_native_webgl2_uniform_matrix4x3fv(
4331
+ location->GetUniformLocation(),
4332
+ transpose,
4333
+ slice,
4334
+ this->GetState()
4335
+ );
4336
+ } else if (data.isArray(runtime)) {
4337
+ rust::Vec<float> buf;
4338
+ auto array = data.getArray(
4339
+ runtime);
4340
+ auto len = array.size(runtime);
4341
+ for (int i = 0; i < len; i++) {
4342
+ auto item = array.getValueAtIndex(
4343
+ runtime, i);
4344
+ if (item.isNumber()) {
4345
+ buf.push_back(
4346
+ static_cast<float>(item.asNumber()));
4347
+ } else {
4348
+ buf.push_back(
4349
+ std::nanf(""));
4350
+ }
4351
+ }
4352
+
4353
+ rust::Slice<const float> slice(
4354
+ buf.data(), buf.size());
4355
+
4356
+ canvas_native_webgl2_uniform_matrix4x3fv(
4357
+ location->GetUniformLocation(),
4358
+ transpose,
4359
+ slice,
4360
+ this->GetState()
4361
+ );
4362
+ }
4363
+ }
4364
+
4365
+ return jsi::Value::undefined();
4366
+ }
4367
+ );
4368
+ } else if (methodName == "vertexAttribDivisor") {
4369
+ return jsi::Function::createFromHostFunction(runtime,
4370
+ jsi::PropNameID::forAscii(runtime, methodName),
4371
+ 2,
4372
+ [this](jsi::Runtime &runtime,
4373
+ const jsi::Value &thisValue,
4374
+ const jsi::Value *arguments,
4375
+ size_t count) -> jsi::Value {
4376
+ if (count > 1) {
4377
+ auto index = arguments[0].asNumber();
4378
+ auto divisor = arguments[1].asNumber();
4379
+ canvas_native_webgl2_vertex_attrib_divisor(
4380
+ (uint32_t) index,
4381
+ (uint32_t) divisor,
4382
+ this->GetState()
4383
+ );
4384
+ }
4385
+ return jsi::Value::undefined();
4386
+ }
4387
+ );
4388
+ } else if (methodName == "vertexAttribI4i") {
4389
+ return jsi::Function::createFromHostFunction(runtime,
4390
+ jsi::PropNameID::forAscii(runtime, methodName),
4391
+ 5,
4392
+ [this](jsi::Runtime &runtime,
4393
+ const jsi::Value &thisValue,
4394
+ const jsi::Value *arguments,
4395
+ size_t count) -> jsi::Value {
4396
+
4397
+ if (count > 4) {
4398
+ auto index = arguments[0].asNumber();
4399
+ auto v0 = arguments[1].asNumber();
4400
+ auto v1 = arguments[2].asNumber();
4401
+ auto v2 = arguments[3].asNumber();
4402
+ auto v3 = arguments[4].asNumber();
4403
+ canvas_native_webgl2_vertex_attrib_i4i(
4404
+ (uint32_t) index,
4405
+ (int32_t) v0,
4406
+ (int32_t) v1,
4407
+ (int32_t) v2,
4408
+ (int32_t) v3,
4409
+ this->GetState()
4410
+ );
4411
+ }
4412
+ return jsi::Value::undefined();
4413
+ }
4414
+ );
4415
+ } else if (methodName == "vertexAttribI4iv") {
4416
+ return jsi::Function::createFromHostFunction(runtime,
4417
+ jsi::PropNameID::forAscii(runtime, methodName),
4418
+ 2,
4419
+ [this](jsi::Runtime &runtime,
4420
+ const jsi::Value &thisValue,
4421
+ const jsi::Value *arguments,
4422
+ size_t count) -> jsi::Value {
4423
+
4424
+ if (count > 1 && arguments[1].isObject()) {
4425
+ auto index = (uint32_t) arguments[0].asNumber();
4426
+ auto value = arguments[1].asObject(
4427
+ runtime);
4428
+ if (value.isInt32Array(runtime)) {
4429
+ auto array = value.getTypedArray(
4430
+ runtime);
4431
+ auto slice = GetTypedArrayData<const int32_t>(
4432
+ runtime, array);
4433
+ canvas_native_webgl2_vertex_attrib_i4iv(
4434
+ index,
4435
+ slice,
4436
+ this->GetState()
4437
+ );
4438
+ } else if (value.isArray(runtime)) {
4439
+ auto array = value.getArray(
4440
+ runtime);
4441
+ auto len = array.size(runtime);
4442
+ rust::Vec<int32_t> buf;
4443
+ buf.reserve(len);
4444
+ for (int i = 0; i < len; i++) {
4445
+ auto item = (int32_t) array.getValueAtIndex(
4446
+ runtime, i).asNumber();
4447
+ buf.push_back(item);
4448
+ }
4449
+
4450
+ rust::Slice<const int32_t> slice(
4451
+ buf.data(), buf.size());
4452
+
4453
+ canvas_native_webgl2_vertex_attrib_i4iv(
4454
+ index,
4455
+ slice,
4456
+ this->GetState()
4457
+ );
4458
+ }
4459
+ }
4460
+
4461
+ return jsi::Value::undefined();
4462
+ }
4463
+ );
4464
+ } else if (methodName == "vertexAttribI4ui") {
4465
+ return jsi::Function::createFromHostFunction(runtime,
4466
+ jsi::PropNameID::forAscii(runtime, methodName),
4467
+ 5,
4468
+ [this](jsi::Runtime &runtime,
4469
+ const jsi::Value &thisValue,
4470
+ const jsi::Value *arguments,
4471
+ size_t count) -> jsi::Value {
4472
+
4473
+ if (count > 4) {
4474
+ auto index = (uint32_t) arguments[0].asNumber();
4475
+ auto v0 = (uint32_t) arguments[1].asNumber();
4476
+ auto v1 = (uint32_t) arguments[2].asNumber();
4477
+ auto v2 = (uint32_t) arguments[3].asNumber();
4478
+ auto v3 = (uint32_t) arguments[4].asNumber();
4479
+
4480
+ canvas_native_webgl2_vertex_attrib_i4ui(
4481
+ index,
4482
+ v0,
4483
+ v1,
4484
+ v2,
4485
+ v3,
4486
+ this->GetState()
4487
+ );
4488
+ }
4489
+ return jsi::Value::undefined();
4490
+ }
4491
+ );
4492
+ } else if (methodName == "vertexAttribI4uiv") {
4493
+ return jsi::Function::createFromHostFunction(runtime,
4494
+ jsi::PropNameID::forAscii(runtime, methodName),
4495
+ 2,
4496
+ [this](jsi::Runtime &runtime,
4497
+ const jsi::Value &thisValue,
4498
+ const jsi::Value *arguments,
4499
+ size_t count) -> jsi::Value {
4500
+
4501
+
4502
+ if (count > 1 && arguments[1].isObject()) {
4503
+ auto index = (uint32_t) arguments[0].asNumber();
4504
+ auto value = arguments[1].asObject(
4505
+ runtime);
4506
+ if (value.isUint32Array(runtime)) {
4507
+ auto array = value.getTypedArray(
4508
+ runtime);
4509
+ auto slice = GetTypedArrayData<const uint32_t>(
4510
+ runtime, array);
4511
+ canvas_native_webgl2_vertex_attrib_i4uiv(
4512
+ index,
4513
+ slice,
4514
+ this->GetState()
4515
+ );
4516
+ } else if (value.isArray(runtime)) {
4517
+ auto array = value.getArray(
4518
+ runtime);
4519
+ auto len = array.size(runtime);
4520
+ rust::Vec<uint32_t> buf;
4521
+ buf.reserve(len);
4522
+ for (int i = 0; i < len; i++) {
4523
+ auto item = (uint32_t) array.getValueAtIndex(
4524
+ runtime, i).asNumber();
4525
+ buf.push_back(item);
4526
+ }
4527
+
4528
+ rust::Slice<const uint32_t> slice(
4529
+ buf.data(), buf.size());
4530
+
4531
+ canvas_native_webgl2_vertex_attrib_i4uiv(
4532
+ index,
4533
+ slice,
4534
+ this->GetState()
4535
+ );
4536
+ }
4537
+ }
4538
+ return jsi::Value::undefined();
4539
+ }
4540
+ );
4541
+ }
4542
+
4543
+ if (!prop.isUndefined()) {
4544
+ return prop;
4545
+ }
4546
+ auto gl_return = WebGLRenderingContext::get(runtime, name);
4547
+ if (!gl_return.isUndefined()) {
4548
+ return gl_return;
4549
+ }
4550
+ return jsi::Value::undefined();
4551
+ }