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)) ) );  

2 番目のバージョンは、テクスチャとしてマップされたときに視覚的なパターンを返しますが、1 番目のバージョンは純粋にランダムに見えます。おそらく私は何かを誤解していますが、この場合、彼らは確かに異なった振る舞いをしているようです.

多分私はテストを騙しただけかもしれませんが、関連しているように思えたので言及したいと思いました。

編集: このコードはここから 作成されました。ピクセル シェーダー内で乱数を生成できますか? 一見。

于 2014-08-03T00:07:19.303 に答える