Glsl 相同的代码在CG和JS中的作用不同?
我有一个用CG编写的RGBtoHSV代码,用于预览颜色变化,然后使用JS中的相同代码将其写入文件 首先,我必须将H值加上0.33,以得到两个代码中几乎相同的结果。为什么我要加0.33呢?此点在图形卡上可能指向什么不同的功能/舍入差异 即使如此,66%的图片在两个代码上的颜色完全相同,33%的颜色不同。我不明白为什么 如果我去掉3个if条件,代码的结果相同,无需在任何地方添加0.33Glsl 相同的代码在CG和JS中的作用不同?,glsl,gpu,cg,hsv,Glsl,Gpu,Cg,Hsv,我有一个用CG编写的RGBtoHSV代码,用于预览颜色变化,然后使用JS中的相同代码将其写入文件 首先,我必须将H值加上0.33,以得到两个代码中几乎相同的结果。为什么我要加0.33呢?此点在图形卡上可能指向什么不同的功能/舍入差异 即使如此,66%的图片在两个代码上的颜色完全相同,33%的颜色不同。我不明白为什么 如果我去掉3个if条件,代码的结果相同,无需在任何地方添加0.33 我认为唯一可能的问题是Javascript中%运算符对负数的行为与fract不同 您应该将其替换为fract(x
我认为唯一可能的问题是Javascript中%运算符对负数的行为与fract不同 您应该将其替换为fract(x)=x-Math.floor(x): 不同于:
Delta.x -= del.z;
Delta.y -= del.x;
Delta.z -= del.y;
因为CG版本一次完成了所有工作,而JS版本会覆盖它自己。应该是:
var del = Delta;
Delta.x -= del.z;
Delta.y -= del.x;
Delta.z -= del.y;
我真不敢相信我读了20多次那句话,却没发现是错误 Sry。我把它缩小到了HSV.x,它的两个功能完全不同。y和z都可以。对不起,我的错,我发现第一个有不同结果的变量是Delta。delta在这两个函数中完全不同。
Delta.x -= del.z;
Delta.y -= del.x;
Delta.z -= del.y;
var del = Delta;
Delta.x -= del.z;
Delta.y -= del.x;
Delta.z -= del.y;