@flighthq/render-wgpu 0.2.1-next.841.373388f → 0.3.0-edge.1516.1b4fb2b
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 +25 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +25 -0
- package/dist/contract.js.map +1 -0
- package/dist/enableWgpuTextureResolverGuards.d.ts +4 -0
- package/dist/enableWgpuTextureResolverGuards.d.ts.map +1 -0
- package/dist/enableWgpuTextureResolverGuards.js +8 -0
- package/dist/enableWgpuTextureResolverGuards.js.map +1 -0
- package/dist/explainWgpuTextureResolution.d.ts +3 -0
- package/dist/explainWgpuTextureResolution.d.ts.map +1 -0
- package/dist/explainWgpuTextureResolution.js +14 -0
- package/dist/explainWgpuTextureResolution.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 +2 -2
- package/dist/wgpuCompressedTexture.d.ts.map +1 -1
- package/dist/wgpuCompressedTexture.js +40 -12
- package/dist/wgpuCompressedTexture.js.map +1 -1
- package/dist/wgpuDraw.d.ts +10 -8
- package/dist/wgpuDraw.d.ts.map +1 -1
- package/dist/wgpuDraw.js +152 -76
- package/dist/wgpuDraw.js.map +1 -1
- package/dist/wgpuExternalImageSource.d.ts +3 -0
- package/dist/wgpuExternalImageSource.d.ts.map +1 -0
- package/dist/wgpuExternalImageSource.js +51 -0
- package/dist/wgpuExternalImageSource.js.map +1 -0
- package/dist/wgpuExternalTexture.d.ts +4 -0
- package/dist/wgpuExternalTexture.d.ts.map +1 -0
- package/dist/wgpuExternalTexture.js +62 -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/wgpuMipmap.js +11 -9
- package/dist/wgpuMipmap.js.map +1 -1
- package/dist/wgpuRenderState.d.ts +12 -3
- package/dist/wgpuRenderState.d.ts.map +1 -1
- package/dist/wgpuRenderState.js +220 -33
- 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 +15 -0
- package/dist/wgpuRenderTexture.d.ts.map +1 -0
- package/dist/wgpuRenderTexture.js +130 -0
- package/dist/wgpuRenderTexture.js.map +1 -0
- package/dist/wgpuRenderTexturePool.d.ts +7 -0
- package/dist/wgpuRenderTexturePool.d.ts.map +1 -0
- package/dist/wgpuRenderTexturePool.js +86 -0
- package/dist/wgpuRenderTexturePool.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 +32 -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 +61 -13
- package/dist/wgpuSurface.js.map +1 -1
- package/dist/wgpuTestHelper.d.ts +2 -1
- package/dist/wgpuTestHelper.d.ts.map +1 -1
- package/dist/wgpuTestHelper.js +15 -1
- package/dist/wgpuTestHelper.js.map +1 -1
- package/dist/wgpuTextureResolver.d.ts +9 -0
- package/dist/wgpuTextureResolver.d.ts.map +1 -0
- package/dist/wgpuTextureResolver.js +67 -0
- package/dist/wgpuTextureResolver.js.map +1 -0
- package/dist/wgpuTextureUpload.d.ts +2 -2
- package/dist/wgpuTextureUpload.d.ts.map +1 -1
- package/dist/wgpuTextureUpload.js +5 -10
- package/dist/wgpuTextureUpload.js.map +1 -1
- package/package.json +15 -7
- package/src/enableWgpuTextureResolverGuards.test.ts +65 -0
- package/src/explainWgpuTextureResolution.test.ts +36 -0
- package/src/wgpuCompressedTexture.test.ts +18 -35
- package/src/wgpuDraw.test.ts +177 -69
- package/src/wgpuExternalImageSource.test.ts +89 -0
- package/src/wgpuExternalTexture.test.ts +35 -0
- package/src/wgpuMaterialRegistry.test.ts +4 -4
- package/src/wgpuMipmap.test.ts +11 -3
- package/src/wgpuRenderState.test.ts +143 -11
- package/src/wgpuRenderTarget.test.ts +15 -1
- package/src/wgpuRenderTexture.test.ts +165 -0
- package/src/wgpuRenderTexturePool.test.ts +146 -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 +95 -3
- package/src/wgpuTextureResolver.test.ts +209 -0
- package/src/wgpuTextureUpload.test.ts +28 -13
package/dist/wgpuDraw.js
CHANGED
|
@@ -1,34 +1,40 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getTextureSource } from '@flighthq/texture/contract';
|
|
2
|
+
import { BlendMode } from '@flighthq/types/contract';
|
|
3
|
+
import { isWgpuExternalImageSourceReady, tryCopyWgpuExternalImageToTexture } from './wgpuExternalImageSource';
|
|
2
4
|
import { generateWgpuMipmaps, getWgpuMipLevelCount } from './wgpuMipmap';
|
|
3
5
|
import { getWgpuRenderStateRuntime, getWgpuSampler } from './wgpuRenderState';
|
|
4
6
|
import { getActiveWgpuPipeline, getWgpuPipeline, writeWgpuQuadUniforms } from './wgpuShader';
|
|
5
7
|
export function applyWgpuBlendMode(state, blendMode) {
|
|
6
8
|
getWgpuRenderStateRuntime(state).currentBlendMode = blendMode;
|
|
7
9
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// Returns the texture, view, and 2D bind group.
|
|
23
|
-
export function bindWgpuImageResourceTexture(state, image, generateMips = false, premultiply = false) {
|
|
10
|
+
export function bindWgpuBitmapTexture(state, bitmap, generateMips = false, premultiply = false, colorSpace = 'linear') {
|
|
11
|
+
return bindWgpuTextureSourceTexture(state, bitmap, generateMips, premultiply, colorSpace, uploadWgpuBitmapEntry);
|
|
12
|
+
}
|
|
13
|
+
export function bindWgpuCompressedImageTexture(state, image, colorSpace = 'linear') {
|
|
14
|
+
return bindWgpuTextureSourceTexture(state, image, false, false, colorSpace, uploadWgpuCompressedImageEntry);
|
|
15
|
+
}
|
|
16
|
+
// Uploads and caches the WebGPU texture for an Image. Bitmap and CompressedImage use sibling
|
|
17
|
+
// entry points below; they share only the identity/version cache bracket and keep representation-specific
|
|
18
|
+
// uploaders. Premultiplied and straight requests use separate caches so 2D and 3D sampling of one source
|
|
19
|
+
// cannot rewrite each other's realization. Returns the texture, view, and 2D bind group.
|
|
20
|
+
export function bindWgpuImageResourceTexture(state, image, generateMips = false, premultiply = false, colorSpace = 'linear') {
|
|
21
|
+
return bindWgpuTextureSourceTexture(state, image, generateMips, premultiply, colorSpace, uploadWgpuImageResourceEntry);
|
|
22
|
+
}
|
|
23
|
+
function bindWgpuTextureSourceTexture(state, image, generateMips, premultiply, colorSpace, upload) {
|
|
24
24
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
25
25
|
const cache = premultiply
|
|
26
|
-
?
|
|
27
|
-
|
|
26
|
+
? colorSpace === 'srgb'
|
|
27
|
+
? runtime.textureSourcePremultipliedSrgbTextureCache
|
|
28
|
+
: runtime.textureSourcePremultipliedTextureCache
|
|
29
|
+
: colorSpace === 'srgb'
|
|
30
|
+
? runtime.textureSourceStraightSrgbTextureCache
|
|
31
|
+
: runtime.textureSourceStraightTextureCache;
|
|
28
32
|
const cached = cache.get(image);
|
|
29
33
|
if (cached !== undefined && cached.version === image.version)
|
|
30
34
|
return cached;
|
|
31
|
-
const built =
|
|
35
|
+
const built = upload(state, image, generateMips, premultiply, colorSpace);
|
|
36
|
+
if (built === null)
|
|
37
|
+
return cached ?? null;
|
|
32
38
|
if (cached !== undefined) {
|
|
33
39
|
cached.texture.destroy();
|
|
34
40
|
cached.texture = built.texture;
|
|
@@ -81,6 +87,8 @@ export function bindWgpuTexture(state, imageSource, generateMips = false) {
|
|
|
81
87
|
width = imageSource.width || 1;
|
|
82
88
|
height = imageSource.height || 1;
|
|
83
89
|
}
|
|
90
|
+
if (!isWgpuExternalImageSourceReady(imageSource, width, height))
|
|
91
|
+
return null;
|
|
84
92
|
const mipLevelCount = generateMips ? getWgpuMipLevelCount(width, height) : 1;
|
|
85
93
|
const texture = device.createTexture({
|
|
86
94
|
size: [width, height, 1],
|
|
@@ -94,7 +102,17 @@ export function bindWgpuTexture(state, imageSource, generateMips = false) {
|
|
|
94
102
|
// internally, so premultipliedAlpha: true is the lossless pass-through; Image/ImageBitmap carry
|
|
95
103
|
// straight alpha and get premultiplied on copy. (A straight-alpha texture under premultiplied
|
|
96
104
|
// blend blows RGB out — it turned the semi-transparent shape panel opaque white.)
|
|
97
|
-
|
|
105
|
+
//
|
|
106
|
+
// Deliberately does NOT consult `image.alphaType`, and the asymmetry with scene-gl is not an
|
|
107
|
+
// oversight: `premultipliedAlpha` here DECLARES the destination's encoding and the browser derives
|
|
108
|
+
// whether a conversion is needed from the source it already owns, so an already-premultiplied source
|
|
109
|
+
// cannot be multiplied twice. WebGL's UNPACK_PREMULTIPLY_ALPHA_WEBGL is imperative — it multiplies
|
|
110
|
+
// whatever it is handed — which is why that path guards on the declared alphaType and this one must not.
|
|
111
|
+
const copied = tryCopyWgpuExternalImageToTexture(device.queue, { source: imageSource, flipY: false }, { texture, premultipliedAlpha: true }, width, height);
|
|
112
|
+
if (!copied) {
|
|
113
|
+
texture.destroy();
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
98
116
|
// The copy fills level 0 only; render the remaining levels by downsampling (WebGPU has no
|
|
99
117
|
// generateMipmap). Skipped for a single-level texture (mipLevelCount === 1).
|
|
100
118
|
if (mipLevelCount > 1)
|
|
@@ -121,24 +139,27 @@ function buildWgpuSmoothingBindGroup(state, runtime, view, sampler) {
|
|
|
121
139
|
],
|
|
122
140
|
});
|
|
123
141
|
}
|
|
124
|
-
// Dynamic
|
|
125
|
-
//
|
|
126
|
-
// only the bind group. Returns null until the
|
|
142
|
+
// Dynamic host-video upload. The texture is cached by Image source and copied only when its
|
|
143
|
+
// version advances; a resolution change recreates the allocation/view, and a sampler mutation rebuilds
|
|
144
|
+
// only the bind group. Returns null until the source element has a decoded frame.
|
|
127
145
|
export function bindWgpuVideoTexture(state, videoTexture) {
|
|
128
|
-
const
|
|
146
|
+
const image = getTextureSource(videoTexture);
|
|
147
|
+
const element = (image?.source ?? null);
|
|
129
148
|
if (element === null || element.readyState < 2 || element.videoWidth <= 0 || element.videoHeight <= 0)
|
|
130
149
|
return null;
|
|
131
150
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
132
|
-
const cache =
|
|
151
|
+
const cache = videoTexture.colorSpace === 'srgb'
|
|
152
|
+
? (runtime.videoSrgbTextureCache ??= new WeakMap())
|
|
153
|
+
: (runtime.videoTextureCache ??= new WeakMap());
|
|
133
154
|
const width = element.videoWidth;
|
|
134
155
|
const height = element.videoHeight;
|
|
135
156
|
const sampler = getWgpuVideoSampler(state, videoTexture);
|
|
136
|
-
let entry = cache.get(
|
|
157
|
+
let entry = cache.get(image);
|
|
137
158
|
if (entry === undefined || entry.width !== width || entry.height !== height) {
|
|
138
159
|
entry?.texture.destroy();
|
|
139
160
|
const texture = state.device.createTexture({
|
|
140
161
|
size: [width, height, 1],
|
|
141
|
-
format: 'rgba8unorm',
|
|
162
|
+
format: videoTexture.colorSpace === 'srgb' ? 'rgba8unorm-srgb' : 'rgba8unorm',
|
|
142
163
|
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
143
164
|
});
|
|
144
165
|
const view = texture.createView();
|
|
@@ -147,19 +168,21 @@ export function bindWgpuVideoTexture(state, videoTexture) {
|
|
|
147
168
|
height,
|
|
148
169
|
sampler,
|
|
149
170
|
texture,
|
|
150
|
-
|
|
171
|
+
uploadedVersion: -1,
|
|
151
172
|
view,
|
|
152
173
|
width,
|
|
153
174
|
};
|
|
154
|
-
cache.set(
|
|
175
|
+
cache.set(image, entry);
|
|
155
176
|
}
|
|
156
177
|
else if (entry.sampler !== sampler) {
|
|
157
178
|
entry.sampler = sampler;
|
|
158
179
|
entry.bindGroup = buildWgpuTextureBindGroup(state, entry.view, sampler);
|
|
159
180
|
}
|
|
160
|
-
if (entry.
|
|
161
|
-
state.device.queue
|
|
162
|
-
|
|
181
|
+
if (entry.uploadedVersion !== image.version) {
|
|
182
|
+
const copied = tryCopyWgpuExternalImageToTexture(state.device.queue, { source: element, flipY: false }, { texture: entry.texture, premultipliedAlpha: true }, width, height);
|
|
183
|
+
if (!copied)
|
|
184
|
+
return entry.uploadedVersion < 0 ? null : entry;
|
|
185
|
+
entry.uploadedVersion = image.version;
|
|
163
186
|
}
|
|
164
187
|
return entry;
|
|
165
188
|
}
|
|
@@ -180,12 +203,18 @@ export function createWgpuTextureEntry(state, width, height, canvas) {
|
|
|
180
203
|
const { textureBindGroupLayout } = runtime;
|
|
181
204
|
const w = Math.max(1, width);
|
|
182
205
|
const h = Math.max(1, height);
|
|
206
|
+
if (!isWgpuExternalImageSourceReady(canvas, w, h))
|
|
207
|
+
return null;
|
|
183
208
|
const texture = device.createTexture({
|
|
184
209
|
size: [w, h, 1],
|
|
185
210
|
format: 'rgba8unorm',
|
|
186
211
|
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
187
212
|
});
|
|
188
|
-
device.queue
|
|
213
|
+
const copied = tryCopyWgpuExternalImageToTexture(device.queue, { source: canvas, flipY: false }, { texture, premultipliedAlpha: true }, w, h);
|
|
214
|
+
if (!copied) {
|
|
215
|
+
texture.destroy();
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
189
218
|
const view = texture.createView();
|
|
190
219
|
const sampler = state.allowSmoothing ? runtime.linearSampler : runtime.nearestSampler;
|
|
191
220
|
const bindGroup = device.createBindGroup({
|
|
@@ -198,13 +227,20 @@ export function createWgpuTextureEntry(state, width, height, canvas) {
|
|
|
198
227
|
return { texture, view, bindGroup };
|
|
199
228
|
}
|
|
200
229
|
export function destroyWgpuVideoTexture(state, videoTexture) {
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
if (entry === undefined)
|
|
230
|
+
const image = getTextureSource(videoTexture);
|
|
231
|
+
if (image == null)
|
|
204
232
|
return false;
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
233
|
+
const runtime = getWgpuRenderStateRuntime(state);
|
|
234
|
+
let destroyed = false;
|
|
235
|
+
for (const cache of [runtime.videoTextureCache, runtime.videoSrgbTextureCache]) {
|
|
236
|
+
const entry = cache?.get(image);
|
|
237
|
+
if (entry === undefined)
|
|
238
|
+
continue;
|
|
239
|
+
entry.texture.destroy();
|
|
240
|
+
cache.delete(image);
|
|
241
|
+
destroyed = true;
|
|
242
|
+
}
|
|
243
|
+
return destroyed;
|
|
208
244
|
}
|
|
209
245
|
function buildWgpuTextureBindGroup(state, view, sampler) {
|
|
210
246
|
return state.device.createBindGroup({
|
|
@@ -217,34 +253,35 @@ function buildWgpuTextureBindGroup(state, view, sampler) {
|
|
|
217
253
|
}
|
|
218
254
|
function getWgpuVideoSampler(state, videoTexture) {
|
|
219
255
|
const sampler = videoTexture.sampler;
|
|
220
|
-
const
|
|
256
|
+
const minFilter = sampler.minFilter.startsWith('nearest') ? 'nearest' : 'linear';
|
|
257
|
+
const magFilter = sampler.magFilter.startsWith('nearest') ? 'nearest' : 'linear';
|
|
221
258
|
// A live frame carries base level only; mip-aware filters collapse to their base filter rather than
|
|
222
259
|
// sampling absent levels. Regenerating a full chain for every decoded frame would defeat the video
|
|
223
260
|
// dirty gate.
|
|
224
|
-
return getWgpuSampler(state,
|
|
261
|
+
return getWgpuSampler(state, minFilter, magFilter, sampler.wrapU, sampler.wrapV, undefined, sampler.anisotropy);
|
|
225
262
|
}
|
|
226
263
|
export function drawWgpuQuad(state, renderProxy, textureEntry, x0, y0, x1, y1, u0, v0, u1, v1) {
|
|
227
264
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
228
265
|
const pass = runtime.renderPass;
|
|
229
266
|
if (pass === null)
|
|
230
267
|
return;
|
|
231
|
-
const uniformOffset = writeWgpuQuadUniforms(state, renderProxy,
|
|
268
|
+
const uniformOffset = writeWgpuQuadUniforms(state, renderProxy, getWgpuRenderProxyColorScaleBias(renderProxy), x0, y0, x1, y1, u0, v0, u1, v1, textureEntry.straightAlpha === true);
|
|
232
269
|
submitWgpuQuadDraw(state, uniformOffset, textureEntry.bindGroup);
|
|
233
270
|
}
|
|
234
271
|
export function drawWgpuQuadWithTransform(state, renderProxy, transform, textureEntry, x0, y0, x1, y1, u0, v0, u1, v1) {
|
|
235
272
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
236
273
|
if (runtime.renderPass === null)
|
|
237
274
|
return;
|
|
238
|
-
const uniformOffset = writeWgpuQuadUniforms(state, { alpha: renderProxy.alpha, transform2D: transform },
|
|
275
|
+
const uniformOffset = writeWgpuQuadUniforms(state, { alpha: renderProxy.alpha, transform2D: transform }, getWgpuRenderProxyColorScaleBias(renderProxy), x0, y0, x1, y1, u0, v0, u1, v1, textureEntry.straightAlpha === true);
|
|
239
276
|
submitWgpuQuadDraw(state, uniformOffset, textureEntry.bindGroup);
|
|
240
277
|
}
|
|
241
278
|
export function enableWgpuBlendModeSupport(state) {
|
|
242
279
|
state.applyBlendMode = applyWgpuBlendMode;
|
|
243
280
|
}
|
|
244
|
-
// Effective node-level color
|
|
281
|
+
// Effective node-level color adjustment for a render node — the resolved HasColorScaleBias trait. Used
|
|
245
282
|
// by the immediate (display-object) draw path; the batch path folds it per-instance instead.
|
|
246
|
-
export function
|
|
247
|
-
return renderProxy.
|
|
283
|
+
export function getWgpuRenderProxyColorScaleBias(renderProxy) {
|
|
284
|
+
return renderProxy.colorScaleBias ?? null;
|
|
248
285
|
}
|
|
249
286
|
// The group(1) bind group a 2D bitmap should sample through for a per-bitmap `smoothing` preference:
|
|
250
287
|
// `null` returns the entry's default bind group (the global `state.allowSmoothing` sampler, for
|
|
@@ -278,59 +315,98 @@ export function updateWgpuTextureEntry(state, entry, canvas) {
|
|
|
278
315
|
const { device } = state;
|
|
279
316
|
const w = Math.max(1, canvas.width);
|
|
280
317
|
const h = Math.max(1, canvas.height);
|
|
281
|
-
|
|
318
|
+
if (!isWgpuExternalImageSourceReady(canvas, w, h))
|
|
319
|
+
return;
|
|
320
|
+
tryCopyWgpuExternalImageToTexture(device.queue, { source: canvas, flipY: false }, { texture: entry.texture, premultipliedAlpha: true }, w, h);
|
|
282
321
|
}
|
|
283
322
|
// Pre-warm the normal + blend pipelines so the first frame doesn't stall.
|
|
284
323
|
export function warmWgpuPipelines(state) {
|
|
285
324
|
getWgpuPipeline(state, BlendMode.Normal, 'normal');
|
|
286
325
|
getWgpuPipeline(state, BlendMode.Add, 'normal');
|
|
287
326
|
}
|
|
288
|
-
//
|
|
327
|
+
// Converts an rgba8 buffer between straight and premultiplied alpha, in either direction. Allocates, but runs
|
|
289
328
|
// only on a texture upload (cache miss or content change), never in the per-frame draw path.
|
|
290
|
-
function
|
|
329
|
+
function convertRgba8AlphaEncoding(data, toPremultiplied) {
|
|
291
330
|
const out = new Uint8ClampedArray(data.length);
|
|
292
331
|
for (let i = 0; i < data.length; i += 4) {
|
|
293
332
|
const a = data[i + 3];
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
333
|
+
// The two directions differ only in this factor, so they share one loop rather than shipping two.
|
|
334
|
+
// A fully transparent texel carries no recoverable color either way, so it stays zero instead of
|
|
335
|
+
// dividing by zero on the un-premultiply side.
|
|
336
|
+
const scale = toPremultiplied ? a / 255 : a === 0 ? 0 : 255 / a;
|
|
337
|
+
out[i] = data[i] * scale;
|
|
338
|
+
out[i + 1] = data[i + 1] * scale;
|
|
339
|
+
out[i + 2] = data[i + 2] * scale;
|
|
297
340
|
out[i + 3] = a;
|
|
298
341
|
}
|
|
299
342
|
return out;
|
|
300
343
|
}
|
|
301
|
-
// Allocates a GPU texture for
|
|
302
|
-
//
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
// is premultiplied on the CPU; when clear, both upload the pixels as-is so the straight-blend 3D path
|
|
306
|
-
// keeps its albedo and data maps untouched. The per-upload half of bindWgpuImageResourceTexture, split out
|
|
307
|
-
// so the cache/version bracket stays legible.
|
|
308
|
-
function uploadWgpuImageResourceEntry(state, image, generateMips, premultiply) {
|
|
344
|
+
// Allocates a GPU texture for a Bitmap and writes its CPU-readable pixels, premultiplying a straight
|
|
345
|
+
// bitmap only when the caller requests a premultiplied realization.
|
|
346
|
+
function uploadWgpuBitmapEntry(state, image, generateMips, premultiply, colorSpace) {
|
|
347
|
+
const bitmap = image;
|
|
309
348
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
310
349
|
const { device } = state;
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
if (compressed != null)
|
|
314
|
-
return compressed;
|
|
315
|
-
}
|
|
316
|
-
const width = image.width || 1;
|
|
317
|
-
const height = image.height || 1;
|
|
350
|
+
const width = bitmap.width || 1;
|
|
351
|
+
const height = bitmap.height || 1;
|
|
318
352
|
const mipLevelCount = generateMips ? getWgpuMipLevelCount(width, height) : 1;
|
|
353
|
+
const format = colorSpace === 'srgb' ? 'rgba8unorm-srgb' : 'rgba8unorm';
|
|
319
354
|
const texture = device.createTexture({
|
|
320
355
|
size: [width, height, 1],
|
|
321
|
-
format
|
|
356
|
+
format,
|
|
322
357
|
mipLevelCount,
|
|
323
358
|
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
324
359
|
});
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
360
|
+
// Resolve the source's declared encoding to the one the caller asked for, in EITHER direction. The
|
|
361
|
+
// straight direction is what makes a premultiplied source safe as a 3D material map: 3D binds with
|
|
362
|
+
// premultiply=false and its fragment tail multiplies by alpha at the end, so handing it already-
|
|
363
|
+
// premultiplied rgb would square the coverage and darken every translucent texel.
|
|
364
|
+
const data = premultiply && bitmap.alphaType !== 'premultiplied'
|
|
365
|
+
? convertRgba8AlphaEncoding(bitmap.data, true)
|
|
366
|
+
: !premultiply && bitmap.alphaType === 'premultiplied'
|
|
367
|
+
? convertRgba8AlphaEncoding(bitmap.data, false)
|
|
368
|
+
: bitmap.data;
|
|
369
|
+
device.queue.writeTexture({ texture }, data, { bytesPerRow: width * 4, rowsPerImage: height }, [width, height, 1]);
|
|
370
|
+
if (mipLevelCount > 1)
|
|
371
|
+
generateWgpuMipmaps(state, texture, width, height, format);
|
|
372
|
+
const view = texture.createView();
|
|
373
|
+
const sampler = state.allowSmoothing ? runtime.linearSampler : runtime.nearestSampler;
|
|
374
|
+
const bindGroup = device.createBindGroup({
|
|
375
|
+
layout: runtime.textureBindGroupLayout,
|
|
376
|
+
entries: [
|
|
377
|
+
{ binding: 0, resource: view },
|
|
378
|
+
{ binding: 1, resource: sampler },
|
|
379
|
+
],
|
|
380
|
+
});
|
|
381
|
+
return { texture, view, bindGroup };
|
|
382
|
+
}
|
|
383
|
+
function uploadWgpuCompressedImageEntry(state, image, _generateMips, _premultiply, colorSpace) {
|
|
384
|
+
const runtime = getWgpuRenderStateRuntime(state);
|
|
385
|
+
return (runtime.compressedTextureUpload?.(state, image, runtime.compressedTextureDecoder ?? null, colorSpace) ?? null);
|
|
386
|
+
}
|
|
387
|
+
function uploadWgpuImageResourceEntry(state, image, generateMips, premultiply, colorSpace) {
|
|
388
|
+
const resource = image;
|
|
389
|
+
const runtime = getWgpuRenderStateRuntime(state);
|
|
390
|
+
const { device } = state;
|
|
391
|
+
const width = resource.width || 1;
|
|
392
|
+
const height = resource.height || 1;
|
|
393
|
+
if (!isWgpuExternalImageSourceReady(resource.source, width, height))
|
|
394
|
+
return null;
|
|
395
|
+
const mipLevelCount = generateMips ? getWgpuMipLevelCount(width, height) : 1;
|
|
396
|
+
const format = colorSpace === 'srgb' ? 'rgba8unorm-srgb' : 'rgba8unorm';
|
|
397
|
+
const texture = device.createTexture({
|
|
398
|
+
size: [width, height, 1],
|
|
399
|
+
format,
|
|
400
|
+
mipLevelCount,
|
|
401
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
402
|
+
});
|
|
403
|
+
const copied = tryCopyWgpuExternalImageToTexture(device.queue, { source: resource.source, flipY: false }, { texture, premultipliedAlpha: premultiply }, width, height);
|
|
404
|
+
if (!copied) {
|
|
405
|
+
texture.destroy();
|
|
406
|
+
return null;
|
|
331
407
|
}
|
|
332
408
|
if (mipLevelCount > 1)
|
|
333
|
-
generateWgpuMipmaps(state, texture, width, height,
|
|
409
|
+
generateWgpuMipmaps(state, texture, width, height, format);
|
|
334
410
|
const view = texture.createView();
|
|
335
411
|
const sampler = state.allowSmoothing ? runtime.linearSampler : runtime.nearestSampler;
|
|
336
412
|
const bindGroup = device.createBindGroup({
|
package/dist/wgpuDraw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuDraw.js","sourceRoot":"","sources":["../src/wgpuDraw.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wgpuDraw.js","sourceRoot":"","sources":["../src/wgpuDraw.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function isWgpuExternalImageSourceReady(source: GPUCopyExternalImageSource, width: number, height: number): boolean;
|
|
2
|
+
export declare function tryCopyWgpuExternalImageToTexture(queue: GPUQueue, source: Readonly<GPUCopyExternalImageSourceInfo>, destination: Readonly<GPUCopyExternalImageDestInfo>, width: number, height: number): boolean;
|
|
3
|
+
//# sourceMappingURL=wgpuExternalImageSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuExternalImageSource.d.ts","sourceRoot":"","sources":["../src/wgpuExternalImageSource.ts"],"names":[],"mappings":"AAGA,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,0BAA0B,EAClC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAyBT;AAKD,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,QAAQ,CAAC,8BAA8B,CAAC,EAChD,WAAW,EAAE,QAAQ,CAAC,4BAA4B,CAAC,EACnD,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAST"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// WebGPU rejects an external-image copy when the host source has no current pixels. This predicate
|
|
2
|
+
// covers the readiness state exposed by the platform; tryCopyWgpuExternalImageToTexture closes the
|
|
3
|
+
// remaining gap where the browser cannot snapshot an otherwise dimension-valid source.
|
|
4
|
+
export function isWgpuExternalImageSourceReady(source, width, height) {
|
|
5
|
+
if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0)
|
|
6
|
+
return false;
|
|
7
|
+
if (typeof HTMLCanvasElement !== 'undefined' && source instanceof HTMLCanvasElement) {
|
|
8
|
+
// There is no side-effect-free canvas context query: getContext('2d') binds an unbound canvas.
|
|
9
|
+
// The guarded copy below is the authoritative check for a missing, lost, or unsnapshotable context.
|
|
10
|
+
return source.width >= width && source.height >= height;
|
|
11
|
+
}
|
|
12
|
+
if (typeof HTMLImageElement !== 'undefined' && source instanceof HTMLImageElement) {
|
|
13
|
+
return source.complete && source.naturalWidth >= width && source.naturalHeight >= height;
|
|
14
|
+
}
|
|
15
|
+
if (typeof HTMLVideoElement !== 'undefined' && source instanceof HTMLVideoElement) {
|
|
16
|
+
return source.readyState >= 2 && source.videoWidth >= width && source.videoHeight >= height;
|
|
17
|
+
}
|
|
18
|
+
if (typeof ImageBitmap !== 'undefined' && source instanceof ImageBitmap) {
|
|
19
|
+
return source.width >= width && source.height >= height;
|
|
20
|
+
}
|
|
21
|
+
if (typeof OffscreenCanvas !== 'undefined' && source instanceof OffscreenCanvas) {
|
|
22
|
+
return source.width >= width && source.height >= height;
|
|
23
|
+
}
|
|
24
|
+
if (typeof VideoFrame !== 'undefined' && source instanceof VideoFrame) {
|
|
25
|
+
return source.displayWidth >= width && source.displayHeight >= height;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
// Canvas snapshots can fail after all observable readiness checks pass (notably while a frequently
|
|
30
|
+
// rerasterized 2D text canvas replaces its backing resource). That is expected source unavailability,
|
|
31
|
+
// so callers retain the previous texture and retry; security and destination/programming errors escape.
|
|
32
|
+
export function tryCopyWgpuExternalImageToTexture(queue, source, destination, width, height) {
|
|
33
|
+
if (!isWgpuExternalImageSourceReady(source.source, width, height))
|
|
34
|
+
return false;
|
|
35
|
+
try {
|
|
36
|
+
queue.copyExternalImageToTexture(source, destination, [width, height, 1]);
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (isWgpuExternalImageSourceUnavailableError(error))
|
|
41
|
+
return false;
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function isWgpuExternalImageSourceUnavailableError(error) {
|
|
46
|
+
if (typeof DOMException !== 'undefined' && error instanceof DOMException) {
|
|
47
|
+
return error.name === 'InvalidStateError' || error.name === 'OperationError';
|
|
48
|
+
}
|
|
49
|
+
return error instanceof TypeError && error.message.endsWith('Failed to copy content from external image.');
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=wgpuExternalImageSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuExternalImageSource.js","sourceRoot":"","sources":["../src/wgpuExternalImageSource.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,mGAAmG;AACnG,uFAAuF;AACvF,MAAM,UAAU,8BAA8B,CAC5C,MAAkC,EAClC,KAAa,EACb,MAAc;IAEd,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAEnG,IAAI,OAAO,iBAAiB,KAAK,WAAW,IAAI,MAAM,YAAY,iBAAiB,EAAE,CAAC;QACpF,+FAA+F;QAC/F,oGAAoG;QACpG,OAAO,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,gBAAgB,KAAK,WAAW,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;QAClF,OAAO,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,IAAI,KAAK,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC;IAC3F,CAAC;IACD,IAAI,OAAO,gBAAgB,KAAK,WAAW,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;QAClF,OAAO,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,IAAI,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC;IAC9F,CAAC;IACD,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;QACxE,OAAO,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,eAAe,KAAK,WAAW,IAAI,MAAM,YAAY,eAAe,EAAE,CAAC;QAChF,OAAO,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QACtE,OAAO,MAAM,CAAC,YAAY,IAAI,KAAK,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC;IACxE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mGAAmG;AACnG,sGAAsG;AACtG,wGAAwG;AACxG,MAAM,UAAU,iCAAiC,CAC/C,KAAe,EACf,MAAgD,EAChD,WAAmD,EACnD,KAAa,EACb,MAAc;IAEd,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAChF,IAAI,CAAC;QACH,KAAK,CAAC,0BAA0B,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,yCAAyC,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACnE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,yCAAyC,CAAC,KAAc;IAC/D,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QACzE,OAAO,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC;IAC/E,CAAC;IACD,OAAO,KAAK,YAAY,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC;AAC7G,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CreateExternalTextureOptions, Texture, WgpuRenderState } from '@flighthq/types/contract';
|
|
2
|
+
export declare function createExternalWgpuTexture(state: WgpuRenderState, handle: GPUTexture, options: Readonly<CreateExternalTextureOptions>): Texture;
|
|
3
|
+
export declare function disposeExternalWgpuTexture(state: WgpuRenderState, texture: Readonly<Texture>): boolean;
|
|
4
|
+
//# sourceMappingURL=wgpuExternalTexture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuExternalTexture.d.ts","sourceRoot":"","sources":["../src/wgpuExternalTexture.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,4BAA4B,EAE5B,OAAO,EAEP,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAMlC,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,QAAQ,CAAC,4BAA4B,CAAC,GAC9C,OAAO,CA6BT;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAGtG"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
+
import { cloneSampler, createTexture } from '@flighthq/texture/contract';
|
|
3
|
+
import { ExternalTextureSourceKind } from '@flighthq/types/contract';
|
|
4
|
+
import { getWgpuRenderStateRuntime, getWgpuSampler } from './wgpuRenderState';
|
|
5
|
+
import { registerWgpuTextureResolver } from './wgpuTextureResolver';
|
|
6
|
+
export function createExternalWgpuTexture(state, handle, options) {
|
|
7
|
+
const source = createEntity({
|
|
8
|
+
height: options.height,
|
|
9
|
+
kind: ExternalTextureSourceKind,
|
|
10
|
+
version: 0,
|
|
11
|
+
width: options.width,
|
|
12
|
+
});
|
|
13
|
+
const texture = createTexture({
|
|
14
|
+
colorSpace: options.colorSpace,
|
|
15
|
+
sampler: options.sampler ? cloneSampler(options.sampler) : undefined,
|
|
16
|
+
dimension: '2d',
|
|
17
|
+
source,
|
|
18
|
+
});
|
|
19
|
+
const view = handle.createView();
|
|
20
|
+
const sampler = getExternalWgpuSampler(state, texture);
|
|
21
|
+
const bindGroup = state.device.createBindGroup({
|
|
22
|
+
layout: getWgpuRenderStateRuntime(state).textureBindGroupLayout,
|
|
23
|
+
entries: [
|
|
24
|
+
{ binding: 0, resource: view },
|
|
25
|
+
{ binding: 1, resource: sampler },
|
|
26
|
+
],
|
|
27
|
+
});
|
|
28
|
+
(getWgpuRenderStateRuntime(state).wgpuExternalTextureCache ??= new WeakMap()).set(source, {
|
|
29
|
+
bindGroup,
|
|
30
|
+
texture: handle,
|
|
31
|
+
view,
|
|
32
|
+
});
|
|
33
|
+
registerWgpuTextureResolver(state, ExternalTextureSourceKind, resolveExternalWgpuTexture);
|
|
34
|
+
return texture;
|
|
35
|
+
}
|
|
36
|
+
export function disposeExternalWgpuTexture(state, texture) {
|
|
37
|
+
const source = getExternalTextureSource(texture);
|
|
38
|
+
return source === null ? false : (getWgpuRenderStateRuntime(state).wgpuExternalTextureCache?.delete(source) ?? false);
|
|
39
|
+
}
|
|
40
|
+
function getExternalWgpuSampler(state, texture) {
|
|
41
|
+
const sampler = texture.sampler;
|
|
42
|
+
const minFilter = sampler.minFilter.startsWith('nearest') ? 'nearest' : 'linear';
|
|
43
|
+
const magFilter = sampler.magFilter.startsWith('nearest') ? 'nearest' : 'linear';
|
|
44
|
+
const mipmapFilter = sampler.mipmaps
|
|
45
|
+
? sampler.minFilter.endsWith('mipmap-nearest')
|
|
46
|
+
? 'nearest'
|
|
47
|
+
: sampler.minFilter.endsWith('mipmap-linear')
|
|
48
|
+
? 'linear'
|
|
49
|
+
: undefined
|
|
50
|
+
: undefined;
|
|
51
|
+
return getWgpuSampler(state, minFilter, magFilter, sampler.wrapU, sampler.wrapV, mipmapFilter, sampler.anisotropy);
|
|
52
|
+
}
|
|
53
|
+
function resolveExternalWgpuTexture(state, texture) {
|
|
54
|
+
const source = getExternalTextureSource(texture);
|
|
55
|
+
return source === null ? null : (getWgpuRenderStateRuntime(state).wgpuExternalTextureCache?.get(source) ?? null);
|
|
56
|
+
}
|
|
57
|
+
function getExternalTextureSource(texture) {
|
|
58
|
+
if (texture.dimension !== '2d' || texture.source?.kind !== ExternalTextureSourceKind)
|
|
59
|
+
return null;
|
|
60
|
+
return texture.source;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=wgpuExternalTexture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wgpuExternalTexture.js","sourceRoot":"","sources":["../src/wgpuExternalTexture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { WgpuFullscreenPipeline, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types';
|
|
1
|
+
import type { WgpuFullscreenPipeline, WgpuRenderState, WgpuRenderTarget } from '@flighthq/types/contract';
|
|
2
2
|
export declare function createWgpuFullscreenPipeline(state: WgpuRenderState, fragmentWgsl: string, textureInputCount?: number, format?: GPUTextureFormat): WgpuFullscreenPipeline;
|
|
3
3
|
export declare function destroyWgpuFullscreenPipeline(_state: WgpuRenderState, _pipeline: WgpuFullscreenPipeline): void;
|
|
4
4
|
export declare function drawWgpuFullscreenPass(state: WgpuRenderState, wgpuPipeline: Readonly<WgpuFullscreenPipeline>, inputs: ReadonlyArray<Readonly<WgpuRenderTarget>>, dest: Readonly<WgpuRenderTarget> | null, setUniforms: ((state: WgpuRenderState, uniformBindGroupLayout: GPUBindGroupLayout) => GPUBindGroup) | null): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuFullscreenPass.d.ts","sourceRoot":"","sources":["../src/wgpuFullscreenPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"wgpuFullscreenPass.d.ts","sourceRoot":"","sources":["../src/wgpuFullscreenPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAS1G,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,EACpB,iBAAiB,SAAI,EACrB,MAAM,GAAE,gBAA+B,GACtC,sBAAsB,CAsCxB;AAKD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAG9G;AASD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAC9C,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EACjD,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,EACvC,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,kBAAkB,KAAK,YAAY,CAAC,GAAG,IAAI,GACzG,IAAI,CAyBN"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Kind, Material, WgpuMaterialRenderer, WgpuRenderState } from '@flighthq/types';
|
|
1
|
+
import type { Kind, Material, WgpuMaterialRenderer, WgpuRenderState } from '@flighthq/types/contract';
|
|
2
2
|
export declare function getWgpuMaterialRenderer(state: WgpuRenderState, kind: Kind): WgpuMaterialRenderer | null;
|
|
3
3
|
export declare function registerWgpuMaterialRenderer(state: WgpuRenderState, kind: Kind, renderer: WgpuMaterialRenderer): void;
|
|
4
4
|
export declare function resolveWgpuMaterialRenderer(state: WgpuRenderState, material: Material | null): WgpuMaterialRenderer | null;
|