シェーダープログラマが集うスレ
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/11/08 11:06ID:???∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,・∀・) < ゲームにもシェーダーの時代到来でち♪
@_) \_______
バーテックスシェーダーとかピクセルシェーダーとかを語りまくるスレ。
0059名前は開発中のものです。
02/04/21 15:58ID:???とりあえず、extensionの使い方について調べましょう。
nvidiaやatiのサイトを回ってみましょう。
0060名前は開発中のものです。
02/05/01 05:29ID:4Ig7zOBQ実際、OpenGLのHello Worldはどれになるでしょう?
分りやすいチュートリアルサイト等はありますか?
nVidiaで考えてます。
0061名前は開発中のものです。
02/05/01 07:22ID:???0062名前は開発中のものです。
02/05/01 09:48ID:zLUCVUs6NVIDIA extensionの初歩であればNVSDKの中のサンプル
OpenGL/src/demos/vtxprog_*, OpenGL/labs/vertexlab_* を見るのはいかがでしょう?
ドキュメントもNVSDKの中に豊富に揃っています。
# OpenGLそのものの初歩なら赤本をどうぞ。
0063名前は開発中のものです。
02/05/01 09:52ID:zLUCVUs6http://www.nutty.org/opengl.html
のここ
http://www.nutty.org/OpenGL/Nvidia/index.html
なんて、比較的短くてソースを追いやすい(glhとか使ってないので)
のではないかなぁと思います。
0064名前は開発中のものです。
02/05/02 00:37ID:9E1QZFvUところでnVidaのOpenGLのシェーダサンプルはnvparseが
使われていますが、nvparseのリファレンスもしくはチュートリアル
ってありませんか? これが読めないとシェーダプログラミングは
さっぱりでして…。
0065名前は開発中のものです。
02/05/02 00:42ID:???0066名前は開発中のものです。
02/05/02 00:53ID:WEPbf7/cmxじゃピクセルシェーダが使えない罠。
0067名前は開発中のものです。
02/05/02 01:15ID:J9nPtA9snvparseのソースを追うのが一番いいとおもいますけど、リファレンスらしきもの。
http://developer.nvidia.com/view.asp?IO=nvparse_for_textureshaders
あとはエフェクトブラウザのソレ系のOpenGLサンプルでも見れば大体判るんで
はないでしょうか?
>>66
OpenGLでレジスタコンビナ弄って我慢しよう。
0068名前は開発中のものです。
02/05/02 09:43ID:ubXl7bBcこれらはDirectXのヴァーテクスシェーダ、ピクセルシェーダの解説と照らし合わせればおよその見当はつきますが、.rcpは何なんでしょう?
参考ソースを眺めるとこれがレジスタコンビナってやつだと思いますが、これはどう理解すればよいのでしょうか?具体的な役割とは何なんでしょうか?
0069名前は開発中のものです。
02/05/02 10:15ID:gneenoSgDirectXでいうピクセルシェーダはNVIDIA OpenGL拡張ではテクスチャシェーダと
レジスタコンビナに分けられます。テクスチャのフェッチなんかの命令(DirectXで
いう所のテクスチャアドレッシング命令)がテクスチャシェーダ、色やα値などの
ブレンディング命令がレジスタコンビナにあたります。
0070名前は開発中のものです。
02/05/02 12:09ID:qU6ZIK66>>68
>>69
スマン。非常にくだらない質問になるんだが宜しく頼む。
Register Combinerを「レジスタコンビナ」と読むのは
やはりこの板で流行っている洒落みたいなものだろうか。
当方この板の事情に疎いので、マジレスカコワルということで
あったら先に謝っておきます。
0071名前は開発中のものです。
02/05/02 17:18ID:???0072名前は開発中のものです。
02/05/02 17:28ID:7aVH7DDkレジスタコンバイナってどういうものなの?
概念的なもんでいいから教えてくれると嬉しいナ。
007372
02/05/02 17:30ID:7aVH7DDkでもPSにも色およびアルファ ブレンディング命令は
あるみたいだけど・・。
0074名前は開発中のものです。
02/05/02 19:23ID:???複数しかも自在に組み合わせて使えるよってな意味なので、
ピクセルシェーダのカラーブレンド部分と思ってほぼ問題ない。
ただピクセルシェーダとの大きな違いは、
倍ぐらい演算が強力ってことかな。
0075名前は開発中のものです。
02/05/02 20:32ID:???くだらん質問で盛り下げるなよ。
0076名前は開発中のものです。
02/05/02 21:38ID:kbPSAs/Qありがとうございます。
よくわかりました。
0077名前は開発中のものです。
02/05/05 05:59ID:fsxq9Obk0078名前は開発中のものです。
02/05/05 10:35ID:fglxpUG.このあたりは見ました?
http://developer.nvidia.com/view.asp?IO=gdc2001_programmable_texture
0079名前は開発中のものです。
02/05/05 13:23ID:???0080◆XMiQltls
02/05/05 17:34ID:lrydOJB60081名前は開発中のものです。
02/05/05 17:34ID:lrydOJB60082名前は開発中のものです。
02/05/06 02:36ID:gSRp6gaEでも、シェーダー使わなくても出来そう。
しかも、重そう。
0083名前は開発中のものです。
02/05/06 03:05ID:qE8yUjagシェーダーとか見かけ華やかな部分より
ゲームの基本ルーチンを作る方が
遥かに難しく、重要だとわかってきた。
ここでシェーダーシェーダー言ってる人は
そういった基本部分をクリアした上級者か
D3Dかじった初心者かに分かれるだろう。
0084名前は開発中のものです。
02/05/06 03:35ID:lT3cU/o2激しく同意。
描画周りはよく語られるが基本ルーチンを語られることは少ない。
皆さんどうやって学んでいったのでしょうか?私はいつももう少し
きれいにかけないかと悩んでいます。いろんなジャンルのゲームを
たくさん作るしかないのかな?
spinのインタビューでもあったがたくさんのシェーダーの「管理」を
どうするか語りませんか?
0085名前は開発中のものです。
02/05/06 03:50ID:???商売でないなら同意。
ゲームとしては基本ルーチンの方が全然重要なんだよね。
しかし商売となると見かけの華やかな部分こそ最重要項目なんだよ。
見た目が良くないと売れないんだよ。
なのでシェーダーを研究しないと飯食えないんだーよ!!
悲しいにょ・・・
0086名前は開発中のものです。
02/05/06 04:11ID:lT3cU/o2http://www.gamedev.net/columns/books/featuredbook.asp?productid=180
Covers a wide range of rendering techniques, focusing on shaders.
だそうですよ。
洋書一番安く買うのってどうするの?Amazon.comで買うのがいいのか?
0087名前は開発中のものです。
02/05/06 04:27ID:gSRp6gaE実際に自前で組んではいないけど、前使ってたエンジンでは、
シェーダーマネージャークラスにシェーダー追加していって、
各々のメッシュクラスにバインドさせるってやり方してた。
ここら辺って、何でもそう変わらないと思うけどね。
実際、今CUBEで組んでるエンジンでは殆どそうしてる。
0088名前は開発中のものです。
02/05/06 10:36ID:???質問なんだけど、このあたりの実装って個別に論じるほど特殊なものなのかな?
メッシュの表面のシェーディングに関するシェーダーであれば>>87のようにシェーダー
クラスをシェーダーファクトリークラスからポコポコ作ってメッシュデータクラスにくっつ
けるだけで、これ自体の考え方は固定ファンクションしかない場合でもレンダリング
ステータス/マテリアルクラス(みたいなメッシュのデータに挟み込んでいくものの管理)
が似たような形になるはず。
0089名前は開発中のものです。
02/05/06 20:30ID:FxlgJW6Eステージ1のメインキャラ用シェーダ、
ステージ2のメインキャラ用シェーダ、
ステージ3のメインキャラ用シェーダ、
こうやって個別に作って、ステージの切り替わりと共に
シェーダも切り替えた方が良くない?
0090名前は開発中のものです。
02/05/07 04:50ID:???amazon.co.jpでもその本は売っている。
「発送可能時期:通常4〜14日以内に発送します。」だってさ。
6,932円也
0091名前は開発中のものです。
02/05/07 11:36ID:edcqfV72ありがとう!見逃してました。
0092名前は開発中のものです。
02/05/07 11:39ID:edcqfV72自分はグラフィック屋さんなのでシェーダ・シェーダ言ってみる。
でも、ゲイム屋さんが一番技術的に進んでいる。
0093名前は開発中のものです。
02/05/08 02:29ID:???0094名前は開発中のものです。
02/05/09 13:23ID:GEyQ3xMsプログラマがユニークなコードを書くのはレジスタコンビナかヴァーテクスシェーダであってテクスチャシャーダはあまり関与する余地が無いって認識あってますか?
0095名前は開発中のものです。
02/05/09 18:49ID:69MmpqZcそのバーテックスシェーダーも
少ない引数とステップ数の為に
行う処理を選別するだけって感じだね。
頂点ブレンディングにコンストレジスタをさいて
ライトの数を減らすとか
その逆にするとか。
ユニークと呼べるほど・・。
0096名前は開発中のものです。
02/05/11 21:59ID:kUBnBuYs内積ですか?でも、レジスタコンビナのレジスタはスカラではなくてベクタですよね。
あと、レジスタコンビナで各RBGチャンネルを入れ替えたり、別のチャンネルにコピーしたりってできますか?
0097名前は開発中のものです。
02/05/11 22:34ID:???色の入れ替えや複製はかなり制約がある。
詳細についてはレジスタコンバイナの仕様書を嫁。
nvparseは単純にその仕様をラップしているだけだ。
009896
02/05/14 15:36ID:1FhsMEKsサンクスです。謎はとめました。
も一つ初歩的な疑問なんですが、OpenGLのレジスタコンビナを有効化すれば、マルチテクスチャのパスは排他的になると考えてよいのでしょうか?
0099名前は開発中のものです。
02/05/14 16:39ID:???0100名前は開発中のものです。
02/05/14 21:38ID:MbTxWkS60101名前は開発中のものです。
02/05/16 22:13ID:dbGtFDq20102名前は開発中のものです。
02/05/16 23:51ID:S2/YU52Mだとしてもまたメーカ依存…やだなぁ。
0103名前は開発中のものです。
02/05/17 15:25ID:z6sBupnY0104名前は開発中のものです。
02/05/17 17:29ID:???0105名前は開発中のものです。
02/05/18 08:49ID:???座標変換等を自分で書けるだけ。
ベクトル演算を知ってれば誰でも書けるよ。
問題はシェーダー使ってまで実装したいネタがあるかどうか。
0106名前は開発中のものです。
02/05/18 12:10ID:TO1S252AのプログラムをASCII文字列で持ちたくないと思い、DirectXでいう所のD3DXAssembleShader
みたいな命令を探したのですが見つかりませんでした。もしかすると、GL_NV_vertex_program
では文字列以外の形でシェーダのソースを持つことは出来ませんか?
0107名前は開発中のものです。
02/05/18 14:11ID:???0108名前は開発中のものです。
02/05/18 15:15ID:???NV_vertex_programの最大の欠点です。はっきり言って使う気が失せます。
潔く、ATIが提唱するGL_EXT_vertex_shaderに乗り換えましょう。
Matroxも賛同しているのでParheria-512でも使えるようになるはずです。
0109名前は開発中のものです。
02/05/18 16:01ID:???・・・・。
メモリ上でASCII文字列に変換すればいいだけの話かと思われ。
0110名前は開発中のものです。
02/05/18 16:05ID:???NVasmってDX専用だったんだ?
ふーん、つーかDirectXに乗り換えた方が良くない?
はっきり言ってそんなバラバラ仕様のGLなんて
よく使う気になれるよね。
0111名前は開発中のものです。
02/05/18 19:22ID:???最終的に文字列で駆動しなければならないこと自体が嫌なんだよ。
DX8みたいに中間バイナリフォーマットがあればまだ良かったのだが。
0112名前は開発中のものです。
02/05/19 00:17ID:???0113名前は開発中のものです。
02/05/19 00:24ID:???テキストとバイナリでどういう違いがあるのか判らん
内容そのものを動的に生成するわけでもなし・・・
0114名前は開発中のものです。
02/05/19 00:34ID:???暗号化すれば済む話ですが。
0115106
02/05/19 00:40ID:???>>108は俺じゃないです。ちなみに>>111も違います。
できないと判れば勿論何らかの形から内部でアスキー形式にせざるを得ない訳ですが…。
出来ないことが確認できればそれはそれでOKです。
どうもでした。(ペコリ
0116111
02/05/19 00:53ID:???パーサが実装されているのって気持ち悪くないですか?
0117106
02/05/19 01:06ID:???描画直前のデータを持っておきたいという気持ちは結構自然なことだと思いますけど、
(俺も出来ればそうしたい)まぁOpenGLのディスプレーリストみたいなもんだと思えば
個人的には納得できなくもないです。
リリース用のプログラムに永続化された描画用データを希望してしまうのはある種の
プログラマの職業病かもしれないな…。
0118名前は開発中のものです。
02/05/19 01:18ID:???ソ ー ス が あ る の に 何 い っ て ん ね ん カ ス ど も
0119名前は開発中のものです。
02/05/19 01:52ID:???0120名前は開発中のものです。
02/05/19 03:08ID:???0121名前は開発中のものです。
02/05/19 04:07ID:???やっぱり文字列ドリブンですな。
GLhandle programID = glCreateProgramObject();
GLhandle shaderID = glCreateShaderObject(GL_VERTEX_SHADER);
const GLubyte *sources[] = { "ソースコード1", "ソースコード2" };
glLoadShader(shaderID, 2, sources);
glCompileShader(shaderID);
glAttachShaderObject(programID, shaderID);
glLinkProgram(programID);
glUseProgramObject(programID);
0122名前は開発中のものです。
02/05/24 02:36ID:tlRT6YhkGL_NV_vertex_program 拡張で使える関数
glVertexAttribs[1-4][dfs]vNV 関数の使い方を教えてください。
glVertexAttrib[1-4][dfs]vNV関数はサンプルでも使われているので
使い方は判るんだけれども、前者のほうは使い方がよくわからんのです。
適当な例ではないんだけど、
> float vertices[] = { x0, y0, z0, x1, ... xN-1, yN-1, zN-1 };
となっているとき、glVertexAttrib3fvNVなら
> glBegin( prim );
> for( int i=0; i<N; i++ ) glVertexAttrib3fvNV( 0, &vertices[ i * 3 ] );
> glEnd();
でうまくいったので、glVertexAttribs3fvNVで
> glBegin( prim );
> glVertexAttribs3fvNV( 0, N, vertices );
> glEnd();
とやってみてもうまくいきませんでした。
# 実際にはglVertexAttribs系は使わないんですけど、判らないと気分が悪いので。
0123名前は開発中のものです。
02/05/24 07:04ID:???The commands
void VertexAttribs{1234}{sfd}vNV(uint index, sizei n, T coords[]);
void VertexAttribs4ubvNV(uint index, sizei n, GLubyte coords[]);
specify a contiguous set of n vertex attributes. The effect of
VertexAttribs{1234}{sfd}vNV(index, n, coords)
is the same as the command sequence
#define NUM k /* where k is 1, 2, 3, or 4 components */
int i;
for (i=n-1; i>=0; i--) {
VertexAttrib{NUM}{sfd}vNV(i+index, &coords[i*NUM]);
}
VertexAttribs4ubvNV behaves similarly.
The VertexAttribNV calls equivalent to VertexAttribsNV are issued in
reverse order so that vertex program execution is provoked when index
is zero only after all the other vertex attributes have first been
specified.
0125名無しさん@お腹いっぱい。
02/06/02 21:03ID:zfVZ9TZE0126名前は開発中のものです。
02/06/02 21:10ID:???デスクトップ用でもまだ完全対応していないのに・・・。
Geforce4GOとかMobileRadeonなら少しはいけるんじゃないの?
0127名前は開発中のものです。
02/06/02 21:32ID:???0128名前は開発中のものです。
02/06/02 23:11ID:h9WgTC2sほしいなー
0129名無しさん@お腹いっぱい。
02/06/03 00:22ID:qW0.fcc.VS2.0のflow controlを試したいんだけど、、
0130名前は開発中のものです。
02/06/03 03:17ID:???Radeon8500の30分の1の速度がまともかどうかは意見が分かれるかもしれないけど。
少なくともDX9βテスターの9割以上はソフトウェアで試してると思う。
0131名前は開発中のものです。
02/06/03 09:51ID:Q0hI7iUA0132名前は開発中のものです。
02/06/13 23:41ID:LnCmV/3ohttp://developer.nvidia.com/view.asp?IO=cg_toolkit
0133名前は開発中のものです。
02/06/14 09:28ID:jIcRVJt.わからない単語翻訳通したいんだよね。
0134133
02/06/14 09:30ID:jIcRVJt.0135名前は開発中のものです。
02/06/17 07:20ID:stxZqyeAこれって実際のテクスチャ値とどう関連してるのですか?
[-128, 127]にそのまま相当?
0136名前は開発中のものです。
02/06/17 23:09ID:???デファクトスタンダードになるのか・・・(鬱
まぁ、どうでもいいけどな
0137名前は開発中のものです。
02/06/17 23:12ID:???コンバイナってこと?
0138名前は開発中のものです。
02/06/17 23:46ID:???[例]combine
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=combine&sw=0
http://dictionary2.goo.ne.jp/ej/voice/C/00020347.wav
0139名前は開発中のものです。
02/06/18 00:43ID:???0140名前は開発中のものです。
02/06/19 13:44ID:???0141名前は開発中のものです。
02/07/02 08:50ID:???毛のテクスチャを張ったポリゴンを常に視線方向を向くように頂点位置を補正、
もしくはスプライトとして転送すれば良いかなと思ったけどどうかな?
0142名前は開発中のものです。
02/07/02 11:43ID:???ミ,,・Д・彡 フサフサage!
〜ミ___ 彡
0143名前は開発中のものです。
02/07/02 13:25ID:???つーかサンプルがある筈だが。サンプルも読む気ないならやめなさい。
0144名前は開発中のものです。
02/07/02 19:20ID:???kanoたんサンプルの見るべし。ただしRADEONでないと動かない罠。
0145名前は開発中のものです。
02/07/02 20:59ID:???0146名前は開発中のものです。
02/07/02 21:14ID:???0147名無しさん@お腹いっぱい。
02/07/27 08:39ID:CmS1NJvUATI RenderMonky
MS HLSL(HighLevel Seading Langage)
0148名前は開発中のものです。
02/07/27 12:34ID:???0149名前は開発中のものです。
02/07/31 10:44ID:ifCAFhq6どーしても
std::_Xlen
std::_Xran
(こいつらが、Vc7/crt/src/string.cpp にいるのはわかったけど・・・)
が無いっていわれるし、でっちあげてもうまく動かないし?
0150149
02/08/05 20:17ID:4yEcJedoSTLportにかえてみてもだめだった。
0151名無しさん@お腹いっぱい。
02/08/07 22:37ID:USYFolTgどこかにありますかー?
0152名前は開発中のものです。
02/08/12 04:48ID:SHVLA4gThttp://www5.tok2.com/home/IF/edge/index.html
0153名無しさん@お腹いっぱい。
02/08/12 21:10ID:???[SharderX] Vertex and Pixel Shader Tips and Tricks
の本を買ってみたけど肝心な画像処理サンプルが抜けて
たりする。
0154あ
02/08/19 20:12ID:mF4sVHfdまず、コンパイラがかなりアホなような。
float4 vPos;
vPos.x = vPos.x / vPos.w;
と
float4 vPos;
vPos.x = vPos.x * 1.0f / vPos.w;
では生成されるシェーダーコードがかなり違い、
片方では、分母がw要素なのに生成されたコードではなぜか
xの逆数を求めていて、双方で結果表示される画像が違っている始末。
自分の3DエンジンはD3DFixedベースからcgベースに書き換えているので
これはどうにもできなくてかなり痛い。マジ泣きそう。
あと、cgプログラムコンテナのメンバのcgプロファイル値がおかしい。
メソッドを操作する度にコロコロ変わる。リークしてる?
皆さんはこんなことない?
0155名前は開発中のものです。
02/08/20 02:18ID:???0156名前は開発中のものです。
02/08/20 10:30ID:zLfiLQLEhttp://www.ati.com/developer/sdk/radeonSDK/html/Tools/RenderMonkey.html
0157名前は開発中のものです。
02/08/27 16:10ID:LTw0Z8e+保守アゲするぞ。
ちなみにnVidiaのBumpHorizonのサンプル
あのソース、レンダーステートの設定が一箇所抜けてて
あれじゃまともに表示されん。ふざけんなボケ、俺の二日間を返せ。
0158名前は開発中のものです。
02/08/27 16:17ID:LTw0Z8e+float4 vPos;
vPos.x = vPos.x * (1.0f / vPos.w);
と書くことで回避できた。
新しいコンパイラでは直ってるかな?
>>155
現状の出来では、それも仕方ないかも。
PSでペアとかしてくんないしね、ほんと使っててイライラするよ。
インラインアセンブラみたいなのついてて、気に入らないところは
部分的に修正出来るようにしてくれればいいのにね。
まあこんなことで悩むのも今だけだろうけど。
■ このスレッドは過去ログ倉庫に格納されています