トップページ⇒tech
888コメント366KB

非PC系ゲームプログラミング

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
WinやMacやLinuxみたいな
立派なOSなんか載っていない機種向けの
ゲームプログラミングについてのスレです。

とりあえず
・守秘義務は守る(つっこんだ質問はそれにふさわしい所でどうぞ)
・身元がばれないように気をつけよう。詮索もやめよう。
・プログラムの話をしよう。
みたいな感じでマターリいきましょう。
00021NGNG
「あなたのまわりの糞コード」スレの164です。
そんなわけでさっそく立ててみました。
需要あるかなぁ・・・
00031NGNG
とりあえずは糞コードスレで出てたんですが、
「mallocは使ってはいけない!?」

で、私は

>結局必要なのは計画的なmallocの使用であって、
>mallocを全面禁止というわけではないですよね?
>その際、自作mallocか出来合いのmallocかは
>それほど関係ないと思ったのでした。
>(自作のほうが挙動全て把握できるというのは了解です)
>いや、なんかみんな「mallocつかうと虫食いになるからダメ」
>って感じだったんで、そうじゃないでしょ、計画的に使えば
>全然おっけーでしょ、って主張したかったのでした。

と結論付けたのですが、どうでしょう?
0004デフォルトの名無しさんNGNG
うむ。リリース忘れとか、地獄があったりするので、でかいデータを
扱うところは固定領域にするとかやってもいいかな。
>>3
00053NGNG
>>4
そうですね。
ただ、malloc/freeの対応チェックは
それほど地獄ではない(苦痛なのは確かですけど)と思うんです。
ヒープの状態が虫食いになってしまったときが一番厄介だと思うので
そうならないようにちゃんと計画立てさえすればmallocは便利なので
禁止しないでーと訴えたいのです(誰に??)

最近ではメインメモリも大きくなってきたから
それほど神経質にならなくても大丈夫なのかもしれませんけどね・・・
0006デフォルトの名無しさんNGNG
メモリ戦略っすか。ヒープ内を単純にincrementalに確保していって
使い終わったらヒープごと抹消します。
ヒープは固定サイズで複数持てて、
これはmalloc/freeみたいに確保(自前ルーチンですが)。
タスクはクラスのnew/delete演算子をオーバーライドして構造体プールで。

C標準関数やSTLの類は一切ナシでし。
Windowsでは普通に使ってますけど。
0007デフォルトの名無しさんNGNG
虫食いにならないテクニックは、やはりメモリプールが一番でしょうか。
リストとかもチェーンからはずれても、あえて解放しないとか。
そしてプール分はある特定のタイミングでガベージコレクトすれば
うまく行きそうな気がする……

ゲーム専用機プログラムしたことがないので勘で書いているけれど、
実際どんなもんですか?
もし突っ込んでよかったら、「malloc/freeしない」よりも
もうちょっと具体的に対処法を書いてもらえると参考になります。

しかし、クラスのnew/deleteをオーバーライドってのは激しいなぁ。
0008でふぉると名無しサンNGNG
私も、もちっと詳しい事が聞きたいです。

個人的には、malloc/freeを全て管理するクラスみたいなもんを
作れば、全て丸くおさまるんじゃないかなぁ、なんて思ってるんですが
甘いですかね?
管理するクラスを作るって考えが甘いか??(そんな簡単に作れんって感じ)
0009デフォルトの名無しさんNGNG
>>8
クラスかどうかは全然関係ないとオモウヌ。
0010デフォルトの名無しさんNGNG
自作mallocってのは生のmallocのラッパーのことでしょ?

でもおれはほとんどstaticとautoでことが済むなぁ。グラフィックオブジェクト
とか、キャラクターオブジェクトは動的に確保しなくちゃいけないけどこのレベル
のものは自作newで確保する。
Stringさえ我慢してchar[]使えば生のmalloc使う必要はほとんどないと思う。
0011名無しさん@お腹いっぱい。NGNG
>>10
それ、参考にします。
つーか、メモリプロテクトとかないRTOSでプログラムする場合
staticでとっちゃいますよ。
0012デフォルトの名無しさんNGNG
>自作mallocってのは生のmallocのラッパーのことでしょ?

うにゃ、malloc&freeそのものでし。
標準関数のmallocの実装は、信じられないほど非効率なことが多いです。
ごくシンプルなmallocに置き換えるだけで、数倍速くなったりして。
(数十倍ってのも経験アリ)
0013デフォルトの名無しさん NGNG
>>12
ちゅ-事は、malloc&freeはまったく使用せず、
自作のmalloc&freeもどきを使用するって事け?
0014デフォルトの名無しさんNGNG
そゆこと。
0015デフォルトの名無しさんNGNG
その自作のmaloccが利用するヒープの確保には生のmallocを使うんじゃないの?
まあ自作したって良いけど、俺は最初に生のmallocで確保して適当
に振り分けてたよ。
0016デフォルトの名無しさんNGNG
>>15
正解
0017デフォルトの名無しさん NGNG
ぎゃふ。中では使ってるのかぃ〜。

よーするに、はじめにごっそりmallocでとって、それを適当に振り分けるのが
自作mallocもどきって事け?
大正解?
それとも、出直せぃ!ってか?

つーか、みんなヤッテイル事かと・・・そーでもないのか?
0018デフォルトの名無しさんNGNG
なにいッ! 漢ならアドレス決めうちじゃないのか!?
環境にもよるけど(マジレス)。
0019デフォルトの名無しさんNGNG
>その自作のmaloccが利用するヒープの確保には生のmallocを使うんじゃないの?

いやあ、べつに生mallocでなければならない理由もないし。
あたしゃ、ある日コーディングしていて、
ふと標準関数がヒープ確保用のmalloc/freeを含めて数種類しか
存在しないのに気づいて、せっかくだから全部追放してしまったダスよ。
スタートアップも書き直してメモリ節約。
0020デフォルトの名無しさんNGNG
決め打ちだと下手したらとんでもないことになるからやだ

>>17 俺もそれだと思ってたな。これなら staticで確保してから振り分けてもいいと思うが。
0021デフォルトの名無しさんNGNG
PS2でプロジェクト進行中ですが、みなさんユニットテストはどうやってます?

ビジネス系アプリならassertで確認できるロジックが大部分かもしれないけど、
ゲームだと画面に正しく表示されているかを確認する作業が入ることが多いので
テストの自動化がひじょーーに困難です。

なにか良い手はないものか模索中。成功例失敗例などあればお願いします。
0022デフォルトの名無しさんNGNG
mallocのアルゴリズムは奥が深い。ゲーム向けの断片化しにくいアルゴリズムもある。
mallocを使ってるゲームはたくさん発売されているよ。
俺も何本も作ったし。

普通、自作mallocではオリジナルのmallocは使わないよ。
コンパイラがヒープブロックの先頭アドレスと終端アドレスに
ラベルを振ってくれるからそれを使うんだよ。1バイトでも惜しいからね。
処理系依存だけど、どのコンパイラでも必ずできる。
またmallocを乗っ取る仕組みが組込み向けのコンパイラにはあるから、
それを使えばライブラリでmallocを使っていても問題ない。
0023デフォルトの名無しさんNGNG
>>21
俺が好んで使っているのはオートプレイ。
アドベンチャーなら、自動的にキーを押して、
選択肢が出たらランダムに選択。
シューティングなら無敵にして永久プレイ。
うまいassertの入れ方がポイント。
assertを残してコンパイルして焼き、2〜3台のマシンで垂れ流しプレイ。
デバッグの人手が足りないときとか、土日なんかに重宝するよ。

演出的なバグは、目視したりビデオに撮ったりするしかないねぇ。
002421NGNG
>>22
達人ですね。断片化しにくいアルゴリズムの参考URL,文献などあれば
紹介していただけないですか?

ヒープの先頭,終端アドレスのラベル使用は理想的だと思うんですが、
Cライブラリのprintf等がmallocを呼んでいると破綻しませんか?
自前mallocをリンク順の先頭にもっていって乗っ取る(インター
ポジショニング)んでしょうか。

>>23
情報サンキュ。
ある程度まで組み上がったら、そういう手が良いと思いますね。

一番悩んでいるのはオートプレイまで組み上がる前の、たとえば
グラフィックライブラリ作り中とかそういう開発初期の部分なのですよ。
わりと低レベル側の実装を高速化したときに、バグを紛れさせてないかを
確認したりとか、そういうレベルなんですわ。
0025デフォルトの名無しさんNGNG
机上に勝るデバグ無し!
(一応、マジレスです)
0026デフォルトの名無しさんNGNG
すみません
ユニットテストって何ですか?
0027デフォルトの名無しさんNGNG
>>26
単体テスト。例えば関数単位やクラスでの。
ビジネスアプリ(特にJava)で流行ってる。
http://www.JUnit.org/
書籍「リファクタリング」を参照すると良い。
002826NGNG
>>27
ありがとうございます。
リンク先、英語っすねぇ・・・ぐはっ
リファクタリング読みます。
0029デフォルトの名無しさんNGNG
最初のデバッグ作業で一番効率良いのは、
レビュアー置いてソースレビューだよね。
(どんな優秀な人であっても勘違いしてない
保証はないし。ボケ行為はしょっちゅうある
もんですよ。人間が書いてんだから。)

後半ではデバッガでトレースだよね。
00303NGNG
malloc使わずにメモリプール、という方もいるみたいですが、
開発言語はCでしょうか?
C++だとメモリプールって厳しそう。
デストラクタとかの兼ね合いもあるし。。。

C++だったら、やっぱり素直にmallocですかね?
(自作でもいいけど、挙動はmalloc準拠)
で、グローバルなnew/deleteをmalloc使って実装。
虫食いにならないようにnew/deleteを使用。
ですよね?

というか、C++使ってます? STLは?
003121NGNG
>>30
>というか、C++使ってます? STLは?
どっちもバリバリ使ってます。

グローバルなoperator new でメモリ管理は乗っ取れるので、最初は気にせずに
コーディングしてました。
最近マルチスレッド化するためにoperator newをオーバーロードしましたが、
特に問題なく動いています(STL含め)。
0032デフォルトの名無しさんNGNG
RenderWare = うんこ
003330NGNG
>>31
優秀な開発チームって感じでうらやましい。。。
せっかくSTL付いてきてるのだから、
一度バリバリ使ってみたいと思う今日この頃。
周りと足並み合わせなきゃダメですけど。。。

>>32
ユーザーですか?
んー、どのへんがうんこなのか詳しく聞きたい気もするけど、、、
守秘義務とかに触れるかなぁ・・・

プログラムに関係ないレスになっちゃったのでsageます。
すんません。
0034RenderWareうんこNGNG
パフォーマンス悪い。周知の事実。

バグ多い。

バグ修正しない。バグ報告投げると「バグです。新しいSDKでは直ってます」
「じゃあ新しいSDKください」「それはバージョンアップ扱いなので、別料金です」
「新機能の追加じゃなくて、バグ修正なんですが...」「いいから金払えや」
って感じ。
0035デフォルトの名無しさんNGNG
>>31
operator new を乗っ取った時、
コンストラクタのコールはどうするんですか。
0036デフォルトの名無しさんNGNG
>>35
いらない。
というか、そういう質問をするということは、new演算子とoperator newとの
関連を正確に理解していないということ。
Effective C++を読んでください。
0037デフォルトの名無しさんNGNG
>>36

>>35はグローバル領域に置かれたオブジェクトのコンストラクタのことを言ってるんでしょう。
main関数がスタートする前に、これらのオブジェクトのコンストラクタが呼ばれるから。
それを含めて、判ってないと言ってるのかな?
それはいいとして。

正式な手順としては、new を呼び出すコンストラクタでは必ず最初に
メモリ管理クラスへのインスタンスを参照するようにすればいいんです。
そうすれば、メモリ管理クラスのインスタンスが何よりも先に生成されるから。
ただ、全てのクラスが参照する可能性のあるメモリ管理クラスでこれを
やると、非常に煩雑になりますし、うっかり参照し忘れて誤動作する危険があります。

そこで、たいていのコンパイラでは、main 関数を呼び出す前の、
さらにグローバルコンストラクタを呼び出す前に、
ひと仕事できる仕組みが用意されています。
それは特定の名前の関数を定義することだったりとか、
SHCならグローバルコンストラクタを手動で呼び出すとか。
とにかくコンパイラによって仕組みがぜんぜん違うので、
マニュアルをよく調べてくれとしか言えないです。

そういうことを考えてないようなコンパイラでも、
main関数呼び出し前のハードウェア初期化ルーチンを
アセンブラで記述しなければならないので、
そこを書き換えることで対応できます。
ただこれは、どこのゲームメーカーでもobjファイルしか
提供してなかったりするから、ゲームマシンの場合は難しいです。
003837NGNG
ちなみにnewが呼ばれる前に、メーカー製ライブラリが
mallocを呼んでしまう可能性があるので、
やっぱ正式なやりかたはダメなことを思い出しました。
それがなかったらnewの中でメモリ管理クラスを
初期化すればいいんだもんね。
003930NGNG
>>34
うへ。けっこうキツイですね>RenderWare
結局すべて自作したほうが何かと便利ってことですね。
手出さなくて良かった。。。
ただ、みんながみんな自作するとノウハウが蓄積されず
業界全体としては非常にもったいない気もするんですけどね・・・
元締めががんばってノウハウを広めてくれることを期待。
頼むよ、マジで>元締めさん
0040デフォルトの名無しさんNGNG
>>37
そのへん、CodeWarriorはちゃんとサポートしてますね(forPS2)
スタートアップルーチンを変更しなくても、グローバルなコンストラクタ
の呼び出しタイミングを制御できます。
ただ、問題は、その仕組みを知らずにC++で書いて、
グローバルなコンストラクタを呼び出さないで
はまってしまう方もいるってことですかね(汗

クセも結構ありますが、CodeWarrior、いい線いってると思います。
おすすめデスヨ! (for PS2)
004136NGNG
>>37
>>>35はグローバル領域に置かれたオブジェクトのコンストラクタのことを言ってるんでしょう。
>main関数がスタートする前に、これらのオブジェクトのコンストラクタが呼ばれるから。
スマン、そういう意図は想定してなかったよ。

>正式な手順としては、new を呼び出すコンストラクタでは必ず最初に
>メモリ管理クラスへのインスタンスを参照するようにすればいいんです。
インスタンスの参照とは? Singletonパターンを言っているのなら、そのとおりですが、
異なる翻訳単位のインスタンスをただ使用するだけでは、初期化順序は制御できない
のでは?

どちらにせよ、C++の静的インスタンスはいま話題にしているコンストラクタ
呼び出し順序が問題になるので、なるべく使わないほうが良しですね。
0042デフォルトの名無しさんNGNG
面白いスレだと思います。

ウチのプロジェクト(メインメモリ 2M の某マシン上)でも、
自作系の malloc / free を随所でやってましたよ。
ヒープがズタズタになって苦労しましたけど、この手法に訴えないと
作れないソフトでしたので。

さておき、3D スレなどとかぶるかも知れないけど、
せっかくなので、そっち方面の非PC系ゲームプログラミングの話題も
盛り上がってくれるといいなぁ。
0043デフォルトの名無しさんNGNG
>さておき、3D スレなどとかぶるかも知れないけど、
>せっかくなので、そっち方面の非PC系ゲームプログラミングの話題も
>盛り上がってくれるといいなぁ。

じゃあネタふりをひとつ。
関節アニメーション時の回転行列の表現には3D当初はオイラー角表現が
多かったと思います。最近はUnit Quaternionも選択肢に入ってますが、
みなさんは使ってますか?

オイラー角の値を単に線形補間すると姿勢が極端に変化する(ジンバルロック)
現象が起こります。Quaternion表現ならそれが回避できて萌えー
というのがウリのひとつです。

こちらでは昔撮影したモーションキャプチャーのデータの再生に
Quaternionを使ってみました。以前オイラー角補間で表示した際には
補間がうまく表示できないモーションデータも、Quaternionによる
補間ではうまく表示できるようになりました。

この例ではデータ構造も補間方法も全部自分ルールで決められたため
ラクチンでしたが、各種グラフィックツールからエクスポートする際には
ツールの内部表現などによって使いにくいこともあるかと思います。
なにか経験があれば教えてください。
0044デフォルトの名無しさんNGNG
>>40とか
んーと、そこまでの苦労をする位なら消極的だけどやらないほうが
いいんじゃないでしょうか?
メモリ関係のバグは作る可能性が高い割には発見しづらいし
問題箇所を特定するのも難しいし再現性も悪いしで最悪な気がする
んですけど。
動的なメモリ確保がボトルネックになるのならばインスタンスは
始めに一定量確保する方法をとって、どうしても動的に確保しなければ
ならない時はしょうがないから標準関数を使う、じゃダメ?
メモリのフラグメンテーションについては防護策は無いけど(っつーか
いらないと思う)、メモリの使用量に関してもこっちのほうが有利だし、
バグは出にくいはずですよね?

あと、これは素朴な疑問で、知ってる人にとってはバカバカしいかも
しれないですけど、自作メモリマネージャを使う場合、スタックに
確保されるようなクラスはどう処理されるんでしょうか?
簡単にでいいですから教えてほしいです。
あ、new演算子のオーバーロードだからnewキーワード使わなければ
ちゃんとスタックに確保されるか。
0045デフォルトの名無しさんNGNG
>>43
ウチも、エクスポートの時点でクオータニオンでやってますよ。
ただキーフレーム間の補間アルゴリズムは、クオータニオン+ベジェ
とかいろいろあるようなので、結局その都度専用ルーチンを起こしたり
ちまちまやってます。
0046デフォルトの名無しさんNGNG
ヒープなんてリソースデータの確保くらいにしか使えないでしょ?
標準がタコなのはともかく、自力でmalloc/freeをこしらえたところで
ゲーム用途には酷使できないのでは?
ゲーム中キャラ登場時のみに malloc だとかの用途ならともかく。

こういう酷使利用時には別のなんらかのメモリ管理機構が必要だと思います。
0047デフォルトの名無しさんNGNG
>>46
ウチは酷使しまくりでした。
技術的には問題ないんですが、難しいのはむしろプログラマー間の
コンセンサスの問題でした。いつ開放されるとも知れないタスクが
相互にデータのやり取りを行うという、実に面倒なやつでして。
0048デフォルトの名無しさんNGNG
>>46
そういう時代でもなくなってきたってのが論旨では。
0049デフォルトの名無しさんNGNG
そうそう、オートポインターって、使い物になります?
WEB を巡回していると、オートポインター擁護論を見かけますが、
現場で使えるほどの物なのかどうかは、ほとんど聞く機会が
ありません。

ウチでは、別の手法でポインターのセキュリティーを維持して
いるので、オートポインターには縁がありませんが、
ホントに使える技術なら是非知っておきたいですから。
0050デフォルトの名無しさんNGNG
>>48
ええと、非PC系での開発でしょ? 使いますよ。
0051デフォルトの名無しさんNGNG
オートポインターは結局malloc/freeと同じ問題では。
005250NGNG
失礼、レス先間違いました。50 は 46 へのレスです。
0053デフォルトの名無しさんNGNG
PC系ゲームプログラミングといえば、ホビー色が強いですね。
かたや、非PC系ゲームプログラミングと言えば、ホビーと
言うよりはお仕事色が強い。
恐らくこのスレはお仕事色の話題に強いと思われますので、
ネタ振り。

個人的にホビーでやっているなら、趣味的な高度な管理機構
を構築したり、C++ でトリッキーなこともバシバシできるの
ですが、お仕事でとなると共同作業なのでそうも行きません
よね。

共同作業の場で、回避できないのが、ヘボプログラマー対策。
彼らとコンセンサスが取れないような技術に手を出そうものなら、
開発は難航し、会社が傾きます。
かといって、彼らを教育する時間も資金もない。
このような場面でも、有用な技術やスタイルってどんなものが
あるでしょうか?
0054デフォルトの名無しさんNGNG
>>53
malloc/free など(自作含む)のメモリアロケーションを極力避ける。
いっそ行わないほうが良い。
悲しいし、俺はやだけど、これはひとつの有用なスタイルです。
0055デフォルトの名無しさんNGNG
非PC系 3D の話です。
現状、曲面パッチって使い物になります?
0056デフォルトの名無しさんNGNG
卒研で作ったゲーム、断片化しまくって長くやるほど危なくなってたなあとか思い出しさげ。
0057デフォルトの名無しさんNGNG
そりゃ十中八九断片化のせいじゃねーぞとおもいつつsage
0058デフォルトの名無しさんNGNG
どちらかというとそれリークなのではとおもいつつsage
0059デフォルトの名無しさんNGNG
>ウチは酷使しまくりでした。
>技術的には問題ないんですが、難しいのはむしろプログラマー間の
>コンセンサスの問題でした。いつ開放されるとも知れないタスクが
>相互にデータのやり取りを行うという、実に面倒なやつでして。
えー、そんなケースって非PC系じゃまずないでしょ?
っていうかPC系でもまずないよ。

いつ開放されるか知らないオブジェクトへのアクセスって昔から
様々な安全装置が考え出され議論が繰り返されてきましたが、決定打がないんですよね。
どれもこれも気休め程度の安全装置しかなくて。

0060デフォルトの名無しさんNGNG
ヒープ政治で成功するには、そのプロジェクト内のPGが
一人残らずヒープを知っていることが最低条件。

あとC++が言語仕様として持っている new delete だけじゃ
ゲーム系では物足りなかったりするでしょ?
特にdelete。
ほんとにその瞬間に消えてもらっては困るケースが多いんだよね。
だから結局、deleteとはまた別の死亡メンバ関数を用意したりして。
0061デフォルトの名無しさんNGNG
メインプログラマー以外、MALLOC禁止!!
0062デフォルトの名無しさんNGNG
せっかくなので、Q極のゲーム用疑似マルチタスクシステムを
作ってみよう!か。
0063デフォルトの名無しさんNGNG
>>59
>決定打がないんですよね。
あるよ。
0064デフォルトの名無しさんNGNG
> ほんとにその瞬間に消えてもらっては困るケースが多いんだよね。

そうそう。そいつが描画パケット握ってたりしてね。

この例以外でも、ゲームの世界では C++ のサービスが足かせとなることしばしば。
結局私は、主に C 使って C++ みたいな事を実装してます。手が疲れるの。
0065デフォルトの名無しさんNGNG
>>62
あ、オレそう言うの大好き。
0066デフォルトの名無しさんNGNG
>>64
ってゆうかそれ設計の時点でミスってる可能性の方が高いよ。
だって俺そんなので悩んだこと無いもん。
0067デフォルトの名無しさんNGNG
>>62
「固定長の配列を固定数確保。固定長ではメモリが足りない場合は、
2個連結したタスクを作って、ワーク領域を確保しましょう!」
というようなヘモヘモタスクシステムが世に溢れています。
なんとかしてください。
0068デフォルトの名無しさんNGNG
いや、タスクシステムの最大の問題は・・・・、
「宗派」の乱立にあると思います。
皆が皆、「オレのが究極!」と思って譲らない。
0069デフォルトの名無しさんNGNG
>>64
ん?表示系やったことある?
0070デフォルトの名無しさんNGNG
>ってゆうかそれ設計の時点でミスってる可能性の方が高いよ。
いや、ハードによるメモリ遅延参照は避けられないのよ。
コンシューマーってDMAだらけでね。
じゃーハード設計のミスかというと答えはNo!
時代は演算力ではなくバスの取り合いこそが勝負の決めてなので
そこら中にDMAを張ることくらいしか、パフォーマンスを稼げないのです。
0071デフォルトの名無しさんNGNG
>>49
オートポインターって、std::auto_ptrのこと? 割と便利だよ。よく使ってる。
普通にポインタで持つときに比べて実感しているメリットは
・だれがdeleteすればよいかが明確
・開放し忘れが少ない
0072デフォルトの名無しさんNGNG
>>55
うちでは使ってないですね。試してみたくはあるけど
0073デフォルトの名無しさんNGNG
>>60
>ヒープ政治で成功するには、そのプロジェクト内のPGが
>一人残らずヒープを知っていることが最低条件。
ヒープ知らない人っているんだ... 鬱deathね...

>>60 >>64
>この例以外でも、ゲームの世界では C++ のサービスが足かせとなることしばしば。
描画パケットの例はよくわかります。
こっちでは独自の機構を作ると、かえってヘボグラマーに説明しにくくなるかと思って、
proxyオブジェクトのような機構を用意して、deleteされるとproxyは消えるけど、
描画パケットはすぐには消えないような実装にしています。

deleteのほかにはどんなC++機構が足かせになるんでしょうか?
よければ教えてください。
0074デフォルトの名無しさんNGNG
>>71
なるほど。
では、オートポインターのデメリットはあるでしょうか?
0075デフォルトの名無しさんNGNG
>>74
生のポインタの引き渡しの時に、
よ〜く構造を理解していないと痛い目に遭う。
0076デフォルトの名無しさんNGNG
なるほど。コンシューマー機開発者のためのスレッド、なのね。

現状、3D モデリングツール、モーション作成ツールの決定版と言えば?
MAYA ってみんなどれぐらい使っているんだろう?
0077デフォルトの名無しさんNGNG
>>67
いや、でもそれはある意味正攻法なのでわ。
0078デフォルトの名無しさんNGNG
タスクの管理はどうしてます?
双方向リストを複数本? ツリー構造で全部一緒くた?
0079デフォルトの名無しさんNGNG
>>77
ある意味ってどういう意味ですか?
安全という言う意味?
0080デフォルトの名無しさんNGNG
ていうか、モロに正攻法ちゃう?
これをヘモヘモと言われると、他に何かあるんかなーと。
フラグメンテーション覚悟してmallocでもいいんだけども。
0081デフォルトの名無しさんNGNG
>>78
ツリーです。
0082デフォルトの名無しさんNGNG
メモリ断片化を起こしにくい malloc って、どんな工夫してるの?
0083デフォルトの名無しさんNGNG
>>82
プログラムの初めに一気に使う分の領域を確保して、自分でやりくり。
んなわけねーか?(藁
0084デフォルトの名無しさんNGNG
俺んとこじゃヒープもC++もばりばり使いまくってゲームだしまくってるよ。
断片化を解決できないのは技術力が無い証拠。
リーク検出ツールの1つも作れねぇのかよ。
そんなもんなんとでもなるし、一度安定してしまえば
問題にはならない。

リソースの管理にproxyを使うのは常套手段。
DelphiだってGDIハンドルの管理にはproxyを使っている。
>>73みたいにね。だからデストラクタ以外に死ぬ機構を用意するなんて事はまずない。
ま、ヒープ使わない連中はオブジェクト指向を知らないだろうから、
proxyと言っても知らないだろうけどな。ぷ。時代遅れも甚だしいぜ。
最近のゲームプログラマはレベル落ちたな。
0085デフォルトの名無しさんNGNG
>>84
> 断片化を解決できないのは技術力が無い証拠。
むむ、言いますなぁ。
とか言っといて MMU などのハードの助けを借りてたら笑いますけど。
0086デフォルトの名無しさんNGNG
>>83
正解
0087デフォルトの名無しさんNGNG
>>86
memory pool で断片化を避けているということでしょうか?

C++でmemory poolする場合にはoperator newをクラス単位で乗っ取ったりする
こともあるようですが、具体的なインターフェイスはどうしているんでしょうか。
0088デフォルトの名無しさんNGNG
>断片化を解決できないのは技術力が無い証拠。
解決する方法教えて下され。いや、ほんと。m(__)m
0089デフォルトの名無しさんNGNG
Javaではこういうときもスマートポインタなんていらないじょー。
って、誰も聞いてないね……。
0090デフォルトの名無しさんNGNG
>>89
インスタンス内部で何か外部リソース抱えてたときは、地獄だぞ。
いつガベコレされるかVM作った人以外誰にもわからん、という
ことになる。
いらなくなったらちゃんと解放しようね。
0091デフォルトの名無しさんNGNG
>>90
gcは便利だぞ?知らないの?!
一度使ったら止められないよ。
効率が問題になるならゲーム用のgcでも作る手間かければ?
まあオブジェクトの有効期間をクライアント側から教えてやるのは有効な手だけど。
009290NGNG
>>91
そういう話じゃなかったつもりなんだけど。
IOバッファとかソケットポートとか、Windowの描画とか
の話のつもりだったの。常時稼動のサーバモジュール
だと、知らんでえらい事になるのをよく目撃するから。
Javaから入った素人サンは、「リソース解放」のことを
まったく気にしない人が多いの…

ガベコレ便利は無条件同意っす。
0093デフォルトの名無しさんNGNG
>>85
MMU使えるんですか?
たしか某PS2には載ってたような・・・
使っている人います?
0094デフォルトの名無しさんNGNG
>>91
gcが便利なことはよくわかります。
当方はgcを実際にコンシューマー開発で使ったことはないのですが、
コンシューマー開発での使用経験はありますか?

もしあれば、実装などで苦労した点や問題になった点を教えて
いただけないでしょうか。
特にDMAパケットのように本質的に非同期なバッファの管理でも問題に
ならないのかどうか、非常に興味があります。
0095デフォルトの名無しさんNGNG
>>94
gcじゃないけど参照カウンタなんかは比較的使われますよ。
まあ参照のリリースを忘れたらメモリーリークするけど。
更に一歩進めたauto release poolを用いれば解放し忘れは
ほとんどなくなるでしょう。少しも難しく無いです。
って言うか(モノホン)gcは難しすぎます。 Javaのあの速度は奇跡的です。

後、一般的にgcでシステムリソースを解放というのは無いでしょう。
明示的に解放するべきです。むしろファイナライザで解放忘れを
チェックする保険として見た場合gcは大変便利で安全っす。
0096デフォルトの名無しさんNGNG
デザインパターンって利用する?

0097デフォルトの名無しさんNGNG
3D の話なんすけど。
某2やってていっつも思うのですが、
角度を1周2πのラジアン表記で扱うメリットってなんですか?
何かの計算が高速化されるとか、あるんでしょうか?

1周 1.0 の単位なら、テーラー展開の時発散しにくいし、
1周 65536 の単位とかにすれば、正規化もラクだと思うんですが。
0098デフォルトの名無しさんNGNG
>>96
よく使いますよ。

>>97
計算効率よりは、C標準ライブラリとの整合性なんじゃないでしょうか。
逆になにか不便ですか?
0099デフォルトの名無しさんNGNG
一周を 2*PAI としたときの単位だと

sin(x) = x - (1/3!)x^3 + (1/5!)x^5 ・・・

※ 5! = 5 * 4 * 3 * 2 * 1 = 120

で求まります。
これを一周 2*PAIではなく 1.0 だとかにしてしまうと、sin() 一回につき
定数掛け算(あるいは割り算)が最初に一回だけ余分にかかってしまいます。

最初の最初に発生する掛け算で、しかもその後の収束計算がその結果を参照
する性質のため、ハードウェアで回路組んだとしても「並列化不能」なので
必ずペナルティが発生します。

人為的な仕様ではありません。
0100デフォルトの名無しさんNGNG
>>99
なるほど、ひとつ賢くなりました。ありがとうございました。
0101デフォルトの名無しさんNGNG
デザインパターンって何ですか?

いや、ゲーム屋のウチとしてはほんとに知らんのですよ。
0102デフォルトの名無しさんNGNG
>>更に一歩進めたauto release poolを用いれば解放し忘れは
auto release pool ってなんでしょ?
自動解放?んー、いまいち分からんです。

gcは、予期せぬタイミングである瞬間に大量のメモリコピーが
発生して一時的にフリーズしてしまう!という印象(あくまでも印象)
があるので恐くて使ったことがありません。
0103デフォルトの名無しさんNGNG
>>101
C++やJavaのようなオブジェクト指向言語で頻繁に使われる
オブジェクトの設計をまとめた、定石集みたいなもんでし。
最も有名なのは、経典であるGamma本に載っている23個のパターンで、
それぞれに名前がつけられ、特性が綿密に分析されています。

導入のメリットとしては、過去のいろんなプロジェクトで成功した設計が
すぐに利用できること、プログラマ同士の意思疎通が楽になること
(「あ、そこはObserverパターンになってるから」とか)などがあります。
とまあ、ゲーム系では普及率が低いので、やや真面目に書いてみました。
詳しくは検索エンジンか本屋へゴー!

吾輩もあまり活用できておらず、忸怩たるものがありますが。
0104デフォルトの名無しさんNGNG
しかしゲームもモダンな組み方するようになったもんだな−
0105デフォルトの名無しさんNGNG
モダンなように見えるけど、
足元はあんま変わらない。。。
メモリがどんなに増えていも、
あればあるだけ使っちゃって、
結局シコシコオーバーレイ・・・宇津・・・
0106デフォルトの名無しさんNGNG
>>102
auto release poolと言うのは
普通の参照カウンタ式のオブジェクトは参照を放す度に
obj.release();なんて明示的に解放してやる必要があるんですけど、
あるゴミ箱を用意してあげて、objをそこに登録し、まとまった
時期(mainループの終わりとか)に一気にゴミ箱の中身を全部捨てる
と言うだけのものです。
もちろん、内部の実装は登録されたオブジェクトのrelease()を
呼ぶだけ。実装が単純なだけ高速でしかも安全です。
0107デフォルトの名無しさんNGNG
>まとまった時期(mainループの終わりとか)に一気にゴミ箱の中身を全部捨てる
>と言うだけのものです。
例えばそのmainループの期間が1Vだったとして、ゴミ箱の中身を一度に捨てる
タイミングは1Vおきという意味でしょか?
0108デフォルトの名無しさんNGNG
>107
http://www.fsinet.or.jp/~nito/CocoaClub/article03.html
に詳しい事が載ってます。Cocoaと言うMacOSXのフレームワーク
のメモリ管理の説明なんですけど参照カウンタ式のメモリ管理
を行っているんですごく参考になるとおもいますよ。
基底クラスのNSObject等調べてみるといいでしょう。
0109デフォルトの名無しさんNGNG
んー、こっちもage-
0110普通のななしさんNGNG
> 断片化を解決できないのは技術力が無い証拠。
> リーク検出ツールの1つも作れねぇのかよ。

 マジボケ?
0111デフォルトの名無しさんNGNG
スレの趣旨と正反対だけど、ここで述べられてるような
メモリ管理をPCでやってる人いる?
メインプログラムが質実剛健でも、Direct3DやDirectShow内部で
好き勝手やられちゃって意味がなかったりして…。
0112デフォルトの名無しさんNGNG
>>111
VC++6.0のヒープマネージャはかなり高性能だから……
(スレ違いなので下げ)
0113デフォルトの名無しさんNGNG
Reference Count Pointer ならよく使うけどね。
0114デフォルトの名無しさんNGNG
ゲームプログラムの流れを、タスクで管理してる会社ってどれくらいの
割合なんでしょ?

友人関係に聞くと、大きな会社が割とタスク使ってないような話ですね。
セ○とかコ○ミとか。カプ○ンもタスクとはちょっと違うらしいし。
タスク派はナ○コやSN○ぐらい?
(といっても、でかい所はチームごとで違うのかもしれないですけど)

俺、タスクじゃないと組めないです。
0115デフォルトの名無しさんNGNG
大企業の場合は大抵、チーム単位でその生産工程はまるで違うものになっています。
整備されている団体もあれば、完全前時代的な団体もあります。
ピンキリです。

タスクシステムだけではないですからね。ゲーム開発で必要なものは。
下手するとカーネルOSもどきまで作ってるような連中もいますし。

とにかくピンキリです。
0116デフォルトの名無しさんNGNG
Directorみたいなオーサリングツールは作ってます?
もちタスクシステムと統合。
0117デフォルトの名無しさんNGNG
私は新人なのであんまりよく分からないのですが?
タスクってここ↓で説明されてる奴のことっすか?
http://giggle.cside6.com/hotate/shoot/step03.htm
だとするとなんの役にも立たんような気がします。
これって珍妙なジャンプテーブルっすか?
0118デフォルトの名無しさんNGNG
>>117
ジャンプテーブルというか、簡単なオブジェクト指向みたいなもんですかね。
ワークと実行関数をセットにして管理するという。それをアセンブラの
時代からタスクという名前でやってきたというだけです。
0119デフォルトの名無しさんNGNG
>>118
とすると114の人のように「タスクじゃないと組めない」って人は
どっちかっていうと特殊な人ですね。
0120デフォルトの名無しさんNGNG
>>117
そこの説明はあまり良くない。メリットが見えなくても仕方ないと思うナリ。
この辺はプログラマ板などで散々話題になったたので省略。
0121デフォルトの名無しさんNGNG
s/説明/実装/
かも。
0122デフォルトの名無しさんNGNG
なんだ、そうなのか。これからタスクのお勉強しようかと思っていたのに。
0123デフォルトの名無しさんNGNG
えーっ、今ならC++使わへん?
基底クラスのnew演算子もオーバーロードして。

class HogeTask : public Task {
public:
  void Run() {}
  void Draw() {}
}
taskManager->Invoke(new HogeTask()); // タスク起動するよ〜ん
0124123NGNG
ああ、んでもってタスクのツリー構造には
デザインパターンのCompositeパターンを使用。
0125122NGNG
>>123
えっと、>>122宛のレス・・・だよね。

Hotate's Core見て、タスクってそれのことだと思ったんだけど・・・。
ちがうのかな?

デザパタはしらんので何もいえないんだけど。(勉強したいんだけど・・・忙しさにかまけてる(^^;)
0126デフォルトの名無しさんNGNG
忙しいからか何故だかわからんけど、基本的に勉強不足の人が多いです
この業界。
プログラム能力は上昇していくけど全体的な技術水準は上がらない
からちゃんと勉強はした方が良い。
デザインパターンはOOPに慣れたころに1冊本を読めばOKでしょう。
自分のしてきた事と本に書いてある内容がうまくリンクすれば
理解している証拠。
タスクと言うとかなりの語弊があるけど、123氏のようなやり方は
一般的では無いでしょうか。
でも上に書いてあるtaskManagerはスタティック(グローバル)では無く
内部変数で参照を持つようにしたほうがいいです(当たり前か)。
0127デフォルトの名無しさんNGNG
「タスク」じゃなくて
「オブジェクト」とか「アクター」とか読んでることもありますぞ。
結局やってることは同じなんですが。
0128デフォルトの名無しさんNGNG
タスクをツリー構造にするって、初耳なんだけど、どういうこと?

プライオリティごとにリストにする構造しか知らないんだけど、
ツリー(compositeということはn分木?)にするメリットって
なんなんでしょうか?
今のところ、リスト構造であまり不便を感じていないんですが。

使っているかた教えてください。
0129デフォルトの名無しさんNGNG
↑そのリストそのものを、とあるタスクのメンバに持ってしまえば
システム的にツリーをサポートしなくても、アプリプログラマーが
勝手に実装できるものだと思います。(そのツリーの先頭をキックするのは
そのタスクがやるのはもちろんですが)

0130デフォルトの名無しさんNGNG
>>128
実装方法次第と言えばそれまでですが、ツリー構造だとタスク間に親子関係
持たせて、子タスクを親タスクに従わせたりするのに便利です。代わりに
実行順の制御が弱くなりますが。
0131128NGNG
>>129 130
なんとなくイメージはつかめましたが、もう少し質問させてください。

1.リストではプライオリティ(実行優先順位)で制御している各タスクの
実行順序を、木の巡回順序を使って実装するということでしょうか。

コンシューマーゲームだと、主にVSync割り込みに同期して動く高優先のタスクと、
将棋の思考ルーチンように表示系の合間に動作させる低優先のタスクなどがあると
思います。
ツリーによるタスクの実装では、優先の異なるタスクは異なる木に所属させるような
考え方になるのでしょうか?
つまり、リスト構造では、一つのプライオリティ値に対して一本のリストを
持たせますが、その一本のリストを一つのn分木に置き換えるというイメージ
でしょうか?

2.子タスクを親タスクに従わせるというのは、親タスクが破棄されたときに、
子孫タスクもすべて破棄される、というようなことを指しているのでしょうか?
0132デフォルトの名無しさんNGNG
>>131
いいね。そんな感じ。
別に、n分木ってわけじゃないけどネッ
0133デフォルトの名無しさんNGNG
将棋の思考ルーチンを担当したことありますが、
その時ばかりは思考ルーチン専用のスレッドを作りました。(タスクではなく)

その他、ビリヤードの思考ルーチンも10年以上昔に担当したことありますが、
その時もスレッドでやりました。

思考が終了したときに、特定のエリアに終了サイン&思考結果を送り、別スレッド(mainスレッド)内の
どこかでそのサインを受け取るというイメージです。
0134↑補足NGNG
スレッドとは

1「独自のレジスタセットを持っている」
2「独自のスタックエリアを持っている」
3「予期せぬタイミングで処理権利を奪われる」

であることを前提としています。(他にも条件があるかもしれませんが)
1に関してですが、実際にはBIOSあるいはOSがスレッド切り替え時に
レジスタの中身を適切に入れ替えることで実現します。

タスクとは別次元の並列実現アプローチなので誤解なきよう、、
タスクはあくまでもアプリプログラマー側の工夫で定義も変わ
ってきます(少なくともゲーム業界では)
0135デフォルトの名無しさんNGNG
>>133
漏れんとこもそのタイプのスレッド使ってるよ。
自作したやつ。
0136デフォルトの名無しさんNGNG
ゲーム系のプログラムって作ったこと無いけどスレッドってあるの?
スレッド生成関数が標準装備されてる or 自作でうまいこと作る
どっち?
0137136NGNG
>ゲーム系のプログラム
PCじゃなくゲーム機のプログラムってこと
0138デフォルトの名無しさんNGNG
>>114で述べられてるタスク使ってない大手ってどんな風に
組んでるんでしょう?
私もゲームでタスクを使わず、効率良く組む方法を知らない
のですが。というか今までタスクを使ってしか作ったことな
いのでイメージが浮かばないというか。まさかifやswitch
の羅列って事はないですよね。
0139デフォルトの名無しさんNGNG
>>138
うーむ。
先輩から教えてもらったやり方ですので守秘義務云々に触れる可能性が
あるのでやり方は言えませんが、できます。
現に使っていますし。
ifやswitchを使うわけですが、ちょっとした工夫で驚くほどすっきり組めます。
ってか別に大したもんでもないんですが。
0140デフォルトの名無しさんNGNG
知りたいあげ
誰か他に知ってる人いたら書くのだ。
0141デフォルトの名無しさんNGNG
>>138
いま進めているプロジェクトでは、VSyncに同期して動く表示系の処理は
全てFinite state machineとして設計して、Stateパターンを使って実装
しています。

当初はこの仕組みだけで押し通せるかと思ったのですが、思考系の処理は
やはりスレッドを使わないとパフォーマンスが得られなかったので、
スレッドも併用しています。

他のスタイルもあれば、ご紹介ください。
0142デフォルトの名無しさんNGNG
State patternはクラスの数がやたら増えるのが嫌だ。
だからといってswitchでState handlingするのはいまいちスマートじゃない気がするんだよな。
だれか「俺はこんなスマート&カッチョイイ方法でやってるぜ」て人がいれば教えてくだされ。
0143デフォルトの名無しさんNGNG
>先輩から教えてもらったやり方ですので守秘義務云々に触れる可能性が
>あるのでやり方は言えませんが、できます。
2chなので、ここはひとつ(笑)
その手法、興味あります
0144デフォルトの名無しさんNGNG
>>142
Stateパターンには惹かれるけれど、switchで分岐しています。
スプライトやモデルはcompositeパターンでツリー化して、
擬似タスクで動きを管理しています(皆と同じだね)。
さらにマルチスレッド使いまくり。
スレッドが無いゲーム機にはRTOSを自作。

あと擬似タスクって言い方嫌い。
こんなのぜんぜんタスクじゃない。
0145デフォルトの名無しさんNGNG
おれっちは、State pattern方式で、State自動生成がすき。
0146デフォルトの名無しさんNGNG
>>145
自動生成って、スクリプトファイルかなんかから変換するんスか?
実際の個々のタスク周りのコードの上に
一枚レイヤー作るのは結構いいかも。

理想を言えばオーサリングツールになるんだろうけど。
Macromedia Directorとかデジタルロケとか。
0147デフォルトの名無しさんNGNG
タスクって平たく言うと、それぞれのタスクがもつ関数の内部で
switchとかifで、状態や各イベントに反応してるってやつだよね?

>>117の奴が擬似タスク?なら擬似じゃないタスクってどんなん?
問題無い範囲でおしえちくり。
0148デフォルトの名無しさんNGNG
>>147
switchやifとは限りませんけども。
Stateパターンやクラス内関数へのポインタで状態遷移したり
メッセージ送って連動することもありますよ。

何でタスクかというと、要するにマルチタスクのタスクのことです。
個々のオブジェクトを1ステップずつ高速で動かして
結果的に同時並列的に動いているように見せるというのは、
コオペラティブ方式のマルチタスクそのもの。
というわけで、本家の「マルチタスク」方面を調べてみると、
参考になる情報や実装が転がってるかも知れません。

疑似タスクってのは……
>>117の先の著者周辺のローカル用語じゃないかなあ。
0149148NGNG
(追記)
ぶっちゃけて言えば、
「リアルタイムゲームプログラムは、一種のマルチタスクOSである」
という考え方によるものです。
0150>NGNG
ところで、スタックセグメントをヒープから得た領域にする事ってできるのかな?
できるとなると、スタックセグメントとポインタの交換だけで切り替えられるね。>タスク切り替え
0151150NGNG
あ、領域のコピーが不要な部分で普通にスタック保存するより有利かなと
思ったんだけど。<まあできるとしたらの話だけどね。
0152150NGNG
やべ、スレストッパーになっちゃたみたい・・・?
ちなみに上のはコルーチンのスタック切り替えの実装の話です。
0153デフォルトの名無しさんNGNG
>>150
できる。できないわけがない。
できなかったら、SPを初期化する方法が無いではないか。
>>151
スタックを適時切り替えるの?
そこまでやるなら、マルチスレッドにしたほうがずっと簡単。
0154150NGNG
>>153
あ、できるんですか。ありがとう。
こんど試してみます。
>そこまでやるなら、マルチスレッドにしたほうがずっと簡単。
それをいっちゃあこのネタおしまいよ・・(笑
0155150NGNG
でもDOSの頃なんかはこうやってタスク切り替えしてた人たちもいるんでしょうね。
<386以降の仮想アドレスが認知される前までは・・
0156デフォルトの名無しさんNGNG
オブジェクトの描画順の管理なんかはどうやってるんですか?
やっぱタスクと同じように優先順位ふってるんでしょうか?
0157デフォルトの名無しさんNGNG
オブジェクトの描画順とは??
0158デフォルトの名無しさんNGNG
>156

タスクの優先順位と描画順位が同じなのはシステム的に問題
ありすぎだと思うが、非リアルタイム系ならそれでもいいかも。

どっちにしてもハードパケットなり自前ルーチンなりをちゃんと
したオーダテーブルに繋いで管理しないと駄目なんじゃないかな
ぁ。あ、スプライトハードorZBufferハードなら話は別か。

もしかしてそうゆう意味じゃない?
0159デフォルトの名無しさんNGNG
スプライトハードにしても、リスト接続で優先順位確保するかも。
ZBufferハードでも半透明含んだモデルとかあると、やはりリスト接続必要かも。

>タスクの優先順位と描画順位が同じなのはシステム的に問題
激しく同意。
描画予約パケットをお好みのオーダー(優先順位)に連結予約登録しておき、
全てのタスクの実行が終えたあとに、そのオーダーをタグってまとめて
描画するというのが定石だと思います。
0160デフォルトの名無しさんNGNG
>タスクの優先順位と描画順位が同じなのはシステム的に問題
これって、例えば()はタスクとして
(キャラ移動→キャラ描画)→(敵1移動→敵1描画)→(敵2移動→敵2描画)→・・・
ってこと?
0161デフォルトの名無しさんNGNG
160さんへ

えと、私は159ではないのですが、レスをします。
タスク内での「キャラ描画」は正確には「キャラ描画予約」になります。
実際には描画せず、描画の予約をするわけです。
で、優先順位を確保したければ、描画の予約段階で「n番目のリストに登録する」という
感じになります。

全てのタスクが終了した段階で、これら全てのリストを実際に描画します。

リストは描画優先順位段階数分だけ用意します。

この一般的な手法により描画優先順位維持するために
タスク実行優先順位を考慮する必要が一切無用になります。
0162デフォルトの名無しさんNGNG
うちは普段、コンシューマ系OnlyでPC系厨房(Direct3D厨房)な
わけですが、Direct3Dでの半透明ポリゴンの優先順位って面倒見てくれる
んですか?

Direct3D関連書籍を見た感じ、半透明ソートに関する話題が不思議と
振られていなくて、ふと疑問に感じました。
0163160NGNG
>>161
解説サンクス!なるほど優先順位つきの描画予約っすか、知らんうちにオレもやってたわ(藁
0164デフォルトの名無しさんNGNG
>>146
そおっす、yacc lex 大好き人間として欠かせません。
リアルタイム部分はこれで決まり。
スレッドはバックグラウンド処理だけに使ってます、あれはあれで便利。
0165デフォルトの名無しさんNGNG
>>162
shi3z氏にでも聞けば?(藁
0166デフォルトの名無しさんNGNG
だんだんうちの会社のシステムに近づいてきたな。
まだまだ甘いけど。
0167デフォルトの名無しさんNGNG
>>>だんだんうちの会社のシステムに近づいてきたな。
へ?なんのシステム?
0168デフォルトの名無しさんNGNG
>161

 おっす158です。言いたかった事言ってくれてありがとです。
いまやってるプロジェクトは途中参加なんだけどタスクが実行パート
描画パートに分かれていなくて泣けそうです。はわわー。

 あ、僕の知ってる会社ではこういうゲームタスクを「アクション」っ
て呼んでたりするのですが他の会社では「ワーク」やら「ベース」、
「スプライト」と呼んでいたりします。(目的が微妙にちがったりしますが)
皆さんのところではどう呼んでいますか?
0169デフォルトの名無しさんNGNG
>162

そんな面倒は全然見てくれませんヨ。
解説書に出ていないのは「どうしようもないから」でしょうね。
オブジェクト単位でソートしてあげるぐらいしか方法がないんス。

某2でもその辺苦労しているメーカさん多そうですよねー。

☆ポリゴン単位のソートでVU資源浪費
 ↓
☆ソートによるテクスチャキャッシュのミスヒット多発でDMA資源の浪費
 ↓
☆テクスチャ転送待ちでGS資源浪費

の3段コンボだったりするのでしょうか?
0170デフォルトの名無しさんNGNG
描画予約のが良いかな? ワシのは描画処理と実行処理のパートを
別けているんだけど。
0171デフォルトの名無しさんNGNG
おいらも分けてるけど描画予約ってなんか良さげだね。
0172デフォルトの名無しさんNGNG
OT法とかそーゆーんじゃないの?
0173デフォルトの名無しさんNGNG
>172

OT法っていうかみんなオーダーテーブル前提で話してるじゃん。
なんかイヤミで感じ悪いなー。
0174デフォルトの名無しさんNGNG
>>169
スレ違いな話題だけど
D3DPRASTERCAPS_ZBUFFERLESSHSR の時はソートしなくても良かったりして。
#でも、こんな機能ついてるチップって、アレしかないよね…。

オイラも仕事ではOT、描画予約というかすべてのリクエストを受け付けてから、
通常処理の裏側に隠れるようにしてますよん。
しかし誰でもやってることだろうから鬱。氏んできます。
0175デフォルトの名無しさんNGNG
PS2であれば不透明ポリゴンはOTに登録せず、そのまま出力。
半透明ポリゴンだけOTに登録してソートかけるしか・・・
でもフレームバッファが足りなくなるし。テクスチャ転送は必須。

不透明ポリゴンはテクスチャの種類でソートかければ、
MainRam >> GS の転送量を最小限に押さえることができることに気が付いたのは
大分後になってから。手後れ
0176デフォルトの名無しさんNGNG
>>175
そうなんだよね。PS2では、不透明なものに関しては、
Zソートよりマテリアルソートのが有効なんだよね、処理時間
的には。でも、マテリアルソートするとなるとデータ構造を
結構練っておかないとつらいし。
0177デフォルトの名無しさんNGNG
データフォーマット設計時にパフォーマンス決まりますよね。
いろいろ難しいです。

大抵が不透明ポリゴンなケースが多いのが救いです。
0178デフォルトの名無しさんNGNG
>OT法っていうかみんなオーダーテーブル前提で話してるじゃん。
>なんかイヤミで感じ悪いなー。
はにょ?なんでイヤミなんですか?
少なくとも自分のいたアーケード業界では16Bit時代の時点で既に
単方向リスト描画が定石でした。2D時代でも、それなりに優先順位
の確保は必要ですからね。

リストをスキャンしていくインテリジェンスDMAが一気にポピュラーに
なったのはPS1からだったと記憶しています。

0179デフォルトの名無しさんNGNG
あげとくか
0180デフォルトの名無しさんNGNG
>そうなんだよね。PS2では、不透明なものに関しては、
>Zソートよりマテリアルソートのが有効なんだよね、処理時間

どうゆう事? Zソートしないと駄目でしょ?
0181デフォルトの名無しさんNGNG
不透明物はZバッファがあるじゃん。

で、Zバッファで描画速度を稼ぐなら、なるべく手前オブジェクトから描画して
Zテストではじかれるピクセルを増やすか、
同一テクスチャの描画をまとめてテクスチャ切替を最小にするか。
PS2みたく混載VRAM=テクスチャキャッシュで
フィルレートだけは余りまくりな機械では後者が有効って話。

ときにスレ違いですが、DirectXではどうなんでしょうか。
0182デフォルトの名無しさんNGNG
↑DirectXといっても、DCなりX-BOXなりWindowsなり、いろいろあるので
絞ってもらいたいです。
0183デフォルトの名無しさんNGNG
ただ言えることは、DirectXは至るところで設計ミスあります。
なんといってもDMAまわりをまるで前提としてない設計は
煮ても焼いても食えません。
ハードウェア頂点バッファでは解決できないもの、いっぱいあるんです。
半透明プリミティブのソートだとか。

ソフトでソートしたプリミティブ群は結局、DMAで送るしかないわけで
これら全てをCPUでポーリングするハメになります。
0184デフォルトの名無しさんNGNG
>不透明ポリゴンはテクスチャの種類でソートかければ、
>MainRam >> GS の転送量を最小限に押さえることができることに気が付いたのは
>大分後になってから。手後れ
あ、うちと同じパターン(笑)
こうやって数年後にはPS2の事実上のパフォーマンスは進化していくんだろうな。
0185デフォルトの名無しさんNGNG
DirectX系プログラマっす。フリッカーについてはどうですか?
http://www.geocities.co.jp/Playtown/4914/zatsu/flick/flick.html
こんなページもありましたが。
0186デフォルトの名無しさんNGNG
>ハードウェア頂点バッファでは解決できないもの、いっぱいあるんです。
>半透明プリミティブのソートだとか。
そうなんだよね。半透明プリミティブばかりか、抜き色が存在する
テクスチャを貼ったプリミティブだとかもソートする必要があったり
して、悩みはつきません。
0187デフォルトの名無しさんNGNG
↑アンチポリゴンもソートの必要あるよね。
ソートの必要があるものは、必ずどこかのバッファに書き溜めておく
必要がある。書き溜めるのがいやなら、ポインタ連結したものね。
でも現状、Mainメモリしかないかも。

SCEIといい、NVIDIAといい、(CPUメーカのIntelもそうなんだけど)
どこのメーカも最大瞬間風速ばっかクローズアップしてて困るな。
特にSCEI。MainRAM->GSへ送る、ポインタスキャンDMAをしっかり積んでい
るあたり、敗北宣言っぽいよ(藁
VU1とGSの蜜月度は思ってたよりチープだよな。
0188180 NGNG
不透明と半透明勘違いしてたよ。鬱だ寝よう
(半透明ソート無しって魔法か、、、PowerVRか、、、)

DirectXの世界じゃマテリアルソートは当たり前だよん

半透明だとマテリアルソートが出来ないので、異なるオブジェクトの
テクスチャも1枚にして テクスチャの切り替え抑えたり〜する?
0189デフォルトの名無しさんNGNG
というかフィルレートバブルのこの時代になって初めてPVRが
見直されてるねェ。出たときは散々だったのに。
なんにせよハードの設計ミスでプログラマの睡眠時間が減るの
は勘弁ですわ。DCマンセー。
0190デフォルトの名無しさんNGNG
>というかフィルレートバブルのこの時代になって初めてPVRが
>見直されてるねェ。出たときは散々だったのに。
トータルで見たビデオカードの設計思想として、現状では世界No1はどう見ても
PVR系。2番手がGS、3番手がNV系

PVR:
「物理描画は1Frameの一番ケツの最後だけ」という設計は、求められる1ピクセルあた
りのレンダリングの質が高まれば高まるほど、馬鹿正直にがしがし描画していく
ことしか能のない後者2番手以降との差が開く一方
実際、最近発表された新型NAOMI基盤のデモは脅威

GS:
GSの設計はとにかくフィルスピード
でもフィルレートを上げたかったばかりに、
1ピクセルあたりのレンダリング質は最低ランク

NV系:
馬鹿正直ゴリ押し系である点はGSと同様。
混載すると言っておきながら、できずに苦しんでおり、フィルレートでは
GSの1/5以下。VRAMが豊富だからといって巨大なテクスチャをがしがし使うと
キャッシュミス頻発し、フィルレート低下は半減では済まない。
ハードウェア頂点バッファなどもあるが、GS&VU1コンビにすら融通性において負け
ており、性能もまるで足りない。ただ、頂点データ転送によるMainBUSの圧迫が
ほぼ皆無なのはメリット
今後のUpリリースに期待
0191デフォルトの名無しさんNGNG
すいません、GSは何よりも、テクスチャオペレーションの貧弱さ
が際立っていて、イマドキのチップとしてはちょっと評価は厳しい
んじゃないかとおもうんですけど。(個人的に)
マルチテクスチャ=マルチパスっていうのは今後何気にイタイ
なぁ…DMA資源〜ほにゃらら1の計算機資源を考えると特に。
2テクスチャステージとDOT3オペレーションだけでもあれば…(死

PVRは97~99年当時はなんとも思わなかったけど、捨てて初めて
良さがわかるなぁ(苦笑
0192デフォルトの名無しさんNGNG
ポリが増えてくると、1フレーム分の描画コマンドためなきゃならないPVRアーキの欠点がでかくなると思うが
0193デフォルトの名無しさんNGNG
NVのアンチはソートいらず。

0194デフォルトの名無しさんNGNG
>マルチテクスチャ=マルチパスっていうのは今後何気にイタイ
>なぁ…DMA資源〜ほにゃらら1の計算機資源を考えると特に
2枚3枚馬鹿力にモノ言わせて重ねがきできるのは、GSだけですからね。
(実行部隊1)もひーひー言えば、DMAもひーひ言います。
シングルパスでドカっていけば確かにおいしいのだが。

>PVRは97~99年当時はなんとも思わなかったけど、捨てて初めて
>良さがわかるなぁ(苦笑
というかNAOMIの新しいやつ、何気に現状世界No1でしょ?
任天堂のGameCube(ATI)も凄かったけど、PowerVRのリビジョンアップ版は
既に出荷直前であること考えると、SEGA陣営も技術的には王手をかけたね。
けど、マーケティング的にはカプコンのアーケード撤退など、大失敗。

PVRアーキテクチャの最大の利点は将来的に並列化が容易なこと。
Voodooみたいな命知らずが、連結をしたことあるけど、テクスチャも
並列数に比例して同じ数ぶん、予めコピーしなければなりませんからねぇ
0195デフォルトの名無しさんNGNG
>>193
> NVのアンチはソートいらず

つーか、それってオーバーサンプリング系のやつだろ。
その手の手法は昔から、必要とあらば皆やってるっての。
0196デフォルトの名無しさんNGNG
>>190
ポリゴン描画に限って言えばPVR系が優れているけどね。

でもPVRはZバッファを使ったテクニックが使えないし、
フィードバック系(陽炎、ブラー、残像、被写界深度、リフレクション)の
エフェクトにも向かない。

MGS2やGT3の映像表現に比べて、
DCの映像は画一的な感じがするんだよね。
0197デフォルトの名無しさんNGNG
>>195
今までのオーバーサンプリング系とはひとあじ違うよ
NV20はハードウェアサポートがある
0198デフォルトの名無しさんNGNG
>フィードバック系(陽炎、ブラー、残像、被写界深度、リフレクション)の
>エフェクトにも向かない。
PVR系で動作しているnamcoのソウルキャリバー(DC)を見ればわかりますが、
被写界深度と陽炎以外は実現しています。
被写界深度のやり方にもよりますが、n視点方式ならば、純粋なパワーの問題と
なります。つまりアーキテクチャが原因による有利・不利はあまりありません。

単純にフィルレートの問題です。
gsのデモで被写界深度、陽炎 などが初期から披露されていたのは
gsのフィルレートが無尽蔵にあったからこそです。

そういう意味では nv系も3年ぐらいすればgsに追いつくと思うし、
またfpsをあまり気にしなくても構わないのならば、現状でも可能です。
0199デフォルトの名無しさんNGNG
PVR系のメリットはフィルレートだけじゃなくてプログラマが楽チン
できる事、これに他ならないでしょうよ。半透明に関する様様な悩み
は全て無縁なんですから。(とも言えないケド)
多少のフィルレートの犠牲には目をつぶっちゃいます。というかフィ
ルレートも稼げるんですよねー。おしいチップをなくしたなぁ。

 ま、しかし、最終目的はたかだか640*480のドットを塗りつぶす事
だけですからGSのパワーは不必要だと思ってます。XBOXに搭載される
Xチップが丁度いいバランスじゃないのかなーと。
 ハード設計もDCに輪をかけてシンプルでDMAの子守りとも無縁
っぽいし。
0200デフォルトの名無しさんNGNG
>195

オーバーサンプリングじゃないよ。ちゃんと調べようぜ。
つーか、アンチが必要なのってDACがイカれてる例の
環境だけのような・・・。PCじゃ効果薄いっす。
0201デフォルトの名無しさんNGNG
>>198
DCの残像は半透明オブジェクトの重ね書きで表現されていることが
多いですし、環境マップは予め用意したものを使っているようです。

一度レンダリングした画像をテクスチャとして使ったものは
ありましたっけ。
0202デフォルトの名無しさんNGNG
マルチパスレンダリングできるぞ>DC
0203デフォルトの名無しさんNGNG
Strip や Fan を用いた一筆書きアルゴリズムって、
最近あまり聞かなくなっちゃったけど、結局のところ
決定版と言える手法は、ないってこと?現状。
0204デフォルトの名無しさんNGNG
決定版はないっしょ
0205デフォルトの名無しさんNGNG
>つーか、アンチが必要なのってDACがイカれてる例の
>環境だけのような・・・。
ん?ひょっとしてフルシーンアンチとアンチポリゴンを混同してる?
PS2のジャギ問題は、レンダリング終了後に 10HSyncほどの時間さえ
あれば解決できます。こういう時、馬鹿力全開のGSは役に立ちますね。

ジャギを消したいという理由でレンダリング時にアンチポリゴン選択する
PS2プログラマーはいないよ。ソート自爆が待ってるしね。
0206デフォルトの名無しさんNGNG
>>205
役に立つというより、そうするしかないからやってるだけというか…。
ほかのターゲットでこんなことに気を使う事ないし。
0207デフォルトの名無しさんNGNG
いいじゃん。最終的な映像の特性までコントロールできるんだから。
ドリキャスなんか、みんな画一的なアンチフリッカーフィルタ
かかっちゃうせいで、どのソフトも似た画調になってしまうし。
0208デフォルトの名無しさんNGNG
 いや、というかソフトウェアアンチじゃ根本的な解決に
なってねー気がするよ。いままでまともに消えてるソフト
みた事無いし。ウチも随分まともな方だけど完璧にに消せ
ていませんヨ。

 つーか207はPS2のソフトがどれもジャギジャギだという
世間一般の評価をご存知無いとか?あとDCの画面が画一的
だというなら64やらGBAなんかどうなるんだか。
0209デフォルトの名無しさんNGNG
> 最終的な映像の特性までコントロールできるんだから。
ものはいいようですな。
0210デフォルトの名無しさんNGNG
>いままでまともに消えてるソフトみた事無いし。
海外版リッジ5。

テクスチャなんてどうせ常駐しきれないなら、1-Vの最後くらい
VRAM破壊しても損しないっしょ?
どっちにしてもPS2は逝っていいよ。(もう逝ったという話もあるが)


あと、X-BOX。
UMAにしたのは明らかに失敗だろ?
->DrawPrimitive系() 発行直後のCPU処理が異様にトロい。
インラインアセンブラで調べるとメモリアクセスのみがトロくなる。
これっておそらく、バスがロックされてるんでしょ?
テクスチャもメモリに置くなんて尋常じゃないアクセスが発生するから。

っていうかMSは64の悲劇を知っているのだろうか?
UMAなんて所詮、奇麗好きなソフト屋の考えた設計思想、ぢゃない設計妄想。
0211デフォルトの名無しさんNGNG
XBOXのぷロックダイアグラム

            ´    ヽ___
       .ィ:::::.:.イ l,,____'':::::::::::::::丶
     /ノ;;;//::::i::::´∀` )i::::::::::;;;;丿\
    / ::::::::::...ノヽ,,,/:::丿__/  /__::::.. ヽ
   ./ ゝ ... .ll::::::::巛\) _   ノ ヘ  .丿
   / .::: :::::::::ll:::::::/:::::::::ヽ_ ̄ ̄ ( :::;:;::/
  ヽ :::: .:::::::ll::::ノ:::::::::::::::::::::──__\::";;丶
  / :::: :::::::://:::::::::::::::::::::::::::::::::::ヽ:::::\:・ヽゝ_ ___--''''' ~~ '' ヽ
  /   :::: ◇:::::::::::::::.. ::..     :::::丶:::::\/ヽ:::ヽ....::::.....   ..::..丶
 / :::::...- ノヽ::::::::::::::::::.. ::::..     :::::丶::::ヾ::::::ヽ::::\:::    ..:::::::::...ヽ,,,,,,,,,,,,,,    ,,,,,,,,,,,,,,,,.
 ゝ ⌒)ノ    \:::::::::::::. ::::::..    .: ::::::::i::::ゝ:::::ノ:::::::::\   :::::::::::::.. ..:::::::::::::::,,,,,,,,,,,:::::::::::::::::
  \_ノ      ヽ::::::::::..      ..:: :::::::i::::::::::::::::::::::::::::::.. ....::::::::::::::::::: ;;;;;;;;;;;:::::::::::::::::::::::::::::::
           ):::::::::::    ..:::::  :::::i::::::___--- ̄~:: ...:::::::::::::: ::::/''';;;;:::::;;;;;;;;;;;;::::::::::;;;;;;;;''
          /:::::::::::::::   ...:::.. .::::::/i;;;;;::::::::::::::::::::::::::::: :::::::::::::: ::::/   ''''' ;;;;,,,  ''''''''...;;;.;;
          (:::::::::::::::::......::::::::::::......./ /:::::::::::::::::::::::::::::::: ::::......::::::::::/       ''''''''';;;;;;;;;;;;;,,
           |ヽ:::::::::::::::::::::::::::::::::::/ /::::::::::::::::::::::::::::::::: ::::::::::::::/
            |  :::: ::::::::´:::ノヽ::::::/./::::::::::::::::;;:::::::::::::::::  :::::::::/
          |  :: ::: ::::::::::ヽ ::/ /:::::::;;;;;;''''' \:::::::::  ..:::/
         /ゝ::::::::::/ヽ::::::i/ノ;;...'''''      ゝ::   :/
        /::::::::::::::/ :::/             )  ./
       /::/:::::/..::/             /::::.ノ:(
     /.:/  ノ /              /..::/ゝ::ヽ
    /.:/   |,,;;;|              /:::/  l::::::l
  /`/    .|::::|            /::/     l:::::l
 /⌒ヽl      |::::|          /::::::ソ       l::::l
./____-~      |::::|         /⌒ヽ丿      /:::/
        .  (:::::)          ̄~~       /:::/
           丶(_                  /:::/
          ゝ__ノ                 l::::::ソ
                             /⌒ヾ
                           """"''""'""
0212デフォルトの名無しさんNGNG
>いままでまともに消えてるソフトみた事無いし。

DOA2ハードコアとかEAのEEXはどうです?
前者は全ポリゴンにエッジアンチエイリアス、
後者はDC相当のフリッカーフリーがかかっとりますが。
0213デフォルトの名無しさんNGNG
NV20はメモリコントローラが4つある
X箱のNV2Aも同じなら、UMAの欠点は克服しているハズ
0214デフォルトの名無しさんNGNG
> つーか207はPS2のソフトがどれもジャギジャギだという
>世間一般の評価をご存知無いとか?
だからジャギーとフリッカを消せばアドバンテージになるという考え方もできるが、どうか。
グラフィック面でデザイナー任せじゃない、プログラマが直接関与できる場所だぞ。

だいたいゲーム中はともかく、メーカーロゴとかの静止画でも
フリッカ消し(消せ)てないところってどうよ。
PS2がギザチラとか愚痴る前に、
ギザチラになる根本的な原理を理解してへんのとちゃうか。
0215デフォルトの名無しさんNGNG
>214

 この話題はこれ以上やっても無意味だし、お互い厨房化しかね
ないので勝手に打ち切らせてもらいます。アンチフリッカへの有
効な実装の話題ならOKですが。
 しかし、アンチフリッカーに商業的な価値が出ない限り現状は
代わらないでしょうね。いや、ホントにこんな画面で世に出して
いいのかしらという葛藤との戦いの日々なのですよ。

 XBOXがこの問題を克服しているなら無条件にマンセーなん
ですけどねー。DMAだのUMAはライブラリでラッピングした
ら無関係な話なのでどうでもいいっす。
0216デフォルトの名無しさんNGNG
PS2のソフとがどれもジャギジャギ
ってのは世間一般じゃなくて、2chのゲーハー板での評価
0217デフォルトの名無しさんNGNG
パフォーマンスの問題がないなら、UMAが楽でいいよねー。
0218デフォルトの名無しさんNGNG
>NV20はメモリコントローラが4つある
メモリコントローラって何でしょ?
メモリリーダーが4個所あるっていう意味かな?
テクスチャ4枚重ねがき可能なわけだしね。

けど、ビデオカードのピクセルジェネレータの読み込み先は
キャッシュOnlyなのです。問題はキャッシュをミスったときの
MainRAMからキャッシュへの転送時にどれだけバスをロックするかです。

64の時は、最悪でした。
何せ、ラスターが稼動している時、CPUのメモリアクセスは大抵
ブロックされたので、ほとんど身動きができないのです。
x-boxの場合、cpuにはキャッシュを搭載しているので、ある程度は
緩和されてるみたいで何よりなんだけど、フラットなメモリアクセス
だとかあると、キャッシュなんて気休め程度にしかなりません。

0219デフォルトの名無しさんNGNG
GF3はメモリが4分割されてて
最大で別々の4つのアドレスにたいして同時によみかきできる。
(各バスは32bitDDR)
0220デフォルトの名無しさんNGNG
200MHzDDRなら1つのバスのバンド幅は1.6GB/Sもある。
(今のPCはPC133メモリでも1GB/S程度しかない)
0221デフォルトの名無しさんNGNG
>GF3はメモリが4分割されてて
>最大で別々の4つのアドレスにたいして同時によみかきできる。
↑UMA構成な場合、どうなるんでしょ?
VRAMな場合、CPUがアクセスすることはないので気にならないのですが。
0222デフォルトの名無しさんNGNG
CPUもZリードもテクスチャリードも同時に行えるのでわ?
X箱ってかなりよさげだね。
POWERVRのいいとこどりしてるし。(半透明ソートはないが)
アンチエイリアスもフリッカーフリーも標準だし。
0223デフォルトの名無しさんNGNG
あげ
0224デフォルトの名無しさんNGNG
>222

 アンチはともかくフリッカーフリーのソースはどこから?

つまり、みんなの意見を総合するとX箱はラスタライズ時の
メモリブロックさえかからないなら理想の環境で、ブロックされ
るなら最低の環境と言う訳ですね。さて、どっちなんでしょ?
つーか並列化を推し進める為のハードウェアT&Lと頂点バッフ
ァなんだからそれはないんじゃ?というのは素人意見?
0225デフォルトの名無しさんNGNG
とりあえず
・守秘義務は守る(つっこんだ質問はそれにふさわしい所でどうぞ)
・身元がばれないように気をつけよう。詮索もやめよう。
・プログラムの話をしよう。
みたいな感じでマターリいきましょう。
0226デフォルトの名無しさんNGNG
†「守秘義務」の単語が現れたスレは以後レベルが低くなるの法則†
0227デフォルトの名無しさんNGNG
>>226
だってこのスレだって本当は書いちゃいけない内容がたくさん
書いてあるじゃん。
書いた後に「まずかったかな・・・・・・」って思うこともあるでしょ。
一応契約書には業務上知りえた内容を云々って書いてあったから
仕事で覚えたことは全部駄目ってことなのかなんなのか知らないけど。
とりあえず契約したわけだから守らんとね。
PS2なんかのハードの内容は明らかに駄目でしょ。
0228デフォルトの名無しさんNGNG
>>227
別に実質的に被害を与えるような内容でなければかまわんと思うが。
「ふさわしい所」では「ふさわしい」内容の話題しかないわけだし、
匿名なりの話題もあってよいと思う。

そんなもの関係ないなんて、正論はいうなよ<偽善者
0229デフォルトの名無しさんNGNG
>つまり、みんなの意見を総合するとX箱はラスタライズ時の
>メモリブロックさえかからないなら理想の環境で、ブロックされ
>るなら最低の環境と言う訳ですね。さて、どっちなんでしょ?
>つーか並列化を推し進める為のハードウェアT&Lと頂点バッフ
>ァなんだからそれはないんじゃ?というのは素人意見?
いや、それプロの意見だよ。
とりあえず、自分のところでもラスタライズ時にブロックされることを
確認してしまいました。発売までまだ間があるので、なんとかしてくれる
ことを祈る。
UMAでいて、ハードウェア頂点バッファという構成は、自分の知る限りでは
世界初なんだけど、ペケ箱では裏めった感じ。
0230デフォルトの名無しさんNGNG
守秘義務うんぬんですか。
不法な経路で入手した情報で開発したPSエミュの開発会社とSCEIが
和解するご時世(もちろんほんとにお子様握手ではないものの)なんで、
もう無意味なんじゃないですか?

落とし穴を通知するだけで、みんなもハッピーでしょ?
0231デフォルトの名無しさんNGNG
海外ではGDCなんかでコンシューマハードについても話し合ったり
してるのに、日本では話す機会が極端にすくないよね。
セキュリティ以外の部分に関してはできれば話がしたいよ。
0232デフォルトの名無しさんNGNG
>>231
通りすがりですが、同意しておきます。
0233デフォルトの名無しさんNGNG
守秘義務抜きで語れるところがあるとレベルアップにとても良いのですがねぇ。
0234デフォルトの名無しさんNGNG
俺、書きこみがばれて注意されたことがあるよ。
でも、やっぱり話あえるところがあるといいとは思う。
0235デフォルトの名無しさんNGNG
>レベルアップにとても良いのですがねぇ。
他社にレベルアップされちゃ困るってのが上の判断なんだよ。
それ以上に得るものも多いと説得しようとしたけど疲れてやめた。
俺ってヘタレだな...
0236デフォルトの名無しさんNGNG
>>229
UMAな開発キットはまだ出てないはずだが?
0237デフォルトの名無しさんNGNG
浮動少数は 単精度で十分か? 倍精度必要か?
0238通りすがりの名無しさんNGNG
>>236
> UMAな開発キットはまだ出てないはずだが?

そうそう、私もその部分を詳しく聞きたいですよ。

> 自分のところでもラスタライズ時にブロックされることを
> 確認してしまいました。

これって、UMA 非搭載のプロト版の開発環境上での話なんでしょか?
0239デフォルトの名無しさんNGNG
>>237
ヌルイ私は累積誤差が出そうな所は正規化かけたりしてます。
累積誤差を出しにくくするセオリーってありますか?
0240デフォルトの名無しさんNGNG
>>231
http://www.gamasutra.com/features/20010307/gdc_01.htm
に、
Roundtable: "Porting PC Graphics Technology to the Playstation 2"
ていうのがあった。守秘義務契約を結んでいる人だけしか参加しないから
OKなのか、海外では、事情がやや異なるのか…。
周辺の話題なのでsage.
0241デフォルトの名無しさんNGNG
数年前、守秘義務契約を破ることに快楽を覚えてたshi3zみたいな厨房が
DCのサンプルソースまで公開するほどの馬鹿なことしない限り、企業も
追ってこないだろうて。

ライブラリばら撒くだのハード資料を公開するだの、その手のことしないかぎりね。

0242デフォルトの名無しさんNGNG
 守秘義務契約に付いては微妙な線だけど、匿名性の強い2chの
メリットを生かしてみるのもいいんじゃない?足がつくカキコした人は
そりゃ本人が悪いんだしね。「おめーら守秘義務守れヤ」って横槍入れ
るのは無粋というものですぞい。

つーことで、一個尋ねたいのですが、ミドルウェアライブラリってやつ
使ってるとこあります?将来的なXBOX、GCなんかとの親和性を唄
ってるイケてるライブラリあったら知りたいです。この激動の時代に
1ハード限定のカリカリプログラム書いてる事にちょっと不安を覚えて
マス。
0243デフォルトの名無しさんNGNG
>>242
>>34 にレンダーウェアの評価があります。

ミドルウェアは何かと不便みたいなんで
結局、自社製ライブラリ作るのが一番だとおもいます。
あとは移植とかに備えて、ローレベルとハイレベルの切り分けを
しっかりやる、って感じかなぁ。当たり前か。。。
#とか思いつつ、いっつもローとハイがごっちゃになってしまう俺・・・
#とくに某2になってからさらにごちゃごちゃ・・・宇津
0244デフォルトの名無しさんNGNG
>>1ハード限定のカリカリプログラム書いてる事にちょっと不安を覚えて
>>マス。
そうそう。でもテクスチャエリアが少なくても済む場合(格ゲーなど)
だとか、広大な空間を歩かなければならない場合とで、gsの使い方が
極端に変化するので、一本のライブラリで収められるわけないと思ってます。

あと、かなりのミドルウェアがvu1を一個所も叩いてないです。
このスレにもあったOpenGL for PS2 もそうみたいですが、
アートディンクのアガサもvu1を一回も叩きません。

ライブラリ部隊がアプリ部隊よりも、ローレベルにまるで無頓着な現状なんで
商売するきあんのか?ゴルァって感じですが。
0245デフォルトの名無しさんNGNG
> アートディンクのアガサもvu1を一回も叩きません。
え?、んじゃ、
http://www.the-agatha.com/what_agatha01.html
も嘘って事?(いや、最初から使うつもりは無いけど)
0246デフォルトの名無しさんNGNG
500万ポリゴン出せる商品と、
50万ポリでDC,XBOX、PS2、GC、PCの
同時開発出来る商品、(昔のファルコムみたいだが)
どっちが意義があるのかなぁと思う事もあるのです。

まぁ自前ライブラリもその辺は考えて作ってますけどね。
サウンドやストリーム制御までクロス環境で開発できるなら
ミドルウェアもいいかなーと思ったり。
0247デフォルトの名無しさんNGNG
↑ちなみに「喩え定数」だと思うのでツッコミではないのですが、
PS2ではカリカリしても 10万poly/v が限界です。
0248デフォルトの名無しさんNGNG
>>244
はったり屋のかほりがする
0249デフォルトの名無しさんNGNG
>>248
厨房ですか?(w
0250デフォルトの名無しさんNGNG
おっと、こんなスレがあったとはね。

GSに関して、みんな文句言ってるけど、ゲーム屋に言わせれば今のところ
無敵だよね。ゲーム(っていうか一般的な3D空間)は手前にキャラがデカく
表示されることが頻出。そんとき、フィルレートの低いビデオカードは命取り。
NV系なんかが、ピクセルシェーダだとかに逃げたのはレート稼ぎが頭打ちに
なってしまったからでしょ?(ビット幅×周波数)で比較する単純比較でも一桁
近くの差があるし、実際にデカポリゴンを重ねて表示すると、数倍の差があるし。

1ピクセルあたりのクオリティは安っちぃーくてもいいから、とにかくキャラ数
を出したいだとか(決戦2みたいな)という用途では、単発のフィルレートこそ
が最低必須なんで。
0251デフォルトの名無しさんNGNG
確かにフィルレートは欲しーッス。
NVIDIA系にVRAM混載のハナシってないの?
0252デフォルトの名無しさんNGNG
↑いや、フカシならあったよ。でもいまだに混載できず迷走中。
ピクセルシェーダは実現できてるのに、単発レートを稼げないのは
確かに逃げているようにしか見えない。

リアルタイムでリアルなダイヤモンドでも表示したいのかねぇ?
でも、オブジェが数個しかないというデモ系で構わないんなら
テクスチャいらないし、ソートしてもいいし、でますますGS有利なんだよなぁ
0253デフォルトの名無しさんNGNG
>>252

 とりあえず、16bitオーバーなテクスチャをバリバリ貼りたいよ。俺は。
これが困難な時点でGSには未来は無いと思っております。
デザイナさんの労力を無駄なく画面に出せるって重要だよ。
0254デフォルトの名無しさんNGNG
8bitでOPTPiXじゃダメ?
0255デフォルトの名無しさんNGNG
>とりあえず、16bitオーバーなテクスチャをバリバリ貼りたいよ。俺は。
じゃ貼ってみては?
PVR系以外だってデカテクスチャ張ると、キャッシュ外して、その帯域はあっという
間に落ちますよ。mainram -> GS への転送ペナルティを考えてもなお、GSの
結果的なフィルレートが優位であることには変わりないので。
0256デフォルトの名無しさんNGNG
http://www.watch.impress.co.jp/game/docs/20010326/namco.htm

確かにフィルレートを必要としなければM-RAMにテクスチャ置き放題なんだろな。
にしても、M-RAM -> GS へどれほど転送してるんだろ、これ
0257デフォルトの名無しさんNGNG
っていうか8bitでOPTPiXなら表示されるものの質はほとんど16Bitと
見分けがつかないのでは?

16Bitなどと贅沢は言わないから、せめて普通に8Bitは使いたい。
Vramの中身見たら大変なことになってます。
「ええっ、コレがこのサイズで16色?」デザイナさん、ご苦労様です・・・
0258デフォルトの名無しさんNGNG
16Bitテクスチャを平気でよこしてくるデザイナーは逝って良し。
妥当線は8Bitだと思う。
4Bitだと、職人を揃えなきゃならないので、コストの問題で大企業でも
ないと厳しいと思う。(時間も金も)
0259宣伝NGNG
OPTPiX iMageStudio超高画質減色エンジン
http://www.webtech.co.jp/istudio/is3spec1.html
0260デフォルトの名無しさんNGNG
使ってみた現場の意見,評価きぼーん > OPTPiX
0261デフォルトの名無しさんNGNG
OPTPiXなんてもうあって当然のアイテムかと思ってたよ
0262デフォルトの名無しさんNGNG
つーかみんなPS2マンセなんだ・・・。
俺的にもう、なんていうか、カンベン。
 フィルレートとかそうゆう問題じゃなくて、求められてい
るものを満たす事が非常に困難なハードですね。

 ま、未知なるXやらGCに期待を寄せてみる感じかな。
0263デフォルトの名無しさんNGNG
>>つーかみんなPS2マンセなんだ・・・。
違うよ、DCマンセだよ。
あれの延長線上に、ポリゴンハードの完成形があるのは確か。

けど、今のところマトモな市場があるのがPS2なんで、
こうやってグチスレが出来上がるわけよ。

まじ、PS2だけはカンベンしてほしかった。
うちの部署でのPS2のコードネームはスーパーサターン。
はやく逝ってほしいハードNo1。
0264デフォルトの名無しさんNGNG
>>OPTPiXなんてもうあって当然のアイテムかと思ってたよ
俺も思ってた。
もうディフォルトでしょ?
0265デフォルトの名無しさんNGNG
ところで、みんながOPTPiXって言っているのって
>>259のiMageStudioのこと?
それとも昔ながらのOPTPiX?

うちはまだ後者。
両者の違いがよくわからないんだけど、
iMageStudioにすべきなのかなぁ。
0266デフォルトの名無しさんNGNG
>>261,264
うむ。「高性能な減色ソフトによる8bitへの減色=テクスチャ圧縮」という
考え方ができるかどうかがキモ。
0267デフォルトの名無しさんNGNG
> フィルレートとかそうゆう問題じゃなくて、求められてい
>るものを満たす事が非常に困難なハードですね。

ひそかに同意。バランスとか、直交性に欠けるハードだとは思う。
0268デフォルトの名無しさんNGNG
>>「ええっ、コレがこのサイズで16色?」デザイナさん、ご苦労様です・・・
あー確かに、テクニックすごいですよ、ウチのデザイナさんも。
でもほんと、こういう意味の無い作業は最小限にしてあげたいですね。
容量が無尽蔵に大きくなって(もちろんオンチップDRAMで(^^;) 24bit フルカラーテクスチャの転送のみなんてシンプルなハードになったら
プログラマも幸せかも。

0269デフォルトの名無しさんNGNG
直行性という点じゃ、最悪なハードだと思う。
0270デフォルトの名無しさんNGNG
そいや、サターンってPS1とほぼ同時発売のハードだったですな。
美しすぎるアーキテクチャのPS1とは対照的に泥くささ全開のサターン。
いろいろな理由があったと思うけど、サターンが早死にしたのは開発の
しにくさも一つの理由だと思う。

そして、PS2はサターンをさらに複雑怪奇にしたビックリ箱。
ほんと、逝くなら早めに逝って欲しい。
0271デフォルトの名無しさんNGNG
>>266
不可逆圧縮
たしかに。
>>270
ライブラリーに期待したい
0272デフォルトの名無しさんNGNG
ライブラリで600萬ポリ安定供給されるかな?
ウチはまだPS2の仕事が来てないけど、来るころにはラクになっているといいね。
0273デフォルトの名無しさんNGNG
PVRアーキテクチャに未来はないでしょ。DCの延長線上に完成形って・・・
PS2嫌いなのは勝手だけど、批判は他でやってくれ。サターンが
作りにくいっていえるほど使いこなしてたところがどれだけあったのやら。
0274デフォルトの名無しさんNGNG
>>273
使いこなすのが大変なくらいに作りにくい。
まあ、業界スレもどきになっているのでさげ。
0275274NGNG
>>273
補足
>批判は他で・・・
沈黙は金ですかな。
0276デフォルトの名無しさんNGNG
SONYだけ(正確には東芝)、混載に成功させたばかりか混載サイズも
ガンガン巨大化に成功させてるよな。
だって現時点で16Mだか32Mも混載させてるし。

もしそのスペックで市場に投入したらソフトもガンガン発売されてたと思う。

0277デフォルトの名無しさんNGNG
せめてVRAMが倍あればッスか。
まあ、いずれにせよ致し方ないところで。
0278デフォルトの名無しさんNGNG
>>272
無茶言うなよ。
0279デフォルトの名無しさんNGNG
個人的には大量にメモリを混載させたGSこそが
ポリゴンハードの最終形態だと思ってる。
0280デフォルトの名無しさんNGNG
実はX-BOXいけてる?(藁
0281デフォルトの名無しさんNGNG
>>280
楽そうだね、作るの。 > X-BOX

0282デフォルトの名無しさんNGNG
>>280
どういうところが?
0283デフォルトの名無しさんNGNG
 X-BOXのハード設計はDirectXというライブラリの仕様を
満たすように設計されている訳だから「まずライブラリ仕様
ありき」な世界初のハードなんだわ。
 これで開発し難いハードだったらオワッテルわな。
0284デフォルトの名無しさんNGNG
次混載するハードがでてくるなら、スピード以外にメリットを感じられる
ものが欲しい。たとえば、DirectX8のピクセルシェーダーのようなノリで
ディスプレースメントマップがリアルタイムにできるようになるとか…。
(帯域が太くなればできるでしょ?)
そのときは実機ムービーもribファイルをソースにして…(苦藁
0285デフォルトの名無しさんNGNG
まー、それぐらいならレイトレハード作れって感じですな。
0286デフォルトの名無しさんNGNG
>>283
そっ、そうか。
開発が難しいハードになるって可能性も有ったんだ.....
鬱だ。
0287デフォルトの名無しさんNGNG
>次混載するハードがでてくるなら、スピード以外にメリットを感じられる
>ものが欲しい
確かに、同意。
けど、当分、混載ハードはGSの独断場と見たね。
混載発表から2年経過して、まだヨソからはどこからも出してない。

ゲーム屋が欲しいのは、ピクセルシェーダなんかよりも先に
画面手前に簡単なフラッシュ・イフェクトを描画してもへっちゃらな
フィル・パフォーマンスなんだよな。
0288デフォルトの名無しさんNGNG
そういやフィルレート高いとフレームレートも安定するのかな。
PS2触ってないので知らん。
0289デフォルトの名無しさんNGNG
うー。なんでいつもゲーム機ってパソコンの遥か先を逝ってるんだろう〜?
0290デフォルトの名無しさんNGNG
混載自体はノートパソコン用のチップでは結構前から当たり前だったじゃん
バスの広さがポイント
0291デフォルトの名無しさんNGNG
>290
だー、その混載とは違うんす。
バスをタイムスライスする使い方は混載にあらず。
それをいったら、見方によっては通常のDRAMも「1024ビットのバスを備えた R/W 可能な
ワンチップ混載ユニット」なんていう表現が可能になってしまいます。
0292デフォルトの名無しさんNGNG
NVがフィルレート戦争から離脱したのは一つの方向性だと思うけどね。
量より質を選択することって良くあるじゃん。
0293デフォルトの名無しさんNGNG
http://xboxmovies.ign.com/media/tgs2001/video/DOA3.mpg

DirectXでこれか。いい時代だなぁ〜
0294吾輩は名無しさんであるNGNG
>>292
しかし量を選択するのもまた一つの方向性であるぞよ。

真・三国無双とか決戦IIとか見てると、
あと10倍から1000倍、物量が欲しいよなーとか思うナリ。
0295デフォルトの名無しさんNGNG
PS2って、EE-GSの帯域が1.2GB/sしかないけど、
これはボトルネックにならないの?
0296デフォルトの名無しさんNGNG
GCもメモリ混載ですね。発表は半年前だけど。
http://www.nintendo.co.jp/n10/news/000824/a.html
0297デフォルトの名無しさんNGNG
>>293
酔拳かー。どうせなら北斗神拳とか扱ってくれないものだろうか・・・

スレ違いすまんにゅ
0298デフォルトの名無しさんNGNG
>295

一番のボトルネックだヨ。
実際1.2GB/sも通らないし(1イントで10Mぐらい?)
描画とのスケジューリング考えると泣けるぐらい描画テク
スチャが使えない。この辺はプログラマの技量で結構変動
するので自分のようなヘタレPGには地獄ですヨ。
 よそはどれぐらい通してるのかなぁ。
0299デフォルトの名無しさんNGNG
>実際1.2GB/sも通らないし(1イントで10Mぐらい?)
実はドリキャスのVRAMの帯域より広いんだけどね。
0300デフォルトの名無しさんNGNG
実際、DMAのスケジューリングが大変なほどのテクスチャ転送なんてまともに使えるのか?

特に背景モデルとか、半透明含むものとかは常駐してたほうがメリット大きいような。
デザイナさんが死にますがそれはそれとして、物量差は大きいでしょう。
意外とPS1ライクな使い方でも結構いけるのか。いかがでしょうか?
0301デフォルトの名無しさんNGNG
>>299
だから、シビアなゲームはVRAMへの転送は場面切り替え時にしか使わない。
4Mバイトをテクスチャに使うとして、半分をVQにすれば、仮想サイズとして
18Mバイトになるわけで。PS2とは状況が違いすぎ。
0302デフォルトの名無しさんNGNG
18M分使えれば派手だっただろうけどねえ。
まあ機能があるのと実際に使うのでは違うということで。
0303デフォルトの名無しさんNGNG
>特に背景モデルとか、半透明含むものとかは常駐してたほうがメリット大きいような。
半透明含むものは常駐に賛成だけど、背景なんて一回しかレンダリングしないので
DMA転送させても痛くないのでは?たとえ巨大でも。(いや巨大ならなおさら)

ちなみにX-BOXのデモは何一つ信用できない。試作実機すら、この世にまだ存在しないから。
同様にGameCubeも。特に任天堂は64のデモと称して2048*1920の解像度で動作するマリオ64を
SGIマシンのハイエンドで実演したことがあるという前科一犯。
一方、最初のPS2のデモは、一応、実機上で動いてた。(発売時とスペックもほぼ同じ)
DCもね。

何事も試作機がサードパーティに配布されるまでは信用しちゃいかんよ。
0304デフォルトの名無しさんNGNG
>>303
きびしー
そんな事があったんですね。
0305デフォルトの名無しさんNGNG
あ、試作機ってまだ配布されてないんだ。
SDKだけ?(いや、SDKだけで何するんだって話もあるが)
0306299NGNG
s/VRAMの帯域/VRAM<->PowerVR2間の帯域/

0307デフォルトの名無しさんNGNG
X-BOXで配られてるのって実機より性能の悪いGeForce2&3のPCでしょ
0308名無しさんNGNG
ひょっとして PowerVR の利点を知らない? >299
それはないか。
0309299NGNG
うん。安心してね。
0310デフォルトの名無しさんNGNG
>SDKだけ?(いや、SDKだけで何するんだって話もあるが)
DirectXだけで十分。だたパフォーマンスまではまるで保証されないけど。
TGSでご覧なったように、フィルレートがまるで足らんのですわ。
PS2では有得ないラスター落ちが見れたでしょ?
本機では劇的な性能向上を期待したいところだけど、UMAじゃね。
0311デフォルトの名無しさんNGNG
TGSのやつって実機なんですか?
行けないので、適当にムービー落として見てるだけなんですが。
0312デフォルトの名無しさんNGNG
未だにPC上で動かしてるって、移植超簡単ってやつ?
少しはPCゲーム市場活性化するかな?
板違いスマソ
0313デフォルトの名無しさんNGNG
>>310
>劇的な性能向上を期待したいところだけど
希望としてはどれぐらい?
0314デフォルトの名無しさんNGNG
ラスター落ちってなに?
0315デフォルトの名無しさんNGNG
大手  PS2
中小  X箱
任天堂 GC

今後5年はこれ。
X箱もGCもチップの設計終わってるのでハードに文句言っても仕方ない。
0316デフォルトの名無しさんNGNG
ダメハードの歴史
MSX->SS->PS2

優良ハードの歴史
FC->SFC->PS->DC->XBOX?

傍流ハードの歴史
PCE->MD->3DO->FX->N64->GC?
0317デフォルトの名無しさんNGNG
>ラスター落ちってなに?
2Dフィルレートネックという意味では?
たしかにTGSでのあのX箱が本番だとしたら終わったな。
いくらなんでも、ちょっとした3Dアクションゲーに3体目が
出たらレート落ちが始まるなんて、論外、イッテヨシハードだろ?

技術的にはともかく、政治的にはそれなりの成果が見えてたけどね。
segaとかテクモとかKONAMIをそれなりに囲いこんだあたり。
あとSCEIのトップがX箱の幹部に移動しているというあたりも。

ところで宮田氏ってSCEの頃、どんな仕事してたの?
席上で名指しでクタラギ社長をチクってたけどオトナ気なかったね。
ご存知の方、いましたら情報求む。
0318デフォルトの名無しさんNGNG
>>優良ハードの歴史
>>FC->SFC->PS->DC->XBOX?
SFCを優良ハードにあげる人は、初めて見た。
FC PS DC は納得だけど
0319デフォルトの名無しさんNGNG
>>315
>>317
XBOXの実機はまだですヨ。
XDKとアーキテクチャが変わるから良くも悪くもどうなるか分からない。
0320デフォルトの名無しさんNGNG
>>XBOXの実機はまだですヨ。
仮にそうだとしたら、実機ではさらに絶望的なんですね・・・トホホ。
いくらUMAで工夫しても、描画速度的にはVRAM独立させてるハードには
適わないですからね。
ただTGSのあのデモはいくらなんでも落ちすぎだと思います。
ほんとに、描画ネックなんでしょうか?
0321デフォルトの名無しさんNGNG
ソフトが命よ。そんなことはMSだって分かってるでしょ?
だからこそ、X箱はPS1のエミュレータBIOSを載せてまで上位互換にしたんでしょ?
ランチタイトルなんて、新ハードのカタログ。
処理落ちしたの、しないだの、細かい話だよ、ほんと
0322デフォルトの名無しさんNGNG
>だからこそ、X箱はPS1のエミュレータBIOSを載せてまで上位互換にしたんでしょ?

エイプリールフールネタやね
0323デフォルトの名無しさんNGNG
Xboxに垂直同期割り込みはありますか?
0324デフォルトの名無しさんNGNG
>>320
本当にそうなら、いくらNVIDIAでも実機の方が2倍も性能が上なんて
+と-すら違うほどの大洞は吹かないだろう。
せいぜい同等程度には言うはず。

俺は期待してるよ。
0325デフォルトの名無しさんNGNG
http://www8.freeweb.ne.jp/computer/bbx/
素晴らしいビデオチップが開発されました! NVIDIA終了です!(笑)
0326デフォルトの名無しさんNGNG
↑ってエイプリルフールネタじゃないの?

昔、アナウンスされてときは期待したけど、結局製品化出来なかったじゃん
当時から嘘っぽかったけど(藁
0327デフォルトの名無しさんNGNG
どう読んでもネタです
0328325NGNG
>↑ってエイプリルフールネタじゃないの?
だあああっ、ここでバラすんじゃない!
0329デフォルトの名無しさんNGNG
>>325
ちぇーっ
期待したのにぃ。

(つーか、一瞬まじで騙されそうになっている自分を発見...鬱だ

0330デフォルトの名無しさんNGNG
4/1ネタだから今回は許してやるけど、NVIDIAの電波アナウンスはもううんざりだ。昨年、混載のデメリットをづらづら並べた挙げ句、
いざ4/1になれば、お子様のように指を咥えて混載キボンってか?64の時もそうだったけど、やっぱゲーム屋じゃないとこの設計したハードなんてお呼びじゃないよ。
FPSを上げようという姿勢を感じられん。TGSでのX-BOXはホント、危険感じたぞワシは。
0331デフォルトの名無しさんNGNG
>だからこそ、X箱はPS1のエミュレータBIOSを載せてまで上位互換にしたんでしょ?
>エイプリールフールネタやね
でも、Bleemあたり絶対出してきそうですよね?
下手するともう開発終了したんじゃないですか?

0332デフォルトの名無しさんNGNG
PS1ゲーなんて商品価値ないだろ。しかも秋よ
Bleem自身ドリカス版の製品寿命は去年末までと、言ってたからな
それまでに製品リリース出来なかったけど(藁
0333名無しさんダーバードNGNG
>>FC->SFC->PS->DC->XBOX?

なんですとー?
SFC が優良ハード?
CPU はフタを開けてみれば 8bit だし、
IO 周りなんか、ファミコンに毛が生えたようなもんだった。
CPU のあまりのスペック不足に、アクションゲームやシューティングが
満足に作れず、家庭用=RPG という図式を生むことになってしまった
屈指のクソハードです。

で、何を根拠に XBOX を優良ハードと推測しますか?
東京ゲームショーのデモは散々でしたよね。
0334デフォルトの名無しさんNGNG
>PS1ゲーなんて商品価値ないだろ。
甘いな。BleemでのFF8だとかFF9だとかR4の画面見たことないでしょ?
メチャ奇麗になるんだぜ。
0335デフォルトの名無しさんNGNG
UMAってCPUに十分なキャッシュを載せてればバス競合を緩和
できることを前提にしたアーキテクチャでしょ?
64の時はともかく、X箱ではなんとかなるんじゃない?

#TGS見た後だけに、今風な3DOを見た感じだけど
0336316NGNG
SFC大好きなんです。許してください。
16bitの加減算・論理演算は役に立ったよ。
8bitだと断定している人は、16bitと8bitの切り替えの
タイミングをちゃんと計算していなかったんだと思う。
クロックは遅かったけど。

XBOXが優良ハードだと言うのは、
DirectX8が個人的にヒットしているからです。
X5はクソ、X7までは許せる範囲だったのに、
X8にはマジ惚れです。
0337316NGNG
SFCですが、バンクを超えたアドレッシングモードがあったのも
ポイント高かったです。8bit(相対)、16bit(バンク内)、24bit(バンク越え)の
アドレッシングモードがあって、きめ細かく使い分けるのが好きでした。
ロード・ストアだけじゃなくて、サブルーチンジャンプもできたし。
バンク切り替えで見えなくなってしまうメモリ領域がないのもよかったです。
16Mbitまでですけど。
0338デフォルトの名無しさんNGNG
お約束かもしれんが

>>334
メチャ綺麗になったら、ゲーム自体がおもしろくなる?

とかいいつつ、ローディングが短くなったら面白くなるゲームは
けっこうあったりすると思ってるが(藁
0339デフォルトの名無しさんNGNG
ゲーム屋が設計するハードはセガのアーケードだけしか残ってないのと違う?
セガもチップの設計はほとんど口出してないと思う。
絶望。
0340デフォルトの名無しさんNGNG
>>UMAってCPUに十分なキャッシュを載せてればバス競合を緩和
>>できることを前提にしたアーキテクチャでしょ?
>>64の時はともかく、X箱ではなんとかなるんじゃない?
そう思うのが、CPU屋さんでしょ?
メインRAMにあるプリミティブをDMAが読み出すときには調停が必要なんで
キャッシュなどは一度フラッシュしなければならず、キャッシュがでかくなれば
なるほどこのフラッシュ所要時間も増えてしまう上にバス・ロック時間も増えて
しまい他デバイス(コントローラ、サウンドなど)にもブロックしてしまう。

UMAが奇麗に見えるのは、ソフト屋だけだよ。
見た目の美しさを求めていたらPS2には絶対に勝てないないどころか、
チップのパフォーマンスを台無しにする大惨事だって有得る。

TGSでのX-BOXのあの様は、フィルレートうんぬんではなく、UMAのせいだと
思う。実際、配布されている開発機であれば問題ない描画量だったので。
(あの機材がUMA実装機だったらという仮定だとしたら)

0341デフォルトの名無しさんNGNG


   √ ̄ ̄ ̄ ̄ ̄\
 / ̄          |
/   / ̄ ̄ ̄ ̄ ̄\|      _
|   /         |
|  /   ` | | ´   |
| /  <・)   <・) |だからPS2には誰も勝てないクタ
(6       つ.   | 世界はPS2によって密結合されるクタ
|     ___     | ゲイツのペケ箱は逆立ちしてもペケ箱に過ぎないクタ
|     /__/   |\
|       ___//\
 ー― 、 ,―一
0342デフォルトの名無しさんNGNG
>>341
はいはい、ハード・業界板に帰ってね。
0343デフォルトの名無しさんNGNG
>>340
ていうかそんな事今時ちょっと詳しいゲームマニアですら知ってることですし。
チップの設計してるnVIDIAが分かってないはずは無いと思うんですがね・・・。
なんらかの対策は施してるとは思うんですが。
それにTGSで動いていたのは相変わらずXDK2だったと思うんですけど・・・。
0344デフォルトの名無しさんNGNG
>>343
> チップの設計してるnVIDIAが分かってないはずは無いと思うんですがね・・・。

ええと、340 の方が指摘している問題は全体の設計の話なので、
nVIDIA サイドではどうにもならないと思います。
0345名無しさんNGNG
>>344
XBoxのnVIDIAチップはメモリコントローラも含んでるよ。
つーかnVIDIAじゃない所は、CPUだけって感じ。

メモリ帯域の問題は、2chのDDR SDRAMで、
なんとかするみたいだけど。
0346デフォルトの名無しさんNGNG
>>344
ていうかXBOXの設計はnVIDIAがやってるんだが。
0347デフォルトの名無しさんNGNG
あ、当然主要アーキテクチャの部分ね。
0348デフォルトの名無しさんNGNG
>>XBoxのnVIDIAチップはメモリコントローラも含んでるよ。
ここでいうメモリコントローラの定義をお教えください。
旧ファミコンの時代もバンク切り替えを指してメモリコン
トローラと呼んでいたのでほんとに分かりません。

CPUからもPCMサウンドデバイスからも、ハードディスクやCD-ROMからも
そして目玉のビデオチップからも一つのバスにアクセスされる状況下でも
ペナルティゼロにする魔法のコントローラなんですか?
それともただのブロッキング調停コントローラなんですか?

このスレで騒がれているのは万が一後者だった場合の話ではないでしょうか?
0349デフォルトの名無しさんNGNG
いー?SFCってそんなに良かったか?
メモリアクセスしやすい?
嘘だろ。だって当時は既に68kがあったんだよ?
メガドラはビデオ周りが貧弱だったけど、cpuパワーは当時としては
十分にあったので、願わくばあのハードが市場を握って欲しかった。
PS2は扱いにくいけど、最低性能もそれなりに高いので許す余地あるけど
SFCは煮ても焼いても食えない今考えても最悪のハードだったよ。
0350デフォルトの名無しさんNGNG
PCエンジンはそう悪くもなかった気がするが、どうか。
0351デフォルトの名無しさんNGNG
PCエンジンか…オレが消防の頃だな。
ここの人はどれだけオッサンなんだ?
0352>350NGNG
「どうか」ってなによ?
悪くないと思うならまずその理由を書け。
0353真剣に質問ですNGNG
うちのメーカ、実はX−BOX参入か否か?で連日モめています。
TGS前は、モめていなかったのですが、TGSのあのデモ見た後、
開発部長以下、あのガタガタな前代未聞のデモを平気で展示してしまう
状況に閉口。

うちの部長の意見としては「きちんとしたメーカのタイトル(具体例では
テクモさんのとこのDOA3など)が動いているのを確認できればなんら
問題ない」としているのですが、それを確認してからでは遅いという意見も
あり、既にX-BOXに関わっている方々の意見をお聞きしたいのです。

質問:X-BOXのあのFPSの低さはどういう事情があるのでしょうか?

そもそもPC系のビデオメーカの言う「高フィルレート」とは
あの程度のものなのでしょうか?それともどこかでストール起こしている
のでしょうか?
0354優しい名無しさんNGNG
おまえらって偽者っぽいと思うの俺だけ?
0355デフォルトの名無しさんNGNG
>チップの設計してるnVIDIAが分かってないはずは無いと
所詮チップメーカなんで、いきなりハード全体アーキテクチャまで
設計なんてできるのか?って感じです。
PS2はSCEもいたから完成したんだよ。
EEもGSも東芝産チップではあるけど、東芝だけでは絶対に生まれなかった。
逆もまたしかり。
0356デフォルトの名無しさんNGNG
>>354
おまえだけ。レンダウェアーのダメっぷりは参考になったYO!
0357デフォルトの名無しさんNGNG
X-BOXはもー知らん。
有力ソフトハウスの取り込みには成功しているので巷で言われている
3DOの再来ってことにはならんとは思うけど、そんころにはPS2市場
が熟成していると思うがどうでしょ?
0358デフォルトの名無しさんNGNG
コードウォーリア派な人、手上げて!! in ps2
0359デフォルトの名無しさんNGNG
つか、X-BOXって上手く流通とか、垢抜けた広告とか出来るのかなぁ
板違いっすね
0360デフォルトの名無しさんNGNG
>>358 はーい! そんなに使い勝手悪くないよ。
0361デフォルトの名無しさんNGNG
>>358

CodeWarriorもいいけど、ProDGのほうも気になる。

「開発効率アップするから、買って」と言っても、
「無くても開発できるでしょ。」といって買ってくれない、、、。

もちろん、ミドルウェアなんて問題外、、、。
0362デフォルトの名無しさんNGNG
>>355
SGIの資産は無いのといっしょか?
0363デフォルトの名無しさんNGNG
GSは東芝はからんでなくて、ソニー内製。
半導体オタのくたたん率いるSCEは半導体技術者雇ってる。
SCE=ゲーム屋とは限らない。
0364デフォルトの名無しさんNGNG
>>349
メガドラのビデオ周りは酷すぎ。
デザイナーみんな泣いてたよ。
0365デフォルトの名無しさんNGNG
>GSは東芝はからんでなくて、ソニー内製。
4MBも混載できたGSは東芝の功績っす。

>SCE=ゲーム屋とは限らない。
一度でもPS1(あるいはアーケード互換基盤)と戯れたことある人で
そんなこと言えた人は過去、なかなかいないっすよ。もっともPS2で信用失いつつあるけどさ。
でも、X−BOXの公開デモ見る限りでは、PS2も捨てたもんじゃないと再認識。
隣の芝ばかり見てても仕方ないのだ
0366きえさNGNG
>つか、X-BOXって上手く流通とか、垢抜けた広告とか出来るのかなぁ
>板違いっすね
いやいや、そゆのも重要!!
0367デフォルトの名無しさんNGNG
ツーカ、携帯ハードは割りきった作りしないとダメですかね?
自分のシステムPS1でもちょっときついんだよなぁ。
0368デフォルトの名無しさんNGNG
 うーん、やっぱ末端開発者といえど1技術オタクとして
こうゆう話題で盛り上がれるのは2chのメリットですなぁ。

 ゲームショーの一通りのタイトルは見てみたんだけどPC
からの移行タイトル(Haloとか)はガタガタフレームでXBOX
新規タイトルと思われるものはいい動きをしていたという
印象なんで実際の所、どうなん?という疑問は湧きましたね。
でもなんか経営陣には印象良かったみたいです。

 逆にPS2は大量のテクスチャ技師を確保できる大手と中小の
差を見せ付けられました。正直、いいハードだけどウンザリっ
て感じですね。
0369デフォルトの名無しさんNGNG
PCのタイトルって可変フレームレートに組むからボロボロとか?
Windowsプログラミングではリフレッシュレートの議論が耐えないし

0370316NGNG
>>349

68KはいいCPUだと思うよ。
32bitのレジスタをあれだけ備えているんだから、
悪いわけがない。

だけど65816は16bitと言いたい。
68000の足元には及ばないけど、Z80には完勝している。
Z80で、どれだけ16bitの演算で泣いたことか……。
65816で、どれだけ16bitモードに助けられたことか……。
両方とも使ったことがある人なら、この差は絶対に理解できるはず。

68000は32bitのCPUと張り合いたい。
バスもALUも16bitだけど、ソフトウェアから見たら
32bitみたいなもんだからね。
メガドラは68Kの他に良いところがないからクソだけど。
0371名無しさんNGNG
メガドラはパレットをケチってなかったら、
まだ良かったんだが・・・
0372デフォルトの名無しさんNGNG
うーん。やっぱハードの良し悪しは求められた事をバランス
良く実現できる事だと思う。だからSFC、PS1、DCは
いいハードだと言えると思う。ついでにMDも悪くはない。

ま、ハードの使い易い、使い難いはワシら技術者には二次的
な問題でしかないからな。それに見合うセールスが見込める
なら大抵のの苦労は苦じゃないよ。
0373名無しさんNGNG
メガドラから移った俺には、
SFCのプログラミングは悪夢だった・・・
0374デフォルトの名無しさんNGNG
>>353
海外のタイトルはXDK3でのパフォーマンスアップを見込んで作っているとか・・・。
0375デフォルトの名無しさんNGNG
>>PCのタイトルって可変フレームレートに組むからボロボロとか?
あの〜ですね。
今回のTGSでコンシューマ業界の技術陣を騒然とさせたのはですね、
可変フレームレートによるボロボロうんぬんではなく、大した画像でも
ないのに15FPSだの20FPSだの信じられないレートを見せ付けられたからなんです。

もう60FPS(あるいはPALであれば50FPS)、完全死守が当たり前なんじゃないの?
というのがPS2業界であれば常識なんですね。可変フレームレートうんぬんでは
なく、1V締め切りに絶対に間に合うんだから「可変」だなんて言い訳するなと。
で、万が一落ちたときのため一応可変にしておくけどね〜という保険程度のもの。
それをヘラヘラ笑って可変なんだよんと称して15fpsだのまで落ちるのは
何のための新ハードか分からんのですよ。

PS2は発売の1年前にはクロックだけ違う実機を出せていたのに
発売半年後に控えたX箱はいまだに試作機だのUMAがないかもだの
SDKのみだの、さすがに準備不足なんじゃんないのかな〜?というのが個人的感想だす。
0376デフォルトの名無しさんNGNG
>>こうゆう話題で盛り上がれるのは2chのメリットですなぁ。
ですな。
PS1時代は、何もかもが整備されていたので、この手の情報交換を
そもそも必要としていなかったんですがねぇ
0377デフォルトの名無しさんNGNG
異企業間の開発者が惜しげもなく情報提供しあう掲示板がどこかにあると、、、f
0378名無しさんNGNG
HALOの画面をたいした事無いっていうのは、
見る目が無いんじゃないかな。
0379デフォルトの名無しさんNGNG
↑本来であれば不要なものですね。
「企業内での仕事中に得られた成果は非公開にすべき」という国内の
道徳に自分は基本的には賛成っす。


ただですね、

「開発困難」という長いゲーム業界の歴史でも極めて異例な緊急事態
だと思いますよ、今。
0380名無しさんNGNG
VQ圧縮まんせー
0381デフォルトの名無しさんNGNG
>>379
アメリカなんて全ソース公開とかあるじゃない?
あぁいう文化の方がうらやましいね
恩恵受けてる人も多いと思うんだけど、
日本人は貰うだけってカコワルイよ

0382デフォルトの名無しさんNGNG
>>378
日本じゃマルチテクスチャとか、バンプマップとかの認識が
低いっていうのがあるかも。
とりあえず速く大量に描ければなんでもOKっていうか。

個人的にはPS2にマルチテクスチャがマルチテクスチャが使えない
のは唯一最高に痛い点なんだけど。
0383デフォルトの名無しさんNGNG
>>381
同意。海外のトップ開発者はみんなそうだね。やっぱカコイイヨ。
0384デフォルトの名無しさんNGNG
>>375
3D格ゲーのPG?
0385デフォルトの名無しさんNGNG
商品ゲームの全ソース公開ってカーマックしかやってないはず。
プログラマが会社を設立して経営を握ってる、
商品は下請けでなくオリジナル企画、
ゲームエンジンは自前、
これらの条件が揃って初めて可能だと思う。
0386デフォルトの名無しさんNGNG
>>379

そか、やっぱアレは開発し難いのか。なんか俺だけかと思ってたヨ。
とりあえずさ、メーカとして完璧なアンチフリッカーを実現する方法
を提示して欲しい。なんか今の資料で出来る範囲では全然解決になっ
てねーす。よそ様の大手でも解決出来てねぇ・・・。
0387デフォルトの名無しさんNGNG
↑>>185 のリンク先のじゃダメなん?
そのままではないにせよ。
0388デフォルトの名無しさんNGNG
洋ゲーは一部を除いていまだ30フレームが基本だと聞いたけど・・・。
0389デフォルトの名無しさんNGNG
>>380
PVRのVQはコードブック最大256エントリってのがちと痛いんで
自分的にはS3TCに一票.

>>382
PS2は素人だけどフィルレートが充分ならマルチパスレンダリングで
割と何とかなるんじゃ? αバッファかステンシル無いと辛いけど.
0390デフォルトの名無しさんNGNG
>>386
DC と同じ方法(縦倍密でオーバーサンプリング)なら、
ごにょごにょ。よく調査すべき。(MGS2もこれね)

RGBA32bit, Z32bit だとテクスチャ1Mちょっとしか
あまらないのは勘弁だけど...。


0391デフォルトの名無しさんNGNG
>>365
GSの混載技術はソニー内製ですよ。
ここらへん混乱してる人いますが。
ソニーは0.25μmのDRAM混載技術については
沖電気との提携技術。0.18〜0.15μmについては
富士通との提携技術。0.13以降については
東芝と提携したって最近発表してますね。
0392デフォルトの名無しさんNGNG
>日本じゃマルチテクスチャとか、バンプマップとかの認識が
>低いっていうのがあるかも。
>とりあえず速く大量に描ければなんでもOKっていうか。
勝手に認識低いことにされても。
あのーですね。とにかく速く大量に描けるということはマルチテクスチャを
描画することも結果的に可能ということになるんです。(マルチパスとはいえ)
フィルレートの差がNV系統とGSとでは、現状一桁近い差があるわけで、
数枚ベタベタ環境マッピングした程度では、やっぱりGSが数倍速いわけです。
(環境条件にも依存しますが)

ゲーム屋としてはですね、ダメージなどの表現で、画面全体に赤いセロハン(赤い
αブレンディングの無地のタイル)を貼り付けることが良くあるわけです。(※16Bit時代
以前であれば、パレットチェンジで簡単に済ませたのですが)
こん時、フィルレートの低い環境だと痛いの。
0393デフォルトの名無しさんNGNG
>>392=375
わかったから、その口調どうにかしてくれ。
0394ニセモノNGNG
おお、わかってくれましたか。
0395デフォルトの名無しさんNGNG
>勝手に認識低いことにされても。
現状出ているソフトを見る限りでは、そう思わざるをえないけど…。

>GSとでは、現状一桁近い差〜GSが数倍速いわけです。
GSの速さは確かにすごいと思うんで、フィルレートの心配はしてない
んだけど、マルチパスによって失われるEEの資源(もしくはDMA
の比較的有限な帯域)が非常にもったいない、もしマルチパスできれば
いいのに…と思ったので。
0396デフォルトの名無しさんNGNG
×マルチパスできれば…
○マルチテクスチャできれば…
すんません。
0397デフォルトの名無しさんNGNG
392もボロがでてきたね
0398デフォルトの名無しさんNGNG
今現在、PS2でマルチテクスチャを有効に使ってるゲームってあります?
(海外30fpsのは除く)
いろんなリソース食う割には効果的でない。日本人向けじゃないのかな。
0399名無しさんNGNG
http://www.watch.impress.co.jp/pc/docs/article/20010319/kaigai01.htm
0400デフォルトの名無しさんNGNG
>>390

それはまー常識でしょうなぁ。でも理論的にDCと同じ画面が
出るはずの処理をカマしてもやっぱフリッカーは残ってる気が
する。というか残ってる。そんな事ない?鬱だ詩嚢
0401デフォルトの名無しさんNGNG
>>398

一部の環境Mapやってるタイトルとか。そりゃ普通か。
そもそもウチの環境じゃライトマップ作る手段がないので
やりたくても出来ません。頂点カラーでいーじゃーん。
0402デフォルトの名無しさんNGNG
このスレもすっかり雰囲気変わったね。残念だよ。
0403デフォルトの名無しさんNGNG
>>402
確かに外野の雑音が増えましたね。詐称技術者もチラホラ。
0404デフォルトの名無しさんNGNG
>詐称技術者もチラホラ。
へへへ。同感ですな。
自分は見物して楽しんでますが。(酒のツマミ)
0405デフォルトの名無しさんNGNG
ゲーハー板にリンクされた時点でこうなるのは必然だったのでしょうな。
0406デフォルトの名無しさんNGNG
>>403
あっしはスレッド発足直後からカキコしてますけど、
今のほうがオモロイですし、的外れな議論も少ないと思いますよ。
まぁ、メモリ話をしたかった方々にとってはつまらなくなったかも知れませんが。
0407デフャHルトの名無しbウんNGNG
ええと、392 の方が言っていることは事実で、
PS2 はマルチテクスチャーも可能だし、それ前提でコードを書けば
DMA をパンクさせることなく、しっかりとしたパフォーマンスも出せます。

ただ、ただ問題なのは、これが非常に深刻なのですが、
秒間ポリゴン数だけを追求したがるプログラマーが、マルチテクスチャー
前提のコードを書こうとしないことなんです。
0408デフォルトの名無しさんNGNG
みんな煽るのは止めてマターリしようぜ
0409408NGNG
>>407
あーゴメン。タイミング悪かった。
「マターリしようぜ」は406から上の人達への言葉ですわ。
鬱だ氏脳
0410デフォルトの名無しさんNGNG
>>406

 メモリ話もいいんだけど、実装面まで踏み込むとちょっと
話し難い事が多いからね。上で語ってたのが限度じゃないかな。

 個人的にはX話はもうちょっと続けたい。まだ自分は触れる
環境にいないからさ。こんな所でダベるだけでも楽しいもんです。
やっぱ新しいハードはワクワクするっすー。
0411デフォルトの名無しさんNGNG
XBOX は マイクロソフトの OS を前提としないと聞きましたがホント?
となると、DC に近い感じになるのかな。
0412名無しさんNGNG
4bitIndex圧縮抜かせば、
・PS2は特に無し
・GCはS3TC
・XBOXもS3TC
かぁ。時代はS3TCみたいですね。
PS2もなんらかの圧縮テクスチャに対応してればもっと楽になったのかも。

#確かに最近ゲーハーっぽいね。
0413デフォルトの名無しさんNGNG
>>405
>ゲーハー板にリンクされた時点で
アイタタ。何となくそんな香りがしてきたので見守ってたけど
やはりそういうことだったのね。かなり辛い仕打ちだよなぁ
0414デフォルトの名無しさんNGNG
なるほど、そういうことか。ともかく、ハード・業界板から来た人は
一度この板全体のスレを見て雰囲気を読んで下され。
2ちゃんねるの中でもわりかし真面目なほうの板だし。
0415デフォルトの名無しさんNGNG
>>381
>>385
スレからちょい外れるけど、ゲームにおけるオープンソースについては
こんな考察がありますじゃ。Quakeの特殊性についても触れております。
http://www1.neweb.ne.jp/wa/yamdas/column/technique/gamej_ind.html
0416デフォルトの名無しさんNGNG
随分上のほうの話ですが、
断片化しにくいmalloc/freeのアルゴリズムってどんな感じなんでしょう?
ていうか、動的メモリ管理ってったら
K&Rに載ってるそのまんまのやつしか知らないや。
0417デフォルトの名無しさんNGNG
>>414
ここでの発言がゲーハー板の信者論争(ていうか煽り?)の題材としてコピペされてるみたい。
0418デフォルトの名無しさんNGNG
えと、個人的にはなんだかんだPS2がダントツでリードしているハードだと
思います。贅沢フィルレートの使い方って単純なポリゴン数以外にもフィード
バック系のイフェクトだとか、残像処理だとか、できますし、そしてなによりも
フィルレートの高維持って基本的にはプログラマーの努力でなんとかなる部分って
ホントに限られてきますよね?

逆に環境マッピングだとかマルチテクスチャは、プログラマー側の努力でなんとか
なる部分なので。

一方、ジオメトリ演算の方ですが、
これはポリゴン数よりもグラフィッカーの力量に依存する部分が極めて大きいです。
ローポリでも形とるの上手な人が作って、それなりにリアルなテクスチャ張ってしま
う方が、プログラマーのいう例えば「30%パフォ上がった!」などというカリカリ
は、実は誤差に終わってしまうことが多いと思います。
(※自分もプログラマーなんで、自分で書いてて目が痛いですが〜)
0419デフォルトの名無しさんNGNG
>>403
>詐称技術者もチラホラ

仰る通りで。たった今もその意味がよく分かりましたよ。(ニヤリ
0420デフォルトの名無しさんNGNG
イフェクトage
0421デフォルトの名無しさんNGNG
>>414
荒らしがいないという点やその他の点を考えても
まじめなのは同意だが、ここの板とプログラマ板は
板にいる奴の性格の悪さは他のスレよりかなり高いと最近思う
もちろん俺もオレモナー
0422421NGNG
どもりだと思ってくれ・・・鬱だ
0423デフォルトの名無しさんNGNG
テクスチャの16色への減色が完全に達成できれば、PS2のGS内のRAMも
かなり広大だと思う・・・。もうプログラマーだけではオプティマイジングは不可能ー

テクスチャエリアが間に合った日には、スターを取った時のマリオ同様、
GSはピッカンピッカン光りますよん!
(※でも穴に落ちるとやっぱり死ぬけどね)

0424名無しさんNGNG
>>416
最初の方でもやってたけど、
用途やサイズ(構造体/クラス)に合わせてメモリのプールを
用意しておくのが実装も単純だし効果も大きいと思う。

>>418
最近は特に(DC以降かな)
グラフィックのカリカリ>プログラムのカリカリ
は真な傾向ですな。ちょっとさびしい気がするけど。
0425デフォルトの名無しさんNGNG
このスレッドの今の荒れ具合はスレの最初の方と比べれば一目瞭然。
0426名無しさんNGNG
あんま荒れてるように見えないのは、
おれの感覚が麻痺してるからなのかな。
0427デフォルトの名無しさんNGNG
>>417
アララ。子供の痴話喧嘩の片棒担がされてる状況なのね。萎えるね。
0428デフォルトの名無しさんNGNG
プログラミング技術板だし、190あたり以前の話の流れに戻そうぜ。
0429デフォルトの名無しさんNGNG
GS のテクスチャーを、動的に、しかも高効率に、もといカンペキに管理してるぜ!
って人居ますー?
043053NGNG
>>426
ええ。私もずーっとココ読んでますけど、荒れていないと思いますよ。
DC vs PS2 論争、PS2 vs XBOX 論争、フリッカー論争の臭いも若干しますが、
すべて技術論ベースで、他の板で見かけるような、水かけ宗教論争では
ありませんし。

「非PC系ゲームプログラミング」の話をしてて、
ハード寄りの話が出てこない方が不思議でしょうし、
ハード寄りのマトモな技術話が出来る場所の需要は高いです。

守秘義務に抵触しそうな話題も、OH!X に載ってそうな程度の話までで
皆さん自粛してますし。特に問題は感じられません。
0431デフォルトの名無しさんNGNG
被験者さんぷる1:ドリフの場合
http://www.drf.co.jp/title/int2_1.html
0432デフォルトの名無しさんNGNG
やはりアスキーに対するMSの回答で、このスレで危惧されていた
内容とかぶるものがあるようです。
http://www.ascii24.com/24/news/keyp/article/2001/04/04/624901-001.html

UMAへのバスアクセスの集中の懸念に対して、MS側の回答は
「詳細は言えないけど、うまく対処する」という旨が。
現段階のX-GPUのフィルレートは、実機の数十%程度とのこと。

仮にこの後者のMSの回答が事実だった場合、実機でのフィルレートは
現段階の2倍程度のレートがせいぜいということになり、ちょっと鬱です。

TGSのデモで滑らかに動いていたものでも、ポリゴンモデルがカメラ
手前に近づいてくる瞬間に若干落ちてたりしていたので、フィルレートは
PS2に比べればかなり貧弱な感じです。
0433デフォルトの名無しさんNGNG
XBOXに有り余るほどのPS2並のフィルレートを求めるのは酷ではないかと・・・。
0434デフォルトの名無しさんNGNG
フィルレートってPS2の唯一にして最大の利点なんだし。
0435デフォルトの名無しさんNGNG
>GS のテクスチャーを、動的に、しかも高効率に、もといカンペキに管理してるぜ!
>って人居ますー?

カンペキとは言えないかもしれんが、
前フレームで多く使われたテクスチャは、次フレームでも、
多く使われる可能性が高いという法則で、
VRAMをキャッシュ的に利用してる。
0436デフォルトの名無しさんNGNG
>>XBOXに有り余るほどのPS2並のフィルレートを求めるのは酷ではないかと・・・。
でもゲーム用途の場合、たくさんのキャラを出したり、
広大な空間を表現したりという用途が多いのでX-BOXにも是非、描画力を
求めたいもの。(だって1年半も遅れて出るハードなんだし)

PS2からX−BOXへの移植が困難なタイトルがたくさん出ることになりますね。
0437デフォルトの名無しさんNGNG
>>436
PS2のフィルレートって有り余るというか、持て余してる位だから
それ程のフィルレートが無くてもあまり問題ない。
0438デフォルトの名無しさんNGNG
足りないよりは持て余してるほうがいいなあ。
プリミティブのアップ時とロング時のフレームレートに変化ないほうが
「ゲーム専用機」的にはいいんじゃないでしょうか。

今になって考えてみると、PCのゲームって
フィルレートの制約が画面のつくりに結構影響してるような気がしてきた。
いわゆる洋ゲー的な空間の閉塞感とは関係あるかな? どうだろ。
0439デフォルトの名無しさんNGNG
http://eg.nttpub.co.jp/news/20010405_02.html

リンク先には書いてないけど、XGA出力出来るみたいだね?
0440デフォルトの名無しさんNGNG
本当にフィルレートがXDK2の2倍あるってんなら、まあ必要充分と言ってもいいかな。
0441デフォルトの名無しさんNGNG
>>435
なるほどなるほど。
ソートが必要な半透明ポリとの兼ね合いも面倒ですよねぇ。
これも同時にクリアできれば、やっと PS2 が PS2 らしく
振舞えるようになるってもんですが・・・。
0442デフォルトの名無しさんNGNG
> フィルレートの制約が画面のつくりに結構影響してるような気がしてきた。

その通りだと思います。
BSP ツリー系の技術をベースとした DOOM 系のソフトが
やたら多いのも、フィルレートの問題が関与しているように
思います。
0443デフォルトの名無しさんNGNG
VertexShederが2並列になるんでしょ?
2倍ってのはそれのことでピクセルフィルレートはむしろ下がるよ。
0444デフォルトの名無しさんNGNG
>>442
フィルレートとBSPなFPSが流行るのは関係ないと思うぞ
0445デフォルトの名無しさんNGNG
>>444
フィルレートが低いから、BSP使って描画すべきポリゴン数を減らすってことだろ
0446デフォルトの名無しさんNGNG
>ソートが必要な半透明ポリとの兼ね合いも面倒ですよねぇ。
うちでは半透明で描画されるテクスチャに関してはGS常駐にさせてます。

>BSP ツリー系の技術をベースとした DOOM 系のソフト
確かに、2D描画の面積をなるべく減らそうという発想が
先に来ている技術なのは確かですね。
でも遠くの壁一枚描画をキャンセルするよりも、ちょっとした銃弾が
手前に飛んできて半透明描画するコストの方が高いかもしれないこと
考えると、2Dフィルレートが高いことに超したことないと思います。

どちらかというと、「2Dフィルレートはあればそれでよし」という
よりかは「2Dフィルレートはあって当たり前」と解釈してます。

0447デフォルトの名無しさんNGNG
申し訳ない。
BSPなFPS の“FPS”が何を略か教えていただけると助かります。
当方は“First Person 何か”かなと推測しておるんですが。
0448デフォルトの名無しさんNGNG
First Person Shooterですね。
そういえば、英語圏ではなぜシューティングゲームがshooterになるんだろう。
0449デフォルトの名無しさんNGNG
う〜ん、フィルレート云々以前にゲームの文化の問題もあったり
するんじゃないかなぁ(日本のゲームだと画面切り替えで領域限定
をする必要のないソフトが多かったり)
ソフトレンダーの時代ではオーバードローを極力減らすって目的が
多かったと思うけど、現在ではBSP自身には領域決定以上の意味は
ないと思うけど…。
0450デフォルトの名無しさんNGNG
TGSのデモ見る限り、必要最低限のフィルレートを満たしてないと見た。
MSの発表どおり、仮に既に数十%もパワーを出しているのだとしたら
「開発はしやすいけど、頑張ってもパワーの出ないマシン」という烙印を押さずには
いられない。解像度を320*240に落とすなりして無料FSAAかけるという手を
使うのなら、そこそこかもしれないけど。

既出だけど、フィルレートの低さだけはソフト屋はただただ耐えるしか
できないですからね・・・サターンの時みたいに。
0451デフォルトの名無しさんNGNG
.     §
     ,§、 プラーン
   ,ー./ハ,§
   〈:://二§_
  /ヽ  ヽ ヽ   
  |:: |::..  |  | オマエラ何逝ってるかワカラン
.  |:: |:::.   |  |何がポリゴンだ。何が3Dだ。鬱だ氏ね。
  〈:: 〉::   | / |
.  |:: |::   l  |
.  |:: |____∧_,|
  (((〈::: _ /  /)
   |::::  |::  |
   |::::   |::  |
.   |:: =|::: =|
    |::::  |::   |
.    |:::  ||:::: |
    |__,||__|
    /::__) /::__)
    / / /ノ,/ ))
    ~^~ ~^~
   ____

0452デフォルトの名無しさんNGNG
ゲーハー板の住人が↑こうなっちまったじゃねぇか!
っていうか俺もなりそう・・・
0453デフォルトの名無しさんNGNG
ウゼーゲーハー野郎はほっといて、

なんつーか、出てないハードの欠点をあげつらっても意味無いよォ。
メーカ公証値を当てにせず経験から行くとPS2だと標準的なテクスチャ
密度、サイズ、色数で1イントで50回程度の画面塗りつぶし能力を持っ
てる感じなんだけど、ウチのGeForce2MXだと8回が限度かなぁ。
 公開資料を当てにしたとして、XBOXに搭載のチップじゃこの4〜5倍
つー話なんで、まーこれで足りないってのもなんだかねぇ。

 あと、いわゆるXDKα2はAGP経由で別VRAMへテクスチャ転送みたい
なんで転送が発生したとたんフレームガタ落ちなのはPCと一緒でしょ
ーがないいじゃないかな?
0454デフォルトの名無しさんNGNG
PCだと、1600*1200とかやるからハードでもオーバードロー回避はあるのかも
つっても、怪しいASUSドライバとかでワイヤーフレーム表示すると
結構無駄描きしてんじゃん!って話もあり
0455デフォルトの名無しさんNGNG
そりゃ真面目にカリングするよりも書いちまった方が早い
からだと。最近のPCのボートも言うほどショボくないけど。
まPS2がバケモノなのは認める。
0456デフォルトの名無しさんNGNG
PC用ビデオカードってそんなにフィルレート低いかなぁ。

実際サンプルコード書いてみて試して見ました。
ビデオカードはGeForce2-16M、512*512-32Bitなテクスチャを
10枚、640*480に貼り付けて70fps。これをαチャンネルを
つけてみると40fps。約半分。あららガッカリ。

 これからマルチテクスチャやら圧縮テクスチャやらバンプやら
アレコレやる事を考えるとちょっと低すぎですなぁ。XDKα2相
当とかのGeForce3が今の2倍、XChipとやらがその数割増しな
ら許容範囲かな。
0457名無しさんNGNG
XBoxのCPUって頭でっかちすぎる気がするんだけど、
キャッシュもあんまおっきく無い見たいだし。
メモリアクセスすると他の部分にも影響を与えるみたいだし・・・
そのへんどうよ?

#まだXBox箱から出してないよ・・・鬱だ・・・時間をくれ・・・
0458デフォルトの名無しさんNGNG
>>色数で1イントで50回程度の画面塗りつぶし能力
解像度は640*480pixel という条件下ですか?
0459デフォルトの名無しさんNGNG
  / ̄ ̄ ̄ ̄ヽ
  /  / ̄\  ヽ
 /   /  \  ヽ、、、ヽ
 |  /  (>)   (<)| |
 |  |      つ  | |
 |  |    ___  | |  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 |  |    \__/  | .| < ポリゴン?逝くだけならテキストで十分
 ゝ‐イ\.   ・   /ノ  \______________
   /     ̄ ̄ \
   | |        | |
   | |        | |
 |⌒\|        |/⌒|
 |   |    |    |   |
 | \ (       ) / |
 |  |\___人____/|   |
 |  |    ∵ Y∵∵ |  |
    /∵∴,(・)(・) ヽ
    (∵ __/ ○.ヽ,, ,)
     丶1 三 | 三 !/
      ζ, __|_.  j
       i  \_/、 j  ぼっきドラえもん♪ おまえら3Dヲタクはイッテヨシ
       |     八   |
       | !    i 、 |
      | i し " i   '|
     |ノ (   i    i|
     ( '~ヽ   !  ‖
      │     i   ‖
     |      !   ||


0460デフォルトの名無しさんNGNG
更新はえーな。ケース1dream factoryの場合2
http://www.drf.co.jp/title/int2_2.html
0461デフォルトの名無しさんNGNG
↑ドリームファクトリィか・・・
それにしても、なんだかんだ楽しそうに開発してるなぁ〜
0462うげぇNGNG
DirectXなんだけど、レンダリングステート変更を最小限に抑える為
テクスチャでソート掛けるのは基本だと思うんだけど、

その他のレンダリングステートとか、TexureStageState&ColorState
はどう扱ったらいいかな?

ステート変更の必要性をチェックする為に、直前の描画のステートとの比較する
と思うんだけど、比較項目多いよね?。レンダリングステートを一旦登録して
インデックスNo.で管理&比較つーことになるんだろうけど、色々面倒じゃない〜??

そこまでしないと駄目?(テクスチャ以外も馬鹿正直に毎回設定したら遅いんだろうか?)
0463デフォルトの名無しさんNGNG
>>462
あとステートブロックつかうとか?
スレ違いなのでsage.
0464ゲーハー野郎NGNG
>>453は厨房。

このへんが
>XDKα2はAGP経由で別VRAMへテクスチャ転送
0465デフォルトの名無しさんNGNG
>XDKα2はAGP経由で別VRAMへテクスチャ転送

使ったことないんで判らないけど、そういう風にも作れるんじゃないの?
GeForce2or3に64M積んでいたら、ゲーム中は転送しなさそ
うなキもするけど、HDDにテクスチャ積むとかいってるし。
0466デフォルトの名無しさんNGNG
>>464

まいった。一応下っ端開発者と言えど厨房扱いされる言われはねーぞ。
http://www.watch.impress.co.jp/game/docs/20010401/xbox3.htm
ウチはまだXDKどころか参入も決まってないんでこうゆうニュース
ソースから情報得るしかないからな。
ま、バカ正直に信じるのも厨房くせーと言えばそんなもんか。
0467ゲーハー野郎NGNG
ま厨房云々は単に煽りたかっただけだ。
とにかく>>466はゲーハー板レヴェルなのでこっちへこい。受け入れてやる。
0468デフォルトの名無しさんNGNG
PS2 で、実用レベルのバンプマッピングもどきって、
現状どれぐらい可能なんでしょうか?
加算+減算 のエンボス系ではさすがに限界が・・・。
0469デフォルトの名無しさんNGNG
>>457
> XBoxのCPUって頭でっかちすぎる気がするんだけど、

あっしは速い分には歓迎ですが、
なんでよりによって、今さら x86 系??って感じですよぉ。
汎用レジスタが 8 本しか無いんですよね。もぅ。
0470デフォルトの名無しさんNGNG
>>469
P3セレロンのネイティブでもそうなん?
SSEとか、MMXで増えているのをそのまま使えるんじゃないかな?
0471デフォルトの名無しさんNGNG
>>469
内部に仮装レジスタ大量に持って、アウトオブオーダー実行とか
ムチャな技術を搭載して頑張ってスペックを上げてはいるのですが、
少ない汎用レジスタをメモリに退避する部分だけはアウトオブオーダー
の誤魔化しが効かず、大きなネックになっている模様。

x86系って、過去のしがらみ大全集みたいな CPU だよね・・・。
0472デフォルトの名無しさんNGNG
>>470
SSE や MMX 用に拡張されたレジスタは、特殊な演算用途のモノなので
そのような場面以外では使い物にならないですよ。
・・・・そういや MMX はもう出番ないね。XBOX では。
0473デフォルトの名無しさんNGNG
↑汎用CPUの中で、
EmotionEngineやSH4の命令セットの秀逸性に慣れてしまうと、
x86はお子様セットにしか見えないのは仕方ないです。
頂点演算はT&Lにお任せするということで、大目に見てあげましょう。
(アプリケーション内でのベクトル演算や、各種定数Matrixの生成く
らいは、さすがにx86でも間に合います)
0474デフォルトの名無しさんNGNG
政治的常識を考慮して、
X-BOXにEEを載せろとは言わないから、せめてSH4を載せて欲しいなぁ。
SH4って現段階だとクロックどれくらいなんですか?
仮に300MHz程度だったとしても、Pen3の700Mhz程度では歯が立たないと思うんだけど。

0475デフォルトの名無しさんNGNG
MSの言うUMAバスアクセス集中にともなう混雑を解消をしてある
というのは空威張りだと思うんですが。根本的な解決手段といったら、
VRAMを別に設けることくらいしかないですし。
DMAを工夫したところで、結局タイムスライスにしかならないし。
ビデオチップからのテクセル参照頻度を考えると割に合わないと思います。
0476デフォルトの名無しさんNGNG
>>468
DOT3もどきなら、3Pass(XPass,YPass,ZPass)もしくは6Pass(+-X,+-Y,+-Z)
+1Passで可能だと思います。ただ、こんだけマルチパスしてDiffuseだけ
とかだと泣けてきます。(藁
いくらGSが速くてもEEが先にネをあげてしまうでしょう。
PS2だとせいぜいエンボスが実用的な所じゃないかと思うんだけど、
いい方法があったら聞いてみたい。
0477デフォルトの名無しさんNGNG
おー、CS開発系のスレがあるとは。記念かきこ。

質問なんですが、DirectXにてテクスチャハンドルを切り替える手段は
->SetRenderState(D3DRENDERSTATE_TEXTUREHANDLE,??) 経由でしか
存在しないのでしょうか?

他にも、グーロ/フラット の変更や アンチOn/Off やαの設定も
->SetRenderState()経由での変更方法しか見当たらず焦っています。
0478デフォルトの名無しさんNGNG
>>477
PC系は別スレ逝け
0479デフォルトの名無しさんNGNG
>>475
これ読んでみて。解決法が書いてあるよ。
http://www.nvidia.com/Pages.nsf/Lookup/LightspeedMemoryArchitecture/$file/LightspeedMemoryArchitecture.pdf
0480名無しさんNGNG
SH4ってキャッシュが小さくてアホだから、結構遅いよ。
今時1wayの命令8kB+データ16kB。
日立の技術者になんでSH2から退化してるのかって聞いたら、
複雑な奴は200MHzで動かせなかったんだって(笑)
P3より速いなんて事は無いと思うな・・・
0481デフォルトの名無しさんNGNG
>>478
XBOXかも。
0482デフォルトの名無しさんNGNG
>>481
APIの仕様から考えて、そうではないと思いますよ。
>>477
一般的なDirectXの話題ならこちらのスレッドほうが
期待通りのレスが付きますよ。
■鬱だ氏のうDirectX
http://piza.2ch.net/test/read.cgi?bbs=tech&key=966655286&ls=10
0483デフォルトの名無しさんNGNG
>>474
SH5 400MHzがあるぞ。
http://www.superh.com/sh-5_microprocessor_architectu.html
PDF
http://www.superh.com/elecen.pdf
0484デフォルトの名無しさんNGNG
>>474
間違えた。
PDFはこっちを見てくれ。
http://semiconductor.hitachi.com/superh/sh5_whitepaper.pdf
0485デフォルトの名無しさんNGNG
SH5か。量産効果やL2キャッシュも期待できるのか? というのがあるよね。
L1キャッシュまでは733Mhzで動くんでしょ? X−BOXがマルチスレ
ッドでキャッシュ破壊しまくりじゃなければ、すごい速く動くんじゃないかなぁ?
0486デフォルトの名無しさんNGNG
SHとPEN3じゃ全然性能が違うよ・・・あんまり過度な期待は
抱かないほうがいい。もともと用途が違うんだし。
0487デフォルトの名無しさんNGNG
MIPSまんせー
0488ゲーハー野郎NGNG
>>475
あなたも是非ゲーハー板にいらっしゃーい。

このへん
>DMAを工夫したところで、結局タイムスライスにしかならないし。
タイムスライスではなく、バスを32bit*4にスライスしました。
昔の話です。

そーゆー意味で言ったんじゃ無いやい!という場合は文章表現法を精進のこと。

さっきゲハ板とんでたけどね。
0489ゲーハー野郎NGNG
>>475
あなたも是非ゲーハー板にいらっしゃーい。

このへん
>DMAを工夫したところで、結局タイムスライスにしかならないし。
タイムスライスではなく、バスを32bit*4にスライスしました。
昔の話です。

そーゆー意味で言ったんじゃ無いやい!という場合は文章表現法を精進のこと。

さっきゲハ板とんでたけどね。
0490デフォルトの名無しさんNGNG
>>487
マジでっ!?
0491デフォルトの名無しさんNGNG
3Dゲーム用途という点では、x86系では、SH系やEEなどのCPU相手には
勝負すらできません。キャッシュうんぬんの話ではなく、レジスタ数や
命令セットの段階で致命的に足りないからです。

ただ、X-BOXの場合、ジオメトリ演算をPen3でやろうなどという無謀な
ことは流石に考えていないので、トータルでは致命的な弱点というわけ
でもないと思います。
0492デフォルトの名無しさんNGNG
XBOX の T&L とやらは、CPU からどれぐらい近い位置(アクセスしやすい位置)
に搭載されてる機能なんでしょうか?
やっぱコプロ接続クラスは欲しいかなぁ・・・。
0493デフォルトの名無しさんNGNG
>476
もっと頭を使いましょう。

これ以上は言えないが、そのうち判るであろうよ。
0494デフォルトの名無しさんNGNG
>>493
ヒントをおしえて。ALPHAの設定によっては1PassでDOT3もどきができるってこと?
0495デフォルトの名無しさんNGNG
>>494

2path。これ以上は…
0496デフォルトの名無しさんNGNG
>XBOX の T&L とやらは、CPU からどれぐらい近い位置(アクセスしやすい位置)
>に搭載されてる機能なんでしょうか?
>やっぱコプロ接続クラスは欲しいかなぁ・・・。
pen3が貧弱なのでコプロクラスのものが欲しい気持ちは分かりますが、
T&Lはvu1よりも遥か遠いところにあります。
また、その演算力もvu1にはほど遠いものがあります。
でも並列度は高いので、その分のメリットは大きいと思います。
0497デフォルトの名無しさんNGNG
>>495
てことは1path(間違えてた。鬱)でフラグメント単位の明るさ
が設定できるって事か…(1pathはベーステクスチャだよね?)
サンキュ、ちょっと考えてみるよ。
0498デフォルトの名無しさんNGNG
>>491
ゲハ板にいらっしゃい
0499デフォルトの名無しさんNGNG
>質問なんですが、DirectXにてテクスチャハンドルを切り替える手段は
>->SetRenderState(D3DRENDERSTATE_TEXTUREHANDLE,??) 経由でしか
>存在しないのでしょうか?
MSにも確認しましたが、ないようです。
X-BOX ではなく、PCへの移植する部署へ回された時、このDirect3Dの
下位レベル仕様の素人臭さにプログラマーの誰もが目を疑いましたが。

本来であれば、最低頂点プリミティブのメンバに
「テクスチャ参照ブロック」や「フラット/グーロ フラグ」や「アンチか否か?」
などの情報メンバを含ませるべきです。が、D3DTLVERTEXにせよ、D3DLVERTEXにも
この手の雑情報メンバが存在しません。もしこのメンバ追加によるプリミティブサイズ太り
を気にするのならば、「モードチェンジ特殊プリミティブ」というのを追加するなどの
解決方法があった筈なのですが〜

このD3Dの仕様は致命的だと思います。
マテリアルソートしたところで、各マテリアルごとに DrawPrimitive類を発行
する必要があり、またそのためにCPUはポーリングせねばならず非効率すぎます。

一度作成したプリミティブ群くらい、一度のキックで全自動で行ってくれないと
プログラマーも不便だし、ハードリソースにも非効率。
0500デフォルトの名無しさんNGNG
↑なお補足ですが、
->SetRenderState() でのテクスチャハンドルの切り替えに要するクロックを
計測してみたところ約300サイクルでした。(GeForce256 Pen2 300MHz)
(cpuのサイクル数であり、外部バスのクロック数ではありません。またPen3
などの最近のCPUで計測してもサイクル数はほとんど変化が見られませんでした)

ところが同じテクスチャハンドルを指定して ->SetRenderState()を
呼び出し続けてみると約半分の150サイクルでした。このことから
内部で、カレントテクスチャハンドルとの比較くらいは行っているみたいです。
0501デフォルトの名無しさんNGNG
>>499
まとまった変更なら、StateBlock使うのはどう?
#たぶんそれでも遅いのかな。
0502デフォルトの名無しさんNGNG
>>500
>呼び出し続けてみると約半分の150サイクルでした。
キャッシュにヒットしてただけだったりして。:-P
0503デフォルトの名無しさんNGNG
↑いやいや、さすがにそんなヘマしません(笑)
ちゃんとソースレベルでどちらも並べて書き並べ、念のため
コンパイラが勝手に最適化していないか、アセンブラソースまで
出させて確認しました。

->SetRenderState() 50個並べたコードを100回Loopさせ、
5000回呼び出した時のCPUサイクルを計測しました。
0504デフォルトの名無しさんNGNG
>>497

良い線ですね。まぁちょっと考えれば判るはず。
これの応用はいろいろとあったりして…

ところで、pathじゃなくてpassが正解だあね。
穴があったら入れ…はいりたひ。
0505デフォルトの名無しさんNGNG
シェーディングやアンチって、プリミティブ単位でを変えるもんか?
マテリアルもそう。1シーン1種類で駄目か?
こういった設定を頻繁に変えるのなら別だけど、変えないのなら
Direct3Dのステートの方が有利なんじゃないかな。最初に1回設定するだけですむし。
テクスチャ変更に要するオーバーヘッドが大きいことは、MSも欠点として認めてる。
だからDirect3Dでは、テクスチャを一つにまとめてテクスチャソートをすることを推奨してる。
このぐらいは許容範囲だと個人的には思うけど。
0506デフォルトの名無しさんNGNG
あとマテリアルソートがしたくないのなら、
頂点フォーマットに頂点色含ませればいいよ。
データサイズを選ぶか、ステート変更回数を選ぶのかは
好きな方にすればいいね。
0507デフォルトの名無しさんNGNG
>>499
>「テクスチャ参照ブロック」や「フラット/グーロ フラグ」や「アンチか否か?」
>などの情報メンバを含ませるべきです。
それは無理な話。レンダリングステートで持たせておくべきだ。
ステートマシンについて少し知識を付けることを勧める。少しでも
知識があれば(俺も少ししか知らない)上のような発想は出ないだろう。
大体、頂点単位のシェーディング設定なんてどうやったら実現できる
のだろうか?ポリゴン単位ではなくて?
煽りでは無くて、少し冷静になって考えてみよう。
0508デフォルトの名無しさんNGNG
日本のメーカーがDirectXに弱い理由が
わかったような気がするよ。
0509デフォルトの名無しさんNGNG
スレ違いなのにもりあがっとるのう
0510デフォルトの名無しさんNGNG
えー、DirectXネタは「鬱だ氏のうDirectX」スレで頼みます。マジで。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=966655286
Xbox固有のネタはこっちでもいいけど。
0511デフォルトの名無しさんNGNG
>>507さん

499な方のこの発言↓がいわゆるステートマシンというものではないでしょか?
>>「モードチェンジ特殊プリミティブ」というのを追加するなどの
>>解決方法があった筈なのですが〜

>マテリアルもそう。1シーン1種類で駄目か?
現状であれば駄目というほどでもないけど、今後、つらくなってくると思われます。
やはりこれからは、フィードバック系のイフェクトなども使われるように
なるので、Zバッファに頼ることなくある程度の自前Zソートが必要に
なってくる思います。そうすると、ビデオチップに流し込むプリミティブ順序が
異なるテクスチャブロックやマテリアルを持つプリミティブがご茶混ぜになって
しまうので、やはり最低限の情報はステートに持たせるのではなくプリミティブ
に持たせる設計が有利になると思います。(各プリミティブサイズが大きくなると
なんらかのバス帯域を圧迫しかねないので断言はできないですが)

499さんはプリミティブサイズの肥大化を懸念してますが、シェーディング情報
だとかは 数bitあれば納まる代物ですし、テクスチャ参照も32Bitもあればお釣り
が来るので、各プリミティブに混入させてもダメージは皆無だという意見が自分のところの
職場の了解です >>Direct3Dの低レベルプリミティブに関して

>>510さん
DirectX固有ネタっぽいですが、内容的には汎用的なのでこちらに書き込みました。

0512デフォルトの名無しさんNGNG
>それは無理な話。レンダリングステートで持たせておくべきだ。
>ステートマシンについて少し知識を付けることを勧める。少しでも
>知識があれば(俺も少ししか知らない)上のような発想は出ないだろう。
>大体、頂点単位のシェーディング設定なんてどうやったら実現できる
>のだろうか?ポリゴン単位ではなくて?
>煽りでは無くて、少し冷静になって考えてみよう。

499は
>「モードチェンジ特殊プリミティブ」というのを追加するなどの
という具体的解決方法を提示しているし、これこそがいわゆるレンダリングステート概念です。
問題はその実現手段なわけですね。
たかがレンダリングステートの変更に、わざわざD3D device のメソッドを呼び出さなければ
ならないのは、確かに致命的な癌であることには自分も同意です。
0513デフォルトの名無しさんNGNG
>>511-512
今忙しいから暇になったら詳しく書きます。
DirectXのことは知らないんだけど、例えばDrawPrimitive中に
レンダリングステートが変わると言うのは許されているわけ?
多分DrawPrimitive中はレンダリングパイプラインにバカスカ
頂点データをおくっていると思われるけど、例えばそこで
テクスチャーの参照を変えたりできるような設計の方が問題
あると思うよ。ステートチェンジはCPUのオーバーヘッドの問題以上に
パイプラインの分断(言い方はこれであってるのかな?)という
大きな問題があるからね。それを頂点毎?
あと、トライアングルを書いてる途中(ラスターに送っている最中)に
テクスチャー参照もしくはアンチエイリアス設定が変わったら
どうなると思う?俺には想像がつかない。
さらに、テクスチャーには凄い数のパラメータがあるけど
それはどこで変更するの?タイリングの設定、フィルタリング
の設定、プライオリティー、さらにマルチテクスチャーだったら?
必要最低限な情報ならおそらくそのプリミティブにも含まれている
んじゃないかな。
頂点座標、頂点カラー、法線、uv、こんなもんか。
レンダリングステートってのは言う間でも無く色々あるわけで、
それの変更はレンダリングパイプラインを止めないといけない
(用語の使い方に自信無し)。ステートマシンの基本構成図を見て
みればすぐに分かると思う。
これ以上つっこんだ説明はできないけど、「モードチェンジ特殊プリミティブ」
は非現実的な要求なんですよ。
スレ違いにダラダラ書いてごめんなさい。でもこの位は基本
なんじゃないでしょうか?cs,pc関係なく。
あと説明もムチャクチャか。下げよう。
0514名無しさんNGNG
面毎にテクスチャとマテリアル指定ってのは、
機能が限定されたハードでの発想のように思える。
32bitで十分とか言ってるけど、マルチテクスチャがあるし。
(あ、だからPS2ってシングルなのかな?)
まぁ確かに移植には面倒そうだが。
0515デフォルトの名無しさんNGNG
頂点毎にテクスチャをコロコロ変えていたら
テクスチャキャッシュが寸断されそうだな。
効率性を追及したら結局はステート方式に
なるんじゃないの?
あとプリミティブデータの増大はかなりよろしくないと思うよ。
参照にすればいいとか言ったって、アドレス分の4Byte?ぐらいは
増える訳だし。100万単位のポリゴン数になったらシャレにならんと思う。
0516通りすがりの名無しさんNGNG
> スレ違いにダラダラ書いてごめんなさい。でもこの位は基本

いえ、一般コンシューマ機と比較した上での DirectX の話ですし、
面白いのでいいんじゃないですか?
ステートマシンという考え方にも興味が湧きました。

さておき、
>「モードチェンジ特殊プリミティブ」は非現実的な要求なんですよ。
ここのところが良くわかりません。

ここでいう「モードチェンジ特殊プリミティブ」ってのは、
パイプラインが停止しても良いので、必要な時に、必要なパラメーター
のみを変更する事が可能なプリミティブのこと、でしょうか?
0517デフォルトの名無しさんNGNG
そもそも頂点フォーマットってのは、その名の通り
ポリゴンを構成する頂点のデータフォーマットってことだろう?
頂点フォーマットに付け加えるのに、相応しいデータ相応しくないデータってのを
考えればわかりやすいんじゃないかなあ。
0518名無しさんNGNG
>ここでいう「モードチェンジ特殊プリミティブ」ってのは、
>パイプラインが停止しても良いので、必要な時に、必要なパラメーター
>のみを変更する事が可能なプリミティブのこと、でしょうか?

それだったら、頂点データとマテリアル変更のリストでも作って、
自分でやれば、済むんじゃないの?
0519デフォルトの名無しさんNGNG
つーか普通、DrawPrimitiveの上にモデル処理層を作るだろ?
0520デフォルトの名無しさんNGNG
あげとくかな。age
0521デフォルトの名無しさんNGNG
ステート変更したら当然パイプラインは停止するし、
518の言っているように、
パイプラインが停止するなら頂点データに持たす意味なし。
ディスプレイリストみたいで使いやすくなるって程度ですね。

DrawPrimitiveで痛いのは、OpenGLと比べると
異常にオーバーヘッドが大きいことです。
OpenGLなら100頂点程度繋げばピーク性能出るらしいんですが、
DrawPrimitiveじゃ500頂点くらいはまとめないと
性能出し切れないらしいです。
0522傍観者ですNGNG
>>512
> たかがレンダリングステートの変更に、わざわざD3D device のメソッドを呼び出さなければ
> ならないのは、確かに致命的な癌であることには自分も同意です。

なるほど、やっと話がつかめてきたよ。

つまり、Direct3D にて、描画チップ内の描画パラメーターを変更するには、
いちいち描画チップを停止させて、CPU 側でパラメーターを設定しなおさ
なくちゃいかんので、CPU と描画チップが並列動作できないから、
こりゃ終わってますなぁ。という話なんですね?

完全に並列動作させるには、描画パラメーターをプリミティブで変更できる
必要があって、このようなプリミティブを「モードチェンジ特殊プリミティブ」
と、ここでは呼んでいると。で、あってるかな?
0523デフォルトの名無しさんNGNG
>CPU と描画チップが並列動作できないから
コマンドキューって知ってる?
0524デフォルトの名無しさんNGNG
ええとですね、
でっかい 3D ポリゴンのカリング処理、入れてますー?
手前のカリング、左端のカリング、右端のカリング、上端のカリング、下端のカリング。
これらすべてこなすと、面倒な処理を含む大規模なルーチンになりますよねぇ。
「ヤツのあの狭いメモリに載るかな・・・?」
「ヤツは分岐苦手だぞ・・・?」
などなど、いろいろと苦悩することに、なりますよね。

果たして、入れるべきか、入れざるべきか。
ウチは入れてるよ、という方、いらっしゃいます?
0525デフォルトの名無しさんNGNG
しかしこんなに低レベルでいいのか。(笑)
0526デフォルトの名無しさんNGNG
>>523
>コマンドキューって知ってる?

ではキュー使ったとして、
描画の終了を、いかにして CPU は即座に感知するのでしょうか?
0527デフォルトの名無しさんNGNG
>>525
オマエモナー
0528デフォルトの名無しさんNGNG
>>526
君みたいに基本がなってない人に教えるのは難しいと思う。
Direct3DをDrawPrimitiveのオーバーヘッドが大きいと非難するのはいいが
描画チップが止まるから駄目だなどと文句をつけるのは見当違いでしかないよ。
0529デフォルトの名無しさんNGNG
呼び出しのオーバーヘッドがでかいのって、
やっぱCOMインターフェースだからかね?
0530デフォルトの名無しさんNGNG
>>526
499 の方が書かれているように、D3D の描画の終了待ちはポーリング
しかないのだそうです。だとしたら、まぁ、死亡ですな。
で、やっと本題なんですけど、X-BOX でも同様の問題を抱えているのか?
ということなんですけど・・・。
0531デフォルトの名無しさんNGNG
描画の終了待ちなんてしないって。

0532デフォルトの名無しさんNGNG
>>524
モノによるのでは。カメラの移動範囲がある程度特定(もしくは固定)でき
るものだったらシザリングするより、あらかじめ割っといて、量を出す方が
お得だと思う(<超主観)
壁に近づく迷路タイプのものは、でかい壁のみをシザリングありで描いて
内部の装飾品(あまりシザリングが必要なほど近づかないと思われる
細かいモデル)はクリップのみとか。
クソレスでゴメン。
0533524NGNG
>>532
おおっと、「カリング」じゃなくて「シザリング」でした。失礼失礼。
シザリング、つまり手前に来たポリゴンを、切断して描画するべきかどうか。

やはり、シザリングするもの、しないもの、使い分け路線しかないのかねぇ。
0534デフォルトの名無しさんNGNG
>>530
ここで言ってるパイプラインの待ちって、
ラスタライザに送るまでの変換パイプラインの事でしょ?
さすがに、描画終了待ちなんかしてたら、
使い物にならないよ。
0535デフォルトの名無しさんNGNG
>>531
なんかややこしくなってきたので確認・・・。
D3D 上で、フラットポリゴンを 1000 枚描画した後に、
グーロポリゴンを 1000 枚描画したいとしましょう。
手順はこんな感じでしょうか。

(1)SetRenderState で、フラットポリゴンの状態に設定。
(2)DrawPrimitive 実行。1000 枚のフラットポリゴンが描画される。
(3)SetRenderState で、グーロポリゴンの状態に設定。
(4)DrawPrimitive 実行。1000 枚のグーロポリゴンが描画される。

で、問題は(2)と(3)の間で、この間 CPU はボーっとしてるしかない
んでしょうか?、ということなんすけど。
0536デフォルトの名無しさんNGNG
一部でDrawPrimitiveコールがハードウェアの描画終了を
待つとかいう認識でもあるのかしらね?
そんな訳ないんだが。
0537名無しさんNGNG
現状、無限に広い世界を表示する際の、賢いアルゴリズムって
何があるでしょうか。
かつては BSP ツリーが持てはやされましたが、近頃はさっぱり
聞かなくなりました。BSP ツリーの手法は脈々と引き継がれて居るのか、
それとも、新たな新機軸が打ち出されたのか。
0538デフォルトの名無しさんNGNG
>>535
だから何のためにコマンドキューがあるんだ?
CPUレベルでポーリングする必要が何処にある?
0539535NGNG
>>536
DrawPrimitive がノンブロックで終了しても、
描画チップが(2)にて 1000 枚のフラットポリを描画し終わらないと、
CPU が(3)の SetRenderState を実行できないとしたらアウトです。
0540デフォルトの名無しさんNGNG
根拠ねーけど、こんなのだと漠然と思ってたが。
SetRenderStateの指示もキューに置く。そのときHALデバイスは渡された値を保持しておく。
もしGetRenderStateされたら、HALデバイスが保持している値を返す。
(常に最後にセットされた値が帰るということ)
0541535NGNG
>>538
てことは、(1)〜(4) の処理はコマンドキューに投入されるだけで、
(1)〜(4)はノンブロックで通過できるということですね?
0542デフォルトの名無しさんNGNG
CPU待つんじぇねぇの? PCのDXだけどMSがそう説明してたよ
V-TUNEで最適化しろっていってたよ
0543デフォルトの名無しさんNGNG
えー、DirectXネタは「鬱だ氏のうDirectX」スレで頼みます。マジで。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=966655286
0544デフォルトの名無しさんNGNG
いちいち描画待ちを待たないといけないとしたら、
タイルアーキテクチャなんて、どーなるんだよ。
0545デフォルトの名無しさんNGNG
s/描画待ち/描画終了/ ...鬱
0546デフォルトの名無しさんNGNG
>537
描画したい「無限の広い世界」にもよるなぁ。
部屋が廊下でつながれているダンジョンタイプなら、(ドアの前後で画面
切り替えが発生しないようなものなら)依然としてBSP+Portalは候補の
一つとしてあげられるし(ただ、ハードウェアレンダリングの昨今では、
QUAKE1とまったく同じ方法というわけにはいかないと思うけど)
広いランドスケープに建物が建っているタイプならランドスケープは
プログレシブメッシュ(今なら曲面で持ったほうが良いのかな?)+
Octreeで建物の絞込み+建物をLODで描画とか。
0547デフォルトの名無しさんNGNG
>>542
>CPU待つんじぇねぇの? PCのDXだけどMSがそう説明してたよ
>V-TUNEで最適化しろっていってたよ

まじっすか・・・。
搭載ビデオカードによってタイミング変わるのに、V-TUNEで最適化?
もはや支離滅裂ですな。

仮に XBOX の Direct3D HAL ではキューが有効だとした場合なんですけど、
テクスチャーデータまではさすがにでかくてキューに置けないですよね・・・。
つまり、テクスチャー転送はアーキテクチャ的にどうしても避けたかった?
だから nVIDIA は、リスクを背負ってまで UMA を選択したのかも。
「XBOX の UMA は、Direct3D のしがらみによるもの」だったのかも。
0548デフォルトの名無しさんNGNG
でも、Direct3Dじゃないと作れないよー
0549デフォルトの名無しさんNGNG
なんかわざと間違った事書いて無いか?
テクスチャデーターをキューってなんだよ。
0550デフォルトの名無しさんNGNG
>>547
支離滅裂はお前
0551デフォルトの名無しさんNGNG
>(1)SetRenderState で、フラットポリゴンの状態に設定。
>(2)DrawPrimitive 実行。1000 枚のフラットポリゴンが描画される。
>(3)SetRenderState で、グーロポリゴンの状態に設定。
>(4)DrawPrimitive 実行。1000 枚のグーロポリゴンが描画される。
>で、問題は(2)と(3)の間で、この間 CPU はボーっとしてるしかない
>んでしょうか?、ということなんすけど。
もちろんDrawPrimitive()自体はノン・ブロック関数です。
ですが、SetRenderState()は最後に発行されたDrawPrimitive()が終了する
まで待機しています。したがって、あなたのいう(3)のSetRenderState()にて
事実上、ブロックされます。(つまり残念ながらあなたの懸念は的中です)
0552デフォルトの名無しさんNGNG
>>548
nVIDIA は DirectX 以外の代替手段用意してないの?
0553デフォルトの名無しさんNGNG
>>551
> 事実上、ブロックされます。(つまり残念ながらあなたの懸念は的中です)

なるほど。
こりゃ下手すると描画ポーリングに要1スレッドですか。
たかだかポーリング用のスレッドチェンジで L2 キャッシュが
破棄されて、XBOX の UMA アーキテクチャーに大打撃とか?
0554デフォルトの名無しさんNGNG
DrawPrimitive終了=描画終了では無い
0555デフォルトの名無しさんNGNG
×2)DrawPrimitive 実行。1000 枚のフラットポリゴンが描画される。
○2)DrawPrimitive 実行。1000 枚のフラットポリゴンの描画コマンドが登録される。

なんで、この違いが判らないかな?
0556デフォルトの名無しさんNGNG
>×2)DrawPrimitive 実行。1000 枚のフラットポリゴンが描画される。
>○2)DrawPrimitive 実行。1000 枚のフラットポリゴンの描画コマンドが登録される。
>なんで、この違いが判らないかな?
↑ドライバベンダに対するMSの規定ではそのように定義されていません。
「::EndScene()までに描画すれば良い」という指示があるだけです。
ドライバのローカル領域が溢れた、だとかステート変更時にビデオチップ側(というかボード側の制限)により
ハンドシェイクが必要な場合など、状況に応じて溜めておいたプリミティブを
::EndScene()呼び出しを待たずしてフラッシュすることがあります。

そのタイミングの一つが ::SetRenderState()だというのが 551さんの結果記載なのでしょう。

Zソートが必要な場面で、SetRenderState() 呼び出しとDrawPrimitive()の呼び出しの
入れ替えを頻繁にせざるを得ないDirect3Dの設計に救いがないのは、諦めましょう。
所詮ソフト屋の作ったインターフェイスです。
同じソフト屋でもせめてゲーム業界のソフト屋に作らせれば、当たり前のものが仕上がったんでしょうけど。
0557デフォルトの名無しさんNGNG
はぁ?
だから描画コマンドをキューして、EndScene()までに描画するんでしょ?
まともな3Dカードなら、SetRenderState()で描画待ちなんかしないよ。
0558むむNGNG
EndScene()までというか、
EndScene()が描画終了待ちだね。
なんかどうしても描画待ちさせたい人がいるようだけど(笑)、
PowerVR系なんかは、EndScene()を呼ばないと、描画自体を始めないよ。
0559デフォルトの名無しさんNGNG
え?マジっすか?EndScene()ってノン・ブロックじゃないんですか?
そのシーンでのプリミティブ数に比例して、そこでCPUはブロックされてしまうのでしょうか?
0560デフォルトの名無しさんNGNG
>はぁ?
>だから描画コマンドをキューして、EndScene()までに描画するんでしょ?
>まともな3Dカードなら、SetRenderState()で描画待ちなんかしないよ。
ここでいう描画コマンドのキューは、物理的にはどこに存在するのでしょうか?
メインラムですか?それともグラフィックチップの受け口ですか?
0561デフォルトの名無しさんNGNG
下らない言い合いはここでさせといて新スレでもたてますかね?
0562デフォルトの名無しさんNGNG
計測してみたよ。
DrawIndexedPrimitiveの直後に、SetRenderStateを3回呼んで、
処理時間を計測してみた。
モデルはSDKのイルカ君。
もし描画待ちをしてるなら、最初のSetRanderState()だけが、
凄く時間がかかる筈だ。

1回目2.79ns
2回目1.40ns
3回目1.40ns

たしかに一回目は少し遅いが、
この程度なら、パイプライン待ちといえるだろう。
ちなみに、解像度を変えても値はほとんど変化しなかった。
0563デフォルトの名無しさんNGNG
つーかDirectXに文句たれるのなら、作ってるゲームでDirectXの限界を認識してからにしろや。
プログラムもしねー、DirectXなんか使ったこともねー、そんな段階でよくずうずうしく文句なんか
言えるもんだ。
それがイヤならPS2でスキニングすら出来ない独自エンジンでも組んでろ。

*************************DirectX関係終了*******************************
0564吾輩は名無しさんであるNGNG
なんかコード書いてみて結果を載せてみりゃ
一発で話が通じるような話題のような気がするナリが。
吾輩はDirectXやらぬので、実際のところ知らぬし興味もないが。
0565デフォルトの名無しさんNGNG
>>564
まあX−BOXの実行結果は載せられないのかもね。PC上のエミュなら海外で
無償提供しているXDKを使えそうだけどね。どうでもいいようなので終了か。
0566デフォルトの名無しさんNGNG
そういや、PS2でワンスキンモデルって難しいの?
0567デフォルトの名無しさんNGNG
>>566
簡単。
0568デフォルトの名無しさんNGNG
コマンドキューのフラッシュと描画待ち(ブロック)はまた別。
キューのフラッシュごときでブロックされたらたまらんぜ。

キューはバッファに一定の量が溜まるか、
EndScene()コールによって明示的にフラッシュされるが、
これは実行のブロックではないので注意。
もちろん、多少のオーバーヘッドは発生する。

CPUレベルで本当に実行がブロックされるのは、
ハードウェアリソースを実行ブロック防止フラグなしで
ロックした場合とか、VSYNCした時とかくらい。

そもそも、そういう時以外に実行をブロックする意味がない。
0569デフォルトの名無しさんNGNG
>もし描画待ちをしてるなら、最初のSetRanderState()だけが、
>凄く時間がかかる筈だ。
>1回目2.79ns
>2回目1.40ns
>3回目1.40ns
なんか無意味な計測結果を載せているリアルな厨房が〜
結局、パケットはどこかで「CPUが」転送せねばならないので
どこかでブロックされるのは確かです。
うちのPC環境ではSetRenderState()では観測されなかったけど、
EndScene()で数十万クロックも待たされました。
このクロック数はそのシーンで登録した頂点数にほぼ比例。

X-BOXに関しては565指摘のように契約絡みで計測結果載せられないし、
なにより試作機ということで無意味なデータになるしね。
ただ「パケット転送をCPUがやらねばならないのでどこかでブロックされる」
とだけ書いておこう。

SGIマシンだとか家庭用ゲーム機であれば、
このあたりDMAで手際良く転送してるけどね。

T&Lの融通性がもっと上がればこの手の転送ネタはどうでも良くなるのだけど、
現状はまだまだでしょ?
0570デフォルトの名無しさんNGNG
>>569
はぁ?SetRenderState()で待つのかって話だろ?ちゃんと読んでるか?

EndScene()で、描画待ちするのは当たり前だよ。
その後に、バッファフリップするんだから。
ゲーム機でも終了してなければ、描画終了を待つのは同じだぞ。
0571デフォルトの名無しさんNGNG
つまり、SetRenderState()やSetTexture()は、
パイプラインのペナルティ以外では、
ブロックされないって事でいいのね。
パケット転送って何だろ。描画コマンドのセットアップの事かな?

0572sageNGNG
569はエセだから、気にしない方がいいよ。
0573デフォルトの名無しさんNGNG
>>はぁ?SetRenderState()で待つのかって話だろ?ちゃんと読んでるか?
横ヤリになりますが、そういう議論じゃないですよ。
どこかで「転送待ち」が発生するのか否か?というのが大筋の流れでは?

>>EndScene()で、描画待ちするのは当たり前だよ。
>>その後に、バッファフリップするんだから。
>>ゲーム機でも終了してなければ、描画終了を待つのは同じだぞ。
んー、この3行でホビーな方であることが丸出しですね。
語気を強めるのはもうちょっとだけ勉強してからの方がいいですよ。

ゲーム機の場合、まずプリミティブの描画登録をします。
登録が終わったら、プリミティブ列の先頭をキックします。
で、その後、描画終了待ちなどせず次のフレームの処理へ
移行し、新たなプリミティブ描画登録を始めてしまいます。
この間、別スレッドなりDMAが、前のフレームで登録された
描画予約リストをラスターへバスの隙間をぬぐって転送します。

表示領域のフリップ時に必要な描画終了待ちは、1フレーム前に
登録された描画リストのバックグラウンド転送を待つのであって、
そのフレームで予約登録された描画リストを待つのとは根本的に
違います。(CPUネックの場合は1フレーム間に登録された描画
終了待ちは「ゼロ」になります)

あー、なんか説明下手すぎる文章。
でも、大まかにはこんな感じです。
0574デフォルトの名無しさんNGNG
X−BOXの試作機とはいえ、突発的に 0.5秒ほど固まることが
あるのはなぜだ!!(いや、実際には0.1秒くらいかもしれない。
計測不能なんで目測なんだけど)

0575デフォルトの名無しさんNGNG
> んー、この3行でホビーな方であることが丸出しですね。
> 語気を強めるのはもうちょっとだけ勉強してからの方がいいですよ。

あーあ、言っちゃった・・・。ま、そゆことです。
0576デフォルトの名無しさんNGNG
>>573

いやー、そりゃD3Dでもパフォーマンス追及するなら同じだべ。
ハードパケットじゃなくて自前でスレッド走らせたりする必要
はあるんだけどな。

しかし、XBOXでDirectXレスなパワフルなメーカさんは出てくる
のかな?実際カリカリでハードパケット流してやった場合とXBOX
でヌルヌルな場合ってどれぐらい差が出るんだろ。
0577デフォルトの名無しさんNGNG
>>576
で、本題ですが、
XBOX は OS は載せないって方針を打ち立てているって聞いたのですが。
DirectX 経由でなく直接描画チップ叩けるんでしょうか?
0578デフォルトの名無しさんNGNG
>んー、この3行でホビーな方であることが丸出しですね。
俺はコンシューマのプログラマっす。

>そのフレームで予約登録された描画リストを待つのとは根本的に
>違います。

根本的に違うって程でも無いと思うぞ。
描画コマンドキューで現フレームか、
描画コマンドバッファで前フレームの違いだけ。
フリップの前に描画終了を待つのは一緒だな。
(レイテンシとメモリ効率的にはPCの方が有利だな。
 DrawPrimitiveに間が開くと無駄が生じるのは欠点だけど)

あとコマンドキューにコマンドを追加するのに、
いちいちブロックなんかされないぞ(一杯じゃなければ)
0579デフォルトの名無しさんNGNG
XBoxとは関係無いかもしれないけど、
GeForceってVSYNC-OFFの時は複数フレーム分(デフォで3フレームまで)
コマンド貯めるよ。
0580デフォルトの名無しさんNGNG
>>574
DC の時も、MS 提供のライブラリ群があったけど、
これつかうと、実行時にいきなり 0.5 秒ぐらい止まったり、散々だったらしいよね。
コンマ何秒を争うレースゲームで、いきなり 0.5 秒とまったりして、
開発者達は、かなり鼻毛が飛び出たらしいです。
0581デフォルトの名無しさんNGNG
>>578
> 描画コマンドキューで現フレームか

だからさ、その方式の並列度ロスを、みんな指摘してるんだよ。
0582デフォルトの名無しさんNGNG
何らかの理由でシーンの描画が失敗すると、そうなる。
0583デフォルトの名無しさんNGNG
>>581
そうか?
それはステート変更とは関係無いと思うが。
0584デフォルトの名無しさんNGNG
自称コンシューマプログラマさんへ

>根本的に違うって程でも無いと思うぞ。
>描画コマンドキューで現フレームか、
>描画コマンドバッファで前フレームの違いだけ。
>フリップの前に描画終了を待つのは一緒だな。
とりあえず手元の家庭用ゲーム機の概要書でも読んで勉強してください。
現フレームのパケット作成のバックグラウンドで前フレームで作成した
パケットがビデオチップに転送されているという並列度の点で全然異質のものです。

Direct3DでEndScene()で描画シーンの終了同期をとってしまっているのは
致命的仕様です。
0585デフォルトの名無しさんNGNG
CPUが、DrawPrimitive()とSetRenderState()で待たされるっていうのと、
EndScene()だけで待たされるってのでは全く話が違いますね。

EndScene()だけなのならば、
EndScene()の前に次フレームのゲームの処理をしといて、
次フレームのBeginScene()でモデルを集中描画すれば、
ロスは最小限になるんじゃないでしょうか?
まぁゲーム処理とモデル表示を切り分けた、
ゲームシステム作りが必要ですが。
0586デフォルトの名無しさんNGNG
>>584
おいおい、ステート方式致命的説が否定されたら、
今度はEndScene()が致命的かよ。
仮にもプログラマならそれぐらい工夫しろよな。
0587デフォルトの名無しさんNGNG
まったくだ。
なんのためのマルチスレッドだろうねえ。
#案外利用者すくないらしいが<マルチスレッド
0588デフォルトの名無しさんNGNG
厨房で悪いんだけど、
パフォーマンステストってどうやってやればいいのかな?
DX関係の書き込み見てても、わかってない人が多い感じ
色々テストするつっても、根底から組みなおしとかで結構大変じゃない?
0589507とかNGNG
SetRenderState()もEndScene()も致命的では無い。変な言い掛かりはよせ。
もうこんな不毛な議論やめようよ。
0590デフォルトの名無しさんNGNG
>>588
QueryPerformanceFrequency()
QueryPerformanceCounter()
を使ってる
0591590NGNG
あ、XBoxで使えるかは知らんよ。
0592デフォルトの名無しさんNGNG
うわ、ほんとだ。EndScene()で600kクロックも待たされてるよ。
低レベルラッパー作り直しかな〜
でも実機で改善されてたら鬱だしなぁ。

>厨房で悪いんだけど、
>パフォーマンステストってどうやってやればいいのかな?
コンシューマ系であれば数MHzレベルの高精度タイマーが必ずあるので
それで調べます。
X-BOXも含めたx86系であれば、rdtsc命令で調べます。
このへんは、Intelの資料を参照。(一般公開されています)
完全正確なcpu内部サイクル数を取得できます。
0593592NGNG
補足ですが、rdtsc命令は特権レベルうんぬんの操作も不要で
お手軽なので計測にお薦めです。
0594デフォルトの名無しさんNGNG
>おいおい、ステート方式致命的説が否定されたら
ステート方式が致命的なのではなく、
ステート変更プリミティブがないことが致命的なのでは?
0595デフォルトの名無しさんNGNG
だから致命的じゃないって。
0596507とかNGNG
だから、「ステート変更プリミティブ」なんてものは現実として
作れないって言ってるのに・・・。
もう、致命的とか言っちゃって。情けない・・・。根本的な所
が理解できて無いと思うんだけど。
最近のレスはプロの人が発言しているとはとても思えない。
0597デフォルトの名無しさんNGNG
スレッドとかラッパーとか難しい事考えなくても、
585の解決方で問題無いと思うんだが。
俺んとこはコンシューマだが、
元々タスクを描画とそれ以外の2モードにしてるから、

BeginScene()の直後に、ExecTasks(bDraw=TRUE)を呼んで、
EndScene()の前に、
ExecTasks(bDraw=FALSE)とモロモロのルーチンを呼ぶば済むな。

実行と描画がごちゃ混ぜの頭悪いシステムのゲームを、
移植するのは、確かに頭痛いかもな笑
0598デフォルトの名無しさんNGNG
>SetRenderState()もEndScene()も致命的では無い。変な言い掛かりはよせ。

↓けど、570が言ってる下記発言はあながち変な言いがかりとは言えないよ。↓
>EndScene()で、描画待ちするのは当たり前だよ。
>その後に、バッファフリップするんだから。
実際、自分のところでも EndScene() 前後で計測したら、とんでもない時間ブロック
されていたことが判明したし、多分、ここで570が言ってるように描画待ちしている
のは確実だと思う。

だとしたら、なにそれ?って感じの仕様なんですが。>>D3D
こんなところでマイCPUを奪わないで〜!って感じ。
実際の描画が1フレームくらい遅れてもいまさら誰も文句言わないよー
PS1の開発機が出た8年前当時は草の根BBSであれこれ言われたけどさ。
頼むからEndScene()はノンブロックにしてん!

あと別話題になりますが、X-BOXの瞬間停止問題、こっちでも発生します。
それも再現性がなくて困ってます。DCのWindowsCE環境でも同じ現象があった
という話はこの2chスレで初めて知って、ちょっとビビってるんですが。
0599名無しさんNGNG
EndScene()で待たずにどこで待てばいいんだ?
EndScene()をフレームの最後の方に持っていけばいいだけだろ?

コンシューマでもVSYNC処理の中で描画待ちしてるよ。
(中には、描画打ち切りする例もあるみたいだが)
0600デフォルトの名無しさんNGNG
ようするにEndSceneの後になんかやろうとするのが間違い
0601デフォルトの名無しさんNGNG
DrawPrimitiveを大量にまとめるから待ちが多くなるんじゃないの?
マテリアルソートする為とはいえ、一箇所にまとめたりするのは
アウトって事では?

その辺のバランスはV-TUNEで見ろって事でしょ?。XBOXは
チップ環境固定なんだから出来るんでは?
0602デフォルトの名無しさんNGNG
別スレにしたほうがいいんじゃない?
描画登録とBeginScene()~EndScene()も、この話題も。
0603デフォルトの名無しさんNGNG
>>601
逆だよ。
まとめたほうが、レンダーのストールの可能性が減るから、
最後の待ちも減る。
0604デフォルトの名無しさんNGNG
>EndScene()で待たずにどこで待てばいいんだ?
次のフレームで待てばいいんだよ。
もっとも既に描画が終わっていれば待つ必要がなくハッピー!なわけです。
並列処理の問題ですな。(バックグラウンドDMA)

この話題、不毛ではあるけどコアで大切な話題だと思う。
0605デフォルトの名無しさんNGNG
>だから、「ステート変更プリミティブ」なんてものは現実として
>作れないって言ってるのに・・・。
けど家庭用ゲーム機のハードはDC以外は全て
ステート変更プリミティブ(呼び方違うけど)を
ハードで持ってるよ。頂点配列の合間に要所要所にステート変更プリミティブを
挟んでも DrawPrimitive()などが解釈できるような設計にしておけば、
なんら問題無かったんだよね。
0606デフォルトの名無しさんNGNG
>>604
だから、最後にEndSceneすりゃ同じ事だろ。
0607デフォルトの名無しさんNGNG
>だから、最後にEndSceneすりゃ同じ事だろ。
そうすると次のフレームで作成した頂点をDrawPrimitive()で登録できないという意味では?
BeginScene()とEndScene()は対になっていなければならないので。
0608507とかNGNG
マジでいいかげんウザってー。
>>604
>この話題、不毛ではあるけどコアで大切な話題だと思う。
コアなんだけど不毛なんだよ。みんながみんなどっかで
根本的な思い違いをしている(俺だってしてるかもしれない)
から話が全く噛み合わない。
pc,cs両方の仕様を熟知した上で、設計ミスを指摘出来ているのなら
なんら問題ない。

こうなったらこのスレをそう言うスレにするのも手かも。
消化不良の知識で言い争う問題じゃ無いんだよ。
0609デフォルトの名無しさんNGNG
>>607
フレーム内でやる事の最後にEndSceneすれば、
他にやる事は何も無いから、次のフレームで待つのと一緒。
0610デフォルトの名無しさんNGNG
なんだか、致命的派ってわざと判らないフリしてないかぁ?
0611デフォルトの名無しさんNGNG
X箱の突然一時停止を解決できたという方、いたらヘルプ!
なお、CPUサイクルは正常にカウントアップしていることだけはさきほど確認しました。
0612野次馬NGNG
>>610
俺的には、双方ともに説明不足に思える。
0613デフォルトの名無しさんNGNG
オレ的には、D3D 擁護派が感情的になりすぎ、かつ説明不足に見えます。
D3D 的に、CPU とビデオチップ双方が 100% スペックで走行できるような実装スタイルを
提示して欲しいです。提示できなけりゃ、ま、厨房でしたチャンチャンってことで。
0614デフォルトの名無しさんNGNG
>>613
>>585, >>597あたりで充分説明されていると思うけど?
つーか、コンシューマ界隈でやってる人ならゲーム処理の見かけ上の裏側で
描画データの転送を行う系の処理ってあたりまえだと思ったんだけど…。
0615デフォルトの名無しさんNGNG
よくわからん。つか、
描画要素を全部Poolした後マテリアルソートして
DrawPrimitiveのループ、最後にEndScene呼ぶだけで
最高のパフォーマンスが出れば何の問題もないと思うけど

実際はそうじゃないわけでしょ?
0616デフォルトの名無しさんNGNG
>D3D 的に、CPU とビデオチップ双方が 100% スペックで走行できるような実装スタイルを
>提示して欲しいです。
不可能なので提示しようがありません。
そもそもMSがプリミティブ転送にDMAを使うという
発想がなかったことが事の発端です。
各処理のタイミングをいろいろ工夫したところで
EndScene()呼び出し時にCPUは貴方の手からしばらく離れます。
諦めてください >>CS業界の方々

T&Lの融通性がもっともっと上がれば転送ネタとも決別できるのですが。
0617デフォルトの名無しさんNGNG
みみっちい話ばっかりやな。
0618デフォルトの名無しさんNGNG
否定派の方は、最初にDirectXは駄目と結論付けてから議論しているので
何を言っても無駄ですな。本当の意味で時間の無駄。
0619デフォルトの名無しさんNGNG
っていうか、まだDirectX解ってないんじゃない?
色々試してから話せよな・・・。
0620デフォルトの名無しさんNGNG
厨房質問なんだけど
アクションゲームをC++をゲーム組むのと、C++の速度低下を嫌うのと
どっちがドキュソ?
ゲームで継承ってあんまり意味ないと思われ

(趣味で組むならC++で遊ぶ意味もあるのでプロに聞いてみたい)
0621デフォルトの名無しさんNGNG
ゲームこそ継承な気がする。
タスクプログラムってアセンブラとC++とは相性良いけど、
Cではイマイチすっきりしない感があるよ。
0622デフォルトの名無しさんNGNG
 でもさー、アマ、プロ問わずに日本でまともにD3D使いこなしてる
作品って無いよね。

 つーかさー、規模が大きくなる3Dゲーム開発でハードウェア研究の
手間から開放されるなら多少の不効率は目をつぶるよ。俺は。
描画エンジンに手間暇かけられる程時間も人もいねーんだわ。
一応仕事でPGやってんならこの辺が本音じゃねーのかな?
0623デフォルトの名無しさんNGNG
>>620

 んー、ゲームなんてプリミティブな機能の組み合わせで
作るもんだからさ、C++とは相性いいと思うヨ。デザイン
パターンなんかも応用できる事は多いし、621氏の言うように
パフォーマンスさえ気にしなければタスクプログラムとの相性
は絶妙だとおもうよ。
 ただし、STLは使うなと言って置きます。ホントに。

あ、あと、コードの保守性がケタ違い。
0624デフォルトの名無しさんNGNG
>>623
> ただし、STLは使うなと言って置きます。ホントに。

理由を教えて欲しいなり〜
0625デフォルトの名無しさんNGNG
>>624
メモリ確保・解放が絡むのでリアルタイム物を作る時には使わない。
ん?ネタか?
sageとくか・・・
0626デフォルトの名無しさんNGNG
バーチャファイター3のプログラマが Cすら最近まで知らなかった
って言ってたときは驚いた。アセンブラオンリーっすか
0627デフォルトの名無しさんNGNG
>>626
あの人はプログラマと言うより、数学屋さんらしいからね。
0628デフォルトの名無しさんNGNG
>>625
>ん?ネタか?
いえ、単に不勉強なだけです。

>メモリ確保・解放が絡むのでリアルタイム物を作る時には使わない。
allocator overrideすればすむものではないのでしょうか?
あとdefaultのallocatorでもそこそこやりくりしてそうなのですけど、
やっぱだめですか
0629デフォルトの名無しさんNGNG
X箱のBeginScene()とEndScene()はダミーで何もしない。
ALPHA2ハードは知らんけど。
0630デフォルトの名無しさんNGNG
>>625
いまどきmallocコストなんか気にすんなよ。
stlの味を知っておいて、いまさらリスト構造とかマップとか自前で実装する気になるか?
0631デフォルトの名無しさんNGNG
Xbox用DirectXってやっぱりCOMなんですか?
だとしたらレジストリとかもあるの?
0632デフォルトの名無しさんNGNG
>>630
心配するのはmallocコストじゃなくて、
虫食い状態になることじゃないか?
このスレのしょっぱなでmalloc議論やってるぞ。
0633デフォルトの名無しさんNGNG
取得した順番に解放されるような綺麗な流れのシステム構築をすると
ヘタレなマロックもそのまま使えますよ。
0634デフォルトの名無しさんNGNG
お、再びメモリ話ですか。

C++ って、リークしても大丈夫な環境で伸びてきた言語だと思います。
リークしても大丈夫な環境とは、大容量の HDD が搭載されていて、
いざというときは賢い OS がメモリをスワップしてくれて、プロセス
終了時にはリークしたものもキレいに掃除してくれるような環境。
例えば Windows とかね。

だから C++ は、メモリリークに関しては、ガードが甘いままここまで
来てしまったと、思うんですよ。

で、これを何も考えずにゲーム機などに持ってくると、えらいことに
なってしまうんですよね。
0635デフォルトの名無しさんNGNG
>>634
つーか、リークしてる時点で絶対ダメなんだけど。
0636デフォルトの名無しさんNGNG
>>633
うーん、ウチもそんな感じだけど、スタック使ってる気分になるよね。
そういやぁ、分断化しにくいメモリアロケーションの話が出ていたけど
実際どれほどの効果があるんだろう?
0637デフォルトの名無しさんNGNG
>>636
アルゴリズム次第だろうね。大きいサイズと小さいサイズで取得開始位置
を一番最後のアドレスと一番最初のアドレスにわけるとか・・・・???

ライブラリに頼ると移植もしにくいし、危険だからヤメておきましょう。
0638デフォルトの名無しさんNGNG
C++ってリーク対策の人材教育だけで随分高く付くので困りもの。
出来る人だけが集まっていればいいんだけど、この業界、基本的に
チンピラの集まりなので、そうもいきません。
0639デフォルトの名無しさんNGNG
つーか、ジャンルによるんだろうけど、リークしててどこだかわからん
なんてことがよく発生するんですか?

ウチが作っているレベルだと、メインプログラマがしっかりしてれば
なんか出ても1日で解決するけど。けど、いっぱいっぱいのときは謎
のストップがそのままだったから、そうもいえないか。

ウツダシノウ。
0640デフォルトの名無しさんNGNG
>>637
お、なるほどね。
0641デフォルトの名無しさんNGNG
>>639
そのメインの方は優秀ですね。
やっぱ、メインがしっかりしてないと、ヒープの導入はつらいよね〜。
0642デフォルトの名無しさんNGNG
>>641
前の会社で導入失敗したシステムを手軽だからと言って、失敗の経験を
話さずに導入しようとするヤツはドキュンですか?
0643デフォルトの名無しさんNGNG
>>637
すみません。
>大きいサイズと小さいサイズで取得開始位置
>を一番最後のアドレスと一番最初のアドレスにわけるとか・・・・???
これで断片化しにくくなるんですか?
頭の中で確保/解放のシミュレートしてみたんですが、
いまいちピンとこなくて・・・
これって定番のアルゴリズムですか?
参考文献とかあったら教えてください。
0644デフォルトの名無しさんNGNG
>>631
Xboxはあくまでコンシューマゲーム専用機。
と書けば想像付くかと。
0645デフォルトの名無しさんNGNG
コンシューマ系な人は、未だにヒープがどーのこーの言ってるわな。
時代遅れも勉強不足も甚だしーと思うのは俺だけか?
0646デフォルトの名無しさんNGNG
623す。

 現場での実導入例として、ポインタを極力廃止できるC++の方が
ドキュソプログラマでもメモリリークを起こしにくくなるので安心出
来ていいです。徹底してポインタさえ使わなければいいってもんじゃ
ないですけどね。

 でもstatic宣言なSTLがメモリ分断化にどれだけ貢献するかは語るま
でもないと思いますが?

 レベル低い話でスマンす。
0647デフォルトの名無しさんNGNG
>レベル低い話でスマンす。
いや、最近の新人ってホント、低レベルな話ができなくて困ってます。
特にこの季節。

ポインタ徹底排除論には賛成です。
ドキュソプログラマーでなくても、各タスクの相互参照が発生しえる環境では
大きな事故を引き起こす可能性があるので。
理想は「既に死亡してしまったタスクに対してアクセスを試みてもデバッグアウトが
出るだけで、システムが破壊されない」環境だと思います。つまり出荷時には、その手の
アクセスが完全に排除出来ているというシステムで構築できているか否か?という問題ですね。
0648デフォルトの名無しさんNGNG
ま、いまどきC++も導入しないなんてのはアレとは思うけど、
ヒープがどーのこーの考えるのは必要ですねん。
パソ系だって、ヒープやスタックの正体、
動的メモリ管理の仕組みを理解せずにやってる人のほうが多いわけで。
0649デフォルトの名無しさんNGNG
>もし描画待ちをしてるなら、最初のSetRanderState()だけが、
>凄く時間がかかる筈だ。
>1回目2.79ns
>2回目1.40ns
>3回目1.40ns

あの〜デタラメ書くのいー加減にしてもらえます?
100MHz-CPUの1クロックで 10.0ns なんです。
1GHz-CPUの1クロックで初めて 1.0ns なんだよ。
1.4nsってどういう計測結果なの?
UVパイプがフル稼動&条件分岐的中しても SetRenderState() はCOMインターフェイス
なんで、そんな計測結果は有得ない。

ちなみに当方で計測した結果では Pen2(300MHz時)で SetRenderState()は
250CPUサイクル(つまり750ns強)かかっています。

SetRenderState()が遅いことはMSも明言しているので、これをチチくり回しても
仕方ないわけですが、どなたかこんな解決方法があるよという方、いませんか?
つまりマテリアルソートが許されない環境で効率よくマテリアル(ステート)をペナルティなしで
チェンジする手段について、、です。
0650デフォルトの名無しさんNGNG
>パソ系だって、ヒープやスタックの正体、
>動的メモリ管理の仕組みを理解せずにやってる人のほうが多いわけで。
初心者でもないかぎり、いねーよ。
0651デフォルトの名無しさんNGNG
>>650
優秀な職場で働いていらっしゃるようだ。
0652デフォルトの名無しさんNGNG
>649
だからDMA転送の仕組みどころか存在も知らねーよーなD3D厨房を
相手にマジメなリアクションしてんじゃねーよ。平気で 2.79ns などと
末尾2桁まで書いてる時点で、未来から来た消防かなんかの電波計測結果とい
うことで笑ってやるのがオトナだろ?

>つまりマテリアルソートが許されない環境で効率よくマテリアル(ステート)をペナルティなしで
>チェンジする手段について、、です。
そんな手段が用意されていないから、コンシューマ界隈の人間がD3Dを
致命的だと連呼してるんだろ?マテリアルソートを避けたいということは
おおかたZソートをしたいということだろう?
おとなしくCPUで ->DrawPrimitive() ->SetRenderState() ->DrawPrimitive() と
交互に呼びなさい。D3Dなら、これしか手段はないよ。

納期があるのならば、諦めが肝心。
15fpsくらいまで落ちることあっても平気でTGSで出品したX-BOXの
アプリ群を見習うことだな。
0653デフォルトの名無しさんNGNG
>15fpsくらいまで落ちることあっても平気でTGSで出品したX-BOXの
>アプリ群を見習うことだな。

不覚にもちょっと笑った。
0654デフォルトの名無しさんNGNG
>>654
あれは、ホント痛ましい光景だったね・・・。

0655654NGNG
↑しまった。653 へのレスです。
0656デフォルトの名無しさんNGNG
T&L(onVRAM)でバス混雑が少ない筈の試作機ですら、あのザマだったので、
個人的には単なるフィルレートの低さと解釈しているが・・・
あそこからさらに、前人未踏のUMAでしょ?(いや64があったか)
頑張ってね!>>X箱組の方々
0657デフォルトの名無しさんNGNG
>>652-656は同一人物
0658デフォルトの名無しさんNGNG
>>656
M2もだよ・・・UMA(さすがにさわったこと無いが・・・みたことはある)

>>636
後は、()アロケートが頻繁に行われるものは
classの方のアロケータをオーバーライドするとか。
Cならメモリのプールを専用に用意するとか。

>>STL
STLはvectorならreserveすれば再確保は起こらないし、
list系だったらテンプレート引数に与えるアロケータ自作すればよいだけ。
なんでそんな問題無いと思うがどうか。
0659デフォルトの名無しさんNGNG
>M2もだよ・・・UMA(さすがにさわったこと無いが・・・みたことはある)
UMAは胃が痛くなるよ。
テクスチャ参照の激しい期間にサウンドに発行するとたまに音が飛んだりだとか。
結局、タイムスケジューリングする必要が出てきてなんのためのUMAだかワカランかったよ。

X箱は一体、何考えてんだろう?
0660デフォルトの名無しさんNGNG
X-BOX、OpenGLにしてくれないかなー
そうすれば、DMA問題も解決してくれる。
それが駄目なら、Direct3Dに glFlush()相当のメソッドを追加して欲しいなー。
0661631NGNG
ね〜俺の質問に答えてよ、自称Xboxプログラマの方々
0662デフォルトの名無しさんNGNG
確かにOpenGLなら希望の星がありますね。
NVIDIAも自社のチップ向けOpenGLを出してますよね?

>それが駄目なら、Direct3Dに glFlush()相当のメソッドを追加して欲しいなー。
パケットの実転送タイミングをプログラマー側で制御できるという点で
欲しいメソッドですね。
0663637NGNG
>>643
>>大きいサイズと小さいサイズで取得開始位置
>>を一番最後のアドレスと一番最初のアドレスにわけるとか・・・・???
>これで断片化しにくくなるんですか?
2秒で思い付いたアルゴリズムで実装経験はないです。こういうのをやりくり
する必要がないシステムがよいですねというのがワシの結論。

>>645
すくなくともケータイゲーム機じゃ考える必要はあるだろうね。
メモリが2Mがしかないハードもまだ現役といえば現役だし・・・。
>>650
いますがな。
>>661
自称のやつに聞いても答えは判らないんじゃないの?
煽りたいのは判るけど、もう少し論理的にせめてほしいね。
0664デフォルトの名無しさんNGNG
μsecだったよ。悪かった。
俺は単にSetRenderStateで描画待ちをしない事を
言いたかっただけなんだがね。
0665デフォルトの名無しさんNGNG
>>それが駄目なら、Direct3Dに glFlush()相当のメソッドを追加して欲しいなー。
>パケットの実転送タイミングをプログラマー側で制御できるという点で
>欲しいメソッドですね。

EndScene()をglFlush()の代わりに使えばいいんじゃないの?
つーかEndScene()って意味はglFlush()と同じでしょ?

DX8SDKより

シーンが完了したら、IDirect3DDevice8::EndScene メソッドを呼び出す。
EndScene メソッドは、キャッシュされているデータをフラッシュし、
レンダリング サーフェスの完全性を検証し、
シーンが進行中であることを伝える内部フラグをクリアする。
0666デフォルトの名無しさんNGNG
XDKα2よりも実機の方がパフォ低いってか。
ま、論題としては面白いがあまりムキにならない事だね。

俺はショー出展メーカ側の関係者じゃないから確証を持って言えないけど
あのフレーム落ちはフィルレートによるものじゃなくてテクスチャメモリ
の不足によるAGP転送コストのせいだと思うぜ。あちらのFPSなゲームは
リソース制限って考えが無いからね。

UMAっていうとやっぱニンテーンなあのマシンを思い浮かぶねぇ。触った
事は無いケド話を聞くだけで鬱になれる仕様だった。でも逆にコストの
折衝に成功した時のパフォーマンスは侮れないみたいだけどね。

でもさぁ、リソースのやりくりの無いマシンなんか無いんだから別に
致命傷とも思えないなぁ。そーゆーのが嫌なら非PC系ゲームプログラマ
は辞めた方がいいんじゃないかな?
0667デフォルトの名無しさんNGNG
>メモリが2Mがしかないハードもまだ現役といえば現役だし・・・。
けど、そいつが搭載している ROM-BIOS の malloc() はバグってて
今も使えないんだよな(藁

メモリの断片化が少しでも気になるんだったら、ヒープは止めた方がいいよ。
特にゲームの場合、ごく普通のWindowsアプリの使うヒープ使用頻度とは
まるで比較にならない頻度で使われるものだし。

ただし「プロジェクト内PG全員がヒープを知っている」という条件下では
威力を発揮する。
もちろん、ここでいう「知っている」とは知識レベルで知っているという意味
ではないぞ。旨みも怖さも「知っている」という意味で。
0668デフォルトの名無しさんNGNG
>>660
Xboxのゲーム開発者なんですか?
それとも知ったかぶりなんですか?
0669631NGNG
やっぱりナンチャッテの集まりか・・
0670デフォルトの名無しさんNGNG
>EndScene()をglFlush()の代わりに使えばいいんじゃないの?
>つーかEndScene()って意味はglFlush()と同じでしょ?
違うよ。EndScene()と glFinish() ならほぼ同義だけど。

glFlush()は描画パケットのネット転送だとかDMA転送を
意識して用意されたサービス。描画の終了を確認することなく、即座
に戻ってくるノンブロックサービスであるのに対して、
glFinish()は描画が終了するまでブロックされるサービス。

もちろんドライバがDMA転送などに対応していない場合は
glFlush()とglFinish()は全く等価値。
この場合、glFlush()にしてもパフォーマンスは全く上がらない。
0671デフォルトの名無しさんNGNG
俺、セガハードしか知らん(もう辞めたけど)
PSやPS2のDMAって、そんなに頭いいのかな?
DCのモデルの処理ってレンダーに行くまではソフト処理だけど。
(T&LもCPU命令だし)
0672デフォルトの名無しさんNGNG
IndexBufferやVertexBufferをVRAMに作った場合でも
DMAされないの?
もしかしてDMAしないとか言ってる人ってウンコみたいなPC使ってるとか?
0673672NGNG
VRAMじゃなくてローカルメモリか。AGPメモリとか。
0674デフォルトの名無しさんNGNG
>もちろんドライバがDMA転送などに対応していない場合は
>glFlush()とglFinish()は全く等価値。

たとえDMA転送に対応してなくても、
描画終了を待つのとコマンドキューを
フラッシュするだけなのは違うよ。
確かに重い描画しなけりゃパフォーマンスは変わらんけどね。
0675デフォルトの名無しさんNGNG
>>672
それすら使ってない厨房だったりしてな(藁
流石にそりゃ無いか。
でもXboxもCPUが転送してると思ってる人もいるみたいだしね。
0676デフォルトの名無しさんNGNG
>>671
PS2は便利だね。DMAパケットチェーンを組んでおけば
勝手にどんどん送ってくれる。そのパケットにT&L処理も
組み込め、別プロセッサがメインとは並列に演算してくれる。
(EEはトリプルプロセッサ)
0677デフォルトの名無しさんNGNG
>>671
PS2は便利だね。DMAパケットチェーンを組んでおけば
勝手にどんどん送ってくれる。そのパケットにT&L処理も
組み込め、別プロセッサがメインとは並列に演算してくれる。
(EEはトリプルプロセッサ)
0678デフォルトの名無しさんNGNG
ごめん、やってしまった。
0679デフォルトの名無しさんNGNG
>>675
CompiledVertexArrayは頂点データの変更が出来ないからワンスキンモデル
には使えないし、凄く使いづらい形式なんだよ。
毎回頂点配列をシステムメモリから転送させなきゃいけない。
0680637NGNG
>>667
>けど、そいつが搭載している ROM-BIOS の malloc() はバグってて
>今も使えないんだよな(藁
なんか守秘義務がアレですが。対応策はあるからいいじゃん。

ウチは全員が管理できるわけはないということでメインシステムがヒープ周りを
全部隠して処理するようにしました。Z80にゃあ載せられないけどね。
処理が重たすぎて。

ヒープ使うのは当然なんだけれども、全員が好き勝手に使っているわけではないと
だけ書いて寝るのであった。
0681デフォルトの名無しさんNGNG
割と繰り返されているけど、結論は
「今更malloc使わないなんて言ってる奴はおかしい」
「malloc使う奴はおかしい」
のどちらも間違いと言う事で。バカと鋏は使いようって
やつだね。
0682デフォルトの名無しさんNGNG
私の理解では、glFlush()って、
内部コマンドをいくつかにまとめて転送するようなシステムの時に、
残ってるコマンドを送るように指示するものだけど。
0683デフォルトの名無しさんNGNG
なんか判ってない人多数、つか、EndSceneなりglFlushの
実装解説してる文献とかないのだろうか?
0684デフォルトの名無しさんNGNG
>>683
実装はドライバ次第。実装の完全な仕様なんてあるもんか。
インターフェイスとインプリメンツを混同してるって。みんな。
分かるも分からないも無い。
その気があるならmesaのドライバ部のコードでも覗いてみれば?
0685デフォルトの名無しさんNGNG
>>679
OpenGLの話してるの?
まーいいけど、これからの時代は
ハードウェアジオメトリブレンディングなんじゃない?

>>677
GeFORCEやXBoxも、D3Dの描画命令やステート変更をコールしておけば、
適当なタイミングでGPUが勝手に読み出して並列に動いてくれるんだよね?
確かCPU/ハイオーダーサーフェス/TnL/ラスタライズ
のエンジンが全て並列に動くはず。
0686デフォルトの名無しさんNGNG
>まーいいけど、これからの時代は
>ハードウェアジオメトリブレンディングなんじゃない?
完全不透明なモデルでソートの必要が一切ないという条件下であればね。
確かにそのような用途って結構あるのだけど、それでは許されない場面も
たくさんあるのだよ。
そのような場合、描画パケットをCPUでソフト的に自由に作成できる
古典的な手法に頼らねばならない >> DMA の話題になるわけです。

SGIマシンも描画パケットの転送にDMAをフル稼動させていただけに
自然とOpenGLもDMAを意識した造りになっています。
ps2もDMAのお化けだし。そこら中にDMAを張り巡らしている。
0687デフォルトの名無しさんNGNG
どうも、よくわからないのだが、
描画コマンドがソフト生成だから駄目って話なんだろうか?
コマンドキュー自体はGPUがバスマスタで処理するんでは?
0688デフォルトの名無しさんNGNG
自分に言わせればOpenGLもパケットチェーンDMA転送を前提と
していない前時代的なインターフェイスに見えてしまいます。
0689デフォルトの名無しさんNGNG
PS2ってEEとGSが疎結合だから、
パケットにしてDMAで送る必要があるだけなんじゃないか?
0690デフォルトの名無しさんNGNG
そうなんだけど、慣れるとやっぱそれが一番になるからね。
0691デフォルトの名無しさんNGNG
age
0692デフォルトの名無しさんNGNG
>>689
「疎結合だから」というより、「疎結合にして」、DMA環境を整備
して、並列性を高めようというコンセプトでしょ。
0693デフォルトの名無しさんNGNG
>PS2ってEEとGSが疎結合だから、
けどx86系ってCPUとビデオチップってもっともっと疎結合なんだよね?
0694駄洒落魔神NGNG
そ。
0695デフォルトの名無しさんNGNG
>>693
うん。
そもそも、ソケットなんかにビデオカードを刺している時点でアウトだよ、PCの場合。
T&Lを高機能化し、プログラマブルにするという方針の行き着く先が、
ビデオカードそのものに汎用CPUを載せてしまうことに。
そのうち、Direct3DなりOpenGLがT&Lアセンブラスクリプトを提示するんだろなー。

あれ、どこかで見たハードに似てるって?
気の精ですよ、旦那。
0696デフォルトの名無しさんNGNG
>>695
>そのうち、Direct3DなりOpenGLがT&Lアセンブラスクリプトを提示するんだろなー。
もうしてます。>VertexShader, VERTEX_PROGRAM
各コマンドのレイテンシ気にする必要がないのと、lit見たいな便利命令が
ある部分ではアレより優れていると思う。自由度はアレの方が上だけど…
0697某部隊1NGNG
誰か僕をもっともっと酷使してん〜!
0698デフォルトの名無しさんNGNG
>>693
なぁ、あんた何のシステムの話してんだ?
x86系て簡単にひと括りにすんなよ。
0699デフォルトの名無しさんNGNG
VertexShader は条件分岐すらないから、あまりにも自由度低すぎる〜
あれをしてプログラマブルというのもなんだかなぁ。
0700デフォルトの名無しさんNGNG
>もっともっと疎結合

あのさぁ、用語の使い方がエキセントリックで読解困難。
煽りじゃなくて真面目な話な。アレ密結合じゃねーか?
0701>697NGNG
そんなに暇なら鼻毛でも抜いて待ってろ(藁
0702デフォルトの名無しさんNGNG
>アレ密結合じゃねーか?
まぁまぁ、そう泡吹きなさんな。マターリな。
各ビデオチップメーカがしびれを切らしてT&Lを
搭載させてきた背景にも注目してみよう。
0703デフォルトの名無しさんNGNG
>>699
でも結局アレも処理の大方を占める部分ではソフトウェアパイプ
ラインによる並列化の為にあんまり分岐なんてしないでしょ?
結局どこを切り分けるかの違いでしかない気がしますなぁ。
#逆にあの構造で、某部隊1が自由度を発揮する用途って何?
#曲面とかなら、GeForce3ではハードウェアでテセレーション
#してから、各頂点をVertexShaderに送れるし…。
NVEffectBrowserとか見てみると良いよ。VertexShaderもなかなか
捨てたもんじゃ無いってわかる。
http://www.nvidia.com/marketing/Developer/DevRel.nsf/pages/6AA3B04F568A385D88256A1F00069A1E
なんて、リアルタイムにバンプの波形の計算を(GPUだけで)
やってるし、何でも工夫次第でしょう。(もっとも、これが実際
のゲームに使えるかは疑問ですけど…)
0704デフォルトの名無しさんNGNG
結局XDK3っていつ配布されるのよ。
0705デフォルトの名無しさんNGNG
PCのビデオカードは密結合でしょ。
相互にメモリアクセス出来るんだから。
密結合・疎結合って転送速度は関係無いよ。
(多分、疎結合っていう語感だけで
 PS2を馬鹿にされたと思ったんだろうな笑)
0706デフォルトの名無しさんNGNG
PS2が疎結合ならPCは糞結合
0707デフォルトの名無しさんNGNG
>>705
疎結合とか云々の問題でなく、DMA存在意義についてじゃないかと
思うのだが。PS2のDMAは、PCとかのDMAとは根本的に立場が
別物なので、

>PS2ってEEとGSが疎結合だから、
>パケットにしてDMAで送る必要があるだけなんじゃないか?

なんてのは愚論でしょ。それこそ、描画のスケジューリングだって
DMAパケットで出来るわけだし。
0708デフォルトの名無しさんNGNG
単に疎結合だとDMAが必須って事だろ。
PCのアーキテクチャだとDMAにするのが有利とは限らんよ。
0709デフォルトの名無しさんNGNG
>PS2のDMAは、PCとかのDMAとは根本的に立場が
>別物なので、
気になったのですが・・・
結局、PC/AT(やX-BOX)にはリストスキャンDMAは存在しない
ということなんでしょうか?
0710デフォルトの名無しさんNGNG
VertexShader内で分岐するなら、
別のVertexShaderで使い分けろってことでしょ?
プログラムが大変になる反面、速度的には確実に有利だよね。
まー、中で分岐したくなることもあるんだけどさ。
0711デフォルトの名無しさんNGNG
>PCのアーキテクチャだとDMAにするのが有利とは限らんよ。
いや、有利になると限るよ。
今どきのCPUはバスアクセスがなるべく少なくなるよう設計され
ているので、その隙間の発射量は半端じゃないっす。

だって、ビデオチップの顔色伺いながら莫大なパケットを転送する作業を
CPUにやらせるのは鬱だもん?
0712デフォルトの名無しさんNGNG
>>710
どういうときに分岐したくなります?(煽りじゃなくて、質問です。)
0713デフォルトの名無しさんNGNG
おまえらゲーハー板でやれば?
スレ汚しすぎ
0714デフォルトの名無しさんNGNG
>>702

あのー、おたく何の話してんすか?(PCの話なら他所で頼む
CPUとビデオプロセッサが主記憶共有してて“疎結合”は
ちょっと違うじゃん?つー話してたのよコッチは。どうでもいいけどさ
0715デフォルトの名無しさんNGNG
>>693
>>695

技術者の端くれならせめて基本用語ぐらい正しく使ってくださいよ。
0716デフォルトの名無しさんNGNG
>技術者の端くれ
ついでにそれですらない騙りさんも混じってますよ(引きこもりの学生さんとか
こういった手合いに構ったところで荒れるだけですから、放っておきしょう。
0717デフォルトの名無しさんNGNG
>>714

>>702はマタリストのフリした煽らー。釣られちゃダメ
0718デフォルトの名無しさんNGNG
要は混乱の元はPC系ソフト屋さん(といっても学生さんっぽいですが)が、
3DレンダリングにおけるDMAの役割をきちんと理解していないの
が発端だと思います。
0719デフォルトの名無しさんNGNG
>>709
DMAが別物ってのは、多分、
PS2-> ビデオチップへのデーター送信
XBox,PC -> ビデオチップからのメインメモリアクセス
って事でしょ。似ているようで全然違う。

リストスキャンDMAは、
あくまで1フレームのデーターを一度に処理するもんで、
キュー実行にはあまり向かないんじゃ無いかな。

でも、キューの実行をCPUがやってるって言ってる人がいるけど、
さすがにそれは無いんじゃないかなぁ。
0720デフォルトの名無しさんNGNG
>>718
いや、PS2べったりのソフト屋さんが、
DirectXを理解してないだけでしょ。
0721デフォルトの名無しさんNGNG
>いや、PS2べったりのソフト屋さんが、
>DirectXを理解してないだけでしょ。
それを言うならば
「DirectXを理解してない」ではなく「PCを理解してない」ではなくて?
0722デフォルトの名無しさんNGNG
>>721

どちらも自分の慣れた環境以外理解しようとしていないだけかと。

 XBOXに搭載されるCPU自体はメモリ速度も手伝ってEE+VU0+VU1
程度のパフォーマンスは平気で発揮するんだけどねぇ。何が不満
なんでしょ?
0723デフォルトの名無しさんNGNG
マテリアルソートとか、皆さん、どのようなアルゴでソートかけてます?
0724デフォルトの名無しさんNGNG
>何が不満なんでしょ?
MSとnVidiaだろ
0725デフォルトの名無しさんNGNG
マテリアルソートなら数え上げビンソート系の方が効率良いかも。
Zソートであれば、無難にマージソート。
0726デフォルトの名無しさんNGNG
>>722
そのCPUパワーがムダになってるっていう点が問題なんだけどね。
あとSSEじゃVU0+VU1にはかなわないよ。
週末になったせいか、お子様が増えてるような。
0727デフォルトの名無しさんNGNG
>>726
巡航速度が速いほうが楽でよいという考え方もあるし。
766MHzでL2も積んでるなら、まあまあじゃないの?
0728デフォルトの名無しさんNGNG
ゲーム作る上で、キャッシュってどう思います?
個人的にはPS2のSPRのような仕組みのが使いやすい
気がするのですが。特にDMAが絡んでいるから余計に。
0729デフォルトの名無しさんNGNG
>>728
キャッシュがなかったら、DMAが止まりまくりでおいしくないんじゃない?
DMAとの整合性はライブラリが全部やってくれると、楽でいいんだけどねぇ。
0730デフォルトの名無しさんNGNG
>>728
SPR=必殺技、って感じで私も好きです(^^;

某1のときにはSPRをスタックに割り当てるみたいな楽チン利用で
効果てきめん、大好きSPR!だったんだけど、
某2ではDもあるからねぇ・・・
お気楽に使っただけではなかなか目に見える効果が期待できない・・・
どんなふうに使うのが効果的なのか、
難しいところですね。。。
0731デフォルトの名無しさんNGNG
>>729
止めないためのSPRでしょう。
逆にキャッシュがあるとDMAのためにわざわざ
フラッシュする必要あるし。
0732デフォルトの名無しさんNGNG
うーん、キャッシュの効果は有効なわけで、PS2でもDCでもCPU
にキャッシュは乗っかっているわけで。
追加でSPR(?)があるかどうかってことでしょ?
キャッシュフラッシュはどこかで絶対やってると思うんだけど。
EEってキャッシュ積んでないんだっけ?
0733デフォルトの名無しさんNGNG
>>729
意識して当てられるキャッシュってノリで考えても、許せませんか?
#個人的には「CPUの裏側をつくる」っていうイメージに近いかなぁ…。

意識しなければいけないのがデメリットであり、メリットでも
ある(パフォーマンスをある程度把握しやすくなる)けど、
パフォーマンスが優先されるゲーム用途ならこれでいいのかなぁと思う。
0734デフォルトの名無しさんNGNG
許す許さないじゃなくて・・・。ないと困ると思うってだけで。
ワーク領域として割り当てるのは全然問題ないし、特定条件になり
やすいゲームとしてはそうしたい場合も多々あるってのはわかります。

ただ、100%キャッシュをワークに割り当てるのはダメそうと思った
だけです。

フラッシュについては、キャッシュを持つCPUでは当たり前にやって
いることで。GCのようなレイテンシを高速化したハードでも積んでる
し。デメリットとしては上げられませんよ。(たぶん)
0735デフォルトの名無しさんNGNG
>>Zソートであれば、無難にマージソート。
実際のところQuickSortとどっちが効率良いのだろう?
そのシーンでのポリゴンの分布によって当然、比較結果も変化する
とは思うけどな。

>>止めないためのSPRでしょう。
SPRって何?
0736デフォルトの名無しさんNGNG
>キャッシュフラッシュはどこかで絶対やってると思うんだけど。
某2では、DMAキック直前に必ずやってるよ。キャッシュとの調停を
とるためにね。でもその時間を計測してみれば分かるけど誤差だよ。

基本的に一度、DMAでスキャンされることを前提に作成されたチェーンパケットは
DMAキック後は絶対にCPUでいじることがないので、DMAスキャンかけている最中は
調停の必要なし。
0737デフォルトの名無しさんNGNG
高級言語派と低級言語派で一旦分けませんか
0738デフォルトの名無しさんNGNG
>某1のときにはSPRをスタックに割り当てるみたいな楽チン利用で
>効果てきめん、大好きSPR!だったんだけど、
某部隊1がそのノリだよね?プログラムもデータエリアも全て
キャッシュ内という常にスーパーサイヤ人状態。
某部隊1の弱点はそのエリアの小ささ。これだけだと思う。
0739デフォルトの名無しさんNGNG
低級言語派ってのも無いよな。
でも話題的には二極化できると思う。
0740デフォルトの名無しさんNGNG
>高級言語派と低級言語派で一旦分けませんか
3Dレンダリングにおいて、高級言語派なんて基本的には皆無でしょ?
最初のデバッグ段階では高級言語で記述するけど、最終的にはアセンブラで
書く場合はあるけど。SSEにしても、Vertexシェーダ、Pixcelシェーダ、某部隊0&1・・・

どのプラットフォームでも確実にアセンブラへ走ってるよ。
0741740NGNG
誤解する厨房防止のために念のため。
「アプリケーション全体を低級言語で記述しよう!」という意味ではないからね。
あくまでもレンダリングなどの局所的用途にアセンブラってこと。
0742デフォルトの名無しさんNGNG
>>735
スクラッチパッドRAM
http://www.watch.impress.co.jp/mobile/column/ps2/2000/03/24/
に解説があるよ。
普通はVPU0のバッファに使うみたいだけど・・・
0743デフォルトの名無しさんNGNG
nVidia様、X-BOX用のネイティブなOpenGLを〜!お願いっす

実際問題、任意のディスプレイリストをプログラマーの任意のタイミングで
キックできるOpenGLをディフォルト採用にするか否かで、
ハード全体の設計(DMAの繋ぎかただとか)に変化が起きると思うのですが。
0744デフォルトの名無しさんNGNG
>>722
> XBOXに搭載されるCPU自体はメモリ速度も手伝ってEE+VU0+VU1
>程度のパフォーマンスは平気で発揮するんだけどねぇ。何が不満
>なんでしょ?

その XBOX に搭載されている x86系 CPU ですが、
SSE 用のレジスタ数が随分少なく、行列を2個載せたら終了と聞きました。
並列積、並列加算はあっても、積和は無いので、いちいちレジスタ退避・復活が
必要とも聞いています。
ホントにそんな状態で EE+VU0+VU1 のスペックが余裕で出せるんでしょうか?
0745デフォルトの名無しさんNGNG
>>743
nVidia 自身、DirectX には心底ウンザリ来ている模様ですし。
かといって、他の選択肢と言っても OpenGL ぐらいしかない
ってのも、悲しいけど事実ですな。
0746>>744NGNG
だから厨房相手に本気にリアクションしないように ^^;

なんでもかんでもソートが必要なわけではないので、X−BOXでは
ある程度はハードT&Lにお任せできます。なのでSSEにお世話になることも
少なく、レジスタが少ないというデメリットが表面化することも幸いに
して最小限に済みます。

ベンチマーク結果やなんかで、SSEによるソフトT&Lとビデオチップ内ハードT&Lの
スペックがいい勝負していますが、あの比較の意味自体がそもそもお子様なんです。
なぜならば、ハードT&Lを装備している時点で、CPUとの並列動作が可能に
なり、そしてこの並列動作にこそハードT&L実装のメリットが集中するからです。

0747デフォルトの名無しさんNGNG
>nVidia 自身、DirectX には心底ウンザリ来ている模様ですし。

そうなの?チップのシェア考えれば、MSに対する発言権は強いと思うんだけど
それが反映するのはDX9?
0748デフォルトの名無しさんNGNG
>nVidia 自身、DirectX には心底ウンザリ来ている模様ですし。
>かといって、他の選択肢と言っても OpenGL ぐらいしかない
>ってのも、悲しいけど事実ですな。
OpenGLへの不満といったらチェーンスキャンDMAを意識した造りになってない
という点だけですね。(一応、DMAは意識していますが)
0749デフォルトの名無しさんNGNG
9はあまり8から変化ないらしい。
0750デフォルトの名無しさんNGNG
X箱の場合、チップは固定されているんだから、OpenGLに
してくれないかなぁ。さすがにPS2みたいにハードのレジスタ表が
平気で掲載されているようなハードむき出しマニュアルがドッサリ
来られては、鬱なんだけどね。
0751デフォルトの名無しさんNGNG
うーんPS2(に限らないだろうけど)のキャッシュとDMAの関係は、
フラッシュの時間云々より、キャッシュの状態を意識したプログラムを
強いられるのがね〜。

皆さんは普通にパケット生成してキャッシュフラッシュするのと、最初から
アンキャッシュ書き込みや、SPRで作ってメモリにDMAで作るのと、
どちらが有効だと思います?

パケットをさらにZやマテリアルでソートしようとか考え始めると、
どれが一番効率がいいものか・・・
0752デフォルトの名無しさんNGNG
NVIDIAがX箱向けにopengl提供するとすれば歓迎ですか?
0753デフォルトの名無しさんNGNG
>NVIDIAがX箱向けにopengl提供するとすれば歓迎ですか?
物理的には可能なのにね。
もち、個人的には歓迎っす
0754デフォルトの名無しさんNGNG
NVIDIAがopengl提供しても拡張の解説が英語だとつらくないですか?
0755デフォルトの名無しさんNGNG
今時Direct3DとOpenGLにどれほどの差があるのか疑問。
0756>744NGNG
だれもEE+VU0+VU1全部は使いこなしてないから
Pen3程度の普通に早いCPUの方がうれしいのでは?
0757デフォルトの名無しさんNGNG
自作ツールはOpenGL派とD3D派どっちが多い?
D3D派?
0758>756NGNG
確かにPen3の高クロックと二次キャッシュは魅力だな。
パッチをあてたGCCならVU0を使いこなしてくれるぞ。
#VU1はまた別の話だ。
0759>756NGNG
確かにPen3の高クロックと二次キャッシュは魅力だな。
パッチをあてたGCCならVU0を使いこなしてくれるぞ。
#VU1はまた別の話だ。
0760げげ、NGNG
みすった。
0761デフォルトの名無しさんNGNG
ツールではOpenGL使ってるけど、D3Dでもいいよ。
実機のターゲット用APIとしてはどうか知らんけど、
>>755のいうとおりフツーに使う分でどれ位違いがあるんだろう?
0762デフォルトの名無しさんNGNG
DirectX8自体は別に嫌いでは無いが、
特定環境向けにHAL構造は無駄だな。
0763デフォルトの名無しさんNGNG
>今時Direct3DとOpenGLにどれほどの差があるのか疑問。
仮にあなたにとって、両者のそれ自体にはそれほどの差がないと判断するのならば、
様々なプラットフォームで泳げるOpenGLの方が何かとうまいでしょ?
0764デフォルトの名無しさんNGNG
>>763
なにか日本語壊れてるぞ。
0765デフォルトの名無しさんNGNG
D3Dは16ビットシステム並みの頂点数制限があるし
GLはインターフェースが古くて冗長だし
しかもどちらも整数アーキテクチャ時代の仕様
どっちもイヤ
0766デフォルトの名無しさんNGNG
となると・・・??
0767デフォルトの名無しさんNGNG
> しかもどちらも整数アーキテクチャ時代の仕様
すいません、これってどういう意味ですか?
あと>>765さんはツールのときも自前ライブラリで描画しているんですか?
0768デフォルトの名無しさんNGNG
65535頂点で不満か?
0769デフォルトの名無しさんNGNG
>>768
もうそろそろ苦しいんじゃない?
0770デフォルトの名無しさんNGNG
>様々なプラットフォームで泳げるOpenGLの方が何かとうまいでしょ?

ハードの性能を使い切ろうとするとそうでも無いんだよねー。
OpenGLの標準機能だけじゃ使い物になりませんぜ。
拡張機能に頼りきったプログラムになるのは確実で、
結局ハード依存しまくりです。
0771デフォルトの名無しさんNGNG
↑OpenGLの方がまだマシだと思う。
Direct3Dでは拡張すらできないしね。
0772デフォルトの名無しさんNGNG
NV20でDirect3Dの拡張は必要ないと思われ
0773デフォルトの名無しさんNGNG
>>ハードの性能を使い切ろうとするとそうでも無いんだよねー。
>>OpenGLの標準機能だけじゃ使い物になりませんぜ。
ハード直叩きで平気な人には、確かにそう言い切れるかもしれないですね。
0774デフォルトの名無しさんNGNG
>OpenGLの標準機能だけじゃ使い物になりませんぜ。
>拡張機能に頼りきったプログラムになるのは確実で、
せめてATIとNVIDIAだけでも共通の拡張にしてくれんものか…
(プログラマブルシェーダー関連もATIはNVIDIAとは違う拡張を
施す模様。まぁNVIDIAの拡張もハードべったりなんで仕方ないけど…)
#スレと大幅に関係ない話なのでsage.
0775デフォルトの名無しさんNGNG
>>746

722だけどさぁ。久しぶりに見たら厨房扱いかい。

オレも抽象的な書き方で悪かったけどさ、P3対EE+VU0+1みたいな
事が言いたいんじゃなくてP3自体がEEと違って前線バリバリに
高速なCPUでその上にT&Lを積んでいるんだから普通のゲーム
の作り方したらCPUパワー自体を持て余すだけなんじゃない?
CPUで3D演算する訳じゃないんだからUMAでCPU資源が失
われたとしてそれって致命傷?というような事を暗喩してただけです。

ま、UMAの話題はもう終っちゃったみたいなんでどうでもいいです。
0776デフォルトの名無しさんNGNG
>>772
触ったことある人なら判ると思うけど、
nVIDIAのレジスターコンバイナ拡張は、
同じステージ数ならPixelShaderよりもずっと強力ですよ。
ハードウェアの性能を活かすためには拡張は必須と思われ。
0777デフォルトの名無しさんNGNG
>>769
一プリミティブが65565頂点を越えることってあるの?
普通、今の時代でもインデックスは16bitにすると思うよ。

0778 NGNG
DX8からインデックス32bitに指定可だぞ
0779デフォルトの名無しさんNGNG
>>778
指定は可能でもHALレベルで制限される。
GeForceの場合は65535頂点。

D3DCAPS8のMaxPrimitiveCountと、MaxVertexIndex見れば、
サポートしている数が判る。
無視して超える数使うと、表示がおかしくなったりするらしい笑
0780デフォルトの名無しさんNGNG
あ、MaxPrimitiveCountは頂点数じゃなくてプリミティブ数ね。
0781746NGNG
>>775
そうと分かっているなら、最初からそう書いてください(笑
ee+vu+u1 vs pen3+t&l みたいな書き方したら、まるで
ベンチヲタクあがりの厨房そのものじゃないですか〜
0782デフォルトの名無しさんNGNG
>>776
コンシューマ機のD3Dは当然拡張があると思われ。
0783デフォルトの名無しさんNGNG
マテリアルソートだとかZソートのアルゴとしてはこれが決定打!というもの
ご存知の方、いませんか?

演算性能よりもソートに時間が消耗することがあるので、並列うんぬんよりは
こっちの方が切実な問題のような気がする
0784デフォルトの名無しさんNGNG
>>783
はい、知ってます。
某コンシューマー機の標準ライブラリが使っているアルゴリズム、
あれを初めてみたときは、マジで目からウロコが落ちた。
0785デフォルトの名無しさんNGNG
OT?
0786デフォルトの名無しさんNGNG
>>784
マージソートよりも高速なんですか?
マテリアルソートとZソートの兼ね合いによって最適アルゴは
当然変わるだろうけど。
0787デフォルトの名無しさんNGNG
>786
メモリアクセスが遅い環境ならば、なるべくソート対象の実体入れ替えの
少ないソートアルゴでないときついでしょ。

実体入れ替えではなく、リストの繋ぎ代によるソートだと DrawPrimitive などを
細切れに発行する必要があり、これまたどちらが効率よいかのトレードOFFかと。

でもマテリアルソートならマテリアルをキーにプリミティブを積み上げていけば、
マテリアル単位でのDrawPrimitiveの発行で済むでしょ。マテリアルの種類が多い場合は
また工夫が必要なんだけどさ。

0788765NGNG
>>767
Zバッファが整数アーキテクチャそのものだよ
テクスチャの大きさが1024とか2048限定なのも迷惑
REPEAT不可でいいから任意サイズが使いたい

測量系のソフト作ってるんで、頂点数もテクスチャサイズも
2000Kpolyとか20000×18000pixelとか非常識なデータばっかり
微小ポリゴンがびっしり状態だとglBegin()...glEnd()より
自前のペインターアルゴリズムアプリの方が速かったりもする

しかも社長の趣味でターゲットマシンはほとんどマルチディスプレイ
のためアクセラレータは役立たず
こんな時代にテクスチャレンダラを組んでると虚しいです
みんなマイクロソフトが悪いんです
0789デフォルトの名無しさんNGNG
>>788
悪いのはおまえとバカな社長と思われ
0790デフォルトの名無しさんNGNG
>>788
デジタイザでも作ってんですか?
どうせリアルタイムじゃないんだろうし、rendermanでも使えば?
しかしいくらなんでも20000x18000は眉唾だな。
0791デフォルトの名無しさんNGNG
>>788
測量系って良く知らないのですが、
大型のシーングラフデータを"そのまま"視覚化するメリットってなんなんですか?
テクスチャとかもそんなに細かいメッシュデータなら何枚かのテクスチャに、
前段階で切り分けられちゃうんじゃないかと思うのは素人考えですかね。
0792788NGNG
>>791
視覚化というより地形データの編集作業
つなぎ目があるから分割しても重なり部分の処理が面倒なのだ
ポリゴンの形も編集で変化するしどんな大きさにされるか分からない
>>790
リアルタイムに近いレスポンスが要求される
A1モノクロ図面をスキャナで読んで5枚くらい
張り合わせる人もいるのだ
画面解像度並のテクスチャサイズで普通は十分なのだが
こういう分野もあるということで
ゲームじゃないのでsage
0793デフォルトの名無しさんNGNG
結局、これといったソート手法はないのでしょうか。
ネットで検索しまわっても、様々な手法が登場し、決め手はないみたい。
0794デフォルトの名無しさんNGNG
>>793

全体の処理負荷から占めるパーセンテージを考えたらソート
アルゴ自体は適当に択んでもほとんど問題ない負荷だと思う
んだけど、そうでもない?

目的にもよるけど、速度だけを見るならOT。それが効率
悪いのなら・・・、んー、なんでも一緒じゃないかなあ?
0795デフォルトの名無しさんNGNG
>>目的にもよるけど、速度だけを見るならOT
チェーンDMAがない環境であればOTの威力は激減じゃない?
0796デフォルトの名無しさんNGNG
>>795

ソートするモノの数と深度の精度次第かと。
0797デフォルトの名無しさんNGNG
795のチェーンDMAとOTを結び付けてしまった瞬間、業界人は
恐くて突然に沈黙。

そろそろみなさん、自粛しません?
0798デフォルトの名無しさんNGNG
OT解説して
0799デフォルトの名無しさんNGNG
>>798

簡単に言ってしまえば、単方向リンクリスト。
GPU_DMA(chain:modeフラグは0x01000401で0x1f8010a8を叩く)
には、何もしないプリミティブがあるので、
適度に挟むことで、一切のソート無しで
描画を行います。っつーか偽挿入ソートか。
0800デフォルトの名無しさんNGNG
バケツソート?
0801デフォルトの名無しさんNGNG
>>797
ウェブに公開されてた黒PSのマニュアルでも分かったから大丈夫。
0802デフォルトの名無しさんNGNG
リンクで繋がれたプリミティブを手繰ってスチールサイクルでDMA転送するので
ビデオチップのbusy状態を監視する必要もなし。つかビデオチップが主語。

ソートを諦めるなら64みたいなRCP構成もありか。

けど、
フィードバック系のイフェクトやりたければ、不透明ポリゴンも
ソート対象になるから、やはりポリゴンソートは必須かも。
Zバッファ(Wバッファ)はソートミスの補正目的に成り下がる時代へ。

X-BOXの実機ではこのあたり、どう捉えているのか見物。
0803デフォルトの名無しさんNGNG
>>802

 そうなるとPVRアーキテクチャの素晴らしさが身にしみて解りますなぁ。
X−BOXも半透明ソートはノータッチでしょう。

 OTは・・・。知らない人結構いるのね。解んない人はSTLのmultimap
の事だと思えばOK。
0804デフォルトの名無しさんNGNG
今にして思えば、64のRCPってハードT&Lそのものだったんですな。
当時の任天堂やSGIがUMAだと騒ぐその一方、
ちゃっかり専用のローカルメモリを挟んだおかげでバス帯域の混雑を
緩和してたし。

でも、いまさら、SGIですら捨てたUMAをわざわざ採用するとはねぇ
0805デフォルトの名無しさんNGNG
>>808
半透明の上に不透明が書けないけどね。
0806デフォルトの名無しさんNGNG
>>803
んっと、登録した時点ですでにソートされてるってことだよね?
だったらmultisetだよね?
いや、mapだと何がキーなのかわかんないので(^^;
0807デフォルトの名無しさんNGNG
>そうなるとPVRアーキテクチャの素晴らしさが身にしみて解りますなぁ。
フィードバックさえ諦めれば、文句なしのアーキテクチャですね。
NVIDIAの方針であるピクセルシェーダなんかも、PVRアーキテクチャ向きですし。
NECには頑張ってもらいたいところ。
0808デフォルトの名無しさんNGNG
OTにかんしては、時部がX68時代にスプライトのプライオリティ管理で実は
使っていたり。結構古い手法じゃないかな? 使用するスプライトを全部前に
つめられるんで便利だったよ。プライオリティも好きなだけ持てるし。
転送速度が問題になったけどね。某STGでも使いました。
0809デフォルトの名無しさんNGNG
ソーティング最速アルゴがO(n log n)なクイックソートやマージソートだと思い込んでる人いるけど、
条件によってはもっと早いアルゴリズムも存在する。
0810デフォルトの名無しさんNGNG
ま、スプライトのプライオリティ管理では良くあった手法だけども、
3DのZソートに使っちまう(ハードウェアもそれ前提になってる)のは
無茶するなあって思いました。なんにせよ良く出来とります>某国民機
0811デフォルトの名無しさんNGNG
>クイックソートやマージソートだと思い込んでる人いるけど、
PS1登場以降での3Dポリゴンソートではクイックもマージも有得ないと思う。
メモリが1メガバイトもあるような環境ではOTソート以外はちょっと。
いや、仮にサポートするDMAがなかったとしてもね。

OTソートはソートしないソート?!なんで。
ソートごときにCPUパワーを1%でも消費してたら馬鹿らしい。
0812デフォルトの名無しさんNGNG
文字列をソートするとかいうのならばともかく、代表値が単一でしかもその値域が
限定できるのならばバケツソート(OTソート)はコストはほぼ零だね。
0813デフォルトの名無しさんNGNG
バイナリツリーに挿入法で挿入していくとすると、
mビットで表現されるキーを持つn個のデータなら
コストは n log m となるわけだよね。

キーが普通の整数や double, float ならコスト n か。
これファイルシステムに良く使われる b-tree のこと、
ですか?
0814デフォルトの名無しさんNGNG
いや、分岐はしないからb-treeとは違う。
各ノードから、単方向リストを伸ばすだけ。
0815民間人NGNG
描画パケットを、Z値の数だけ用意した単方向リストにガシガシ繋げててって、
できたらあとはDMAに勝手にガシガシ手繰らせてGPUで描画、
その間にCPUは次のフレームを処理して
新しい描画パケット群を準備って感じでいいッスか?

PS発売当時のASCIIの記事かなんかで
1/30秒、1フレーム遅れの並列処理とかあったような気がする。
0816デフォルトの名無しさんNGNG
>>807
PVRアーキテクチャはフィードバックできないのですか?
よろしければ理由を教えて下さい。
0817バケツソートNGNG
例: 100点満点のテスト結果をソートするのに、
インデックスが0から100の配列用意しておいて、
それぞれの点数の数をカウントする。
結果出力は0(又は100)から配列内容見てインデックス値を
配列内のカウント分出力。これでソーティングになる。
どんなにデータ増えても処理時間はデータ個数に比例。
0818デフォルトの名無しさんNGNG
>>817
それは度数ソートちゃう?
ま、バケツソート/バケットソート/基底ソートも似たようなもんだけども。
0819デフォルトの名無しさんNGNG
>>808

805から未来ツッコミされる808氏ってもしかして・・・。あ、いやいや、
詮索はよしときます。某STG楽しませていただきました。はい。

>>806

multimapですよ。ま、応用的な使い方ですが。
もちろんmultimapで実装するオバカさんはいないと思うけど。
ってみんなヒント与えすぎー。別にいいけど。
0820デフォルトの名無しさんNGNG
別に目がウロコが落ちる程のもんでも無いと思うが。
2Dの時から普通に使ってたよ。
0821デフォルトの名無しさんNGNG
目から
0822デフォルトの名無しさんNGNG
>>820

「メガウロコ」って気に入った。
使わせてください。

目からメガウロコが落ちた。
0823デフォルトの名無しさんNGNG
>>>817
>それは度数ソートちゃう?
>ま、バケツソート/バケットソート/基底ソートも似たようなもんだけども。
ってことで、3Dポリゴンのソートには、単なる度数ソート(呼び方いろいろ
ありますが)で済むので、その他のソート手法は有得ないのでは?という話題なのでは?

度数ソートはハードでサポートされていなくても、例えばマテリアルソートや
なんかでも有用です。

Direct3Dが、リストで連結されたプリミティブ群をスキャンするインターフェイスを
DirectX3の時点で用意すべきだったわけです。そうすれば、今ごろは各ビデオメーカも
そのメソッドに対応したDMA構成で対応し、今ごろ、大抵のハードに実装されている
機能になっていたわけですね。いや、歴史にイフは禁物ですが。
0824デフォルトの名無しさんNGNG
自称、民間人さんへ
>描画パケットを、Z値の数だけ用意した単方向リストにガシガシ繋げててって、
>できたらあとはDMAに勝手にガシガシ手繰らせてGPUで描画、
>その間にCPUは次のフレームを処理して
>新しい描画パケット群を準備って感じでいいッスか?
万が一、本当に「民間人」だったらぜひ業界へ。
0825デフォルトの名無しさんNGNG
メガウロコが落ちるのか
0826デフォルトの名無しさんNGNG
なんだ、OTって結局バケットソートなのね。
大昔から使ってるようなテクに偉そうな名前つけてんじゃねーよ。

ITみたいなもんだな。
0827民間人NGNG
すいません、今はi-modeのJavaやってます(ぉ
0828デフォルトの名無しさんNGNG
>>826
それはSCEに言ってクレー
ともかくハードを含めたアーキテクチャ自体は美しいと思うナリ。
0829デフォルトの名無しさんNGNG
メガウロコ・・・いいひびきだ。
メガウロコ・・・いいひびきだ。
0830デフォルトの名無しさんNGNG
>なんだ、OTって結局バケットソートなのね。
>大昔から使ってるようなテクに偉そうな名前つけてんじゃねーよ。
いや、だから16Bit時代から存在するテクは32Bit時代ではDMAによる
ハードサポートが施されるようにまで順当進化したわけ。
なのに、Direct3Dではいまだにノーサポート。
これ、どういうことよ?ってな話なんでしょ?

D3D、ソートに対してあまりにも無頓着すぎる。
0831デフォルトの名無しさんNGNG
>D3D、ソートに対してあまりにも無頓着すぎる。
D3Dはあまりにも盲目的にOpenGLをパクり過ぎた。
何も欠点までパくらんでもいいのにな(藁

でも今からでも構わないので、是非とも「メモリ点在型パケット描画 DrawPrimitive」
なるものを用意してもらいたいものだ。

けどマニアックになるのかなー。
描画パケットをダブルバッファにしたり、キックしたパケットエリアにCPUでアクセスしては
ならなかったり・・・
0832再確認NGNG
1 名前:デフォルトの名無しさん 投稿日:2001/02/26(月) 03:34
WinやMacやLinuxみたいな
立派なOSなんか載っていない機種向けの
ゲームプログラミングについてのスレです。

とりあえず
・守秘義務は守る(つっこんだ質問はそれにふさわしい所でどうぞ)
・身元がばれないように気をつけよう。詮索もやめよう。
・プログラムの話をしよう。
みたいな感じでマターリいきましょう。
0833デフォルトの名無しさんNGNG
>>831
同じことを言ってるかよくはわからないけど、それらしいものは
DX8でついてるみたい。DX8だとVertexBufferを作って、そこに
データを書き込んでDrawPremitiveするのが普通だけど、
DX8+nVIDIAだとDrawPremitiveした時点で、VertexBufferがスワップ
されて、違う物理メモリがVertexBufferに割り当てられて
DrawPremitiveが返ってくるららしい。こうやって並列性を
高めてる。
0834デフォルトの名無しさんNGNG
設計思想の違いを、馬鹿にしてもしょうがないと思うんだけどね。
ハードウェアを複雑にしないで、転送を高速なCPUに任せるような、
アーキテクチャがあってもいいでしょうよ。
PS2だって速度追求の為に、VRAMの容量がトレードオフに、
なってたりするわけだし、何かしら欠点はあるでしょ。
0835デフォルトの名無しさんNGNG
営業に配置転換させられますよ
0836デフォルトの名無しさんNGNG
>>835
SCEの営業さん?
0837デフォルトの名無しさんNGNG
>ハードウェアを複雑にしないで、転送を高速なCPUに任せるような、
CPUが高速になればなるほど待たされるということに気が付かないかなぁ
DMAの利点は何も「データ転送」だけじゃないんだよ。
ビデオチップが欲しいと思った任意のタイミングでバスをアクセスできることに
あるのだけど。

いくら高速に転送できても、ビデオチップ側が受け付けなかったらそれまで。
だからこそビデオチップが一人称なDMA転送が必須になるんじゃん。

64だとかPS、っつーかSGI系のハードは少なくともみんな似たような構成。
0838デフォルトの名無しさんNGNG
むかーしむかし、PC王国にもジッコー・バッハとゆう名の作曲家がおったのじゃが、
「描画パケ作るの面倒くせぇぞゴルァ!!」
とゆう民の声に押されて粛清されたとさ。
0839どしろうとNGNG
すいません、質問させてください。
DMA転送について議論されてますが、X-BoxはUMAだから同一メモリ上に
データはあるわけですよね?。CPUさんが「ココにあるよー」って
GPUさんに教えてあげれば「ココにあったのかー」で、転送する
必要ないような気がするんですけど、違うんでしょか?。
0840デフォルトの名無しさんNGNG
>>837
だから描画キューってのがあって、ビデオチップ側が、
受け付けないから待つなんて事は無いんだってば。
0841どどしろうとNGNG
どのみちメモリ→ビデオチップの転送は発生するし、
CPUがいちいちココ、ココ、次はココねって教えてあげないとダメなんで
変わらないんじゃないかと。
0842デフォルトの名無しさんNGNG
>>840
キューって、どれくらいの容量のがどんな感じで実装されてるんスか?
そこんとこ知りたいでし。
0843デフォルトの名無しさんNGNG
>>842
公開されてないけど、
まともな実装なら、GPUにキューの状態を教えるだけだろう。
ボトムポインタを更新するとかね。
どっかにその辺の資料無いかね。
0844デフォルトの名無しさんNGNG
>842
だから実装はドライバ次第なんだってば。話がル〜〜プ。
つい最近までのビデオカードでは大体ラスタライザにおくる前段階
までは全てCPUで処理してたからCPUロックするのも仕方ない。
XBOXは知らんがPCに過度の期待はしない方がいいかと。
0845デフォルトの名無しさんNGNG
DMA使わないpcのgraphics chipは絶滅してると思われ。
nvidiaはrivaイチニッパからDMA使ってると思われ。
PS系の描画方式は、類似思想のdirect3Dのexecute bufferが
ゲーム開発者コミュニティから激しく拒絶された苦い経験があるので
どこも導入しないと思われ。
powerVR系のタイルアーキは、1フレーム分の描画コマンドを
ためこむバッファがメモリを圧迫するので
否定的な意見が多いと思われ。
0846デフォルトの名無しさんNGNG
>>842
容量は分からんが、GeForceの場合は、
tweekで先行計算するフレーム数を3枚以上指定出来るので、
それなりはあるのかと。

XBoxはわからん。
0847一般系プログラマNGNG
いやしかし、ゲームプログラマって大変ですなあ……。
0848デフォルトの名無しさんNGNG
右手系と左手系が入れ違うと、演算ルーチンを組む上で、
どういう問題が起こるでしょうか?
0849デフォルトの名無しさんNGNG
>>832
次からは
・ゲーハー板にリンク張らない
も加えて下さい。マジで。
0850デフォルトの名無しさんNGNG
ハードウェアの信者状態になるプログラマーって良く判らんな。
俺は、どのハードでも不満だらけ。
0851デフォルトの名無しさんNGNG
>>848
右手系と左手系ならそれ程違いはないんじゃないでしょうか。
最終的なz値をひっくり返すだけで使い分けられると思います。
行列表記のほうがややこしいんじゃないでしょうか?
最終的に転置すれば大丈夫じゃ無い?って思ってますが、実際に
使い分けた事が無いので不明です。
0852デフォルトの名無しさんNGNG
>>850
ハードウェアじゃなくて会社の信者だと思われ。
信者フィルターがあればどんなハードだろうが最高にも最低にもなりうる。
0853デフォルトの名無しさんNGNG
>>848
あのー、内容から察するに学生さんですよね。一応そういった
質問はこちら(↓)のスレッドでするのが無難かと思いますよ。

■ゲームプログラミング相談室[2]
http://piza.2ch.net/test/read.cgi?bbs=tech&key=985540361&ls=10
0854デフォルトの名無しさんNGNG
茶々入れてスマン
>>845 >>852
一応エンジニアならさ、「思われ。」のような不明瞭で不気味な
表現は止しません?「北の国から」世代なのは理解できるけどさ。
0855 NGNG
854は2chを深く知らないと思われ
0856デフォルトの名無しさんNGNG
それって「英語がよくわ」 スレが発祥?
0857デフォルトの名無しさんNGNG
仕様が公開されてないから、
曖昧な表現になるのもしょうがないと思われ。
0858デフォルトの名無しさんNGNG
>>853
某psのライブラリみたいないいかげんなやつ使ってると座標系に対する
意識ってどんどん減っていくような気がする。
0859848NGNG
あ、いえ、ずっとここ見てる現場の人です。一応。
世間では、系の差異が引き起こす問題についてイロイロ議論がされていますが、
実際どれほど、致命的な問題を引き起こすんだろう?
と思いまして。

851 の方、ツボなレスをありがとうございました。
0860デフォルトの名無しさんNGNG
Z符号反転だけじゃなくて、反転する行列はさまないと回転が逆のまま
あと、ライトの方向とかの反転とか?
0861デフォルトの名無しさんNGNG
なんかムカツク言いまわしなのは確かだ>思われ
0862デフォルトの名無しさんNGNG
>>860
モデル座標系は右手系、投影時に左手系に直す場合、
すべての座標変換は右手系で最後にzを反転してやればいい。
OpenGLは左手系なんだけど俺は全て右手系で処理してるよ。
Z符号反転と言うのはそのまんまzに-1を掛ける行列を挟むと言う事
なんじゃない?もちろんここは投影の段階でするべき事。
ライトについても同じ行列で処理すれば良い。
0863デフォルトの名無しさんNGNG
電気のプラス・マイナスみたいなもんで、もうあとには戻れないんだろうなぁ。
0864デフォルトの名無しさんNGNG
リトルエンディアンとビッグエンディアンみたいなものか。
0865デフォルトの名無しさんNGNG
>>864
MSとインテルのおかげでもう少しでリトルのみになるよ。(w
0866デフォルトの名無しさんNGNG
>>865
俺はビッグエンディアンの方が好き。
ネットワークエンディアンだし。Javaもビッグエンディアンだし。
どっちになるかって言ったらやっぱビッグエンディアンかなあ。
CPU的にはリトルの方が慣れていると言えばそうなんだけど。
0867865NGNG
>>866
アセンブラを人間がやるならビッグの方がミスが少ないと思うよ。
いまは使わないからどっちでもいいんだけどね。データのやりとりが
ちょっと面倒なときがあるくらいで。
0868デフォルトの名無しさんNGNG
昔はビッグエンディアン派だったが、
下位アドレスには下位バイトが来る方が自然かもと、
思い直してから、宗旨変えした。
語長で、オフセットと桁の意味が変わらないし。

0869デフォルトの名無しさんNGNG
座標系の決定的な違いは、数学的真理問題ではなく、人間の慣れの問題だと思う。
左通行と右通行でも理屈は同じだけど、人間には何かと慣れの問題があるから
なるべく多数な人間が慣れていると思われる方向に傾けるのがいいと思う。

一番いいのは、どちらに転がっても適応することに慣れること?!
0870デフォルトの名無しさんNGNG
>>862
>OpenGLは左手系なんだけど
おいおい(w
0871デフォルトの名無しさんNGNG
OpenGLってモデルビュー変換時は右手系だけど、
射影変換でz反転されてその後は左手系になるよ。
0872デフォルトの名無しさんNGNG
めじゃーなバス、デバイスがリトルだから、
CPUもリトルがいーよ。PS2もリトルだしな。
マシンの外側はnetworkに敬意を表してビック。
0873デフォルトの名無しさんNGNG
>なるべく多数な人間が慣れていると思われる方向に傾けるのがいいと思う。
えっと、どっちになると思われます? 非PC系含めて。
0874デフォルトの名無しさんNGNG
>えっと、どっちになると思われます? 非PC系含めて。
実際のとこ分からないので、このスレでアンケートとってみません。
この手の話題はプログラマならずグラフィッカーにも登場願いたいですが。
0875デフォルトの名無しさんNGNG
個人的にはZが上方向が好きなんだけど(笑)
0876デフォルトの名無しさんNGNG
>>875
飛行機系っすか?
0877>875NGNG
俺も
0878デフォルトの名無しさんNGNG
>>875

MAX系?
0879デフォルトの名無しさんNGNG
そろそろ新スレッドに移行しませんか?
0880デフォルトの名無しさんNGNG
---------------------------- <<終了>> -----------------------------
0881デフォルトの名無しさんNGNG
だれか、スレ作って。
0882デフォルトの名無しさんNGNG
まだだ。ギリギリまで粘ろうぜ。この快感がたまらんハァハァ
0883デフォルトの名無しさんNGNG
引っ越し先:
http://piza.2ch.net/test/read.cgi?bbs=tech&key=987830306&ls=50
0884デフォルトの名無しさんNGNG
はい、無難にこっち。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=987830963
0885プチ4748mNGNG
「非PC系ゲームプログラミングその2」、ちゅーわけで。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=987830963
0886デフォルトの名無しさんNGNG
1000取ったり!
0887デフォルトの名無しさんNGNG
---------------------------- <<引越し終了>> -----------------------------

0888デフォルトの名無しさんNGNG
age
■ このスレッドは過去ログ倉庫に格納されています