作用:
-
用 C++ 模板 在编译阶段生成不同版本的渲染器代码,而不是在运行时用 if/else 选择功能。
-
可以“替换”渲染器中所有算术类型、数据结构,甚至函数调用方式,从而快速生成新特性版本的渲染器。
例子:
假设一个普通渲染器用 float 表示颜色值:
using Color = float;Mitsuba 2 可以在编译期用模板把它换成:
-
Spectrum(多波长光谱) -
StokesVector(带偏振信息) -
Vectorized<Float>(SIMD 宽向量) -
Diff<Float>(可微分变量类型)
这样不需要手工重写所有函数,模板自动替换类型并生成新的渲染代码。