({
sceneId,
position,
cameraParams,
imageOverride = image,
transform,
}: {
sceneId: string;
position: [number, number, number];
cameraParams: number[];
imageOverride?: BrowserColmapImage;
transform?: BrowserSim3dEuler;
})
| 641 | ); |
| 642 | |
| 643 | const renderCase = async ({ |
| 644 | sceneId, |
| 645 | position, |
| 646 | cameraParams, |
| 647 | imageOverride = image, |
| 648 | transform, |
| 649 | }: { |
| 650 | sceneId: string; |
| 651 | position: [number, number, number]; |
| 652 | cameraParams: number[]; |
| 653 | imageOverride?: BrowserColmapImage; |
| 654 | transform?: BrowserSim3dEuler; |
| 655 | }) => { |
| 656 | let session: ReturnType<BrowserRendererModule['createSplatRenderSession']> | null = null; |
| 657 | let renderedTexture: BrowserGpuTexture | null = null; |
| 658 | |
| 659 | try { |
| 660 | const scene = resourceManager.acquire(device, { |
| 661 | sceneId, |
| 662 | cloud: makeCloud(position), |
| 663 | labelPrefix: sceneId, |
| 664 | }); |
| 665 | session = createSplatRenderSession({ |
| 666 | device, |
| 667 | scene, |
| 668 | format: 'rgba8unorm', |
| 669 | width, |
| 670 | height, |
| 671 | backgroundColor: [0, 0, 0, 1], |
| 672 | debugValidation: true, |
| 673 | }); |
| 674 | renderedTexture = device.createTexture({ |
| 675 | label: `${sceneId} target`, |
| 676 | size: { width, height }, |
| 677 | format: 'rgba8unorm', |
| 678 | usage: textureUsageTextureBinding | textureUsageRenderAttachment, |
| 679 | }); |
| 680 | const frame = createColmapMetricWebGpuSplatFrame({ |
| 681 | image: imageOverride, |
| 682 | camera: makeCamera(cameraParams), |
| 683 | width, |
| 684 | height, |
| 685 | transform, |
| 686 | }); |
| 687 | session.setCamera(frame); |
| 688 | await session.renderToTexture(renderedTexture); |
| 689 | const centroid = await computeRedCentroidFromTexture(renderedTexture); |
| 690 | activeRenderCases.push({ session, texture: renderedTexture }); |
| 691 | return { |
| 692 | readyState: session.getReadyState(), |
| 693 | centroid, |
| 694 | texture: renderedTexture, |
| 695 | }; |
| 696 | } catch (error) { |
| 697 | renderedTexture?.destroy(); |
| 698 | session?.dispose(); |
| 699 | throw error; |
| 700 | } |
no test coverage detected