SUPRA-Tex
SUPRA-Tex: reference-aligned 3D texture generation from a single image, with relightable PBR materials for image-to-3D assets and existing meshes.
Create and edit 3D models with brush tools in a WebGPU workspace
AI summary · website content
DesignHTMLGitHub @cloud-itonamiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Digital-clay sculpting app for the kami stack: a WebGPU brush workspace over a
layered sculpt document, built in .cljc/.cljs and shipped as a single
static page.
This repo is the app — UI, keyboard interaction, project file format,
and the shadow-cljs build. The sculpting itself (mesh, brushes, layers,
remesh/repair, topology diagnostics) lives in
kotoba-lang/kami-engine-sculpt,
and the GPU mesh upload/draw path in
kotoba-lang/webgpu. Nothing here
re-implements geometry.
clean / dirty / saved).The header selects which editor's key layout applies. kami.sculpt.app
carries all three:
| profile | keys |
|---|---|
| ZBrush (default) | B,I inflate · B,S smooth · B,P pinch · M mask |
| Blender Sculpt | I · S · P · M · E erase mask |
| Mudbox | 1 sculpt · 2 smooth · 3 pinch · M mask · E erase mask |
ZBrush uses a two-key prefix buffer; the other two dispatch directly.
Ctrl+Shift+N adds a layer. Holding Shift temporarily switches to smooth
and restores the previous brush on release, so the selection in the panel
never changes.
kami.sculpt.project owns the on-disk shape, currently version 2:
{:kami/document :sculpt-project
:kami/version 2
:project/id "head" :project/name "Head"
:project/sculpt <sculpt document from kami-engine-sculpt>
:project/brush {:mode :inflate :radius 0.6 :strength 0.12 :spacing 0.12}
:project/symmetry [:x]
:project/interaction {:profile :zbrush}
:project/strokes 0}
open migrates then validates, and throws rather than returning a partly
formed project. Two inputs migrate: a v1 project (gains
:project/interaction and :project/strokes), and a bare sculpt document
from the engine (wrapped with defaults). Anything else is rejected.
| file | role |
|---|---|
src/kami/sculpt/project.cljk | project document, versioning, migration, validation |
src/kami/sculpt/ui.cljk | the page — hiccup via html.core, styles via css.core |
src/kami/sculpt/app.cljk | browser app: state atom, events, shortcuts, GPU upload |
ui.cljc and project.cljc are portable .cljc and carry no browser
dependency, so both are exercised by the JVM test run.
kbb -M:test # project round-trip / migration / rejection
kbb -M build.cljk # regenerate public/index.html from ui/page
npm run build # amu compile --target wasm32-browser -> public/js/app.js
public/index.html is generated from kami.sculpt.ui/page — edit the
hiccup, not the HTML. The build is idempotent, so
kbb -M build.cljk && git diff --exit-code public/index.html is a usable
check that the generator and the shipped page still agree; they had drifted
apart once, and regenerating from the stale generator would have deleted 22
controls that app.cljs binds handlers to. Serve public/ over http (WebGPU needs a secure
context; localhost counts) and open it in a WebGPU-capable browser. Without
WebGPU the viewport shows a status message instead of silently rendering
nothing.
#debug-state carries a JSON snapshot — vertex/triangle counts, masked
vertices, mode, symmetry, profile, layer names, remesh/repair/hole-fill
results and topology diagnostics — so an end-to-end test can read what the
app believes rather than screenshotting it.
Apache-2.0. See LICENSE.