mirror of
https://github.com/storytold/texturecraft.git
synced 2026-11-06 18:42:19 +00:00
55387bf0fd
- Baking: per-map ray settings (AO, thickness, bent normals), GPU ray-traced baking with CPU fallback (~12x), color map from textured glTF high polys - Files: Alembic (Ogawa) and FBX 6 import, per-tile UDIM resolution, converting a set to UV tiles, project templates, preserving painted strokes on mesh reimport - UI: translations (French, German, Spanish, Portuguese, Italian, Japanese, Chinese, Korean) with a live language picker and CJK fonts, closed panels reopen where they were, viewport texture resolution setting, frame-budgeted scene sync for 8K sets - Web: loading screen, WebGL2 notice, app-captured shortcuts, touch navigation Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
50 lines
3.5 KiB
HTML
50 lines
3.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
|
<meta name="color-scheme" content="dark">
|
|
<title>TextureCraft</title>
|
|
<link data-trunk rel="rust" data-bin="texturecraft-web" data-cargo-profile="wasm-release" data-wasm-opt="z" data-weak-refs />
|
|
<style>
|
|
html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; overscroll-behavior: none; background: #1c1c1c; }
|
|
/* Touch and pen strokes paint and orbit; the browser must not scroll, zoom or select. */
|
|
#texturecraft_canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; outline: none;
|
|
touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; }
|
|
#texturecraft_loading { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center;
|
|
gap: 12px; padding: 0 16px; text-align: center; color: #b8b8b8; font: 14px system-ui, sans-serif; pointer-events: none; background: #1c1c1c; }
|
|
#texturecraft_loading h1 { margin: 0; color: #f2f2f2; font-size: 20px; font-weight: 600; letter-spacing: 0.02em; }
|
|
#texturecraft_loading p { margin: 0; max-width: 420px; line-height: 1.5; }
|
|
#texturecraft_loading a { color: #e0e0e0; pointer-events: auto; }
|
|
/* Indeterminate while the WebAssembly downloads (the page has no script to measure it); the
|
|
app sets its value through the startup steps once it runs. */
|
|
#texturecraft_progress { width: min(280px, 70vw); height: 4px; border: 0; border-radius: 2px; background: #333; color: #2f86eb; accent-color: #2f86eb; }
|
|
#texturecraft_progress::-webkit-progress-bar { background: #333; border-radius: 2px; }
|
|
#texturecraft_progress::-webkit-progress-value { background: #2f86eb; border-radius: 2px; }
|
|
#texturecraft_progress::-moz-progress-bar { background: #2f86eb; border-radius: 2px; }
|
|
/* Styled progress bars lose the native "busy" animation: a sweep stands in while downloading. */
|
|
#texturecraft_progress:indeterminate { background: linear-gradient(90deg, #333 0%, #2f86eb 50%, #333 100%) 0 0 / 300% 100%;
|
|
animation: texturecraft-busy 1.4s linear infinite; }
|
|
#texturecraft_progress:indeterminate::-webkit-progress-bar { background: transparent; }
|
|
#texturecraft_progress:indeterminate::-moz-progress-bar { background: transparent; }
|
|
@keyframes texturecraft-busy { from { background-position: 100% 0; } to { background-position: -50% 0; } }
|
|
#texturecraft_status { font-size: 12px; color: #969696; }
|
|
/* The app removes this element once it runs. If the WebAssembly never downloads or doesn't match
|
|
this page, no Rust runs to say so, so the page itself shows what to do after a while. */
|
|
#texturecraft_stalled { color: #8c8c8c; visibility: hidden; animation: texturecraft-stalled 0s 30s forwards; }
|
|
@keyframes texturecraft-stalled { to { visibility: visible; } }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<canvas id="texturecraft_canvas"></canvas>
|
|
<div id="texturecraft_loading" role="status" aria-live="polite">
|
|
<h1>TextureCraft</h1>
|
|
<progress id="texturecraft_progress" max="1" aria-label="Loading TextureCraft"></progress>
|
|
<p id="texturecraft_status">Downloading…</p>
|
|
<p id="texturecraft_stalled">This is taking longer than usual. If TextureCraft doesn't start, its files may have failed to
|
|
download or come from a different version of this page. <a href="">Reload</a> to try again; the browser
|
|
console lists what failed.</p>
|
|
</div>
|
|
</body>
|
|
</html>
|