Spaces:
Running
Running
File size: 7,575 Bytes
5ad1cb0 27d2381 5ad1cb0 9a77add 5ad1cb0 685f89d 5ad1cb0 9a77add 5ad1cb0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | <!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="color-scheme" content="dark" />
<meta name="theme-color" content="#070a12" />
<meta name="description" content="Diagnostic qualification surface for the TripoSplat five-stage image-to-Gaussian pipeline." />
<meta name="robots" content="noindex" />
<meta name="application-version" content="0.1.0-preview.23" />
<meta name="application-revision" content="1481bd9c11a3" />
<meta name="application-environment" content="production" />
<meta name="application-build-time" content="2026-08-05T04:36:45.213Z" />
<link rel="canonical" href="/e2e-lab" />
<title>TripoSplat WebGPU · Qualification Lab</title>
<script type="module" crossorigin src="/assets/e2eLab-D_zTVdpl.js"></script>
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-B5Qt9EMX.js">
<link rel="modulepreload" crossorigin href="/assets/preload-helper-BXl3LOEh.js">
<link rel="stylesheet" crossorigin href="/assets/e2eLab-D1xmWY5D.css">
</head>
<body>
<div class="ambient ambient-one" aria-hidden="true"></div>
<div class="ambient ambient-two" aria-hidden="true"></div>
<nav class="topbar" aria-label="Primary navigation">
<a class="brand" href="/e2e-web" aria-label="Open the canonical TripoSplat WebRunner">
<span class="brand-mark" aria-hidden="true"><span></span></span>
<span>TRIPOSPLAT <b>WEBGPU</b></span>
</a>
<div class="topbar-meta">
<span class="app-version" title="Build 2026-08-05T04:36:45.213Z · revision 1481bd9c11a3 · environment production"><b>QUALIFICATION</b> LAB · NOT A RUNNER</span>
<span class="capability" id="webgpu-capability"><i></i>Checking WebGPU</span>
<a href="/e2e-web">WebRunner <span aria-hidden="true">→</span></a>
<a href="https://github.com/ai3d-dev/TripoSplatWebGPU" rel="noreferrer">GitHub <span aria-hidden="true">↗</span></a>
</div>
</nav>
<main class="app-shell">
<header class="hero">
<div class="eyebrow"><span>QUALIFICATION</span> DIAGNOSTIC ONLY · NOT A RUNNER</div>
<h1>Validate prepared<br /><em>spatial scenes.</em></h1>
<p>This engineering fixture qualifies a prepared image against narrow structural, export, and viewer checks. Use the canonical WebRunner for generation.</p>
<div class="pipeline" aria-label="Pipeline stages">
<span>DINOv3</span><i>→</i><span>Flux VAE</span><i>→</i><span>Flow</span><i>→</i><span>Octree</span><i>→</i><span>Gaussians</span>
</div>
</header>
<div class="workspace-grid">
<aside class="control-panel panel">
<div class="panel-heading">
<div><span class="section-index">CONTROL / 01</span><h2>Generation setup</h2></div>
<span class="local-badge">LOCAL</span>
</div>
<p class="panel-copy">Connect immutable model artifacts and deterministic fixtures. Nothing is uploaded by this interface.</p>
<div class="field-stack">
<label for="model-base"><span>Model base URL</span><small>Manifest and ONNX graph directory</small></label>
<input id="model-base" value="/models/triposplat/" autocomplete="url" spellcheck="false" />
<label for="cache"><span>Artifact cache</span><small>Persistent storage reduces repeat downloads</small></label>
<select id="cache">
<option value="none" selected>Ephemeral · release after each graph</option>
<option value="opfs">OPFS · persistent device cache</option>
<option value="cache-api">Cache API · persistent browser cache</option>
</select>
</div>
<details class="advanced">
<summary><span>Fixture endpoints</span><small>Advanced</small></summary>
<div class="advanced-fields">
<label for="prepared-image">Prepared image</label>
<input id="prepared-image" value="/fixtures/generated/dinov3-fp32/prepared.png" autocomplete="url" spellcheck="false" />
<label for="vae-noise">VAE epsilon</label>
<input id="vae-noise" value="/fixtures/generated/flux2-vae-fp32/epsilon.f32" autocomplete="url" spellcheck="false" />
<label for="flow-fixture">Flow fixture directory</label>
<input id="flow-fixture" value="/fixtures/generated/flow4-fp32-compute" autocomplete="url" spellcheck="false" />
</div>
</details>
<div class="run-actions">
<button class="run-button" id="run" type="button"><span>Run spatial generation</span><b aria-hidden="true">↗</b></button>
<button class="cancel-button" id="cancel" type="button" disabled>Cancel</button>
</div>
<div class="status-card">
<span class="status-pulse" aria-hidden="true"></span>
<div><small>PIPELINE STATUS</small><p role="status" data-testid="e2e-status">Ready. The default non-persistent mode verifies and stages one graph at a time.</p></div>
</div>
</aside>
<section class="viewer-panel panel" aria-labelledby="e2e-viewer-heading">
<div class="panel-heading viewer-heading">
<div><span class="section-index">VIEWPORT / 02</span><h2 id="e2e-viewer-heading">Gaussian scene</h2></div>
<p data-testid="e2e-viewer-status" data-viewer-state="waiting">Waiting for exported PLY</p>
</div>
<div id="e2e-preview-root">
<div class="viewer-placeholder" aria-hidden="true">
<div class="orbital"><span></span><i></i></div>
<p>Spatial viewport armed</p>
<small>Your generated scene will appear here</small>
</div>
</div>
<div class="viewer-footer" aria-hidden="true"><span>262K GAUSSIANS</span><span>BROWSER GPU</span><span>PLY + SPLAT</span></div>
</section>
</div>
<section class="notice" aria-label="Demo requirements">
<span>NOTE</span>
<p>This public interface is an engineering preview. A run requires a current desktop Chromium browser with WebGPU and separately hosted model artifacts with CORS and byte-range support.</p>
</section>
<pre class="error" data-testid="e2e-error" hidden></pre>
<pre data-testid="e2e-result" hidden></pre>
</main>
<footer><span>TRIPOSPLAT WEBGPU · 2027 INTERFACE</span><span>INFERENCE STAYS ON DEVICE</span></footer>
<script>
const publishBootstrapError = (value) => {
const target = document.querySelector('[data-testid="e2e-error"]')
if (!target) return
const error = value instanceof Error ? value : new Error(String(value))
target.textContent = `Bootstrap error: ${error.name}: ${error.message}`
target.hidden = false
}
const capability = document.querySelector('#webgpu-capability')
if (capability) {
const supported = 'gpu' in navigator
capability.classList.toggle('is-ready', supported)
capability.classList.toggle('is-missing', !supported)
capability.lastChild.textContent = supported ? 'WebGPU ready' : 'WebGPU unavailable'
}
window.addEventListener('error', (event) => publishBootstrapError(event.error ?? event.message))
window.addEventListener('unhandledrejection', (event) => publishBootstrapError(event.reason))
</script>
</body>
</html> |