4

以下语句是有效的 HLSL:

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

显然 te % 运算符适用于浮点数?这与fmod有何不同?以下陈述是否等效?

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

谢谢

4

2 回答 2

2

我相信是的,是的。% 运算符在此处记录,并被定义为处理浮点数和整数。

于 2012-10-24T14:16:53.463 回答
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)) ) );  

第二个版本在映射为纹理时返回视觉图案,而第一个版本则完全随机。也许我误解了一些东西,但在这种情况下,他们的行为肯定会有所不同。

也许我只是搞砸了测试,但我想我会提到它,因为它看起来很相关。

编辑:此代码源自这里 我可以在像素着色器中生成一个随机数吗?似乎。

于 2014-08-03T00:07:19.303 回答