Skip to main content
Patina generates the surface data a 3D asset needs. One run returns a base texture plus the basecolor, normal, roughness, metalness and height maps that a PBR material expects, and the whole set comes from the same latent, so the maps line up pixel for pixel instead of needing a separate bake. In ComfyUI the provider runs through three partner nodes. Patina Material builds a material from a text prompt, from a photo, or from a photo plus a mask. Patina Material Extract pulls a tiling material out of a photo that already contains the surface you want. Patina PBR Material Maps converts one image into the map set without regenerating anything. All three are cloud API nodes. They need a Comfy account with credits, download no model files, and bill per run. The price badge on each node shows the current rate, and every map you switch on adds to it.
To use the Partner Nodes, you need to ensure that you are logged in properly and using a permitted network environment. Please refer to the Partner Nodes Overview section of the documentation to understand the specific requirements for using the Partner Nodes.
Make sure your ComfyUI is updated.Workflows in this guide can be found in the Workflow Templates. If you can’t find them in the template, your ComfyUI may be outdated.If nodes are missing when loading a workflow, possible reasons:
  1. You are not using the latest ComfyUI version (Nightly version)
  2. Some nodes failed to import at startup

Available workflows

Material Extract: photo to tiling material

Point the node at a photo that already contains the material and the prompt says which surface to pull out and what structure to keep. The texture comes back seamless, so it repeats across a large surface without a visible border. Patina Material Extract workflow preview

Run in Comfy Cloud

Open in Comfy Cloud

Download Workflow

Download JSON or search “Patina: Material Extract” in Template Library
Input materials

patina_chair_webbing.png

Load into the LoadImage node. A photo that already contains the material
The photo does not have to be a flat crop: the node re-synthesises the layout, so a product shot works as long as the material itself repeats. strength (advanced, 0.6 in the template) sets how far the extracted texture may drift from the photo.

Material: text to material

Describe the surface and get a complete material back, with no source image at all. The prompt carries the whole result, so name the pattern and the finish rather than the object it belongs to. Patina text to material workflow preview

Run in Comfy Cloud

Open in Comfy Cloud

Download Workflow

Download JSON or search “Patina: Text to Material” in Template Library
Structured materials come out best: wood, stone, metal, fabric, plaster and ceramic tile. Adding “flat even lighting, no perspective” is what makes the result tile instead of reading as a photograph of a wall.

Material: image to material

Connect a surface photo and Patina redraws it as a tiling material, keeping the pattern from the image. strength decides how far it moves away from the photo: low keeps the original texture, high rewrites more of it. Patina image to material workflow preview

Run in Comfy Cloud

Open in Comfy Cloud

Download Workflow

Download JSON or search “Patina: Image to Material” in Template Library
Input materials

patina_brick_wall.jpg

Load into the LoadImage node. A surface photo with a regular structure
The optional mask input limits the redraw to a region, with white for regenerate and black for keep. A mask without an image raises an error.

PBR Maps: image to map set

Derive the maps from an image that is already the material. Nothing is regenerated here: the maps describe exactly what the picture contains, so seams, perspective and lighting in the source stay in the result. Patina PBR Material Maps workflow preview

Run in Comfy Cloud

Open in Comfy Cloud

Download Workflow

Download JSON or search “Patina: PBR Maps” in Template Library
Input materials

patina_pbr_webbing_basecolor.png

Load into the LoadImage node. A flat, evenly lit surface or an existing basecolor map
This node does not tile. Use it when you already have a seamless basecolor and want the rest of the set, and use Material or Material Extract when the result has to repeat. Inputs up to 2048 px are accepted; larger images are scaled down unless you turn off auto_downscale.

Node controls

Outputs follow a fixed slot order. Material and Material Extract return texture, basecolor, normal, roughness, metalness, height and expanded_prompt. PBR Maps returns the five maps without a separate base texture. A map you switch off still outputs a black 1×1 placeholder in its slot.

Tips

  • Name the surface, not the scene. On a photo of a chair, “chair webbing fabric” extracts the woven straps and ignores the frame, the floor and the paddle in shot.
  • Add structure when the pattern drifts. On Extract, a clause like “keep the weave and the strap edges” stops the pattern from wandering between runs.
  • Pick the material that repeats inside a few hundred pixels. Webbing, brick, pavers, planks and plaster tile well. A rock cliff, an aerial terrain or a single object come back as a repaint that will not tile.
  • Turn maps off before you run. Three maps are usually enough for a game or a product material, and the price follows the number of maps. Disconnect or bypass that map’s SaveImage node, or the placeholder is saved as a map.
  • Chain Extract into PBR Maps for a full set from one photo. Extract makes the basecolor tile, then PBR Maps derives the remaining maps from it.
  • Generate the map, then check the metalness on metals. Prompt expansion is the usual reason a metal surface comes back flat.

Get started

  1. Update ComfyUI to the latest version
  2. Go to Template Library, search for Patina
  3. Pick the workflow that matches your input: Extract for a photo of a surface, Text to Material for a prompt only, Image to Material for a photo to redraw, PBR Maps for an existing basecolor
  4. Switch off the maps you do not need, then run the workflow