2012-10-24 13 views
3

FMOD equivalient到%运营商下面的语句是有效的HLSL:是在HLSL

float3(300.0f,200.0f,100.0f) % 256.0f 

显然TE%操作符对浮点数?与fmod有什么不同? 以下语句是否相同?

fmod(float3(300.0f,200.0f,100.0f), 256.0f) 

感谢

+0

在每个位置都尝试使用正面和负面的参数。 – EJP

回答

1

我相信是这样的,是的。 %运算符记录在here中,并被定义为在浮点数和整数上工作。

+1

然而,它说'只有在双方都是正数或双方都是负数的情况下,%运算符才被定义。'我没有看到'fmod'函数的这种保留。 – Claude

0

我不确定它们是否完全一样,但不要引用它。 这里是我的测试:当作为纹理映射,而第一次出现纯粹随机

const float2 r = float2(
23.1406926327792690, // e^pi (Gelfond's constant) 
2.6651441426902251); // 2^sqrt(2) (Gelfond–Schneider constant) 

return frac(cos(fmod(12345678., 1e-7 + 256. * dot(p,r)))); 

//return frac(cos(12345678.% (1e-7 + 256. * dot(p,r)))); 

第2版返回视觉模式。 也许我误解了一些东西,但他们在这个例子中似乎采取了不同的行为。

也许我只是试验测试,但认为我会提及它,因为它似乎相关。

编辑:此编码起源于这里 Can I generate a random number inside a pixel shader?貌似。

+0

一只燕子不是夏天做的,一次测试并不能证明这一点。你需要至少四个,每个可能的积极和消极参数的组合。 – EJP

+0

够公平的。我试图提出一个有趣的观点,而不是一个。 – twobob

+0

@ Michaelangel007我没有从IIRC那里得到它,它来自一些随机的XNA地方,可能是从那里得到的。 随时可以在任何时候错误地指责我剽窃。 哦,你做到了。 – twobob