DirectX総合スレ (Part5)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2006/09/08(金) 23:56:42ID:0F5D1JWX他の言語使ってる奴はいますぐ消えろ
0472名前は開発中のものです。
2006/09/27(水) 23:56:47ID:0+9eDEBa簡単に読める程度にしか命令数がそもそもないだろ。
これがPS2のVUとかなら死ねるが。
0473名前は開発中のものです。
2006/09/28(木) 01:09:42ID:Qut+4z4Rここはサンプルも見れないような初心者が集うところです。
少しは理解してあげてください。マニュアルなんか見ません。
いや、それは嫌味だとしても 初心者にはHLSLだって怪しいのに
VSアセンブラは無理でしょ。変にそそのかさないでください。
0474名前は開発中のものです。
2006/09/28(木) 01:40:40ID:EmxvHeW00475名前は開発中のものです。
2006/09/28(木) 02:20:44ID:43BrdYybとか言われるんだけど、DXUtil.hって昔のヘッダか何か?
0476名前は開発中のものです。
2006/09/28(木) 02:26:06ID:pbZl2D+nそもそも何をビルドしようとしたの?そこらのWebに落ちてるサンプル?
0477名前は開発中のものです。
2006/09/28(木) 02:38:12ID:43BrdYyb0478名前は開発中のものです。
2006/09/28(木) 02:50:11ID:43BrdYybこいつだったわ
0479名前は開発中のものです。
2006/09/28(木) 04:13:38ID:Ks4kfiVt0480名前は開発中のものです。
2006/09/28(木) 12:31:29ID:r3bgliNM複数箇所の回答から一番有用なものを吟味するなんて今や当たり前なのに。
頭が堅くなって時代についていけなくなったんだろうね。
0481名前は開発中のものです。
2006/09/28(木) 12:59:07ID:E+G8+8X8マルチポストするやつは、どこか一カ所にしか返事をかないとか
返事も結果も書かないやつが多いから。
マルチポストであっても、その故を明記していれば俺は許す。
0482名前は開発中のものです。
2006/09/28(木) 13:09:22ID:YQu14luC0483名前は開発中のものです。
2006/09/28(木) 18:42:47ID:nERzszfM確かにマルチポスト推奨はイマドキと言えるかも知れないw
0484名前は開発中のものです。
2006/09/28(木) 19:03:49ID:7exZtWv40485名前は開発中のものです。
2006/09/28(木) 20:08:12ID:4xoDGQZbしかし、2ch内でマルチポストしても、似たようなスレは
見てる人も同じだから意味ないよな。
0486名前は開発中のものです。
2006/09/28(木) 20:21:31ID:oMbAyOJr結局は答えてもらえない確率を高くするだけ。
0487名前は開発中のものです。
2006/09/28(木) 20:31:19ID:7exZtWv40488名前は開発中のものです。
2006/09/28(木) 22:39:14ID:Nlv1qsey0489名前は開発中のものです。
2006/09/28(木) 22:44:09ID:MNRQMggg昔はみるところ決まってた(BBX、BIO100、2ちゃん)から貼る必要が無かっただけで
今は俺、2ちゃんしかみてないからここはここの意見でいいんじゃない?
結局さ、難しい・マイナーな問題って本にも載らないし
載ってたとしてもわからない奴にはその情報がどこに載ってるかわからないし、
技術の伝承は掲示板でしかできないしで色んなところでログ残していくのが一番だと思うよ。
よくでる質問だからっていって話題にしないとしないままどこ探しても見つけられなくなっちゃうじゃん。
0490名前は開発中のものです。
2006/09/28(木) 22:48:56ID:baBONFMD嫌がられてもやるというのなら、好きにすればいいだろう。
0491名前は開発中のものです。
2006/09/28(木) 23:33:48ID:Dk3RCCMg半透明ウィンドウがあるとプログラムがスローダウンしちゃうんだけどなんかうまい方法ない?
0492名前は開発中のものです。
2006/09/28(木) 23:37:43ID:cM5JOSMPマシン買い替え
0493名前は開発中のものです。
2006/09/28(木) 23:41:24ID:anfWJ5Tf「もう一方で回答が出たなら、こっちで答えなくてもいいよな?」って拗ねてんのか?
まぁ今更言ったところで、マルチポストを許さない土壌ができあがってしまっているんだけど。
ちなみに俺はマルチポストしたことないしするつもりもないよ。いろんなところで口をすっぱくして「マルチポストはいけません」って言われてたから。
自分もレスしておいてなんだけど、ゲームプログラマってこういう煽りで流され話が脱線しやすいよね。議論好きだからですか?
0494名前は開発中のものです。
2006/09/28(木) 23:58:14ID:Dk3RCCMgパワーは全然有り余ってる。60fps出てるのが3fpsとかになっちゃう。
DXUT使ってるサンプルは平気なんでソースを見てるんだが、ちょっと挫折気味。
そういえば大航海オンラインも同じ症状出てたかも。
0495名前は開発中のものです。
2006/09/29(金) 00:00:35ID:oMbAyOJr0496名前は開発中のものです。
2006/09/29(金) 00:01:58ID:N5SjyFNE0497名前は開発中のものです。
2006/09/29(金) 00:06:19ID:ueQhqgX3スペック書かずにこう書く奴に限って(ry
0498名前は開発中のものです。
2006/09/29(金) 00:10:47ID:paU00bjAたぶん電源ユニットが500W以上。
0499名前は開発中のものです。
2006/09/29(金) 00:15:11ID:+I5I2Dah0500名前は開発中のものです。
2006/09/29(金) 00:19:34ID:3ckC2oiRやってるのは800x600の画面クリアとfps表示の文字列数個のみだよ。
ちなみに、500Wの電源は持ってないし界王拳も使えない。
>496
なんで別スレッドにするんだ?
0501名前は開発中のものです。
2006/09/29(金) 00:24:29ID:gYSr6WhV0502名前は開発中のものです。
2006/09/29(金) 00:27:16ID:N5SjyFNE昔からの定番みたいなもんなんだよ。
DXUTのサンプルがそうならないってほうが意外だった。
0503名前は開発中のものです。
2006/09/29(金) 00:30:27ID:3ckC2oiRバッファのフォーマットのせいでコピーが発生してるような気がするけど、正直わからん。
>501
すまん、一応配布予定なのでAero限定は無理だ。
0504名前は開発中のものです。
2006/09/29(金) 22:25:53ID:N5SjyFNE0505名前は開発中のものです。
2006/09/29(金) 22:55:00ID:+W9NI1Pp0506名前は開発中のものです。
2006/09/29(金) 23:00:27ID:bQHZkLAr0507名前は開発中のものです。
2006/09/29(金) 23:22:29ID:+I2r6/3e0508名前は開発中のものです。
2006/09/30(土) 00:19:21ID:DBE05lgj0509名前は開発中のものです。
2006/09/30(土) 00:34:44ID:sEeiZqED0510名前は開発中のものです。
2006/09/30(土) 06:08:14ID:5xvehRtzどうもMikotoでの変形結果と同じにならない
調べたらMikotoのボーン変形は、関節部を潰さないようにかなり特殊な計算をしているみたいっすね
これってどうやってるのかな。シェーダーじゃ無理っすかね
0511名前は開発中のものです。
2006/09/30(土) 08:48:50ID:QdcbVNXKクオータニオンの補間がおかしいし、その他問題が沢山あるので使い物にならない。
0512510
2006/09/30(土) 10:27:47ID:5xvehRtzレスどうもっす
申し訳ないっすが、姿勢行列の補間は関係なさそうっす。シェーダーなんで頂点補間の部分は当然自前です
スキニングなんて誰がやっても同じ計算(ボーンごとに変形した頂点座標を、ウェイト値に基づいて再調整)に
なるわけっすが、どうやら他の算出方法もあるらしい。それをお尋ねしたい次第っす
それとも、あまり有名じゃないんすかね。検索しても全く出てこないっすし・・・
Mikotoオリジナルっぽい気がしてきましたわ。一体どうやってるんすかね
0513名前は開発中のものです。
2006/09/30(土) 11:13:00ID:f6Ng8zSYちゃんとやるならそれなりに面倒なコトになるだろうけど、
線形補間でもちゃんと見えるようにデータを作るほうがいいと思う。
0514名前は開発中のものです。
2006/09/30(土) 12:41:48ID:LWd9FNUhこのへんはCG屋さんに聞いてみるのも良いんじゃない?
0515名前は開発中のものです。
2006/09/30(土) 12:58:03ID:ZLzDkOO3間接部の回転角度の補間はクォータニオンで扱って初めてやれる処理なんで
行列の方(つまりxファイル形式)に落とし込んじゃうともう事実上不可能だと思う
実際にはミクロマンのひざ間接みたいな二つの骨の間を埋める小さい骨を何個かつくってる
…はず
0516名前は開発中のものです。
2006/09/30(土) 17:01:55ID:1o8uqwbg以前、mikotoの掲示板で「bdefアンカーによる影響ってどういう計算式?」
っていう質問があって、それに対してゆーり氏が
『秘密です。
っていうのは嘘ですが、
詳しく説明するのもアレなので、ヒントを。
2個以上のアンカーに影響される頂点に対して、
その頂点と互いのアンカーの面との距離で影響力を決定しています。
アンカーの面は最低でも6つありますが、
どの面との距離をとればいいかは想像つきますね?』
って答えてた。
結局、正確な計算式は不明。
0517名前は開発中のものです。
2006/09/30(土) 17:21:25ID:ZLzDkOO3すごくいいことを聞いた
横からd
0518510
2006/09/30(土) 18:15:01ID:5xvehRtz線形補間を詰めた方がイイって事っすね。ゲームですし、線形補間の方が速そうっすしね
ただあの綺麗な曲げは捨てがたく・・・
>>516
引用感謝っす。補間方法では無さそうっすが、ウェイトを決める方法っすね
>>515
なるほど、検索結果と合わせて何となく分かってきたっす
ボーンの回転中心を、頂点が結果的に円を動くような位置へと補間していけばいいんすね
おかげでなんとか出来そうです。皆さんレスありがとうございました
0519名前は開発中のものです。
2006/09/30(土) 19:34:59ID:3Lp8oI6E確かにMatrixの線形補間の方がはやいけど、Quaternionで補間しても
誤差程度しか差は出ないよ。
肘、ひざ、肩とか必要な箇所だけ頂点の補間法変えればよし。
0520名前は開発中のものです。
2006/09/30(土) 21:05:20ID:f6Ng8zSYシェーダーでやるってことを考えるなら色々と最適化を考えても場所ごとに分岐はやめたほうがいい気がする。
ツール系は全部CPUで計算しちまっても問題ないがリアルタイムなゲームだと色々面倒だぞ。
0521名前は開発中のものです。
2006/09/30(土) 21:44:59ID:3Lp8oI6E「やってダメだった」じゃなくて「気がする」って事は
試してないって事でOK?
0522名前は開発中のものです。
2006/10/01(日) 01:15:18ID:ogT2TFR+クォータニオンをマトリクスへ落とすだけでほとんど命令数を使い切っちゃう感じで駄目ですた
なにか最適化する方法があるのかもしれないんだけど頭が悪いのでわかりません
そんなわけなんで骨と骨の間にそれらを半々の割合で球面線形補間した骨をあらかじめ
用意しておいて使うことにしたんだけど、そうすると今度はシェーダーへ渡すマトリクスの
数が2倍近く増えるんでレジスタ数の限界を考えてモデルの方で使えるの骨の数に
かなりきわどい制限がでてきてしまう始末
0523名前は開発中のものです。
2006/10/01(日) 01:24:03ID:oVrgML5A2度も線形補間のコードをシェーダで通すくらいなら
CPUでやったほうがよくね?
ぶっちゃけ簡単だし
0524名前は開発中のものです。
2006/10/01(日) 01:49:58ID:ogT2TFR+最初から用意しておいたほうが速くなる場合もあるね
そういうどーしょもない話がDirectX10だと解消されてくるわけだ
0525名前は開発中のものです。
2006/10/01(日) 01:52:50ID:oVrgML5Aシャドウバッファとかやるときはどうすんだ?
0526名前は開発中のものです。
2006/10/01(日) 03:27:09ID:JJz6bZ2w0527名前は開発中のものです。
2006/10/01(日) 12:46:08ID:dPbmkgF9CPUとGPUを比べた場合現状はGPUの特に頂点シェーダーは
よほどのことがない限り遊んでるから頂点シェーダー側で命令が増えるのは
そんなにペナルティにならないことが多い。
一般的にゲームを作っていて処理がきつくなるのはCPU負荷とピクセルシェーダー部分。
とくにDrawPrimitiveはGPUコマンド発行するだけだがこれがべらぼうにCPU負荷食う。
ここはDirectX10で緩和されると言われてるね。
>>522
確かにボーンが増えてそれを全部定数レジスタに入れようとすると結構厳しくなるね。
とくにVS1.1だとボーンなんて10本くらいがいいとこだから現実的じゃないね。
最低でもVS2.0くらいのレジスタ数は欲しいねぇ。
できればVS3.0にしてボーンのマトリックスをfp16/fp32のテクスチャにいれて、
頂点シェーダー内でボーンのマトリックスをテクスチャからサンプリングするという方法もある。
これなら3テクセルに1ボーン入るからかなりの量のボーンが使える、ハズ。
0528名前は開発中のものです。
2006/10/01(日) 12:54:03ID:iXDGlJTF0529名前は開発中のものです。
2006/10/01(日) 12:57:10ID:PqisUcByすでにDirectXで作ったゲームがあるんですが、
これをネトゲにしようかと思ってます。
そこで気になったことが1つあります。
うっかりウィンドウキーを押してしまうと最小化されてしまい、
その間にやられて死んでしまう可能性です。
人間同士の駆け引きを楽しむネトゲにしたいんで、
こういった部分は全て排除していきたいんです。
一応ウィンドウキーを無視するようにはできたんですが、
これはマナー違反みたいな意見もあるかと思いまして、
ちょっと迷っているところです。
つまり、
A.ウィンドウキーを無効にしてゲームの快適さを優先
B.うっかりウィンドウキーを押して死んでしまってもWINのマナーを優先
どちらにすべきか・・・ということです。
個人的にはA.と思うんですが・・・。
よろしくおねがいします。
0530名前は開発中のものです。
2006/10/01(日) 13:02:43ID:iXDGlJTF世に言うところの、小さな親切大きなお世話。
どうしてもやるんだったら、後から設定するオプション扱い。
0531名前は開発中のものです。
2006/10/01(日) 13:05:39ID:PqisUcByなるほどオプションですか。
これならばウィンドウキーの有効・無効が自由にできますね。
そうするとデフォは普通にウィンドウキーが有効になっていて、
ネトゲに熱中しちゃう人はオプションで無効にできるから、
うっかり押しちゃって死ぬなんてことはない・・・と。
とてもいいアドバイスありがとうございました。
0532名前は開発中のものです。
2006/10/01(日) 13:09:47ID:dPbmkgF9だがやっているゲームも存在する。
そもそもの問題としてキーフックはWindows2000以降でなければできない。
・ALT+TABをブロックするのはかなり嫌われるコトになるけどそっちをどうするのか?
・ALTキーを押したときに動作が停止しないか?
・タイトルバーをクリックしてウィンドウを移動させるときにゲームが停止しないか?
動作に関して気になるならこの辺も全部確認しとき。
ちなみに個人的にはWindowsキーやALT+TABは自己責任で
デバイスロスト状態からの復帰をきちんとサポートってのが好み。
普通はWindowsキーってそうそう押さないし。
0533名前は開発中のものです。
2006/10/01(日) 13:15:22ID:bcMO92DK頑張れば2テクセルでいけるな。
姿勢だけなら自由度6だから、6つのパラメータ有れば十分。
VSからテクスチャ参照するコストと、VS内で行列を生成するコストを
天秤にかけることになるが。
>>529
キーフックとかで無効にしてるのならやめよう。
DISCL_NOWINKEYでググるべし。
0534名前は開発中のものです。
2006/10/01(日) 13:18:22ID:dPbmkgF9姿勢で持つにしても別途移動と親からのオフセットは必要にならない?
0535名前は開発中のものです。
2006/10/01(日) 13:19:36ID:PqisUcBy>・ALT+TABをブロックするのはかなり嫌われるコトになるけどそっちをどうするのか?
これにつきましては何もしないつもりです。
ウィンドウキーは1つ押しただけでスタートメニューが出てしまうので、
こういった操作ミスによるキャラ死亡だけは避けたかったんです。
ALT+TABは2つ押すんで操作ミスはありえないと思ってます。
>・ALTキーを押したときに動作が停止しないか?
>・タイトルバーをクリックしてウィンドウを移動させるときにゲームが停止しないか?
これについては後で考えますが、
現在はフルスクリーンのみで動くようになってます。
>>533
現在はキーフックでやってますが、
これはいいのを教えてもらいました。 →DISCL_NOWINKEY
早速取り込んでみたいと思います。
ありがとうございました。
0536名前は開発中のものです。
2006/10/01(日) 17:20:55ID:ogT2TFR+DirectX10だと頂点シェーダー通った頂点をまたビデオメモリへ書き戻せるんだってさ
だから結構重たい変形処理を頂点シェーダーにやらせても次のパスではその結果を再利用できる
てか俺vs1.1で動かないといやなのにDirectX10とか何いってるんだろうね
0537名前は開発中のものです。
2006/10/01(日) 17:26:08ID:iXDGlJTF0538名前は開発中のものです。
2006/10/01(日) 17:36:19ID:dPbmkgF9vs1.1を前提にするならそもそもレジスタが全く足りないので
ボーン処理は不可能と考えたほうがいい。
全部CPUでやるか固定機能でやるのが定番だな。
VS1.1ってGeForce3あたりだっけ?GeForce4も含まれるのかな。
どっちにしろそんな今となっては屑みたいなビデオカードをサポートすることで
クオリティを落とすというのはどうかと思うが趣味でやる分には別にいいのか。
GeForce3とかをHALでサポートするっていう前提の場合、
CPUも世代を合わせるとPen3の1000Hzあたりがターゲットってコトだよな。
日本は2D信仰が病的な程あるが、その強い影響で低スペックマシンを
前提として考える傾向が抜けないよなぁ・・・
低スペックマシンはオプションでギリギリ動くんじゃない?程度にしといて、
標準機能をは現行スペックにあわせて作ればいいのに。
0539名前は開発中のものです。
2006/10/01(日) 17:37:00ID:dPbmkgF90540名前は開発中のものです。
2006/10/01(日) 17:41:36ID:y/oaRnBb↓で説教してきてください。
エロゲメーカーはいい加減低スペックPCを切り捨てろ
http://pie.bbspink.com/test/read.cgi/erog/1114845529/
0541名前は開発中のものです。
2006/10/01(日) 17:54:14ID:7roD0klY>>515
行列に落としても出来るっしょ
逆にXファイルにクォータニオンで持たせることも(標準テンプレ範囲で)可能
0542名前は開発中のものです。
2006/10/01(日) 18:02:29ID:dPbmkgF9最終的には低スペックのマシンでも「表示がされなかったり動かなかったりはしない」
っていうレベルにしとけばいいわけだし。
切り捨てるっていうか基準を上にシフトさせるってコト。
そもそもvs1.1で作ったってGeForce2じゃHardwareTnLで動かんのだし。
MatroxG400じゃvsなくてもHardwareTnLで動かんわけだし、
作るときはこの辺でも全部「表示はされてゲームは動く」レベルには合わせるだろ。
まぁゲームのソースはビデオカードのサポート具合に合わせて
大量に機能毎の分岐やらシェーダー切り替えが出てくるケドナー。
0543名前は開発中のものです。
2006/10/01(日) 18:03:29ID:iXDGlJTF足りないというのは、一頂点辺りいくつのボーンを前提にして足りないといってるんだ?
固定で出来る数なら1.1で十分に対応できるんだが、いったい何の話をしているんだ?
0544名前は開発中のものです。
2006/10/01(日) 19:17:28ID:dPbmkgF9それはボーン数というかウェイト数だろう。
1回のDrawPrimitiveに使えるボーンの数が少なすぎるという話。
定数レジスタが96しかないんだからすべてをボーンに使ったって32本しか使えない。
だが実際には透視変換・ライティング・フォグ・テクスチャアニメーションなどの頂点処理で
レジスタを使わないといけないのだから1回のDrawPrimitiveで使えるボーンはせいぜい20本がいいトコだろ。
vsで凝ったことをするほど1回のDrawで使えるボーンの数が減っていくんだよ。
逆に凝ったことをやらないなら固定機能で十分なわけだ。
0545名前は開発中のものです。
2006/10/01(日) 19:29:57ID:iXDGlJTF0546名前は開発中のものです。
2006/10/01(日) 19:37:58ID:6J1M+7utといいな
0547名前は開発中のものです。
2006/10/01(日) 19:55:43ID:LpXzSsQ4と不安です。
0548名前は開発中のものです。
2006/10/01(日) 20:06:55ID:4Fg07nio0549名前は開発中のものです。
2006/10/01(日) 20:13:34ID:dPbmkgF9とりあえずGeForce6600
固定機能ライト数 : 8
ブレンドマトリックス数 : 4 ← MaxVertexBlendMatrices
ブレンドマトリックスインデックス数 : 0 ← MaxVertexBlendMatrixIndex
頂点シェーダー定数数 : 256
頂点シェーダーバージョン : 3.0
ピクセルシェーダーバージョン : 3.0
動的フロー制御命令のネスティング : 24
静的フロー制御命令のネスティング : 4
DirectX9世代のビデオカードでは固定機能はもうサポートされてないね。
メーカーの言うとおり全部シェーダーでやれっていうことなのだろう。
DirectX8世代はサポートしてるらしいけどねぇ。
そういうメーカーやAPI側の問題も踏まえたうえでDirectX8=vs1.1は使い物にならんと言ってわけだが。
ちょっと言い方に問題あったな。
固定機能は除外してくれ。
VS2.0ベースで作って対応してなきゃD3DCREATE_MIXED_VERTEXPROCESSINGと
SetSoftwareVertexProcessing()で分岐って感じがいいと思うけどが一般的じゃないのかねぇ。
0550WindowsVista
2006/10/01(日) 20:14:59ID:QL6n0Hv/0551名前は開発中のものです。
2006/10/01(日) 20:41:42ID:ogT2TFR+>>541
>行列に落としても出来るっしょ
どうやるか教えてください!
0552名前は開発中のものです。
2006/10/01(日) 21:10:25ID:9AU5rKoEプレビューもできるようなソフトない?
0553名前は開発中のものです。
2006/10/01(日) 21:29:58ID:oVrgML5Aあー、なるほど。そういう仕組みなのか。
最近新しいことについていけねーよ・・・悪い傾向だなぁ
0554名前は開発中のものです。
2006/10/01(日) 22:32:09ID:IrowYbpc底上げとかないだろ
0555名前は開発中のものです。
2006/10/01(日) 22:56:16ID:lU6LhM6k後はまぁ、規格が合うか調べる能力とか
コンピュータの蓋を外して中を弄ることについての多少の努力とか
0556名前は開発中のものです。
2006/10/02(月) 00:53:03ID:OdW/jKpGUnreal Editor
半分マジレス
0557名前は開発中のものです。
2006/10/02(月) 01:31:38ID:kV9hqfDm今出回ってるUE2はシェーダー関係一切使えない
マトモにUE3使ってエディタ外さないタイトルはUT2k7
すなわち来年
FarCryのエディタで代用できそうだけどメンドイ
誰か作れ
0558名前は開発中のものです。
2006/10/02(月) 02:38:01ID:7H4MMFEr効果が出るのですが、無限遠光源の表現に改造しようとしています
とりあえずg_mShadowProj(光源から見た場合の射影行列)を正射影で作るようにしてみた
のですが、細かいシマシマが出るようになってしまいました。
何となくShadowMap.fx内のsourcevalsをいじっているあたりが怪しいと思っているのですが、
よくわかりません。
一応シャドウマップの原理は理解したつもりなんですが、ここは何だか難しい事をやってるようで。。。
どう直したら良いのか教えて下さい。
0559名前は開発中のものです。
2006/10/02(月) 08:59:30ID:OdW/jKpGをいをい…「シェーダー関係」ってHDRとか法線マップ使えないと
「一切使えない」ってことになるのか?
UEDのマテリアルエディタ触った事ある?
描画パスの勉強するには必要充分なシェーディング機能だぞ。
0560名前は開発中のものです。
2006/10/02(月) 09:14:15ID:aFY/cqAR簡単にいうと、遠近射影と正射影とでは誤差の乗り方が違うのよ。
とりあえず SHADOW_EPSILON を 100倍にしときなさい。
0561名前は開発中のものです。
2006/10/02(月) 10:11:45ID:CTih6+Zy0562名前は開発中のものです。
2006/10/02(月) 10:36:11ID:aFY/cqAR正射影の場合 w は常に1だから、深度値は常に線形になる。
遠近射影の場合は、wで割ると深度値が非線形になる。(一応線形で求めることもできる。)
非線形だと、遠くの方ほど深度の変化が緩やかになるから、
そのサンプルだとたまたま、極少のバイアスでもうまくいってるんだと思う。
一方で線形は、深度値を頂点シェーダの方で求めても正しく補完されるメリットがあるみたい。
とりあえず正射影なら線形一択ね。
0563名前は開発中のものです。
2006/10/02(月) 10:55:48ID:CTih6+Zythx!
だけどホントはwで割る理屈が勘でしかわかってないから、線形と非線形について調べます。m(_ _)m
0564名前は開発中のものです。
2006/10/02(月) 11:20:01ID:IdJRfXBfありがとうございます!
もっと大きな値(0.01とか)で上手く行きました。
このサンプルではライティングをピクセルシェーダーでやってるのですが、これは何か意味があるんでしょうか?
仕組み上こうするしかないんですか?
0565名前は開発中のものです。
2006/10/02(月) 12:52:14ID:aFY/cqAR0566名前は開発中のものです。
2006/10/02(月) 13:07:48ID:IdJRfXBfなるほど。。。
ありがとうございました。すっきりしました。
0567名前は開発中のものです。
2006/10/02(月) 21:44:16ID:CTih6+Zy遠近射影の場合のwの導出式はあるのでしょうか?
何となく
w=kZ (kは定数)
みたいな気がしているのですが、これから
Z=w/k
になってしまうので、変な気がするのですが…
0568名前は開発中のものです。
2006/10/02(月) 22:25:57ID:aFY/cqAR詳しくは下を見てね。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/directx9_c/directx/graphics/reference/d3dx/functions/math/d3dxmatrixperspectivefovlh.asp
Zp = (Zv - near) / (far - near) * far, Wp = Zv ね。
Zv = near〜far を遠近射影で変換すると
Zp = 0〜far, Wp = Zv になって、
depth = Zp / Wp で、(非線形の)0.0〜1.0になるわけね。
ちなみに depth = (Zv - near) / (far - near) だと(線形の)0.0〜1.0ね。
シャドウマップの深度値を非線形で求めるメリットってあまりないと思うから、
後者の方でいいと思うけどね。
(PSMとかの場合はどうしても非線形になるけど)
0569名前は開発中のものです。
2006/10/02(月) 22:46:34ID:CTih6+Zyサンクス!分かるようにがんばってみます。
>depth = Zp / Wp で、(非線形の)0.0〜1.0になるわけね。
の「非線形」というのは、Zp と Wp の2変数の関数になっているから
「非線形」なのですか?
>ちなみに depth = (Zv - near) / (far - near) だと(線形の)0.0〜1.0ね。
こちらは Zv の1変数だけの関数だから「線形」なのですか?
0570名前は開発中のものです。
2006/10/02(月) 23:38:14ID:aFY/cqARグラフにしたときに
y=ax みたいに直線になる(均等に変化する)のがそこで言う線形で
y=1/x みたいに曲線になるのがそこで言う非線形ね。
深度値が線形変化だと、頂点間のパラメータ補間も線形補完だからそりがあうのね。
後は自力で頑張ってねw
0571名前は開発中のものです。
2006/10/02(月) 23:42:29ID:CTih6+Zyがんばります
0572名前は開発中のものです。
2006/10/03(火) 00:59:45ID:DSdGAOLrここを読んでクロスシミュレーションを勉強しています。
基本的な理屈は分かったのですが、これだけだと、例えば棒の上に布を被せた
場合、最終的には布が棒に完全にフィットしてしまう事になります。
もうちょっと末広がりのスカートにクロスシミュを適用させたいと思っている
のですが、広がった状態を保つのに何か良い方法はないでしょうか。
■ このスレッドは過去ログ倉庫に格納されています