filter_remap
| 版本 | 18.5 |
|---|
vector filter_remap(vector2 uv, string filter, float width, ...)
此函数根据滤波器的重要性采样,将uv坐标映射为像素偏移量。
uv
分量应在0到1范围内。函数会将这些坐标重新映射到滤波器内核中的某一点,将更多点映射到权重较高的区域。返回的点将位于以0为中心、给定宽度的方框内。
filter
使用的滤波器类型。
"gauss"
高斯滤波器
"box"
盒式滤波器
"sinc"
辛格滤波器
"mitchell"
米切尔滤波器
"bartlett"
巴特利特滤波器(锥形滤波器)
"blackman"
布莱克曼滤波器
"catrom"
Catmull-Rom滤波器
"hanning"
汉宁滤波器
"point"
点滤波器
width
滤波器宽度。
单位盒式滤波器会将输入值映射到-0.5至0.5范围。将width改为2.0会使返回值范围变为-1.0至1.0。
例如对于高斯滤波器,width设为2.0更为合适。
“res”,
int
=32
在构建重要性采样的查找表时,滤波器会以该分辨率进行径向采样。
返回值
返回向量的x和y分量是重映射后的像素坐标(以零为中心)。z分量是返回样本处内核的近似权重值。
注意某些滤波器("sinc"、"mitchell"、"catrom")在某些区域具有负权重。进行重要性采样时不能使用负值,因此应使用权重的绝对值(使用abs)。但某些应用需要知道返回样本是否具有负权重。