<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 920 350" font-family="Consolas, 'Courier New', monospace">
  <defs>
    <marker id="ah" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0 0L10 5L0 10z" fill="#888"/></marker>
    <marker id="ahp" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0 0L10 5L0 10z" fill="#9a6be8"/></marker>
  </defs>

  <text x="20" y="22" fill="#d4d4d4" font-size="12" font-weight="bold">One material graph, several runtime fragments</text>
  <text x="315" y="22" fill="#666" font-size="10">all retain one extensionless asset identity</text>

  <rect x="35" y="55" width="180" height="74" rx="5" fill="#1a3050" stroke="#4a8fd4" stroke-width="1.2"/>
  <text x="125" y="81" fill="#d4d4d4" font-size="11" text-anchor="middle">Example.matgraph</text>
  <text x="125" y="99" fill="#7ab0e0" font-size="9" text-anchor="middle">source graph + settings</text>
  <text x="125" y="113" fill="#666" font-size="8" text-anchor="middle">game:/Materials/Example</text>

  <rect x="325" y="44" width="220" height="96" rx="5" fill="#2a1a40" stroke="#9a6be8" stroke-width="1.2"/>
  <text x="435" y="70" fill="#d4d4d4" font-size="11" text-anchor="middle">MaterialGraphProcessor</text>
  <text x="435" y="91" fill="#b88ae8" font-size="9" text-anchor="middle">graph → generated HLSL</text>
  <text x="435" y="107" fill="#b88ae8" font-size="9" text-anchor="middle">shader + material processors</text>
  <text x="435" y="123" fill="#666" font-size="8" text-anchor="middle">one ProcessResultSuccess</text>
  <path d="M217 92 L320 92" stroke="#888" stroke-width="1.2" fill="none" marker-end="url(#ah)"/>

  <rect x="655" y="42" width="220" height="44" rx="4" fill="#40301a" stroke="#e8a46b" stroke-width="1"/>
  <text x="765" y="61" fill="#d4d4d4" font-size="10" text-anchor="middle">#vertex / #pixel</text>
  <text x="765" y="75" fill="#d4a46b" font-size="8" text-anchor="middle">SHD fragments</text>
  <rect x="655" y="105" width="220" height="44" rx="4" fill="#40301a" stroke="#e8a46b" stroke-width="1"/>
  <text x="765" y="124" fill="#d4d4d4" font-size="10" text-anchor="middle">default output</text>
  <text x="765" y="138" fill="#d4a46b" font-size="8" text-anchor="middle">MAT fragment</text>
  <rect x="655" y="168" width="220" height="44" rx="4" fill="#40301a" stroke="#e8a46b" stroke-width="1"/>
  <text x="765" y="187" fill="#d4d4d4" font-size="10" text-anchor="middle">#instance</text>
  <text x="765" y="201" fill="#d4a46b" font-size="8" text-anchor="middle">MIN fragment</text>
  <path d="M547 82 L650 64" stroke="#9a6be8" stroke-width="1.2" fill="none" marker-end="url(#ahp)"/>
  <path d="M547 92 L650 127" stroke="#9a6be8" stroke-width="1.2" fill="none" marker-end="url(#ahp)"/>
  <path d="M547 106 L650 190" stroke="#9a6be8" stroke-width="1.2" fill="none" marker-end="url(#ahp)"/>

  <rect x="70" y="255" width="780" height="56" rx="6" fill="#1e4a2a" fill-opacity="0.16" stroke="#98c379" stroke-width="0.8" stroke-dasharray="4"/>
  <text x="90" y="279" fill="#98c379" font-size="10">COOKED URI FAMILY</text>
  <text x="460" y="274" fill="#d4d4d4" font-size="10" text-anchor="middle">assets:/Game/Materials/Example</text>
  <text x="460" y="293" fill="#98c379" font-size="9" text-anchor="middle">#vertex   ·   #pixel   ·   default material   ·   #instance</text>
  <path d="M765 214 L765 252" stroke="#98c379" stroke-width="1.2" fill="none" marker-end="url(#ah)"/>
  <text x="460" y="332" fill="#555" font-size="9" text-anchor="middle">Each output carries its own type header and payload hash.</text>
</svg>
