Style profiles
Lock a look once so every asset matches — the MeshGenie moat.
A style profile is a frozen set of pipeline levers: palette, lighting, surface treatment, poly budget, texture size. Assets generated against the same profile look like one game, not five asset packs.
Why lock
Without a lock, each generation drifts — different backgrounds, facet density, color temperature. Your game becomes a Frankenstein of packs.
With a lock (and the profile’s sha256 in every receipt), you can regenerate later and stay consistent.
Built-in profiles
Profiles live in styles/*.json in the repo. Examples:
| Name | Intent |
|---|---|
lowpoly-heroic | Stylised low-poly fantasy; measured palette lock |
baseline | Control arm / default levers |
neon-arcade | Higher chroma (author carefully — not all profiles lock equally) |
bare-figure | Unclothed base-body work |
List live profiles from the agent:
list_style_profilesHow locking works in a project
init_project writes .meshgenie/project.json:
{
"version": 1,
"style_profile": {
"name": "lowpoly-heroic",
"sha256": "…",
"locked_at": "2026-07-30T12:00:00Z"
},
"engine": "unity",
"paths": {
"characters": "Assets/Characters",
"props": "Assets/Props",
"receipts": "Assets/MeshGenie/Receipts"
}
}After the first lock, do not re-prompt for style unless the user explicitly wants a new project look.
Freezing at concept time
- Concept run records the profile + sha on the job and in
manifest.json - Build inherits that profile — it cannot be overridden
- Receipt exports the same sha next to the GLB