PAPER READING / ACM TOG 42(4) · SIGGRAPH 2023

Diffmat v2

把生产级材质图变成可求导程序,
再直接搜索连续与整数参数。

Beichen Li · Liang Shi✉ · Wojciech Matusik
MIT CSAIL · Article 153 · 15-page published article

3优化阶段
50完整翻译的材质图图库
10 × 3Table 1 节点与分辨率组合
22f7976代码审计提交

论文解决的是固定程序化材质图的参数捕获:给定一张闪光照片和一个已经选好的 Substance 风格节点图,系统执行图、渲染 SVBRDF 外观,并交替优化可微连续参数与离散/不可微参数。核心价值来自新的执行基础设施和优化器组合,系统不会生成新的图拓扑。

核查范围:MIT 仓储 PDF 共 16 个文件页;第 1 页为仓储封面,正式论文为后续 15 页,包含 Appendix A–C。项目 HTTPS 页面在核查环境中无法访问;论文、MIT 元数据与官方仓库提供其 HTTP 地址。代码核查日期 2026-09-28。

01 / RESEARCH GAP

生成器节点长期挡在可微捕获流程之外

MATch 已经能够把许多滤镜节点翻译为可微程序,再用梯度下降匹配目标照片。生产级图中的噪声与图案生成器包含随机数、整数尺度、分支、循环和逐像素函数,旧 Diffmat 只能将这类输出预先缓存为位图。缓存冻结了生成器,也让目标与缓存尺度不一致时无法修正。Neural Proxies 为生成器训练神经代理,代价包括逐节点训练、近似误差、固定分辨率与有限参数范围。

输入

一张目标材质 RGB 闪光照片 \(I^{\ast}\),以及用户提供或经最近邻检索选出的固定材质图 \(G\)。图内包含滤镜、生成器、FX-Map、Pixel Processor 和可能的 exposed parameters。

输出

图 \(G\) 的优化参数,包括连续浮点参数、整数/开关参数和可选 exposed parameters;输出图结构与节点集合保持固定。

优化目标

使执行图、生成 SVBRDF 贴图并在固定成像模型下渲染得到的 \(I(\Theta,\Phi)\) 与 \(I^{\ast}\) 在 VGG19 Gram descriptor 与频域结构上接近。

原论文 Figure 1:与 Neural Proxies 和 MATch 的材质捕获对比,以及完整翻译示例
原论文 Figure 1。左侧比较 Neural Proxies,中部比较 MATch,右侧展示 Diffmat v2 翻译并执行的生产级图。图示支持定性改进和执行覆盖范围;论文没有为捕获质量给出大型定量误差表或用户研究。
Paper Verified论文的优化对象是预先选定图中的参数。最近邻检索只是一种图来源,方法本身没有学习或搜索 graph topology。
02 / PROBLEM FORMULATION

参数类型决定它进入哪一种优化阶段

为避免 PDF 字体提取造成的横线丢失,这里把论文符号按语义标准化。连续参数写作 \(\Theta=(\theta_f,\theta_g,\bar{\theta}_g)\):\(\theta_f\) 是可微滤镜参数,\(\theta_g\) 是可微生成器参数,\(\bar{\theta}_g\) 是不可微连续生成器参数。整数/离散参数写作 \(\Phi=(\phi_f,\phi_g)\)。exposed parameters 写作 \(E=(e_d,e_n,e_i)\),分别表示可微连续、不可微连续与整数 exposed 参数。

\(G\):固定节点图及连接关系

\(I(\Theta,\Phi,E)\):执行材质图、生成 SVBRDF 并渲染后的图像

\(I^{\ast}\):目标闪光照片或合成目标

\(\mathcal T(\cdot)\):VGG19 多层特征 Gram matrix descriptor

\(\mathcal F(\cdot)\):二维 FFT 幅度表示

\(\lambda_F\):频域损失权重

Author Claim作者称系统能够端到端翻译生产级材质图并免除专有自动化工具。论文的 50 图图库支持所选图集合中的能力;官方仓库同时明确保留 unsupported nodes 的 SAT/AS3D 缓存路径,因此该表述不能扩大为任意 SBS 图都能完全自包含执行。
03 / FX-MAP

先展开控制图,再批量渲染原子图案

FX-Map 递归细分纹理画布。深度 \(l\) 的每个方格 \((p,q)\) 可以发射若干 atomic pattern;每个 pattern 有形状 \(\psi\)、几何变换 \(\mathcal A\)、强度 \(\alpha\) 与混合方式。用 \(F_{l,p,q}\) 表示当前方格直接产生的图案合成:

\[F_{l,p,q}(u,v)=\sum_{i=1}^{n_{l,p,q}}\alpha_{l,p,q,i}\,\mathcal A_{l,p,q,i}[\psi_{l,p,q,i}](2^{l-2}u-p,\,2^{l-2}v-q).\]

论文的文字定义要求 \(S_{l,p,q}\) 包含该方格整棵子树的累积结果。按深度优先遍历语义,递推应明确写为:

\[S_{l,p,q}=F_{l,p,q}+\begin{cases}\displaystyle\sum_{a,b\in\{0,1\}}S_{l+1,2p+a,2q+b},&l\lt L,\\0,&l=L.\end{cases}\]

原论文 Eq. (2) 右侧对子节点使用了与“完整子树累积”不一致的符号,无法递归覆盖超过一层的后代。上式依据紧接公式的三步 DFS 描述标准化,属于排版/符号修正,不改变算法。

原论文 Figure 2:Quadrant、Iterate 和 Switch 组成的 FX-Map
原论文 Figure 2。Quadrant 发射图案并连接四个象限;Iterate 先执行左子树,再按次数重复右子树;Switch 根据布尔函数选择分支。迭代编号和随机状态会改变每次访问的行为。
解析节点图读取常量或执行 Value Processor
DFS 遍历维护 named variables、迭代状态与 branch offset
提交作业Quadrant 写入带时间戳的全局队列
批量变换按图案类型组合 job array
画布合成执行变换与 blend,得到纹理

通用 FX-Map 可能借助 Set/Sequence 建立先后依赖,因此展开仍需顺序进行。预定义生成器可以利用已知结构专门优化:Appendix B 以 Make It Tile Patch 为例,它只渲染一个 octave,连续 pattern 之间没有依赖,可以一次并行计算。论文报告约 \(300\times\) 加速针对该专门节点相对旧 Diffmat 的硬编码实现。

原论文 Figure 4:Diffmat v2 与 Substance 3D 的节点输出比较
原论文 Figure 4。无随机过程或关闭随机性的节点可以逐像素匹配;含随机过程的节点因 S3D 伪随机算法未公开,只达到感知近似与统计一致。页面采用论文原有限定,没有把后者写成严格逐像素相等。
04 / PIXEL PROCESSOR

把 function graph 编译为统一的 PyTorch 程序

Pixel Processor 为每个像素执行用户定义函数,可表达 Sobel、warp、坐标变换和更复杂着色过程。Diffmat v2 静态推断 function node 的输入类型,将标量、向量和逐像素 tensor 映射到标准 Python 或 PyTorch 运算;遇到类型不一致时显式 cast。连续参数或中间纹理需要梯度时,生成程序沿 PyTorch 计算图自动反向传播。

原论文 Figure 3:Pixel Processor 的方向性浮雕示例及编译程序
原论文 Figure 3。方向性 emboss 示例展示输入采样、反向差分和模拟光照。Appendix C 补充了两类关键功能:sampling nodes 读取输入图像;Set/Sequence 将可变状态跨 function graph 传递,使 FX-Map 能表达有限状态机式顺序控制。
Our Interpretation这里的“自定义”受到已实现 function node 与翻译器语义约束。它提供可组合的程序执行层,未构成对任意 Python、任意 shader 或任意 Substance 节点的通用编译器。
05 / MIXED-INTEGER OPTIMIZATION

连续参数负责靠近目标,整数搜索负责改变结构尺度

目标照片手机闪光照片或合成渲染
Stage 1VGG Gram \(L_1\),最多 2000 次梯度步
Stage 2逐坐标线性网格搜索
Stage 3连续参数梯度微调
结果优化参数、SVBRDF 与渲染外观

Stage 1 · 梯度初始化

令 \(\Theta_{\nabla}=(\theta_f,\theta_g)\) 表示当前启用梯度的连续子集。Stage 1 只更新 \(\theta_f\)、\(\theta_g\) 与 \(e_d\),使全局 albedo 和仿射几何大致接近目标;不可微连续参数 \(\bar{\theta}_g\) 保持固定。用户可以停止某些参数组的梯度,从而保留均匀 tile、weave 等结构或只调整 exposed parameters。

\[(\Theta_{\nabla}^{(1)},e_d^{(1)})=\arg\min_{\Theta_{\nabla},e_d}\left\|\mathcal T(I(\Theta,\Phi,E))-\mathcal T(I^{\ast})\right\|_1.\]

Stage 2 · 无梯度混合整数搜索

每个 epoch 依次访问所有激活参数,固定其余参数并做一维线性搜索。整数步长为 \(1\);归一化连续参数在 \([0,1]\) 上使用 \(0.01\) 步长,默认范围允许用户扩展。目标增加 FFT 项,因为频谱对重复间距、排列与其他结构变化更敏感。

\[(\Theta^{(2)},\Phi^{(2)},E^{(2)})=\arg\min\Bigl[\left\|\mathcal T(I)-\mathcal T(I^{\ast})\right\|_1+\lambda_F\left\|\mathcal F(I)-\mathcal F(I^{\ast})\right\|_1\Bigr].\]

论文通常在不超过 5 个 epoch 收敛。该方法依赖“多数参数影响相对正交”的经验假设;复杂 weave 中互相耦合的整数参数会让逐坐标更新破坏结构。

Stage 3 · 梯度微调

固定新找到的离散配置,再以 Stage 1 的目标微调 \(\Theta_{\nabla}\) 与启用梯度的 exposed 参数;\(\bar{\theta}_g\) 等不可微连续参数仍保持固定。Stage 2 与 Stage 3 可以重复,论文称多数案例最多再循环两次。正文没有给出 Adam learning rate、FFT 权重、具体停止阈值、硬件型号或逐案例总时长;这些缺失项不能从 README 示例参数反推。

Evidence Boundary官方仓库示例使用 Adam \(5\times10^{-4}\) 与 1000 步,混合优化 CLI 默认 5 次迭代、组合损失 FFT 权重 \(10^{-3}\)。这些是提交 `22f7976` 的示例/默认值,论文正文没有声明它们就是所有实验配置。
06 / EXPOSED PARAMETER TRANSFER

匹配语义滑块引起的外观变化,再拟合目标图的控制函数

参考图 \(G_r\) 具有连续 exposed parameter \(e\in[0,1]\),目标图 \(G_t\) 具有低层连续参数。系统在 \(e_j=j/N\) 处采样参考图,并以 \(e=0\) 为基准计算 descriptor 差:

\[T_j^r=\mathcal T\!\left(I_r(\theta_r(e_j))\right),\qquad \Delta T_j^r=T_j^r-T_0^r.\]

对每个采样点,目标图从默认参数或前一个解开始优化,使 descriptor 变化接近缩放后的参考变化。为保持轨迹平滑,\(j\gt0\) 时加入与前一个目标解的图像和 descriptor 距离:

\[\hat{\theta}_j=\arg\min_{\theta}\left\|\mathcal T(I_t(\theta))-\mathcal T(I_t(\theta_0))-s\,\Delta T_j^r\right\|_1+\mathcal L_{\mathrm{reg}}(\theta;\hat{\theta}_{j-1}),\]
\[\mathcal L_{\mathrm{reg}}=\lambda\left\|I_t(\theta)-I_t(\hat{\theta}_{j-1})\right\|_1+\eta\left\|\mathcal T(I_t(\theta))-\mathcal T(I_t(\hat{\theta}_{j-1}))\right\|_1.\]

随后按每个参数对 descriptor 变化的贡献选出 top-\(K\) 参数,对第 \(k\) 个参数序列用最小二乘拟合 \(M\) 阶多项式 \(P_k(e)=\sum_{m=0}^M c_{k,m}e^m\),再将多项式写成 S3D function graph。该功能只迁移连续 exposed parameters,要求参考图与目标图具有相近材质语义;它没有学习通用语义参数,也没有迁移离散控制。

原论文 Figure 8 与 Figure 9:exposed parameter transfer 和失败案例
原论文 Figures 8–9。Figure 8 展示 dirt、age、rust、damage 等控制在相似图之间迁移;Figure 9 展示 mixed weave 的整数耦合失败,以及 VGG Gram 忽略 wood knots 的细节失败。
07 / RESULTS

执行速度有完整数字,捕获质量主要依赖定性证据

Table 1 · 节点运行时间,单位 ms

节点需梯度256²512²1024²
Diffmat v2 F/BS3DDiffmat v2 F/BS3DDiffmat v2 F/BS3D
Make It Tile PatchY8 / 51110 / 61322 / 1913
Tile GeneratorY8 / 628 / 9216 / 164
Brick GeneratorY5 / 4165 / 4166 / 518
StripesY3 / 163 / 264 / 57
Arc PavementY6 / 326 / 428 / 52
SplatterY7 / 467 / 4612 / 85
Perlin NoiseN5 / —86 / —97 / —13
Crystal 2N6 / —36 / —58 / —15
Clouds 2N11 / —1613 / —1615 / —20
BnW Spots 3N15 / —2417 / —2520 / —26

完整重建论文 Table 1。S3D 只给 forward 时间;不需要可微连续参数的节点没有 backward。Caption 宣称所有案例“comparable or faster”,原值中 Tile Generator 在 512² 为 8 ms 对 2 ms、Arc Pavement 为 6 ms 对 2 ms、Make It Tile Patch 在 1024² 为 22 ms 对 13 ms,均显示 Diffmat v2 forward 较慢。缺少统一硬件与置信区间时,适合将结论限定为同数量级且部分节点更快。

Table 2 · 完整生产级图每次 forward / backward,单位 ms

图256 F256 B512 F512 B1024 F1024 B
Brick Wall105511085411789
Concrete Tiles211318202460
Aluminium Cut281628254150
Metal Grill2214202540168
Amethyst52406052102129
Marble441546185368
Bitten Cookie1508415087188214
Weave and Knit160114199144412609
Nature Ground264186299235479758
Office Carpet685195106227434

旧 Diffmat 在 Office Carpet 512² 上为 1659 / 1853 ms;Diffmat v2 为 95 / 106 ms,约 \(17\times\)。Neural Proxy 的引用估算为 256² 上 11 ms、512² 上 44 ms;论文没有提供统一硬件、同图结构与同测试脚本,因此这些数字只能帮助理解数量级。

原论文 Figure 6:与 MATch 的更多定性对比
原论文 Figure 6。与 MATch 的定性比较覆盖 fabric、wood、rock、carpet、ground 等类别。作者强调整数尺度、二值开关和 roughness 的修正。公平性边界来自 MATch 的 unsupported 节点需要预缓存并冻结其前驱子图。
原论文 Figure 7:与 Neural Proxies 的更多定性对比
原论文 Figure 7。Neural Proxies 比较复用了该工作的原始图和结果,因为新图包含大量未支持生成器,并且每个 proxy 在 256² forward 时约占 1.5 GB 显存。这里没有统一重跑、同预算或大样本数值指标。
原论文 Figure 10:50 个完整翻译程序化材质的图库
原论文 Figure 10。50 个由 artist-authored S3D 图翻译的材质,展示 1024² SVBRDF 渲染。正文 Figure 1 只展示其中 16 个。图库证明所选图的覆盖能力,无法直接推出任意第三方 SBS 图都能执行。
真正验证
所选节点与 50 个图的翻译、节点运行时间、定性捕获结果、连续 exposed parameter transfer 示例。
证据较弱
捕获质量没有定量误差表、用户研究、随机初值统计或显著性检验;对 Neural Proxies 复用历史结果。
没有验证
图拓扑生成、任意材质图兼容性、未知光照下唯一 SVBRDF 恢复、离散 exposed parameter transfer、跨硬件绝对速度结论。
08 / PAPER VS. IMPLEMENTATION

复现能力取决于节点覆盖、Adobe 工具和参数过滤器

核查项官方代码事实实践含义
节点覆盖graph_trans.py 将未知节点、缺失配置和未知连接器标记为 external。这类节点交给 SAT 生成纹理;前驱子图被冻结,相关参数无法完整参与端到端优化。
专有工具README 明确写明实用工作流仍需要 AS3D 或 SAT;external_input.py 调用 sbscooker 和 sbsrender。支持范围内的生成器可以自包含执行;完整工业图仍可能依赖 Adobe 工具和 bitmap cache。
图结构限制README 要求单个 material graph,不支持 custom dependent graphs;只支持方形纹理并忽略图内分辨率变化。层级 custom graph 需要人工 flatten;非方形输入会按方形假设处理。
遗漏功能incomplete_nodes.md 列出 Blend、Curve、Distance、Gradient Map、Bevel、Quantize 的部分未实现功能。图可以成功翻译,但相关参数或模式会被忽略,视觉与优化结果可能偏离 S3D。
混合优化GridSearch 逐个穷举整数范围,并在 \([0,1]\) 上构造 search_res + 1 个连续值。默认 search_res=100 对应 0.01 步长;复杂图的代价与参数数目和候选范围直接增长。
停止条件grid backend 按固定 num_iters 运行,可选 timeout;未见自动收敛阈值。论文“多数不超过 5 epochs”属于经验报告,公开 CLI 默认值本身并不构成自适应停止。
硬编码范围节点配置与参数翻译器提供范围;CLI 可切换过滤级别及外部参数文件。搜索不会自行发现新的节点或拓扑;参数范围需要图配置或用户指定。
许可证MIT 与 Adobe 联合 Research License 仅授权非商业研究用途,并要求再分发时附带许可证。将代码集成到商业产品前需要单独处理授权。

可复现的最小路径

  1. 准备单图、方形输出的 .sbs,并明确 normal format。未知节点需要可用的 AS3D/SAT 安装和外部缓存目录。
  2. 用 MaterialGraphTranslator(..., res=9, external_noise=False) 翻译 512² 图,执行 graph.compile();复杂生产图建议至少 16 GB VRAM。
  3. 将目标 RGB 图缩放到优化分辨率。先运行基于 VGG Gram 的连续优化,再运行 HybridOptimizer 的 grid backend,组合 VGG 与 FFT 指标,最后再次连续微调。
  4. 保存参数、SVBRDF maps、渲染结果与导出的 SBS;同时记录提交 hash、节点外部化清单、参数过滤级别、搜索范围、随机种子、硬件和总时间。
Missing in Paper论文没有公开逐图参数范围、每阶段具体 Adam 设置、\(\lambda_F\)、exposed transfer 的 \(N,K,M,s,\lambda,\eta\)、拍摄相机与光照标定细节、硬件型号或独立定量 capture metric。完整数值复现仍需要作者配置或 supplementary data。
09 / REVIEWER COMMENTARY

基础设施贡献清晰,系统结论受到覆盖范围和评测协议限制

Strengths

  • 直接执行生成器,消除了 neural proxy 的训练成本、分辨率锁定与近似误差。
  • FX-Map 和 Pixel Processor 的工程设计与优化任务紧密结合。
  • 混合整数流程能够改变 tile count、scale、binary switch 等梯度方法难以处理的结构参数。
  • 完整报告节点与图级运行时间,并公开代码。

Weaknesses

  • 图结构固定,图选错或缺少目标元素时必然失败。
  • 捕获质量证据以定性图为主,缺少大样本数值比较和用户评价。
  • 坐标搜索假设参数影响近似正交,在 weave 等耦合结构上失败。
  • 代码仍保留 SAT fallback,论文的 self-contained 表述只适用于已实现节点。

Potential Improvements

  • 用 graph constraint 或 learned dependency model 识别耦合整数参数,进行块坐标或约束搜索。
  • 加入多尺度、多视角与多光照观测,让 wood knots 等局部细节获得监督。
  • 在执行过程中检测外部化节点和无效梯度,自动生成可审计的能力清单。
  • 联合图检索、局部 topology repair 与参数优化,但保留真实执行验证。
Research Extension对程序化材质生成研究,最有价值的延伸是 execution-aware graph repair:先用模型提出少量拓扑编辑,再让 Diffmat v2 执行、检查节点支持范围、优化参数并以多尺度图像损失评分。研究假设需要通过固定预算、真实执行合法率、编辑性和视觉误差共同验证。
10 / SOURCES

一手资料与核查范围

  1. Li, Shi, Matusik. End-to-End Procedural Material Capture with Proxy-Free Mixed-Integer Optimization. ACM TOG 42(4), Article 153, August 2023. MIT 仓储收录 final published version。
  2. ACM DOI 10.1145/3592132. 出版身份与 15 页文章信息。
  3. mit-gfx/diffmat 官方仓库. 核查提交 22f7976ce698cb3db2337f84fad7a37bdb9f1ef3:README、LICENSE、incomplete_nodes.md、translator、optimizer、FX-Map 与测试 CLI。
  4. Liang Shi 官方个人页. 明确将 Liang Shi 标记为通讯作者;论文首页也给出 “Corresponding author: liangs@mit.edu”。
  5. 论文项目页. HTTP 地址来自论文正文与官方仓库;核查环境中 HTTPS 页面无法读取,因此本页没有引用其页面内容。

图像均来自正式论文对应 Figure 的页面区域。Table 1 与 Table 2 按正式 PDF 原值逐项重建。页面没有运行论文优化实验;代码分析属于提交快照的静态审计。