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

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