Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Glsl 相同的代码在CG和JS中的作用不同?_Glsl_Gpu_Cg_Hsv - Fatal编程技术网

Glsl 相同的代码在CG和JS中的作用不同?

Glsl 相同的代码在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

我有一个用CG编写的RGBtoHSV代码,用于预览颜色变化,然后使用JS中的相同代码将其写入文件

首先,我必须将H值加上0.33,以得到两个代码中几乎相同的结果。为什么我要加0.33呢?此点在图形卡上可能指向什么不同的功能/舍入差异

即使如此,66%的图片在两个代码上的颜色完全相同,33%的颜色不同。我不明白为什么

如果我去掉3个if条件,代码的结果相同,无需在任何地方添加0.33


我认为唯一可能的问题是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;