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

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