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)。但某些应用需要知道返回样本是否具有负权重。