OpenGL 2.0 専用スレ (873レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
595
(4): デフォルトの名無しさん [sage] 2008/01/26(土)04:19
cg のループ回数(もしくは行数)についてなのですが。
fragment shader (CG_PROFILE_ARBFP1): GeForce7900GS で

void main(out float4 color : COLOR){
float i;
float4 totalCol = 0;

for(i = 0; i < 200; i++){
totalCol += 0.001;
}
color = totalCol;
}

だとちゃんと動くのですが、ループの回数を200から300に増やすと、
CG_COMPILER_ERROR
になるのです。なにか制限とかってあるのでしょうか?
600: 595 [sage] 2008/01/26(土)15:54
ありがとうございます。
やっぱり制限数があるのですね。
他のプロファイルを試してみます。
606: 595 [sage] 2008/01/26(土)21:12
Cg 2.0 をインストールし(1.1だった)、CG_PROFILE_FP40 プロファイルを使用したら
動的ループができるようになりました。
ちなみに、CG_PROFILE_FP30では、動的ループは無理でした。
ただ、別の問題が出てきました。

void main(uniform float size, out float4 color : COLOR){
float i;
float4 totalCol = 0;

for(i = 0; i < size; i++){
totalCol += 1;
}

color = totalCol / size;
}

だと、sizeをいくつにしても、色が白になるはずなのですが、
size 250以上になるとだんだん色が薄くなっていきます。ループの中が
250までしか展開できてないようです。
607: 595 [sage] 2008/01/26(土)21:18
続き
で、以下のようにループ部分を分割し、試しにsize=400にして実行したら、

void main(uniform float size, out float4 color : COLOR){
float i;
float4 totalCol = 0;

for(i = 0; i < size - 200; i++){
totalCol += 1;
}

for(i = 200; i < size; i++){
totalCol += 1;
}
color = totalCol / size;
}

見事に白色になりました。
GeForce8800 だったら、こういうでかいループも処理できるんでしょうか?
611: 595 [sage] 2008/01/27(日)20:05
256まででしたか。
とりあえず分割ループでごまかすことにしました。
8800欲しい・・・
ちなみに、GPGPUなプログラムです。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.036s