@flighthq/render-wgpu 0.3.0-next.906.07cea63 → 0.3.1-next.1041.35b950c
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 +7 -1
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +7 -1
- package/dist/contract.js.map +1 -1
- 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 +15 -0
- package/dist/explainWgpuTextureResolution.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/wgpuBackground.d.ts +2 -0
- package/dist/wgpuBackground.d.ts.map +1 -1
- package/dist/wgpuBackground.js +30 -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 +52 -13
- package/dist/wgpuCompressedTexture.js.map +1 -1
- package/dist/wgpuDraw.d.ts +6 -4
- package/dist/wgpuDraw.d.ts.map +1 -1
- package/dist/wgpuDraw.js +150 -69
- 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/wgpuMaterialRegistry.d.ts.map +1 -1
- package/dist/wgpuMaterialRegistry.js +17 -12
- package/dist/wgpuMaterialRegistry.js.map +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 +15 -3
- package/dist/wgpuRenderState.d.ts.map +1 -1
- package/dist/wgpuRenderState.js +253 -33
- package/dist/wgpuRenderState.js.map +1 -1
- package/dist/wgpuRenderTarget.d.ts.map +1 -1
- package/dist/wgpuRenderTarget.js +2 -0
- package/dist/wgpuRenderTarget.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/wgpuShader.d.ts.map +1 -1
- package/dist/wgpuShader.js +5 -1
- package/dist/wgpuShader.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 +1 -0
- package/dist/wgpuTestHelper.d.ts.map +1 -1
- package/dist/wgpuTestHelper.js +125 -8
- 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 +68 -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 +17 -7
- package/src/enableWgpuTextureResolverGuards.test.ts +65 -0
- package/src/explainWgpuTextureResolution.test.ts +36 -0
- package/src/wgpuBackground.test.ts +34 -1
- package/src/wgpuCompressedTexture.test.ts +35 -40
- package/src/wgpuDraw.test.ts +180 -62
- package/src/wgpuExternalImageSource.test.ts +89 -0
- package/src/wgpuExternalTexture.test.ts +35 -0
- package/src/wgpuMaterialRegistry.test.ts +44 -3
- package/src/wgpuMipmap.test.ts +10 -2
- package/src/wgpuRenderState.test.ts +462 -12
- package/src/wgpuRenderTarget.test.ts +14 -0
- package/src/wgpuRenderTexture.test.ts +165 -0
- package/src/wgpuRenderTexturePool.test.ts +146 -0
- package/src/wgpuShaderBinding.test.ts +6 -6
- package/src/wgpuSurface.test.ts +95 -3
- package/src/wgpuTestHelper.test.ts +64 -0
- package/src/wgpuTextureResolver.test.ts +212 -0
- package/src/wgpuTextureUpload.test.ts +28 -13
package/dist/wgpuDraw.js
CHANGED
|
@@ -1,36 +1,47 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getTextureSource } from '@flighthq/texture/contract';
|
|
2
|
+
import { BlendMode, RegistryEntryState } from '@flighthq/types/contract';
|
|
3
|
+
import { retireWgpuTexture } from './wgpuBackground';
|
|
4
|
+
import { isWgpuExternalImageSourceReady, tryCopyWgpuExternalImageToTexture } from './wgpuExternalImageSource';
|
|
2
5
|
import { generateWgpuMipmaps, getWgpuMipLevelCount } from './wgpuMipmap';
|
|
3
6
|
import { getWgpuRenderStateRuntime, getWgpuSampler } from './wgpuRenderState';
|
|
4
7
|
import { getActiveWgpuPipeline, getWgpuPipeline, writeWgpuQuadUniforms } from './wgpuShader';
|
|
5
8
|
export function applyWgpuBlendMode(state, blendMode) {
|
|
6
9
|
getWgpuRenderStateRuntime(state).currentBlendMode = blendMode;
|
|
7
10
|
}
|
|
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) {
|
|
11
|
+
export function bindWgpuBitmapTexture(state, bitmap, generateMips = false, premultiply = false, colorSpace = 'linear') {
|
|
12
|
+
return bindWgpuTextureSourceTexture(state, bitmap, generateMips, premultiply, colorSpace, uploadWgpuBitmapEntry);
|
|
13
|
+
}
|
|
14
|
+
export function bindWgpuCompressedImageTexture(state, image, colorSpace = 'linear') {
|
|
15
|
+
return bindWgpuTextureSourceTexture(state, image, false, false, colorSpace, uploadWgpuCompressedImageEntry);
|
|
16
|
+
}
|
|
17
|
+
// Uploads and caches the WebGPU texture for an Image. Bitmap and CompressedImage use sibling
|
|
18
|
+
// entry points below; they share only the identity/version cache bracket and keep representation-specific
|
|
19
|
+
// uploaders. Premultiplied and straight requests use separate caches so 2D and 3D sampling of one source
|
|
20
|
+
// cannot rewrite each other's realization. Returns the texture, view, and 2D bind group.
|
|
21
|
+
export function bindWgpuImageResourceTexture(state, image, generateMips = false, premultiply = false, colorSpace = 'linear') {
|
|
22
|
+
return bindWgpuTextureSourceTexture(state, image, generateMips, premultiply, colorSpace, uploadWgpuImageResourceEntry);
|
|
23
|
+
}
|
|
24
|
+
function bindWgpuTextureSourceTexture(state, image, generateMips, premultiply, colorSpace, upload) {
|
|
24
25
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
25
26
|
const cache = premultiply
|
|
26
|
-
?
|
|
27
|
-
|
|
27
|
+
? colorSpace === 'srgb'
|
|
28
|
+
? runtime.textureSourcePremultipliedSrgbTextureCache
|
|
29
|
+
: runtime.textureSourcePremultipliedTextureCache
|
|
30
|
+
: colorSpace === 'srgb'
|
|
31
|
+
? runtime.textureSourceStraightSrgbTextureCache
|
|
32
|
+
: runtime.textureSourceStraightTextureCache;
|
|
28
33
|
const cached = cache.get(image);
|
|
29
34
|
if (cached !== undefined && cached.version === image.version)
|
|
30
35
|
return cached;
|
|
31
|
-
const built =
|
|
36
|
+
const built = upload(state, image, generateMips, premultiply, colorSpace);
|
|
37
|
+
if (built === null)
|
|
38
|
+
return cached ?? null;
|
|
32
39
|
if (cached !== undefined) {
|
|
33
|
-
|
|
40
|
+
// RETIRED, NOT DESTROYED. This fires on a payload version bump — the standard invalidation path, not
|
|
41
|
+
// a resize edge case — and it rewrites the cached entry IN PLACE, so a bind group recorded earlier in
|
|
42
|
+
// this frame still points at the outgoing texture. The frame's submit is deferred, and destroying a
|
|
43
|
+
// texture a recorded command buffer references fails that submit and blanks the WHOLE frame.
|
|
44
|
+
retireWgpuTexture(state, cached.texture);
|
|
34
45
|
cached.texture = built.texture;
|
|
35
46
|
cached.view = built.view;
|
|
36
47
|
cached.bindGroup = built.bindGroup;
|
|
@@ -81,6 +92,8 @@ export function bindWgpuTexture(state, imageSource, generateMips = false) {
|
|
|
81
92
|
width = imageSource.width || 1;
|
|
82
93
|
height = imageSource.height || 1;
|
|
83
94
|
}
|
|
95
|
+
if (!isWgpuExternalImageSourceReady(imageSource, width, height))
|
|
96
|
+
return null;
|
|
84
97
|
const mipLevelCount = generateMips ? getWgpuMipLevelCount(width, height) : 1;
|
|
85
98
|
const texture = device.createTexture({
|
|
86
99
|
size: [width, height, 1],
|
|
@@ -94,7 +107,17 @@ export function bindWgpuTexture(state, imageSource, generateMips = false) {
|
|
|
94
107
|
// internally, so premultipliedAlpha: true is the lossless pass-through; Image/ImageBitmap carry
|
|
95
108
|
// straight alpha and get premultiplied on copy. (A straight-alpha texture under premultiplied
|
|
96
109
|
// blend blows RGB out — it turned the semi-transparent shape panel opaque white.)
|
|
97
|
-
|
|
110
|
+
//
|
|
111
|
+
// Deliberately does NOT consult `image.alphaType`, and the asymmetry with scene-gl is not an
|
|
112
|
+
// oversight: `premultipliedAlpha` here DECLARES the destination's encoding and the browser derives
|
|
113
|
+
// whether a conversion is needed from the source it already owns, so an already-premultiplied source
|
|
114
|
+
// cannot be multiplied twice. WebGL's UNPACK_PREMULTIPLY_ALPHA_WEBGL is imperative — it multiplies
|
|
115
|
+
// whatever it is handed — which is why that path guards on the declared alphaType and this one must not.
|
|
116
|
+
const copied = tryCopyWgpuExternalImageToTexture(device.queue, { source: imageSource, flipY: false }, { texture, premultipliedAlpha: true }, width, height);
|
|
117
|
+
if (!copied) {
|
|
118
|
+
texture.destroy();
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
98
121
|
// The copy fills level 0 only; render the remaining levels by downsampling (WebGPU has no
|
|
99
122
|
// generateMipmap). Skipped for a single-level texture (mipLevelCount === 1).
|
|
100
123
|
if (mipLevelCount > 1)
|
|
@@ -121,16 +144,18 @@ function buildWgpuSmoothingBindGroup(state, runtime, view, sampler) {
|
|
|
121
144
|
],
|
|
122
145
|
});
|
|
123
146
|
}
|
|
124
|
-
// Dynamic host-video upload. The texture is cached by
|
|
147
|
+
// Dynamic host-video upload. The texture is cached by Image source and copied only when its
|
|
125
148
|
// version advances; a resolution change recreates the allocation/view, and a sampler mutation rebuilds
|
|
126
|
-
// only the bind group. Returns null until the
|
|
149
|
+
// only the bind group. Returns null until the source element has a decoded frame.
|
|
127
150
|
export function bindWgpuVideoTexture(state, videoTexture) {
|
|
128
|
-
const image = videoTexture
|
|
151
|
+
const image = getTextureSource(videoTexture);
|
|
129
152
|
const element = (image?.source ?? null);
|
|
130
153
|
if (element === null || element.readyState < 2 || element.videoWidth <= 0 || element.videoHeight <= 0)
|
|
131
154
|
return null;
|
|
132
155
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
133
|
-
const cache =
|
|
156
|
+
const cache = videoTexture.colorSpace === 'srgb'
|
|
157
|
+
? (runtime.videoSrgbTextureCache ??= new WeakMap())
|
|
158
|
+
: (runtime.videoTextureCache ??= new WeakMap());
|
|
134
159
|
const width = element.videoWidth;
|
|
135
160
|
const height = element.videoHeight;
|
|
136
161
|
const sampler = getWgpuVideoSampler(state, videoTexture);
|
|
@@ -139,7 +164,7 @@ export function bindWgpuVideoTexture(state, videoTexture) {
|
|
|
139
164
|
entry?.texture.destroy();
|
|
140
165
|
const texture = state.device.createTexture({
|
|
141
166
|
size: [width, height, 1],
|
|
142
|
-
format: 'rgba8unorm',
|
|
167
|
+
format: videoTexture.colorSpace === 'srgb' ? 'rgba8unorm-srgb' : 'rgba8unorm',
|
|
143
168
|
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
144
169
|
});
|
|
145
170
|
const view = texture.createView();
|
|
@@ -159,7 +184,9 @@ export function bindWgpuVideoTexture(state, videoTexture) {
|
|
|
159
184
|
entry.bindGroup = buildWgpuTextureBindGroup(state, entry.view, sampler);
|
|
160
185
|
}
|
|
161
186
|
if (entry.uploadedVersion !== image.version) {
|
|
162
|
-
state.device.queue
|
|
187
|
+
const copied = tryCopyWgpuExternalImageToTexture(state.device.queue, { source: element, flipY: false }, { texture: entry.texture, premultipliedAlpha: true }, width, height);
|
|
188
|
+
if (!copied)
|
|
189
|
+
return entry.uploadedVersion < 0 ? null : entry;
|
|
163
190
|
entry.uploadedVersion = image.version;
|
|
164
191
|
}
|
|
165
192
|
return entry;
|
|
@@ -181,12 +208,18 @@ export function createWgpuTextureEntry(state, width, height, canvas) {
|
|
|
181
208
|
const { textureBindGroupLayout } = runtime;
|
|
182
209
|
const w = Math.max(1, width);
|
|
183
210
|
const h = Math.max(1, height);
|
|
211
|
+
if (!isWgpuExternalImageSourceReady(canvas, w, h))
|
|
212
|
+
return null;
|
|
184
213
|
const texture = device.createTexture({
|
|
185
214
|
size: [w, h, 1],
|
|
186
215
|
format: 'rgba8unorm',
|
|
187
216
|
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
188
217
|
});
|
|
189
|
-
device.queue
|
|
218
|
+
const copied = tryCopyWgpuExternalImageToTexture(device.queue, { source: canvas, flipY: false }, { texture, premultipliedAlpha: true }, w, h);
|
|
219
|
+
if (!copied) {
|
|
220
|
+
texture.destroy();
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
190
223
|
const view = texture.createView();
|
|
191
224
|
const sampler = state.allowSmoothing ? runtime.linearSampler : runtime.nearestSampler;
|
|
192
225
|
const bindGroup = device.createBindGroup({
|
|
@@ -199,16 +232,20 @@ export function createWgpuTextureEntry(state, width, height, canvas) {
|
|
|
199
232
|
return { texture, view, bindGroup };
|
|
200
233
|
}
|
|
201
234
|
export function destroyWgpuVideoTexture(state, videoTexture) {
|
|
202
|
-
const image = videoTexture
|
|
203
|
-
if (image
|
|
235
|
+
const image = getTextureSource(videoTexture);
|
|
236
|
+
if (image == null)
|
|
204
237
|
return false;
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
238
|
+
const runtime = getWgpuRenderStateRuntime(state);
|
|
239
|
+
let destroyed = false;
|
|
240
|
+
for (const cache of [runtime.videoTextureCache, runtime.videoSrgbTextureCache]) {
|
|
241
|
+
const entry = cache?.get(image);
|
|
242
|
+
if (entry === undefined)
|
|
243
|
+
continue;
|
|
244
|
+
entry.texture.destroy();
|
|
245
|
+
cache.delete(image);
|
|
246
|
+
destroyed = true;
|
|
247
|
+
}
|
|
248
|
+
return destroyed;
|
|
212
249
|
}
|
|
213
250
|
function buildWgpuTextureBindGroup(state, view, sampler) {
|
|
214
251
|
return state.device.createBindGroup({
|
|
@@ -221,11 +258,12 @@ function buildWgpuTextureBindGroup(state, view, sampler) {
|
|
|
221
258
|
}
|
|
222
259
|
function getWgpuVideoSampler(state, videoTexture) {
|
|
223
260
|
const sampler = videoTexture.sampler;
|
|
224
|
-
const
|
|
261
|
+
const minFilter = sampler.minFilter.startsWith('nearest') ? 'nearest' : 'linear';
|
|
262
|
+
const magFilter = sampler.magFilter.startsWith('nearest') ? 'nearest' : 'linear';
|
|
225
263
|
// A live frame carries base level only; mip-aware filters collapse to their base filter rather than
|
|
226
264
|
// sampling absent levels. Regenerating a full chain for every decoded frame would defeat the video
|
|
227
265
|
// dirty gate.
|
|
228
|
-
return getWgpuSampler(state,
|
|
266
|
+
return getWgpuSampler(state, minFilter, magFilter, sampler.wrapU, sampler.wrapV, undefined, sampler.anisotropy);
|
|
229
267
|
}
|
|
230
268
|
export function drawWgpuQuad(state, renderProxy, textureEntry, x0, y0, x1, y1, u0, v0, u1, v1) {
|
|
231
269
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
@@ -282,59 +320,102 @@ export function updateWgpuTextureEntry(state, entry, canvas) {
|
|
|
282
320
|
const { device } = state;
|
|
283
321
|
const w = Math.max(1, canvas.width);
|
|
284
322
|
const h = Math.max(1, canvas.height);
|
|
285
|
-
|
|
323
|
+
if (!isWgpuExternalImageSourceReady(canvas, w, h))
|
|
324
|
+
return;
|
|
325
|
+
tryCopyWgpuExternalImageToTexture(device.queue, { source: canvas, flipY: false }, { texture: entry.texture, premultipliedAlpha: true }, w, h);
|
|
286
326
|
}
|
|
287
327
|
// Pre-warm the normal + blend pipelines so the first frame doesn't stall.
|
|
288
328
|
export function warmWgpuPipelines(state) {
|
|
289
329
|
getWgpuPipeline(state, BlendMode.Normal, 'normal');
|
|
290
330
|
getWgpuPipeline(state, BlendMode.Add, 'normal');
|
|
291
331
|
}
|
|
292
|
-
//
|
|
332
|
+
// Converts an rgba8 buffer between straight and premultiplied alpha, in either direction. Allocates, but runs
|
|
293
333
|
// only on a texture upload (cache miss or content change), never in the per-frame draw path.
|
|
294
|
-
function
|
|
334
|
+
function convertRgba8AlphaEncoding(data, toPremultiplied) {
|
|
295
335
|
const out = new Uint8ClampedArray(data.length);
|
|
296
336
|
for (let i = 0; i < data.length; i += 4) {
|
|
297
337
|
const a = data[i + 3];
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
338
|
+
// The two directions differ only in this factor, so they share one loop rather than shipping two.
|
|
339
|
+
// A fully transparent texel carries no recoverable color either way, so it stays zero instead of
|
|
340
|
+
// dividing by zero on the un-premultiply side.
|
|
341
|
+
const scale = toPremultiplied ? a / 255 : a === 0 ? 0 : 255 / a;
|
|
342
|
+
out[i] = data[i] * scale;
|
|
343
|
+
out[i + 1] = data[i + 1] * scale;
|
|
344
|
+
out[i + 2] = data[i + 2] * scale;
|
|
301
345
|
out[i + 3] = a;
|
|
302
346
|
}
|
|
303
347
|
return out;
|
|
304
348
|
}
|
|
305
|
-
// Allocates a GPU texture for
|
|
306
|
-
//
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
// is premultiplied on the CPU; when clear, both upload the pixels as-is so the straight-blend 3D path
|
|
310
|
-
// keeps its albedo and data maps untouched. The per-upload half of bindWgpuImageResourceTexture, split out
|
|
311
|
-
// so the cache/version bracket stays legible.
|
|
312
|
-
function uploadWgpuImageResourceEntry(state, image, generateMips, premultiply) {
|
|
349
|
+
// Allocates a GPU texture for a Bitmap and writes its CPU-readable pixels, premultiplying a straight
|
|
350
|
+
// bitmap only when the caller requests a premultiplied realization.
|
|
351
|
+
function uploadWgpuBitmapEntry(state, image, generateMips, premultiply, colorSpace) {
|
|
352
|
+
const bitmap = image;
|
|
313
353
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
314
354
|
const { device } = state;
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
if (compressed != null)
|
|
318
|
-
return compressed;
|
|
319
|
-
}
|
|
320
|
-
const width = image.width || 1;
|
|
321
|
-
const height = image.height || 1;
|
|
355
|
+
const width = bitmap.width || 1;
|
|
356
|
+
const height = bitmap.height || 1;
|
|
322
357
|
const mipLevelCount = generateMips ? getWgpuMipLevelCount(width, height) : 1;
|
|
358
|
+
const format = colorSpace === 'srgb' ? 'rgba8unorm-srgb' : 'rgba8unorm';
|
|
323
359
|
const texture = device.createTexture({
|
|
324
360
|
size: [width, height, 1],
|
|
325
|
-
format
|
|
361
|
+
format,
|
|
326
362
|
mipLevelCount,
|
|
327
363
|
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
328
364
|
});
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
365
|
+
// Resolve the source's declared encoding to the one the caller asked for, in EITHER direction. The
|
|
366
|
+
// straight direction is what makes a premultiplied source safe as a 3D material map: 3D binds with
|
|
367
|
+
// premultiply=false and its fragment tail multiplies by alpha at the end, so handing it already-
|
|
368
|
+
// premultiplied rgb would square the coverage and darken every translucent texel.
|
|
369
|
+
const data = premultiply && bitmap.alphaType !== 'premultiplied'
|
|
370
|
+
? convertRgba8AlphaEncoding(bitmap.data, true)
|
|
371
|
+
: !premultiply && bitmap.alphaType === 'premultiplied'
|
|
372
|
+
? convertRgba8AlphaEncoding(bitmap.data, false)
|
|
373
|
+
: bitmap.data;
|
|
374
|
+
device.queue.writeTexture({ texture }, data, { bytesPerRow: width * 4, rowsPerImage: height }, [width, height, 1]);
|
|
375
|
+
if (mipLevelCount > 1)
|
|
376
|
+
generateWgpuMipmaps(state, texture, width, height, format);
|
|
377
|
+
const view = texture.createView();
|
|
378
|
+
const sampler = state.allowSmoothing ? runtime.linearSampler : runtime.nearestSampler;
|
|
379
|
+
const bindGroup = device.createBindGroup({
|
|
380
|
+
layout: runtime.textureBindGroupLayout,
|
|
381
|
+
entries: [
|
|
382
|
+
{ binding: 0, resource: view },
|
|
383
|
+
{ binding: 1, resource: sampler },
|
|
384
|
+
],
|
|
385
|
+
});
|
|
386
|
+
return { texture, view, bindGroup };
|
|
387
|
+
}
|
|
388
|
+
function uploadWgpuCompressedImageEntry(state, image, _generateMips, _premultiply, colorSpace) {
|
|
389
|
+
const runtime = getWgpuRenderStateRuntime(state);
|
|
390
|
+
const uploadEntry = runtime.registries.compressedTextureUpload.entry;
|
|
391
|
+
if (uploadEntry?.state !== RegistryEntryState.Bound)
|
|
392
|
+
return null;
|
|
393
|
+
const decoderEntry = runtime.registries.compressedTextureDecoder.entry;
|
|
394
|
+
return uploadEntry.value(state, image, decoderEntry?.state === RegistryEntryState.Bound ? decoderEntry.value : null, colorSpace);
|
|
395
|
+
}
|
|
396
|
+
function uploadWgpuImageResourceEntry(state, image, generateMips, premultiply, colorSpace) {
|
|
397
|
+
const resource = image;
|
|
398
|
+
const runtime = getWgpuRenderStateRuntime(state);
|
|
399
|
+
const { device } = state;
|
|
400
|
+
const width = resource.width || 1;
|
|
401
|
+
const height = resource.height || 1;
|
|
402
|
+
if (!isWgpuExternalImageSourceReady(resource.source, width, height))
|
|
403
|
+
return null;
|
|
404
|
+
const mipLevelCount = generateMips ? getWgpuMipLevelCount(width, height) : 1;
|
|
405
|
+
const format = colorSpace === 'srgb' ? 'rgba8unorm-srgb' : 'rgba8unorm';
|
|
406
|
+
const texture = device.createTexture({
|
|
407
|
+
size: [width, height, 1],
|
|
408
|
+
format,
|
|
409
|
+
mipLevelCount,
|
|
410
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,
|
|
411
|
+
});
|
|
412
|
+
const copied = tryCopyWgpuExternalImageToTexture(device.queue, { source: resource.source, flipY: false }, { texture, premultipliedAlpha: premultiply }, width, height);
|
|
413
|
+
if (!copied) {
|
|
414
|
+
texture.destroy();
|
|
415
|
+
return null;
|
|
335
416
|
}
|
|
336
417
|
if (mipLevelCount > 1)
|
|
337
|
-
generateWgpuMipmaps(state, texture, width, height,
|
|
418
|
+
generateWgpuMipmaps(state, texture, width, height, format);
|
|
338
419
|
const view = texture.createView();
|
|
339
420
|
const sampler = state.allowSmoothing ? runtime.linearSampler : runtime.nearestSampler;
|
|
340
421
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wgpuMaterialRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuMaterialRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wgpuMaterialRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuMaterialRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAKtG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG,oBAAoB,GAAG,IAAI,CAGvG;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAGrH;AAMD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,GAAG,IAAI,GACxB,oBAAoB,GAAG,IAAI,CAc7B"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { withRegistryTableEntry } from '@flighthq/registry/contract';
|
|
2
|
+
import { RegistryEntryState, RenderRegistry, StandardMaterialKind } from '@flighthq/types/contract';
|
|
2
3
|
import { getWgpuRenderStateRuntime } from './wgpuRenderState';
|
|
3
4
|
export function getWgpuMaterialRenderer(state, kind) {
|
|
4
|
-
const
|
|
5
|
-
return
|
|
5
|
+
const entry = getWgpuRenderStateRuntime(state).registries.materialRenderers.entries.get(kind);
|
|
6
|
+
return entry?.state === RegistryEntryState.Bound ? entry.value : null;
|
|
6
7
|
}
|
|
7
8
|
export function registerWgpuMaterialRenderer(state, kind, renderer) {
|
|
8
9
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
9
|
-
|
|
10
|
+
runtime.registries.materialRenderers = withRegistryTableEntry(runtime.registries.materialRenderers, kind, renderer);
|
|
10
11
|
}
|
|
11
12
|
// Resolves a node's material to its registered renderer: by the material's kind, else the renderer
|
|
12
13
|
// registered for StandardMaterialKind, else null. The render path knows nothing about which materials
|
|
@@ -14,14 +15,18 @@ export function registerWgpuMaterialRenderer(state, kind, renderer) {
|
|
|
14
15
|
// unresolved material is a no-op (the node does not render), never a built-in fallback.
|
|
15
16
|
export function resolveWgpuMaterialRenderer(state, material) {
|
|
16
17
|
const runtime = getWgpuRenderStateRuntime(state);
|
|
17
|
-
const
|
|
18
|
-
|
|
18
|
+
const entries = runtime.registries.materialRenderers.entries;
|
|
19
|
+
const kind = material?.kind ?? StandardMaterialKind;
|
|
20
|
+
const entry = entries.get(kind);
|
|
21
|
+
if (entry?.state === RegistryEntryState.Bound)
|
|
22
|
+
return entry.value;
|
|
23
|
+
// The requested kind is absent. StandardMaterialKind still stands in where it is registered, but the
|
|
24
|
+
// miss is reported either way — substituting a different shading family is as much worth knowing as
|
|
25
|
+
// drawing nothing, and the seam records one miss per kind, so neither case repeats.
|
|
26
|
+
runtime.registryMiss?.(RenderRegistry.MaterialRenderer, kind);
|
|
27
|
+
if (kind === StandardMaterialKind)
|
|
19
28
|
return null;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (renderer !== undefined)
|
|
23
|
-
return renderer;
|
|
24
|
-
}
|
|
25
|
-
return map.get(StandardMaterialKind) ?? null;
|
|
29
|
+
const fallback = entries.get(StandardMaterialKind);
|
|
30
|
+
return fallback?.state === RegistryEntryState.Bound ? fallback.value : null;
|
|
26
31
|
}
|
|
27
32
|
//# sourceMappingURL=wgpuMaterialRegistry.js.map
|