トップページgamedev
509コメント160KB

シェーダープログラマが集うスレ

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/11/08 11:06ID:???

       ∧ ∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       (,,・∀・)    <  ゲームにもシェーダーの時代到来でち♪
       @_)      \_______


バーテックスシェーダーとかピクセルシェーダーとかを語りまくるスレ。
0002名無しさん@お腹いっぱい。01/11/08 11:21ID:???
リンクとかはこの過去ログにあるよ。
切れてるのも多いかも。

DirectX&OpenGL【シェーダ】プログラミング
http://piza.2ch.net/tech/kako/993/993758383.html
0003名無しさん@お腹いっぱい。01/11/08 11:23ID:???
チュートリアルはIF氏のHPが詳しいよ。
ttp://www5.tok2.com/home/IF/
0004名無しさん@お腹いっぱい。01/11/08 11:25ID:???
MSKKのコラム新作。

頂点単位のスペキュラ ライティング
http://www.microsoft.com/japan/developer/directx/japan/dx8/SpecularLight.asp
0005名無しさん@お腹いっぱい。01/11/08 23:12ID:???
ラデオン8500買ったがハングしまくる。
鬱だ。
0006_01/11/08 23:40ID:ZvJlUtz1
シェーダーは今から覚えなくても
DX9以上になって条件分差とかが実装してから
取り組んだ方が良さそう。
コロコロ仕様変わってるし。
0007名無しさん@お腹いっぱい。01/11/08 23:44ID:???
X-BOXのシェーダーは今後数年は変わらない。
X-BOXと同じシェーダーをサポートする安いgeforce3 ti 200は買い。
radeon8500の方がgeforce3より機能は上だけど
今のところビデオカードとして評判最悪なので待った方がいい。
http://pc.2ch.net/test/read.cgi/jisaku/1004787773/l50
0008名無しさん@お腹いっぱい。01/11/09 00:02ID:2/pRvf1V
OpenGL使ってる向きにはEXT_vertex_shaderがおいしそうに見えるんでない?
http://www.ati.com/na/pages/resource_centre/dev_rel/sdk/RadeonSDK/Html/Samples/OpenGL/SimpleVertexShader.html
こっちの方で統一してくれないかな?>NVIDIA
#OpenGLでの統一されたシェーダープログラムはOpenGL2.0までおあずけか…
0009名無しさん@お腹いっぱい。01/11/09 00:10ID:???
>>8
完全に同じものはNVIDIAのGF3ではハード的にサポートできない。
NV_vertex_program環境で、EXT_vertex_shader風に書きたいならば
自分でEXT_vertex_program風のライブラリを書くしかない。
0010901/11/09 00:13ID:???
自分でEXT_vertex_program風のライブラリを書くしかない。

自分でEXT_vertex_shader風のライブラリを書くしかない。
0011名無しさん@お腹いっぱい。01/11/09 00:18ID:2/pRvf1V
>>9
やっぱりEXT_とはいっても事実上ATI_vertex_shaderなのね…。
ピクセルシェーダはともかく、頂点シェーダーくらいなんとかならんのかな〜?
ちなみにGF3とRADEON8500の間でサポートできない頂点シェーダの
命令ってなんです?DirectXでも互換性ないのかな?
0012名無しさん@お腹いっぱい。01/11/09 00:22ID:???
DirectXの頂点シェーダーは互換性ありますよ。
CPUのエミュもあるし。
DirectXの頂点シェーダーは楽です。
0013名無しさん@お腹いっぱい。01/11/09 00:51ID:???
>>12
DirectXが互換性あるなら、OpenGLもドライバレベルでなんとか
ならんかなぁ…、といってみるテスト。いやそんな重要なことじゃないけどさ。

http://www.3dlabs.com/opengl/ogl2.pdf
が現実になる日を待ちつつ、NV_vertex_programを使いましょう>OpenGLの人

>CPUのエミュもあるし。
Radeonは知らないけど、NVIDIAのデトネタならOpenGLもソフトエミュしてくれる
よね?

>DirectXの頂点シェーダーは楽です。
NV_vertex_programならDirectXと大して変わらないし、EXT_vertex_shaderなら
さらに楽ゲな気がする。ちょっとしたシェーダーの違いなら頂点シェーダーを
定義している部分で分岐

if(ほにゃらら)
{
glShaderOpNEXT( ... );
}
できそうだし。(RADEONもってないから試してないけど)
#実際にバリバリ使ってくと種類増えるでしょ?>シェーダー

スレ汚しゴメソ。
0014名無しさん@お腹いっぱい。01/11/09 01:27ID:???
デトネタはNvidiaのビデオボードの人しか入れられないし・・・・
DirectXではNvlinkをうまく使えば種類は減らせるよ。
面倒だけどね。
0015名無しさん@お腹いっぱい。01/11/09 01:32ID:???
>>13
DirectXのvertex shaderの互換性はATIが妥協しての互換性だと思う。
0016名無しさん@お腹いっぱい。01/11/10 23:30ID:???
ピクセルシェーダーも1.1までならgeforce3とradeon8500で互換性ありかも。
0017名無しさん@お腹いっぱい。01/11/10 23:33ID:???
radeon8500いいかも。
安定性が問題だけど。
0018名無しさん@お腹いっぱい。01/11/11 17:42ID:???
ps.1.4
texcrd r0.rgb,t0
texld r1,t1
mov_d4 r1,r1
add r0.rgb, r0, r1
phase
texld r0,r0
add r0,r0,v1

MFCPixelShaderにコピペ
0019名無しさん@お腹いっぱい。01/11/11 20:24ID:???
意外とphase関連の制限に引っかかるかも
0020age01/11/21 20:49ID:BPHGewxM
あげ〜ん
0021名無しさん@お腹いっぱい。01/11/22 03:05ID:???
シェーダーも内包した新しいXFileの仕様作ってくんないかなー>MS
プログラマが趣味でやる分には今でも十分遊べるけど、ちょっとでも
実用的にゲームでも作ろうとするとソフトからの吐き出しとかでえらい
苦労するのよね。

 どーもMSは古いXFile互換にこだわるけど、そろそろ下位互換に
こだわらなくてもいいのにね。
0022名前は開発中のものです。01/12/06 01:02ID:???
シェーダー内包したモデルフォーマットって
いいかもね。最近はMayaとかMaxとかXSIで
シェーダー組めるらしいから是非!

OpenGL2.0も含めた汎用フォーマット希望!
0023名前は開発中のものです。01/12/06 01:14ID:???
てか、XMLの時代にXファイルは時代遅れ。
0024名前は開発中のものです。01/12/06 02:06ID:???
>>22
>最近はMayaとかMaxとかXSIでシェーダー組めるらしいから

Mayaはシェーダーというよりは、描画部分をそっくり取替えできちゃうみたいね。
http://www.aliaswavefront.com/en/Tmpl/Maya/html/index.jhtml?page=/en/Community/Games/index_m.html&style=normal
サンプルはNV20系依存なプログラムだけど、これならFireGL8800とかの独自機能
でも勝手に組み込めちゃえそう。もっともRADEON系でMayaがうまく動くかどうか
わかんないけど。

>OpenGL2.0も含めた汎用フォーマット希望!

じゃ、いっそribファイル形式で(w
0025aa01/12/07 05:20ID:hl5YByDd
VertexShaderで、スプライト表示してるけど、あまりパフォーマンス良くない。
表示サイズ変えると、CPU負荷が激増するんだけど、(XPで調査)GPUで描画してるんじゃないのかな?
誰か、やってる人いたら、教えて下さい。

自分は、XP,GF3、P31Gで、32*32SPRTが1F600前後です。

シェーダーでは、取り敢えず、
V0にロードされた頂点座標に、Trans値を足して、0-1間にCLAMPしてるだけです。
(後、TextureUV設定)
0026名前は開発中のものです。01/12/07 16:48ID:???
>>25
「自分は」のところが何言ってるのか意味不明なんだけど。
あと、CPU負荷はどうやって計測したの?
CPU負荷が増えるんじゃなくて、たんに関数がブロックしてるだけだと思うけど。
0027名前は開発中のものです。01/12/08 00:43ID:???
なかなか集わないね。
0028aa01/12/08 01:55ID:5/gZeAvV
>>26
>「自分は」のところが何言ってるのか意味不明なんだけど。
すんません。(大体)1Fで表示出来るスプライト数が600個。て事です。
(プレステ以下、、)
上司に聞いたら、10万以上出る筈。と。

>あと、CPU負荷はどうやって計測したの?
XPの、Ctrl+Alt+Deleteで出る、タスクマネージャーで確認してます。
(プログラム実行した状態で)

>CPU負荷が増えるんじゃなくて、たんに関数がブロックしてるだけだと思うけど。
すんません。その通りです。w
DrawPrimをSprite数分、Callしてました。
まだ、DX弄って、1週間ぐらいで、全然理解出来てないみたいです。

取り敢えず、PointSprite(Particle)のデモが、パフォーマンス高そうなので、
調べてみます。
どうやら、頂点バッファを数回に分けて、Lock>DrawPrimしてるみたいです。
そうすると、CPU,GPU待ちが起き難くなるみたい。
0029aa01/12/08 07:04ID:5/gZeAvV
vertexbuffer関係、修正したら、1Fに12000ぐらいは出るようになった。
目標50000。寝よ、、。
0030名前は開発中のものです。01/12/08 15:12ID:???
2chだとこの程度か・・・
0031名前は開発中のものです。01/12/08 15:26ID:???
                ,,.r'' ゛~~` ''ッ,,  おめーら、毛シェーダで俺様でも            )   )
              、 ゛  ,,,,,,,,,,,,,,,,,,,,, ヾ.   表現できっか?あん?     ,.、   / /
               ミ   ミ゛,へ.__, ,_ノヽ i.                .| |l   l ,´
             ミ    ミ, ( ・) {・フ 〉 ミ.          _-、i::| |ニニii '
         、,,,,ツi:     ミ,`~´ ヽ~〈  .ミ        /,‐ヽヽ`、||
       、シ``   i:      ,ゞ  'n.inヽ. .ミ          ( .〉〉/
      シ  //      ミ`    l.l ヽ"、         /  ノ
     ミ/ シ           彡 ,=こ二=.{ ミ,,      ,r'´ ,,、'゛
     ミi. /  /       ' ! w、`~^' vwv '、   ミ      〃 .ミ
0032↑ げすきー01/12/08 15:28ID:???
ハナ毛 程度なら表現できますです。はい。
#きゃー引っこ抜かないで〜!
0033名前は開発中のものです。01/12/08 15:49ID:???
ちなみに、リアルタイム系のシェーダーの場合どういう風に絵描きさんはオーサリング
してるんですか?

1・プログラマが決め撃ちのシェーダーをマテリアルとしてアサインする。
2・ShadeTreeみたいに視覚化されたシェーダー言語、もしくはもとからオーサリング
ツールにあるシェーディング構造をコンバートするインハウスツールを制作している。
3・その他

リアルタイムで実行されるシェーダーなので、制約が色々と厳しいんでしょうけど、
少なくとも2のような形でないと、絵描きさんがシェーダーのメリットを享受できない
気がするのです。なんかこのスレ見てるとまだ
(リアルタイムシェーダー=プログラマさんのオモチャ)って気が…。
0034名前は開発中のものです。01/12/08 21:28ID:JsYzjXs/
>>33
1で十分な気がしますが?
リアルタイムシェーダーなんていくらインターフェイスをビジュアル化してもデザイナーが扱いきれるものではないし。

プログラマがシェーディングモデルを組んで、
デザイナーはパラメータやテクスチャを調整するので十分なのではないかと。
0035名前は開発中のものです。01/12/08 22:03ID:???
>>34
う〜ん、デザイナーが扱えないと断言するのはどうかと。
実際オフラインのレンダリングでは多くの絵描きさんがもっと複雑な
シェーディング言語を扱ってるわけですし。

たとえば、MayaのHyperShadeみたいなGUIでシェーディングモデルを
組み立てて、それをそのままターゲットのシェーディング言語に出力
出来るのであれば、そちらのほうが表現の自由度が高まるわけで。
(たとえば、眼球に独自のシェーダーを割り当てたいなーという時に
いちいちプログラマさんにシェーダー書いてもらうのと、自分だけで
表現を完結させられるのでは生産性が全然違うし。)

もっともオンラインでは命令数の制限やその対処法(計算の結果を
テクスチャに収めておくことで複雑な計算を単純化するとか)で独自
のノウハウが必要になりそうですが。
0036名前は開発中のものです。01/12/08 23:15ID:JsYzjXs/
>>35
だから、現状のシェーダーは
法線ベクトルと視線ベクトルの内積を取って正規化し、
光線ベクトルに内積を描けたものに頂点カラーをうんぬん…
みたいなものなのよ。
そんなものいくらGUIかぶせたところで、
デザイナーが一朝一夕で使えるわけないでしょ。

MayaのHyperShadeみたいなのは
シェーディングモデルを組み立てているのではなく、
「組み合わせて」いるだけなのよ。
■ このスレッドは過去ログ倉庫に格納されています