2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

★☆★描画順を極めろゴルァァァ!!★☆★

1 :名無しさん@お腹いっぱい。:01/11/16 08:19 ID:???

  (\_/)  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( `Д´) < 描画順ってメンドクセェ
   /   ノつ  \______________
  (人_つ_つ

パフォーマンスと絵の質にダイレクトに跳ね返ってくる
(不透明/半透明)ポリゴンの描画順、オブジェクトの描画順、Zソート、
ハードウェアオクルージョンカリング効率についてだけ熱く語るスレ。

2 :名無しさん@お腹いっぱい。:01/11/16 08:20 ID:???
それなりに深い話題かもしれないが、
タイトルの装飾はなんとかならなかったのか。

3 :1:01/11/16 08:26 ID:???

   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  (´┏┓`)< 正直、タイトルの装飾はスマンカッタ!
  (    )  \_____
  | | |
  (__)_)

4 : :01/11/16 09:01 ID:S7BNCBJL
オクルージョンカリングって何?

5 :名無しさん@お腹いっぱい。:01/11/16 11:05 ID:???
ここでのオクルージョンカリングはXboxとGefoce3のファンクションで
Zテストを早めに行って表示する必要のないピクセルを高速に捨てる
Radeonはもっと高度なファンクションを持ってて
違う名前がついてるけど基本は同じ
手前のpolygonから順にソートして描画すると
これらのファンクションを生かせる

6 : :01/11/16 11:13 ID:S7BNCBJL
ただのZテストと違うんか?
重いピクセル処理前にZテストするのは当たり前だと思えるが?

7 :名無しさん@お腹いっぱい。:01/11/16 12:27 ID:???
>>1まずはタイトルの★の描画順をなんとかすれ

8 :名無しさん@お腹いっぱい。:01/11/16 12:38 ID:???
ところで、みんなは真面目にZソートってやってる?

Zソートするためにはまず自前で座標計算しなきゃだめだよね。
そしたらハードウェアT&Lが活かされなくなくなるから
全体的な速度を考えると半透明と不透明オブジェクトを
分けて描画する程度でごまかしてるんだが。

#なんか解かり難い書き方でスマソ

9 :名無しさん@お腹いっぱい。:01/11/16 16:27 ID:???
BSPツリーをトラバースしてソーティング。

10 : :01/11/16 16:52 ID:S7BNCBJL
計算結果をVertexBufferの残す奴があったと思うが どうか?
でも逆に遅そうな予感

11 :名無しサソ:01/11/16 19:23 ID:???
>8
 やるとしても、せいぜいオブジェクト単位のソートくらい。
ポリゴン単位でやると、多分遅くなる(少なくとも自分の腕では)。
>10にあるように、描画しない座標変換も出来るけどね。

 やっぱり違いの分かる人はアルファブレンドの違和感も非常に
気になる物なのかな。アバウトな自分はあまり気にしない(駄目人間)

12 :名無しさん@お腹いっぱい。:01/11/17 00:47 ID:???
アルファブレンドの違和感というか、
アルファでテクスチャを抜く時、ソートを厳密にやってないと
半透明の縁の部分に背景の色とか変な色が残る。
64はエッジアンチにアルファを使ってるが
たとえば64のマリオを見ると
ソートを厳密にやってないので
よく見るとキャラのエッヂが変な色になっていることがある。
この種の違い。
マリオみたいにゲームが面白ければ気にならないが。

13 :名無しサソ:01/11/17 03:21 ID:???
>12
 そうだね。すっかり忘れてた(苦笑)ただ、市販ゲームでも
その辺が上手く処理できてないのも非常に多いね。やっぱり細かい
見た目より速度を重視しての事かな。

 テクスチャのアルファブレンド&バイリニアフィルタって
色々と気にしないとうまくいかないねぇ。

14 :名無しさん@お腹いっぱい。:01/11/17 13:46 ID:FtDApPxx
FFXの髪の毛の抜きとかうまくいっているときとだめなときがあるのですが
うまくいっているときは抜きを使わずに書いているのでしょうか?(ハイポリ)

それとも細かいオブジェクト単位でソートをきちんとやっているのでしょうか?

15 :名無しさん@お腹いっぱい。:01/11/18 22:41 ID:???
>>14
デザイナさんがソフト上である程度優先順位をつけたデータを使ってん
だべさ。FFXみたいな短冊髪の毛だとどーしてもある角度で矛盾がで
きてしまうんだべ。

 つーか、キミの黒いゲーム機で真面目にソートなんかした日にゃDC
以下しか出せんべ。良くてオブジェクト単位でソート。

 ま、んな事にこだわるぐらいなら中身を作りこめっつーの。

16 :名無しさん@お腹いっぱい。:01/11/18 22:55 ID:???
>>15
角度で矛盾とかゆうよりかは、背景のオブジェクトに半透明使ってるときに
うまくいってないような気が。

>ま、んな事にこだわるぐらいなら中身を作りこめっつーの。
はげしく同意。

17 :名無しさん@お腹いっぱい。:01/11/19 02:43 ID:Gqj0F0jP
>>15
中身作りこむ人と描画部組む人は違うべよ。
ソートがんばって中身がクソになったなんて話はねーだろ。

18 : :01/11/19 13:52 ID:lEll+zjR
半透明のソートの実装はどうやるのが良いんでしょうか?
バケツ(ビンorPS1方式)ソート?

Z値からバケツのIndexはどう割り振るんでしょう
Z値が0から1まで均等に分布するってこたぁないだろうし、、、
なんて変な小細工するより何にも考えないほうがいいかな

あ、そもそもオブジェクト単位のソートならあんま気にする事もないのかな
(でもPS1ですら(やもえずだけど)ポリゴン単位のソートしてるわけで、
いまどきは全体のポリゴン数は多いとはいえ、半透明部分のみのソートって、
そんなに重い処理ですか?)

19 :名無しさん@お腹いっぱい。:01/11/19 16:39 ID:???
W値でソート

20 :名無しさん@お腹いっぱい。:01/11/19 16:40 ID:???
ソートにWは使わないよ

21 :あま:01/11/19 21:07 ID:bTBvOeio
こないだSCEから配られたっつう Z sort routine はどんな
手を使ってたの?

22 :名無しさん@お腹いっぱい。:01/11/20 00:24 ID:3zSs0zNy
よく知りませんが、
ソートってそんなにコストが高いんですか?(半透明のみなのに・・・)

23 :名無しさん@お腹いっぱい。:01/11/20 02:27 ID:???
諸々のPS2の
ミドルぅエアのこのあたりの半透明ソート問題ってどうやって
解決してるの?

24 :名無しさん@お腹いっぱい。:01/11/20 16:52 ID:???
レンダリング後のZバッファが必要でないなら、
交差ポリゴン分割+フルZソートで良いじゃんと思う今日この頃

25 : :01/11/20 20:03 ID:oqFT5pPy
交差ポリゴン分割は大変でないの?

26 :名無しさん@お腹いっぱい。:01/11/20 20:25 ID:???
>>24
ハードウェアレンダリングパイプラインの効率を無視しちゃイヤン。
最後まで頂点をレンダリングエンジンに送れないじゃん。
+変形するモデルはどうすんの?

27 :24:01/11/20 20:31 ID:???
オレは新しいハードの機能とかについていくのに脱落した人間だから、
自前のソフトレンダラしか使{わ|え}なくなった人間なんで。
ソートとバッファを使い分けたり、めんどくさくてやってられねぇっす

28 :19:01/11/21 15:13 ID:???
>>20 そう?いい方法だと思ったんだけどな。
Wつーか、1/Zをキーにしてソートかければいいんでねーの?だめ?
ツッコミきぼんぬ

29 :名前は開発中のものです。:01/11/23 01:21 ID:T/Rr2TFO
>15

>デザイナさんがソフト上である程度優先順位をつけたデータを使ってん
>だべさ。FFXみたいな短冊髪の毛だとどーしてもある角度で矛盾がで

ツールみたいなものでしょうか?Mayaとかでそういった機能があるのでしょうか?
CGツールをまったく知らないのでさっぱりです。よろしければもう少し詳しく教え
ていただけないでしょうか?

30 :名前は開発中のものです。:01/11/23 01:26 ID:???
>>29
 んーにゃ。普通の3Dツールだったらプレビューの表示はポリゴンソート
なんかせずに「作った順番に」表示すんべ?んでもって、普通にコンバート
なりで出力したら「作った順番に」ポリゴン吐き出すベ?
 デザイナがカットアンドペーストでそこそこちゃんと見える順番にポリゴ
ン表示順位を決めてやればなーんも問題ないって訳さ。

 ま、スクウェアだともっと別の方法かもしんないけど、意外とこんなロー
テクで大体の場面は誤魔化せるもんなのよ。具体的によーわからんのだった
ら自分で実際にモデリングして試してみんべ。

31 :名前は開発中のものです。:01/11/23 07:21 ID:???
要Zソートな描画と Triangle Stripって禿しく相性悪いと思うんだけど
みんなはどう対処してるんだろか。
1Stripが回り込んでいたりとか、変形ありのモデルだと更に判断しにくいし。

やっぱStripで繋ぐのは捨てて、最初から独立三角形で描画?

32 :名前は開発中のものです。:01/11/23 15:12 ID:???
事前に開発用のPCでモデルデータの形状解析してストリップ面
を生成すればよろし。
簡単な例だと、球体等は円周上にストリップ化せず、よりローポリ風に
面をまとめる感じにコンバートする。
解析部をGAアルゴリズム化して、勝手にベンチさせて優秀な奴を残すと、
平均で2000ポリ程度のモデル(法線,UV付き)3/4〜2/3の負荷で落ち着くよ。

33 : :01/11/23 15:33 ID:???
うへ、そこまでするの?
どうやったって全方位から見られる事を考えれば破綻するっぽいけど

DXじゃ短いStrip重くて意味ないしさ

34 :名前は開発中のものです。:01/11/23 16:30 ID:IdkMBMoM
>>32
某車ゲーの開発者にそんな話聞いたことがあったのですが、やっぱ
良いストリップ拾うのって大変なんすね。

35 :名前は開発中のものです。:01/11/24 03:59 ID:???
>>33
一回作れば他でも使えるから、そこまでします。
それがメシのネタなので。
ゲームの場合は全方向性は重要じゃなく、一番頻繁に見る
アングルに偏りがあるから結構効果が高い。
ベンチは、ターゲット機で実際の描画をいろんな角度で
表示させながら成績を出させるから、実情に適したデータになる。
モデル修正した場合も、前回優秀な結果を出した因子で再度計算
させるだけで、この場合は数秒で終わる。
もっとも、描画部のプログラマがちゃんと最適化して
デザイナーが無駄ポリつかわないようにしてないと意味無いけど。

36 :名前は開発中のものです。:01/11/24 05:16 ID:???
>>35
 飯のネタにケチつける訳じゃないが、そこまでやって全方位から完璧な
ストリップが得られる訳じゃないっつーのもなんだね。もっとスマートな
方法があればいいんだけど。

 畑が違うんでよーワカランのだけど、CUBEのタイトルってどいつもコイツ
もドリキャス並みに半透明を気軽に使ってるんだけど、あれは単に力技なの
かねぇ?それともハード的に何か工夫がしてある?

37 : :01/11/24 07:23 ID:???
飯のネタ じゃなくて 飯の種だろ
日本語の方も頼むよ

38 :名前は開発中のものです。:01/11/24 07:42 ID:X3bbZxMi
>>35
最適化って、やっぱりみなさんアセンブリでイジクリ回してるわけですか?
描画担当って汗技術必須なんすかね?

39 :名前は開発中のものです。:01/11/24 08:14 ID:???
>>37
どうでもいいことだが
「ネタ」ってのはそもそも「タネ」の逆読み(業界語)なんだから
どっちでもいいじゃん。

40 :名前は開発中のものです。:01/11/24 12:05 ID:???
>>39
何業界?おせーてっ!!

41 :名前は開発中のものです。:01/11/24 12:08 ID:???
>ねた
>(「たね(種)」を逆さ読みした隠語)
広辞苑第五版

>ねた
>〔たね(種)の倒語〕
大辞林第二版

つーか、そうだったのか。Σ(゚д゚lll)ガーン

42 :名前は開発中のものです。:01/11/24 12:15 ID:???
>隠語
ハァハァフゥ、ウ、アハァ、ウックッン、ファ

43 :名前は開発中のものです。:01/11/24 13:48 ID:???
>>40
もちろん寿司屋さ

44 :名前は開発中のものです。:01/11/24 16:10 ID:???
>>36
全方向に対して均一な得点配分をして解析させれば、ほぼ
完全な解が求まるけど?
1万ポリならセレロン800MHzで4時間くらいかな?
ただ、実際のゲーム中一番良く見るアングルに最適化したほうが
より処理が高速化するから、得点配分を変えるだけで。
事前ソートで処理効率が2〜3割アプしている現実があって、
なぜそれに否定的というか悲観的なの?>36
仮に1割しかアップしなくてもスマートな方法を夢想して、
実体が無いよりぜんぜんいいと思うが。

もちろん最適化が必要ないゲームもあるし、価格対費用効果
が重要なのはわかるけど、デザイナーが手作業でソート順
指定するより生産性高いよ。
でもって、GAソートなんてそんなたいしたモンじゃないし。
参考書とWEB見ながら2週間で形になったけど。サーバ通信部
のほうが教科書どおりに動かなくてなきそうだった。

45 :名前は開発中のものです。:01/11/25 07:09 ID:???
デスマーチ中はモデル追加するたびに4時間も待ってられない。

46 :名前は開発中のものです。:01/11/25 13:26 ID:???
描画まわりの高速化は必要な時だけにな。
描画最適化可能な人材なんだったら、もっともっとやるべき大切なことがいっぱい・・・

プログラマー遠藤雅伸氏が答えるスレ でも見なさい。ご本人様がご光臨なされてるぞ。
って別に布教活動ってわけじゃないんだけどね。


47 :名前は開発中のものです。:01/11/25 18:31 ID:???
>>45-46
44じゃないけど、ワークフローに一度組み込んじゃえば問題ない気がするけど。
4時間(実際はもっと速いマシン使うだろうからもっと短いだろうけど)も、
実データの差し替えをするときだけすれば(実際には寝る前、帰る前)にすれば
いいだろうし。
//プログラマーのところでないと実機でプレビューできないのであれば、それは
//開発環境、ワークフローの準備不足。

48 :名前は開発中のものです。:01/11/26 03:50 ID:5k3ArB+m
なにげに非常に重要な話題のスレだよなあ。上げ。

49 :名前は開発中のものです。:01/11/26 05:36 ID:???
頂点キャッシュ、ストリップ化はこういうスレを立てて独立すれば?


★☆★メッシュ最適化を極めろゴルァァァ!!★☆★

  (\_/)  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( `Д´) < ストリップとか頂点キャッシュってメンドクセェ
   /   ノつ  \______________
  (人_つ_つ

パフォーマンスにダイレクトに跳ね返ってくる
頂点キャッシュ最適化、ストリップ化などの
メッシュ最適化についてだけ熱く語るスレ。

50 :名前は開発中のものです。:01/11/26 06:33 ID:???
何でも別スレ、別スレか・・・。

51 :名前は開発中のものです。 :01/11/26 08:02 ID:???
DirectXで 1000ポリゴンくらいのXファイルを、100ポリゴンくらいに
分割して表示するだけで、なぜか4倍くらいパフォーマンス上がったんだけど、
これって、ただ単に1回に読み込むデータ量が少ないんでほとんどデータを
キャッシュで処理してるから早いってことなのか?

52 :名前は開発中のものです。:01/11/26 11:56 ID:???
>>49あんま独立しすぎてもなぁ。
そのスレたてても44が引き上げたら終了なんじゃねぇの?

53 : :01/11/26 12:59 ID:???
MSは、一回の描画で100ポリゴン位がパフォーマンス的に最適と
言っているよ
CPUとの並列化の関係といってたが、単に1回の呼び出し部を複数に分けるだけで意味あるのかね
(間に別の処理でも入ってなけりゃ結局連続して呼ばれるわけだし)

54 : :01/11/26 13:18 ID:???
バッチ サイズ
Direct3D は大きなサイズのプリミティブ バッチに最適化されています。
1 回の呼び出しで送信できるポリゴンの数が増えれば増えるほど、有利
です。呼び出し 1 回当たりおよそ 100 ポリゴンが目安です。下回る値
では最適パフォーマンスとはいえません。逆に上回るようでは、リター
ンが少なすぎて、並列処理で問題が起きるおそれがあります (以下参照)。


並列処理
他の処理とレンダリングを並列に(同時に)実行すれば、システム パフォ
ーマンスを最大限に活用できます。しかしこれは、「レンダーステート
の変更をできるだけ避けよ」という課題と相反します。一括処理による
ステート変更の削減と、できるだけ早くドライバにデータを出力して並
列性の達成に寄与するいう 2 つの課題の間でうまくバランスをとる必
要があります。総当たり方式で複数の頂点バッファを使用すれば並列処
理しやすくなります。

55 :名前は開発中のものです。:01/11/26 16:14 ID:???
■Microsoft DirectX 8 開発者 FAQ
http://www.microsoft.com/japan/developer/directx/techart/DirectX8faq.asp

>>54
コピペ元ぐらい貼っておあげなさい。

56 :名前は開発中のものです。:01/11/26 16:51 ID:???
>>55
53=54=sag(笑 じゃないけど、
その主張は妥当なれど強制すべきではないに200モナー

57 : 本人:01/11/26 16:54 ID:???
(´-`).。oO(53=54=sageだけど、なんで笑われちゃうんだろう)

58 : 本人:01/11/26 17:03 ID:???
間違えたsageじゃなくてsagか

>総当たり方式で複数の頂点バッファを使用すれば並列処
総当り方式ってどういう意味だろ

結局V-tuneで調整っすか

59 :56:01/11/26 17:48 ID:???
>>58
「Using multiple vertex buffers in round-robin fashion can help with concurrency.」
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndxgen/html/directx8faq.asp

私もよく分からないけど、ラウンドロビンDNSとかから類推するに、
頂点バッファ複数持ち、負荷を分散して効率あげろって言いたいのかね?

sagはメール欄がsagだったからさ(笑
sagでもsageになるのかな…久しぶりに2ch来たから分からない…

60 : 本人:01/11/26 22:22 ID:???
sageって打ち込んだり、消したりするのが面倒だから
末尾のeの有無で調整してるだけだよ

61 :名前は開発中のものです。:01/11/27 07:08 ID:???
『動的にデータを生成する際には、頂点バッファのパターンはどう利用すればよいでしょうか。』
って欄に書いてある内容のことだよ>ラウンドロビン
dx7faqには、そこの説明のとこにもラウンドロビンと書いてあったんだが。

62 :名前は開発中のものです。:01/11/27 18:53 ID:???
>>60
ミスタイプじゃ無かったのね
>>61
レスありがとうございます、そこの事だったのですね。
MSめ、中途半端に辞書直訳しやがって…「総当たり」じゃ分かんないよねぇ(笑

63 :61:01/11/30 11:35 ID:???
DirectX7の頃のFAQをHDDの中から発見したので問題の部分を引用しておきますね。

バッチ サイズ。Direct3D は、プリミティブの大きなバッチに対して最適化されています。
1 回の呼び出しで送ることができるポリゴンが多いほど、よくなります。経験から得られた
よい法則は、呼び出しあたり平均して 100 のポリゴンになるようにすることです。それ以
下では、おそらく最適なパフォーマンスは得られず、それ以上では、リターンの減少と同時
実行の問題 (以下を参照) との潜在的な衝突を生じます。

並列実行。ほかの処理と同時にレンダリングを実行するように調整できるならば、シ
ステム パフォーマンスを最高に利用することになります。この目標は、レンダー ス
テート の変更を減らすという目標と衝突します。ステート変更を減らすためのバッチ
処理とデータを押し出してドライバが早く同時実行を達成できるようにすることとの
バランスを取る必要があります。ラウンド ロビン方式で複数の頂点を使うと、並列実
行しやすくなることがあります。

64 :名前は開発中のものです。:01/12/29 21:45 ID:J93v+cV6
いまさらだけど、基数ソートって浮動小数点数にも使えるのねん。
http://codercorner.com/RadixSortRevisited.htm
半透明ポリゴンはこれで桶?

65 :_:01/12/30 02:10 ID:EmDOc62y
>CPUとの並列化の関係といってたが、単に1回の呼び出し部を複数に分けるだけで意味あるのかね
>(間に別の処理でも入ってなけりゃ結局連続して呼ばれるわけだし)

恐らく、間で頂点弄ってNOOVERWRITEでLOCK()を繰り返すんじゃなかったっけ?
分割は、8回が限度みたいね。NVIDIAの資料によると。

66 : :02/03/08 20:06 ID:???
age


67 :名前は開発中のものです。:02/05/13 13:19 ID:v3ThF9bU
age

68 :age:02/09/16 16:29 ID:???
age

69 :山崎渉:03/01/13 13:26 ID:F1Bm+Kfe
(^^)

20 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)