GLSL fract函数真的是返回小数部分吗
Parameters
x specify the value to evaluate.
Description
fract() returns the fractional part of x. This is calculated as x - floor(x).
大致一看,没什么问题,但是仔细看下负数的部分,如果是小数部分,不应该是下面的图像吗?这不坑人的吗。
分析一下原因:x - floor(x).
如果x= -0.1,那么y=-0.1,但是看图,返回的是0.9.
因为 floor(-0.1) = -1,(floor返回小于等于x且最接近的整数)
所以-0.1 - (-1)= 0.9
这么一算就明白了这个函数的解释有多坑了吧。
简单理解,整数部分取小数,负数部分取小数+1.
说明:我说的负数并不是值x轴的负。而是预计结果的负。
看这个函数:y = fract(sin(2.0*x));
y = sin(2.0*x);
还有记住fract的返回值的值域是0-1