【nVIDIA】  Cg  【シェーディング】

このエントリーをはてなブックマークに追加
168デフォルトの名無しさん:2005/04/27(水) 17:49:27
上がってなかった
169デフォルトの名無しさん:2005/05/05(木) 18:09:41
nVIDIAのSDKに入ってるOceanはすごい。一見の価値あり。
ttp://developer.nvidia.com/dev_content/fxcomposer/images/OceanWaves.jpg
これがヌルヌル動くとは。といってもこんなもんどうせnVIDIAの香具師しか書けないんだろう。
170デフォルトの名無しさん:2005/05/14(土) 20:33:17
質問です。
http://www.amazon.co.jp/exec/obidos/ASIN/4939007553/qid%3D1116070284/250-1942253-9035450
この本って、どうですか?
OpenGL + Cgなプログラムを書きたいのですが、もしかしてDirectXでの利用メインでしょうか?
あと、関数リファレンス的につかえる部分はありますか?
171デフォルトの名無しさん:2005/05/14(土) 20:37:39
Cgって終わっちまったのかなぁ
172デフォルトの名無しさん:2005/05/14(土) 20:48:30
PS3次第
173デフォルトの名無しさん:2005/05/14(土) 20:52:21
CgもHLSLもGLSLも同じ。
174デフォルトの名無しさん:2005/05/18(水) 02:07:13
ヘタレで申し訳ない。
Cg使ってみたいんだけど、どなたかFX COMPOSER日本語の解説をやってるサイト・PDFを知りませんか?
英語全く読めないんで・・・。
175デフォルトの名無しさん:2005/05/18(水) 02:23:27
英語が読めないのに、CgやFX COMPOSERといった単語をどうやって捉えているのだろうか。
まあ辞書片手に英語の解説を当たった方がいいよ。
情報量が違うし、この先も英語とおつきあいするんだし。
あなたが訳してWebにすればみんなが幸せになるし。
176デフォルトの名無しさん:2005/05/18(水) 02:44:42
>>175
やっぱり長い目で見ると英語で読めるようにしとかないと辛いですよね。
中学〜今(大学2年)までずーっと英語習ってるのに、全く身に付かないので既に諦めてました。
けど、嫌でも使わないといけなくなるしなぁ・・・
177デフォルトの名無しさん:2005/05/18(水) 05:03:31
>>176
使えないのは今まで使う必要がなかったからです。
必要があればしぶしぶ読む→ちょっと読めるようになって楽に→スパイラル
というわけで日本語の資料が少ないわけですよ。
178デフォルトの名無しさん:2005/05/18(水) 13:45:43
FX Composerって英語読めないと分からないか?
www.shader.jpに少しだけ解説がある
179デフォルトの名無しさん:2005/05/18(水) 16:27:46
ちょっと待て
何か勘違いしてないか?
FX COMPOSERって、Cg用じゃなくて、HLSL用だぞ
もしOpenGLでの利用を考えてるなら絶望的。

180179:2005/05/18(水) 16:33:37
追記
殆ど互換性はあるから、大抵の場合プロファイルをDirectXと言う事にしておいて、開発終了後にOpenGL用に少し書き直せばOKかと・・・
FX Composerもver2.0からCg対応のはず。
181デフォルトの名無しさん:2005/05/18(水) 16:55:03
日本のPS3のデモより>>169の方が優れている
182デフォルトの名無しさん:2005/05/18(水) 17:59:06
もっとすごいのを作ってみせるので、>>169がヌルヌル動くハードを下さい。
183デフォルトの名無しさん:2005/05/18(水) 18:06:02
>>182
GeForceFX程度ならどれでも動く。
184デフォルトの名無しさん:2005/05/26(木) 13:35:40
>171
終わったなどトンでもないだろう。
PS3、XBOX360、Revolution、PC
どれをとっても、必須。
今後全てCgベースになる事間違いない。
(Cg=HLSL=GLSLという意味でね)
185デフォルトの名無しさん:2005/06/08(水) 02:56:02
これからはデザイナーからシェーダー書けよ俺が指示した仕様でまとめとけよ!の時代ですかね?

かってにデザイナーにシェーダーツリー書いてもらうソフトも増えてきてるし

しかしパララミックおもろ
186デフォルトの名無しさん:2005/06/10(金) 19:54:31
GL+CgでGLで設定したマテリアルとかをCg側で読む方法ないんかなぁ。
いちいちcgSetParameterするのがちょっと…。
187デフォルトの名無しさん:2005/06/10(金) 21:22:57
>>186
glstate
188デフォルトの名無しさん:2005/06/11(土) 01:27:30
>(Cg=HLSL=GLSLという意味でね)

おいおい、シェーダー書いた事ないのか?
イコールじゃないものをそんなアバウトに説明しないでくれ。
XBOX360でCg使えるとかウソを書くな。
Revolutionまで話に出すとホラ吹き野郎としか思えない。

>今後全てCgベースになる事間違いない。

間違いだらけのうえに根拠のない断定をされてもねぇ。
おまえはいつも回りにそんな話し方してるのか?呆れられるぞ。
189デフォルトの名無しさん:2005/06/24(金) 13:52:52
vertexOutput VS(appData IN,
uniform float4x4 WorldViewProj
) {
vertexOutput OUT;

OUT.HPosition = mul(float4(IN.Position.xyz, 1.0f), WorldViewProj); //Dx
OUT.HPosition = mul(WorldViewProj, float4(IN.Position.xyz, 1.0f)); //Cg
OUT.TexCoord0 = IN.UV;
return OUT;
}

こんな風に書けばDirectXでもCgでも動作するコードが書けるんだがな・・・
ちなみに、行末のコメントを見て、ファイル読み込み時に不要なほうを消して使用。
次世代にシェーディングランゲージの搭載はどう考えても必須。
その言語ベースにCg使わない理由はないので、どのプラットフォームでもCg採用はガチ。
190デフォルトの名無しさん:2005/06/25(土) 08:39:11
>>189
そんな中途半端なテクニックで回避せずに、
素直にDirectXでSetMatrixTransposeかコンパイラオプションを使いなさい
191デフォルトの名無しさん:2005/07/02(土) 17:02:33
みんな、どこからHLSLに手を出したの?
10年間CUIしかいじったこと無い俺には、どこから手を出すべきか分からない。。
192デフォルトの名無しさん:2005/07/04(月) 13:53:45
HLSLから入りたいのなら、nVidiaとかATIのデモ見て、シェーダを1〜2行書き換えて違いを見る・・・とか
その辺からはじめたら?
その後、NeHeとかのサンプルでOpenGLやらDirectXやらのポリゴン描画プログラムの感触つかんで、
フリーの3Dエンジン・・・かな。
193デフォルトの名無しさん:2005/07/22(金) 20:05:17
NeHeはいいよね。たくさん勉強できる。
194デフォルトの名無しさん:2005/07/26(火) 14:35:36
1枚の平坦なテクスチャをシェーダーでライティング計算して
その結果を他のテクスチャとブレンドする事って可能かな?
195デフォルトの名無しさん:2005/07/28(木) 01:08:59
>>194
いまいち理解できてないんだけど、テクスチャーのアルファ値を、
光源計算で変化させたいってこと?
ディフューズをアルファ値に入れて、2回描画してブレンドすればできるんでない?
196デフォルトの名無しさん:2005/08/10(水) 19:51:42
GPU GEMSとかで頂点モーフィングとか載ってるけど、
モーフ用の頂点情報ってどうやって渡すのが普通なの?
197デフォルトの名無しさん:2005/09/19(月) 17:57:45
短縮して書くと、
VS_OUTPUT RenderSceneVS_TransformOnly( float4 vPos : POSITION )
{
VS_OUTPUT Output;
Output.Position = mul(vPos, g_mWorldViewProjection);
Output.Diffuse.rgb = g_MaterialDiffuseColor;
Output.Diffuse.a = 1.0f;
return Output;
}

PS_OUTPUT RenderScenePS( VS_OUTPUT In )
{
PS_OUTPUT Output;
Output.RGBColor = In.Diffuse;
return Output;
}

となっているのですが、ピクセルシェーダの引数の"VS_OUTPUT In"
のInはどこから来たのですか?どこにもInなど宣言していないのに。。。
分かるように説明して貰えませんか?
198デフォルトの名無しさん:2005/09/19(月) 22:50:23
VS_OUTPUT In がInの宣言では?
どこから来たのかといえばピクセルシェーダーとして登録されてるので、
頂点シェーダーの出力から三角形を構築して補間したのち
各頂点ごとに呼び出されるのでしょう。きっと。
199197:2005/09/20(火) 00:27:46
前レスから一ヶ月以上空いていたので、誰もいないかと思ってました。

ってことは、PS実行時にVS_OUTPUT Inで宣言したら
かってにInの中にはVSの出力が入ってるってことですね?
200デフォルトの名無しさん:2005/09/20(火) 02:15:07
そういうことです。VSが出したのを、ピクセル単位に「補間」してるデータです。
多分VS_OUTPUTは
float4 Position : POSITION;
float4 Diffuse : COLOR0;
こんなんになってると思います。
ですので、Inの中に入っているというよりは、POSITION,COLOR0といったセマンティックを介しています。
201197:2005/09/20(火) 18:35:30
親切にありがとうございます。
前からシェーダには興味があったのですが、実際よく分かってないようで。
でも慣れてくるとおもしろそうです。

これからもっと勉強します。この度はありがとうございました。
202デフォルトの名無しさん:2005/09/21(水) 20:05:18
初歩的な質問だとは思いますが、
ライトのディレクションベクトルというのは
始点が頂点で終点がライトのベクトルですか?
それとも全く別ですか?
203202:2005/09/21(水) 20:51:46
大変失礼しました。ライトのディレクションベクトルは
ライトの向いている方向を表すベクトルだったようです。
で、個人的にうまくいかなかったのは視点ベクトルを使っていなかったからみたい。
204デフォルトの名無しさん:2005/11/08(火) 19:22:10
どのチップがどの程度cg言語に対応してるかっていうのがわかるとこないっすか?
205デフォルトの名無しさん:2005/11/12(土) 16:50:48
Cgってどうなん?
206デフォルトの名無しさん:2005/11/12(土) 17:06:02
>>205
今熱いです。
207デフォルトの名無しさん:2005/11/18(金) 21:36:59
このすれは寒いな・・・
208デフォルトの名無しさん:2005/11/18(金) 21:49:25
こっちに関わる人ってあんまり表に出てこないから。
大きな将来を担っていると思うんだがな。
それにしても360のソフトはグラフィックに限って言えば、
物によってはすごいけど、大部分は5年前と大して変わらない。
3DMark2000のような衝撃が欲しい。
209デフォルトの名無しさん:2005/12/15(木) 01:04:19
struct Light {
half3 vec;
half3 diffuse;
half3 specular;
half intensity;
};
Light g_Light;

みたいなのにアクセスするのに、cgGetNamedParameterで"g_Light.vec"って
感じでアクセスしたいんだけど。ソース呼んでアプリ上でコンパイルするときは
これでアクセスできるのに、同じソースをcgcでコンパイルしたバイナリの
読み込みだとアクセス失敗するのはなんでだろう?
210マイク ◆yrBrqfF1Ew :2005/12/15(木) 15:43:06
>こっちに関わる人ってあんまり表に出てこないから。

さすが閉鎖的な日本だな
211デフォルトの名無しさん:2005/12/15(木) 23:22:17
212デフォルトの名無しさん:2006/03/18(土) 07:41:28
>>206
ブーム去ったんじゃないの?
Curlみたいに。
213http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 18:46:15
TextSS の64bit化おながいします

もしくは64bitにネイティブ対応した置換ソフトないですか?
214デフォルトの名無しさん:2006/05/04(木) 23:22:17
んヴぃぢあ
215デフォルトの名無しさん:2006/06/21(水) 20:53:53
Cg 1.5 Beta2+OpenGLでプログラムを書いているのですが、
配列の受け渡しがうまくいきません。マトリクスの配列を
ピクセルシェーダに渡したいのですが実行時に落ちてしまいます。
cgSetParameterArray**をcgSetParameter**に変えて適当な数の
パラメータを送るとうまく送れるのですが・・・。
そうするとindexが使えないので困っています。
うまく配列を渡せている方はおられませんでしょうか?
216デフォルトの名無しさん:2006/06/22(木) 04:13:52
やったことないけどcgGLSetMatrixParameterArray*を使うんじゃないの?
217デフォルトの名無しさん
はい、そうでした。
Arrayの場合はcgGLを使っています。
ですが、配列とそうじゃないときでprefixが変わるのもよくわからないので
???な感じです。
ヘッダを見てもcg.h と cgGL.hで両方揃ってる組み合わせがないのです。
まだまだマイナーな言語なのでしょうか・・・。