react-native-wgpu 0.2.10 → 0.3.1

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 (258) hide show
  1. package/README.md +155 -69
  2. package/android/CMakeLists.txt +5 -7
  3. package/android/build.gradle +7 -18
  4. package/android/src/main/java/com/webgpu/WebGPUViewPackage.java +34 -10
  5. package/apple/MetalView.mm +0 -19
  6. package/apple/WebGPUModule.h +1 -9
  7. package/apple/WebGPUModule.mm +0 -3
  8. package/apple/WebGPUView.h +0 -3
  9. package/apple/WebGPUView.mm +0 -2
  10. package/cpp/WGPULogger.h +10 -0
  11. package/cpp/dawn/dawn_proc_table.h +1 -1
  12. package/cpp/dawn/webgpu.h +4855 -0
  13. package/cpp/dawn/webgpu_cpp.h +10168 -0
  14. package/cpp/dawn/wire/client/webgpu.h +354 -0
  15. package/cpp/dawn/wire/client/webgpu_cpp.h +10343 -0
  16. package/cpp/dawn/wire/client/webgpu_cpp_print.h +2715 -0
  17. package/cpp/jsi/RNFHybridObject.cpp +8 -4
  18. package/cpp/jsi/RNFHybridObject.h +7 -2
  19. package/cpp/jsi/RNFJSIConverter.h +13 -102
  20. package/cpp/jsi/RNFJSIHelper.h +5 -3
  21. package/cpp/jsi/RNFRuntimeState.cpp +18 -0
  22. package/cpp/jsi/RNFRuntimeState.h +106 -0
  23. package/cpp/rnwgpu/RNWebGPUManager.cpp +1 -9
  24. package/cpp/rnwgpu/api/GPU.cpp +51 -26
  25. package/cpp/rnwgpu/api/GPU.h +5 -18
  26. package/cpp/rnwgpu/api/GPUAdapter.cpp +79 -54
  27. package/cpp/rnwgpu/api/GPUAdapter.h +6 -6
  28. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -1
  29. package/cpp/rnwgpu/api/GPUBindGroup.h +1 -3
  30. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +1 -3
  31. package/cpp/rnwgpu/api/GPUBuffer.cpp +35 -32
  32. package/cpp/rnwgpu/api/GPUBuffer.h +9 -7
  33. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +5 -1
  34. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -2
  35. package/cpp/rnwgpu/api/GPUCommandBuffer.h +1 -3
  36. package/cpp/rnwgpu/api/GPUCommandEncoder.h +1 -3
  37. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -2
  38. package/cpp/rnwgpu/api/GPUCompilationMessage.h +1 -3
  39. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +1 -3
  40. package/cpp/rnwgpu/api/GPUComputePipeline.h +1 -3
  41. package/cpp/rnwgpu/api/GPUDevice.cpp +183 -128
  42. package/cpp/rnwgpu/api/GPUDevice.h +22 -21
  43. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +1 -3
  44. package/cpp/rnwgpu/api/GPUExternalTexture.h +1 -3
  45. package/cpp/rnwgpu/api/GPUPipelineLayout.h +1 -3
  46. package/cpp/rnwgpu/api/GPUQuerySet.h +1 -3
  47. package/cpp/rnwgpu/api/GPUQueue.cpp +19 -8
  48. package/cpp/rnwgpu/api/GPUQueue.h +7 -6
  49. package/cpp/rnwgpu/api/GPURenderBundle.h +1 -3
  50. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +1 -3
  51. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +1 -3
  52. package/cpp/rnwgpu/api/GPURenderPipeline.h +1 -3
  53. package/cpp/rnwgpu/api/GPUSampler.h +1 -3
  54. package/cpp/rnwgpu/api/GPUShaderModule.cpp +42 -28
  55. package/cpp/rnwgpu/api/GPUShaderModule.h +6 -6
  56. package/cpp/rnwgpu/api/GPUSupportedLimits.h +1 -3
  57. package/cpp/rnwgpu/api/GPUTexture.h +1 -3
  58. package/cpp/rnwgpu/api/GPUTextureView.h +1 -3
  59. package/cpp/rnwgpu/api/RNWebGPU.h +1 -7
  60. package/cpp/rnwgpu/async/AsyncDispatcher.h +28 -0
  61. package/cpp/rnwgpu/async/AsyncRunner.cpp +215 -0
  62. package/cpp/rnwgpu/async/AsyncRunner.h +53 -0
  63. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +181 -0
  64. package/cpp/rnwgpu/async/AsyncTaskHandle.h +55 -0
  65. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.cpp +23 -0
  66. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.h +22 -0
  67. package/cpp/webgpu/webgpu.h +5 -4827
  68. package/cpp/webgpu/webgpu_cpp.h +5 -10140
  69. package/cpp/{dawn/native/WebGPUBackend.h → webgpu/webgpu_cpp_print.h} +4 -20
  70. package/lib/commonjs/Canvas.js +6 -66
  71. package/lib/commonjs/Canvas.js.map +1 -1
  72. package/lib/commonjs/hooks.js +6 -42
  73. package/lib/commonjs/hooks.js.map +1 -1
  74. package/lib/module/Canvas.js +7 -67
  75. package/lib/module/Canvas.js.map +1 -1
  76. package/lib/module/hooks.js +5 -40
  77. package/lib/module/hooks.js.map +1 -1
  78. package/lib/typescript/lib/commonjs/hooks.d.ts +1 -5
  79. package/lib/typescript/lib/commonjs/hooks.d.ts.map +1 -1
  80. package/lib/typescript/lib/module/Canvas.d.ts.map +1 -1
  81. package/lib/typescript/lib/module/hooks.d.ts +1 -5
  82. package/lib/typescript/lib/module/hooks.d.ts.map +1 -1
  83. package/lib/typescript/src/Canvas.d.ts +0 -1
  84. package/lib/typescript/src/Canvas.d.ts.map +1 -1
  85. package/lib/typescript/src/hooks.d.ts +2 -7
  86. package/lib/typescript/src/hooks.d.ts.map +1 -1
  87. package/libs/android/arm64-v8a/libwebgpu_dawn.so +0 -0
  88. package/libs/android/armeabi-v7a/libwebgpu_dawn.so +0 -0
  89. package/libs/android/x86/libwebgpu_dawn.so +0 -0
  90. package/libs/android/x86_64/libwebgpu_dawn.so +0 -0
  91. package/libs/apple/libwebgpu_dawn.xcframework/Info.plist +5 -35
  92. package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64/libwebgpu_dawn.a +0 -0
  93. package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64_x86_64-simulator/libwebgpu_dawn.a +0 -0
  94. package/libs/apple/libwebgpu_dawn.xcframework/macos-arm64_x86_64/libwebgpu_dawn.a +0 -0
  95. package/package.json +4 -3
  96. package/react-native-wgpu.podspec +12 -16
  97. package/src/Canvas.tsx +8 -69
  98. package/src/hooks.tsx +14 -48
  99. package/android/cpp/platform/ThreadUtils.cpp +0 -41
  100. package/android/src/oldarch/com/webgpu/NativeWebGPUModuleSpec.java +0 -23
  101. package/android/src/oldarch/com/webgpu/WebGPUViewManagerSpec.java +0 -12
  102. package/apple/WebGPUViewManager.mm +0 -24
  103. package/apple/platform/ThreadUtils.cpp +0 -34
  104. package/cpp/dawn/dawn_proc.h +0 -50
  105. package/cpp/dawn/dawn_thread_dispatch_proc.h +0 -47
  106. package/cpp/dawn/native/D3D11Backend.h +0 -77
  107. package/cpp/dawn/native/D3D12Backend.h +0 -68
  108. package/cpp/dawn/native/D3DBackend.h +0 -56
  109. package/cpp/dawn/native/MetalBackend.h +0 -56
  110. package/cpp/dawn/platform/DawnPlatform.h +0 -167
  111. package/cpp/dawn/platform/dawn_platform_export.h +0 -49
  112. package/cpp/jsi/RNFRuntimeCache.cpp +0 -57
  113. package/cpp/jsi/RNFRuntimeCache.h +0 -79
  114. package/cpp/jsi/RNFWorkletRuntimeCollector.h +0 -43
  115. package/cpp/jsi/RNFWorkletRuntimeRegistry.cpp +0 -12
  116. package/cpp/jsi/RNFWorkletRuntimeRegistry.h +0 -44
  117. package/cpp/platform/ThreadUtils.h +0 -30
  118. package/cpp/rnwgpu/api/AsyncRunner.h +0 -30
  119. package/cpp/threading/CallInvokerDispatcher.h +0 -37
  120. package/cpp/threading/Dispatcher.cpp +0 -55
  121. package/cpp/threading/Dispatcher.h +0 -93
  122. package/cpp/threading/ThreadPool.cpp +0 -88
  123. package/cpp/threading/ThreadPool.h +0 -53
  124. package/cpp/webgpu/webgpu_glfw.h +0 -88
  125. package/lib/typescript/src/__tests__/Alpha.spec.d.ts +0 -2
  126. package/lib/typescript/src/__tests__/Alpha.spec.d.ts.map +0 -1
  127. package/lib/typescript/src/__tests__/ArrayBuffer.spec.d.ts +0 -2
  128. package/lib/typescript/src/__tests__/ArrayBuffer.spec.d.ts.map +0 -1
  129. package/lib/typescript/src/__tests__/Buffer.spec.d.ts +0 -2
  130. package/lib/typescript/src/__tests__/Buffer.spec.d.ts.map +0 -1
  131. package/lib/typescript/src/__tests__/ComputeShader.spec.d.ts +0 -2
  132. package/lib/typescript/src/__tests__/ComputeShader.spec.d.ts.map +0 -1
  133. package/lib/typescript/src/__tests__/Constants.spec.d.ts +0 -2
  134. package/lib/typescript/src/__tests__/Constants.spec.d.ts.map +0 -1
  135. package/lib/typescript/src/__tests__/Device.spec.d.ts +0 -2
  136. package/lib/typescript/src/__tests__/Device.spec.d.ts.map +0 -1
  137. package/lib/typescript/src/__tests__/ErrorScope.spec.d.ts +0 -2
  138. package/lib/typescript/src/__tests__/ErrorScope.spec.d.ts.map +0 -1
  139. package/lib/typescript/src/__tests__/ExternalTexture.spec.d.ts +0 -2
  140. package/lib/typescript/src/__tests__/ExternalTexture.spec.d.ts.map +0 -1
  141. package/lib/typescript/src/__tests__/GPU.spec.d.ts +0 -2
  142. package/lib/typescript/src/__tests__/GPU.spec.d.ts.map +0 -1
  143. package/lib/typescript/src/__tests__/ImageData.spec.d.ts +0 -2
  144. package/lib/typescript/src/__tests__/ImageData.spec.d.ts.map +0 -1
  145. package/lib/typescript/src/__tests__/Shaders.spec.d.ts +0 -2
  146. package/lib/typescript/src/__tests__/Shaders.spec.d.ts.map +0 -1
  147. package/lib/typescript/src/__tests__/Texture.spec.d.ts +0 -2
  148. package/lib/typescript/src/__tests__/Texture.spec.d.ts.map +0 -1
  149. package/lib/typescript/src/__tests__/components/Wireframe/Shaders.d.ts +0 -3
  150. package/lib/typescript/src/__tests__/components/Wireframe/Shaders.d.ts.map +0 -1
  151. package/lib/typescript/src/__tests__/components/Wireframe/models.d.ts +0 -29
  152. package/lib/typescript/src/__tests__/components/Wireframe/models.d.ts.map +0 -1
  153. package/lib/typescript/src/__tests__/components/Wireframe/utils.d.ts +0 -5
  154. package/lib/typescript/src/__tests__/components/Wireframe/utils.d.ts.map +0 -1
  155. package/lib/typescript/src/__tests__/components/cube.d.ts +0 -7
  156. package/lib/typescript/src/__tests__/components/cube.d.ts.map +0 -1
  157. package/lib/typescript/src/__tests__/components/meshes/mesh.d.ts +0 -22
  158. package/lib/typescript/src/__tests__/components/meshes/mesh.d.ts.map +0 -1
  159. package/lib/typescript/src/__tests__/components/meshes/sphere.d.ts +0 -12
  160. package/lib/typescript/src/__tests__/components/meshes/sphere.d.ts.map +0 -1
  161. package/lib/typescript/src/__tests__/components/meshes/stanfordDragon.d.ts +0 -7
  162. package/lib/typescript/src/__tests__/components/meshes/stanfordDragon.d.ts.map +0 -1
  163. package/lib/typescript/src/__tests__/components/meshes/stanfordDragonData.d.ts +0 -6
  164. package/lib/typescript/src/__tests__/components/meshes/stanfordDragonData.d.ts.map +0 -1
  165. package/lib/typescript/src/__tests__/components/meshes/teapot.d.ts +0 -6
  166. package/lib/typescript/src/__tests__/components/meshes/teapot.d.ts.map +0 -1
  167. package/lib/typescript/src/__tests__/components/meshes/utils.d.ts +0 -10
  168. package/lib/typescript/src/__tests__/components/meshes/utils.d.ts.map +0 -1
  169. package/lib/typescript/src/__tests__/components/triangle.d.ts +0 -3
  170. package/lib/typescript/src/__tests__/components/triangle.d.ts.map +0 -1
  171. package/lib/typescript/src/__tests__/config.d.ts +0 -3
  172. package/lib/typescript/src/__tests__/config.d.ts.map +0 -1
  173. package/lib/typescript/src/__tests__/demos/ABuffer.spec.d.ts +0 -2
  174. package/lib/typescript/src/__tests__/demos/ABuffer.spec.d.ts.map +0 -1
  175. package/lib/typescript/src/__tests__/demos/Blur.spec.d.ts +0 -2
  176. package/lib/typescript/src/__tests__/demos/Blur.spec.d.ts.map +0 -1
  177. package/lib/typescript/src/__tests__/demos/Cube.spec.d.ts +0 -2
  178. package/lib/typescript/src/__tests__/demos/Cube.spec.d.ts.map +0 -1
  179. package/lib/typescript/src/__tests__/demos/FractalCube.spec.d.ts +0 -2
  180. package/lib/typescript/src/__tests__/demos/FractalCube.spec.d.ts.map +0 -1
  181. package/lib/typescript/src/__tests__/demos/OcclusionQuery.spec.d.ts +0 -2
  182. package/lib/typescript/src/__tests__/demos/OcclusionQuery.spec.d.ts.map +0 -1
  183. package/lib/typescript/src/__tests__/demos/RenderBundles.spec.d.ts +0 -2
  184. package/lib/typescript/src/__tests__/demos/RenderBundles.spec.d.ts.map +0 -1
  185. package/lib/typescript/src/__tests__/demos/Triangle.spec.d.ts +0 -2
  186. package/lib/typescript/src/__tests__/demos/Triangle.spec.d.ts.map +0 -1
  187. package/lib/typescript/src/__tests__/demos/Wireframe.spec.d.ts +0 -2
  188. package/lib/typescript/src/__tests__/demos/Wireframe.spec.d.ts.map +0 -1
  189. package/lib/typescript/src/__tests__/globalSetup.d.ts +0 -3
  190. package/lib/typescript/src/__tests__/globalSetup.d.ts.map +0 -1
  191. package/lib/typescript/src/__tests__/globalTeardown.d.ts +0 -3
  192. package/lib/typescript/src/__tests__/globalTeardown.d.ts.map +0 -1
  193. package/lib/typescript/src/__tests__/setup.d.ts +0 -63
  194. package/lib/typescript/src/__tests__/setup.d.ts.map +0 -1
  195. package/libs/apple/arm64_iphoneos/libwebgpu_dawn.a +0 -0
  196. package/libs/apple/arm64_iphonesimulator/libwebgpu_dawn.a +0 -0
  197. package/libs/apple/arm64_xros/libwebgpu_dawn.a +0 -0
  198. package/libs/apple/arm64_xrsimulator/libwebgpu_dawn.a +0 -0
  199. package/libs/apple/iphonesimulator/libwebgpu_dawn.a +0 -0
  200. package/libs/apple/libwebgpu_dawn.xcframework/xros-arm64/libwebgpu_dawn.a +0 -0
  201. package/libs/apple/libwebgpu_dawn.xcframework/xros-arm64-simulator/libwebgpu_dawn.a +0 -0
  202. package/libs/apple/universal_macosx/libwebgpu_dawn.a +0 -0
  203. package/libs/apple/x86_64_iphonesimulator/libwebgpu_dawn.a +0 -0
  204. package/libs/dawn.json +0 -4670
  205. package/src/__tests__/Alpha.spec.ts +0 -28
  206. package/src/__tests__/ArrayBuffer.spec.ts +0 -76
  207. package/src/__tests__/Buffer.spec.ts +0 -357
  208. package/src/__tests__/ComputeShader.spec.ts +0 -375
  209. package/src/__tests__/Constants.spec.ts +0 -89
  210. package/src/__tests__/Device.spec.ts +0 -84
  211. package/src/__tests__/ErrorScope.spec.ts +0 -92
  212. package/src/__tests__/ExternalTexture.spec.ts +0 -284
  213. package/src/__tests__/GPU.spec.ts +0 -272
  214. package/src/__tests__/ImageData.spec.ts +0 -26
  215. package/src/__tests__/Shaders.spec.ts +0 -232
  216. package/src/__tests__/Texture.spec.ts +0 -197
  217. package/src/__tests__/assets/Di-3d.png +0 -0
  218. package/src/__tests__/components/Wireframe/Shaders.ts +0 -138
  219. package/src/__tests__/components/Wireframe/models.ts +0 -113
  220. package/src/__tests__/components/Wireframe/utils.ts +0 -22
  221. package/src/__tests__/components/cube.ts +0 -51
  222. package/src/__tests__/components/meshes/mesh.ts +0 -96
  223. package/src/__tests__/components/meshes/sphere.ts +0 -103
  224. package/src/__tests__/components/meshes/stanfordDragon.ts +0 -44
  225. package/src/__tests__/components/meshes/stanfordDragonData.ts +0 -5
  226. package/src/__tests__/components/meshes/teapot.ts +0 -13
  227. package/src/__tests__/components/meshes/utils.ts +0 -235
  228. package/src/__tests__/components/triangle.ts +0 -17
  229. package/src/__tests__/config.ts +0 -2
  230. package/src/__tests__/demos/ABuffer.spec.ts +0 -890
  231. package/src/__tests__/demos/Blur.spec.ts +0 -398
  232. package/src/__tests__/demos/Cube.spec.ts +0 -929
  233. package/src/__tests__/demos/FractalCube.spec.ts +0 -240
  234. package/src/__tests__/demos/OcclusionQuery.spec.ts +0 -376
  235. package/src/__tests__/demos/RenderBundles.spec.ts +0 -580
  236. package/src/__tests__/demos/Triangle.spec.ts +0 -266
  237. package/src/__tests__/demos/Wireframe.spec.ts +0 -188
  238. package/src/__tests__/globalSetup.ts +0 -45
  239. package/src/__tests__/globalTeardown.ts +0 -11
  240. package/src/__tests__/setup.ts +0 -423
  241. package/src/__tests__/snapshots/abuffer.png +0 -0
  242. package/src/__tests__/snapshots/asteroid.png +0 -0
  243. package/src/__tests__/snapshots/blur.png +0 -0
  244. package/src/__tests__/snapshots/buffer.png +0 -0
  245. package/src/__tests__/snapshots/constant-triangle.png +0 -0
  246. package/src/__tests__/snapshots/cube.png +0 -0
  247. package/src/__tests__/snapshots/f.png +0 -0
  248. package/src/__tests__/snapshots/f2.png +0 -0
  249. package/src/__tests__/snapshots/fractal-cubes.png +0 -0
  250. package/src/__tests__/snapshots/instanced-cubes.png +0 -0
  251. package/src/__tests__/snapshots/occlusion-query.png +0 -0
  252. package/src/__tests__/snapshots/ref.png +0 -0
  253. package/src/__tests__/snapshots/semi-opaque-cyan.png +0 -0
  254. package/src/__tests__/snapshots/texture.png +0 -0
  255. package/src/__tests__/snapshots/textured-cube.png +0 -0
  256. package/src/__tests__/snapshots/triangle-msaa.png +0 -0
  257. package/src/__tests__/snapshots/triangle.png +0 -0
  258. package/src/__tests__/snapshots/two-cube.png +0 -0
@@ -1,55 +0,0 @@
1
- //
2
- // Created by Marc Rousavy on 12.03.24.
3
- //
4
- #include <memory>
5
- #include <unordered_map>
6
-
7
- #include "Dispatcher.h"
8
-
9
- #include "RNFJSIHelper.h"
10
-
11
- namespace margelo {
12
-
13
- namespace jsi = facebook::jsi;
14
-
15
- static constexpr auto GLOBAL_DISPATCHER_HOLDER_NAME = "__nitroDispatcher_WEBGPU_FORK";
16
-
17
- std::unordered_map<jsi::Runtime *, std::weak_ptr<Dispatcher>>
18
- Dispatcher::_globalCache;
19
-
20
- void Dispatcher::installRuntimeGlobalDispatcher(
21
- jsi::Runtime &runtime, std::shared_ptr<Dispatcher> dispatcher) {
22
-
23
- // Store a weak reference in global cache
24
- _globalCache[&runtime] = std::weak_ptr<Dispatcher>(dispatcher);
25
-
26
- // Inject the dispatcher into Runtime global (runtime will hold a strong
27
- // reference)
28
- jsi::Object dispatcherHolder(runtime);
29
- dispatcherHolder.setNativeState(runtime, dispatcher);
30
- runtime.global().setProperty(runtime, GLOBAL_DISPATCHER_HOLDER_NAME,
31
- dispatcherHolder);
32
- }
33
-
34
- std::shared_ptr<Dispatcher>
35
- Dispatcher::getRuntimeGlobalDispatcher(jsi::Runtime &runtime) {
36
- if (auto search = _globalCache.find(&runtime); search != _globalCache.end()) {
37
- // the runtime is known - we have something in cache
38
- std::weak_ptr<Dispatcher> weakDispatcher = _globalCache[&runtime];
39
- std::shared_ptr<Dispatcher> strongDispatcher = weakDispatcher.lock();
40
- if (strongDispatcher) {
41
- // the weak reference we cached is still valid - return it!
42
- return strongDispatcher;
43
- }
44
- }
45
-
46
- jsi::Value dispatcherHolderValue = getRuntimeGlobalDispatcherHolder(runtime);
47
- jsi::Object dispatcherHolder = dispatcherHolderValue.getObject(runtime);
48
- return dispatcherHolder.getNativeState<Dispatcher>(runtime);
49
- }
50
-
51
- jsi::Value Dispatcher::getRuntimeGlobalDispatcherHolder(jsi::Runtime &runtime) {
52
- return runtime.global().getProperty(runtime, GLOBAL_DISPATCHER_HOLDER_NAME);
53
- }
54
-
55
- } // namespace margelo
@@ -1,93 +0,0 @@
1
- //
2
- // Created by Marc Rousavy on 12.03.24.
3
- //
4
-
5
- #pragma once
6
-
7
- #include <functional>
8
- #include <future>
9
- #include <jsi/jsi.h>
10
- #include <queue>
11
- #include <unordered_map>
12
- #include <utility>
13
- #include <memory>
14
-
15
- namespace margelo {
16
-
17
- namespace jsi = facebook::jsi;
18
-
19
- class Dispatcher : public jsi::NativeState {
20
- public:
21
- /**
22
- Installs the Dispatcher into the given Runtime.
23
- It can be accessed using `getRuntimeGlobalDispatcher` later.
24
- */
25
- static void
26
- installRuntimeGlobalDispatcher(jsi::Runtime &runtime,
27
- std::shared_ptr<Dispatcher> dispatcher);
28
- /**
29
- Gets the global Dispatcher in the given Runtime, or throws an error if not
30
- found.
31
- */
32
- static std::shared_ptr<Dispatcher>
33
- getRuntimeGlobalDispatcher(jsi::Runtime &runtime);
34
-
35
- private:
36
- static jsi::Value getRuntimeGlobalDispatcherHolder(jsi::Runtime &runtime);
37
-
38
- public:
39
- /**
40
- * Run the given void function synchronously on the Thread this Dispatcher is
41
- * managing.
42
- */
43
- virtual void runSync(std::function<void()> &&function) = 0;
44
-
45
- /**
46
- * Run the given void function asynchronously on the Thread this Dispatcher is
47
- * managing.
48
- */
49
- virtual void runAsync(std::function<void()> &&function) = 0;
50
-
51
- /**
52
- * Run the given function asynchronously on the Thread this Dispatcher is
53
- * managing, and return a future that will hold the result of the function.
54
- */
55
- template <typename T>
56
- std::future<T> runAsyncAwaitable(std::function<T()> &&function) {
57
- // 1. Create Promise that can be shared between this and dispatcher thread
58
- auto promise = std::make_shared<std::promise<T>>();
59
- std::future<T> future = promise->get_future();
60
-
61
- runAsync([function = std::move(function), promise]() {
62
- try {
63
- if constexpr (std::is_void_v<T>) {
64
- // 4. Call the actual function on the new Thread
65
- function();
66
- // 5.a. Resolve the Promise if we succeeded
67
- promise->set_value();
68
- } else {
69
- // 4. Call the actual function on the new Thread
70
- T result = function();
71
- // 5.a. Resolve the Promise if we succeeded
72
- promise->set_value(std::move(result));
73
- }
74
- } catch (...) {
75
- // 5.b. Reject the Promise if the call failed
76
- promise->set_exception(std::current_exception());
77
- }
78
- });
79
-
80
- // 3. Return an open future that gets resolved later by the dispatcher
81
- // Thread
82
- return future;
83
- }
84
-
85
- private:
86
- static std::unordered_map<jsi::Runtime *, std::weak_ptr<Dispatcher>>
87
- _globalCache;
88
-
89
- private:
90
- static constexpr auto TAG = "Dispatcher";
91
- };
92
-
93
- } // namespace margelo
@@ -1,88 +0,0 @@
1
- //
2
- // ThreadPool.cpp
3
- // NitroModules
4
- //
5
- // Created by Marc Rousavy on 21.06.24.
6
- //
7
-
8
- #include "ThreadPool.h"
9
- #include "ThreadUtils.h"
10
-
11
- #include <utility>
12
- #include <algorithm>
13
- #include <string>
14
- #include <memory>
15
-
16
- namespace margelo {
17
-
18
- ThreadPool::ThreadPool(const char *name, size_t numThreads)
19
- : _isAlive(true), _name(name) {
20
- for (size_t i = 0; i < numThreads; ++i) {
21
- std::string threadName = std::string(name) + "-" + std::to_string(i + 1);
22
- _workers.emplace_back([this, threadName] {
23
- // Set the Thread's name
24
- ThreadUtils::setThreadName(threadName);
25
-
26
- // Start the run-loop
27
- while (true) {
28
- std::function<void()> task;
29
- {
30
- // Lock on the mutex so only one Worker receives the condition signal
31
- // at a time
32
- std::unique_lock<std::mutex> lock(_queueMutex);
33
- this->_condition.wait(
34
- lock, [this] { return !_isAlive || !_tasks.empty(); });
35
- if (!_isAlive && _tasks.empty()) {
36
- // ThreadPool is dead - stop run-loop.
37
- return;
38
- }
39
- // Schedule the oldest task
40
- task = std::move(_tasks.front());
41
- _tasks.pop();
42
- }
43
- // Run it (outside of the mutex so others can run in parallel)
44
- task();
45
- }
46
- });
47
- }
48
- }
49
-
50
- void ThreadPool::run(std::function<void()> &&task) {
51
- {
52
- // lock on the mutex - we want to emplace the task back in the queue
53
- std::unique_lock<std::mutex> lock(_queueMutex);
54
- if (!_isAlive) {
55
- throw std::runtime_error("Cannot queue the given task - the ThreadPool "
56
- "has already been stopped!");
57
- }
58
- _tasks.emplace(std::move(task));
59
- }
60
- // Notify about a new task - one of the workers will pick it up
61
- _condition.notify_one();
62
- }
63
-
64
- ThreadPool::~ThreadPool() {
65
- {
66
- // Lock and set `_isAlive` to false.
67
- std::unique_lock<std::mutex> lock(_queueMutex);
68
- _isAlive = false;
69
- }
70
- // Notify all workers - they will stop the work since `_isAlive` is false.
71
- _condition.notify_all();
72
- for (std::thread &worker : _workers) {
73
- // Wait for each worker to exit.
74
- worker.join();
75
- }
76
- }
77
-
78
- std::shared_ptr<ThreadPool> ThreadPool::getSharedPool() {
79
- static std::shared_ptr<ThreadPool> shared;
80
- if (shared == nullptr) {
81
- int availableThreads = std::thread::hardware_concurrency();
82
- auto numThreads = std::min(availableThreads, 3);
83
- shared = std::make_shared<ThreadPool>("nitro-thread", numThreads);
84
- }
85
- return shared;
86
- }
87
-
88
- } // namespace margelo
@@ -1,53 +0,0 @@
1
- //
2
- // ThreadPool.hpp
3
- // NitroModules
4
- //
5
- // Created by Marc Rousavy on 21.06.24.
6
- //
7
-
8
- #pragma once
9
-
10
- #include <atomic>
11
- #include <condition_variable>
12
- #include <functional>
13
- #include <memory>
14
- #include <mutex>
15
- #include <queue>
16
- #include <string>
17
- #include <thread>
18
- #include <vector>
19
-
20
- namespace margelo {
21
-
22
- class ThreadPool final {
23
- public:
24
- /**
25
- * Create a new ThreadPool with the given number of fixed workers/threads.
26
- */
27
- explicit ThreadPool(const char *const name, size_t numThreads);
28
- ~ThreadPool();
29
-
30
- /**
31
- * Schedules the given task asynchronously on the ThreadPool.
32
- * It will run once a worker is available.
33
- */
34
- void run(std::function<void()> &&task);
35
-
36
- public:
37
- /**
38
- * Get a static singleton instance - a shared ThreadPool.
39
- * The shared ThreadPool has 3 threads.
40
- */
41
- static std::shared_ptr<ThreadPool> getSharedPool();
42
-
43
- private:
44
- std::vector<std::thread> _workers;
45
- std::queue<std::function<void()>> _tasks;
46
- std::mutex _queueMutex;
47
- std::condition_variable _condition;
48
- std::atomic<bool> _isAlive;
49
- const char *_name;
50
- static constexpr auto TAG = "ThreadPool";
51
- };
52
-
53
- } // namespace margelo
@@ -1,88 +0,0 @@
1
- // Copyright 2022 The Dawn & Tint Authors
2
- //
3
- // Redistribution and use in source and binary forms, with or without
4
- // modification, are permitted provided that the following conditions are met:
5
- //
6
- // 1. Redistributions of source code must retain the above copyright notice, this
7
- // list of conditions and the following disclaimer.
8
- //
9
- // 2. Redistributions in binary form must reproduce the above copyright notice,
10
- // this list of conditions and the following disclaimer in the documentation
11
- // and/or other materials provided with the distribution.
12
- //
13
- // 3. Neither the name of the copyright holder nor the names of its
14
- // contributors may be used to endorse or promote products derived from
15
- // this software without specific prior written permission.
16
- //
17
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
- // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
- // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20
- // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
21
- // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
- // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23
- // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
24
- // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25
- // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
-
28
- #ifndef INCLUDE_WEBGPU_WEBGPU_GLFW_H_
29
- #define INCLUDE_WEBGPU_WEBGPU_GLFW_H_
30
-
31
- #ifdef __cplusplus
32
- #include <memory>
33
-
34
- #include "webgpu/webgpu_cpp.h"
35
- #else
36
- #include "webgpu/webgpu.h"
37
- #endif
38
-
39
- #if defined(WGPU_GLFW_SHARED_LIBRARY)
40
- #if defined(_WIN32)
41
- #if defined(WGPU_GLFW_IMPLEMENTATION)
42
- #define WGPU_GLFW_EXPORT __declspec(dllexport)
43
- #else
44
- #define WGPU_GLFW_EXPORT __declspec(dllimport)
45
- #endif
46
- #else // defined(_WIN32)
47
- #if defined(WGPU_GLFW_IMPLEMENTATION)
48
- #define WGPU_GLFW_EXPORT __attribute__((visibility("default")))
49
- #else
50
- #define WGPU_GLFW_EXPORT
51
- #endif
52
- #endif // defined(_WIN32)
53
- #else // defined(WGPU_GLFW_SHARED_LIBRARY)
54
- #define WGPU_GLFW_EXPORT
55
- #endif // defined(WGPU_GLFW_SHARED_LIBRARY)
56
-
57
- struct GLFWwindow;
58
-
59
- #ifdef __cplusplus
60
- extern "C" {
61
- #endif
62
-
63
- WGPU_GLFW_EXPORT WGPUSurface wgpuGlfwCreateSurfaceForWindow(const WGPUInstance instance,
64
- struct GLFWwindow* window);
65
-
66
- #ifdef __cplusplus
67
- }
68
-
69
- namespace wgpu::glfw {
70
-
71
- // Does the necessary setup on the GLFWwindow to allow creating a wgpu::Surface with it and
72
- // calls `instance.CreateSurface` with the correct descriptor for this window.
73
- // Returns a null wgpu::Surface on failure.
74
- WGPU_GLFW_EXPORT wgpu::Surface CreateSurfaceForWindow(const wgpu::Instance& instance,
75
- GLFWwindow* window);
76
-
77
- // Use for testing only. Does everything that CreateSurfaceForWindow does except the call to
78
- // CreateSurface. Useful to be able to modify the descriptor for testing, or when trying to
79
- // avoid using the global proc table.
80
- // NOLINTNEXTLINE(build/include_what_you_use)
81
- WGPU_GLFW_EXPORT std::unique_ptr<wgpu::ChainedStruct, void (*)(wgpu::ChainedStruct*)>
82
- SetupWindowAndGetSurfaceDescriptor(GLFWwindow* window);
83
-
84
- } // namespace wgpu::glfw
85
-
86
- #endif
87
-
88
- #endif // INCLUDE_WEBGPU_WEBGPU_GLFW_H_
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Alpha.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Alpha.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/Alpha.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ArrayBuffer.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArrayBuffer.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/ArrayBuffer.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Buffer.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Buffer.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/Buffer.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ComputeShader.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ComputeShader.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/ComputeShader.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Constants.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Constants.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/Constants.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Device.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Device.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/Device.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ErrorScope.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ErrorScope.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/ErrorScope.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ExternalTexture.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExternalTexture.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/ExternalTexture.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=GPU.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GPU.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/GPU.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ImageData.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageData.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/ImageData.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Shaders.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Shaders.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/Shaders.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Texture.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Texture.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/Texture.spec.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- export declare const solidColorLitWGSL = "struct Uniforms {\n worldViewProjectionMatrix: mat4x4f,\n worldMatrix: mat4x4f,\n color: vec4f,\n};\n\nstruct Vertex {\n @location(0) position: vec4f,\n @location(1) normal: vec3f,\n};\n\nstruct VSOut {\n @builtin(position) position: vec4f,\n @location(0) normal: vec3f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n\n@vertex fn vs(vin: Vertex) -> VSOut {\n var vOut: VSOut;\n vOut.position = uni.worldViewProjectionMatrix * vin.position;\n vOut.normal = (uni.worldMatrix * vec4f(vin.normal, 0)).xyz;\n return vOut;\n}\n\n@fragment fn fs(vin: VSOut) -> @location(0) vec4f {\n let lightDirection = normalize(vec3f(4, 10, 6));\n let light = dot(normalize(vin.normal), lightDirection) * 0.5 + 0.5;\n return vec4f(uni.color.rgb * light, uni.color.a);\n}";
2
- export declare const wireframeWGSL = "struct Uniforms {\n worldViewProjectionMatrix: mat4x4f,\n worldMatrix: mat4x4f,\n color: vec4f,\n};\n\nstruct LineUniforms {\n stride: u32,\n thickness: f32,\n alphaThreshold: f32,\n};\n\nstruct VSOut {\n @builtin(position) position: vec4f,\n};\n\n@group(0) @binding(0) var<uniform> uni: Uniforms;\n@group(0) @binding(1) var<storage, read> positions: array<f32>;\n@group(0) @binding(2) var<storage, read> indices: array<u32>;\n@group(0) @binding(3) var<uniform> line: LineUniforms;\n\n@vertex fn vsIndexedU32(@builtin(vertex_index) vNdx: u32) -> VSOut {\n // indices make a triangle so for every 3 indices we need to output\n // 6 values\n let triNdx = vNdx / 6;\n // 0 1 0 1 0 1 0 1 0 1 0 1 vNdx % 2\n // 0 0 1 1 2 2 3 3 4 4 5 5 vNdx / 2\n // 0 1 1 2 2 3 3 4 4 5 5 6 vNdx % 2 + vNdx / 2\n // 0 1 1 2 2 0 0 1 1 2 2 0 (vNdx % 2 + vNdx / 2) % 3\n let vertNdx = (vNdx % 2 + vNdx / 2) % 3;\n let index = indices[triNdx * 3 + vertNdx];\n\n // note:\n //\n // * if your indices are U16 you could use this\n //\n // let indexNdx = triNdx * 3 + vertNdx;\n // let twoIndices = indices[indexNdx / 2]; // indices is u32 but we want u16\n // let index = (twoIndices >> ((indexNdx & 1) * 16)) & 0xFFFF;\n //\n // * if you're not using indices you could use this\n //\n // let index = triNdx * 3 + vertNdx;\n\n let pNdx = index * line.stride;\n let position = vec4f(positions[pNdx], positions[pNdx + 1], positions[pNdx + 2], 1);\n\n var vOut: VSOut;\n vOut.position = uni.worldViewProjectionMatrix * position;\n return vOut;\n}\n\n@fragment fn fs() -> @location(0) vec4f {\n return uni.color + vec4f(0.5);\n}\n\nstruct BarycentricCoordinateBasedVSOutput {\n @builtin(position) position: vec4f,\n @location(0) barycenticCoord: vec3f,\n};\n\n@vertex fn vsIndexedU32BarycentricCoordinateBasedLines(\n @builtin(vertex_index) vNdx: u32\n) -> BarycentricCoordinateBasedVSOutput {\n let vertNdx = vNdx % 3;\n let index = indices[vNdx];\n\n // note:\n //\n // * if your indices are U16 you could use this\n //\n // let twoIndices = indices[vNdx / 2]; // indices is u32 but we want u16\n // let index = (twoIndices >> ((vNdx & 1) * 16)) & 0xFFFF;\n //\n // * if you're not using indices you could use this\n //\n // let index = vNdx;\n\n let pNdx = index * line.stride;\n let position = vec4f(positions[pNdx], positions[pNdx + 1], positions[pNdx + 2], 1);\n\n var vsOut: BarycentricCoordinateBasedVSOutput;\n vsOut.position = uni.worldViewProjectionMatrix * position;\n\n // emit a barycentric coordinate\n vsOut.barycenticCoord = vec3f(0);\n vsOut.barycenticCoord[vertNdx] = 1.0;\n return vsOut;\n}\n\nfn edgeFactor(bary: vec3f) -> f32 {\n let d = fwidth(bary);\n let a3 = smoothstep(vec3f(0.0), d * line.thickness, bary);\n return min(min(a3.x, a3.y), a3.z);\n}\n\n@fragment fn fsBarycentricCoordinateBasedLines(\n v: BarycentricCoordinateBasedVSOutput\n) -> @location(0) vec4f {\n let a = 1.0 - edgeFactor(v.barycenticCoord);\n if (a < line.alphaThreshold) {\n discard;\n }\n\n return vec4((uni.color.rgb + 0.5) * a, a);\n}\n";
3
- //# sourceMappingURL=Shaders.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Shaders.d.ts","sourceRoot":"","sources":["../../../../../../src/__tests__/components/Wireframe/Shaders.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,6wBA6B5B,CAAC;AAEH,eAAO,MAAM,aAAa,oiGA0GzB,CAAC"}
@@ -1,29 +0,0 @@
1
- type Mesh = {
2
- positions: [number, number, number][];
3
- triangles: [number, number, number][];
4
- normals: [number, number, number][];
5
- };
6
- export declare function convertMeshToTypedArrays(mesh: Mesh, scale: number, offset?: number[]): {
7
- vertices: Float32Array<ArrayBuffer>;
8
- indices: Uint32Array<ArrayBuffer>;
9
- };
10
- export declare const modelData: {
11
- teapot: {
12
- vertices: Float32Array<ArrayBuffer>;
13
- indices: Uint32Array<ArrayBuffer>;
14
- };
15
- sphere: {
16
- vertices: Float32Array<ArrayBuffer>;
17
- indices: Uint32Array<ArrayBuffer>;
18
- };
19
- jewel: {
20
- vertices: Float32Array<ArrayBuffer>;
21
- indices: Uint32Array<ArrayBuffer>;
22
- };
23
- rock: {
24
- vertices: Float32Array<ArrayBuffer>;
25
- indices: Uint32Array<ArrayBuffer>;
26
- };
27
- };
28
- export {};
29
- //# sourceMappingURL=models.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../../../src/__tests__/components/Wireframe/models.ts"],"names":[],"mappings":"AAUA,KAAK,IAAI,GAAG;IACV,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACtC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACtC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CACrC,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,MAAM,WAAY;;;EAoBnB;AAoED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;CAKrB,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare function rand(min?: number, max?: number): number;
2
- export declare function randInt(min: number, max?: number): number;
3
- export declare function randColor(): number[];
4
- export declare function randElement<T>(arr: T[]): T;
5
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../src/__tests__/components/Wireframe/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,UAS9C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,UAEhD;AAED,wBAAgB,SAAS,aAExB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAE1C"}
@@ -1,7 +0,0 @@
1
- export declare const cubeVertexSize: number;
2
- export declare const cubePositionOffset = 0;
3
- export declare const cubeColorOffset: number;
4
- export declare const cubeUVOffset: number;
5
- export declare const cubeVertexCount = 36;
6
- export declare const cubeVertexArray: Float32Array<ArrayBuffer>;
7
- //# sourceMappingURL=cube.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cube.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/components/cube.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,QAAS,CAAC;AACrC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,eAAe,KAAK,CAAC;AAGlC,eAAO,MAAM,eAAe,2BA2C1B,CAAC"}
@@ -1,22 +0,0 @@
1
- export interface Renderable {
2
- vertexBuffer: GPUBuffer;
3
- indexBuffer: GPUBuffer;
4
- indexCount: number;
5
- bindGroup?: GPUBindGroup;
6
- }
7
- export interface Mesh {
8
- vertices: Float32Array;
9
- indices: Uint16Array | Uint32Array;
10
- vertexStride: number;
11
- }
12
- /**
13
- * @param {GPUDevice} device - A valid GPUDevice.
14
- * @param {Mesh} mesh - An indexed triangle-list mesh, containing its vertices, indices, and vertexStride (number of elements per vertex).
15
- * @param {boolean} storeVertices - A boolean flag indicating whether the vertexBuffer should be available to use as a storage buffer.
16
- * @returns {boolean} An object containing an array of bindGroups and the bindGroupLayout they implement.
17
- */
18
- export declare const createMeshRenderable: (device: GPUDevice, mesh: Mesh, storeVertices?: boolean, storeIndices?: boolean) => Renderable;
19
- export declare const getMeshPosAtIndex: (mesh: Mesh, index: number) => Float32Array<ArrayBufferLike>;
20
- export declare const getMeshNormalAtIndex: (mesh: Mesh, index: number) => Float32Array<ArrayBufferLike>;
21
- export declare const getMeshUVAtIndex: (mesh: Mesh, index: number) => Float32Array<ArrayBufferLike>;
22
- //# sourceMappingURL=mesh.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mesh.d.ts","sourceRoot":"","sources":["../../../../../../src/__tests__/components/meshes/mesh.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,WAAW,GAAG,WAAW,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,SAAS,EACjB,MAAM,IAAI,EACV,uBAAqB,EACrB,sBAAoB,KACnB,UAyCF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,IAAI,EAAE,OAAO,MAAM,kCAO1D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,IAAI,EAAE,OAAO,MAAM,kCAO7D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,IAAI,EAAE,OAAO,MAAM,kCAOzD,CAAC"}
@@ -1,12 +0,0 @@
1
- export interface SphereMesh {
2
- vertices: Float32Array;
3
- indices: Uint16Array;
4
- }
5
- export declare const SphereLayout: {
6
- vertexStride: number;
7
- positionsOffset: number;
8
- normalOffset: number;
9
- uvOffset: number;
10
- };
11
- export declare function createSphereMesh(radius: number, widthSegments?: number, heightSegments?: number, randomness?: number): SphereMesh;
12
- //# sourceMappingURL=sphere.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sphere.d.ts","sourceRoot":"","sources":["../../../../../../src/__tests__/components/meshes/sphere.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,YAAY;;;;;CAKxB,CAAC;AAGF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,aAAa,SAAK,EAClB,cAAc,SAAK,EACnB,UAAU,SAAI,GACb,UAAU,CAkFZ"}
@@ -1,7 +0,0 @@
1
- export declare const mesh: {
2
- positions: [number, number, number][];
3
- triangles: [number, number, number][];
4
- normals: [number, number, number][];
5
- uvs: [number, number][];
6
- };
7
- //# sourceMappingURL=stanfordDragon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stanfordDragon.d.ts","sourceRoot":"","sources":["../../../../../../src/__tests__/components/meshes/stanfordDragon.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,IAAI;;;;;CAKhB,CAAC"}
@@ -1,6 +0,0 @@
1
- declare const _default: {
2
- cells: number[][];
3
- positions: number[][];
4
- };
5
- export default _default;
6
- //# sourceMappingURL=stanfordDragonData.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stanfordDragonData.d.ts","sourceRoot":"","sources":["../../../../../../src/__tests__/components/meshes/stanfordDragonData.ts"],"names":[],"mappings":";;;;AACA,wBAGE"}
@@ -1,6 +0,0 @@
1
- export declare const mesh: {
2
- positions: [number, number, number][];
3
- triangles: [number, number, number][];
4
- normals: [number, number, number][];
5
- };
6
- //# sourceMappingURL=teapot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"teapot.d.ts","sourceRoot":"","sources":["../../../../../../src/__tests__/components/meshes/teapot.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI;eACoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;eAC9B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;aAC1C,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;CAC1C,CAAC"}
@@ -1,10 +0,0 @@
1
- export declare function computeSurfaceNormals(positions: [number, number, number][], triangles: [number, number, number][]): [number, number, number][];
2
- export declare function generateNormals(maxAngle: number, positions: [number, number, number][], triangles: [number, number, number][]): {
3
- positions: [number, number, number][];
4
- normals: [number, number, number][];
5
- triangles: [number, number, number][];
6
- };
7
- type ProjectedPlane = "xy" | "xz" | "yz";
8
- export declare function computeProjectedPlaneUVs(positions: [number, number, number][], projectedPlane?: ProjectedPlane): [number, number][];
9
- export {};
10
- //# sourceMappingURL=utils.d.ts.map