Your input leaves the browser only when you approve it
Local maps never call a model. An AI job is created only after you choose a capability, review the provider disclosure, and confirm that the selected source or prompt may be transmitted to FAL for processing. Provider links can expire, so download useful results promptly rather than treating them as cloud storage.
The provider key stays on the server. You choose an available workflow and its input; Normal Map Studio calculates the credit cost, submits the job once, and keeps its status available if you reload.
Choose among five AI texture workflows
Choose scene-aware depth estimation, PBR map extraction, material generation from a prompt or reference, photographed material-channel extraction, or seamless image upscaling. Together they cover text-to-texture and image-to-PBR work without pretending every request needs the same model. Credit cost varies with the workflow, output size, and number of maps.
A queued job is still in progress, not a finished result. If FAL rejects it, it times out, or it reaches another terminal failure, the reserved credits are returned automatically. Download successful results promptly because provider links can expire.
Pay for AI only when local tools are not enough
Pro Local is a one-time license for browser-side productivity. AI work is sold separately because each request incurs provider cost. Starter, Creator, and Studio credit packs let occasional and production users choose an appropriate amount without forcing a recurring subscription for the basic generator.
No plan promises unlimited model use. The confirmed cost appears when you submit, retrying the same saved job does not charge twice, and failed or timed-out jobs return their reserved credits.
What depth estimation can and cannot recover
A depth workflow estimates distance from the camera for each pixel, then stores that estimate as a grayscale ramp where near and far are separated by brightness. It is the right tool when brightness in the source has nothing to do with height: a photograph of a brick wall in shade, a painted portrait, a photograph of a statue lit from one side, or a screenshot of a 3D scene. In those cases a luminance conversion would read the lighting instead of the surface, while a depth model can follow the actual scene structure.
What it cannot recover is anything the camera never saw. An occluded region behind a foreground object has no depth evidence, so the model guesses from surrounding context and the result usually shows a smear at that boundary. Transparent surfaces, mirrors, hair, foliage, and thin structures such as wires and railings are other well-known failure points because their depth is ambiguous even to a human looking at one frame. Reflections are particularly unreliable: the model may treat a reflected object as a separate surface in front of the mirror.
Resolution matters as much as the model. A high-resolution source downscaled before inference loses the fine relief the depth map is supposed to carry, so the resulting normal map can look correct at a distance and flat up close. Estimate at the largest size the workflow allows, then compare the output against the original at full zoom before committing the maps to a material library.
Treat the depth output as a starting point rather than a measurement. Inspect it as grayscale first: continuous ramps through the image generally mean the estimate is stable, while large flat regions and sudden steps usually mark places where a depth discontinuity was invented rather than observed.
Prompting a material you can actually tile
A material prompt describes a surface, not a scene. Words that place an object in a room, such as a table, a wall, or a product shot, tend to produce lighting and perspective that the local tiling check will then reject. Describe the material itself and the physical process that formed it instead: the substance, its age, how it was cut or cast, and whether it is wet, dusty, or polished.
Scale is the most commonly missing detail. A prompt that only says stone can return pebbles, a cliff face, or a polished slab, and each of those needs a different pixel density to look convincing next to existing assets. Naming an approximate real-world size, such as a two-meter section of wall or a single floor tile, gives the model something to anchor texture frequency to.
Seams are best handled in two stages. Ask for a flat, evenly lit, front-facing surface so the generated image has no baked perspective, then run the result through the local tiling check and edge blending before generating the map set. A model asked to produce an already-tiling image will often fake continuity at the border by repeating a recognizable feature, which then reads as an obvious pattern once the texture is repeated across a large surface.
Keep a short list of prompts that produced usable results. Material generation is stochastic, so a prompt that worked once is worth reusing with small changes rather than rewriting from scratch each time. Record the workflow, the prompt, and the output size together, because the same words can behave differently at a different resolution.
Cost, timing, and what happens after a failure
An AI job is asynchronous by nature: the request is accepted, processed by the provider, and returned when it is ready. While a job is queued or running it has no finished output, so the interface shows status rather than a preview. Your credit balance decreases when the job is accepted, because the provider cost is incurred at that point.
Failures are expected occasionally and are handled explicitly. A rejected request, a timeout, or any other terminal error returns the reserved credits instead of leaving them spent against nothing. A retry of the same saved job does not charge a second time, which means a transient provider problem does not become a second purchase. This is why the credit history is worth checking before reporting a missing result: a returned job appears there as a return, not as a charge.
Timing varies with workflow and output size, and queue depth changes throughout the day. There is no fixed completion time to promise, so plan around the status rather than a stopwatch. For production work, start the job before you need the asset and keep working locally on the parts that do not depend on it.
Results are delivered as provider links, and those links can expire. Download what you intend to keep, store it with the rest of the material set, and treat the provider host as a delivery channel rather than an archive. Anything not downloaded is not a backup.