@headless-three/renderer 0.1.10 → 0.2.0

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 (244) hide show
  1. package/README.md +3 -0
  2. package/dist/gpu-output.d.ts +81 -0
  3. package/dist/gpu-output.d.ts.map +1 -0
  4. package/dist/gpu-output.js +53 -0
  5. package/dist/gpu-output.js.map +1 -0
  6. package/dist/index.d.ts +26 -770
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +30 -6226
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.part-001.d.ts +95 -0
  11. package/dist/index.part-001.d.ts.map +1 -0
  12. package/dist/index.part-001.js +273 -0
  13. package/dist/index.part-001.js.map +1 -0
  14. package/dist/index.part-002.d.ts +69 -0
  15. package/dist/index.part-002.d.ts.map +1 -0
  16. package/dist/index.part-002.js +211 -0
  17. package/dist/index.part-002.js.map +1 -0
  18. package/dist/index.part-003.d.ts +105 -0
  19. package/dist/index.part-003.d.ts.map +1 -0
  20. package/dist/index.part-003.js +270 -0
  21. package/dist/index.part-003.js.map +1 -0
  22. package/dist/index.part-004.d.ts +78 -0
  23. package/dist/index.part-004.d.ts.map +1 -0
  24. package/dist/index.part-004.js +390 -0
  25. package/dist/index.part-004.js.map +1 -0
  26. package/dist/index.part-005.d.ts +75 -0
  27. package/dist/index.part-005.d.ts.map +1 -0
  28. package/dist/index.part-005.js +236 -0
  29. package/dist/index.part-005.js.map +1 -0
  30. package/dist/index.part-006.d.ts +105 -0
  31. package/dist/index.part-006.d.ts.map +1 -0
  32. package/dist/index.part-006.js +262 -0
  33. package/dist/index.part-006.js.map +1 -0
  34. package/dist/index.part-007.d.ts +112 -0
  35. package/dist/index.part-007.d.ts.map +1 -0
  36. package/dist/index.part-007.js +358 -0
  37. package/dist/index.part-007.js.map +1 -0
  38. package/dist/index.part-008.d.ts +238 -0
  39. package/dist/index.part-008.d.ts.map +1 -0
  40. package/dist/index.part-008.js +454 -0
  41. package/dist/index.part-008.js.map +1 -0
  42. package/dist/index.part-009.d.ts +46 -0
  43. package/dist/index.part-009.d.ts.map +1 -0
  44. package/dist/index.part-009.js +379 -0
  45. package/dist/index.part-009.js.map +1 -0
  46. package/dist/index.part-010.d.ts +23 -0
  47. package/dist/index.part-010.d.ts.map +1 -0
  48. package/dist/index.part-010.js +245 -0
  49. package/dist/index.part-010.js.map +1 -0
  50. package/dist/index.part-011.d.ts +21 -0
  51. package/dist/index.part-011.d.ts.map +1 -0
  52. package/dist/index.part-011.js +361 -0
  53. package/dist/index.part-011.js.map +1 -0
  54. package/dist/index.part-012.d.ts +115 -0
  55. package/dist/index.part-012.d.ts.map +1 -0
  56. package/dist/index.part-012.js +298 -0
  57. package/dist/index.part-012.js.map +1 -0
  58. package/dist/index.part-013.d.ts +37 -0
  59. package/dist/index.part-013.d.ts.map +1 -0
  60. package/dist/index.part-013.js +341 -0
  61. package/dist/index.part-013.js.map +1 -0
  62. package/dist/index.part-014.d.ts +43 -0
  63. package/dist/index.part-014.d.ts.map +1 -0
  64. package/dist/index.part-014.js +441 -0
  65. package/dist/index.part-014.js.map +1 -0
  66. package/dist/index.part-015.d.ts +45 -0
  67. package/dist/index.part-015.d.ts.map +1 -0
  68. package/dist/index.part-015.js +432 -0
  69. package/dist/index.part-015.js.map +1 -0
  70. package/dist/index.part-016.d.ts +55 -0
  71. package/dist/index.part-016.d.ts.map +1 -0
  72. package/dist/index.part-016.js +382 -0
  73. package/dist/index.part-016.js.map +1 -0
  74. package/dist/index.part-017.d.ts +55 -0
  75. package/dist/index.part-017.d.ts.map +1 -0
  76. package/dist/index.part-017.js +436 -0
  77. package/dist/index.part-017.js.map +1 -0
  78. package/dist/index.part-018.d.ts +34 -0
  79. package/dist/index.part-018.d.ts.map +1 -0
  80. package/dist/index.part-018.js +365 -0
  81. package/dist/index.part-018.js.map +1 -0
  82. package/dist/index.part-019.d.ts +29 -0
  83. package/dist/index.part-019.d.ts.map +1 -0
  84. package/dist/index.part-019.js +261 -0
  85. package/dist/index.part-019.js.map +1 -0
  86. package/dist/index.part-020.d.ts +37 -0
  87. package/dist/index.part-020.d.ts.map +1 -0
  88. package/dist/index.part-020.js +388 -0
  89. package/dist/index.part-020.js.map +1 -0
  90. package/dist/index.part-021.d.ts +10 -0
  91. package/dist/index.part-021.d.ts.map +1 -0
  92. package/dist/index.part-021.js +142 -0
  93. package/dist/index.part-021.js.map +1 -0
  94. package/dist/loaders.d.ts +27 -91
  95. package/dist/loaders.d.ts.map +1 -1
  96. package/dist/loaders.js +22 -855
  97. package/dist/loaders.js.map +1 -1
  98. package/dist/loaders.part-001.d.ts +163 -0
  99. package/dist/loaders.part-001.d.ts.map +1 -0
  100. package/dist/loaders.part-001.js +277 -0
  101. package/dist/loaders.part-001.js.map +1 -0
  102. package/dist/loaders.part-002.d.ts +33 -0
  103. package/dist/loaders.part-002.d.ts.map +1 -0
  104. package/dist/loaders.part-002.js +511 -0
  105. package/dist/loaders.part-002.js.map +1 -0
  106. package/dist/loaders.part-003.d.ts +23 -0
  107. package/dist/loaders.part-003.d.ts.map +1 -0
  108. package/dist/loaders.part-003.js +138 -0
  109. package/dist/loaders.part-003.js.map +1 -0
  110. package/dist/materials.d.ts +33 -49
  111. package/dist/materials.d.ts.map +1 -1
  112. package/dist/materials.js +39 -4339
  113. package/dist/materials.js.map +1 -1
  114. package/dist/materials.part-001.d.ts +153 -0
  115. package/dist/materials.part-001.d.ts.map +1 -0
  116. package/dist/materials.part-001.js +347 -0
  117. package/dist/materials.part-001.js.map +1 -0
  118. package/dist/materials.part-002.d.ts +46 -0
  119. package/dist/materials.part-002.d.ts.map +1 -0
  120. package/dist/materials.part-002.js +299 -0
  121. package/dist/materials.part-002.js.map +1 -0
  122. package/dist/materials.part-003.d.ts +14 -0
  123. package/dist/materials.part-003.d.ts.map +1 -0
  124. package/dist/materials.part-003.js +438 -0
  125. package/dist/materials.part-003.js.map +1 -0
  126. package/dist/materials.part-004.d.ts +30 -0
  127. package/dist/materials.part-004.d.ts.map +1 -0
  128. package/dist/materials.part-004.js +464 -0
  129. package/dist/materials.part-004.js.map +1 -0
  130. package/dist/materials.part-005.d.ts +38 -0
  131. package/dist/materials.part-005.d.ts.map +1 -0
  132. package/dist/materials.part-005.js +366 -0
  133. package/dist/materials.part-005.js.map +1 -0
  134. package/dist/materials.part-006.d.ts +18 -0
  135. package/dist/materials.part-006.d.ts.map +1 -0
  136. package/dist/materials.part-006.js +391 -0
  137. package/dist/materials.part-006.js.map +1 -0
  138. package/dist/materials.part-007.d.ts +24 -0
  139. package/dist/materials.part-007.d.ts.map +1 -0
  140. package/dist/materials.part-007.js +467 -0
  141. package/dist/materials.part-007.js.map +1 -0
  142. package/dist/materials.part-008.d.ts +95 -0
  143. package/dist/materials.part-008.d.ts.map +1 -0
  144. package/dist/materials.part-008.js +404 -0
  145. package/dist/materials.part-008.js.map +1 -0
  146. package/dist/materials.part-009.d.ts +89 -0
  147. package/dist/materials.part-009.d.ts.map +1 -0
  148. package/dist/materials.part-009.js +412 -0
  149. package/dist/materials.part-009.js.map +1 -0
  150. package/dist/materials.part-010.d.ts +46 -0
  151. package/dist/materials.part-010.d.ts.map +1 -0
  152. package/dist/materials.part-010.js +375 -0
  153. package/dist/materials.part-010.js.map +1 -0
  154. package/dist/materials.part-011.d.ts +25 -0
  155. package/dist/materials.part-011.d.ts.map +1 -0
  156. package/dist/materials.part-011.js +435 -0
  157. package/dist/materials.part-011.js.map +1 -0
  158. package/dist/materials.part-012.d.ts +15 -0
  159. package/dist/materials.part-012.d.ts.map +1 -0
  160. package/dist/materials.part-012.js +229 -0
  161. package/dist/materials.part-012.js.map +1 -0
  162. package/dist/scene.d.ts +19 -279
  163. package/dist/scene.d.ts.map +1 -1
  164. package/dist/scene.js +21 -3931
  165. package/dist/scene.js.map +1 -1
  166. package/dist/scene.part-001.d.ts +375 -0
  167. package/dist/scene.part-001.d.ts.map +1 -0
  168. package/dist/scene.part-001.js +20 -0
  169. package/dist/scene.part-001.js.map +1 -0
  170. package/dist/scene.part-002.d.ts +28 -0
  171. package/dist/scene.part-002.d.ts.map +1 -0
  172. package/dist/scene.part-002.js +311 -0
  173. package/dist/scene.part-002.js.map +1 -0
  174. package/dist/scene.part-003.d.ts +26 -0
  175. package/dist/scene.part-003.d.ts.map +1 -0
  176. package/dist/scene.part-003.js +384 -0
  177. package/dist/scene.part-003.js.map +1 -0
  178. package/dist/scene.part-004.d.ts +24 -0
  179. package/dist/scene.part-004.d.ts.map +1 -0
  180. package/dist/scene.part-004.js +287 -0
  181. package/dist/scene.part-004.js.map +1 -0
  182. package/dist/scene.part-005.d.ts +37 -0
  183. package/dist/scene.part-005.d.ts.map +1 -0
  184. package/dist/scene.part-005.js +350 -0
  185. package/dist/scene.part-005.js.map +1 -0
  186. package/dist/scene.part-006.d.ts +25 -0
  187. package/dist/scene.part-006.d.ts.map +1 -0
  188. package/dist/scene.part-006.js +362 -0
  189. package/dist/scene.part-006.js.map +1 -0
  190. package/dist/scene.part-007.d.ts +36 -0
  191. package/dist/scene.part-007.d.ts.map +1 -0
  192. package/dist/scene.part-007.js +417 -0
  193. package/dist/scene.part-007.js.map +1 -0
  194. package/dist/scene.part-008.d.ts +78 -0
  195. package/dist/scene.part-008.d.ts.map +1 -0
  196. package/dist/scene.part-008.js +416 -0
  197. package/dist/scene.part-008.js.map +1 -0
  198. package/dist/scene.part-009.d.ts +25 -0
  199. package/dist/scene.part-009.d.ts.map +1 -0
  200. package/dist/scene.part-009.js +330 -0
  201. package/dist/scene.part-009.js.map +1 -0
  202. package/dist/scene.part-010.d.ts +32 -0
  203. package/dist/scene.part-010.d.ts.map +1 -0
  204. package/dist/scene.part-010.js +336 -0
  205. package/dist/scene.part-010.js.map +1 -0
  206. package/dist/scene.part-011.d.ts +100 -0
  207. package/dist/scene.part-011.d.ts.map +1 -0
  208. package/dist/scene.part-011.js +262 -0
  209. package/dist/scene.part-011.js.map +1 -0
  210. package/dist/scene.part-012.d.ts +48 -0
  211. package/dist/scene.part-012.d.ts.map +1 -0
  212. package/dist/scene.part-012.js +357 -0
  213. package/dist/scene.part-012.js.map +1 -0
  214. package/dist/scene.part-013.d.ts +51 -0
  215. package/dist/scene.part-013.d.ts.map +1 -0
  216. package/dist/scene.part-013.js +368 -0
  217. package/dist/scene.part-013.js.map +1 -0
  218. package/dist/scene.part-014.d.ts +16 -0
  219. package/dist/scene.part-014.d.ts.map +1 -0
  220. package/dist/scene.part-014.js +112 -0
  221. package/dist/scene.part-014.js.map +1 -0
  222. package/dist/types.d.ts +53 -1564
  223. package/dist/types.d.ts.map +1 -1
  224. package/dist/types.js +4 -1
  225. package/dist/types.js.map +1 -1
  226. package/dist/types.part-001.d.ts +386 -0
  227. package/dist/types.part-001.d.ts.map +1 -0
  228. package/dist/types.part-001.js +4 -0
  229. package/dist/types.part-001.js.map +1 -0
  230. package/dist/types.part-002.d.ts +407 -0
  231. package/dist/types.part-002.d.ts.map +1 -0
  232. package/dist/types.part-002.js +3 -0
  233. package/dist/types.part-002.js.map +1 -0
  234. package/dist/types.part-003.d.ts +427 -0
  235. package/dist/types.part-003.d.ts.map +1 -0
  236. package/dist/types.part-003.js +3 -0
  237. package/dist/types.part-003.js.map +1 -0
  238. package/dist/types.part-004.d.ts +351 -0
  239. package/dist/types.part-004.d.ts.map +1 -0
  240. package/dist/types.part-004.js +3 -0
  241. package/dist/types.part-004.js.map +1 -0
  242. package/native.d.ts +40 -0
  243. package/native.js +53 -52
  244. package/package.json +10 -8
package/README.md CHANGED
@@ -68,6 +68,8 @@ const imageBuffer = renderer.render(scene, camera, { width: 512, height: 512 })
68
68
 
69
69
  `Renderer.renderAsync(scene, camera, options)` is a Promise-returning compatibility wrapper around the same scene-output contract.
70
70
 
71
+ `Renderer.renderGpuFrame(scene, camera, options)` returns a same-device GPU texture lease without RGBA readback when `Renderer.getGpuOutputCapabilities().texture.supported` is true. Native handles are borrowed `bigint` values and must be released deterministically. See the [GPU-native output contract](https://github.com/portwatcher/headless-three-renderer/blob/main/docs/gpu-native-output.md).
72
+
71
73
  `Renderer.sortObjects`, `Renderer.opaque`, `Renderer.transparent`, `Renderer.setOpaqueSort(fn)`, `Renderer.setTransparentSort(fn)`, and the matching `render()` options (`sortObjects`, `opaque`, `transparent`, `opaqueSort`, `transparentSort`) control native draw-list sorting and bucket inclusion.
72
74
 
73
75
  It also exports Node loader helpers:
@@ -122,6 +124,7 @@ Install the main package, not the platform package directly.
122
124
  - [Compatibility matrix](https://github.com/portwatcher/headless-three-renderer/blob/main/docs/compatibility.md)
123
125
  - [Node loader setup](https://github.com/portwatcher/headless-three-renderer/blob/main/docs/node-loader-setup.md)
124
126
  - [Scale budgets](https://github.com/portwatcher/headless-three-renderer/blob/main/docs/scale-budgets.md)
127
+ - [GPU-native output](https://github.com/portwatcher/headless-three-renderer/blob/main/docs/gpu-native-output.md)
125
128
  - [Release notes](https://github.com/portwatcher/headless-three-renderer/blob/main/docs/release-notes.md)
126
129
  - [glTF example](https://github.com/portwatcher/headless-three-renderer/blob/main/examples/render-gltf.mjs)
127
130
  - [VRM/VRMA example](https://github.com/portwatcher/headless-three-renderer/blob/main/examples/render-vrm.mjs)
@@ -0,0 +1,81 @@
1
+ export type GpuTextureHandleType = 'metal-texture' | 'vulkan-image' | 'd3d12-resource';
2
+ export interface GpuTextureOutputCapability {
3
+ supported: boolean;
4
+ handleType?: GpuTextureHandleType;
5
+ synchronization: 'submission-complete';
6
+ scope: 'same-renderer-device';
7
+ format: 'rgba8unorm';
8
+ usage: 'copy-dst|copy-src|texture-binding';
9
+ layout: 'backend-managed-copy-dst';
10
+ reason?: string;
11
+ }
12
+ export interface DmaBufOutputCapability {
13
+ supported: boolean;
14
+ reason?: string;
15
+ }
16
+ export interface GpuOutputCapabilities {
17
+ backend: 'metal' | 'vulkan' | 'dx12' | 'gles' | 'browser-webgpu' | 'noop';
18
+ texture: GpuTextureOutputCapability;
19
+ dmaBuf: DmaBufOutputCapability;
20
+ }
21
+ export interface DmaBufPlane {
22
+ fd: number;
23
+ offset: number;
24
+ stride: number;
25
+ }
26
+ export interface DmaBufFrameLease {
27
+ width: number;
28
+ height: number;
29
+ fourcc: number;
30
+ modifier: bigint;
31
+ planes: DmaBufPlane[];
32
+ released: boolean;
33
+ release(): void;
34
+ }
35
+ interface NativeGpuFrameLeaseLike {
36
+ readonly width: number;
37
+ readonly height: number;
38
+ readonly format: string;
39
+ readonly backend: string;
40
+ readonly handleType: string;
41
+ readonly released: boolean;
42
+ readonly completed: boolean;
43
+ readonly scope: string;
44
+ readonly usage: string;
45
+ readonly layout: string;
46
+ nativeHandle(): bigint;
47
+ exportDmaBuf(): unknown;
48
+ release(): void;
49
+ }
50
+ /**
51
+ * Owns one rendered GPU texture and controls the lifetime of its borrowed
52
+ * native handle. Call `release()` in a `finally` block when interop completes.
53
+ */
54
+ export declare class GpuFrameLease {
55
+ private readonly nativeLease;
56
+ constructor(nativeLease: NativeGpuFrameLeaseLike);
57
+ get width(): number;
58
+ get height(): number;
59
+ get format(): 'rgba8unorm';
60
+ get backend(): GpuOutputCapabilities['backend'];
61
+ get handleType(): GpuTextureHandleType;
62
+ get released(): boolean;
63
+ get completed(): true;
64
+ get scope(): 'same-renderer-device';
65
+ get usage(): 'copy-dst|copy-src|texture-binding';
66
+ get layout(): 'backend-managed-copy-dst';
67
+ /**
68
+ * Returns a borrowed MTLTexture*, VkImage, or ID3D12Resource* bigint.
69
+ * It is valid only for integrations already using this renderer's native
70
+ * device/context. Never destroy it, use it after release, or access/transition
71
+ * it concurrently with renderer work.
72
+ */
73
+ nativeHandle(): bigint;
74
+ /** Export an owned DMA-BUF descriptor when `capabilities.dmaBuf.supported`. */
75
+ exportDmaBuf(): DmaBufFrameLease;
76
+ /** Idempotently invalidates the borrowed handle and drops the GPU texture. */
77
+ release(): void;
78
+ }
79
+ export declare function wrapGpuOutputCapabilities(value: unknown): GpuOutputCapabilities;
80
+ export {};
81
+ //# sourceMappingURL=gpu-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gpu-output.d.ts","sourceRoot":"","sources":["../api/gpu-output.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,cAAc,GAAG,gBAAgB,CAAA;AAEtF,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC,eAAe,EAAE,qBAAqB,CAAA;IACtC,KAAK,EAAE,sBAAsB,CAAA;IAC7B,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,mCAAmC,CAAA;IAC1C,MAAM,EAAE,0BAA0B,CAAA;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAAA;IACzE,OAAO,EAAE,0BAA0B,CAAA;IACnC,MAAM,EAAE,sBAAsB,CAAA;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,YAAY,IAAI,MAAM,CAAA;IACtB,YAAY,IAAI,OAAO,CAAA;IACvB,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;gBAEzC,WAAW,EAAE,uBAAuB;IAIhD,IAAI,KAAK,IAAI,MAAM,CAAkC;IACrD,IAAI,MAAM,IAAI,MAAM,CAAmC;IACvD,IAAI,MAAM,IAAI,YAAY,CAAmD;IAC7E,IAAI,OAAO,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAE9C;IACD,IAAI,UAAU,IAAI,oBAAoB,CAErC;IACD,IAAI,QAAQ,IAAI,OAAO,CAAqC;IAC5D,IAAI,SAAS,IAAI,IAAI,CAA8C;IACnE,IAAI,KAAK,IAAI,sBAAsB,CAA4D;IAC/F,IAAI,KAAK,IAAI,mCAAmC,CAE/C;IACD,IAAI,MAAM,IAAI,0BAA0B,CAEvC;IAED;;;;;OAKG;IACH,YAAY,IAAI,MAAM;IAItB,+EAA+E;IAC/E,YAAY,IAAI,gBAAgB;IAIhC,8EAA8E;IAC9E,OAAO,IAAI,IAAI;CAGhB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAE/E"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GpuFrameLease = void 0;
4
+ exports.wrapGpuOutputCapabilities = wrapGpuOutputCapabilities;
5
+ /**
6
+ * Owns one rendered GPU texture and controls the lifetime of its borrowed
7
+ * native handle. Call `release()` in a `finally` block when interop completes.
8
+ */
9
+ class GpuFrameLease {
10
+ constructor(nativeLease) {
11
+ this.nativeLease = nativeLease;
12
+ }
13
+ get width() { return this.nativeLease.width; }
14
+ get height() { return this.nativeLease.height; }
15
+ get format() { return this.nativeLease.format; }
16
+ get backend() {
17
+ return this.nativeLease.backend;
18
+ }
19
+ get handleType() {
20
+ return this.nativeLease.handleType;
21
+ }
22
+ get released() { return this.nativeLease.released; }
23
+ get completed() { return this.nativeLease.completed; }
24
+ get scope() { return this.nativeLease.scope; }
25
+ get usage() {
26
+ return this.nativeLease.usage;
27
+ }
28
+ get layout() {
29
+ return this.nativeLease.layout;
30
+ }
31
+ /**
32
+ * Returns a borrowed MTLTexture*, VkImage, or ID3D12Resource* bigint.
33
+ * It is valid only for integrations already using this renderer's native
34
+ * device/context. Never destroy it, use it after release, or access/transition
35
+ * it concurrently with renderer work.
36
+ */
37
+ nativeHandle() {
38
+ return this.nativeLease.nativeHandle();
39
+ }
40
+ /** Export an owned DMA-BUF descriptor when `capabilities.dmaBuf.supported`. */
41
+ exportDmaBuf() {
42
+ return this.nativeLease.exportDmaBuf();
43
+ }
44
+ /** Idempotently invalidates the borrowed handle and drops the GPU texture. */
45
+ release() {
46
+ this.nativeLease.release();
47
+ }
48
+ }
49
+ exports.GpuFrameLease = GpuFrameLease;
50
+ function wrapGpuOutputCapabilities(value) {
51
+ return value;
52
+ }
53
+ //# sourceMappingURL=gpu-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gpu-output.js","sourceRoot":"","sources":["../api/gpu-output.ts"],"names":[],"mappings":";;;AA2GA,8DAEC;AArDD;;;GAGG;AACH,MAAa,aAAa;IAGxB,YAAY,WAAoC;QAC9C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;IAED,IAAI,KAAK,KAAa,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA,CAAC,CAAC;IACrD,IAAI,MAAM,KAAa,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAA,CAAC,CAAC;IACvD,IAAI,MAAM,KAAmB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAsB,CAAA,CAAC,CAAC;IAC7E,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,OAA2C,CAAA;IACrE,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,UAAkC,CAAA;IAC5D,CAAC;IACD,IAAI,QAAQ,KAAc,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAA,CAAC,CAAC;IAC5D,IAAI,SAAS,KAAW,OAAO,IAAI,CAAC,WAAW,CAAC,SAAiB,CAAA,CAAC,CAAC;IACnE,IAAI,KAAK,KAA6B,OAAO,IAAI,CAAC,WAAW,CAAC,KAA+B,CAAA,CAAC,CAAC;IAC/F,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,KAA4C,CAAA;IACtE,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,MAAoC,CAAA;IAC9D,CAAC;IAED;;;;;OAKG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAA;IACxC,CAAC;IAED,+EAA+E;IAC/E,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAsB,CAAA;IAC5D,CAAC;IAED,8EAA8E;IAC9E,OAAO;QACL,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;CACF;AA7CD,sCA6CC;AAED,SAAgB,yBAAyB,CAAC,KAAc;IACtD,OAAO,KAA8B,CAAA;AACvC,CAAC"}