WebGPU update-mode policy lookup table.

Use this when the built-in SceneModel.updateMode mapping is close but a viewer needs different WebGPU storage behavior for static or dynamic models.

Use compact storage for static models that will be sealed after loading:

const rendererResult = await WebGPURenderer.create({
viewer,
renderConfigs: {
...WEBGPU_RENDER_CONFIG_PROFILES.largeModel,
triangleColorMode: "flat"
},
updateModePolicies: {
static: {
memoryPolicy: "compact",
memoryConfigs: {
compactSealedStreamPages: true
}
}
}
});

const modelResult = scene.createModel({
id: "staticModel",
updateMode: "static",
loadingMode: "open"
});

// Load the model, then seal once no more geometry will be added.
modelResult.value.seal();

Use stream storage for models that change often or keep receiving committed chunks. Pair this with renderer-wide batch and culling limits in memoryConfigs when interactivity matters more than minimizing draw count.

const rendererResult = await WebGPURenderer.create({
viewer,
renderConfigs: {
...WEBGPU_RENDER_CONFIG_PROFILES.largeModel,
triangleColorMode: "flat"
},
memoryConfigs: {
maxBatchVertices: 75000,
maxBatchIndices: 225000,
maxBatchGeometries: 2048,
maxBatchMeshes: 2048,
maxBatchPrims: 75000,
maxBatchBuildSegments: 2,
frustumCulling: true,
minProjectedCanvasSize: 5
},
updateModePolicies: {
dynamic: {
memoryPolicy: "stream",
memoryConfigs: {
compactStreamPages: false
}
}
}
});

const modelResult = scene.createModel({
id: "interactiveModel",
updateMode: "dynamic",
loadingMode: "streaming"
});

updateModePolicies only affects WebGPU memory policy and memory configs per update-mode bucket. Render-pass choices such as triangle color mode, depth prepass, edges, render bundles and transparent sorting remain renderer-level renderConfigs.

interface WebGPUUpdateModePolicies {
    default?: WebGPUUpdateModePolicy;
    dynamic?: WebGPUUpdateModePolicy;
    static?: WebGPUUpdateModePolicy;
}

Properties

Fallback policy for models with updateMode: "auto" or no matching policy.

Policy for SceneModel instances with updateMode: "dynamic".

Policy for SceneModel instances with updateMode: "static".