もんしょの巣穴blog

ddx, ddyの挙動を調べてみた

微妙に謎がある勾配命令 ddx, ddy(アセンブリ命令では dsx, dsy) について調べてみました。
これはGPUごとに動作の違いがあるかもしれないので私が調べたものがすべてのGPUに適用されるわけではないでしょうからお気を付けください。
ちなみに、うちのGPUはGeForce8600GTSです。安物ですね。

調査方法は4x4のレンダリングターゲットにポリゴン等を書いてみて、その過程をPIXで追うというだけ。
頂点のテクスチャ座標として適当な数列を与えています。わかりやすいものからランダムなものまで。
泥臭いけど確実な方法ですね。
まず、ポイントリストで16の点を各ピクセルに描画してみましたが、ddx, ddy 命令での出力は 0 でした。
やはりこの命令は1つのプリミティブ(点1つ、三角ポリゴン1つ)の間で有効な命令のようです。
では、ポリゴンを描画した場合どうなるか?
頂点に与えた数列をそのまま引数にすると隣接ピクセル(ddx なら右、ddy なら下)の同じ引数との差分が出力されました。
単純に隣接ピクセルとの間で差分をとるだけっぽいのかと思ったのですが、いろいろ計算してみるとそうでもないらしいことがわかります。
例えば2つの適当な数列で内積して2乗とかしてみると隣接ピクセルとの差になってない場合が出てきます。
よく調べてみると、どうやらいくつかのピクセルにおける勾配関数の戻り値は同一です。
GPUによって挙動は違うかもしれませんが、8600GTSでは同一の戻り値になるのは2x2の領域です。
つまり、2x2の領域において左上のピクセルと右上のピクセルの差分が ddx で、左上のピクセルと左下のピクセルの差分が ddy で取得できる形になるようです。
あるポリゴンの描画範囲が2x2の右下のみを描画する場合があったとしても左上を中心として計算しているようです。
GPUは2x2の領域の1ピクセルでも描画される状況であれば領域すべてのピクセルを計算するものと思われます。
この際、ddx や ddy が来たタイミングの同一レジスタの値の差分を返すというものなのでしょう。
『ShaderX5』には勾配関数を使用してタンジェントスペースなしでバンプマップをやる手段について記載されていますが、完全なピクセル単位というわけにはいかないようですね。
まあ、2x2なら誤差範囲と言っていいと思いますし、人間の目にはそれらの違いを理解することは難しいと思いますが。

スポンサーサイト
  1. 2009/06/28(日) 17:32:16|
  2. プログラミング
  3. | トラックバック:0
  4. | コメント:0

哀悼 三沢光晴

ノアだけはガチ、なんて証明しなくても良かったんだよ…。
全日時代はよく見てたけど、ほんとに楽しかった。
ご冥福をお祈りします。
  1. 2009/06/14(日) 21:49:06|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0

E3雑感

Windows7をインストールしましたが、DirectX11のサンプルをちょっと動かしただけ。
DX11のサンプルは1FPSすら出ませんでした。所詮、SM2.0のボードです。
古いノートにインストールしたんですが、動作はそんなに重くなかったです。
ただ、常時ゆるくGPUファンが回る状態になってました。
DX使ったときのフル回転ほどではないものの、バッテリーはすぐになくなりそうです。

さて、E3も終わりましたが、皆さんはどう感じたでしょうか?
個人的にはそれなりに楽しかったです。すごい盛り上がったわけでもないですが。
ハード面ではやはりNatalが興味深かったですね。
精度が十分高いのであれば欲しいですが、Windowsで使用できてしかもSDK付きなら間違いなく買う。
SCEのモーションコントローラは現実的な技術だとは思うのですが、面白みに欠けますね。
一番の問題は、プレゼンが技術デモ程度でしかなかったことでしょうか。
十分商品になりうるデモならもっと興味を持たれるはずなんですがねぇ。
ソフト面ではずっと待ってたスプリンターセルがいい感じで出てきたのがよかったです。
スニークアクションながら非常にスピーディで、何よりかっこいい。
ただ、最近のUBIは微妙なゲームが多いのが難点なんですよね。
L4D2で驚いたのは発売日。Valveなのに前作から1年で発売とか、何があったんだ?
グラフィックが一番きれいだったのはアンチャーテッド2ですね。
ほかに、これは!という特徴を持ったグラフィックのゲームがないってのもありますが。
今年のホリデーシーズンをどうこう言うなら、MSが強そうです。
SCEはPSPGoでどうにかなるとは思ってないでしょうが、それにしてもものがなさ過ぎる。
北米ではマルチソフトはXbox360の方が強いし、このままホリデーシーズン突入は厳しいでしょう。
任天堂は順当にソフトを出してきたな、という印象。
しかし、血圧計はE3で発表するようなものなのだろうか?
あれをゲームに生かす術が見つからない。ポリグラフ代わりにして詐欺師養成ゲームとか?
任天堂のソフト群は、売れると思うし面白そうなんですが、どうも食指が動かない。
やっぱりハードも買わなきゃいけないってのが最大のネックですね。

個人的な注目作品はスプリンターセルとジャストコーズ2ですね。
もちろん、ほかにも買う予定のソフトは多いですが(ODSTとかMW2とか)、あえて選ぶとしたらこの2本です。
逆に期待が持てなくなったのはアサシンクリード2です。
やっぱり暗殺対象の目前に突っ込んで暗殺か…。ソーシャルステルスの意味があるんだろうか?
これならシーフ4に期待しておいたほうがいいかもしれない。

  1. 2009/06/07(日) 22:38:10|
  2. ゲーム
  3. | トラックバック:0
  4. | コメント:0

プロフィール

monsho

Author:monsho
ゲームプログラマ?

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する