@nativescript/canvas 2.0.0-alpha.1 → 2.0.0-alpha.11

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 (375) hide show
  1. package/Canvas/common.js +8 -15
  2. package/Canvas/common.js.map +1 -1
  3. package/Canvas/index.android.d.ts +2 -0
  4. package/Canvas/index.android.js +21 -13
  5. package/Canvas/index.android.js.map +1 -1
  6. package/Canvas/index.d.ts +5 -0
  7. package/Canvas/index.ios.d.ts +8 -2
  8. package/Canvas/index.ios.js +129 -75
  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} +134 -123
  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 +58 -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 +99 -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 +21 -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} +6 -4
  81. package/ImageBitmap/index.js.map +1 -0
  82. package/TextDecoder/index.d.ts +9 -2
  83. package/TextDecoder/index.js +53 -2
  84. package/TextDecoder/index.js.map +1 -1
  85. package/TextEncoder/index.d.ts +9 -2
  86. package/TextEncoder/index.js +51 -2
  87. package/TextEncoder/index.js.map +1 -1
  88. package/WebGL/WebGLExtensions/index.d.ts +159 -242
  89. package/WebGL/WebGLExtensions/{index.android.js → index.js} +1 -1
  90. package/WebGL/WebGLExtensions/index.js.map +1 -0
  91. package/WebGL/WebGLRenderingContext/index.d.ts +153 -293
  92. package/WebGL/WebGLRenderingContext/{index.android.js → index.js} +30 -13
  93. package/WebGL/WebGLRenderingContext/index.js.map +1 -0
  94. package/WebGL2/WebGL2RenderingContext/common.d.ts +1 -0
  95. package/WebGL2/WebGL2RenderingContext/common.js +3 -0
  96. package/WebGL2/WebGL2RenderingContext/common.js.map +1 -1
  97. package/WebGL2/WebGL2RenderingContext/index.d.ts +101 -455
  98. package/WebGL2/WebGL2RenderingContext/{index.android.js → index.js} +17 -6
  99. package/WebGL2/WebGL2RenderingContext/index.js.map +1 -0
  100. package/helpers.js +3 -0
  101. package/helpers.js.map +1 -1
  102. package/package.json +1 -1
  103. package/platforms/android/canvas-release.aar +0 -0
  104. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
  105. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +135 -1722
  106. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative.h +1 -3
  107. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +142 -0
  108. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
  109. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  110. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +5486 -0
  111. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +153 -0
  112. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  113. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +91 -3202
  114. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/module.modulemap +2 -2
  115. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/{TNSCanvas.nib → NSCCanvas.nib} +0 -0
  116. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  117. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
  118. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +260 -3444
  119. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative.h +1 -3
  120. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +142 -0
  121. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
  122. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  123. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  124. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +5486 -0
  125. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +153 -0
  126. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  127. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +91 -3202
  128. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +5486 -0
  129. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +153 -0
  130. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  131. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +91 -3202
  132. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/module.modulemap +2 -2
  133. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/{TNSCanvas.nib → NSCCanvas.nib} +0 -0
  134. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +49 -93
  135. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  136. package/platforms/ios/Podfile +2 -1
  137. package/platforms/ios/build.xcconfig +5 -0
  138. package/platforms/ios/src/CanvasModule.h +10 -0
  139. package/platforms/ios/src/CanvasModule.mm +14 -0
  140. package/platforms/ios/src/cpp/CanvasJSIModule.h +60 -0
  141. package/platforms/ios/src/cpp/CanvasJSIModule.mm +1105 -0
  142. package/platforms/ios/src/cpp/Helpers.h +63 -0
  143. package/platforms/ios/src/cpp/ImageAssetImpl.h +30 -0
  144. package/platforms/ios/src/cpp/ImageAssetImpl.mm +417 -0
  145. package/platforms/ios/src/cpp/ImageBitmapImpl.h +41 -0
  146. package/platforms/ios/src/cpp/ImageBitmapImpl.mm +126 -0
  147. package/platforms/ios/src/cpp/JSICallback.h +15 -0
  148. package/platforms/ios/src/cpp/JSIReadFileCallback.h +16 -0
  149. package/platforms/ios/src/cpp/OnRafCallback.h +24 -0
  150. package/platforms/ios/src/cpp/OnRafCallback.mm +25 -0
  151. package/platforms/ios/src/cpp/RafImpl.h +27 -0
  152. package/platforms/ios/src/cpp/RafImpl.mm +10 -0
  153. package/platforms/ios/src/cpp/TextDecoderImpl.h +28 -0
  154. package/platforms/ios/src/cpp/TextDecoderImpl.mm +97 -0
  155. package/platforms/ios/src/cpp/TextEncoderImpl.h +28 -0
  156. package/platforms/ios/src/cpp/TextEncoderImpl.mm +60 -0
  157. package/platforms/ios/src/cpp/VecMutableBuffer.h +46 -0
  158. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.cc +6156 -0
  159. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.h +2867 -0
  160. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.h +28 -0
  161. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.mm +42 -0
  162. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.h +29 -0
  163. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.mm +49 -0
  164. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +75 -0
  165. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.mm +1972 -0
  166. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.h +29 -0
  167. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.mm +68 -0
  168. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.h +29 -0
  169. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.mm +149 -0
  170. package/platforms/ios/src/cpp/canvas2d/Path2D.h +27 -0
  171. package/platforms/ios/src/cpp/canvas2d/Path2D.mm +335 -0
  172. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.h +29 -0
  173. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.mm +68 -0
  174. package/platforms/ios/src/cpp/gl.h +29 -0
  175. package/platforms/ios/src/cpp/rust/cxx.cc +793 -0
  176. package/platforms/ios/src/cpp/rust/cxx.h +1111 -0
  177. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.h +28 -0
  178. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.mm +39 -0
  179. package/platforms/ios/src/cpp/webgl/WebGLBuffer.h +24 -0
  180. package/platforms/ios/src/cpp/webgl/WebGLFramebuffer.h +24 -0
  181. package/platforms/ios/src/cpp/webgl/WebGLProgram.h +24 -0
  182. package/platforms/ios/src/cpp/webgl/WebGLRenderbuffer.h +24 -0
  183. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.h +517 -0
  184. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.mm +5958 -0
  185. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.h +90 -0
  186. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.mm +118 -0
  187. package/platforms/ios/src/cpp/webgl/WebGLShader.h +24 -0
  188. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.h +28 -0
  189. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.mm +40 -0
  190. package/platforms/ios/src/cpp/webgl/WebGLTexture.h +23 -0
  191. package/platforms/ios/src/cpp/webgl/WebGLUniformLocation.h +28 -0
  192. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.h +28 -0
  193. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.mm +108 -0
  194. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.h +16 -0
  195. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.mm +28 -0
  196. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.h +17 -0
  197. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.mm +42 -0
  198. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.h +28 -0
  199. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.mm +295 -0
  200. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.h +18 -0
  201. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.mm +40 -0
  202. package/platforms/ios/src/cpp/webgl/extensions/EXT_shader_texture_lodImpl.h +29 -0
  203. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.h +18 -0
  204. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.mm +37 -0
  205. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.h +18 -0
  206. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.mm +28 -0
  207. package/platforms/ios/src/cpp/webgl/extensions/OES_fbo_render_mipmap.h +30 -0
  208. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.h +18 -0
  209. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.mm +31 -0
  210. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_floatImpl.h +30 -0
  211. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_float_linearImpl.h +31 -0
  212. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.h +18 -0
  213. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.mm +28 -0
  214. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_float_linearImpl.h +30 -0
  215. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.h +32 -0
  216. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.mm +127 -0
  217. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.h +20 -0
  218. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.mm +45 -0
  219. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.h +18 -0
  220. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.mm +45 -0
  221. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.h +18 -0
  222. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.mm +31 -0
  223. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.h +18 -0
  224. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.mm +70 -0
  225. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.h +18 -0
  226. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.mm +47 -0
  227. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.h +18 -0
  228. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.mm +46 -0
  229. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.h +19 -0
  230. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.mm +49 -0
  231. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.h +19 -0
  232. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.mm +30 -0
  233. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.h +31 -0
  234. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.mm +177 -0
  235. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.h +31 -0
  236. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.mm +64 -0
  237. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.h +431 -0
  238. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.mm +4543 -0
  239. package/platforms/ios/src/cpp/webgl2/WebGLQuery.h +21 -0
  240. package/platforms/ios/src/cpp/webgl2/WebGLSampler.h +21 -0
  241. package/platforms/ios/src/cpp/webgl2/WebGLSyncImpl.h +24 -0
  242. package/platforms/ios/src/cpp/webgl2/WebGLTransformFeedback.h +21 -0
  243. package/platforms/ios/src/cpp/webgl2/WebGLVertexArrayObject.h +21 -0
  244. package/platforms/ios/src/module.modulemap +4 -0
  245. package/Canvas2D/CanvasGradient/CanvasGradient.android.d.ts +0 -10
  246. package/Canvas2D/CanvasGradient/CanvasGradient.android.js +0 -26
  247. package/Canvas2D/CanvasGradient/CanvasGradient.android.js.map +0 -1
  248. package/Canvas2D/CanvasGradient/CanvasGradient.d.ts +0 -12
  249. package/Canvas2D/CanvasGradient/CanvasGradient.ios.d.ts +0 -8
  250. package/Canvas2D/CanvasGradient/CanvasGradient.ios.js +0 -19
  251. package/Canvas2D/CanvasGradient/CanvasGradient.ios.js.map +0 -1
  252. package/Canvas2D/CanvasGradient/common.d.ts +0 -3
  253. package/Canvas2D/CanvasGradient/common.js +0 -3
  254. package/Canvas2D/CanvasGradient/common.js.map +0 -1
  255. package/Canvas2D/CanvasPattern/CanvasPattern.android.d.ts +0 -8
  256. package/Canvas2D/CanvasPattern/CanvasPattern.android.js +0 -20
  257. package/Canvas2D/CanvasPattern/CanvasPattern.android.js.map +0 -1
  258. package/Canvas2D/CanvasPattern/CanvasPattern.d.ts +0 -8
  259. package/Canvas2D/CanvasPattern/CanvasPattern.ios.d.ts +0 -6
  260. package/Canvas2D/CanvasPattern/CanvasPattern.ios.js +0 -10
  261. package/Canvas2D/CanvasPattern/CanvasPattern.ios.js.map +0 -1
  262. package/Canvas2D/CanvasPattern/common.d.ts +0 -7
  263. package/Canvas2D/CanvasPattern/common.js +0 -9
  264. package/Canvas2D/CanvasPattern/common.js.map +0 -1
  265. package/Canvas2D/CanvasRenderingContext2D/common.d.ts +0 -87
  266. package/Canvas2D/CanvasRenderingContext2D/common.js +0 -12
  267. package/Canvas2D/CanvasRenderingContext2D/common.js.map +0 -1
  268. package/Canvas2D/CanvasRenderingContext2D/index.android.d.ts +0 -112
  269. package/Canvas2D/CanvasRenderingContext2D/index.android.js.map +0 -1
  270. package/Canvas2D/CanvasRenderingContext2D/index.ios.d.ts +0 -110
  271. package/Canvas2D/CanvasRenderingContext2D/index.ios.js +0 -897
  272. package/Canvas2D/CanvasRenderingContext2D/index.ios.js.map +0 -1
  273. package/Canvas2D/DOMMatrix/DOMMatrix.android.d.ts +0 -72
  274. package/Canvas2D/DOMMatrix/DOMMatrix.android.js +0 -177
  275. package/Canvas2D/DOMMatrix/DOMMatrix.android.js.map +0 -1
  276. package/Canvas2D/DOMMatrix/DOMMatrix.d.ts +0 -30
  277. package/Canvas2D/DOMMatrix/DOMMatrix.ios.d.ts +0 -48
  278. package/Canvas2D/DOMMatrix/DOMMatrix.ios.js +0 -142
  279. package/Canvas2D/DOMMatrix/DOMMatrix.ios.js.map +0 -1
  280. package/Canvas2D/DOMMatrix/common.d.ts +0 -27
  281. package/Canvas2D/DOMMatrix/common.js +0 -9
  282. package/Canvas2D/DOMMatrix/common.js.map +0 -1
  283. package/Canvas2D/ImageData/ImageData.android.d.ts +0 -9
  284. package/Canvas2D/ImageData/ImageData.android.js +0 -65
  285. package/Canvas2D/ImageData/ImageData.android.js.map +0 -1
  286. package/Canvas2D/ImageData/ImageData.d.ts +0 -11
  287. package/Canvas2D/ImageData/ImageData.ios.d.ts +0 -10
  288. package/Canvas2D/ImageData/ImageData.ios.js +0 -45
  289. package/Canvas2D/ImageData/ImageData.ios.js.map +0 -1
  290. package/Canvas2D/ImageData/common.d.ts +0 -9
  291. package/Canvas2D/ImageData/common.js +0 -13
  292. package/Canvas2D/ImageData/common.js.map +0 -1
  293. package/Canvas2D/Path2D/Path2D.android.d.ts +0 -18
  294. package/Canvas2D/Path2D/Path2D.android.js +0 -83
  295. package/Canvas2D/Path2D/Path2D.android.js.map +0 -1
  296. package/Canvas2D/Path2D/Path2D.d.ts +0 -26
  297. package/Canvas2D/Path2D/Path2D.ios.d.ts +0 -15
  298. package/Canvas2D/Path2D/Path2D.ios.js +0 -55
  299. package/Canvas2D/Path2D/Path2D.ios.js.map +0 -1
  300. package/Canvas2D/Path2D/common.d.ts +0 -17
  301. package/Canvas2D/Path2D/common.js +0 -12
  302. package/Canvas2D/Path2D/common.js.map +0 -1
  303. package/Canvas2D/TextMetrics/TextMetrics.android.d.ts +0 -16
  304. package/Canvas2D/TextMetrics/TextMetrics.android.js +0 -43
  305. package/Canvas2D/TextMetrics/TextMetrics.android.js.map +0 -1
  306. package/Canvas2D/TextMetrics/TextMetrics.d.ts +0 -7
  307. package/Canvas2D/TextMetrics/TextMetrics.ios.d.ts +0 -16
  308. package/Canvas2D/TextMetrics/TextMetrics.ios.js +0 -43
  309. package/Canvas2D/TextMetrics/TextMetrics.ios.js.map +0 -1
  310. package/Canvas2D/TextMetrics/common.d.ts +0 -18
  311. package/Canvas2D/TextMetrics/common.js +0 -13
  312. package/Canvas2D/TextMetrics/common.js.map +0 -1
  313. package/ImageAsset/ImageAsset.android.d.ts +0 -20
  314. package/ImageAsset/ImageAsset.android.js +0 -149
  315. package/ImageAsset/ImageAsset.android.js.map +0 -1
  316. package/ImageAsset/ImageAsset.d.ts +0 -31
  317. package/ImageAsset/ImageAsset.ios.d.ts +0 -22
  318. package/ImageAsset/ImageAsset.ios.js +0 -114
  319. package/ImageAsset/ImageAsset.ios.js.map +0 -1
  320. package/ImageAsset/common.d.ts +0 -13
  321. package/ImageAsset/common.js +0 -21
  322. package/ImageAsset/common.js.map +0 -1
  323. package/ImageBitmap/common.d.ts +0 -8
  324. package/ImageBitmap/common.js +0 -9
  325. package/ImageBitmap/common.js.map +0 -1
  326. package/ImageBitmap/index.android.js.map +0 -1
  327. package/ImageBitmap/index.ios.d.ts +0 -12
  328. package/ImageBitmap/index.ios.js +0 -283
  329. package/ImageBitmap/index.ios.js.map +0 -1
  330. package/TextDecoder/TextDecoder.android.d.ts +0 -8
  331. package/TextDecoder/TextDecoder.android.js +0 -52
  332. package/TextDecoder/TextDecoder.android.js.map +0 -1
  333. package/TextDecoder/TextDecoder.d.ts +0 -10
  334. package/TextDecoder/TextDecoder.ios.d.ts +0 -6
  335. package/TextDecoder/TextDecoder.ios.js +0 -37
  336. package/TextDecoder/TextDecoder.ios.js.map +0 -1
  337. package/TextDecoder/common.d.ts +0 -8
  338. package/TextDecoder/common.js +0 -13
  339. package/TextDecoder/common.js.map +0 -1
  340. package/TextEncoder/TextEncoder.android.d.ts +0 -8
  341. package/TextEncoder/TextEncoder.android.js +0 -50
  342. package/TextEncoder/TextEncoder.android.js.map +0 -1
  343. package/TextEncoder/TextEncoder.d.ts +0 -10
  344. package/TextEncoder/TextEncoder.ios.d.ts +0 -6
  345. package/TextEncoder/TextEncoder.ios.js +0 -14
  346. package/TextEncoder/TextEncoder.ios.js.map +0 -1
  347. package/TextEncoder/common.d.ts +0 -7
  348. package/TextEncoder/common.js +0 -9
  349. package/TextEncoder/common.js.map +0 -1
  350. package/WebGL/WebGLExtensions/index.android.d.ts +0 -209
  351. package/WebGL/WebGLExtensions/index.android.js.map +0 -1
  352. package/WebGL/WebGLExtensions/index.ios.d.ts +0 -192
  353. package/WebGL/WebGLExtensions/index.ios.js +0 -250
  354. package/WebGL/WebGLExtensions/index.ios.js.map +0 -1
  355. package/WebGL/WebGLRenderingContext/index.android.d.ts +0 -165
  356. package/WebGL/WebGLRenderingContext/index.android.js.map +0 -1
  357. package/WebGL/WebGLRenderingContext/index.ios.d.ts +0 -163
  358. package/WebGL/WebGLRenderingContext/index.ios.js +0 -1168
  359. package/WebGL/WebGLRenderingContext/index.ios.js.map +0 -1
  360. package/WebGL2/WebGL2RenderingContext/index.android.d.ts +0 -103
  361. package/WebGL2/WebGL2RenderingContext/index.android.js.map +0 -1
  362. package/WebGL2/WebGL2RenderingContext/index.ios.d.ts +0 -102
  363. package/WebGL2/WebGL2RenderingContext/index.ios.js +0 -618
  364. package/WebGL2/WebGL2RenderingContext/index.ios.js.map +0 -1
  365. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/Utils.h +0 -26
  366. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64.swiftsourceinfo +0 -0
  367. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftdoc +0 -0
  368. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface +0 -3264
  369. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/Utils.h +0 -26
  370. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64.swiftsourceinfo +0 -0
  371. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64.swiftsourceinfo +0 -0
  372. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftdoc +0 -0
  373. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface +0 -3264
  374. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftdoc +0 -0
  375. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftinterface +0 -3264
@@ -0,0 +1,4543 @@
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
+ canvas_native_webgl2_fence_sync(
2133
+ condition,
2134
+ flags,
2135
+ this->GetState()
2136
+ );
2137
+ }
2138
+
2139
+ return jsi::Value::undefined();
2140
+ }
2141
+ );
2142
+ } else if (methodName == "framebufferTextureLayer") {
2143
+ return jsi::Function::createFromHostFunction(runtime,
2144
+ jsi::PropNameID::forAscii(runtime, methodName),
2145
+ 5,
2146
+ [this](jsi::Runtime &runtime,
2147
+ const jsi::Value &thisValue,
2148
+ const jsi::Value *arguments,
2149
+ size_t count) -> jsi::Value {
2150
+
2151
+
2152
+ if (count > 4 && arguments[2].isObject()) {
2153
+ auto textureObject = arguments[2].asObject(
2154
+ runtime);
2155
+ if (textureObject.isHostObject(
2156
+ runtime)) {
2157
+ auto target = (uint32_t) arguments[0].asNumber();
2158
+ auto attachment = (uint32_t) arguments[1].asNumber();
2159
+ auto texture = textureObject.asHostObject<WebGLTexture>(
2160
+ runtime);
2161
+ auto level = (int32_t) arguments[3].asNumber();
2162
+ auto layer = (int32_t) arguments[4].asNumber();
2163
+ if (texture != nullptr) {
2164
+ canvas_native_webgl2_framebuffer_texture_layer(
2165
+ target,
2166
+ attachment,
2167
+ texture->GetTexture(),
2168
+ level,
2169
+ layer,
2170
+ this->GetState()
2171
+ );
2172
+ }
2173
+ }
2174
+
2175
+ }
2176
+
2177
+ return jsi::Value::undefined();
2178
+ }
2179
+ );
2180
+ } else if (methodName == "getActiveUniformBlockName") {
2181
+ return jsi::Function::createFromHostFunction(runtime,
2182
+ jsi::PropNameID::forAscii(runtime, methodName),
2183
+ 2,
2184
+ [this](jsi::Runtime &runtime,
2185
+ const jsi::Value &thisValue,
2186
+ const jsi::Value *arguments,
2187
+ size_t count) -> jsi::Value {
2188
+
2189
+
2190
+ if (count > 1) {
2191
+ auto program = getHostObject<WebGLProgram>(
2192
+ runtime, arguments[0]);
2193
+ if (program != nullptr) {
2194
+ auto uniformBlockIndex = (uint32_t) arguments[1].asNumber();
2195
+ auto name = canvas_native_webgl2_get_active_uniform_block_name(
2196
+ program->GetProgram(),
2197
+ uniformBlockIndex,
2198
+ this->GetState()
2199
+ );
2200
+ return jsi::String::createFromAscii(
2201
+ runtime, name.data(),
2202
+ name.size());
2203
+ }
2204
+
2205
+ }
2206
+
2207
+ return jsi::Value::undefined();
2208
+ }
2209
+ );
2210
+ } else if (methodName == "getActiveUniformBlockParameter") {
2211
+ return jsi::Function::createFromHostFunction(runtime,
2212
+ jsi::PropNameID::forAscii(runtime, methodName),
2213
+ 3,
2214
+ [this](jsi::Runtime &runtime,
2215
+ const jsi::Value &thisValue,
2216
+ const jsi::Value *arguments,
2217
+ size_t count) -> jsi::Value {
2218
+
2219
+
2220
+ if (count > 2) {
2221
+
2222
+ auto program = getHostObject<WebGLProgram>(
2223
+ runtime, arguments[0]);
2224
+
2225
+ if (program != nullptr) {
2226
+ auto uniformBlockIndex = (uint32_t) arguments[1].asNumber();
2227
+ auto pname = (uint32_t) arguments[2].asNumber();
2228
+ auto ret = canvas_native_webgl2_get_active_uniform_block_parameter(
2229
+ program->GetProgram(),
2230
+ uniformBlockIndex,
2231
+ pname,
2232
+ this->GetState()
2233
+ );
2234
+
2235
+ switch (pname) {
2236
+ case GL_UNIFORM_BLOCK_BINDING:
2237
+ case GL_UNIFORM_BLOCK_DATA_SIZE:
2238
+ case GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS:
2239
+ return {canvas_native_webgl_result_get_i32(
2240
+ *ret)};
2241
+ case GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: {
2242
+ auto value = canvas_native_webgl_result_get_u32_array(
2243
+ *ret);
2244
+ auto buffer = std::make_shared<VecMutableBuffer<uint32_t>>(
2245
+ std::move(value));
2246
+ auto array = jsi::ArrayBuffer(
2247
+ runtime, buffer);
2248
+
2249
+ auto Uint32Array = runtime.global()
2250
+ .getProperty(
2251
+ runtime,
2252
+ "Uint32Array")
2253
+ .asObject(runtime)
2254
+ .asFunction(
2255
+ runtime);
2256
+
2257
+
2258
+ return Uint32Array.callAsConstructor(
2259
+ runtime, array);
2260
+ }
2261
+ case GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:
2262
+ case GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:
2263
+ return {canvas_native_webgl_result_get_bool(
2264
+ *ret)};
2265
+ default:
2266
+ return jsi::Value::null();
2267
+ }
2268
+ }
2269
+ }
2270
+
2271
+ return jsi::Value::null();
2272
+ }
2273
+ );
2274
+ } else if (methodName == "getActiveUniforms") {
2275
+ return jsi::Function::createFromHostFunction(runtime,
2276
+ jsi::PropNameID::forAscii(runtime, methodName),
2277
+ 3,
2278
+ [this](jsi::Runtime &runtime,
2279
+ const jsi::Value &thisValue,
2280
+ const jsi::Value *arguments,
2281
+ size_t count) -> jsi::Value {
2282
+
2283
+
2284
+ if (count > 2 && arguments[1].isObject()) {
2285
+
2286
+ auto program = getHostObject<WebGLProgram>(
2287
+ runtime, arguments[0]);
2288
+ auto uniformIndicesObject = arguments[1].asObject(
2289
+ runtime);
2290
+ auto pname = (uint32_t) arguments[2].asNumber();
2291
+
2292
+ if (uniformIndicesObject.isArray(
2293
+ runtime)) {
2294
+ auto uniformIndices = uniformIndicesObject.asArray(
2295
+ runtime);
2296
+ auto size = uniformIndices.size(
2297
+ runtime);
2298
+ rust::Vec<uint32_t> buf;
2299
+ buf.reserve(size);
2300
+ for (int j = 0; j < size; j++) {
2301
+ auto item = (uint32_t) uniformIndices.getValueAtIndex(
2302
+ runtime, j).asNumber();
2303
+ buf.emplace_back(item);
2304
+ }
2305
+ rust::Slice<const uint32_t> slice(
2306
+ buf.data(), buf.size());
2307
+ auto ret = canvas_native_webgl2_get_active_uniforms(
2308
+ program->GetProgram(),
2309
+ slice,
2310
+ pname,
2311
+ this->GetState()
2312
+ );
2313
+
2314
+ switch (pname) {
2315
+ case GL_UNIFORM_TYPE:
2316
+ case GL_UNIFORM_SIZE: {
2317
+ auto value = canvas_native_webgl_result_get_u32_array(
2318
+ *ret);
2319
+ auto array = jsi::Array(
2320
+ runtime,
2321
+ value.size());
2322
+ auto len = value.size();
2323
+ for (int j = 0;
2324
+ j < len; ++j) {
2325
+ auto item = value[j];
2326
+ array.setValueAtIndex(
2327
+ runtime, j,
2328
+ jsi::Value(
2329
+ (int32_t) item));
2330
+ }
2331
+ return array;
2332
+ }
2333
+ break;
2334
+ case GL_UNIFORM_BLOCK_INDEX:
2335
+ case GL_UNIFORM_OFFSET:
2336
+ case GL_UNIFORM_ARRAY_STRIDE:
2337
+ case GL_UNIFORM_MATRIX_STRIDE: {
2338
+ auto value = canvas_native_webgl_result_get_i32_array(
2339
+ *ret);
2340
+ auto array = jsi::Array(
2341
+ runtime,
2342
+ value.size());
2343
+ auto len = value.size();
2344
+ for (int j = 0;
2345
+ j < len; ++j) {
2346
+ auto item = value[j];
2347
+ array.setValueAtIndex(
2348
+ runtime, j,
2349
+ jsi::Value(
2350
+ item));
2351
+ }
2352
+ return array;
2353
+ }
2354
+ case GL_UNIFORM_IS_ROW_MAJOR: {
2355
+ auto value = canvas_native_webgl_result_get_bool_array(
2356
+ *ret);
2357
+ auto len = value.size();
2358
+ auto array = jsi::Array(
2359
+ runtime,
2360
+ len);
2361
+ for (int j = 0;
2362
+ j < len; ++j) {
2363
+ bool item =
2364
+ value[j] == 1;
2365
+ array.setValueAtIndex(
2366
+ runtime, j,
2367
+ jsi::Value(
2368
+ item));
2369
+ }
2370
+ return array;
2371
+ }
2372
+ default:
2373
+ return jsi::Value::null();
2374
+ }
2375
+ }
2376
+
2377
+
2378
+ }
2379
+ return jsi::Value::null();
2380
+ }
2381
+ );
2382
+ } else if (methodName == "getBufferSubData") {
2383
+ return jsi::Function::createFromHostFunction(runtime,
2384
+ jsi::PropNameID::forAscii(runtime, methodName),
2385
+ 4,
2386
+ [this](jsi::Runtime &runtime,
2387
+ const jsi::Value &thisValue,
2388
+ const jsi::Value *arguments,
2389
+ size_t count) -> jsi::Value {
2390
+
2391
+
2392
+ if (count >= 3 &&
2393
+ arguments[2].isObject()) {
2394
+ auto target = (uint32_t) arguments[0].asNumber();
2395
+ auto srcByteOffset = arguments[1].asNumber();
2396
+ auto dstDataObject = arguments[2].asObject(
2397
+ runtime);
2398
+
2399
+ if (dstDataObject.isTypedArray(
2400
+ runtime)) {
2401
+ ssize_t dstOffsetValue = 0;
2402
+ if (arguments[3].isNumber()) {
2403
+ dstOffsetValue = static_cast<ssize_t>(arguments[3].asNumber());
2404
+ }
2405
+
2406
+ ssize_t lengthValue = 0;
2407
+ if (arguments[4].isNumber()) {
2408
+ lengthValue = static_cast<ssize_t>(arguments[4].asNumber());
2409
+ }
2410
+
2411
+ auto array = dstDataObject.getTypedArray(
2412
+ runtime);
2413
+ auto slice = GetTypedArrayData<uint8_t>(
2414
+ runtime, array);
2415
+
2416
+ canvas_native_webgl2_get_buffer_sub_data(
2417
+ target,
2418
+ static_cast<ssize_t>(srcByteOffset),
2419
+ slice,
2420
+ dstOffsetValue,
2421
+ lengthValue,
2422
+ this->GetState()
2423
+ );
2424
+ }
2425
+ }
2426
+
2427
+ return jsi::Value::undefined();
2428
+ }
2429
+ );
2430
+ } else if (methodName == "getFragDataLocation") {
2431
+ return jsi::Function::createFromHostFunction(runtime,
2432
+ jsi::PropNameID::forAscii(runtime, methodName),
2433
+ 2,
2434
+ [this](jsi::Runtime &runtime,
2435
+ const jsi::Value &thisValue,
2436
+ const jsi::Value *arguments,
2437
+ size_t count) -> jsi::Value {
2438
+
2439
+
2440
+ if (count > 1 && arguments[1].isString()) {
2441
+ auto program = getHostObject<WebGLProgram>(
2442
+ runtime, arguments[0]);
2443
+
2444
+ if (program != nullptr) {
2445
+ auto name = arguments[1].asString(
2446
+ runtime).utf8(runtime);
2447
+
2448
+ auto ret = canvas_native_webgl2_get_frag_data_location(
2449
+ program->GetProgram(),
2450
+ rust::Str(name.c_str()),
2451
+ this->GetState()
2452
+ );
2453
+
2454
+ return {ret};
2455
+ }
2456
+ }
2457
+
2458
+ return jsi::Value::null();
2459
+ }
2460
+ );
2461
+ } else if (methodName == "getIndexedParameter") {
2462
+ return jsi::Function::createFromHostFunction(runtime,
2463
+ jsi::PropNameID::forAscii(runtime, methodName),
2464
+ 2,
2465
+ [this](jsi::Runtime &runtime,
2466
+ const jsi::Value &thisValue,
2467
+ const jsi::Value *arguments,
2468
+ size_t count) -> jsi::Value {
2469
+
2470
+ if (count > 1) {
2471
+ auto target = (uint32_t) arguments[0].asNumber();
2472
+ auto index = (uint32_t) arguments[1].asNumber();
2473
+ auto ret = canvas_native_webgl2_get_indexed_parameter(
2474
+ target,
2475
+ index,
2476
+ this->GetState()
2477
+ );
2478
+
2479
+ switch (target) {
2480
+ case GL_UNIFORM_BUFFER_BINDING:
2481
+ case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: {
2482
+ auto buffer = canvas_native_webgl2_indexed_parameter_get_buffer_value(
2483
+ *ret);
2484
+ return jsi::Object::createFromHostObject(
2485
+ runtime,
2486
+ std::make_shared<WebGLBuffer>(
2487
+ buffer));
2488
+ }
2489
+ break;
2490
+ case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
2491
+ case GL_TRANSFORM_FEEDBACK_BUFFER_START:
2492
+ case GL_UNIFORM_BUFFER_SIZE:
2493
+ case GL_UNIFORM_BUFFER_START: {
2494
+ auto value = canvas_native_webgl2_indexed_parameter_get_value(
2495
+ *ret);
2496
+ return {static_cast<double>(value)};
2497
+ }
2498
+ break;
2499
+ default:
2500
+ return jsi::Value::null();
2501
+ }
2502
+ }
2503
+
2504
+ return jsi::Value::null();
2505
+ }
2506
+ );
2507
+ } else if (methodName == "getInternalformatParameter") {
2508
+ return jsi::Function::createFromHostFunction(runtime,
2509
+ jsi::PropNameID::forAscii(runtime, methodName),
2510
+ 3,
2511
+ [this](jsi::Runtime &runtime,
2512
+ const jsi::Value &thisValue,
2513
+ const jsi::Value *arguments,
2514
+ size_t count) -> jsi::Value {
2515
+ if (count > 2) {
2516
+ auto target = (uint32_t) arguments[0].asNumber();
2517
+ auto internalformat = (uint32_t) arguments[1].asNumber();
2518
+ auto pname = (uint32_t) arguments[2].asNumber();
2519
+ switch (internalformat) {
2520
+ case GL_RGB:
2521
+ case GL_RGBA:
2522
+ case GL_R8UI:
2523
+ case GL_R8I:
2524
+ case GL_R16UI:
2525
+ case GL_R16I:
2526
+ case GL_R32UI:
2527
+ case GL_R32I:
2528
+ case GL_RG8UI:
2529
+ case GL_RG8I:
2530
+ case GL_RG16UI:
2531
+ case GL_RG16I:
2532
+ case GL_RG32UI:
2533
+ case GL_RG32I:
2534
+ case GL_RGBA8UI:
2535
+ case GL_RGBA8I:
2536
+ case GL_RGB10_A2UI:
2537
+ case GL_RGBA16UI:
2538
+ case GL_RGBA16I:
2539
+ case GL_RGBA32UI:
2540
+ case GL_RGBA32I: {
2541
+ // empty
2542
+
2543
+ auto value = rust::Vec<int32_t>();
2544
+ auto buffer = std::make_shared<VecMutableBuffer<int32_t>>(
2545
+ std::move(value));
2546
+ auto array = jsi::ArrayBuffer(
2547
+ runtime, buffer);
2548
+
2549
+ auto Int32Array = runtime.global()
2550
+ .getProperty(runtime,
2551
+ "Int32Array")
2552
+ .asObject(runtime)
2553
+ .asFunction(runtime);
2554
+
2555
+
2556
+ return Int32Array.callAsConstructor(
2557
+ runtime, array);
2558
+ }
2559
+ case GL_R8:
2560
+ case GL_RG8:
2561
+ case GL_RGB565:
2562
+ case GL_RGBA8:
2563
+ case GL_SRGB8_ALPHA8:
2564
+ case GL_RGB5_A1:
2565
+ case GL_RGBA4:
2566
+ case GL_RGB10_A2:
2567
+ case GL_DEPTH_COMPONENT16:
2568
+ case GL_DEPTH_COMPONENT24:
2569
+ case GL_DEPTH_COMPONENT32F:
2570
+ case GL_DEPTH24_STENCIL8:
2571
+ case GL_DEPTH32F_STENCIL8:
2572
+ case GL_STENCIL_INDEX8:
2573
+ // noop
2574
+ break;
2575
+ case GL_R16F:
2576
+ case GL_RG16F:
2577
+ case GL_R32F:
2578
+ case GL_RG32F:
2579
+ case GL_RGBA32F:
2580
+ case GL_R11F_G11F_B10F:
2581
+ // noop
2582
+ break;
2583
+ default:
2584
+ return jsi::Value::null();
2585
+ }
2586
+
2587
+
2588
+ auto ret = canvas_native_webgl2_get_internalformat_parameter(
2589
+ target,
2590
+ internalformat,
2591
+ pname,
2592
+ this->GetState()
2593
+ );
2594
+
2595
+ if (pname == GL_SAMPLES) {
2596
+ auto value = canvas_native_webgl_result_get_i32_array(
2597
+ *ret);
2598
+
2599
+ auto buffer = std::make_shared<VecMutableBuffer<int32_t>>(
2600
+ std::move(value));
2601
+ auto array = jsi::ArrayBuffer(
2602
+ runtime,
2603
+ buffer);
2604
+
2605
+ auto Int32Array = runtime.global()
2606
+ .getProperty(runtime,
2607
+ "Int32Array")
2608
+ .asObject(runtime)
2609
+ .asFunction(runtime);
2610
+
2611
+
2612
+ return Int32Array.callAsConstructor(
2613
+ runtime, array);
2614
+ } else {
2615
+ return jsi::Value::null();
2616
+ }
2617
+ }
2618
+
2619
+ return jsi::Value::null();
2620
+ }
2621
+ );
2622
+ } else if (methodName == "getParameter") {
2623
+ return jsi::Function::createFromHostFunction(runtime,
2624
+ jsi::PropNameID::forAscii(runtime, methodName),
2625
+ 1,
2626
+ [this](jsi::Runtime &runtime,
2627
+ const jsi::Value &thisValue,
2628
+ const jsi::Value *arguments,
2629
+ size_t count) -> jsi::Value {
2630
+
2631
+ if (count > 0) {
2632
+ auto pname = (uint32_t) arguments[0].asNumber();
2633
+ auto result = canvas_native_webgl2_get_parameter(
2634
+ pname,
2635
+ this->GetState());
2636
+ switch (pname) {
2637
+ case GL_COPY_READ_BUFFER_BINDING:
2638
+ case GL_COPY_WRITE_BUFFER_BINDING:
2639
+ case GL_DRAW_FRAMEBUFFER_BINDING:
2640
+ return {canvas_native_webgl_result_get_i32(
2641
+ *result)};
2642
+ default:
2643
+ return this->GetParameterInternal(
2644
+ runtime, pname,
2645
+ std::move(result));
2646
+ }
2647
+ }
2648
+
2649
+ return jsi::Value::null();
2650
+ }
2651
+ );
2652
+ } else if (methodName == "getQueryParameter") {
2653
+ return jsi::Function::createFromHostFunction(runtime,
2654
+ jsi::PropNameID::forAscii(runtime, methodName),
2655
+ 2,
2656
+ [this](jsi::Runtime &runtime,
2657
+ const jsi::Value &thisValue,
2658
+ const jsi::Value *arguments,
2659
+ size_t count) -> jsi::Value {
2660
+
2661
+
2662
+ if (count > 1) {
2663
+ auto query = getHostObject<WebGLQuery>(
2664
+ runtime, arguments[0]);
2665
+ if (query != nullptr) {
2666
+ auto pname = (uint32_t) arguments[1].asNumber();
2667
+
2668
+
2669
+ auto ret = canvas_native_webgl2_get_query_parameter(
2670
+ query->GetQuery(),
2671
+ pname,
2672
+ this->GetState());
2673
+ if (pname == GL_QUERY_RESULT) {
2674
+ return {canvas_native_webgl_result_get_bool(
2675
+ *ret)};
2676
+ } else if (pname ==
2677
+ GL_QUERY_RESULT_AVAILABLE) {
2678
+ return {(int32_t) canvas_native_webgl_result_get_u32(
2679
+ *ret)};
2680
+ }
2681
+ }
2682
+ }
2683
+
2684
+ return jsi::Value::null();
2685
+ }
2686
+ );
2687
+ } else if (methodName == "getQuery") {
2688
+ return jsi::Function::createFromHostFunction(runtime,
2689
+ jsi::PropNameID::forAscii(runtime, methodName),
2690
+ 2,
2691
+ [this](jsi::Runtime &runtime,
2692
+ const jsi::Value &thisValue,
2693
+ const jsi::Value *arguments,
2694
+ size_t count) -> jsi::Value {
2695
+
2696
+ if (count > 1) {
2697
+ auto target = (uint32_t) arguments[0].asNumber();
2698
+ auto pname = (uint32_t) arguments[1].asNumber();
2699
+ auto ret = canvas_native_webgl2_get_query(
2700
+ target,
2701
+ pname,
2702
+ this->GetState());
2703
+ if (pname == GL_CURRENT_QUERY) {
2704
+ return {canvas_native_webgl_result_get_i32(
2705
+ *ret)};
2706
+ }
2707
+ }
2708
+
2709
+ return jsi::Value::null();
2710
+ }
2711
+ );
2712
+ } else if (methodName == "getSamplerParameter") {
2713
+ return jsi::Function::createFromHostFunction(runtime,
2714
+ jsi::PropNameID::forAscii(runtime, methodName),
2715
+ 2,
2716
+ [this](jsi::Runtime &runtime,
2717
+ const jsi::Value &thisValue,
2718
+ const jsi::Value *arguments,
2719
+ size_t count) -> jsi::Value {
2720
+
2721
+ if (count > 1) {
2722
+ auto sampler = getHostObject<WebGLSampler>(
2723
+ runtime, arguments[0]);
2724
+ if (sampler != nullptr) {
2725
+ auto pname = (uint32_t) arguments[1].asNumber();
2726
+ auto ret = canvas_native_webgl2_get_sampler_parameter(
2727
+ sampler->GetSampler(),
2728
+ pname,
2729
+ this->GetState());
2730
+
2731
+ switch (pname) {
2732
+ case GL_TEXTURE_MAX_LOD:
2733
+ case GL_TEXTURE_MIN_LOD:
2734
+ return {static_cast<double>(canvas_native_webgl_result_get_f32(
2735
+ *ret))};
2736
+ case GL_TEXTURE_COMPARE_FUNC:
2737
+ case GL_TEXTURE_COMPARE_MODE:
2738
+ case GL_TEXTURE_MAG_FILTER:
2739
+ case GL_TEXTURE_MIN_FILTER:
2740
+ case GL_TEXTURE_WRAP_R:
2741
+ case GL_TEXTURE_WRAP_S:
2742
+ case GL_TEXTURE_WRAP_T:
2743
+ return {canvas_native_webgl_result_get_i32(
2744
+ *ret)};
2745
+ default:
2746
+ return jsi::Value::null();
2747
+ }
2748
+ }
2749
+ }
2750
+
2751
+ return jsi::Value::null();
2752
+ }
2753
+ );
2754
+ } else if (methodName == "getSyncParameter") {
2755
+ return jsi::Function::createFromHostFunction(runtime,
2756
+ jsi::PropNameID::forAscii(runtime, methodName),
2757
+ 2,
2758
+ [this](jsi::Runtime &runtime,
2759
+ const jsi::Value &thisValue,
2760
+ const jsi::Value *arguments,
2761
+ size_t count) -> jsi::Value {
2762
+
2763
+ if (count > 1) {
2764
+ auto sync = getHostObject<WebGLSyncImpl>(
2765
+ runtime, arguments[0]);
2766
+ if (sync != nullptr) {
2767
+ auto pname = (uint32_t) arguments[1].asNumber();
2768
+ auto ret = canvas_native_webgl2_get_sync_parameter(
2769
+ sync->GetSync(),
2770
+ pname,
2771
+ this->GetState());
2772
+
2773
+ switch (pname) {
2774
+ case GL_OBJECT_TYPE:
2775
+ case GL_SYNC_STATUS:
2776
+ case GL_SYNC_CONDITION:
2777
+ case GL_SYNC_FLAGS:
2778
+ return {canvas_native_webgl_result_get_i32(
2779
+ *ret)};
2780
+ default:
2781
+ return jsi::Value::null();
2782
+ }
2783
+ }
2784
+ }
2785
+ return jsi::Value::null();
2786
+ }
2787
+ );
2788
+ } else if (methodName == "getTransformFeedbackVarying") {
2789
+ return jsi::Function::createFromHostFunction(runtime,
2790
+ jsi::PropNameID::forAscii(runtime, methodName),
2791
+ 2,
2792
+ [this](jsi::Runtime &runtime,
2793
+ const jsi::Value &thisValue,
2794
+ const jsi::Value *arguments,
2795
+ size_t count) -> jsi::Value {
2796
+ if (count > 1) {
2797
+ auto program = getHostObject<WebGLProgram>(
2798
+ runtime, arguments[0]);
2799
+ auto index = (uint32_t) arguments[1].asNumber();
2800
+ if (program != nullptr) {
2801
+ auto ret = canvas_native_webgl2_get_transform_feedback_varying(
2802
+ program->GetProgram(),
2803
+ index,
2804
+ this->GetState()
2805
+ );
2806
+
2807
+ if (canvas_native_webgl_active_info_get_is_empty(
2808
+ *ret)) {
2809
+ return jsi::Value::null();
2810
+ }
2811
+
2812
+ auto info = std::make_shared<WebGLActiveInfoImpl>(
2813
+ std::move(ret));
2814
+
2815
+ return jsi::Object::createFromHostObject(
2816
+ runtime, info);
2817
+ }
2818
+ }
2819
+
2820
+ return jsi::Value::null();
2821
+ }
2822
+ );
2823
+ } else if (methodName == "getUniformBlockIndex") {
2824
+ return jsi::Function::createFromHostFunction(runtime,
2825
+ jsi::PropNameID::forAscii(runtime, methodName),
2826
+ 2,
2827
+ [this](jsi::Runtime &runtime,
2828
+ const jsi::Value &thisValue,
2829
+ const jsi::Value *arguments,
2830
+ size_t count) -> jsi::Value {
2831
+ if (count > 1) {
2832
+ auto program = getHostObject<WebGLProgram>(
2833
+ runtime, arguments[0]);
2834
+ auto index = arguments[1].asString(runtime).utf8(runtime);
2835
+ if (program != nullptr) {
2836
+ auto ret = canvas_native_webgl2_get_uniform_block_index(program->GetProgram(), rust::Str(index.c_str()), this->GetState());
2837
+
2838
+ return jsi::Value((int)ret);
2839
+ }
2840
+ }
2841
+
2842
+ return jsi::Value::null();
2843
+ }
2844
+ );
2845
+ } else if (methodName == "getUniformIndices") {
2846
+ return jsi::Function::createFromHostFunction(runtime,
2847
+ jsi::PropNameID::forAscii(runtime, methodName),
2848
+ 2,
2849
+ [this](jsi::Runtime &runtime,
2850
+ const jsi::Value &thisValue,
2851
+ const jsi::Value *arguments,
2852
+ size_t count) -> jsi::Value {
2853
+
2854
+ if (count > 1 && arguments[1].isObject()) {
2855
+ auto program = getHostObject<WebGLProgram>(
2856
+ runtime, arguments[0]);
2857
+ auto uniformNamesObject = arguments[1].asObject(
2858
+ runtime);
2859
+ if (program != nullptr &&
2860
+ uniformNamesObject.isArray(
2861
+ runtime)) {
2862
+ auto uniformNames = uniformNamesObject.getArray(
2863
+ runtime);
2864
+ auto len = uniformNames.size(
2865
+ runtime);
2866
+ rust::Vec<rust::Str> store;
2867
+ store.reserve(len);
2868
+ for (int j = 0; j < len; ++j) {
2869
+ auto name = uniformNames.getValueAtIndex(
2870
+ runtime, j).asString(
2871
+ runtime).utf8(runtime);
2872
+ rust::Str val(name.data(),
2873
+ name.size());
2874
+ store.push_back(val);
2875
+ }
2876
+ rust::Slice<const rust::Str> slice(
2877
+ store.data(),
2878
+ store.size());
2879
+ auto ret = canvas_native_webgl2_get_uniform_indices(
2880
+ program->GetProgram(),
2881
+ slice,
2882
+ this->GetState());
2883
+
2884
+ auto retSize = ret.size();
2885
+ auto result = jsi::Array(runtime,
2886
+ retSize);
2887
+ for (int j = 0; j < retSize; ++j) {
2888
+ auto item = ret[j];
2889
+ result.setValueAtIndex(runtime,
2890
+ j,
2891
+ jsi::Value(
2892
+ (int32_t) item));
2893
+ }
2894
+
2895
+ return result;
2896
+ }
2897
+ }
2898
+
2899
+ return jsi::Value::null();
2900
+ }
2901
+ );
2902
+ } else if (methodName == "invalidateFramebuffer") {
2903
+ return jsi::Function::createFromHostFunction(runtime,
2904
+ jsi::PropNameID::forAscii(runtime, methodName),
2905
+ 2,
2906
+ [this](jsi::Runtime &runtime,
2907
+ const jsi::Value &thisValue,
2908
+ const jsi::Value *arguments,
2909
+ size_t count) -> jsi::Value {
2910
+
2911
+
2912
+ if (count > 1 && arguments[1].isObject()) {
2913
+ auto target = (uint32_t) arguments[0].asNumber();
2914
+ auto attachments = arguments[1].asObject(
2915
+ runtime);
2916
+
2917
+ if (attachments.isArray(runtime)) {
2918
+ auto array = attachments.getArray(
2919
+ runtime);
2920
+ auto len = array.size(runtime);
2921
+ rust::Vec<uint32_t> buf;
2922
+ buf.reserve(len);
2923
+ for (int j = 0; j < len; ++j) {
2924
+ auto item = (uint32_t) array.getValueAtIndex(
2925
+ runtime, j).asNumber();
2926
+ buf.push_back(item);
2927
+ }
2928
+
2929
+ rust::Slice<const uint32_t> slice(
2930
+ buf.data(), buf.size());
2931
+ canvas_native_webgl2_invalidate_framebuffer(
2932
+ target, slice,
2933
+ this->GetState());
2934
+ }
2935
+ }
2936
+
2937
+ return jsi::Value::undefined();
2938
+ }
2939
+ );
2940
+ } else if (methodName == "invalidateSubFramebuffer") {
2941
+ return jsi::Function::createFromHostFunction(runtime,
2942
+ jsi::PropNameID::forAscii(runtime, methodName),
2943
+ 6,
2944
+ [this](jsi::Runtime &runtime,
2945
+ const jsi::Value &thisValue,
2946
+ const jsi::Value *arguments,
2947
+ size_t count) -> jsi::Value {
2948
+
2949
+
2950
+ if (count > 5 && arguments[1].isObject()) {
2951
+ auto attachments = arguments[1].asObject(
2952
+ runtime);
2953
+ if (attachments.isArray(runtime)) {
2954
+ auto target = (uint32_t) arguments[0].asNumber();
2955
+ auto x = (int32_t) arguments[2].asNumber();
2956
+ auto y = (int32_t) arguments[3].asNumber();
2957
+ auto width = (int32_t) arguments[4].asNumber();
2958
+ auto height = (int32_t) arguments[5].asNumber();
2959
+
2960
+ auto array = attachments.getArray(
2961
+ runtime);
2962
+ auto len = array.size(runtime);
2963
+ rust::Vec<uint32_t> buf;
2964
+ buf.reserve(len);
2965
+ for (int j = 0; j < len; ++j) {
2966
+ auto item = (uint) array.getValueAtIndex(
2967
+ runtime, j).asNumber();
2968
+ buf.push_back(item);
2969
+ }
2970
+ rust::Slice<const uint32_t> slice(
2971
+ buf.data(), buf.size());
2972
+
2973
+ canvas_native_webgl2_invalidate_sub_framebuffer(
2974
+ target,
2975
+ slice,
2976
+ x,
2977
+ y,
2978
+ width,
2979
+ height,
2980
+ this->GetState());
2981
+ }
2982
+
2983
+
2984
+ }
2985
+
2986
+ return jsi::Value::undefined();
2987
+ }
2988
+ );
2989
+ } else if (methodName == "isQuery") {
2990
+ return jsi::Function::createFromHostFunction(runtime,
2991
+ jsi::PropNameID::forAscii(runtime, methodName),
2992
+ 1,
2993
+ [this](jsi::Runtime &runtime,
2994
+ const jsi::Value &thisValue,
2995
+ const jsi::Value *arguments,
2996
+ size_t count) -> jsi::Value {
2997
+ if (count > 0) {
2998
+ auto query = getHostObject<WebGLQuery>(
2999
+ runtime, arguments[0]);
3000
+ if (query != nullptr) {
3001
+ auto ret = canvas_native_webgl2_is_query(
3002
+ query->GetQuery(),
3003
+ this->GetState());
3004
+ return {ret};
3005
+ }
3006
+ }
3007
+ // todo check return
3008
+ return {false};
3009
+ }
3010
+ );
3011
+ } else if (methodName == "isSampler") {
3012
+ return jsi::Function::createFromHostFunction(runtime,
3013
+ jsi::PropNameID::forAscii(runtime, methodName),
3014
+ 1,
3015
+ [this](jsi::Runtime &runtime,
3016
+ const jsi::Value &thisValue,
3017
+ const jsi::Value *arguments,
3018
+ size_t count) -> jsi::Value {
3019
+ if (count > 0) {
3020
+ auto sampler = getHostObject<WebGLSampler>(
3021
+ runtime, arguments[0]);
3022
+ if (sampler != nullptr) {
3023
+ auto ret = canvas_native_webgl2_is_sampler(
3024
+ sampler->GetSampler(),
3025
+ this->GetState());
3026
+ return {ret};
3027
+ }
3028
+ }
3029
+ // todo check return
3030
+ return {false};
3031
+ }
3032
+ );
3033
+ } else if (methodName == "isSync") {
3034
+ return jsi::Function::createFromHostFunction(runtime,
3035
+ jsi::PropNameID::forAscii(runtime, methodName),
3036
+ 1,
3037
+ [this](jsi::Runtime &runtime,
3038
+ const jsi::Value &thisValue,
3039
+ const jsi::Value *arguments,
3040
+ size_t count) -> jsi::Value {
3041
+ if (count > 0) {
3042
+ auto sync = getHostObject<WebGLSyncImpl>(
3043
+ runtime, arguments[0]);
3044
+ if (sync != nullptr) {
3045
+ auto ret = canvas_native_webgl2_is_sync(
3046
+ sync->GetSync(),
3047
+ this->GetState());
3048
+ return {ret};
3049
+ }
3050
+ }
3051
+ // todo check return
3052
+ return {false};
3053
+ }
3054
+ );
3055
+ } else if (methodName == "isTransformFeedback") {
3056
+ return jsi::Function::createFromHostFunction(runtime,
3057
+ jsi::PropNameID::forAscii(runtime, methodName),
3058
+ 1,
3059
+ [this](jsi::Runtime &runtime,
3060
+ const jsi::Value &thisValue,
3061
+ const jsi::Value *arguments,
3062
+ size_t count) -> jsi::Value {
3063
+ if (count > 0) {
3064
+ auto transformFeedback = getHostObject<WebGLTransformFeedback>(
3065
+ runtime, arguments[0]);
3066
+ if (transformFeedback != nullptr) {
3067
+ auto ret = canvas_native_webgl2_is_transform_feedback(
3068
+ transformFeedback->GetFeedback(),
3069
+ this->GetState());
3070
+ return {ret};
3071
+ }
3072
+ }
3073
+ // todo check return
3074
+ return {false};
3075
+ }
3076
+ );
3077
+ } else if (methodName == "isVertexArray") {
3078
+ return jsi::Function::createFromHostFunction(runtime,
3079
+ jsi::PropNameID::forAscii(runtime, methodName),
3080
+ 3,
3081
+ [this](jsi::Runtime &runtime,
3082
+ const jsi::Value &thisValue,
3083
+ const jsi::Value *arguments,
3084
+ size_t count) -> jsi::Value {
3085
+ if (count > 0) {
3086
+ auto vertexArray = getHostObject<WebGLVertexArrayObject>(
3087
+ runtime, arguments[0]);
3088
+ if (vertexArray != nullptr) {
3089
+ auto ret = canvas_native_webgl2_is_vertex_array(
3090
+ vertexArray->GetVertexArrayObject(),
3091
+ this->GetState());
3092
+ return {ret};
3093
+ }
3094
+ }
3095
+ // todo check return
3096
+ return {false};
3097
+
3098
+
3099
+ }
3100
+ );
3101
+ } else if (methodName == "pauseTransformFeedback") {
3102
+ return jsi::Function::createFromHostFunction(runtime,
3103
+ jsi::PropNameID::forAscii(runtime, methodName),
3104
+ 0,
3105
+ [this](jsi::Runtime &runtime,
3106
+ const jsi::Value &thisValue,
3107
+ const jsi::Value *arguments,
3108
+ size_t count) -> jsi::Value {
3109
+
3110
+ canvas_native_webgl2_pause_transform_feedback(
3111
+ this->GetState());
3112
+
3113
+ return jsi::Value::undefined();
3114
+ }
3115
+ );
3116
+ } else if (methodName == "readBuffer") {
3117
+ return jsi::Function::createFromHostFunction(runtime,
3118
+ jsi::PropNameID::forAscii(runtime, methodName),
3119
+ 1,
3120
+ [this](jsi::Runtime &runtime,
3121
+ const jsi::Value &thisValue,
3122
+ const jsi::Value *arguments,
3123
+ size_t count) -> jsi::Value {
3124
+ if (count > 0) {
3125
+ auto src = (uint32_t) arguments[0].asNumber();
3126
+ canvas_native_webgl2_read_buffer(
3127
+ src,
3128
+ this->GetState()
3129
+ );
3130
+ }
3131
+
3132
+ return jsi::Value::undefined();
3133
+ }
3134
+ );
3135
+ } else if (methodName == "renderbufferStorageMultisample") {
3136
+ return jsi::Function::createFromHostFunction(runtime,
3137
+ jsi::PropNameID::forAscii(runtime, methodName),
3138
+ 5,
3139
+ [this](jsi::Runtime &runtime,
3140
+ const jsi::Value &thisValue,
3141
+ const jsi::Value *arguments,
3142
+ size_t count) -> jsi::Value {
3143
+
3144
+ if (count > 4) {
3145
+ auto target = (uint32_t) arguments[0].asNumber();
3146
+ auto samples = (int32_t) arguments[1].asNumber();
3147
+ auto internalFormat = (uint32_t) arguments[2].asNumber();
3148
+ auto width = (int32_t) arguments[3].asNumber();
3149
+ auto height = (int32_t) arguments[4].asNumber();
3150
+ canvas_native_webgl2_renderbuffer_storage_multisample(
3151
+ target,
3152
+ samples,
3153
+ internalFormat,
3154
+ width,
3155
+ height,
3156
+ this->GetState()
3157
+ );
3158
+ }
3159
+
3160
+ return jsi::Value::undefined();
3161
+ }
3162
+ );
3163
+ } else if (methodName == "resumeTransformFeedback") {
3164
+ return jsi::Function::createFromHostFunction(runtime,
3165
+ jsi::PropNameID::forAscii(runtime, methodName),
3166
+ 0,
3167
+ [this](jsi::Runtime &runtime,
3168
+ const jsi::Value &thisValue,
3169
+ const jsi::Value *arguments,
3170
+ size_t count) -> jsi::Value {
3171
+ canvas_native_webgl2_resume_transform_feedback(
3172
+ this->GetState());
3173
+ return jsi::Value::undefined();
3174
+ }
3175
+ );
3176
+ } else if (methodName == "samplerParameterf") {
3177
+ return jsi::Function::createFromHostFunction(runtime,
3178
+ jsi::PropNameID::forAscii(runtime, methodName),
3179
+ 3,
3180
+ [this](jsi::Runtime &runtime,
3181
+ const jsi::Value &thisValue,
3182
+ const jsi::Value *arguments,
3183
+ size_t count) -> jsi::Value {
3184
+
3185
+ if (count > 2) {
3186
+ auto sampler = getHostObject<WebGLSampler>(
3187
+ runtime, arguments[0]);
3188
+ auto pname = (uint32_t) arguments[1].asNumber();
3189
+ auto param = arguments[2].asNumber();
3190
+ if (sampler != nullptr) {
3191
+ canvas_native_webgl2_sampler_parameterf(
3192
+ sampler->GetSampler(),
3193
+ pname,
3194
+ static_cast<float>(param),
3195
+ this->GetState());
3196
+ }
3197
+ }
3198
+
3199
+ return jsi::Value::undefined();
3200
+ }
3201
+ );
3202
+ } else if (methodName == "samplerParameteri") {
3203
+ return jsi::Function::createFromHostFunction(runtime,
3204
+ jsi::PropNameID::forAscii(runtime, methodName),
3205
+ 3,
3206
+ [this](jsi::Runtime &runtime,
3207
+ const jsi::Value &thisValue,
3208
+ const jsi::Value *arguments,
3209
+ size_t count) -> jsi::Value {
3210
+
3211
+ if (count > 2) {
3212
+ auto sampler = getHostObject<WebGLSampler>(
3213
+ runtime, arguments[0]);
3214
+ auto pname = (uint32_t) arguments[1].asNumber();
3215
+ auto param = (int32_t) arguments[2].asNumber();
3216
+ if (sampler != nullptr) {
3217
+ canvas_native_webgl2_sampler_parameteri(
3218
+ sampler->GetSampler(),
3219
+ pname,
3220
+ param,
3221
+ this->GetState());
3222
+ }
3223
+ }
3224
+
3225
+ return jsi::Value::undefined();
3226
+ }
3227
+ );
3228
+ } else if (methodName == "texImage3D") {
3229
+ return jsi::Function::createFromHostFunction(runtime,
3230
+ jsi::PropNameID::forAscii(runtime, methodName),
3231
+ 3,
3232
+ [this](jsi::Runtime &runtime,
3233
+ const jsi::Value &thisValue,
3234
+ const jsi::Value *arguments,
3235
+ size_t count) -> jsi::Value {
3236
+
3237
+ if (count == 10) {
3238
+ auto target = (int32_t) arguments[0].asNumber();
3239
+ auto level = (int32_t) arguments[1].asNumber();
3240
+ auto internalformat = (int32_t) arguments[2].asNumber();
3241
+ auto width = (int32_t) arguments[3].asNumber();
3242
+ auto height = (int32_t) arguments[4].asNumber();
3243
+ auto depth = (int32_t) arguments[5].asNumber();
3244
+ auto border = (int32_t) arguments[6].asNumber();
3245
+ auto format = (int32_t) arguments[7].asNumber();
3246
+ auto type = (uint32_t) arguments[8].asNumber();
3247
+
3248
+
3249
+ if (arguments[9].isNumber()) {
3250
+ auto imageOrPixelsOrOffset = arguments[9].asNumber();
3251
+ canvas_native_webgl2_tex_image3d_none(
3252
+ target,
3253
+ level,
3254
+ internalformat,
3255
+ width,
3256
+ height,
3257
+ depth,
3258
+ border,
3259
+ format,
3260
+ type,
3261
+ static_cast<ssize_t>(imageOrPixelsOrOffset),
3262
+ this->GetState()
3263
+ );
3264
+ return jsi::Value::undefined();
3265
+ }
3266
+
3267
+ if (arguments[9].isObject()) {
3268
+ auto imageOrPixelsOrOffsetObject = arguments[9].asObject(
3269
+ runtime);
3270
+
3271
+ if (imageOrPixelsOrOffsetObject.isTypedArray(
3272
+ runtime)) {
3273
+ auto buf = imageOrPixelsOrOffsetObject.getTypedArray(
3274
+ runtime);
3275
+ auto slice = GetTypedArrayData<const uint8_t>(
3276
+ runtime, buf);
3277
+
3278
+
3279
+ canvas_native_webgl2_tex_image3d(
3280
+ target,
3281
+ level,
3282
+ internalformat,
3283
+ width,
3284
+ height,
3285
+ depth,
3286
+ border,
3287
+ format,
3288
+ type,
3289
+ slice,
3290
+ this->GetState()
3291
+ );
3292
+ return jsi::Value::undefined();
3293
+ }
3294
+
3295
+ try {
3296
+ auto image_asset = getHostObject<ImageAssetImpl>(
3297
+ runtime, arguments[9]);
3298
+ if (image_asset != nullptr) {
3299
+ canvas_native_webgl2_tex_image3d_asset(
3300
+ target,
3301
+ level,
3302
+ internalformat,
3303
+ width,
3304
+ height,
3305
+ depth,
3306
+ border,
3307
+ format,
3308
+ type,
3309
+ image_asset->GetImageAsset(),
3310
+ this->GetState()
3311
+ );
3312
+
3313
+ return jsi::Value::undefined();
3314
+ }
3315
+ } catch (...) {}
3316
+
3317
+ try {
3318
+ auto image_bitmap = getHostObject<ImageBitmapImpl>(
3319
+ runtime, arguments[9]);
3320
+ if (image_bitmap != nullptr) {
3321
+ canvas_native_webgl2_tex_image3d_asset(
3322
+ target,
3323
+ level,
3324
+ internalformat,
3325
+ width,
3326
+ height,
3327
+ depth,
3328
+ border,
3329
+ format,
3330
+ type,
3331
+ image_bitmap->GetImageAsset(),
3332
+ this->GetState()
3333
+ );
3334
+
3335
+ return jsi::Value::undefined();
3336
+ }
3337
+ } catch (...) {}
3338
+
3339
+
3340
+ }
3341
+ } else if (count > 10) {
3342
+
3343
+ auto target = (int32_t) arguments[0].asNumber();
3344
+ auto level = (int32_t) arguments[1].asNumber();
3345
+ auto internalformat = (int32_t) arguments[2].asNumber();
3346
+ auto width = (int32_t) arguments[3].asNumber();
3347
+ auto height = (int32_t) arguments[4].asNumber();
3348
+ auto depth = (int32_t) arguments[5].asNumber();
3349
+ auto border = (int32_t) arguments[6].asNumber();
3350
+ auto format = (int32_t) arguments[7].asNumber();
3351
+ auto type = (uint32_t) arguments[8].asNumber();
3352
+ if (arguments[9].isObject()) {
3353
+ auto imageOrPixelsOrOffset = arguments[9].asObject(
3354
+ runtime);
3355
+ size_t srcOffsetValue = 0;
3356
+ if (arguments[9].isNumber()) {
3357
+ srcOffsetValue = static_cast<size_t>(arguments[9].asNumber());
3358
+ }
3359
+
3360
+ if (imageOrPixelsOrOffset.isTypedArray(
3361
+ runtime)) {
3362
+ auto buf = imageOrPixelsOrOffset.getTypedArray(
3363
+ runtime);
3364
+ auto size = buf.size(runtime);
3365
+ auto array = GetTypedArrayData<const uint8_t>(
3366
+ runtime, buf);
3367
+
3368
+ srcOffsetValue =
3369
+ srcOffsetValue * size;
3370
+ if (srcOffsetValue >
3371
+ size) {
3372
+ return jsi::Value::undefined();
3373
+ }
3374
+
3375
+ canvas_native_webgl2_tex_image3d_offset(
3376
+ target,
3377
+ level,
3378
+ internalformat,
3379
+ width,
3380
+ height,
3381
+ depth,
3382
+ border,
3383
+ format,
3384
+ type,
3385
+ array,
3386
+ srcOffsetValue,
3387
+ this->GetState()
3388
+ );
3389
+ return jsi::Value::undefined();
3390
+ }
3391
+ }
3392
+
3393
+ }
3394
+
3395
+ return jsi::Value::undefined();
3396
+ }
3397
+ );
3398
+ } else if (methodName == "texStorage2D") {
3399
+ return jsi::Function::createFromHostFunction(runtime,
3400
+ jsi::PropNameID::forAscii(runtime, methodName),
3401
+ 5,
3402
+ [this](jsi::Runtime &runtime,
3403
+ const jsi::Value &thisValue,
3404
+ const jsi::Value *arguments,
3405
+ size_t count) -> jsi::Value {
3406
+ if (count > 4) {
3407
+ auto target = (uint32_t) arguments[0].asNumber();
3408
+ auto levels = (int32_t) arguments[1].asNumber();
3409
+ auto internalFormat = (uint32_t) arguments[2].asNumber();
3410
+ auto width = (int32_t) arguments[3].asNumber();
3411
+ auto height = (int32_t) arguments[4].asNumber();
3412
+ canvas_native_webgl2_tex_storage2d(
3413
+ target,
3414
+ levels,
3415
+ internalFormat,
3416
+ width,
3417
+ height,
3418
+ this->GetState()
3419
+ );
3420
+ }
3421
+
3422
+ return jsi::Value::undefined();
3423
+
3424
+ }
3425
+ );
3426
+ } else if (methodName == "texStorage3D") {
3427
+ return jsi::Function::createFromHostFunction(runtime,
3428
+ jsi::PropNameID::forAscii(runtime, methodName),
3429
+ 6,
3430
+ [this](jsi::Runtime &runtime,
3431
+ const jsi::Value &thisValue,
3432
+ const jsi::Value *arguments,
3433
+ size_t count) -> jsi::Value {
3434
+
3435
+ if (count > 5) {
3436
+ auto target = (uint32_t) arguments[0].asNumber();
3437
+ auto levels = (int32_t) arguments[1].asNumber();
3438
+ auto internalFormat = (uint32_t) arguments[2].asNumber();
3439
+ auto width = (int32_t) arguments[3].asNumber();
3440
+ auto height = (int32_t) arguments[4].asNumber();
3441
+ auto depth = (int32_t) arguments[5].asNumber();
3442
+ canvas_native_webgl2_tex_storage3d(
3443
+ target,
3444
+ levels,
3445
+ internalFormat,
3446
+ width,
3447
+ height,
3448
+ depth,
3449
+ this->GetState()
3450
+ );
3451
+ }
3452
+
3453
+ return jsi::Value::undefined();
3454
+
3455
+ }
3456
+ );
3457
+ } else if (methodName == "texSubImage3D") {
3458
+ return jsi::Function::createFromHostFunction(runtime,
3459
+ jsi::PropNameID::forAscii(runtime, methodName),
3460
+ 12,
3461
+ [this](jsi::Runtime &runtime,
3462
+ const jsi::Value &thisValue,
3463
+ const jsi::Value *arguments,
3464
+ size_t count) -> jsi::Value {
3465
+ if (count == 11) {
3466
+ auto target = (uint32_t) arguments[0].asNumber();
3467
+ auto level = (int32_t) arguments[1].asNumber();
3468
+ auto xoffset = (int32_t) arguments[2].asNumber();
3469
+ auto yoffset = (int32_t) arguments[3].asNumber();
3470
+ auto zoffset = (int32_t) arguments[4].asNumber();
3471
+ auto width = (int32_t) arguments[5].asNumber();
3472
+ auto height = (int32_t) arguments[6].asNumber();
3473
+ auto depth = (int32_t) arguments[7].asNumber();
3474
+ auto format = (uint32_t) arguments[8].asNumber();
3475
+ auto type = (int32_t) arguments[9].asNumber();
3476
+
3477
+ if (arguments[10].isNumber()) {
3478
+ auto imageOrPixelsOrOffset = arguments[10].asNumber();
3479
+ canvas_native_webgl2_tex_sub_image3d_none(
3480
+ target,
3481
+ level,
3482
+ xoffset,
3483
+ yoffset,
3484
+ zoffset,
3485
+ width,
3486
+ height,
3487
+ depth,
3488
+ format,
3489
+ type,
3490
+ static_cast<ssize_t>(imageOrPixelsOrOffset),
3491
+ this->GetState()
3492
+ );
3493
+ return jsi::Value::undefined();
3494
+ }
3495
+
3496
+ if (arguments[10].isObject()) {
3497
+ auto imageOrPixelsOrOffsetObject = arguments[10].asObject(
3498
+ runtime);
3499
+ if (imageOrPixelsOrOffsetObject.isTypedArray(
3500
+ runtime)) {
3501
+ auto array = imageOrPixelsOrOffsetObject.getTypedArray(
3502
+ runtime);
3503
+ auto slice = GetTypedArrayData<const uint8_t>(
3504
+ runtime, array);
3505
+
3506
+ canvas_native_webgl2_tex_sub_image3d(
3507
+ target,
3508
+ level,
3509
+ xoffset,
3510
+ yoffset,
3511
+ zoffset,
3512
+ width,
3513
+ height,
3514
+ depth,
3515
+ format,
3516
+ type,
3517
+ slice,
3518
+ this->GetState()
3519
+ );
3520
+
3521
+ return jsi::Value::undefined();
3522
+ }
3523
+
3524
+ auto asset = getHostObject<ImageAssetImpl>(
3525
+ runtime, arguments[10]);
3526
+ if (asset != nullptr) {
3527
+
3528
+ canvas_native_webgl2_tex_sub_image3d_asset(
3529
+ target,
3530
+ level,
3531
+ xoffset,
3532
+ yoffset,
3533
+ zoffset,
3534
+ width,
3535
+ height,
3536
+ depth,
3537
+ format,
3538
+ type,
3539
+ asset->GetImageAsset(),
3540
+ this->GetState()
3541
+ );
3542
+ }
3543
+
3544
+ }
3545
+
3546
+ } else if (count > 11) {
3547
+ auto target = (uint32_t) arguments[0].asNumber();
3548
+ auto level = (int32_t) arguments[1].asNumber();
3549
+ auto xoffset = (int32_t) arguments[2].asNumber();
3550
+ auto yoffset = (int32_t) arguments[3].asNumber();
3551
+ auto zoffset = (int32_t) arguments[4].asNumber();
3552
+ auto width = (int32_t) arguments[5].asNumber();
3553
+ auto height = (int32_t) arguments[6].asNumber();
3554
+ auto depth = (int32_t) arguments[7].asNumber();
3555
+ auto format = (uint32_t) arguments[8].asNumber();
3556
+ auto type = (uint32_t) arguments[9].asNumber();
3557
+
3558
+ size_t srcOffsetValue = 0;
3559
+ if (arguments[11].isNumber()) {
3560
+ srcOffsetValue = static_cast<size_t>(arguments[11].asNumber());
3561
+ }
3562
+
3563
+ if (arguments[10].isObject()) {
3564
+ auto imageOrPixelsOrOffsetObject = arguments[10].asObject(
3565
+ runtime);
3566
+
3567
+ if (imageOrPixelsOrOffsetObject.isTypedArray(
3568
+ runtime)) {
3569
+ auto array = imageOrPixelsOrOffsetObject.getTypedArray(
3570
+ runtime);
3571
+ auto buf = GetTypedArrayData<uint8_t>(
3572
+ runtime, array);
3573
+ auto size = array.size(
3574
+ runtime);
3575
+ srcOffsetValue =
3576
+ srcOffsetValue * size;
3577
+ if (srcOffsetValue > size) {
3578
+ return jsi::Value::undefined();
3579
+ }
3580
+
3581
+ rust::Slice<const uint8_t> slice(
3582
+ buf.data(),
3583
+ buf.size());
3584
+
3585
+ canvas_native_webgl2_tex_sub_image3d_offset(
3586
+ target,
3587
+ level,
3588
+ xoffset,
3589
+ yoffset,
3590
+ zoffset,
3591
+ width,
3592
+ height,
3593
+ depth,
3594
+ format,
3595
+ type,
3596
+ slice,
3597
+ srcOffsetValue,
3598
+ this->GetState()
3599
+ );
3600
+ }
3601
+
3602
+ }
3603
+ }
3604
+
3605
+ return jsi::Value::undefined();
3606
+
3607
+ }
3608
+ );
3609
+ } else if (methodName == "transformFeedbackVaryings") {
3610
+ return jsi::Function::createFromHostFunction(runtime,
3611
+ jsi::PropNameID::forAscii(runtime, methodName),
3612
+ 3,
3613
+ [this](jsi::Runtime &runtime,
3614
+ const jsi::Value &thisValue,
3615
+ const jsi::Value *arguments,
3616
+ size_t count) -> jsi::Value {
3617
+ if (count > 2 && arguments[1].isObject()) {
3618
+ auto program = getHostObject<WebGLProgram>(
3619
+ runtime, arguments[0]);
3620
+ auto varyingsObject = arguments[1].asObject(
3621
+ runtime);
3622
+ auto bufferMode = (uint32_t) arguments[2].asNumber();
3623
+
3624
+ if (program != nullptr &&
3625
+ varyingsObject.isArray(runtime)) {
3626
+ auto varyings = varyingsObject.getArray(
3627
+ runtime);
3628
+ auto len = varyings.size(runtime);
3629
+ rust::Vec<rust::Str> buf;
3630
+ buf.reserve(len);
3631
+ for (int j = 0; j < len; ++j) {
3632
+ auto name = varyings.getValueAtIndex(
3633
+ runtime, j).asString(
3634
+ runtime).utf8(runtime);
3635
+ rust::Str val(name.data(),
3636
+ name.size());
3637
+ buf.emplace_back(val);
3638
+ }
3639
+
3640
+ rust::Slice<const rust::Str> slice(
3641
+ buf.data(), buf.size());
3642
+
3643
+ canvas_native_webgl2_transform_feedback_varyings(
3644
+ program->GetProgram(),
3645
+ slice,
3646
+ bufferMode,
3647
+ this->GetState()
3648
+ );
3649
+ }
3650
+ }
3651
+ return jsi::Value::undefined();
3652
+ }
3653
+ );
3654
+ } else if (methodName == "uniform1ui") {
3655
+ return jsi::Function::createFromHostFunction(runtime,
3656
+ jsi::PropNameID::forAscii(runtime, methodName),
3657
+ 2,
3658
+ [this](jsi::Runtime &runtime,
3659
+ const jsi::Value &thisValue,
3660
+ const jsi::Value *arguments,
3661
+ size_t count) -> jsi::Value {
3662
+
3663
+ if (count > 1 && arguments[1].isNumber()) {
3664
+
3665
+ auto location = getHostObject<WebGLUniformLocation>(
3666
+ runtime, arguments[0]);
3667
+ auto v0 = (uint32_t) arguments[1].asNumber();
3668
+
3669
+ if (location != nullptr) {
3670
+ canvas_native_webgl2_uniform1ui(
3671
+ location->GetUniformLocation(),
3672
+ v0,
3673
+ this->GetState()
3674
+ );
3675
+ }
3676
+ }
3677
+ return jsi::Value::undefined();
3678
+ }
3679
+ );
3680
+ } else if (methodName == "uniform1uiv") {
3681
+ return jsi::Function::createFromHostFunction(runtime,
3682
+ jsi::PropNameID::forAscii(runtime, methodName),
3683
+ 2,
3684
+ [this](jsi::Runtime &runtime,
3685
+ const jsi::Value &thisValue,
3686
+ const jsi::Value *arguments,
3687
+ size_t count) -> jsi::Value {
3688
+
3689
+ if (count > 1 && arguments[1].isObject()) {
3690
+ auto location = getHostObject<WebGLUniformLocation>(
3691
+ runtime, arguments[0]);
3692
+ auto data = arguments[1].asObject(
3693
+ runtime);
3694
+ if (location != nullptr &&
3695
+ data.isUint32Array(runtime)) {
3696
+ auto array = data.getTypedArray(
3697
+ runtime);
3698
+ auto slice = GetTypedArrayData<const uint32_t>(
3699
+ runtime, array);
3700
+ canvas_native_webgl2_uniform1uiv(
3701
+ location->GetUniformLocation(),
3702
+ slice,
3703
+ this->GetState()
3704
+ );
3705
+ } else {
3706
+ rust::Vec<uint32_t> buf;
3707
+ auto array = data.getArray(
3708
+ runtime);
3709
+ auto len = array.size(runtime);
3710
+ buf.reserve(len);
3711
+ for (int i = 0; i < len; i++) {
3712
+ auto item = (uint32_t) array.getValueAtIndex(
3713
+ runtime, i).asNumber();
3714
+ buf.push_back(item);
3715
+ }
3716
+ rust::Slice<const uint32_t> slice(
3717
+ buf.data(), buf.size());
3718
+ canvas_native_webgl2_uniform1uiv(
3719
+ location->GetUniformLocation(),
3720
+ slice,
3721
+ this->GetState()
3722
+ );
3723
+ }
3724
+
3725
+
3726
+ }
3727
+ return jsi::Value::undefined();
3728
+
3729
+ }
3730
+ );
3731
+ } else if (methodName == "uniform2ui") {
3732
+ return jsi::Function::createFromHostFunction(runtime,
3733
+ jsi::PropNameID::forAscii(runtime, methodName),
3734
+ 3,
3735
+ [this](jsi::Runtime &runtime,
3736
+ const jsi::Value &thisValue,
3737
+ const jsi::Value *arguments,
3738
+ size_t count) -> jsi::Value {
3739
+
3740
+ if (count > 2) {
3741
+ auto location = getHostObject<WebGLUniformLocation>(
3742
+ runtime, arguments[0]);
3743
+ auto v0 = (uint32_t) arguments[1].asNumber();
3744
+ auto v1 = (uint32_t) arguments[2].asNumber();
3745
+
3746
+ if (location != nullptr) {
3747
+ canvas_native_webgl2_uniform2ui(
3748
+ location->GetUniformLocation(),
3749
+ v0,
3750
+ v1,
3751
+ this->GetState()
3752
+ );
3753
+ }
3754
+
3755
+
3756
+ }
3757
+ return jsi::Value::undefined();
3758
+ }
3759
+ );
3760
+ } else if (methodName == "uniform2uiv") {
3761
+ return jsi::Function::createFromHostFunction(runtime,
3762
+ jsi::PropNameID::forAscii(runtime, methodName),
3763
+ 1,
3764
+ [this](jsi::Runtime &runtime,
3765
+ const jsi::Value &thisValue,
3766
+ const jsi::Value *arguments,
3767
+ size_t count) -> jsi::Value {
3768
+
3769
+ if (count > 1 && arguments[1].isObject()) {
3770
+
3771
+ auto location = getHostObject<WebGLUniformLocation>(
3772
+ runtime, arguments[0]);
3773
+ auto data = arguments[1].asObject(
3774
+ runtime);
3775
+
3776
+ if (data.isUint32Array(runtime)) {
3777
+ auto array = data.getTypedArray(
3778
+ runtime);
3779
+ auto slice = GetTypedArrayData<const uint32_t>(
3780
+ runtime, array);
3781
+ canvas_native_webgl2_uniform2uiv(
3782
+ location->GetUniformLocation(),
3783
+ slice,
3784
+ this->GetState()
3785
+ );
3786
+ } else {
3787
+ rust::Vec<uint32_t> buf;
3788
+ auto array = data.getArray(
3789
+ runtime);
3790
+ auto len = array.size(runtime);
3791
+ buf.reserve(len);
3792
+ for (int i = 0; i < len; i++) {
3793
+ auto item = (uint32_t) array.getValueAtIndex(
3794
+ runtime, i).asNumber();
3795
+ buf.push_back(item);
3796
+ }
3797
+
3798
+ rust::Slice<const uint32_t> slice(
3799
+ buf.data(), buf.size());
3800
+ canvas_native_webgl2_uniform2uiv(
3801
+ location->GetUniformLocation(),
3802
+ slice,
3803
+ this->GetState()
3804
+ );
3805
+ }
3806
+ }
3807
+ return jsi::Value::undefined();
3808
+
3809
+ }
3810
+ );
3811
+ } else if (methodName == "uniform3ui") {
3812
+ return jsi::Function::createFromHostFunction(runtime,
3813
+ jsi::PropNameID::forAscii(runtime, methodName),
3814
+ 4,
3815
+ [this](jsi::Runtime &runtime,
3816
+ const jsi::Value &thisValue,
3817
+ const jsi::Value *arguments,
3818
+ size_t count) -> jsi::Value {
3819
+ if (count > 3) {
3820
+ auto location = getHostObject<WebGLUniformLocation>(
3821
+ runtime, arguments[0]);
3822
+ auto v0 = (uint32_t) arguments[1].asNumber();
3823
+ auto v1 = (uint32_t) arguments[2].asNumber();
3824
+ auto v2 = (uint32_t) arguments[3].asNumber();
3825
+ if (location != nullptr) {
3826
+ canvas_native_webgl2_uniform3ui(
3827
+ location->GetUniformLocation(),
3828
+ v0,
3829
+ v1,
3830
+ v2,
3831
+ this->GetState()
3832
+ );
3833
+ }
3834
+ }
3835
+
3836
+ return jsi::Value::undefined();
3837
+ }
3838
+ );
3839
+ } else if (methodName == "uniform3uiv") {
3840
+ return jsi::Function::createFromHostFunction(runtime,
3841
+ jsi::PropNameID::forAscii(runtime, methodName),
3842
+ 2,
3843
+ [this](jsi::Runtime &runtime,
3844
+ const jsi::Value &thisValue,
3845
+ const jsi::Value *arguments,
3846
+ size_t count) -> jsi::Value {
3847
+
3848
+ if (count > 1 && arguments[1].isObject()) {
3849
+ auto location = getHostObject<WebGLUniformLocation>(
3850
+ runtime, arguments[0]);
3851
+ auto data = arguments[1].asObject(
3852
+ runtime);
3853
+
3854
+ if (data.isUint32Array(runtime)) {
3855
+ auto array = data.getTypedArray(
3856
+ runtime);
3857
+ auto slice = GetTypedArrayData<const uint32_t>(
3858
+ runtime, array);
3859
+ canvas_native_webgl2_uniform3uiv(
3860
+ location->GetUniformLocation(),
3861
+ slice,
3862
+ this->GetState()
3863
+ );
3864
+ } else {
3865
+ rust::Vec<uint32_t> buf;
3866
+ auto array = data.getArray(
3867
+ runtime);
3868
+ auto len = array.size(runtime);
3869
+ buf.reserve(len);
3870
+ for (int i = 0; i < len; i++) {
3871
+ auto item = array.getValueAtIndex(
3872
+ runtime, i).asNumber();
3873
+ buf.push_back((uint32_t) item);
3874
+ }
3875
+
3876
+ rust::Slice<const uint32_t> slice(
3877
+ buf.data(), buf.size());
3878
+
3879
+ canvas_native_webgl2_uniform3uiv(
3880
+ location->GetUniformLocation(),
3881
+ slice,
3882
+ this->GetState()
3883
+ );
3884
+ }
3885
+ }
3886
+ return jsi::Value::undefined();
3887
+
3888
+ }
3889
+ );
3890
+ } else if (methodName == "uniform4ui") {
3891
+ return jsi::Function::createFromHostFunction(runtime,
3892
+ jsi::PropNameID::forAscii(runtime, methodName),
3893
+ 5,
3894
+ [this](jsi::Runtime &runtime,
3895
+ const jsi::Value &thisValue,
3896
+ const jsi::Value *arguments,
3897
+ size_t count) -> jsi::Value {
3898
+
3899
+ if (count > 4) {
3900
+
3901
+ auto location = getHostObject<WebGLUniformLocation>(
3902
+ runtime, arguments[0]);
3903
+ auto v0 = (uint32_t) arguments[1].asNumber();
3904
+ auto v1 = (uint32_t) arguments[2].asNumber();
3905
+ auto v2 = (uint32_t) arguments[3].asNumber();
3906
+ auto v3 = (uint32_t) arguments[4].asNumber();
3907
+ if (location != nullptr) {
3908
+ canvas_native_webgl2_uniform4ui(
3909
+ location->GetUniformLocation(),
3910
+ v0,
3911
+ v1,
3912
+ v2,
3913
+ v3,
3914
+ this->GetState()
3915
+ );
3916
+ }
3917
+ }
3918
+
3919
+ return jsi::Value::undefined();
3920
+ }
3921
+ );
3922
+ } else if (methodName == "uniform4uiv") {
3923
+ return jsi::Function::createFromHostFunction(runtime,
3924
+ jsi::PropNameID::forAscii(runtime, methodName),
3925
+ 2,
3926
+ [this](jsi::Runtime &runtime,
3927
+ const jsi::Value &thisValue,
3928
+ const jsi::Value *arguments,
3929
+ size_t count) -> jsi::Value {
3930
+
3931
+
3932
+ if (count > 1 && arguments[1].isObject()) {
3933
+
3934
+ auto location = getHostObject<WebGLUniformLocation>(
3935
+ runtime, arguments[0]);
3936
+ auto data = arguments[1].asObject(
3937
+ runtime);
3938
+
3939
+ if (data.isUint32Array(runtime)) {
3940
+ auto array = data.getTypedArray(
3941
+ runtime);
3942
+ auto slice = GetTypedArrayData<const uint32_t>(
3943
+ runtime, array);
3944
+ canvas_native_webgl2_uniform4uiv(
3945
+ location->GetUniformLocation(),
3946
+ slice,
3947
+ this->GetState()
3948
+ );
3949
+ } else {
3950
+ rust::Vec<uint32_t> buf;
3951
+ auto array = data.getArray(
3952
+ runtime);
3953
+ auto len = array.size(runtime);
3954
+ buf.reserve(len);
3955
+ for (int i = 0; i < len; i++) {
3956
+ auto item = array.getValueAtIndex(
3957
+ runtime, i).asNumber();
3958
+ buf.push_back((uint32_t) item);
3959
+ }
3960
+
3961
+ rust::Slice<const uint32_t> slice(
3962
+ buf.data(), buf.size());
3963
+
3964
+ canvas_native_webgl2_uniform4uiv(
3965
+ location->GetUniformLocation(),
3966
+ slice,
3967
+ this->GetState()
3968
+ );
3969
+ }
3970
+ }
3971
+
3972
+ return jsi::Value::undefined();
3973
+
3974
+ }
3975
+ );
3976
+ } else if (methodName == "uniformBlockBinding") {
3977
+ return jsi::Function::createFromHostFunction(runtime,
3978
+ jsi::PropNameID::forAscii(runtime, methodName),
3979
+ 3,
3980
+ [this](jsi::Runtime &runtime,
3981
+ const jsi::Value &thisValue,
3982
+ const jsi::Value *arguments,
3983
+ size_t count) -> jsi::Value {
3984
+ if (count > 2) {
3985
+
3986
+ auto program = getHostObject<WebGLProgram>(
3987
+ runtime, arguments[0]);
3988
+ auto uniformBlockIndex = arguments[1].asNumber();
3989
+ auto uniformBlockBinding = arguments[2].asNumber();
3990
+
3991
+ if (program != nullptr) {
3992
+ canvas_native_webgl2_uniform_block_binding(
3993
+ program->GetProgram(),
3994
+ (uint32_t) uniformBlockIndex,
3995
+ (uint32_t) uniformBlockBinding,
3996
+ this->GetState()
3997
+ );
3998
+ }
3999
+
4000
+ }
4001
+ return jsi::Value::undefined();
4002
+ }
4003
+ );
4004
+ } else if (methodName == "uniformMatrix2x3fv") {
4005
+ return jsi::Function::createFromHostFunction(runtime,
4006
+ jsi::PropNameID::forAscii(runtime, methodName),
4007
+ 3,
4008
+ [this](jsi::Runtime &runtime,
4009
+ const jsi::Value &thisValue,
4010
+ const jsi::Value *arguments,
4011
+ size_t count) -> jsi::Value {
4012
+
4013
+ if (count > 2 && arguments[2].isObject()) {
4014
+
4015
+ auto location = getHostObject<WebGLUniformLocation>(
4016
+ runtime, arguments[0]);
4017
+ auto transpose = arguments[1].asBool();
4018
+ auto data = arguments[2].asObject(
4019
+ runtime);
4020
+
4021
+ if (data.isFloat32Array(runtime)) {
4022
+ auto array = data.getTypedArray(
4023
+ runtime);
4024
+ auto slice = GetTypedArrayData<const float>(
4025
+ runtime, array);
4026
+ canvas_native_webgl2_uniform_matrix2x3fv(
4027
+ location->GetUniformLocation(),
4028
+ transpose,
4029
+ slice,
4030
+ this->GetState()
4031
+ );
4032
+ } else if (data.isArray(runtime)) {
4033
+ rust::Vec<float> buf;
4034
+ auto array = data.getArray(
4035
+ runtime);
4036
+ auto len = array.size(runtime);
4037
+ for (int i = 0; i < len; i++) {
4038
+ auto item = array.getValueAtIndex(
4039
+ runtime, i);
4040
+ if (item.isNumber()) {
4041
+ buf.push_back(
4042
+ static_cast<float>(item.asNumber()));
4043
+ } else {
4044
+ buf.push_back(
4045
+ std::nanf(""));
4046
+ }
4047
+ }
4048
+
4049
+ rust::Slice<const float> slice(
4050
+ buf.data(), buf.size());
4051
+
4052
+ canvas_native_webgl2_uniform_matrix2x3fv(
4053
+ location->GetUniformLocation(),
4054
+ transpose,
4055
+ slice,
4056
+ this->GetState()
4057
+ );
4058
+ }
4059
+ }
4060
+ return jsi::Value::undefined();
4061
+
4062
+ }
4063
+ );
4064
+ } else if (methodName == "uniformMatrix2x4fv") {
4065
+ return jsi::Function::createFromHostFunction(runtime,
4066
+ jsi::PropNameID::forAscii(runtime, methodName),
4067
+ 3,
4068
+ [this](jsi::Runtime &runtime,
4069
+ const jsi::Value &thisValue,
4070
+ const jsi::Value *arguments,
4071
+ size_t count) -> jsi::Value {
4072
+
4073
+ if (count > 2 && arguments[2].isObject()) {
4074
+
4075
+ auto location = getHostObject<WebGLUniformLocation>(
4076
+ runtime, arguments[0]);
4077
+ auto transpose = arguments[1].asBool();
4078
+ auto data = arguments[2].asObject(
4079
+ runtime);
4080
+
4081
+ if (data.isFloat32Array(runtime)) {
4082
+ auto array = data.getTypedArray(
4083
+ runtime);
4084
+ auto slice = GetTypedArrayData<const float>(
4085
+ runtime, array);
4086
+ canvas_native_webgl2_uniform_matrix2x4fv(
4087
+ location->GetUniformLocation(),
4088
+ transpose,
4089
+ slice,
4090
+ this->GetState()
4091
+ );
4092
+ } else if (data.isArray(runtime)) {
4093
+ rust::Vec<float> buf;
4094
+ auto array = data.getArray(
4095
+ runtime);
4096
+ auto len = array.size(runtime);
4097
+ for (int i = 0; i < len; i++) {
4098
+ auto item = array.getValueAtIndex(
4099
+ runtime, i);
4100
+ if (item.isNumber()) {
4101
+ buf.push_back(
4102
+ static_cast<float>(item.asNumber()));
4103
+ } else {
4104
+ buf.push_back(
4105
+ std::nanf(""));
4106
+ }
4107
+ }
4108
+ rust::Slice<const float> slice(
4109
+ buf.data(), buf.size());
4110
+
4111
+ canvas_native_webgl2_uniform_matrix2x4fv(
4112
+ location->GetUniformLocation(),
4113
+ transpose,
4114
+ slice,
4115
+ this->GetState()
4116
+ );
4117
+ }
4118
+ }
4119
+
4120
+ return jsi::Value::undefined();
4121
+ }
4122
+ );
4123
+ } else if (methodName == "uniformMatrix3x2fv") {
4124
+ return jsi::Function::createFromHostFunction(runtime,
4125
+ jsi::PropNameID::forAscii(runtime, methodName),
4126
+ 3,
4127
+ [this](jsi::Runtime &runtime,
4128
+ const jsi::Value &thisValue,
4129
+ const jsi::Value *arguments,
4130
+ size_t count) -> jsi::Value {
4131
+
4132
+ if (count > 2 && arguments[2].isObject()) {
4133
+
4134
+ auto location = getHostObject<WebGLUniformLocation>(
4135
+ runtime, arguments[0]);
4136
+ auto transpose = arguments[1].asBool();
4137
+ auto data = arguments[2].asObject(
4138
+ runtime);
4139
+
4140
+ if (data.isFloat32Array(runtime)) {
4141
+ auto array = data.getTypedArray(
4142
+ runtime);
4143
+ auto slice = GetTypedArrayData<const float>(
4144
+ runtime, array);
4145
+ canvas_native_webgl2_uniform_matrix3x2fv(
4146
+ location->GetUniformLocation(),
4147
+ transpose,
4148
+ slice,
4149
+ this->GetState()
4150
+ );
4151
+ } else if (data.isArray(runtime)) {
4152
+ rust::Vec<float> buf;
4153
+ auto array = data.getArray(
4154
+ runtime);
4155
+ auto len = array.size(runtime);
4156
+ for (int i = 0; i < len; i++) {
4157
+ auto item = array.getValueAtIndex(
4158
+ runtime, i);
4159
+ if (item.isNumber()) {
4160
+ buf.push_back(
4161
+ static_cast<float>(item.asNumber()));
4162
+ } else {
4163
+ buf.push_back(
4164
+ std::nanf(""));
4165
+ }
4166
+ }
4167
+
4168
+ rust::Slice<const float> slice(
4169
+ buf.data(), buf.size());
4170
+
4171
+ canvas_native_webgl2_uniform_matrix3x2fv(
4172
+ location->GetUniformLocation(),
4173
+ transpose,
4174
+ slice,
4175
+ this->GetState()
4176
+ );
4177
+ }
4178
+ }
4179
+
4180
+ return jsi::Value::undefined();
4181
+ }
4182
+ );
4183
+ } else if (methodName == "uniformMatrix3x4fv") {
4184
+ return jsi::Function::createFromHostFunction(runtime,
4185
+ jsi::PropNameID::forAscii(runtime, methodName),
4186
+ 3,
4187
+ [this](jsi::Runtime &runtime,
4188
+ const jsi::Value &thisValue,
4189
+ const jsi::Value *arguments,
4190
+ size_t count) -> jsi::Value {
4191
+ if (count > 2 && arguments[2].isObject()) {
4192
+
4193
+ auto location = getHostObject<WebGLUniformLocation>(
4194
+ runtime, arguments[0]);
4195
+ auto transpose = arguments[1].asBool();
4196
+ auto data = arguments[2].asObject(
4197
+ runtime);
4198
+
4199
+ if (data.isFloat32Array(runtime)) {
4200
+ auto array = data.getTypedArray(
4201
+ runtime);
4202
+ auto slice = GetTypedArrayData<const float>(
4203
+ runtime, array);
4204
+ canvas_native_webgl2_uniform_matrix3x4fv(
4205
+ location->GetUniformLocation(),
4206
+ transpose,
4207
+ slice,
4208
+ this->GetState()
4209
+ );
4210
+ } else if (data.isArray(runtime)) {
4211
+ rust::Vec<float> buf;
4212
+ auto array = data.getArray(
4213
+ runtime);
4214
+ auto len = array.size(runtime);
4215
+ for (int i = 0; i < len; i++) {
4216
+ auto item = array.getValueAtIndex(
4217
+ runtime, i);
4218
+ if (item.isNumber()) {
4219
+ buf.push_back(
4220
+ static_cast<float>(item.asNumber()));
4221
+ } else {
4222
+ buf.push_back(
4223
+ std::nanf(""));
4224
+ }
4225
+ }
4226
+
4227
+ rust::Slice<const float> slice(
4228
+ buf.data(), buf.size());
4229
+
4230
+ canvas_native_webgl2_uniform_matrix3x4fv(
4231
+ location->GetUniformLocation(),
4232
+ transpose,
4233
+ slice,
4234
+ this->GetState()
4235
+ );
4236
+ }
4237
+ }
4238
+
4239
+ return jsi::Value::undefined();
4240
+ }
4241
+ );
4242
+ } else if (methodName == "uniformMatrix4x2fv") {
4243
+ return jsi::Function::createFromHostFunction(runtime,
4244
+ jsi::PropNameID::forAscii(runtime, methodName),
4245
+ 3,
4246
+ [this](jsi::Runtime &runtime,
4247
+ const jsi::Value &thisValue,
4248
+ const jsi::Value *arguments,
4249
+ size_t count) -> jsi::Value {
4250
+ if (count > 2 && arguments[2].isObject()) {
4251
+
4252
+ auto location = getHostObject<WebGLUniformLocation>(
4253
+ runtime, arguments[0]);
4254
+ auto transpose = arguments[1].asBool();
4255
+ auto data = arguments[2].asObject(
4256
+ runtime);
4257
+
4258
+ if (data.isFloat32Array(runtime)) {
4259
+ auto array = data.getTypedArray(
4260
+ runtime);
4261
+ auto slice = GetTypedArrayData<const float>(
4262
+ runtime, array);
4263
+ canvas_native_webgl2_uniform_matrix4x2fv(
4264
+ location->GetUniformLocation(),
4265
+ transpose,
4266
+ slice,
4267
+ this->GetState()
4268
+ );
4269
+ } else if (data.isArray(runtime)) {
4270
+ rust::Vec<float> buf;
4271
+ auto array = data.getArray(
4272
+ runtime);
4273
+ auto len = array.size(runtime);
4274
+ for (int i = 0; i < len; i++) {
4275
+ auto item = array.getValueAtIndex(
4276
+ runtime, i);
4277
+ if (item.isNumber()) {
4278
+ buf.push_back(
4279
+ static_cast<float>(item.asNumber()));
4280
+ } else {
4281
+ buf.push_back(
4282
+ std::nanf(""));
4283
+ }
4284
+ }
4285
+
4286
+ rust::Slice<const float> slice(
4287
+ buf.data(), buf.size());
4288
+
4289
+ canvas_native_webgl2_uniform_matrix4x2fv(
4290
+ location->GetUniformLocation(),
4291
+ transpose,
4292
+ slice,
4293
+ this->GetState()
4294
+ );
4295
+ }
4296
+ }
4297
+ return jsi::Value::undefined();
4298
+
4299
+ }
4300
+ );
4301
+ } else if (methodName == "uniformMatrix4x3fv") {
4302
+ return jsi::Function::createFromHostFunction(runtime,
4303
+ jsi::PropNameID::forAscii(runtime, methodName),
4304
+ 3,
4305
+ [this](jsi::Runtime &runtime,
4306
+ const jsi::Value &thisValue,
4307
+ const jsi::Value *arguments,
4308
+ size_t count) -> jsi::Value {
4309
+ if (count > 2 && arguments[2].isObject()) {
4310
+
4311
+ auto location = getHostObject<WebGLUniformLocation>(
4312
+ runtime, arguments[0]);
4313
+ auto transpose = arguments[1].asBool();
4314
+ auto data = arguments[2].asObject(
4315
+ runtime);
4316
+
4317
+ if (data.isFloat32Array(runtime)) {
4318
+ auto array = data.getTypedArray(
4319
+ runtime);
4320
+ auto slice = GetTypedArrayData<const float>(
4321
+ runtime, array);
4322
+ canvas_native_webgl2_uniform_matrix4x3fv(
4323
+ location->GetUniformLocation(),
4324
+ transpose,
4325
+ slice,
4326
+ this->GetState()
4327
+ );
4328
+ } else if (data.isArray(runtime)) {
4329
+ rust::Vec<float> buf;
4330
+ auto array = data.getArray(
4331
+ runtime);
4332
+ auto len = array.size(runtime);
4333
+ for (int i = 0; i < len; i++) {
4334
+ auto item = array.getValueAtIndex(
4335
+ runtime, i);
4336
+ if (item.isNumber()) {
4337
+ buf.push_back(
4338
+ static_cast<float>(item.asNumber()));
4339
+ } else {
4340
+ buf.push_back(
4341
+ std::nanf(""));
4342
+ }
4343
+ }
4344
+
4345
+ rust::Slice<const float> slice(
4346
+ buf.data(), buf.size());
4347
+
4348
+ canvas_native_webgl2_uniform_matrix4x3fv(
4349
+ location->GetUniformLocation(),
4350
+ transpose,
4351
+ slice,
4352
+ this->GetState()
4353
+ );
4354
+ }
4355
+ }
4356
+
4357
+ return jsi::Value::undefined();
4358
+ }
4359
+ );
4360
+ } else if (methodName == "vertexAttribDivisor") {
4361
+ return jsi::Function::createFromHostFunction(runtime,
4362
+ jsi::PropNameID::forAscii(runtime, methodName),
4363
+ 2,
4364
+ [this](jsi::Runtime &runtime,
4365
+ const jsi::Value &thisValue,
4366
+ const jsi::Value *arguments,
4367
+ size_t count) -> jsi::Value {
4368
+ if (count > 1) {
4369
+ auto index = arguments[0].asNumber();
4370
+ auto divisor = arguments[1].asNumber();
4371
+ canvas_native_webgl2_vertex_attrib_divisor(
4372
+ (uint32_t) index,
4373
+ (uint32_t) divisor,
4374
+ this->GetState()
4375
+ );
4376
+ }
4377
+ return jsi::Value::undefined();
4378
+ }
4379
+ );
4380
+ } else if (methodName == "vertexAttribI4i") {
4381
+ return jsi::Function::createFromHostFunction(runtime,
4382
+ jsi::PropNameID::forAscii(runtime, methodName),
4383
+ 5,
4384
+ [this](jsi::Runtime &runtime,
4385
+ const jsi::Value &thisValue,
4386
+ const jsi::Value *arguments,
4387
+ size_t count) -> jsi::Value {
4388
+
4389
+ if (count > 4) {
4390
+ auto index = arguments[0].asNumber();
4391
+ auto v0 = arguments[1].asNumber();
4392
+ auto v1 = arguments[2].asNumber();
4393
+ auto v2 = arguments[3].asNumber();
4394
+ auto v3 = arguments[4].asNumber();
4395
+ canvas_native_webgl2_vertex_attrib_i4i(
4396
+ (uint32_t) index,
4397
+ (int32_t) v0,
4398
+ (int32_t) v1,
4399
+ (int32_t) v2,
4400
+ (int32_t) v3,
4401
+ this->GetState()
4402
+ );
4403
+ }
4404
+ return jsi::Value::undefined();
4405
+ }
4406
+ );
4407
+ } else if (methodName == "vertexAttribI4iv") {
4408
+ return jsi::Function::createFromHostFunction(runtime,
4409
+ jsi::PropNameID::forAscii(runtime, methodName),
4410
+ 2,
4411
+ [this](jsi::Runtime &runtime,
4412
+ const jsi::Value &thisValue,
4413
+ const jsi::Value *arguments,
4414
+ size_t count) -> jsi::Value {
4415
+
4416
+ if (count > 1 && arguments[1].isObject()) {
4417
+ auto index = (uint32_t) arguments[0].asNumber();
4418
+ auto value = arguments[1].asObject(
4419
+ runtime);
4420
+ if (value.isInt32Array(runtime)) {
4421
+ auto array = value.getTypedArray(
4422
+ runtime);
4423
+ auto slice = GetTypedArrayData<const int32_t>(
4424
+ runtime, array);
4425
+ canvas_native_webgl2_vertex_attrib_i4iv(
4426
+ index,
4427
+ slice,
4428
+ this->GetState()
4429
+ );
4430
+ } else if (value.isArray(runtime)) {
4431
+ auto array = value.getArray(
4432
+ runtime);
4433
+ auto len = array.size(runtime);
4434
+ rust::Vec<int32_t> buf;
4435
+ buf.reserve(len);
4436
+ for (int i = 0; i < len; i++) {
4437
+ auto item = (int32_t) array.getValueAtIndex(
4438
+ runtime, i).asNumber();
4439
+ buf.push_back(item);
4440
+ }
4441
+
4442
+ rust::Slice<const int32_t> slice(
4443
+ buf.data(), buf.size());
4444
+
4445
+ canvas_native_webgl2_vertex_attrib_i4iv(
4446
+ index,
4447
+ slice,
4448
+ this->GetState()
4449
+ );
4450
+ }
4451
+ }
4452
+
4453
+ return jsi::Value::undefined();
4454
+ }
4455
+ );
4456
+ } else if (methodName == "vertexAttribI4ui") {
4457
+ return jsi::Function::createFromHostFunction(runtime,
4458
+ jsi::PropNameID::forAscii(runtime, methodName),
4459
+ 5,
4460
+ [this](jsi::Runtime &runtime,
4461
+ const jsi::Value &thisValue,
4462
+ const jsi::Value *arguments,
4463
+ size_t count) -> jsi::Value {
4464
+
4465
+ if (count > 4) {
4466
+ auto index = (uint32_t) arguments[0].asNumber();
4467
+ auto v0 = (uint32_t) arguments[1].asNumber();
4468
+ auto v1 = (uint32_t) arguments[2].asNumber();
4469
+ auto v2 = (uint32_t) arguments[3].asNumber();
4470
+ auto v3 = (uint32_t) arguments[4].asNumber();
4471
+
4472
+ canvas_native_webgl2_vertex_attrib_i4ui(
4473
+ index,
4474
+ v0,
4475
+ v1,
4476
+ v2,
4477
+ v3,
4478
+ this->GetState()
4479
+ );
4480
+ }
4481
+ return jsi::Value::undefined();
4482
+ }
4483
+ );
4484
+ } else if (methodName == "vertexAttribI4uiv") {
4485
+ return jsi::Function::createFromHostFunction(runtime,
4486
+ jsi::PropNameID::forAscii(runtime, methodName),
4487
+ 2,
4488
+ [this](jsi::Runtime &runtime,
4489
+ const jsi::Value &thisValue,
4490
+ const jsi::Value *arguments,
4491
+ size_t count) -> jsi::Value {
4492
+
4493
+
4494
+ if (count > 1 && arguments[1].isObject()) {
4495
+ auto index = (uint32_t) arguments[0].asNumber();
4496
+ auto value = arguments[1].asObject(
4497
+ runtime);
4498
+ if (value.isUint32Array(runtime)) {
4499
+ auto array = value.getTypedArray(
4500
+ runtime);
4501
+ auto slice = GetTypedArrayData<const uint32_t>(
4502
+ runtime, array);
4503
+ canvas_native_webgl2_vertex_attrib_i4uiv(
4504
+ index,
4505
+ slice,
4506
+ this->GetState()
4507
+ );
4508
+ } else if (value.isArray(runtime)) {
4509
+ auto array = value.getArray(
4510
+ runtime);
4511
+ auto len = array.size(runtime);
4512
+ rust::Vec<uint32_t> buf;
4513
+ buf.reserve(len);
4514
+ for (int i = 0; i < len; i++) {
4515
+ auto item = (uint32_t) array.getValueAtIndex(
4516
+ runtime, i).asNumber();
4517
+ buf.push_back(item);
4518
+ }
4519
+
4520
+ rust::Slice<const uint32_t> slice(
4521
+ buf.data(), buf.size());
4522
+
4523
+ canvas_native_webgl2_vertex_attrib_i4uiv(
4524
+ index,
4525
+ slice,
4526
+ this->GetState()
4527
+ );
4528
+ }
4529
+ }
4530
+ return jsi::Value::undefined();
4531
+ }
4532
+ );
4533
+ }
4534
+
4535
+ if (!prop.isUndefined()) {
4536
+ return prop;
4537
+ }
4538
+ auto gl_return = WebGLRenderingContext::get(runtime, name);
4539
+ if (!gl_return.isUndefined()) {
4540
+ return gl_return;
4541
+ }
4542
+ return jsi::Value::undefined();
4543
+ }