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