@flighthq/render-wgpu 0.2.1-next.841.373388f → 0.3.0-next.1032.e2b99fc
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.
- package/dist/contract.d.ts +22 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +22 -0
- package/dist/contract.js.map +1 -0
- package/dist/index.d.ts +1 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -18
- package/dist/index.js.map +1 -1
- package/dist/wgpuAdapterCapabilities.d.ts +1 -1
- package/dist/wgpuAdapterCapabilities.d.ts.map +1 -1
- package/dist/wgpuBackground.d.ts +1 -1
- package/dist/wgpuBackground.d.ts.map +1 -1
- package/dist/wgpuBackground.js +2 -2
- package/dist/wgpuBackground.js.map +1 -1
- package/dist/wgpuCompressedTexture.d.ts +1 -1
- package/dist/wgpuCompressedTexture.d.ts.map +1 -1
- package/dist/wgpuCompressedTexture.js +4 -7
- package/dist/wgpuCompressedTexture.js.map +1 -1
- package/dist/wgpuDraw.d.ts +7 -5
- package/dist/wgpuDraw.d.ts.map +1 -1
- package/dist/wgpuDraw.js +76 -56
- package/dist/wgpuDraw.js.map +1 -1
- package/dist/wgpuExternalTexture.d.ts +4 -0
- package/dist/wgpuExternalTexture.d.ts.map +1 -0
- package/dist/wgpuExternalTexture.js +58 -0
- package/dist/wgpuExternalTexture.js.map +1 -0
- package/dist/wgpuFullscreenPass.d.ts +1 -1
- package/dist/wgpuFullscreenPass.d.ts.map +1 -1
- package/dist/wgpuMaterialRegistry.d.ts +1 -1
- package/dist/wgpuMaterialRegistry.d.ts.map +1 -1
- package/dist/wgpuMaterialRegistry.js +3 -3
- package/dist/wgpuMaterialRegistry.js.map +1 -1
- package/dist/wgpuMipmap.d.ts +1 -1
- package/dist/wgpuMipmap.d.ts.map +1 -1
- package/dist/wgpuRenderState.d.ts +1 -1
- package/dist/wgpuRenderState.d.ts.map +1 -1
- package/dist/wgpuRenderState.js +22 -21
- package/dist/wgpuRenderState.js.map +1 -1
- package/dist/wgpuRenderTarget.d.ts +1 -1
- package/dist/wgpuRenderTarget.d.ts.map +1 -1
- package/dist/wgpuRenderTarget.js +4 -2
- package/dist/wgpuRenderTarget.js.map +1 -1
- package/dist/wgpuRenderTargetPool.d.ts +1 -1
- package/dist/wgpuRenderTargetPool.d.ts.map +1 -1
- package/dist/wgpuRenderTargetPool.js.map +1 -1
- package/dist/wgpuRenderTexture.d.ts +10 -0
- package/dist/wgpuRenderTexture.d.ts.map +1 -0
- package/dist/wgpuRenderTexture.js +73 -0
- package/dist/wgpuRenderTexture.js.map +1 -0
- package/dist/wgpuScissor.d.ts +1 -1
- package/dist/wgpuScissor.d.ts.map +1 -1
- package/dist/wgpuShader.d.ts +3 -3
- package/dist/wgpuShader.d.ts.map +1 -1
- package/dist/wgpuShader.js +28 -28
- package/dist/wgpuShader.js.map +1 -1
- package/dist/wgpuShaderBinding.d.ts +1 -1
- package/dist/wgpuShaderBinding.d.ts.map +1 -1
- package/dist/wgpuShaderBinding.js +1 -1
- package/dist/wgpuShaderBinding.js.map +1 -1
- package/dist/wgpuShaderRegistry.d.ts +1 -1
- package/dist/wgpuShaderRegistry.d.ts.map +1 -1
- package/dist/wgpuShaderRegistry.js +1 -1
- package/dist/wgpuShaderRegistry.js.map +1 -1
- package/dist/wgpuSurface.d.ts +2 -2
- package/dist/wgpuSurface.d.ts.map +1 -1
- package/dist/wgpuSurface.js +12 -12
- package/dist/wgpuSurface.js.map +1 -1
- package/dist/wgpuTestHelper.d.ts +1 -1
- package/dist/wgpuTestHelper.d.ts.map +1 -1
- package/dist/wgpuTextureResolver.d.ts +9 -0
- package/dist/wgpuTextureResolver.d.ts.map +1 -0
- package/dist/wgpuTextureResolver.js +61 -0
- package/dist/wgpuTextureResolver.js.map +1 -0
- package/dist/wgpuTextureUpload.d.ts +1 -1
- package/dist/wgpuTextureUpload.d.ts.map +1 -1
- package/dist/wgpuTextureUpload.js +3 -9
- package/dist/wgpuTextureUpload.js.map +1 -1
- package/package.json +12 -7
- package/src/wgpuCompressedTexture.test.ts +18 -35
- package/src/wgpuDraw.test.ts +111 -65
- package/src/wgpuExternalTexture.test.ts +35 -0
- package/src/wgpuMaterialRegistry.test.ts +4 -4
- package/src/wgpuMipmap.test.ts +1 -1
- package/src/wgpuRenderTarget.test.ts +15 -1
- package/src/wgpuRenderTexture.test.ts +99 -0
- package/src/wgpuShader.test.ts +8 -8
- package/src/wgpuShaderBinding.test.ts +8 -8
- package/src/wgpuShaderRegistry.test.ts +1 -1
- package/src/wgpuSurface.test.ts +3 -3
- package/src/wgpuTextureResolver.test.ts +156 -0
- package/src/wgpuTextureUpload.test.ts +2 -12
package/dist/wgpuShader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuShader.d.ts","sourceRoot":"","sources":["../src/wgpuShader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"wgpuShader.d.ts","sourceRoot":"","sources":["../src/wgpuShader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAiBrD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAiHrC,KAAK,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAqBrD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG;IAC7D,sBAAsB,EAAE,kBAAkB,CAAC;IAC3C,sBAAsB,EAAE,kBAAkB,CAAC;CAC5C,CAmBA;AAID,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,sBAAsB,EAAE,kBAAkB,EAC1C,sBAAsB,EAAE,kBAAkB,GACzC,iBAAiB,CAInB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,iBAAiB,CAQ/E;AAeD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,CAE5E;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,WAAW,EAAE,WAAW,GACvB,iBAAiB,CA8CnB;AAID,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,YAAY,EACzB,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EACzE,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C,IAAI,CAgBN;AAID,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EACjF,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,MAAM,CAcR;AAKD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACrF,EACD,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,oBAAoB,UAAQ,GAC3B,MAAM,CAsDR"}
|
package/dist/wgpuShader.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { BlendMode } from '@flighthq/types';
|
|
1
|
+
import { BlendMode } from '@flighthq/types/contract';
|
|
2
2
|
import { getWgpuRenderStateRuntime } from './wgpuRenderState';
|
|
3
3
|
// ---- WGSL source ----
|
|
4
4
|
// Uniform buffer layout (per-draw slot in the ring, 256-byte aligned):
|
|
5
5
|
// offset 0–47 : mat3x3f matrix (3 columns × 16 bytes each due to vec3 padding)
|
|
6
6
|
// offset 48 : f32 alpha
|
|
7
|
-
// offset 52 : u32
|
|
7
|
+
// offset 52 : u32 hasColorScaleBias
|
|
8
8
|
// offset 56 : u32 straightTextureAlpha
|
|
9
9
|
// offset 60 : f32 padding
|
|
10
|
-
// offset 64–79 : vec4f
|
|
11
|
-
// offset 80–95 : vec4f
|
|
10
|
+
// offset 64–79 : vec4f colorScale
|
|
11
|
+
// offset 80–95 : vec4f colorBias
|
|
12
12
|
// offset 96–111: f32 x0, y0, x1, y1 (quad pixel-space corners)
|
|
13
13
|
// offset 112–127: f32 u0, v0, u1, v1 (texture coordinates)
|
|
14
14
|
// Total used: 128 bytes; slot size: minUniformBufferOffsetAlignment (≥256)
|
|
@@ -17,11 +17,11 @@ const BITMAP_SHADER_SRC = /* wgsl */ `
|
|
|
17
17
|
struct Uniforms {
|
|
18
18
|
matrix : mat3x3f,
|
|
19
19
|
alpha : f32,
|
|
20
|
-
|
|
20
|
+
hasColorScaleBias : u32,
|
|
21
21
|
straightTextureAlpha : u32,
|
|
22
22
|
_pad1 : f32,
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
colorScale : vec4f,
|
|
24
|
+
colorBias : vec4f,
|
|
25
25
|
x0 : f32, y0 : f32, x1 : f32, y1 : f32,
|
|
26
26
|
u0 : f32, v0 : f32, u1 : f32, v1 : f32,
|
|
27
27
|
}
|
|
@@ -65,10 +65,10 @@ fn fs_main(in : VertexOut) -> @location(0) vec4f {
|
|
|
65
65
|
if (uni.straightTextureAlpha != 0u) {
|
|
66
66
|
color = vec4f(color.rgb * color.a, color.a);
|
|
67
67
|
}
|
|
68
|
-
if (uni.
|
|
68
|
+
if (uni.hasColorScaleBias != 0u && color.a > 0.0) {
|
|
69
69
|
// Unpremultiply, apply transform, repremultiply
|
|
70
70
|
color = vec4f(color.rgb / color.a, color.a);
|
|
71
|
-
color = clamp(color * uni.
|
|
71
|
+
color = clamp(color * uni.colorScale + uni.colorBias, vec4f(0.0), vec4f(1.0));
|
|
72
72
|
color = vec4f(color.rgb * color.a, color.a);
|
|
73
73
|
}
|
|
74
74
|
return color * clamp(uni.alpha, 0.0, 1.0);
|
|
@@ -80,11 +80,11 @@ const MASK_FRAGMENT_SRC = /* wgsl */ `
|
|
|
80
80
|
struct Uniforms {
|
|
81
81
|
matrix : mat3x3f,
|
|
82
82
|
alpha : f32,
|
|
83
|
-
|
|
83
|
+
hasColorScaleBias : u32,
|
|
84
84
|
_pad0 : f32,
|
|
85
85
|
_pad1 : f32,
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
colorScale : vec4f,
|
|
87
|
+
colorBias : vec4f,
|
|
88
88
|
x0 : f32, y0 : f32, x1 : f32, y1 : f32,
|
|
89
89
|
u0 : f32, v0 : f32, u1 : f32, v1 : f32,
|
|
90
90
|
}
|
|
@@ -180,7 +180,7 @@ function buildStencilFaceState(stencilMode) {
|
|
|
180
180
|
return { compare: 'always', passOp: 'keep', failOp: 'keep', depthFailOp: 'keep' };
|
|
181
181
|
}
|
|
182
182
|
// Shared by every immutable 2D pipeline family. WebGPU bakes blend state into the pipeline, so the
|
|
183
|
-
// bitmap,
|
|
183
|
+
// bitmap, quad-batch writer, and tessellated-shape paths must resolve the same node BlendMode table rather
|
|
184
184
|
// than each maintaining a partial copy. Unknown/shader-composited modes deliberately fall back to Normal.
|
|
185
185
|
export function getWgpuBlendState(blendMode) {
|
|
186
186
|
return (blendMode !== null ? BLEND_MODES[blendMode] : null) ?? NORMAL_BLEND;
|
|
@@ -251,10 +251,10 @@ export function setWgpuMatrixFromTransform(matrixArray, t, viewport) {
|
|
|
251
251
|
export function writeWgpuMatrixOnlyUniforms(state, renderProxy, transform, x0, y0, x1, y1, u0, v0, u1, v1) {
|
|
252
252
|
return writeWgpuQuadUniforms(state, { alpha: renderProxy.alpha, transform2D: transform }, null, x0, y0, x1, y1, u0, v0, u1, v1);
|
|
253
253
|
}
|
|
254
|
-
// Writes the standard uniforms (matrix + alpha + color
|
|
254
|
+
// Writes the standard uniforms (matrix + alpha + color adjustment + quad coords) into
|
|
255
255
|
// the ring buffer at the current uniformOffset, then advances the offset by uniformStride.
|
|
256
256
|
// Returns the byte offset of the slot just written (for use as the dynamic offset in setBindGroup).
|
|
257
|
-
export function writeWgpuQuadUniforms(state, renderProxy,
|
|
257
|
+
export function writeWgpuQuadUniforms(state, renderProxy, colorScaleBias, x0, y0, x1, y1, u0, v0, u1, v1, straightTextureAlpha = false) {
|
|
258
258
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
259
259
|
const byteOffset = runtime.uniformOffset;
|
|
260
260
|
const floatBase = byteOffset >> 2; // divide by 4
|
|
@@ -276,24 +276,24 @@ export function writeWgpuQuadUniforms(state, renderProxy, colorTransform, x0, y0
|
|
|
276
276
|
uniformData[floatBase + 11] = 0;
|
|
277
277
|
// alpha at float 12 (byte 48)
|
|
278
278
|
uniformData[floatBase + 12] = renderProxy.alpha;
|
|
279
|
-
//
|
|
279
|
+
// hasColorScaleBias at float 13 (byte 52) — written as u32. The color adjustment comes from the
|
|
280
280
|
// node's material (resolved by the caller); null → identity.
|
|
281
|
-
uniformDataU32[floatBase + 13] =
|
|
281
|
+
uniformDataU32[floatBase + 13] = colorScaleBias !== null ? 1 : 0;
|
|
282
282
|
// straightTextureAlpha at float 14 (byte 56) — native compressed blocks retain straight RGB and
|
|
283
|
-
// the display shader premultiplies their sample before color
|
|
283
|
+
// the display shader premultiplies their sample before color adjustments and fixed-function blend.
|
|
284
284
|
uniformDataU32[floatBase + 14] = straightTextureAlpha ? 1 : 0;
|
|
285
285
|
// padding float 15
|
|
286
286
|
uniformData[floatBase + 15] = 0;
|
|
287
|
-
//
|
|
288
|
-
uniformData[floatBase + 16] =
|
|
289
|
-
uniformData[floatBase + 17] =
|
|
290
|
-
uniformData[floatBase + 18] =
|
|
291
|
-
uniformData[floatBase + 19] =
|
|
292
|
-
//
|
|
293
|
-
uniformData[floatBase + 20] =
|
|
294
|
-
uniformData[floatBase + 21] =
|
|
295
|
-
uniformData[floatBase + 22] =
|
|
296
|
-
uniformData[floatBase + 23] =
|
|
287
|
+
// colorScale at float 16–19 (byte 64–79)
|
|
288
|
+
uniformData[floatBase + 16] = colorScaleBias?.redScale ?? 1;
|
|
289
|
+
uniformData[floatBase + 17] = colorScaleBias?.greenScale ?? 1;
|
|
290
|
+
uniformData[floatBase + 18] = colorScaleBias?.blueScale ?? 1;
|
|
291
|
+
uniformData[floatBase + 19] = colorScaleBias?.alphaScale ?? 1;
|
|
292
|
+
// colorBias at float 20–23 (byte 80–95)
|
|
293
|
+
uniformData[floatBase + 20] = colorScaleBias?.redBias ?? 0;
|
|
294
|
+
uniformData[floatBase + 21] = colorScaleBias?.greenBias ?? 0;
|
|
295
|
+
uniformData[floatBase + 22] = colorScaleBias?.blueBias ?? 0;
|
|
296
|
+
uniformData[floatBase + 23] = colorScaleBias?.alphaBias ?? 0;
|
|
297
297
|
// quad corners at float 24–31 (byte 96–127)
|
|
298
298
|
uniformData[floatBase + 24] = x0;
|
|
299
299
|
uniformData[floatBase + 25] = y0;
|
package/dist/wgpuShader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuShader.js","sourceRoot":"","sources":["../src/wgpuShader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"wgpuShader.js","sourceRoot":"","sources":["../src/wgpuShader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Node2D, RenderProxy2D, WgpuBitmapShader, WgpuRenderState } from '@flighthq/types';
|
|
1
|
+
import type { Node2D, RenderProxy2D, WgpuBitmapShader, WgpuRenderState } from '@flighthq/types/contract';
|
|
2
2
|
export declare function getWgpuShader(renderProxy: RenderProxy2D): WgpuBitmapShader | undefined;
|
|
3
3
|
export declare function resolveWgpuShader(state: WgpuRenderState, renderProxy: RenderProxy2D): WgpuBitmapShader | null;
|
|
4
4
|
export declare function setWgpuShader(state: WgpuRenderState, node: Node2D, shader: WgpuBitmapShader | null): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuShaderBinding.d.ts","sourceRoot":"","sources":["../src/wgpuShaderBinding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"wgpuShaderBinding.d.ts","sourceRoot":"","sources":["../src/wgpuShaderBinding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAMzG,wBAAgB,aAAa,CAAC,WAAW,EAAE,aAAa,GAAG,gBAAgB,GAAG,SAAS,CAEtF;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,GAAG,gBAAgB,GAAG,IAAI,CAQ7G;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAQzG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getOrCreateRenderProxy2D } from '@flighthq/render';
|
|
1
|
+
import { getOrCreateRenderProxy2D } from '@flighthq/render/contract';
|
|
2
2
|
import { getWgpuRenderStateRuntime } from './wgpuRenderState';
|
|
3
3
|
const _shaderBindings = new WeakMap();
|
|
4
4
|
export function getWgpuShader(renderProxy) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuShaderBinding.js","sourceRoot":"","sources":["../src/wgpuShaderBinding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"wgpuShaderBinding.js","sourceRoot":"","sources":["../src/wgpuShaderBinding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAGrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,eAAe,GAAG,IAAI,OAAO,EAAmC,CAAC;AAEvE,MAAM,UAAU,aAAa,CAAC,WAA0B;IACtD,OAAO,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED,8FAA8F;AAC9F,oGAAoG;AACpG,MAAM,UAAU,iBAAiB,CAAC,KAAsB,EAAE,WAA0B;IAClF,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC;IACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAsB,EAAE,IAAY,EAAE,MAA+B;IACjG,MAAM,WAAW,GAAG,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IACD,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACzC,yBAAyB,CAAC,KAAK,CAAC,CAAC,2BAA2B,GAAG,aAAa,CAAC;AAC/E,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { WgpuBitmapShader, WgpuRenderState } from '@flighthq/types';
|
|
1
|
+
import type { WgpuBitmapShader, WgpuRenderState } from '@flighthq/types/contract';
|
|
2
2
|
export declare function registerWgpuBitmapShader(state: WgpuRenderState, shader: WgpuBitmapShader): void;
|
|
3
3
|
//# sourceMappingURL=wgpuShaderRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuShaderRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuShaderRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"wgpuShaderRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuShaderRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAOlF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAE/F"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getWgpuRenderStateRuntime } from './wgpuRenderState';
|
|
2
2
|
// Registers a custom bitmap shader as the state-wide default, replacing the built-in quad shader.
|
|
3
|
-
// Use this to globally swap the render pipeline (for example a custom color-
|
|
3
|
+
// Use this to globally swap the render pipeline (for example a custom color-adjustment or tint
|
|
4
4
|
// shader) on a render state without per-node setWgpuShader bindings.
|
|
5
5
|
export function registerWgpuBitmapShader(state, shader) {
|
|
6
6
|
getWgpuRenderStateRuntime(state).defaultBitmapShader = shader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuShaderRegistry.js","sourceRoot":"","sources":["../src/wgpuShaderRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,kGAAkG;AAClG
|
|
1
|
+
{"version":3,"file":"wgpuShaderRegistry.js","sourceRoot":"","sources":["../src/wgpuShaderRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,kGAAkG;AAClG,+FAA+F;AAC/F,qEAAqE;AACrE,MAAM,UAAU,wBAAwB,CAAC,KAAsB,EAAE,MAAwB;IACvF,yBAAyB,CAAC,KAAK,CAAC,CAAC,mBAAmB,GAAG,MAAM,CAAC;AAChE,CAAC"}
|
package/dist/wgpuSurface.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Bitmap, WgpuRenderState } from '@flighthq/types/contract';
|
|
2
2
|
export declare function acquireWgpuFrameCaptureTexture(state: Readonly<WgpuRenderState>): GPUTexture | null;
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function createBitmapFromWgpuRenderState(state: Readonly<WgpuRenderState>): Promise<Bitmap>;
|
|
4
4
|
export declare function enableWgpuFrameCapture(state: Readonly<WgpuRenderState>): void;
|
|
5
5
|
export declare function encodeWgpuFrameCapture(state: Readonly<WgpuRenderState>, encoder: GPUCommandEncoder): void;
|
|
6
6
|
//# sourceMappingURL=wgpuSurface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuSurface.d.ts","sourceRoot":"","sources":["../src/wgpuSurface.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"wgpuSurface.d.ts","sourceRoot":"","sources":["../src/wgpuSurface.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAcxE,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,UAAU,GAAG,IAAI,CAmBlG;AAOD,wBAAsB,+BAA+B,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CA0CvG;AAMD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAE7E;AAKD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CA2BzG"}
|
package/dist/wgpuSurface.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createBitmap } from '@flighthq/bitmap/contract';
|
|
2
2
|
import { getWgpuRenderStateRuntime } from './wgpuRenderState';
|
|
3
|
-
// Opt-in capture of the rendered frame to a CPU
|
|
3
|
+
// Opt-in capture of the rendered frame to a CPU Bitmap. Two environment facts drive the design:
|
|
4
4
|
// (1) headless/software adapters never present the swapchain, and its texture reads back as zeros, so
|
|
5
5
|
// the frame is redirected into an offscreen COPY_SRC texture (acquireWgpuFrameCaptureTexture, used by
|
|
6
6
|
// renderWgpuBackground); (2) GPU work queued in a later task than the frame is dropped on these
|
|
7
7
|
// adapters, so submitWgpuRenderPass copies the capture texture into the retained capture buffer in the
|
|
8
|
-
// same frame (encodeWgpuFrameCapture), and
|
|
8
|
+
// same frame (encodeWgpuFrameCapture), and createBitmapFromWgpuRenderState only maps that buffer.
|
|
9
9
|
// Returns the offscreen texture the frame should render into when capture is enabled, creating/resizing
|
|
10
10
|
// it to the canvas on demand, or null when capture is off (the caller then renders to the swapchain).
|
|
11
11
|
// Internal: called by renderWgpuBackground to redirect the frame so its pixels stay readable.
|
|
@@ -28,26 +28,26 @@ export function acquireWgpuFrameCaptureTexture(state) {
|
|
|
28
28
|
runtime.frameCaptureTexture = texture;
|
|
29
29
|
return texture;
|
|
30
30
|
}
|
|
31
|
-
// Reads the most recently captured frame into a CPU
|
|
31
|
+
// Reads the most recently captured frame into a CPU Bitmap. Requires enableWgpuFrameCapture(state)
|
|
32
32
|
// before rendering and at least one submitWgpuRenderPass since (which fills the capture buffer);
|
|
33
33
|
// throws otherwise (calling it without enabling capture is API misuse). Only maps the retained buffer —
|
|
34
34
|
// no GPU work is queued here, since later-task GPU work is unreliable on the adapters this exists for.
|
|
35
|
-
// Allocates the returned
|
|
36
|
-
export async function
|
|
35
|
+
// Allocates the returned Bitmap; the capture buffer is retained and reused across frames.
|
|
36
|
+
export async function createBitmapFromWgpuRenderState(state) {
|
|
37
37
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
38
38
|
const buffer = runtime.frameCaptureBuffer;
|
|
39
39
|
if (buffer === null || buffer === undefined) {
|
|
40
|
-
throw new Error('
|
|
40
|
+
throw new Error('createBitmapFromWgpuRenderState requires enableWgpuFrameCapture(state) before rendering, then a submitWgpuRenderPass.');
|
|
41
41
|
}
|
|
42
42
|
const width = runtime.frameCaptureWidth;
|
|
43
43
|
const height = runtime.frameCaptureHeight;
|
|
44
44
|
const bytesPerRow = runtime.frameCaptureBytesPerRow;
|
|
45
45
|
await buffer.mapAsync(GPUMapMode.READ);
|
|
46
46
|
const mapped = new Uint8Array(buffer.getMappedRange());
|
|
47
|
-
const
|
|
48
|
-
const out =
|
|
47
|
+
const bitmap = createBitmap(width, height);
|
|
48
|
+
const out = bitmap.data;
|
|
49
49
|
// The preferred canvas format is BGRA on most platforms and RGBA on software adapters; normalize to
|
|
50
|
-
// the
|
|
50
|
+
// the Bitmap's RGBA byte order so coverage/fingerprint and saved pixels read correctly either way.
|
|
51
51
|
// Pixels are left premultiplied (the texture's stored form): functional content renders over an opaque
|
|
52
52
|
// background, so alpha is 255 and premultiplied == straight; do NOT un-premultiply here — dividing RGB
|
|
53
53
|
// by an 8-bit alpha amplifies quantization and clamps, blowing out exactly the semi-transparent pixels
|
|
@@ -68,9 +68,9 @@ export async function createSurfaceFromWgpuRenderState(state) {
|
|
|
68
68
|
}
|
|
69
69
|
// Unmap (not destroy) so the next frame's submit can copy into the retained buffer again.
|
|
70
70
|
buffer.unmap();
|
|
71
|
-
return
|
|
71
|
+
return bitmap;
|
|
72
72
|
}
|
|
73
|
-
// Enables opt-in frame capture on a render state so
|
|
73
|
+
// Enables opt-in frame capture on a render state so createBitmapFromWgpuRenderState can read it back.
|
|
74
74
|
// The frame is then drawn into an offscreen texture instead of the swapchain (the only reliably
|
|
75
75
|
// readable path on headless/software adapters); the canvas is not presented while capture is on. Leave
|
|
76
76
|
// it off for normal on-screen rendering. The capture texture and buffer are allocated lazily.
|
package/dist/wgpuSurface.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuSurface.js","sourceRoot":"","sources":["../src/wgpuSurface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"wgpuSurface.js","sourceRoot":"","sources":["../src/wgpuSurface.ts"],"names":[],"mappings":"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"}
|
package/dist/wgpuTestHelper.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WgpuRenderState } from '@flighthq/types';
|
|
1
|
+
import type { WgpuRenderState } from '@flighthq/types/contract';
|
|
2
2
|
export declare function createWgpuRenderStateForTest(): Promise<WgpuRenderState>;
|
|
3
3
|
export declare function installWgpuMock(): void;
|
|
4
4
|
//# sourceMappingURL=wgpuTestHelper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuTestHelper.d.ts","sourceRoot":"","sources":["../src/wgpuTestHelper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"wgpuTestHelper.d.ts","sourceRoot":"","sources":["../src/wgpuTestHelper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AA+HhE,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,eAAe,CAAC,CAK7E;AAED,wBAAgB,eAAe,IAAI,IAAI,CAiCtC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { TextureBackingKind, TextureLike, WgpuRenderState, WgpuTextureEntry, WgpuTextureResolver } from '@flighthq/types/contract';
|
|
2
|
+
export declare function registerWgpuBitmapTextureResolver(state: WgpuRenderState): void;
|
|
3
|
+
export declare function registerWgpuCompressedImageTextureResolver(state: WgpuRenderState): void;
|
|
4
|
+
export declare function registerWgpuImageTextureResolver(state: WgpuRenderState): void;
|
|
5
|
+
export declare function registerWgpuRenderTextureResolver(state: WgpuRenderState): void;
|
|
6
|
+
export declare function registerWgpuTextureResolver(state: WgpuRenderState, backingKind: TextureBackingKind, resolver: WgpuTextureResolver | null): void;
|
|
7
|
+
export declare function registerWgpuVideoTextureResolver(state: WgpuRenderState): void;
|
|
8
|
+
export declare function resolveWgpuTexture(state: WgpuRenderState, texture: Readonly<TextureLike>, premultiply?: boolean): WgpuTextureEntry | null;
|
|
9
|
+
//# sourceMappingURL=wgpuTextureResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuTextureResolver.d.ts","sourceRoot":"","sources":["../src/wgpuTextureResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAMV,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAkBlC,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE9E;AAED,wBAAgB,0CAA0C,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEvF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE7E;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE9E;AAID,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,kBAAkB,EAC/B,QAAQ,EAAE,mBAAmB,GAAG,IAAI,GACnC,IAAI,CAKN;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE7E;AAKD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC9B,WAAW,UAAQ,GAClB,gBAAgB,GAAG,IAAI,CAMzB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { getTextureBackingKind } from '@flighthq/texture/contract';
|
|
2
|
+
import { BitmapTextureBackingKind, CompressedImageTextureBackingKind, ImageTextureBackingKind, RenderTextureBackingKind, VideoTextureBackingKind, } from '@flighthq/types/contract';
|
|
3
|
+
import { bindWgpuBitmapTexture, bindWgpuCompressedImageTexture, bindWgpuImageResourceTexture, bindWgpuVideoTexture, } from './wgpuDraw';
|
|
4
|
+
import { getWgpuRenderStateRuntime } from './wgpuRenderState';
|
|
5
|
+
import { bindWgpuRenderTexture } from './wgpuRenderTexture';
|
|
6
|
+
export function registerWgpuBitmapTextureResolver(state) {
|
|
7
|
+
registerWgpuTextureResolver(state, BitmapTextureBackingKind, resolveWgpuBitmapTexture);
|
|
8
|
+
}
|
|
9
|
+
export function registerWgpuCompressedImageTextureResolver(state) {
|
|
10
|
+
registerWgpuTextureResolver(state, CompressedImageTextureBackingKind, resolveWgpuCompressedImageTexture);
|
|
11
|
+
}
|
|
12
|
+
export function registerWgpuImageTextureResolver(state) {
|
|
13
|
+
registerWgpuTextureResolver(state, ImageTextureBackingKind, resolveWgpuImageTexture);
|
|
14
|
+
}
|
|
15
|
+
export function registerWgpuRenderTextureResolver(state) {
|
|
16
|
+
registerWgpuTextureResolver(state, RenderTextureBackingKind, resolveWgpuRenderTexture);
|
|
17
|
+
}
|
|
18
|
+
// Registers or replaces one declared backing-kind resolver on this render state. Map.set is
|
|
19
|
+
// last-write-wins; passing null removes the key.
|
|
20
|
+
export function registerWgpuTextureResolver(state, backingKind, resolver) {
|
|
21
|
+
const runtime = getWgpuRenderStateRuntime(state);
|
|
22
|
+
const registry = (runtime.wgpuTextureResolverRegistry ??= new Map());
|
|
23
|
+
if (resolver === null)
|
|
24
|
+
registry.delete(backingKind);
|
|
25
|
+
else
|
|
26
|
+
registry.set(backingKind, resolver);
|
|
27
|
+
}
|
|
28
|
+
export function registerWgpuVideoTextureResolver(state) {
|
|
29
|
+
registerWgpuTextureResolver(state, VideoTextureBackingKind, resolveWgpuVideoTexture);
|
|
30
|
+
}
|
|
31
|
+
// Resolves through one keyed lookup using the backing's declared kind. Resolution may realize, upload,
|
|
32
|
+
// and cache the GPU entry, but unlike the GL twin it does not bind command-pass state; the draw caller
|
|
33
|
+
// binds the returned entry's group explicitly.
|
|
34
|
+
export function resolveWgpuTexture(state, texture, premultiply = false) {
|
|
35
|
+
const registry = getWgpuRenderStateRuntime(state).wgpuTextureResolverRegistry;
|
|
36
|
+
if (registry == null)
|
|
37
|
+
return null;
|
|
38
|
+
const backingKind = getTextureBackingKind(texture);
|
|
39
|
+
if (backingKind === null)
|
|
40
|
+
return null;
|
|
41
|
+
return registry.get(backingKind)?.(state, texture, premultiply) ?? null;
|
|
42
|
+
}
|
|
43
|
+
function resolveWgpuBitmapTexture(state, texture, premultiply) {
|
|
44
|
+
const bitmap = texture.storage.image;
|
|
45
|
+
return bitmap === null ? null : bindWgpuBitmapTexture(state, bitmap, texture.sampler.mipmaps, premultiply);
|
|
46
|
+
}
|
|
47
|
+
function resolveWgpuCompressedImageTexture(state, texture) {
|
|
48
|
+
const image = texture.storage.image;
|
|
49
|
+
return image === null ? null : bindWgpuCompressedImageTexture(state, image);
|
|
50
|
+
}
|
|
51
|
+
function resolveWgpuImageTexture(state, texture, premultiply) {
|
|
52
|
+
const image = texture.storage.image;
|
|
53
|
+
return image === null ? null : bindWgpuImageResourceTexture(state, image, texture.sampler.mipmaps, premultiply);
|
|
54
|
+
}
|
|
55
|
+
function resolveWgpuRenderTexture(state, texture) {
|
|
56
|
+
return bindWgpuRenderTexture(state, texture);
|
|
57
|
+
}
|
|
58
|
+
function resolveWgpuVideoTexture(state, texture) {
|
|
59
|
+
return bindWgpuVideoTexture(state, texture);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=wgpuTextureResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuTextureResolver.js","sourceRoot":"","sources":["../src/wgpuTextureResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ImageResource } from '@flighthq/types';
|
|
1
|
+
import type { ImageResource } from '@flighthq/types/contract';
|
|
2
2
|
export declare function uploadWgpuTextureData(device: GPUDevice, texture: GPUTexture, origin: GPUOrigin3D, width: number, height: number, data: Readonly<Uint8ClampedArray<ArrayBuffer>>): void;
|
|
3
3
|
export declare function uploadWgpuTextureElement(device: GPUDevice, texture: GPUTexture, origin: GPUOrigin3D, width: number, height: number, source: GPUCopyExternalImageSource): void;
|
|
4
4
|
export declare function uploadWgpuTextureImageResource(device: GPUDevice, texture: GPUTexture, origin: GPUOrigin3D, image: Readonly<ImageResource>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuTextureUpload.d.ts","sourceRoot":"","sources":["../src/wgpuTextureUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"wgpuTextureUpload.d.ts","sourceRoot":"","sources":["../src/wgpuTextureUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAS9D,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,GAC7C,IAAI,CAON;AAID,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,0BAA0B,GACjC,IAAI,CAEN;AAGD,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC7B,IAAI,CASN"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// caller owns texture creation and format.
|
|
4
4
|
// Uploads rgba8 CPU pixels through queue.writeTexture — the portable bedrock upload, reimplemented 1:1 by
|
|
5
5
|
// a native backend. `bytesPerRow` is width*4: a tightly-packed rgba8unorm (4 bytes/texel) region, which is
|
|
6
|
-
// exactly what a
|
|
6
|
+
// exactly what a Bitmap's `data` holds.
|
|
7
7
|
export function uploadWgpuTextureData(device, texture, origin, width, height, data) {
|
|
8
8
|
device.queue.writeTexture({ texture, origin }, data, { bytesPerRow: width * 4, rowsPerImage: height }, [width, height, 1]);
|
|
9
9
|
}
|
|
@@ -12,14 +12,8 @@ export function uploadWgpuTextureData(device, texture, origin, width, height, da
|
|
|
12
12
|
export function uploadWgpuTextureElement(device, texture, origin, width, height, source) {
|
|
13
13
|
device.queue.copyExternalImageToTexture({ source }, { texture, origin }, [width, height, 1]);
|
|
14
14
|
}
|
|
15
|
-
//
|
|
16
|
-
// portable `data` path (a generated Surface). Assumes the resource has pixels in at least one form.
|
|
15
|
+
// Uploads a host-backed ImageResource through the decoded-element fast path.
|
|
17
16
|
export function uploadWgpuTextureImageResource(device, texture, origin, image) {
|
|
18
|
-
|
|
19
|
-
uploadWgpuTextureElement(device, texture, origin, image.width, image.height, image.source);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
uploadWgpuTextureData(device, texture, origin, image.width, image.height, image.data);
|
|
23
|
-
}
|
|
17
|
+
uploadWgpuTextureElement(device, texture, origin, image.width, image.height, image.source);
|
|
24
18
|
}
|
|
25
19
|
//# sourceMappingURL=wgpuTextureUpload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuTextureUpload.js","sourceRoot":"","sources":["../src/wgpuTextureUpload.ts"],"names":[],"mappings":"AAEA,wGAAwG;AACxG,uGAAuG;AACvG,2CAA2C;AAE3C,0GAA0G;AAC1G,2GAA2G;AAC3G,
|
|
1
|
+
{"version":3,"file":"wgpuTextureUpload.js","sourceRoot":"","sources":["../src/wgpuTextureUpload.ts"],"names":[],"mappings":"AAEA,wGAAwG;AACxG,uGAAuG;AACvG,2CAA2C;AAE3C,0GAA0G;AAC1G,2GAA2G;AAC3G,wCAAwC;AACxC,MAAM,UAAU,qBAAqB,CACnC,MAAiB,EACjB,OAAmB,EACnB,MAAmB,EACnB,KAAa,EACb,MAAc,EACd,IAA8C;IAE9C,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB,IAAsC,EACtC,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,EAChD,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CACnB,CAAC;AACJ,CAAC;AAED,uGAAuG;AACvG,kDAAkD;AAClD,MAAM,UAAU,wBAAwB,CACtC,MAAiB,EACjB,OAAmB,EACnB,MAAmB,EACnB,KAAa,EACb,MAAc,EACd,MAAkC;IAElC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,8BAA8B,CAC5C,MAAiB,EACjB,OAAmB,EACnB,MAAmB,EACnB,KAA8B;IAE9B,wBAAwB,CACtB,MAAM,EACN,OAAO,EACP,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,MAAoC,CAC3C,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/render-wgpu",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0-next.1032.e2b99fc",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
".": {
|
|
14
14
|
"types": "./dist/index.d.ts",
|
|
15
15
|
"default": "./dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./contract": {
|
|
18
|
+
"types": "./dist/contract.d.ts",
|
|
19
|
+
"default": "./dist/contract.js"
|
|
16
20
|
}
|
|
17
21
|
},
|
|
18
22
|
"files": [
|
|
@@ -32,12 +36,13 @@
|
|
|
32
36
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
33
37
|
},
|
|
34
38
|
"dependencies": {
|
|
35
|
-
"@flighthq/color": "0.
|
|
36
|
-
"@flighthq/scene2d": "0.
|
|
37
|
-
"@flighthq/geometry": "0.
|
|
38
|
-
"@flighthq/render": "0.
|
|
39
|
-
"@flighthq/
|
|
40
|
-
"@flighthq/
|
|
39
|
+
"@flighthq/color": "0.3.0-next.1032.e2b99fc",
|
|
40
|
+
"@flighthq/scene2d": "0.3.0-next.1032.e2b99fc",
|
|
41
|
+
"@flighthq/geometry": "0.3.0-next.1032.e2b99fc",
|
|
42
|
+
"@flighthq/render": "0.3.0-next.1032.e2b99fc",
|
|
43
|
+
"@flighthq/bitmap": "0.3.0-next.1032.e2b99fc",
|
|
44
|
+
"@flighthq/texture": "0.3.0-next.1032.e2b99fc",
|
|
45
|
+
"@flighthq/types": "0.3.0-next.1032.e2b99fc"
|
|
41
46
|
},
|
|
42
47
|
"devDependencies": {
|
|
43
48
|
"@webgpu/types": "*",
|