Is fmod equivalient to the % operator in HLSL
以下语句是有效的HLSL:
1 | float3(300.0f,200.0f,100.0f) % 256.0f |
显然te%运算符适用于浮点数吗? 与fmod有何不同?
以下语句是否等效?
1 | fmod(float3(300.0f,200.0f,100.0f), 256.0f) |
谢谢
我相信是的。 此处记录了%运算符,并定义了该运算符可用于浮点数和整数。
我不确定它们是否完全相同,但请不要在上面引用我的意思。
这是我的测试:
1 2 3 4 5 6 7 | 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)) ) ); |
当映射为纹理时,第二个版本返回视觉图案,而第一个版本纯粹是随机的。
也许我误会了一些东西,但是在这种情况下,它们的行为显然有所不同。
也许我只是愚弄了测试,但以为我会提及它,因为它似乎很重要。
编辑:此代码起源于这里
我可以在像素着色器中生成随机数吗? 似乎。