{
  "id": "65921f96-39e0-48c0-90f0-48a3907755e3",
  "revision": 0,
  "last_node_id": 32,
  "last_link_id": 30,
  "nodes": [
    {
      "id": 21,
      "type": "SaveImage",
      "pos": [
        913.024172616747,
        8.987101490822187
      ],
      "size": [
        373.6485367550731,
        421.999244495615
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 27
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": null
        }
      ],
      "title": "normal",
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "patina/%year%%month%%day%-%hour%%minute%_normal"
      ],
      "widgets_values_named": {
        "filename_prefix": "patina/%year%%month%%day%-%hour%%minute%_normal"
      }
    },
    {
      "id": 22,
      "type": "SaveImage",
      "pos": [
        69.7270991066008,
        8.987101490822187
      ],
      "size": [
        373.6485367550731,
        421.999244495615
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 28
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": null
        }
      ],
      "title": "roughness",
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "patina/%year%%month%%day%-%hour%%minute%_roughness"
      ],
      "widgets_values_named": {
        "filename_prefix": "patina/%year%%month%%day%-%hour%%minute%_roughness"
      }
    },
    {
      "id": 23,
      "type": "SaveImage",
      "pos": [
        491.3756358616739,
        8.987101490822187
      ],
      "size": [
        373.6485367550731,
        421.999244495615
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 26
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": null
        }
      ],
      "title": "basecolor",
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "patina/%year%%month%%day%-%hour%%minute%_basecolor"
      ],
      "widgets_values_named": {
        "filename_prefix": "patina/%year%%month%%day%-%hour%%minute%_basecolor"
      }
    },
    {
      "id": 24,
      "type": "SaveImage",
      "pos": [
        501.208605151926,
        521.1691288882778
      ],
      "size": [
        373.6485367550731,
        421.999244495615
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 29
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": []
        }
      ],
      "title": "metalness",
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "patina/%year%%month%%day%-%hour%%minute%_metalness"
      ],
      "widgets_values_named": {
        "filename_prefix": "patina/%year%%month%%day%-%hour%%minute%_metalness"
      }
    },
    {
      "id": 25,
      "type": "SaveImage",
      "pos": [
        69.7270991066008,
        508.9863459864372
      ],
      "size": [
        373.6485367550731,
        421.999244495615
      ],
      "flags": {},
      "order": 7,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 30
        }
      ],
      "outputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "links": []
        }
      ],
      "title": "height",
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "patina/%year%%month%%day%-%hour%%minute%_height"
      ],
      "widgets_values_named": {
        "filename_prefix": "patina/%year%%month%%day%-%hour%%minute%_height"
      }
    },
    {
      "id": 29,
      "type": "MarkdownNote",
      "pos": [
        -1557.265453790667,
        8.902110424501338
      ],
      "size": [
        587.2726037200163,
        782.0166239750356
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "properties": {},
      "widgets_values": [
        "# Patina PBR Maps\n\n**Photo or texture -> PBR maps.** Converts one image into basecolor / normal / roughness / metalness / height. Nothing\nis regenerated: the maps are derived from exactly what the picture contains, so seams, perspective and lighting in the\nsource stay in the result. Partner (API) node: it runs on Comfy's servers, needs an account, nothing renders locally.\n\n## Input Asset\n\n- [patina_pbr_webbing_basecolor.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/patina_pbr_webbing_basecolor.png)\n\n## How to use it\n\n- Feed a flat, evenly lit surface photo, or an existing basecolor map - this example takes the green / white webbing\n  basecolor produced by the Patina Material Extract template, so the chain reads extract -> PBR maps.\n- Switch on only the maps you need. Every enabled map is billed, and three maps are usually enough for a game or a\n  product material.\n- **This node does not tile.** If the source is not seamless, the maps will not be either: use Patina Material\n  (Extract) when the result has to repeat, and this node when you already have a tiling basecolor and want the rest of\n  the set.\n- Inputs up to 2048 px; larger images are scaled down automatically (`auto_downscale`, on by default).\n\n## Outputs - wire in this slot order\n\n`0 basecolor` . `1 normal` . `2 roughness` . `3 metalness` . `4 height`\n\n## Tips that actually matter\n\n- The maps come back at the **input resolution**, not at a fixed size.\n- Metalness on non-metal surfaces comes back solid black - that is correct, not a failed download.\n- Roughness tends to read darker (smoother) than the photo suggests; check it against the source before shipping.\n- Strong directional light in the source is baked into the basecolor, which double-lights the material in 3D. Prefer\n  flat, diffuse photos."
      ],
      "widgets_values_named": {
        "text": "# Patina PBR Maps\n\n**Photo or texture -> PBR maps.** Converts one image into basecolor / normal / roughness / metalness / height. Nothing\nis regenerated: the maps are derived from exactly what the picture contains, so seams, perspective and lighting in the\nsource stay in the result. Partner (API) node: it runs on Comfy's servers, needs an account, nothing renders locally.\n\n## Input Asset\n\n- [patina_pbr_webbing_basecolor.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/patina_pbr_webbing_basecolor.png)\n\n## How to use it\n\n- Feed a flat, evenly lit surface photo, or an existing basecolor map - this example takes the green / white webbing\n  basecolor produced by the Patina Material Extract template, so the chain reads extract -> PBR maps.\n- Switch on only the maps you need. Every enabled map is billed, and three maps are usually enough for a game or a\n  product material.\n- **This node does not tile.** If the source is not seamless, the maps will not be either: use Patina Material\n  (Extract) when the result has to repeat, and this node when you already have a tiling basecolor and want the rest of\n  the set.\n- Inputs up to 2048 px; larger images are scaled down automatically (`auto_downscale`, on by default).\n\n## Outputs - wire in this slot order\n\n`0 basecolor` . `1 normal` . `2 roughness` . `3 metalness` . `4 height`\n\n## Tips that actually matter\n\n- The maps come back at the **input resolution**, not at a fixed size.\n- Metalness on non-metal surfaces comes back solid black - that is correct, not a failed download.\n- Roughness tends to read darker (smoother) than the photo suggests; check it against the source before shipping.\n- Strong directional light in the source is baked into the basecolor, which double-lights the material in 3D. Prefer\n  flat, diffuse photos."
      },
      "color": "#222",
      "bgcolor": "#000"
    },
    {
      "id": 30,
      "type": "LoadImage",
      "pos": [
        -916.0890251245451,
        13.48273436379975
      ],
      "size": [
        415.0581423487129,
        432.7386056769318
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            25
          ]
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": []
        }
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "widgets_values": [
        "patina_pbr_webbing_basecolor.png",
        "image"
      ],
      "widgets_values_named": {
        "image": "patina_pbr_webbing_basecolor.png",
        "upload": "image"
      }
    },
    {
      "id": 32,
      "type": "PatinaPBRMapsNode",
      "pos": [
        -387.5609545603945,
        4.191267082654889
      ],
      "size": [
        270,
        330
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [
        {
          "name": "image",
          "type": "IMAGE",
          "link": 25
        }
      ],
      "outputs": [
        {
          "name": "basecolor",
          "type": "IMAGE",
          "links": [
            26
          ]
        },
        {
          "name": "normal",
          "type": "IMAGE",
          "links": [
            27
          ]
        },
        {
          "name": "roughness",
          "type": "IMAGE",
          "links": [
            28
          ]
        },
        {
          "name": "metalness",
          "type": "IMAGE",
          "links": [
            29
          ]
        },
        {
          "name": "height",
          "type": "IMAGE",
          "links": [
            30
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "PatinaPBRMapsNode"
      },
      "widgets_values": [
        true,
        true,
        true,
        true,
        true,
        42,
        "randomize",
        false,
        true
      ],
      "widgets_values_named": {
        "basecolor": true,
        "normal": true,
        "roughness": true,
        "metalness": true,
        "height": true,
        "seed": 42,
        "control_after_generate": "randomize",
        "safety_checker": false,
        "auto_downscale": true
      },
      "color": "#432",
      "bgcolor": "#653"
    }
  ],
  "links": [
    [
      25,
      30,
      0,
      32,
      0,
      "IMAGE"
    ],
    [
      26,
      32,
      0,
      23,
      0,
      "IMAGE"
    ],
    [
      27,
      32,
      1,
      21,
      0,
      "IMAGE"
    ],
    [
      28,
      32,
      2,
      22,
      0,
      "IMAGE"
    ],
    [
      29,
      32,
      3,
      24,
      0,
      "IMAGE"
    ],
    [
      30,
      32,
      4,
      25,
      0,
      "IMAGE"
    ]
  ],
  "groups": [],
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.3627765951022773,
      "offset": [
        2114.5962531083755,
        860.5952696751928
      ]
    },
    "frontendVersion": "1.57.4"
  },
  "version": 0.4
}