Materials are where generation is most tempting and most dangerous: a plausible-looking surface can be wrong in ways that only show up under a different light, three scenes later. SurfaceForge answers that with candidates and a review step — several options, looked at, before one becomes an asset.
The word for what happens next is graduation, and it is the same idea the whole family is built on. A candidate is temporary and disposable; graduating it turns it into a PBR map set and the Unreal material assets that use it. Before that moment nothing is committed, and after it the tooling leaves the result alone.
Two routes, and the difference is resolution rather than convenience. The free local runner carries StableMaterials and MatFuse, runs on your own card in a container the plugin ships, and asks for no account and no per-image fee — StableMaterials generates at 512px and clamps anything larger. PATINA, through fal.ai, generates natively to 2048 and reaches 8192 by enlarging afterwards, billed by fal on your own key. Same definitions, same review, same graduation; pick the one the surface needs.
Money is visible before it is spent. The panel quotes both the cost of all the previews and the cost of a graduation — including the size that will actually land — before either button is pressed. And a graduated map is copied into the project as a PNG and kept, because what a hosted provider returns is a temporary URL and a material you cannot re-import is not an asset.
It is a developer preview, and it is released. The local route is exercised end to end: describe, preview, choose, graduate, get a material. The hosted one has generated previews but has not yet been run through a full graduation, MatFuse is selectable and has never been run here, and no provider returns an opacity map — so a decal is always fully opaque. Those are the edges, and they belong on the page rather than in a support thread.