07/12/10 17:13:44 FNABsH2U
HLSLについて質問なんですが、
int i = 0;
while( i<2000 )
{
i++;
}
↑この用に記述してしまうと
命令数が限られているようで、「1024 iterasion」とエラーが吐き出されてしまって、
ループの限界数を超えてしまっているようです。
しかし、サンプルで落としたARBアセンブリシェーダだと、これがうまくいってるみたいなんです。
どう対処すればよろしいでしょうか。
469:名前は開発中のものです。
07/12/10 18:28:04 FhEMVCWa
よく分からんがまずサンプルも一緒に貼るべきではなかろうか
470:名前は開発中のものです。
07/12/10 20:12:14 FNABsH2U
468ですけれど、
シェーダ言語って、命令数が限られるものなんですか?
そうだとしたらその理由は?
471:名前は開発中のものです。
07/12/10 23:30:25 bUFq0CHp
サンプルは3.0でコンパイルしてるとかじゃねぇの?
3.0は分岐があるが、それ以前のものは条件分岐ないからループは全部展開される。
命令数は限られるが理由はしらん。
複数のユニットで並列実行するから技術的な問題が大きい気がするけど。
どっちみちシェーダーが長すぎて処理が2秒以上かかると
OSが丸ごとリセットかけるので実行できないことに変わりはないが。