非PC系ゲームプログラミング
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG立派なOSなんか載っていない機種向けの
ゲームプログラミングについてのスレです。
とりあえず
・守秘義務は守る(つっこんだ質問はそれにふさわしい所でどうぞ)
・身元がばれないように気をつけよう。詮索もやめよう。
・プログラムの話をしよう。
みたいな感じでマターリいきましょう。
00021
NGNGそんなわけでさっそく立ててみました。
需要あるかなぁ・・・
00031
NGNG「mallocは使ってはいけない!?」
で、私は
>結局必要なのは計画的なmallocの使用であって、
>mallocを全面禁止というわけではないですよね?
>その際、自作mallocか出来合いのmallocかは
>それほど関係ないと思ったのでした。
>(自作のほうが挙動全て把握できるというのは了解です)
>いや、なんかみんな「mallocつかうと虫食いになるからダメ」
>って感じだったんで、そうじゃないでしょ、計画的に使えば
>全然おっけーでしょ、って主張したかったのでした。
と結論付けたのですが、どうでしょう?
0004デフォルトの名無しさん
NGNG扱うところは固定領域にするとかやってもいいかな。
>>3
00053
NGNGそうですね。
ただ、malloc/freeの対応チェックは
それほど地獄ではない(苦痛なのは確かですけど)と思うんです。
ヒープの状態が虫食いになってしまったときが一番厄介だと思うので
そうならないようにちゃんと計画立てさえすればmallocは便利なので
禁止しないでーと訴えたいのです(誰に??)
最近ではメインメモリも大きくなってきたから
それほど神経質にならなくても大丈夫なのかもしれませんけどね・・・
0006デフォルトの名無しさん
NGNG使い終わったらヒープごと抹消します。
ヒープは固定サイズで複数持てて、
これはmalloc/freeみたいに確保(自前ルーチンですが)。
タスクはクラスのnew/delete演算子をオーバーライドして構造体プールで。
C標準関数やSTLの類は一切ナシでし。
Windowsでは普通に使ってますけど。
0007デフォルトの名無しさん
NGNGリストとかもチェーンからはずれても、あえて解放しないとか。
そしてプール分はある特定のタイミングでガベージコレクトすれば
うまく行きそうな気がする……
ゲーム専用機プログラムしたことがないので勘で書いているけれど、
実際どんなもんですか?
もし突っ込んでよかったら、「malloc/freeしない」よりも
もうちょっと具体的に対処法を書いてもらえると参考になります。
しかし、クラスのnew/deleteをオーバーライドってのは激しいなぁ。
0008でふぉると名無しサン
NGNG個人的には、malloc/freeを全て管理するクラスみたいなもんを
作れば、全て丸くおさまるんじゃないかなぁ、なんて思ってるんですが
甘いですかね?
管理するクラスを作るって考えが甘いか??(そんな簡単に作れんって感じ)
0009デフォルトの名無しさん
NGNGクラスかどうかは全然関係ないとオモウヌ。
0010デフォルトの名無しさん
NGNGでもおれはほとんどstaticとautoでことが済むなぁ。グラフィックオブジェクト
とか、キャラクターオブジェクトは動的に確保しなくちゃいけないけどこのレベル
のものは自作newで確保する。
Stringさえ我慢してchar[]使えば生のmalloc使う必要はほとんどないと思う。
0011名無しさん@お腹いっぱい。
NGNGそれ、参考にします。
つーか、メモリプロテクトとかないRTOSでプログラムする場合
staticでとっちゃいますよ。
0012デフォルトの名無しさん
NGNGうにゃ、malloc&freeそのものでし。
標準関数のmallocの実装は、信じられないほど非効率なことが多いです。
ごくシンプルなmallocに置き換えるだけで、数倍速くなったりして。
(数十倍ってのも経験アリ)
0013デフォルトの名無しさん
NGNGちゅ-事は、malloc&freeはまったく使用せず、
自作のmalloc&freeもどきを使用するって事け?
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGまあ自作したって良いけど、俺は最初に生のmallocで確保して適当
に振り分けてたよ。
0016デフォルトの名無しさん
NGNG正解
0017デフォルトの名無しさん
NGNGよーするに、はじめにごっそりmallocでとって、それを適当に振り分けるのが
自作mallocもどきって事け?
大正解?
それとも、出直せぃ!ってか?
つーか、みんなヤッテイル事かと・・・そーでもないのか?
0018デフォルトの名無しさん
NGNG環境にもよるけど(マジレス)。
0019デフォルトの名無しさん
NGNGいやあ、べつに生mallocでなければならない理由もないし。
あたしゃ、ある日コーディングしていて、
ふと標準関数がヒープ確保用のmalloc/freeを含めて数種類しか
存在しないのに気づいて、せっかくだから全部追放してしまったダスよ。
スタートアップも書き直してメモリ節約。
0020デフォルトの名無しさん
NGNG>>17 俺もそれだと思ってたな。これなら staticで確保してから振り分けてもいいと思うが。
0021デフォルトの名無しさん
NGNGビジネス系アプリならassertで確認できるロジックが大部分かもしれないけど、
ゲームだと画面に正しく表示されているかを確認する作業が入ることが多いので
テストの自動化がひじょーーに困難です。
なにか良い手はないものか模索中。成功例失敗例などあればお願いします。
0022デフォルトの名無しさん
NGNGmallocを使ってるゲームはたくさん発売されているよ。
俺も何本も作ったし。
普通、自作mallocではオリジナルのmallocは使わないよ。
コンパイラがヒープブロックの先頭アドレスと終端アドレスに
ラベルを振ってくれるからそれを使うんだよ。1バイトでも惜しいからね。
処理系依存だけど、どのコンパイラでも必ずできる。
またmallocを乗っ取る仕組みが組込み向けのコンパイラにはあるから、
それを使えばライブラリでmallocを使っていても問題ない。
0023デフォルトの名無しさん
NGNG俺が好んで使っているのはオートプレイ。
アドベンチャーなら、自動的にキーを押して、
選択肢が出たらランダムに選択。
シューティングなら無敵にして永久プレイ。
うまいassertの入れ方がポイント。
assertを残してコンパイルして焼き、2〜3台のマシンで垂れ流しプレイ。
デバッグの人手が足りないときとか、土日なんかに重宝するよ。
演出的なバグは、目視したりビデオに撮ったりするしかないねぇ。
002421
NGNG達人ですね。断片化しにくいアルゴリズムの参考URL,文献などあれば
紹介していただけないですか?
ヒープの先頭,終端アドレスのラベル使用は理想的だと思うんですが、
Cライブラリのprintf等がmallocを呼んでいると破綻しませんか?
自前mallocをリンク順の先頭にもっていって乗っ取る(インター
ポジショニング)んでしょうか。
>>23
情報サンキュ。
ある程度まで組み上がったら、そういう手が良いと思いますね。
一番悩んでいるのはオートプレイまで組み上がる前の、たとえば
グラフィックライブラリ作り中とかそういう開発初期の部分なのですよ。
わりと低レベル側の実装を高速化したときに、バグを紛れさせてないかを
確認したりとか、そういうレベルなんですわ。
0025デフォルトの名無しさん
NGNG(一応、マジレスです)
0026デフォルトの名無しさん
NGNGユニットテストって何ですか?
0027デフォルトの名無しさん
NGNG単体テスト。例えば関数単位やクラスでの。
ビジネスアプリ(特にJava)で流行ってる。
http://www.JUnit.org/
書籍「リファクタリング」を参照すると良い。
0029デフォルトの名無しさん
NGNGレビュアー置いてソースレビューだよね。
(どんな優秀な人であっても勘違いしてない
保証はないし。ボケ行為はしょっちゅうある
もんですよ。人間が書いてんだから。)
後半ではデバッガでトレースだよね。
00303
NGNG開発言語はCでしょうか?
C++だとメモリプールって厳しそう。
デストラクタとかの兼ね合いもあるし。。。
C++だったら、やっぱり素直にmallocですかね?
(自作でもいいけど、挙動はmalloc準拠)
で、グローバルなnew/deleteをmalloc使って実装。
虫食いにならないようにnew/deleteを使用。
ですよね?
というか、C++使ってます? STLは?
003121
NGNG>というか、C++使ってます? STLは?
どっちもバリバリ使ってます。
グローバルなoperator new でメモリ管理は乗っ取れるので、最初は気にせずに
コーディングしてました。
最近マルチスレッド化するためにoperator newをオーバーロードしましたが、
特に問題なく動いています(STL含め)。
0032デフォルトの名無しさん
NGNG003330
NGNG優秀な開発チームって感じでうらやましい。。。
せっかくSTL付いてきてるのだから、
一度バリバリ使ってみたいと思う今日この頃。
周りと足並み合わせなきゃダメですけど。。。
>>32
ユーザーですか?
んー、どのへんがうんこなのか詳しく聞きたい気もするけど、、、
守秘義務とかに触れるかなぁ・・・
プログラムに関係ないレスになっちゃったのでsageます。
すんません。
0034RenderWareうんこ
NGNGバグ多い。
バグ修正しない。バグ報告投げると「バグです。新しいSDKでは直ってます」
「じゃあ新しいSDKください」「それはバージョンアップ扱いなので、別料金です」
「新機能の追加じゃなくて、バグ修正なんですが...」「いいから金払えや」
って感じ。
0035デフォルトの名無しさん
NGNGoperator new を乗っ取った時、
コンストラクタのコールはどうするんですか。
0036デフォルトの名無しさん
NGNGいらない。
というか、そういう質問をするということは、new演算子とoperator newとの
関連を正確に理解していないということ。
Effective C++を読んでください。
0037デフォルトの名無しさん
NGNG>>35はグローバル領域に置かれたオブジェクトのコンストラクタのことを言ってるんでしょう。
main関数がスタートする前に、これらのオブジェクトのコンストラクタが呼ばれるから。
それを含めて、判ってないと言ってるのかな?
それはいいとして。
正式な手順としては、new を呼び出すコンストラクタでは必ず最初に
メモリ管理クラスへのインスタンスを参照するようにすればいいんです。
そうすれば、メモリ管理クラスのインスタンスが何よりも先に生成されるから。
ただ、全てのクラスが参照する可能性のあるメモリ管理クラスでこれを
やると、非常に煩雑になりますし、うっかり参照し忘れて誤動作する危険があります。
そこで、たいていのコンパイラでは、main 関数を呼び出す前の、
さらにグローバルコンストラクタを呼び出す前に、
ひと仕事できる仕組みが用意されています。
それは特定の名前の関数を定義することだったりとか、
SHCならグローバルコンストラクタを手動で呼び出すとか。
とにかくコンパイラによって仕組みがぜんぜん違うので、
マニュアルをよく調べてくれとしか言えないです。
そういうことを考えてないようなコンパイラでも、
main関数呼び出し前のハードウェア初期化ルーチンを
アセンブラで記述しなければならないので、
そこを書き換えることで対応できます。
ただこれは、どこのゲームメーカーでもobjファイルしか
提供してなかったりするから、ゲームマシンの場合は難しいです。
003837
NGNGmallocを呼んでしまう可能性があるので、
やっぱ正式なやりかたはダメなことを思い出しました。
それがなかったらnewの中でメモリ管理クラスを
初期化すればいいんだもんね。
003930
NGNGうへ。けっこうキツイですね>RenderWare
結局すべて自作したほうが何かと便利ってことですね。
手出さなくて良かった。。。
ただ、みんながみんな自作するとノウハウが蓄積されず
業界全体としては非常にもったいない気もするんですけどね・・・
元締めががんばってノウハウを広めてくれることを期待。
頼むよ、マジで>元締めさん
0040デフォルトの名無しさん
NGNGそのへん、CodeWarriorはちゃんとサポートしてますね(forPS2)
スタートアップルーチンを変更しなくても、グローバルなコンストラクタ
の呼び出しタイミングを制御できます。
ただ、問題は、その仕組みを知らずにC++で書いて、
グローバルなコンストラクタを呼び出さないで
はまってしまう方もいるってことですかね(汗
クセも結構ありますが、CodeWarrior、いい線いってると思います。
おすすめデスヨ! (for PS2)
004136
NGNG>>>35はグローバル領域に置かれたオブジェクトのコンストラクタのことを言ってるんでしょう。
>main関数がスタートする前に、これらのオブジェクトのコンストラクタが呼ばれるから。
スマン、そういう意図は想定してなかったよ。
>正式な手順としては、new を呼び出すコンストラクタでは必ず最初に
>メモリ管理クラスへのインスタンスを参照するようにすればいいんです。
インスタンスの参照とは? Singletonパターンを言っているのなら、そのとおりですが、
異なる翻訳単位のインスタンスをただ使用するだけでは、初期化順序は制御できない
のでは?
どちらにせよ、C++の静的インスタンスはいま話題にしているコンストラクタ
呼び出し順序が問題になるので、なるべく使わないほうが良しですね。
0042デフォルトの名無しさん
NGNGウチのプロジェクト(メインメモリ 2M の某マシン上)でも、
自作系の malloc / free を随所でやってましたよ。
ヒープがズタズタになって苦労しましたけど、この手法に訴えないと
作れないソフトでしたので。
さておき、3D スレなどとかぶるかも知れないけど、
せっかくなので、そっち方面の非PC系ゲームプログラミングの話題も
盛り上がってくれるといいなぁ。
0043デフォルトの名無しさん
NGNG>せっかくなので、そっち方面の非PC系ゲームプログラミングの話題も
>盛り上がってくれるといいなぁ。
じゃあネタふりをひとつ。
関節アニメーション時の回転行列の表現には3D当初はオイラー角表現が
多かったと思います。最近はUnit Quaternionも選択肢に入ってますが、
みなさんは使ってますか?
オイラー角の値を単に線形補間すると姿勢が極端に変化する(ジンバルロック)
現象が起こります。Quaternion表現ならそれが回避できて萌えー
というのがウリのひとつです。
こちらでは昔撮影したモーションキャプチャーのデータの再生に
Quaternionを使ってみました。以前オイラー角補間で表示した際には
補間がうまく表示できないモーションデータも、Quaternionによる
補間ではうまく表示できるようになりました。
この例ではデータ構造も補間方法も全部自分ルールで決められたため
ラクチンでしたが、各種グラフィックツールからエクスポートする際には
ツールの内部表現などによって使いにくいこともあるかと思います。
なにか経験があれば教えてください。
0044デフォルトの名無しさん
NGNGんーと、そこまでの苦労をする位なら消極的だけどやらないほうが
いいんじゃないでしょうか?
メモリ関係のバグは作る可能性が高い割には発見しづらいし
問題箇所を特定するのも難しいし再現性も悪いしで最悪な気がする
んですけど。
動的なメモリ確保がボトルネックになるのならばインスタンスは
始めに一定量確保する方法をとって、どうしても動的に確保しなければ
ならない時はしょうがないから標準関数を使う、じゃダメ?
メモリのフラグメンテーションについては防護策は無いけど(っつーか
いらないと思う)、メモリの使用量に関してもこっちのほうが有利だし、
バグは出にくいはずですよね?
あと、これは素朴な疑問で、知ってる人にとってはバカバカしいかも
しれないですけど、自作メモリマネージャを使う場合、スタックに
確保されるようなクラスはどう処理されるんでしょうか?
簡単にでいいですから教えてほしいです。
あ、new演算子のオーバーロードだからnewキーワード使わなければ
ちゃんとスタックに確保されるか。
0045デフォルトの名無しさん
NGNGウチも、エクスポートの時点でクオータニオンでやってますよ。
ただキーフレーム間の補間アルゴリズムは、クオータニオン+ベジェ
とかいろいろあるようなので、結局その都度専用ルーチンを起こしたり
ちまちまやってます。
0046デフォルトの名無しさん
NGNG標準がタコなのはともかく、自力でmalloc/freeをこしらえたところで
ゲーム用途には酷使できないのでは?
ゲーム中キャラ登場時のみに malloc だとかの用途ならともかく。
こういう酷使利用時には別のなんらかのメモリ管理機構が必要だと思います。
0047デフォルトの名無しさん
NGNGウチは酷使しまくりでした。
技術的には問題ないんですが、難しいのはむしろプログラマー間の
コンセンサスの問題でした。いつ開放されるとも知れないタスクが
相互にデータのやり取りを行うという、実に面倒なやつでして。
0048デフォルトの名無しさん
NGNGそういう時代でもなくなってきたってのが論旨では。
0049デフォルトの名無しさん
NGNGWEB を巡回していると、オートポインター擁護論を見かけますが、
現場で使えるほどの物なのかどうかは、ほとんど聞く機会が
ありません。
ウチでは、別の手法でポインターのセキュリティーを維持して
いるので、オートポインターには縁がありませんが、
ホントに使える技術なら是非知っておきたいですから。
0050デフォルトの名無しさん
NGNGええと、非PC系での開発でしょ? 使いますよ。
0051デフォルトの名無しさん
NGNG005250
NGNG0053デフォルトの名無しさん
NGNGかたや、非PC系ゲームプログラミングと言えば、ホビーと
言うよりはお仕事色が強い。
恐らくこのスレはお仕事色の話題に強いと思われますので、
ネタ振り。
個人的にホビーでやっているなら、趣味的な高度な管理機構
を構築したり、C++ でトリッキーなこともバシバシできるの
ですが、お仕事でとなると共同作業なのでそうも行きません
よね。
共同作業の場で、回避できないのが、ヘボプログラマー対策。
彼らとコンセンサスが取れないような技術に手を出そうものなら、
開発は難航し、会社が傾きます。
かといって、彼らを教育する時間も資金もない。
このような場面でも、有用な技術やスタイルってどんなものが
あるでしょうか?
0054デフォルトの名無しさん
NGNGmalloc/free など(自作含む)のメモリアロケーションを極力避ける。
いっそ行わないほうが良い。
悲しいし、俺はやだけど、これはひとつの有用なスタイルです。
0055デフォルトの名無しさん
NGNG現状、曲面パッチって使い物になります?
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNG>技術的には問題ないんですが、難しいのはむしろプログラマー間の
>コンセンサスの問題でした。いつ開放されるとも知れないタスクが
>相互にデータのやり取りを行うという、実に面倒なやつでして。
えー、そんなケースって非PC系じゃまずないでしょ?
っていうかPC系でもまずないよ。
いつ開放されるか知らないオブジェクトへのアクセスって昔から
様々な安全装置が考え出され議論が繰り返されてきましたが、決定打がないんですよね。
どれもこれも気休め程度の安全装置しかなくて。
0060デフォルトの名無しさん
NGNG一人残らずヒープを知っていることが最低条件。
あとC++が言語仕様として持っている new delete だけじゃ
ゲーム系では物足りなかったりするでしょ?
特にdelete。
ほんとにその瞬間に消えてもらっては困るケースが多いんだよね。
だから結局、deleteとはまた別の死亡メンバ関数を用意したりして。
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG作ってみよう!か。
0063デフォルトの名無しさん
NGNG>決定打がないんですよね。
あるよ。
0064デフォルトの名無しさん
NGNGそうそう。そいつが描画パケット握ってたりしてね。
この例以外でも、ゲームの世界では C++ のサービスが足かせとなることしばしば。
結局私は、主に C 使って C++ みたいな事を実装してます。手が疲れるの。
0065デフォルトの名無しさん
NGNGあ、オレそう言うの大好き。
0066デフォルトの名無しさん
NGNGってゆうかそれ設計の時点でミスってる可能性の方が高いよ。
だって俺そんなので悩んだこと無いもん。
0067デフォルトの名無しさん
NGNG「固定長の配列を固定数確保。固定長ではメモリが足りない場合は、
2個連結したタスクを作って、ワーク領域を確保しましょう!」
というようなヘモヘモタスクシステムが世に溢れています。
なんとかしてください。
0068デフォルトの名無しさん
NGNG「宗派」の乱立にあると思います。
皆が皆、「オレのが究極!」と思って譲らない。
0069デフォルトの名無しさん
NGNGん?表示系やったことある?
0070デフォルトの名無しさん
NGNGいや、ハードによるメモリ遅延参照は避けられないのよ。
コンシューマーってDMAだらけでね。
じゃーハード設計のミスかというと答えはNo!
時代は演算力ではなくバスの取り合いこそが勝負の決めてなので
そこら中にDMAを張ることくらいしか、パフォーマンスを稼げないのです。
0071デフォルトの名無しさん
NGNGオートポインターって、std::auto_ptrのこと? 割と便利だよ。よく使ってる。
普通にポインタで持つときに比べて実感しているメリットは
・だれがdeleteすればよいかが明確
・開放し忘れが少ない
0072デフォルトの名無しさん
NGNGうちでは使ってないですね。試してみたくはあるけど
0073デフォルトの名無しさん
NGNG>ヒープ政治で成功するには、そのプロジェクト内のPGが
>一人残らずヒープを知っていることが最低条件。
ヒープ知らない人っているんだ... 鬱deathね...
>>60 >>64
>この例以外でも、ゲームの世界では C++ のサービスが足かせとなることしばしば。
描画パケットの例はよくわかります。
こっちでは独自の機構を作ると、かえってヘボグラマーに説明しにくくなるかと思って、
proxyオブジェクトのような機構を用意して、deleteされるとproxyは消えるけど、
描画パケットはすぐには消えないような実装にしています。
deleteのほかにはどんなC++機構が足かせになるんでしょうか?
よければ教えてください。
0074デフォルトの名無しさん
NGNGなるほど。
では、オートポインターのデメリットはあるでしょうか?
0075デフォルトの名無しさん
NGNG生のポインタの引き渡しの時に、
よ〜く構造を理解していないと痛い目に遭う。
0076デフォルトの名無しさん
NGNG現状、3D モデリングツール、モーション作成ツールの決定版と言えば?
MAYA ってみんなどれぐらい使っているんだろう?
0077デフォルトの名無しさん
NGNGいや、でもそれはある意味正攻法なのでわ。
0078デフォルトの名無しさん
NGNG双方向リストを複数本? ツリー構造で全部一緒くた?
0079デフォルトの名無しさん
NGNGある意味ってどういう意味ですか?
安全という言う意味?
0080デフォルトの名無しさん
NGNGこれをヘモヘモと言われると、他に何かあるんかなーと。
フラグメンテーション覚悟してmallocでもいいんだけども。
0081デフォルトの名無しさん
NGNGツリーです。
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNGプログラムの初めに一気に使う分の領域を確保して、自分でやりくり。
んなわけねーか?(藁
0084デフォルトの名無しさん
NGNG断片化を解決できないのは技術力が無い証拠。
リーク検出ツールの1つも作れねぇのかよ。
そんなもんなんとでもなるし、一度安定してしまえば
問題にはならない。
リソースの管理にproxyを使うのは常套手段。
DelphiだってGDIハンドルの管理にはproxyを使っている。
>>73みたいにね。だからデストラクタ以外に死ぬ機構を用意するなんて事はまずない。
ま、ヒープ使わない連中はオブジェクト指向を知らないだろうから、
proxyと言っても知らないだろうけどな。ぷ。時代遅れも甚だしいぜ。
最近のゲームプログラマはレベル落ちたな。
0085デフォルトの名無しさん
NGNG> 断片化を解決できないのは技術力が無い証拠。
むむ、言いますなぁ。
とか言っといて MMU などのハードの助けを借りてたら笑いますけど。
0086デフォルトの名無しさん
NGNG正解
0087デフォルトの名無しさん
NGNGmemory pool で断片化を避けているということでしょうか?
C++でmemory poolする場合にはoperator newをクラス単位で乗っ取ったりする
こともあるようですが、具体的なインターフェイスはどうしているんでしょうか。
0088デフォルトの名無しさん
NGNG解決する方法教えて下され。いや、ほんと。m(__)m
0089デフォルトの名無しさん
NGNGって、誰も聞いてないね……。
0090デフォルトの名無しさん
NGNGインスタンス内部で何か外部リソース抱えてたときは、地獄だぞ。
いつガベコレされるかVM作った人以外誰にもわからん、という
ことになる。
いらなくなったらちゃんと解放しようね。
0091デフォルトの名無しさん
NGNGgcは便利だぞ?知らないの?!
一度使ったら止められないよ。
効率が問題になるならゲーム用のgcでも作る手間かければ?
まあオブジェクトの有効期間をクライアント側から教えてやるのは有効な手だけど。
009290
NGNGそういう話じゃなかったつもりなんだけど。
IOバッファとかソケットポートとか、Windowの描画とか
の話のつもりだったの。常時稼動のサーバモジュール
だと、知らんでえらい事になるのをよく目撃するから。
Javaから入った素人サンは、「リソース解放」のことを
まったく気にしない人が多いの…
ガベコレ便利は無条件同意っす。
0093デフォルトの名無しさん
NGNGMMU使えるんですか?
たしか某PS2には載ってたような・・・
使っている人います?
0094デフォルトの名無しさん
NGNGgcが便利なことはよくわかります。
当方はgcを実際にコンシューマー開発で使ったことはないのですが、
コンシューマー開発での使用経験はありますか?
もしあれば、実装などで苦労した点や問題になった点を教えて
いただけないでしょうか。
特にDMAパケットのように本質的に非同期なバッファの管理でも問題に
ならないのかどうか、非常に興味があります。
0095デフォルトの名無しさん
NGNGgcじゃないけど参照カウンタなんかは比較的使われますよ。
まあ参照のリリースを忘れたらメモリーリークするけど。
更に一歩進めたauto release poolを用いれば解放し忘れは
ほとんどなくなるでしょう。少しも難しく無いです。
って言うか(モノホン)gcは難しすぎます。 Javaのあの速度は奇跡的です。
後、一般的にgcでシステムリソースを解放というのは無いでしょう。
明示的に解放するべきです。むしろファイナライザで解放忘れを
チェックする保険として見た場合gcは大変便利で安全っす。
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG某2やってていっつも思うのですが、
角度を1周2πのラジアン表記で扱うメリットってなんですか?
何かの計算が高速化されるとか、あるんでしょうか?
1周 1.0 の単位なら、テーラー展開の時発散しにくいし、
1周 65536 の単位とかにすれば、正規化もラクだと思うんですが。
0099デフォルトの名無しさん
NGNGsin(x) = x - (1/3!)x^3 + (1/5!)x^5 ・・・
※ 5! = 5 * 4 * 3 * 2 * 1 = 120
で求まります。
これを一周 2*PAIではなく 1.0 だとかにしてしまうと、sin() 一回につき
定数掛け算(あるいは割り算)が最初に一回だけ余分にかかってしまいます。
最初の最初に発生する掛け算で、しかもその後の収束計算がその結果を参照
する性質のため、ハードウェアで回路組んだとしても「並列化不能」なので
必ずペナルティが発生します。
人為的な仕様ではありません。
0100デフォルトの名無しさん
NGNGなるほど、ひとつ賢くなりました。ありがとうございました。
0101デフォルトの名無しさん
NGNGいや、ゲーム屋のウチとしてはほんとに知らんのですよ。
0102デフォルトの名無しさん
NGNGauto release pool ってなんでしょ?
自動解放?んー、いまいち分からんです。
gcは、予期せぬタイミングである瞬間に大量のメモリコピーが
発生して一時的にフリーズしてしまう!という印象(あくまでも印象)
があるので恐くて使ったことがありません。
0103デフォルトの名無しさん
NGNGC++やJavaのようなオブジェクト指向言語で頻繁に使われる
オブジェクトの設計をまとめた、定石集みたいなもんでし。
最も有名なのは、経典であるGamma本に載っている23個のパターンで、
それぞれに名前がつけられ、特性が綿密に分析されています。
導入のメリットとしては、過去のいろんなプロジェクトで成功した設計が
すぐに利用できること、プログラマ同士の意思疎通が楽になること
(「あ、そこはObserverパターンになってるから」とか)などがあります。
とまあ、ゲーム系では普及率が低いので、やや真面目に書いてみました。
詳しくは検索エンジンか本屋へゴー!
吾輩もあまり活用できておらず、忸怩たるものがありますが。
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNG足元はあんま変わらない。。。
メモリがどんなに増えていも、
あればあるだけ使っちゃって、
結局シコシコオーバーレイ・・・宇津・・・
0106デフォルトの名無しさん
NGNGauto release poolと言うのは
普通の参照カウンタ式のオブジェクトは参照を放す度に
obj.release();なんて明示的に解放してやる必要があるんですけど、
あるゴミ箱を用意してあげて、objをそこに登録し、まとまった
時期(mainループの終わりとか)に一気にゴミ箱の中身を全部捨てる
と言うだけのものです。
もちろん、内部の実装は登録されたオブジェクトのrelease()を
呼ぶだけ。実装が単純なだけ高速でしかも安全です。
0107デフォルトの名無しさん
NGNG>と言うだけのものです。
例えばそのmainループの期間が1Vだったとして、ゴミ箱の中身を一度に捨てる
タイミングは1Vおきという意味でしょか?
0108デフォルトの名無しさん
NGNGhttp://www.fsinet.or.jp/~nito/CocoaClub/article03.html
に詳しい事が載ってます。Cocoaと言うMacOSXのフレームワーク
のメモリ管理の説明なんですけど参照カウンタ式のメモリ管理
を行っているんですごく参考になるとおもいますよ。
基底クラスのNSObject等調べてみるといいでしょう。
0109デフォルトの名無しさん
NGNG0110普通のななしさん
NGNG> リーク検出ツールの1つも作れねぇのかよ。
マジボケ?
0111デフォルトの名無しさん
NGNGメモリ管理をPCでやってる人いる?
メインプログラムが質実剛健でも、Direct3DやDirectShow内部で
好き勝手やられちゃって意味がなかったりして…。
0112デフォルトの名無しさん
NGNGVC++6.0のヒープマネージャはかなり高性能だから……
(スレ違いなので下げ)
0113デフォルトの名無しさん
NGNG0114デフォルトの名無しさん
NGNG割合なんでしょ?
友人関係に聞くと、大きな会社が割とタスク使ってないような話ですね。
セ○とかコ○ミとか。カプ○ンもタスクとはちょっと違うらしいし。
タスク派はナ○コやSN○ぐらい?
(といっても、でかい所はチームごとで違うのかもしれないですけど)
俺、タスクじゃないと組めないです。
0115デフォルトの名無しさん
NGNG整備されている団体もあれば、完全前時代的な団体もあります。
ピンキリです。
タスクシステムだけではないですからね。ゲーム開発で必要なものは。
下手するとカーネルOSもどきまで作ってるような連中もいますし。
とにかくピンキリです。
0116デフォルトの名無しさん
NGNGもちタスクシステムと統合。
0117デフォルトの名無しさん
NGNGタスクってここ↓で説明されてる奴のことっすか?
http://giggle.cside6.com/hotate/shoot/step03.htm
だとするとなんの役にも立たんような気がします。
これって珍妙なジャンプテーブルっすか?
0118デフォルトの名無しさん
NGNGジャンプテーブルというか、簡単なオブジェクト指向みたいなもんですかね。
ワークと実行関数をセットにして管理するという。それをアセンブラの
時代からタスクという名前でやってきたというだけです。
0119デフォルトの名無しさん
NGNGとすると114の人のように「タスクじゃないと組めない」って人は
どっちかっていうと特殊な人ですね。
0120デフォルトの名無しさん
NGNGそこの説明はあまり良くない。メリットが見えなくても仕方ないと思うナリ。
この辺はプログラマ板などで散々話題になったたので省略。
0121デフォルトの名無しさん
NGNGかも。
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG基底クラスのnew演算子もオーバーロードして。
class HogeTask : public Task {
public:
void Run() {}
void Draw() {}
}
taskManager->Invoke(new HogeTask()); // タスク起動するよ〜ん
0124123
NGNGデザインパターンのCompositeパターンを使用。
0125122
NGNGえっと、>>122宛のレス・・・だよね。
Hotate's Core見て、タスクってそれのことだと思ったんだけど・・・。
ちがうのかな?
デザパタはしらんので何もいえないんだけど。(勉強したいんだけど・・・忙しさにかまけてる(^^;)
0126デフォルトの名無しさん
NGNGこの業界。
プログラム能力は上昇していくけど全体的な技術水準は上がらない
からちゃんと勉強はした方が良い。
デザインパターンはOOPに慣れたころに1冊本を読めばOKでしょう。
自分のしてきた事と本に書いてある内容がうまくリンクすれば
理解している証拠。
タスクと言うとかなりの語弊があるけど、123氏のようなやり方は
一般的では無いでしょうか。
でも上に書いてあるtaskManagerはスタティック(グローバル)では無く
内部変数で参照を持つようにしたほうがいいです(当たり前か)。
0127デフォルトの名無しさん
NGNG「オブジェクト」とか「アクター」とか読んでることもありますぞ。
結局やってることは同じなんですが。
0128デフォルトの名無しさん
NGNGプライオリティごとにリストにする構造しか知らないんだけど、
ツリー(compositeということはn分木?)にするメリットって
なんなんでしょうか?
今のところ、リスト構造であまり不便を感じていないんですが。
使っているかた教えてください。
0129デフォルトの名無しさん
NGNGシステム的にツリーをサポートしなくても、アプリプログラマーが
勝手に実装できるものだと思います。(そのツリーの先頭をキックするのは
そのタスクがやるのはもちろんですが)
0130デフォルトの名無しさん
NGNG実装方法次第と言えばそれまでですが、ツリー構造だとタスク間に親子関係
持たせて、子タスクを親タスクに従わせたりするのに便利です。代わりに
実行順の制御が弱くなりますが。
0131128
NGNGなんとなくイメージはつかめましたが、もう少し質問させてください。
1.リストではプライオリティ(実行優先順位)で制御している各タスクの
実行順序を、木の巡回順序を使って実装するということでしょうか。
コンシューマーゲームだと、主にVSync割り込みに同期して動く高優先のタスクと、
将棋の思考ルーチンように表示系の合間に動作させる低優先のタスクなどがあると
思います。
ツリーによるタスクの実装では、優先の異なるタスクは異なる木に所属させるような
考え方になるのでしょうか?
つまり、リスト構造では、一つのプライオリティ値に対して一本のリストを
持たせますが、その一本のリストを一つのn分木に置き換えるというイメージ
でしょうか?
2.子タスクを親タスクに従わせるというのは、親タスクが破棄されたときに、
子孫タスクもすべて破棄される、というようなことを指しているのでしょうか?
0132デフォルトの名無しさん
NGNGいいね。そんな感じ。
別に、n分木ってわけじゃないけどネッ
0133デフォルトの名無しさん
NGNGその時ばかりは思考ルーチン専用のスレッドを作りました。(タスクではなく)
その他、ビリヤードの思考ルーチンも10年以上昔に担当したことありますが、
その時もスレッドでやりました。
思考が終了したときに、特定のエリアに終了サイン&思考結果を送り、別スレッド(mainスレッド)内の
どこかでそのサインを受け取るというイメージです。
0134↑補足
NGNG1「独自のレジスタセットを持っている」
2「独自のスタックエリアを持っている」
3「予期せぬタイミングで処理権利を奪われる」
であることを前提としています。(他にも条件があるかもしれませんが)
1に関してですが、実際にはBIOSあるいはOSがスレッド切り替え時に
レジスタの中身を適切に入れ替えることで実現します。
タスクとは別次元の並列実現アプローチなので誤解なきよう、、
タスクはあくまでもアプリプログラマー側の工夫で定義も変わ
ってきます(少なくともゲーム業界では)
0135デフォルトの名無しさん
NGNG漏れんとこもそのタイプのスレッド使ってるよ。
自作したやつ。
0136デフォルトの名無しさん
NGNGスレッド生成関数が標準装備されてる or 自作でうまいこと作る
どっち?
0137136
NGNGPCじゃなくゲーム機のプログラムってこと
0138デフォルトの名無しさん
NGNG組んでるんでしょう?
私もゲームでタスクを使わず、効率良く組む方法を知らない
のですが。というか今までタスクを使ってしか作ったことな
いのでイメージが浮かばないというか。まさかifやswitch
の羅列って事はないですよね。
0139デフォルトの名無しさん
NGNGうーむ。
先輩から教えてもらったやり方ですので守秘義務云々に触れる可能性が
あるのでやり方は言えませんが、できます。
現に使っていますし。
ifやswitchを使うわけですが、ちょっとした工夫で驚くほどすっきり組めます。
ってか別に大したもんでもないんですが。
0140デフォルトの名無しさん
NGNG誰か他に知ってる人いたら書くのだ。
0141デフォルトの名無しさん
NGNGいま進めているプロジェクトでは、VSyncに同期して動く表示系の処理は
全てFinite state machineとして設計して、Stateパターンを使って実装
しています。
当初はこの仕組みだけで押し通せるかと思ったのですが、思考系の処理は
やはりスレッドを使わないとパフォーマンスが得られなかったので、
スレッドも併用しています。
他のスタイルもあれば、ご紹介ください。
0142デフォルトの名無しさん
NGNGだからといってswitchでState handlingするのはいまいちスマートじゃない気がするんだよな。
だれか「俺はこんなスマート&カッチョイイ方法でやってるぜ」て人がいれば教えてくだされ。
0143デフォルトの名無しさん
NGNG>あるのでやり方は言えませんが、できます。
2chなので、ここはひとつ(笑)
その手法、興味あります
0144デフォルトの名無しさん
NGNGStateパターンには惹かれるけれど、switchで分岐しています。
スプライトやモデルはcompositeパターンでツリー化して、
擬似タスクで動きを管理しています(皆と同じだね)。
さらにマルチスレッド使いまくり。
スレッドが無いゲーム機にはRTOSを自作。
あと擬似タスクって言い方嫌い。
こんなのぜんぜんタスクじゃない。
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNG自動生成って、スクリプトファイルかなんかから変換するんスか?
実際の個々のタスク周りのコードの上に
一枚レイヤー作るのは結構いいかも。
理想を言えばオーサリングツールになるんだろうけど。
Macromedia Directorとかデジタルロケとか。
0147デフォルトの名無しさん
NGNGswitchとかifで、状態や各イベントに反応してるってやつだよね?
>>117の奴が擬似タスク?なら擬似じゃないタスクってどんなん?
問題無い範囲でおしえちくり。
0148デフォルトの名無しさん
NGNGswitchやifとは限りませんけども。
Stateパターンやクラス内関数へのポインタで状態遷移したり
メッセージ送って連動することもありますよ。
何でタスクかというと、要するにマルチタスクのタスクのことです。
個々のオブジェクトを1ステップずつ高速で動かして
結果的に同時並列的に動いているように見せるというのは、
コオペラティブ方式のマルチタスクそのもの。
というわけで、本家の「マルチタスク」方面を調べてみると、
参考になる情報や実装が転がってるかも知れません。
疑似タスクってのは……
>>117の先の著者周辺のローカル用語じゃないかなあ。
0149148
NGNGぶっちゃけて言えば、
「リアルタイムゲームプログラムは、一種のマルチタスクOSである」
という考え方によるものです。
0150>
NGNGできるとなると、スタックセグメントとポインタの交換だけで切り替えられるね。>タスク切り替え
0151150
NGNG思ったんだけど。<まあできるとしたらの話だけどね。
0152150
NGNGちなみに上のはコルーチンのスタック切り替えの実装の話です。
0153デフォルトの名無しさん
NGNGできる。できないわけがない。
できなかったら、SPを初期化する方法が無いではないか。
>>151
スタックを適時切り替えるの?
そこまでやるなら、マルチスレッドにしたほうがずっと簡単。
0154150
NGNGあ、できるんですか。ありがとう。
こんど試してみます。
>そこまでやるなら、マルチスレッドにしたほうがずっと簡単。
それをいっちゃあこのネタおしまいよ・・(笑
0155150
NGNG<386以降の仮想アドレスが認知される前までは・・
0156デフォルトの名無しさん
NGNGやっぱタスクと同じように優先順位ふってるんでしょうか?
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNGタスクの優先順位と描画順位が同じなのはシステム的に問題
ありすぎだと思うが、非リアルタイム系ならそれでもいいかも。
どっちにしてもハードパケットなり自前ルーチンなりをちゃんと
したオーダテーブルに繋いで管理しないと駄目なんじゃないかな
ぁ。あ、スプライトハードorZBufferハードなら話は別か。
もしかしてそうゆう意味じゃない?
0159デフォルトの名無しさん
NGNGZBufferハードでも半透明含んだモデルとかあると、やはりリスト接続必要かも。
>タスクの優先順位と描画順位が同じなのはシステム的に問題
激しく同意。
描画予約パケットをお好みのオーダー(優先順位)に連結予約登録しておき、
全てのタスクの実行が終えたあとに、そのオーダーをタグってまとめて
描画するというのが定石だと思います。
0160デフォルトの名無しさん
NGNGこれって、例えば()はタスクとして
(キャラ移動→キャラ描画)→(敵1移動→敵1描画)→(敵2移動→敵2描画)→・・・
ってこと?
0161デフォルトの名無しさん
NGNGえと、私は159ではないのですが、レスをします。
タスク内での「キャラ描画」は正確には「キャラ描画予約」になります。
実際には描画せず、描画の予約をするわけです。
で、優先順位を確保したければ、描画の予約段階で「n番目のリストに登録する」という
感じになります。
全てのタスクが終了した段階で、これら全てのリストを実際に描画します。
リストは描画優先順位段階数分だけ用意します。
この一般的な手法により描画優先順位維持するために
タスク実行優先順位を考慮する必要が一切無用になります。
0162デフォルトの名無しさん
NGNGわけですが、Direct3Dでの半透明ポリゴンの優先順位って面倒見てくれる
んですか?
Direct3D関連書籍を見た感じ、半透明ソートに関する話題が不思議と
振られていなくて、ふと疑問に感じました。
0164デフォルトの名無しさん
NGNGそおっす、yacc lex 大好き人間として欠かせません。
リアルタイム部分はこれで決まり。
スレッドはバックグラウンド処理だけに使ってます、あれはあれで便利。
0165デフォルトの名無しさん
NGNGshi3z氏にでも聞けば?(藁
0166デフォルトの名無しさん
NGNGまだまだ甘いけど。
0167デフォルトの名無しさん
NGNGへ?なんのシステム?
0168デフォルトの名無しさん
NGNGおっす158です。言いたかった事言ってくれてありがとです。
いまやってるプロジェクトは途中参加なんだけどタスクが実行パート
描画パートに分かれていなくて泣けそうです。はわわー。
あ、僕の知ってる会社ではこういうゲームタスクを「アクション」っ
て呼んでたりするのですが他の会社では「ワーク」やら「ベース」、
「スプライト」と呼んでいたりします。(目的が微妙にちがったりしますが)
皆さんのところではどう呼んでいますか?
0169デフォルトの名無しさん
NGNGそんな面倒は全然見てくれませんヨ。
解説書に出ていないのは「どうしようもないから」でしょうね。
オブジェクト単位でソートしてあげるぐらいしか方法がないんス。
某2でもその辺苦労しているメーカさん多そうですよねー。
☆ポリゴン単位のソートでVU資源浪費
↓
☆ソートによるテクスチャキャッシュのミスヒット多発でDMA資源の浪費
↓
☆テクスチャ転送待ちでGS資源浪費
の3段コンボだったりするのでしょうか?
0170デフォルトの名無しさん
NGNG別けているんだけど。
0171デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGOT法っていうかみんなオーダーテーブル前提で話してるじゃん。
なんかイヤミで感じ悪いなー。
0174デフォルトの名無しさん
NGNGスレ違いな話題だけど
D3DPRASTERCAPS_ZBUFFERLESSHSR の時はソートしなくても良かったりして。
#でも、こんな機能ついてるチップって、アレしかないよね…。
オイラも仕事ではOT、描画予約というかすべてのリクエストを受け付けてから、
通常処理の裏側に隠れるようにしてますよん。
しかし誰でもやってることだろうから鬱。氏んできます。
0175デフォルトの名無しさん
NGNG半透明ポリゴンだけOTに登録してソートかけるしか・・・
でもフレームバッファが足りなくなるし。テクスチャ転送は必須。
不透明ポリゴンはテクスチャの種類でソートかければ、
MainRam >> GS の転送量を最小限に押さえることができることに気が付いたのは
大分後になってから。手後れ
0176デフォルトの名無しさん
NGNGそうなんだよね。PS2では、不透明なものに関しては、
Zソートよりマテリアルソートのが有効なんだよね、処理時間
的には。でも、マテリアルソートするとなるとデータ構造を
結構練っておかないとつらいし。
0177デフォルトの名無しさん
NGNGいろいろ難しいです。
大抵が不透明ポリゴンなケースが多いのが救いです。
0178デフォルトの名無しさん
NGNG>なんかイヤミで感じ悪いなー。
はにょ?なんでイヤミなんですか?
少なくとも自分のいたアーケード業界では16Bit時代の時点で既に
単方向リスト描画が定石でした。2D時代でも、それなりに優先順位
の確保は必要ですからね。
リストをスキャンしていくインテリジェンスDMAが一気にポピュラーに
なったのはPS1からだったと記憶しています。
0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNG>Zソートよりマテリアルソートのが有効なんだよね、処理時間
どうゆう事? Zソートしないと駄目でしょ?
0181デフォルトの名無しさん
NGNGで、Zバッファで描画速度を稼ぐなら、なるべく手前オブジェクトから描画して
Zテストではじかれるピクセルを増やすか、
同一テクスチャの描画をまとめてテクスチャ切替を最小にするか。
PS2みたく混載VRAM=テクスチャキャッシュで
フィルレートだけは余りまくりな機械では後者が有効って話。
ときにスレ違いですが、DirectXではどうなんでしょうか。
0182デフォルトの名無しさん
NGNG絞ってもらいたいです。
0183デフォルトの名無しさん
NGNGなんといってもDMAまわりをまるで前提としてない設計は
煮ても焼いても食えません。
ハードウェア頂点バッファでは解決できないもの、いっぱいあるんです。
半透明プリミティブのソートだとか。
ソフトでソートしたプリミティブ群は結局、DMAで送るしかないわけで
これら全てをCPUでポーリングするハメになります。
0184デフォルトの名無しさん
NGNG>MainRam >> GS の転送量を最小限に押さえることができることに気が付いたのは
>大分後になってから。手後れ
あ、うちと同じパターン(笑)
こうやって数年後にはPS2の事実上のパフォーマンスは進化していくんだろうな。
0185デフォルトの名無しさん
NGNGhttp://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見直されてるねェ。出たときは散々だったのに。
なんにせよハードの設計ミスでプログラマの睡眠時間が減るの
は勘弁ですわ。DCマンセー。
0190デフォルトの名無しさん
NGNG>見直されてるねェ。出たときは散々だったのに。
トータルで見たビデオカードの設計思想として、現状では世界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が際立っていて、イマドキのチップとしてはちょっと評価は厳しい
んじゃないかとおもうんですけど。(個人的に)
マルチテクスチャ=マルチパスっていうのは今後何気にイタイ
なぁ…DMA資源〜ほにゃらら1の計算機資源を考えると特に。
2テクスチャステージとDOT3オペレーションだけでもあれば…(死
PVRは97~99年当時はなんとも思わなかったけど、捨てて初めて
良さがわかるなぁ(苦笑
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNG>なぁ…DMA資源〜ほにゃらら1の計算機資源を考えると特に
2枚3枚馬鹿力にモノ言わせて重ねがきできるのは、GSだけですからね。
(実行部隊1)もひーひー言えば、DMAもひーひ言います。
シングルパスでドカっていけば確かにおいしいのだが。
>PVRは97~99年当時はなんとも思わなかったけど、捨てて初めて
>良さがわかるなぁ(苦笑
というかNAOMIの新しいやつ、何気に現状世界No1でしょ?
任天堂のGameCube(ATI)も凄かったけど、PowerVRのリビジョンアップ版は
既に出荷直前であること考えると、SEGA陣営も技術的には王手をかけたね。
けど、マーケティング的にはカプコンのアーケード撤退など、大失敗。
PVRアーキテクチャの最大の利点は将来的に並列化が容易なこと。
Voodooみたいな命知らずが、連結をしたことあるけど、テクスチャも
並列数に比例して同じ数ぶん、予めコピーしなければなりませんからねぇ
0195デフォルトの名無しさん
NGNG> NVのアンチはソートいらず
つーか、それってオーバーサンプリング系のやつだろ。
その手の手法は昔から、必要とあらば皆やってるっての。
0196デフォルトの名無しさん
NGNGポリゴン描画に限って言えばPVR系が優れているけどね。
でもPVRはZバッファを使ったテクニックが使えないし、
フィードバック系(陽炎、ブラー、残像、被写界深度、リフレクション)の
エフェクトにも向かない。
MGS2やGT3の映像表現に比べて、
DCの映像は画一的な感じがするんだよね。
0197デフォルトの名無しさん
NGNG今までのオーバーサンプリング系とはひとあじ違うよ
NV20はハードウェアサポートがある
0198デフォルトの名無しさん
NGNG>エフェクトにも向かない。
PVR系で動作しているnamcoのソウルキャリバー(DC)を見ればわかりますが、
被写界深度と陽炎以外は実現しています。
被写界深度のやり方にもよりますが、n視点方式ならば、純粋なパワーの問題と
なります。つまりアーキテクチャが原因による有利・不利はあまりありません。
単純にフィルレートの問題です。
gsのデモで被写界深度、陽炎 などが初期から披露されていたのは
gsのフィルレートが無尽蔵にあったからこそです。
そういう意味では nv系も3年ぐらいすればgsに追いつくと思うし、
またfpsをあまり気にしなくても構わないのならば、現状でも可能です。
0199デフォルトの名無しさん
NGNGできる事、これに他ならないでしょうよ。半透明に関する様様な悩み
は全て無縁なんですから。(とも言えないケド)
多少のフィルレートの犠牲には目をつぶっちゃいます。というかフィ
ルレートも稼げるんですよねー。おしいチップをなくしたなぁ。
ま、しかし、最終目的はたかだか640*480のドットを塗りつぶす事
だけですからGSのパワーは不必要だと思ってます。XBOXに搭載される
Xチップが丁度いいバランスじゃないのかなーと。
ハード設計もDCに輪をかけてシンプルでDMAの子守りとも無縁
っぽいし。
0200デフォルトの名無しさん
NGNGオーバーサンプリングじゃないよ。ちゃんと調べようぜ。
つーか、アンチが必要なのってDACがイカれてる例の
環境だけのような・・・。PCじゃ効果薄いっす。
0201デフォルトの名無しさん
NGNGDCの残像は半透明オブジェクトの重ね書きで表現されていることが
多いですし、環境マップは予め用意したものを使っているようです。
一度レンダリングした画像をテクスチャとして使ったものは
ありましたっけ。
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG最近あまり聞かなくなっちゃったけど、結局のところ
決定版と言える手法は、ないってこと?現状。
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG>環境だけのような・・・。
ん?ひょっとしてフルシーンアンチとアンチポリゴンを混同してる?
PS2のジャギ問題は、レンダリング終了後に 10HSyncほどの時間さえ
あれば解決できます。こういう時、馬鹿力全開のGSは役に立ちますね。
ジャギを消したいという理由でレンダリング時にアンチポリゴン選択する
PS2プログラマーはいないよ。ソート自爆が待ってるしね。
0206デフォルトの名無しさん
NGNG役に立つというより、そうするしかないからやってるだけというか…。
ほかのターゲットでこんなことに気を使う事ないし。
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´ ヽ___
.ィ:::::.:.イ l,,____'':::::::::::::::丶
/ノ;;;//::::i::::´∀` )i::::::::::;;;;丿\
/ ::::::::::...ノヽ,,,/:::丿__/ /__::::.. ヽ
./ ゝ ... .ll::::::::巛\) _ ノ ヘ .丿
/ .::: :::::::::ll:::::::/:::::::::ヽ_ ̄ ̄ ( :::;:;::/
ヽ :::: .:::::::ll::::ノ:::::::::::::::::::::──__\::";;丶
/ :::: :::::::://:::::::::::::::::::::::::::::::::::ヽ:::::\:・ヽゝ_ ___--''''' ~~ '' ヽ
/ :::: ◇:::::::::::::::.. ::.. :::::丶:::::\/ヽ:::ヽ....::::..... ..::..丶
/ :::::...- ノヽ::::::::::::::::::.. ::::.. :::::丶::::ヾ::::::ヽ::::\::: ..:::::::::...ヽ,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,.
ゝ ⌒)ノ \:::::::::::::. ::::::.. .: ::::::::i::::ゝ:::::ノ:::::::::\ :::::::::::::.. ..:::::::::::::::,,,,,,,,,,,:::::::::::::::::
\_ノ ヽ::::::::::.. ..:: :::::::i::::::::::::::::::::::::::::::.. ....::::::::::::::::::: ;;;;;;;;;;;:::::::::::::::::::::::::::::::
)::::::::::: ..::::: :::::i::::::___--- ̄~:: ...:::::::::::::: ::::/''';;;;:::::;;;;;;;;;;;;::::::::::;;;;;;;;''
/::::::::::::::: ...:::.. .::::::/i;;;;;::::::::::::::::::::::::::::: :::::::::::::: ::::/ ''''' ;;;;,,, ''''''''...;;;.;;
(:::::::::::::::::......::::::::::::......./ /:::::::::::::::::::::::::::::::: ::::......::::::::::/ ''''''''';;;;;;;;;;;;;,,
|ヽ:::::::::::::::::::::::::::::::::::/ /::::::::::::::::::::::::::::::::: ::::::::::::::/
| :::: ::::::::´:::ノヽ::::::/./::::::::::::::::;;::::::::::::::::: :::::::::/
| :: ::: ::::::::::ヽ ::/ /:::::::;;;;;;''''' \::::::::: ..:::/
/ゝ::::::::::/ヽ::::::i/ノ;;...''''' ゝ:: :/
/::::::::::::::/ :::/ ) ./
/::/:::::/..::/ /::::.ノ:(
/.:/ ノ / /..::/ゝ::ヽ
/.:/ |,,;;;| /:::/ l::::::l
/`/ .|::::| /::/ l:::::l
/⌒ヽl |::::| /::::::ソ l::::l
./____-~ |::::| /⌒ヽ丿 /:::/
. (:::::)  ̄~~ /:::/
丶(_ /:::/
ゝ__ノ l::::::ソ
/⌒ヾ
""""''""'""
0212デフォルトの名無しさん
NGNGDOA2ハードコアとかEAのEEXはどうです?
前者は全ポリゴンにエッジアンチエイリアス、
後者はDC相当のフリッカーフリーがかかっとりますが。
0213デフォルトの名無しさん
NGNGX箱のNV2Aも同じなら、UMAの欠点は克服しているハズ
0214デフォルトの名無しさん
NGNG>世間一般の評価をご存知無いとか?
だからジャギーとフリッカを消せばアドバンテージになるという考え方もできるが、どうか。
グラフィック面でデザイナー任せじゃない、プログラマが直接関与できる場所だぞ。
だいたいゲーム中はともかく、メーカーロゴとかの静止画でも
フリッカ消し(消せ)てないところってどうよ。
PS2がギザチラとか愚痴る前に、
ギザチラになる根本的な原理を理解してへんのとちゃうか。
0215デフォルトの名無しさん
NGNGこの話題はこれ以上やっても無意味だし、お互い厨房化しかね
ないので勝手に打ち切らせてもらいます。アンチフリッカへの有
効な実装の話題ならOKですが。
しかし、アンチフリッカーに商業的な価値が出ない限り現状は
代わらないでしょうね。いや、ホントにこんな画面で世に出して
いいのかしらという葛藤との戦いの日々なのですよ。
XBOXがこの問題を克服しているなら無条件にマンセーなん
ですけどねー。DMAだのUMAはライブラリでラッピングした
ら無関係な話なのでどうでもいいっす。
0216デフォルトの名無しさん
NGNGってのは世間一般じゃなくて、2chのゲーハー板での評価
0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNGメモリコントローラって何でしょ?
メモリリーダーが4個所あるっていう意味かな?
テクスチャ4枚重ねがき可能なわけだしね。
けど、ビデオカードのピクセルジェネレータの読み込み先は
キャッシュOnlyなのです。問題はキャッシュをミスったときの
MainRAMからキャッシュへの転送時にどれだけバスをロックするかです。
64の時は、最悪でした。
何せ、ラスターが稼動している時、CPUのメモリアクセスは大抵
ブロックされたので、ほとんど身動きができないのです。
x-boxの場合、cpuにはキャッシュを搭載しているので、ある程度は
緩和されてるみたいで何よりなんだけど、フラットなメモリアクセス
だとかあると、キャッシュなんて気休め程度にしかなりません。
0219デフォルトの名無しさん
NGNG最大で別々の4つのアドレスにたいして同時によみかきできる。
(各バスは32bitDDR)
0220デフォルトの名無しさん
NGNG(今のPCはPC133メモリでも1GB/S程度しかない)
0221デフォルトの名無しさん
NGNG>最大で別々の4つのアドレスにたいして同時によみかきできる。
↑UMA構成な場合、どうなるんでしょ?
VRAMな場合、CPUがアクセスすることはないので気にならないのですが。
0222デフォルトの名無しさん
NGNGX箱ってかなりよさげだね。
POWERVRのいいとこどりしてるし。(半透明ソートはないが)
アンチエイリアスもフリッカーフリーも標準だし。
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGアンチはともかくフリッカーフリーのソースはどこから?
つまり、みんなの意見を総合するとX箱はラスタライズ時の
メモリブロックさえかからないなら理想の環境で、ブロックされ
るなら最低の環境と言う訳ですね。さて、どっちなんでしょ?
つーか並列化を推し進める為のハードウェアT&Lと頂点バッフ
ァなんだからそれはないんじゃ?というのは素人意見?
0225デフォルトの名無しさん
NGNG・守秘義務は守る(つっこんだ質問はそれにふさわしい所でどうぞ)
・身元がばれないように気をつけよう。詮索もやめよう。
・プログラムの話をしよう。
みたいな感じでマターリいきましょう。
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNGだってこのスレだって本当は書いちゃいけない内容がたくさん
書いてあるじゃん。
書いた後に「まずかったかな・・・・・・」って思うこともあるでしょ。
一応契約書には業務上知りえた内容を云々って書いてあったから
仕事で覚えたことは全部駄目ってことなのかなんなのか知らないけど。
とりあえず契約したわけだから守らんとね。
PS2なんかのハードの内容は明らかに駄目でしょ。
0228デフォルトの名無しさん
NGNG別に実質的に被害を与えるような内容でなければかまわんと思うが。
「ふさわしい所」では「ふさわしい」内容の話題しかないわけだし、
匿名なりの話題もあってよいと思う。
そんなもの関係ないなんて、正論はいうなよ<偽善者
0229デフォルトの名無しさん
NGNG>メモリブロックさえかからないなら理想の環境で、ブロックされ
>るなら最低の環境と言う訳ですね。さて、どっちなんでしょ?
>つーか並列化を推し進める為のハードウェアT&Lと頂点バッフ
>ァなんだからそれはないんじゃ?というのは素人意見?
いや、それプロの意見だよ。
とりあえず、自分のところでもラスタライズ時にブロックされることを
確認してしまいました。発売までまだ間があるので、なんとかしてくれる
ことを祈る。
UMAでいて、ハードウェア頂点バッファという構成は、自分の知る限りでは
世界初なんだけど、ペケ箱では裏めった感じ。
0230デフォルトの名無しさん
NGNG不法な経路で入手した情報で開発したPSエミュの開発会社とSCEIが
和解するご時世(もちろんほんとにお子様握手ではないものの)なんで、
もう無意味なんじゃないですか?
落とし穴を通知するだけで、みんなもハッピーでしょ?
0231デフォルトの名無しさん
NGNGしてるのに、日本では話す機会が極端にすくないよね。
セキュリティ以外の部分に関してはできれば話がしたいよ。
0232デフォルトの名無しさん
NGNG通りすがりですが、同意しておきます。
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGでも、やっぱり話あえるところがあるといいとは思う。
0235デフォルトの名無しさん
NGNG他社にレベルアップされちゃ困るってのが上の判断なんだよ。
それ以上に得るものも多いと説得しようとしたけど疲れてやめた。
俺ってヘタレだな...
0236デフォルトの名無しさん
NGNGUMAな開発キットはまだ出てないはずだが?
0237デフォルトの名無しさん
NGNG0238通りすがりの名無しさん
NGNG> UMAな開発キットはまだ出てないはずだが?
そうそう、私もその部分を詳しく聞きたいですよ。
> 自分のところでもラスタライズ時にブロックされることを
> 確認してしまいました。
これって、UMA 非搭載のプロト版の開発環境上での話なんでしょか?
0239デフォルトの名無しさん
NGNGヌルイ私は累積誤差が出そうな所は正規化かけたりしてます。
累積誤差を出しにくくするセオリーってありますか?
0240デフォルトの名無しさん
NGNGhttp://www.gamasutra.com/features/20010307/gdc_01.htm
に、
Roundtable: "Porting PC Graphics Technology to the Playstation 2"
ていうのがあった。守秘義務契約を結んでいる人だけしか参加しないから
OKなのか、海外では、事情がやや異なるのか…。
周辺の話題なのでsage.
0241デフォルトの名無しさん
NGNGDCのサンプルソースまで公開するほどの馬鹿なことしない限り、企業も
追ってこないだろうて。
ライブラリばら撒くだのハード資料を公開するだの、その手のことしないかぎりね。
0242デフォルトの名無しさん
NGNGメリットを生かしてみるのもいいんじゃない?足がつくカキコした人は
そりゃ本人が悪いんだしね。「おめーら守秘義務守れヤ」って横槍入れ
るのは無粋というものですぞい。
つーことで、一個尋ねたいのですが、ミドルウェアライブラリってやつ
使ってるとこあります?将来的なXBOX、GCなんかとの親和性を唄
ってるイケてるライブラリあったら知りたいです。この激動の時代に
1ハード限定のカリカリプログラム書いてる事にちょっと不安を覚えて
マス。
0243デフォルトの名無しさん
NGNG>>34 にレンダーウェアの評価があります。
ミドルウェアは何かと不便みたいなんで
結局、自社製ライブラリ作るのが一番だとおもいます。
あとは移植とかに備えて、ローレベルとハイレベルの切り分けを
しっかりやる、って感じかなぁ。当たり前か。。。
#とか思いつつ、いっつもローとハイがごっちゃになってしまう俺・・・
#とくに某2になってからさらにごちゃごちゃ・・・宇津
0244デフォルトの名無しさん
NGNG>>マス。
そうそう。でもテクスチャエリアが少なくても済む場合(格ゲーなど)
だとか、広大な空間を歩かなければならない場合とで、gsの使い方が
極端に変化するので、一本のライブラリで収められるわけないと思ってます。
あと、かなりのミドルウェアがvu1を一個所も叩いてないです。
このスレにもあったOpenGL for PS2 もそうみたいですが、
アートディンクのアガサもvu1を一回も叩きません。
ライブラリ部隊がアプリ部隊よりも、ローレベルにまるで無頓着な現状なんで
商売するきあんのか?ゴルァって感じですが。
0245デフォルトの名無しさん
NGNGえ?、んじゃ、
http://www.the-agatha.com/what_agatha01.html
も嘘って事?(いや、最初から使うつもりは無いけど)
0246デフォルトの名無しさん
NGNG50万ポリでDC,XBOX、PS2、GC、PCの
同時開発出来る商品、(昔のファルコムみたいだが)
どっちが意義があるのかなぁと思う事もあるのです。
まぁ自前ライブラリもその辺は考えて作ってますけどね。
サウンドやストリーム制御までクロス環境で開発できるなら
ミドルウェアもいいかなーと思ったり。
0247デフォルトの名無しさん
NGNGPS2ではカリカリしても 10万poly/v が限界です。
0248デフォルトの名無しさん
NGNGはったり屋のかほりがする
0249デフォルトの名無しさん
NGNG厨房ですか?(w
0250デフォルトの名無しさん
NGNGGSに関して、みんな文句言ってるけど、ゲーム屋に言わせれば今のところ
無敵だよね。ゲーム(っていうか一般的な3D空間)は手前にキャラがデカく
表示されることが頻出。そんとき、フィルレートの低いビデオカードは命取り。
NV系なんかが、ピクセルシェーダだとかに逃げたのはレート稼ぎが頭打ちに
なってしまったからでしょ?(ビット幅×周波数)で比較する単純比較でも一桁
近くの差があるし、実際にデカポリゴンを重ねて表示すると、数倍の差があるし。
1ピクセルあたりのクオリティは安っちぃーくてもいいから、とにかくキャラ数
を出したいだとか(決戦2みたいな)という用途では、単発のフィルレートこそ
が最低必須なんで。
0251デフォルトの名無しさん
NGNGNVIDIA系にVRAM混載のハナシってないの?
0252デフォルトの名無しさん
NGNGピクセルシェーダは実現できてるのに、単発レートを稼げないのは
確かに逃げているようにしか見えない。
リアルタイムでリアルなダイヤモンドでも表示したいのかねぇ?
でも、オブジェが数個しかないというデモ系で構わないんなら
テクスチャいらないし、ソートしてもいいし、でますますGS有利なんだよなぁ
0253デフォルトの名無しさん
NGNGとりあえず、16bitオーバーなテクスチャをバリバリ貼りたいよ。俺は。
これが困難な時点でGSには未来は無いと思っております。
デザイナさんの労力を無駄なく画面に出せるって重要だよ。
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNGじゃ貼ってみては?
PVR系以外だってデカテクスチャ張ると、キャッシュ外して、その帯域はあっという
間に落ちますよ。mainram -> GS への転送ペナルティを考えてもなお、GSの
結果的なフィルレートが優位であることには変わりないので。
0256デフォルトの名無しさん
NGNG確かにフィルレートを必要としなければM-RAMにテクスチャ置き放題なんだろな。
にしても、M-RAM -> GS へどれほど転送してるんだろ、これ
0257デフォルトの名無しさん
NGNG見分けがつかないのでは?
16Bitなどと贅沢は言わないから、せめて普通に8Bitは使いたい。
Vramの中身見たら大変なことになってます。
「ええっ、コレがこのサイズで16色?」デザイナさん、ご苦労様です・・・
0258デフォルトの名無しさん
NGNG妥当線は8Bitだと思う。
4Bitだと、職人を揃えなきゃならないので、コストの問題で大企業でも
ないと厳しいと思う。(時間も金も)
0259宣伝
NGNGhttp://www.webtech.co.jp/istudio/is3spec1.html
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG俺的にもう、なんていうか、カンベン。
フィルレートとかそうゆう問題じゃなくて、求められてい
るものを満たす事が非常に困難なハードですね。
ま、未知なるXやらGCに期待を寄せてみる感じかな。
0263デフォルトの名無しさん
NGNG違うよ、DCマンセだよ。
あれの延長線上に、ポリゴンハードの完成形があるのは確か。
けど、今のところマトモな市場があるのがPS2なんで、
こうやってグチスレが出来上がるわけよ。
まじ、PS2だけはカンベンしてほしかった。
うちの部署でのPS2のコードネームはスーパーサターン。
はやく逝ってほしいハードNo1。
0264デフォルトの名無しさん
NGNG俺も思ってた。
もうディフォルトでしょ?
0265デフォルトの名無しさん
NGNG>>259のiMageStudioのこと?
それとも昔ながらのOPTPiX?
うちはまだ後者。
両者の違いがよくわからないんだけど、
iMageStudioにすべきなのかなぁ。
0266デフォルトの名無しさん
NGNGうむ。「高性能な減色ソフトによる8bitへの減色=テクスチャ圧縮」という
考え方ができるかどうかがキモ。
0267デフォルトの名無しさん
NGNG>るものを満たす事が非常に困難なハードですね。
ひそかに同意。バランスとか、直交性に欠けるハードだとは思う。
0268デフォルトの名無しさん
NGNGあー確かに、テクニックすごいですよ、ウチのデザイナさんも。
でもほんと、こういう意味の無い作業は最小限にしてあげたいですね。
容量が無尽蔵に大きくなって(もちろんオンチップDRAMで(^^;) 24bit フルカラーテクスチャの転送のみなんてシンプルなハードになったら
プログラマも幸せかも。
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNG美しすぎるアーキテクチャのPS1とは対照的に泥くささ全開のサターン。
いろいろな理由があったと思うけど、サターンが早死にしたのは開発の
しにくさも一つの理由だと思う。
そして、PS2はサターンをさらに複雑怪奇にしたビックリ箱。
ほんと、逝くなら早めに逝って欲しい。
0271デフォルトの名無しさん
NGNG不可逆圧縮
たしかに。
>>270
ライブラリーに期待したい
0272デフォルトの名無しさん
NGNGウチはまだPS2の仕事が来てないけど、来るころにはラクになっているといいね。
0273デフォルトの名無しさん
NGNGPS2嫌いなのは勝手だけど、批判は他でやってくれ。サターンが
作りにくいっていえるほど使いこなしてたところがどれだけあったのやら。
0274デフォルトの名無しさん
NGNG使いこなすのが大変なくらいに作りにくい。
まあ、業界スレもどきになっているのでさげ。
0275274
NGNG補足
>批判は他で・・・
沈黙は金ですかな。
0276デフォルトの名無しさん
NGNGガンガン巨大化に成功させてるよな。
だって現時点で16Mだか32Mも混載させてるし。
もしそのスペックで市場に投入したらソフトもガンガン発売されてたと思う。
0277デフォルトの名無しさん
NGNGまあ、いずれにせよ致し方ないところで。
0278デフォルトの名無しさん
NGNG無茶言うなよ。
0279デフォルトの名無しさん
NGNGポリゴンハードの最終形態だと思ってる。
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNG楽そうだね、作るの。 > X-BOX
0282デフォルトの名無しさん
NGNGどういうところが?
0283デフォルトの名無しさん
NGNG満たすように設計されている訳だから「まずライブラリ仕様
ありき」な世界初のハードなんだわ。
これで開発し難いハードだったらオワッテルわな。
0284デフォルトの名無しさん
NGNGものが欲しい。たとえば、DirectX8のピクセルシェーダーのようなノリで
ディスプレースメントマップがリアルタイムにできるようになるとか…。
(帯域が太くなればできるでしょ?)
そのときは実機ムービーもribファイルをソースにして…(苦藁
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNGそっ、そうか。
開発が難しいハードになるって可能性も有ったんだ.....
鬱だ。
0287デフォルトの名無しさん
NGNG>ものが欲しい
確かに、同意。
けど、当分、混載ハードはGSの独断場と見たね。
混載発表から2年経過して、まだヨソからはどこからも出してない。
ゲーム屋が欲しいのは、ピクセルシェーダなんかよりも先に
画面手前に簡単なフラッシュ・イフェクトを描画してもへっちゃらな
フィル・パフォーマンスなんだよな。
0288デフォルトの名無しさん
NGNGPS2触ってないので知らん。
0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNGバスの広さがポイント
0291デフォルトの名無しさん
NGNGだー、その混載とは違うんす。
バスをタイムスライスする使い方は混載にあらず。
それをいったら、見方によっては通常のDRAMも「1024ビットのバスを備えた R/W 可能な
ワンチップ混載ユニット」なんていう表現が可能になってしまいます。
0292デフォルトの名無しさん
NGNG量より質を選択することって良くあるじゃん。
0293デフォルトの名無しさん
NGNGDirectXでこれか。いい時代だなぁ〜
0294吾輩は名無しさんである
NGNGしかし量を選択するのもまた一つの方向性であるぞよ。
真・三国無双とか決戦IIとか見てると、
あと10倍から1000倍、物量が欲しいよなーとか思うナリ。
0295デフォルトの名無しさん
NGNGこれはボトルネックにならないの?
0296デフォルトの名無しさん
NGNGhttp://www.nintendo.co.jp/n10/news/000824/a.html
0297デフォルトの名無しさん
NGNG酔拳かー。どうせなら北斗神拳とか扱ってくれないものだろうか・・・
スレ違いすまんにゅ
0298デフォルトの名無しさん
NGNG一番のボトルネックだヨ。
実際1.2GB/sも通らないし(1イントで10Mぐらい?)
描画とのスケジューリング考えると泣けるぐらい描画テク
スチャが使えない。この辺はプログラマの技量で結構変動
するので自分のようなヘタレPGには地獄ですヨ。
よそはどれぐらい通してるのかなぁ。
0299デフォルトの名無しさん
NGNG実はドリキャスのVRAMの帯域より広いんだけどね。
0300デフォルトの名無しさん
NGNG特に背景モデルとか、半透明含むものとかは常駐してたほうがメリット大きいような。
デザイナさんが死にますがそれはそれとして、物量差は大きいでしょう。
意外とPS1ライクな使い方でも結構いけるのか。いかがでしょうか?
0301デフォルトの名無しさん
NGNGだから、シビアなゲームはVRAMへの転送は場面切り替え時にしか使わない。
4Mバイトをテクスチャに使うとして、半分をVQにすれば、仮想サイズとして
18Mバイトになるわけで。PS2とは状況が違いすぎ。
0302デフォルトの名無しさん
NGNGまあ機能があるのと実際に使うのでは違うということで。
0303デフォルトの名無しさん
NGNG半透明含むものは常駐に賛成だけど、背景なんて一回しかレンダリングしないので
DMA転送させても痛くないのでは?たとえ巨大でも。(いや巨大ならなおさら)
ちなみにX-BOXのデモは何一つ信用できない。試作実機すら、この世にまだ存在しないから。
同様にGameCubeも。特に任天堂は64のデモと称して2048*1920の解像度で動作するマリオ64を
SGIマシンのハイエンドで実演したことがあるという前科一犯。
一方、最初のPS2のデモは、一応、実機上で動いてた。(発売時とスペックもほぼ同じ)
DCもね。
何事も試作機がサードパーティに配布されるまでは信用しちゃいかんよ。
0304デフォルトの名無しさん
NGNGきびしー
そんな事があったんですね。
0305デフォルトの名無しさん
NGNGSDKだけ?(いや、SDKだけで何するんだって話もあるが)
0306299
NGNG0307デフォルトの名無しさん
NGNG0308名無しさん
NGNGそれはないか。
0309299
NGNG0310デフォルトの名無しさん
NGNGDirectXだけで十分。だたパフォーマンスまではまるで保証されないけど。
TGSでご覧なったように、フィルレートがまるで足らんのですわ。
PS2では有得ないラスター落ちが見れたでしょ?
本機では劇的な性能向上を期待したいところだけど、UMAじゃね。
0311デフォルトの名無しさん
NGNG行けないので、適当にムービー落として見てるだけなんですが。
0312デフォルトの名無しさん
NGNG少しはPCゲーム市場活性化するかな?
板違いスマソ
0313デフォルトの名無しさん
NGNG>劇的な性能向上を期待したいところだけど
希望としてはどれぐらい?
0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNG中小 X箱
任天堂 GC
今後5年はこれ。
X箱もGCもチップの設計終わってるのでハードに文句言っても仕方ない。
0316デフォルトの名無しさん
NGNGMSX->SS->PS2
優良ハードの歴史
FC->SFC->PS->DC->XBOX?
傍流ハードの歴史
PCE->MD->3DO->FX->N64->GC?
0317デフォルトの名無しさん
NGNG2Dフィルレートネックという意味では?
たしかにTGSでのあのX箱が本番だとしたら終わったな。
いくらなんでも、ちょっとした3Dアクションゲーに3体目が
出たらレート落ちが始まるなんて、論外、イッテヨシハードだろ?
技術的にはともかく、政治的にはそれなりの成果が見えてたけどね。
segaとかテクモとかKONAMIをそれなりに囲いこんだあたり。
あとSCEIのトップがX箱の幹部に移動しているというあたりも。
ところで宮田氏ってSCEの頃、どんな仕事してたの?
席上で名指しでクタラギ社長をチクってたけどオトナ気なかったね。
ご存知の方、いましたら情報求む。
0318デフォルトの名無しさん
NGNG>>FC->SFC->PS->DC->XBOX?
SFCを優良ハードにあげる人は、初めて見た。
FC PS DC は納得だけど
0320デフォルトの名無しさん
NGNG仮にそうだとしたら、実機ではさらに絶望的なんですね・・・トホホ。
いくらUMAで工夫しても、描画速度的にはVRAM独立させてるハードには
適わないですからね。
ただTGSのあのデモはいくらなんでも落ちすぎだと思います。
ほんとに、描画ネックなんでしょうか?
0321デフォルトの名無しさん
NGNGだからこそ、X箱はPS1のエミュレータBIOSを載せてまで上位互換にしたんでしょ?
ランチタイトルなんて、新ハードのカタログ。
処理落ちしたの、しないだの、細かい話だよ、ほんと
0322デフォルトの名無しさん
NGNGエイプリールフールネタやね
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNG本当にそうなら、いくらNVIDIAでも実機の方が2倍も性能が上なんて
+と-すら違うほどの大洞は吹かないだろう。
せいぜい同等程度には言うはず。
俺は期待してるよ。
0325デフォルトの名無しさん
NGNG素晴らしいビデオチップが開発されました! NVIDIA終了です!(笑)
0326デフォルトの名無しさん
NGNG昔、アナウンスされてときは期待したけど、結局製品化出来なかったじゃん
当時から嘘っぽかったけど(藁
0327デフォルトの名無しさん
NGNG0328325
NGNGだあああっ、ここでバラすんじゃない!
0329デフォルトの名無しさん
NGNGちぇーっ
期待したのにぃ。
(つーか、一瞬まじで騙されそうになっている自分を発見...鬱だ
0330デフォルトの名無しさん
NGNGいざ4/1になれば、お子様のように指を咥えて混載キボンってか?64の時もそうだったけど、やっぱゲーム屋じゃないとこの設計したハードなんてお呼びじゃないよ。
FPSを上げようという姿勢を感じられん。TGSでのX-BOXはホント、危険感じたぞワシは。
0331デフォルトの名無しさん
NGNG>エイプリールフールネタやね
でも、Bleemあたり絶対出してきそうですよね?
下手するともう開発終了したんじゃないですか?
0332デフォルトの名無しさん
NGNGBleem自身ドリカス版の製品寿命は去年末までと、言ってたからな
それまでに製品リリース出来なかったけど(藁
0333名無しさんダーバード
NGNGなんですとー?
SFC が優良ハード?
CPU はフタを開けてみれば 8bit だし、
IO 周りなんか、ファミコンに毛が生えたようなもんだった。
CPU のあまりのスペック不足に、アクションゲームやシューティングが
満足に作れず、家庭用=RPG という図式を生むことになってしまった
屈指のクソハードです。
で、何を根拠に XBOX を優良ハードと推測しますか?
東京ゲームショーのデモは散々でしたよね。
0334デフォルトの名無しさん
NGNG甘いな。BleemでのFF8だとかFF9だとかR4の画面見たことないでしょ?
メチャ奇麗になるんだぜ。
0335デフォルトの名無しさん
NGNGできることを前提にしたアーキテクチャでしょ?
64の時はともかく、X箱ではなんとかなるんじゃない?
#TGS見た後だけに、今風な3DOを見た感じだけど
0336316
NGNG16bitの加減算・論理演算は役に立ったよ。
8bitだと断定している人は、16bitと8bitの切り替えの
タイミングをちゃんと計算していなかったんだと思う。
クロックは遅かったけど。
XBOXが優良ハードだと言うのは、
DirectX8が個人的にヒットしているからです。
X5はクソ、X7までは許せる範囲だったのに、
X8にはマジ惚れです。
0337316
NGNGポイント高かったです。8bit(相対)、16bit(バンク内)、24bit(バンク越え)の
アドレッシングモードがあって、きめ細かく使い分けるのが好きでした。
ロード・ストアだけじゃなくて、サブルーチンジャンプもできたし。
バンク切り替えで見えなくなってしまうメモリ領域がないのもよかったです。
16Mbitまでですけど。
0338デフォルトの名無しさん
NGNG>>334
メチャ綺麗になったら、ゲーム自体がおもしろくなる?
とかいいつつ、ローディングが短くなったら面白くなるゲームは
けっこうあったりすると思ってるが(藁
0339デフォルトの名無しさん
NGNGセガもチップの設計はほとんど口出してないと思う。
絶望。
0340デフォルトの名無しさん
NGNG>>できることを前提にしたアーキテクチャでしょ?
>>64の時はともかく、X箱ではなんとかなるんじゃない?
そう思うのが、CPU屋さんでしょ?
メインRAMにあるプリミティブをDMAが読み出すときには調停が必要なんで
キャッシュなどは一度フラッシュしなければならず、キャッシュがでかくなれば
なるほどこのフラッシュ所要時間も増えてしまう上にバス・ロック時間も増えて
しまい他デバイス(コントローラ、サウンドなど)にもブロックしてしまう。
UMAが奇麗に見えるのは、ソフト屋だけだよ。
見た目の美しさを求めていたらPS2には絶対に勝てないないどころか、
チップのパフォーマンスを台無しにする大惨事だって有得る。
TGSでのX-BOXのあの様は、フィルレートうんぬんではなく、UMAのせいだと
思う。実際、配布されている開発機であれば問題ない描画量だったので。
(あの機材がUMA実装機だったらという仮定だとしたら)
0341デフォルトの名無しさん
NGNG√ ̄ ̄ ̄ ̄ ̄\
/ ̄ |
/ / ̄ ̄ ̄ ̄ ̄\| _
| / |
| / ` | | ´ |
| / <・) <・) |だからPS2には誰も勝てないクタ
(6 つ. | 世界はPS2によって密結合されるクタ
| ___ | ゲイツのペケ箱は逆立ちしてもペケ箱に過ぎないクタ
| /__/ |\
| ___//\
ー― 、 ,―一
0342デフォルトの名無しさん
NGNGはいはい、ハード・業界板に帰ってね。
0343デフォルトの名無しさん
NGNGていうかそんな事今時ちょっと詳しいゲームマニアですら知ってることですし。
チップの設計してるnVIDIAが分かってないはずは無いと思うんですがね・・・。
なんらかの対策は施してるとは思うんですが。
それにTGSで動いていたのは相変わらずXDK2だったと思うんですけど・・・。
0344デフォルトの名無しさん
NGNG> チップの設計してるnVIDIAが分かってないはずは無いと思うんですがね・・・。
ええと、340 の方が指摘している問題は全体の設計の話なので、
nVIDIA サイドではどうにもならないと思います。
0345名無しさん
NGNGXBoxのnVIDIAチップはメモリコントローラも含んでるよ。
つーかnVIDIAじゃない所は、CPUだけって感じ。
メモリ帯域の問題は、2chのDDR SDRAMで、
なんとかするみたいだけど。
0346デフォルトの名無しさん
NGNGていうかXBOXの設計はnVIDIAがやってるんだが。
0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNGここでいうメモリコントローラの定義をお教えください。
旧ファミコンの時代もバンク切り替えを指してメモリコン
トローラと呼んでいたのでほんとに分かりません。
CPUからもPCMサウンドデバイスからも、ハードディスクやCD-ROMからも
そして目玉のビデオチップからも一つのバスにアクセスされる状況下でも
ペナルティゼロにする魔法のコントローラなんですか?
それともただのブロッキング調停コントローラなんですか?
このスレで騒がれているのは万が一後者だった場合の話ではないでしょうか?
0349デフォルトの名無しさん
NGNGメモリアクセスしやすい?
嘘だろ。だって当時は既に68kがあったんだよ?
メガドラはビデオ周りが貧弱だったけど、cpuパワーは当時としては
十分にあったので、願わくばあのハードが市場を握って欲しかった。
PS2は扱いにくいけど、最低性能もそれなりに高いので許す余地あるけど
SFCは煮ても焼いても食えない今考えても最悪のハードだったよ。
0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNGここの人はどれだけオッサンなんだ?
0352>350
NGNG悪くないと思うならまずその理由を書け。
0353真剣に質問です
NGNGTGS前は、モめていなかったのですが、TGSのあのデモ見た後、
開発部長以下、あのガタガタな前代未聞のデモを平気で展示してしまう
状況に閉口。
うちの部長の意見としては「きちんとしたメーカのタイトル(具体例では
テクモさんのとこのDOA3など)が動いているのを確認できればなんら
問題ない」としているのですが、それを確認してからでは遅いという意見も
あり、既にX-BOXに関わっている方々の意見をお聞きしたいのです。
質問:X-BOXのあのFPSの低さはどういう事情があるのでしょうか?
そもそもPC系のビデオメーカの言う「高フィルレート」とは
あの程度のものなのでしょうか?それともどこかでストール起こしている
のでしょうか?
0354優しい名無しさん
NGNG0355デフォルトの名無しさん
NGNG所詮チップメーカなんで、いきなりハード全体アーキテクチャまで
設計なんてできるのか?って感じです。
PS2はSCEもいたから完成したんだよ。
EEもGSも東芝産チップではあるけど、東芝だけでは絶対に生まれなかった。
逆もまたしかり。
0356デフォルトの名無しさん
NGNGおまえだけ。レンダウェアーのダメっぷりは参考になったYO!
0357デフォルトの名無しさん
NGNG有力ソフトハウスの取り込みには成功しているので巷で言われている
3DOの再来ってことにはならんとは思うけど、そんころにはPS2市場
が熟成していると思うがどうでしょ?
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG板違いっすね
0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNGCodeWarriorもいいけど、ProDGのほうも気になる。
「開発効率アップするから、買って」と言っても、
「無くても開発できるでしょ。」といって買ってくれない、、、。
もちろん、ミドルウェアなんて問題外、、、。
0362デフォルトの名無しさん
NGNGSGIの資産は無いのといっしょか?
0363デフォルトの名無しさん
NGNG半導体オタのくたたん率いるSCEは半導体技術者雇ってる。
SCE=ゲーム屋とは限らない。
0364デフォルトの名無しさん
NGNGメガドラのビデオ周りは酷すぎ。
デザイナーみんな泣いてたよ。
0365デフォルトの名無しさん
NGNG4MBも混載できたGSは東芝の功績っす。
>SCE=ゲーム屋とは限らない。
一度でもPS1(あるいはアーケード互換基盤)と戯れたことある人で
そんなこと言えた人は過去、なかなかいないっすよ。もっともPS2で信用失いつつあるけどさ。
でも、X−BOXの公開デモ見る限りでは、PS2も捨てたもんじゃないと再認識。
隣の芝ばかり見てても仕方ないのだ
0366きえさ
NGNG>板違いっすね
いやいや、そゆのも重要!!
0367デフォルトの名無しさん
NGNG自分のシステムPS1でもちょっときついんだよなぁ。
0368デフォルトの名無しさん
NGNGこうゆう話題で盛り上がれるのは2chのメリットですなぁ。
ゲームショーの一通りのタイトルは見てみたんだけどPC
からの移行タイトル(Haloとか)はガタガタフレームでXBOX
新規タイトルと思われるものはいい動きをしていたという
印象なんで実際の所、どうなん?という疑問は湧きましたね。
でもなんか経営陣には印象良かったみたいです。
逆にPS2は大量のテクスチャ技師を確保できる大手と中小の
差を見せ付けられました。正直、いいハードだけどウンザリっ
て感じですね。
0369デフォルトの名無しさん
NGNGWindowsプログラミングではリフレッシュレートの議論が耐えないし
0370316
NGNG68Kはいい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名無しさん
NGNGSFCのプログラミングは悪夢だった・・・
0374デフォルトの名無しさん
NGNG海外のタイトルはXDK3でのパフォーマンスアップを見込んで作っているとか・・・。
0375デフォルトの名無しさん
NGNGあの〜ですね。
今回のTGSでコンシューマ業界の技術陣を騒然とさせたのはですね、
可変フレームレートによるボロボロうんぬんではなく、大した画像でも
ないのに15FPSだの20FPSだの信じられないレートを見せ付けられたからなんです。
もう60FPS(あるいはPALであれば50FPS)、完全死守が当たり前なんじゃないの?
というのがPS2業界であれば常識なんですね。可変フレームレートうんぬんでは
なく、1V締め切りに絶対に間に合うんだから「可変」だなんて言い訳するなと。
で、万が一落ちたときのため一応可変にしておくけどね〜という保険程度のもの。
それをヘラヘラ笑って可変なんだよんと称して15fpsだのまで落ちるのは
何のための新ハードか分からんのですよ。
PS2は発売の1年前にはクロックだけ違う実機を出せていたのに
発売半年後に控えたX箱はいまだに試作機だのUMAがないかもだの
SDKのみだの、さすがに準備不足なんじゃんないのかな〜?というのが個人的感想だす。
0376デフォルトの名無しさん
NGNGですな。
PS1時代は、何もかもが整備されていたので、この手の情報交換を
そもそも必要としていなかったんですがねぇ
0377デフォルトの名無しさん
NGNG0378名無しさん
NGNG見る目が無いんじゃないかな。
0379デフォルトの名無しさん
NGNG「企業内での仕事中に得られた成果は非公開にすべき」という国内の
道徳に自分は基本的には賛成っす。
ただですね、
「開発困難」という長いゲーム業界の歴史でも極めて異例な緊急事態
だと思いますよ、今。
0380名無しさん
NGNG0381デフォルトの名無しさん
NGNGアメリカなんて全ソース公開とかあるじゃない?
あぁいう文化の方がうらやましいね
恩恵受けてる人も多いと思うんだけど、
日本人は貰うだけってカコワルイよ
0382デフォルトの名無しさん
NGNG日本じゃマルチテクスチャとか、バンプマップとかの認識が
低いっていうのがあるかも。
とりあえず速く大量に描ければなんでもOKっていうか。
個人的にはPS2にマルチテクスチャがマルチテクスチャが使えない
のは唯一最高に痛い点なんだけど。
0383デフォルトの名無しさん
NGNG同意。海外のトップ開発者はみんなそうだね。やっぱカコイイヨ。
0384デフォルトの名無しさん
NGNG3D格ゲーのPG?
0385デフォルトの名無しさん
NGNGプログラマが会社を設立して経営を握ってる、
商品は下請けでなくオリジナル企画、
ゲームエンジンは自前、
これらの条件が揃って初めて可能だと思う。
0386デフォルトの名無しさん
NGNGそか、やっぱアレは開発し難いのか。なんか俺だけかと思ってたヨ。
とりあえずさ、メーカとして完璧なアンチフリッカーを実現する方法
を提示して欲しい。なんか今の資料で出来る範囲では全然解決になっ
てねーす。よそ様の大手でも解決出来てねぇ・・・。
0387デフォルトの名無しさん
NGNGそのままではないにせよ。
0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNGPVRのVQはコードブック最大256エントリってのがちと痛いんで
自分的にはS3TCに一票.
>>382
PS2は素人だけどフィルレートが充分ならマルチパスレンダリングで
割と何とかなるんじゃ? αバッファかステンシル無いと辛いけど.
0390デフォルトの名無しさん
NGNGDC と同じ方法(縦倍密でオーバーサンプリング)なら、
ごにょごにょ。よく調査すべき。(MGS2もこれね)
RGBA32bit, Z32bit だとテクスチャ1Mちょっとしか
あまらないのは勘弁だけど...。
0391デフォルトの名無しさん
NGNGGSの混載技術はソニー内製ですよ。
ここらへん混乱してる人いますが。
ソニーは0.25μmのDRAM混載技術については
沖電気との提携技術。0.18〜0.15μmについては
富士通との提携技術。0.13以降については
東芝と提携したって最近発表してますね。
0392デフォルトの名無しさん
NGNG>低いっていうのがあるかも。
>とりあえず速く大量に描ければなんでもOKっていうか。
勝手に認識低いことにされても。
あのーですね。とにかく速く大量に描けるということはマルチテクスチャを
描画することも結果的に可能ということになるんです。(マルチパスとはいえ)
フィルレートの差がNV系統とGSとでは、現状一桁近い差があるわけで、
数枚ベタベタ環境マッピングした程度では、やっぱりGSが数倍速いわけです。
(環境条件にも依存しますが)
ゲーム屋としてはですね、ダメージなどの表現で、画面全体に赤いセロハン(赤い
αブレンディングの無地のタイル)を貼り付けることが良くあるわけです。(※16Bit時代
以前であれば、パレットチェンジで簡単に済ませたのですが)
こん時、フィルレートの低い環境だと痛いの。
0393デフォルトの名無しさん
NGNGわかったから、その口調どうにかしてくれ。
0394ニセモノ
NGNG0395デフォルトの名無しさん
NGNG現状出ているソフトを見る限りでは、そう思わざるをえないけど…。
>GSとでは、現状一桁近い差〜GSが数倍速いわけです。
GSの速さは確かにすごいと思うんで、フィルレートの心配はしてない
んだけど、マルチパスによって失われるEEの資源(もしくはDMA
の比較的有限な帯域)が非常にもったいない、もしマルチパスできれば
いいのに…と思ったので。
0396デフォルトの名無しさん
NGNG○マルチテクスチャできれば…
すんません。
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG(海外30fpsのは除く)
いろんなリソース食う割には効果的でない。日本人向けじゃないのかな。
0400デフォルトの名無しさん
NGNGそれはまー常識でしょうなぁ。でも理論的にDCと同じ画面が
出るはずの処理をカマしてもやっぱフリッカーは残ってる気が
する。というか残ってる。そんな事ない?鬱だ詩嚢
0401デフォルトの名無しさん
NGNG一部の環境Mapやってるタイトルとか。そりゃ普通か。
そもそもウチの環境じゃライトマップ作る手段がないので
やりたくても出来ません。頂点カラーでいーじゃーん。
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNG確かに外野の雑音が増えましたね。詐称技術者もチラホラ。
0404デフォルトの名無しさん
NGNGへへへ。同感ですな。
自分は見物して楽しんでますが。(酒のツマミ)
0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNGあっしはスレッド発足直後からカキコしてますけど、
今のほうがオモロイですし、的外れな議論も少ないと思いますよ。
まぁ、メモリ話をしたかった方々にとってはつまらなくなったかも知れませんが。
0407デフャHルトの名無しbウん
NGNGPS2 はマルチテクスチャーも可能だし、それ前提でコードを書けば
DMA をパンクさせることなく、しっかりとしたパフォーマンスも出せます。
ただ、ただ問題なのは、これが非常に深刻なのですが、
秒間ポリゴン数だけを追求したがるプログラマーが、マルチテクスチャー
前提のコードを書こうとしないことなんです。
0408デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNGメモリ話もいいんだけど、実装面まで踏み込むとちょっと
話し難い事が多いからね。上で語ってたのが限度じゃないかな。
個人的にはX話はもうちょっと続けたい。まだ自分は触れる
環境にいないからさ。こんな所でダベるだけでも楽しいもんです。
やっぱ新しいハードはワクワクするっすー。
0411デフォルトの名無しさん
NGNGとなると、DC に近い感じになるのかな。
0412名無しさん
NGNG・PS2は特に無し
・GCはS3TC
・XBOXもS3TC
かぁ。時代はS3TCみたいですね。
PS2もなんらかの圧縮テクスチャに対応してればもっと楽になったのかも。
#確かに最近ゲーハーっぽいね。
0413デフォルトの名無しさん
NGNG>ゲーハー板にリンクされた時点で
アイタタ。何となくそんな香りがしてきたので見守ってたけど
やはりそういうことだったのね。かなり辛い仕打ちだよなぁ
0414デフォルトの名無しさん
NGNG一度この板全体のスレを見て雰囲気を読んで下され。
2ちゃんねるの中でもわりかし真面目なほうの板だし。
0415デフォルトの名無しさん
NGNG>>385
スレからちょい外れるけど、ゲームにおけるオープンソースについては
こんな考察がありますじゃ。Quakeの特殊性についても触れております。
http://www1.neweb.ne.jp/wa/yamdas/column/technique/gamej_ind.html
0416デフォルトの名無しさん
NGNG断片化しにくいmalloc/freeのアルゴリズムってどんな感じなんでしょう?
ていうか、動的メモリ管理ってったら
K&Rに載ってるそのまんまのやつしか知らないや。
0417デフォルトの名無しさん
NGNGここでの発言がゲーハー板の信者論争(ていうか煽り?)の題材としてコピペされてるみたい。
0418デフォルトの名無しさん
NGNG思います。贅沢フィルレートの使い方って単純なポリゴン数以外にもフィード
バック系のイフェクトだとか、残像処理だとか、できますし、そしてなによりも
フィルレートの高維持って基本的にはプログラマーの努力でなんとかなる部分って
ホントに限られてきますよね?
逆に環境マッピングだとかマルチテクスチャは、プログラマー側の努力でなんとか
なる部分なので。
一方、ジオメトリ演算の方ですが、
これはポリゴン数よりもグラフィッカーの力量に依存する部分が極めて大きいです。
ローポリでも形とるの上手な人が作って、それなりにリアルなテクスチャ張ってしま
う方が、プログラマーのいう例えば「30%パフォ上がった!」などというカリカリ
は、実は誤差に終わってしまうことが多いと思います。
(※自分もプログラマーなんで、自分で書いてて目が痛いですが〜)
0419デフォルトの名無しさん
NGNG>詐称技術者もチラホラ
仰る通りで。たった今もその意味がよく分かりましたよ。(ニヤリ
0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNG荒らしがいないという点やその他の点を考えても
まじめなのは同意だが、ここの板とプログラマ板は
板にいる奴の性格の悪さは他のスレよりかなり高いと最近思う
もちろん俺もオレモナー
0422421
NGNG0423デフォルトの名無しさん
NGNGかなり広大だと思う・・・。もうプログラマーだけではオプティマイジングは不可能ー
テクスチャエリアが間に合った日には、スターを取った時のマリオ同様、
GSはピッカンピッカン光りますよん!
(※でも穴に落ちるとやっぱり死ぬけどね)
0424名無しさん
NGNG最初の方でもやってたけど、
用途やサイズ(構造体/クラス)に合わせてメモリのプールを
用意しておくのが実装も単純だし効果も大きいと思う。
>>418
最近は特に(DC以降かな)
グラフィックのカリカリ>プログラムのカリカリ
は真な傾向ですな。ちょっとさびしい気がするけど。
0425デフォルトの名無しさん
NGNG0426名無しさん
NGNGおれの感覚が麻痺してるからなのかな。
0427デフォルトの名無しさん
NGNGアララ。子供の痴話喧嘩の片棒担がされてる状況なのね。萎えるね。
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNGって人居ますー?
043053
NGNGええ。私もずーっとココ読んでますけど、荒れていないと思いますよ。
DC vs PS2 論争、PS2 vs XBOX 論争、フリッカー論争の臭いも若干しますが、
すべて技術論ベースで、他の板で見かけるような、水かけ宗教論争では
ありませんし。
「非PC系ゲームプログラミング」の話をしてて、
ハード寄りの話が出てこない方が不思議でしょうし、
ハード寄りのマトモな技術話が出来る場所の需要は高いです。
守秘義務に抵触しそうな話題も、OH!X に載ってそうな程度の話までで
皆さん自粛してますし。特に問題は感じられません。
0431デフォルトの名無しさん
NGNGhttp://www.drf.co.jp/title/int2_1.html
0432デフォルトの名無しさん
NGNG内容とかぶるものがあるようです。
http://www.ascii24.com/24/news/keyp/article/2001/04/04/624901-001.html
UMAへのバスアクセスの集中の懸念に対して、MS側の回答は
「詳細は言えないけど、うまく対処する」という旨が。
現段階のX-GPUのフィルレートは、実機の数十%程度とのこと。
仮にこの後者のMSの回答が事実だった場合、実機でのフィルレートは
現段階の2倍程度のレートがせいぜいということになり、ちょっと鬱です。
TGSのデモで滑らかに動いていたものでも、ポリゴンモデルがカメラ
手前に近づいてくる瞬間に若干落ちてたりしていたので、フィルレートは
PS2に比べればかなり貧弱な感じです。
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG>って人居ますー?
カンペキとは言えないかもしれんが、
前フレームで多く使われたテクスチャは、次フレームでも、
多く使われる可能性が高いという法則で、
VRAMをキャッシュ的に利用してる。
0436デフォルトの名無しさん
NGNGでもゲーム用途の場合、たくさんのキャラを出したり、
広大な空間を表現したりという用途が多いのでX-BOXにも是非、描画力を
求めたいもの。(だって1年半も遅れて出るハードなんだし)
PS2からX−BOXへの移植が困難なタイトルがたくさん出ることになりますね。
0437デフォルトの名無しさん
NGNGPS2のフィルレートって有り余るというか、持て余してる位だから
それ程のフィルレートが無くてもあまり問題ない。
0438デフォルトの名無しさん
NGNGプリミティブのアップ時とロング時のフレームレートに変化ないほうが
「ゲーム専用機」的にはいいんじゃないでしょうか。
今になって考えてみると、PCのゲームって
フィルレートの制約が画面のつくりに結構影響してるような気がしてきた。
いわゆる洋ゲー的な空間の閉塞感とは関係あるかな? どうだろ。
0439デフォルトの名無しさん
NGNGリンク先には書いてないけど、XGA出力出来るみたいだね?
0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNGなるほどなるほど。
ソートが必要な半透明ポリとの兼ね合いも面倒ですよねぇ。
これも同時にクリアできれば、やっと PS2 が PS2 らしく
振舞えるようになるってもんですが・・・。
0442デフォルトの名無しさん
NGNGその通りだと思います。
BSP ツリー系の技術をベースとした DOOM 系のソフトが
やたら多いのも、フィルレートの問題が関与しているように
思います。
0443デフォルトの名無しさん
NGNG2倍ってのはそれのことでピクセルフィルレートはむしろ下がるよ。
0444デフォルトの名無しさん
NGNGフィルレートとBSPなFPSが流行るのは関係ないと思うぞ
0445デフォルトの名無しさん
NGNGフィルレートが低いから、BSP使って描画すべきポリゴン数を減らすってことだろ
0446デフォルトの名無しさん
NGNGうちでは半透明で描画されるテクスチャに関してはGS常駐にさせてます。
>BSP ツリー系の技術をベースとした DOOM 系のソフト
確かに、2D描画の面積をなるべく減らそうという発想が
先に来ている技術なのは確かですね。
でも遠くの壁一枚描画をキャンセルするよりも、ちょっとした銃弾が
手前に飛んできて半透明描画するコストの方が高いかもしれないこと
考えると、2Dフィルレートが高いことに超したことないと思います。
どちらかというと、「2Dフィルレートはあればそれでよし」という
よりかは「2Dフィルレートはあって当たり前」と解釈してます。
0447デフォルトの名無しさん
NGNGBSPなFPS の“FPS”が何を略か教えていただけると助かります。
当方は“First Person 何か”かなと推測しておるんですが。
0448デフォルトの名無しさん
NGNGそういえば、英語圏ではなぜシューティングゲームがshooterになるんだろう。
0449デフォルトの名無しさん
NGNGするんじゃないかなぁ(日本のゲームだと画面切り替えで領域限定
をする必要のないソフトが多かったり)
ソフトレンダーの時代ではオーバードローを極力減らすって目的が
多かったと思うけど、現在ではBSP自身には領域決定以上の意味は
ないと思うけど…。
0450デフォルトの名無しさん
NGNGMSの発表どおり、仮に既に数十%もパワーを出しているのだとしたら
「開発はしやすいけど、頑張ってもパワーの出ないマシン」という烙印を押さずには
いられない。解像度を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つっても、怪しいASUSドライバとかでワイヤーフレーム表示すると
結構無駄描きしてんじゃん!って話もあり
0455デフォルトの名無しさん
NGNGからだと。最近のPCのボートも言うほどショボくないけど。
まPS2がバケモノなのは認める。
0456デフォルトの名無しさん
NGNG実際サンプルコード書いてみて試して見ました。
ビデオカードはGeForce2-16M、512*512-32Bitなテクスチャを
10枚、640*480に貼り付けて70fps。これをαチャンネルを
つけてみると40fps。約半分。あららガッカリ。
これからマルチテクスチャやら圧縮テクスチャやらバンプやら
アレコレやる事を考えるとちょっと低すぎですなぁ。XDKα2相
当とかのGeForce3が今の2倍、XChipとやらがその数割増しな
ら許容範囲かな。
0457名無しさん
NGNGキャッシュもあんまおっきく無い見たいだし。
メモリアクセスすると他の部分にも影響を与えるみたいだし・・・
そのへんどうよ?
#まだXBox箱から出してないよ・・・鬱だ・・・時間をくれ・・・
0458デフォルトの名無しさん
NGNG解像度は640*480pixel という条件下ですか?
0459デフォルトの名無しさん
NGNG/ / ̄\ ヽ
/ / \ ヽ、、、ヽ
| / (>) (<)| |
| | つ | |
| | ___ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | \__/ | .| < ポリゴン?逝くだけならテキストで十分
ゝ‐イ\. ・ /ノ \______________
/  ̄ ̄ \
| | | |
| | | |
|⌒\| |/⌒|
| | | | |
| \ ( ) / |
| |\___人____/| |
| | ∵ Y∵∵ | |
/∵∴,(・)(・) ヽ
(∵ __/ ○.ヽ,, ,)
丶1 三 | 三 !/
ζ, __|_. j
i \_/、 j ぼっきドラえもん♪ おまえら3Dヲタクはイッテヨシ
| 八 |
| ! i 、 |
| i し " i '|
|ノ ( i i|
( '~ヽ ! ‖
│ i ‖
| ! ||
0460デフォルトの名無しさん
NGNGhttp://www.drf.co.jp/title/int2_2.html
0461デフォルトの名無しさん
NGNGそれにしても、なんだかんだ楽しそうに開発してるなぁ〜
0462うげぇ
NGNGテクスチャでソート掛けるのは基本だと思うんだけど、
その他のレンダリングステートとか、TexureStageState&ColorState
はどう扱ったらいいかな?
ステート変更の必要性をチェックする為に、直前の描画のステートとの比較する
と思うんだけど、比較項目多いよね?。レンダリングステートを一旦登録して
インデックスNo.で管理&比較つーことになるんだろうけど、色々面倒じゃない〜??
そこまでしないと駄目?(テクスチャ以外も馬鹿正直に毎回設定したら遅いんだろうか?)
0463デフォルトの名無しさん
NGNGあとステートブロックつかうとか?
スレ違いなのでsage.
0464ゲーハー野郎
NGNGこのへんが
>XDKα2はAGP経由で別VRAMへテクスチャ転送
0465デフォルトの名無しさん
NGNG使ったことないんで判らないけど、そういう風にも作れるんじゃないの?
GeForce2or3に64M積んでいたら、ゲーム中は転送しなさそ
うなキもするけど、HDDにテクスチャ積むとかいってるし。
0466デフォルトの名無しさん
NGNGまいった。一応下っ端開発者と言えど厨房扱いされる言われはねーぞ。
http://www.watch.impress.co.jp/game/docs/20010401/xbox3.htm
ウチはまだXDKどころか参入も決まってないんでこうゆうニュース
ソースから情報得るしかないからな。
ま、バカ正直に信じるのも厨房くせーと言えばそんなもんか。
0467ゲーハー野郎
NGNGとにかく>>466はゲーハー板レヴェルなのでこっちへこい。受け入れてやる。
0468デフォルトの名無しさん
NGNG現状どれぐらい可能なんでしょうか?
加算+減算 のエンボス系ではさすがに限界が・・・。
0469デフォルトの名無しさん
NGNG> XBoxのCPUって頭でっかちすぎる気がするんだけど、
あっしは速い分には歓迎ですが、
なんでよりによって、今さら x86 系??って感じですよぉ。
汎用レジスタが 8 本しか無いんですよね。もぅ。
0470デフォルトの名無しさん
NGNGP3セレロンのネイティブでもそうなん?
SSEとか、MMXで増えているのをそのまま使えるんじゃないかな?
0471デフォルトの名無しさん
NGNG内部に仮装レジスタ大量に持って、アウトオブオーダー実行とか
ムチャな技術を搭載して頑張ってスペックを上げてはいるのですが、
少ない汎用レジスタをメモリに退避する部分だけはアウトオブオーダー
の誤魔化しが効かず、大きなネックになっている模様。
x86系って、過去のしがらみ大全集みたいな CPU だよね・・・。
0472デフォルトの名無しさん
NGNGSSE や MMX 用に拡張されたレジスタは、特殊な演算用途のモノなので
そのような場面以外では使い物にならないですよ。
・・・・そういや MMX はもう出番ないね。XBOX では。
0473デフォルトの名無しさん
NGNGEmotionEngineやSH4の命令セットの秀逸性に慣れてしまうと、
x86はお子様セットにしか見えないのは仕方ないです。
頂点演算はT&Lにお任せするということで、大目に見てあげましょう。
(アプリケーション内でのベクトル演算や、各種定数Matrixの生成く
らいは、さすがにx86でも間に合います)
0474デフォルトの名無しさん
NGNGX-BOXにEEを載せろとは言わないから、せめてSH4を載せて欲しいなぁ。
SH4って現段階だとクロックどれくらいなんですか?
仮に300MHz程度だったとしても、Pen3の700Mhz程度では歯が立たないと思うんだけど。
0475デフォルトの名無しさん
NGNGというのは空威張りだと思うんですが。根本的な解決手段といったら、
VRAMを別に設けることくらいしかないですし。
DMAを工夫したところで、結局タイムスライスにしかならないし。
ビデオチップからのテクセル参照頻度を考えると割に合わないと思います。
0476デフォルトの名無しさん
NGNGDOT3もどきなら、3Pass(XPass,YPass,ZPass)もしくは6Pass(+-X,+-Y,+-Z)
+1Passで可能だと思います。ただ、こんだけマルチパスしてDiffuseだけ
とかだと泣けてきます。(藁
いくらGSが速くてもEEが先にネをあげてしまうでしょう。
PS2だとせいぜいエンボスが実用的な所じゃないかと思うんだけど、
いい方法があったら聞いてみたい。
0477デフォルトの名無しさん
NGNG質問なんですが、DirectXにてテクスチャハンドルを切り替える手段は
->SetRenderState(D3DRENDERSTATE_TEXTUREHANDLE,??) 経由でしか
存在しないのでしょうか?
他にも、グーロ/フラット の変更や アンチOn/Off やαの設定も
->SetRenderState()経由での変更方法しか見当たらず焦っています。
0478デフォルトの名無しさん
NGNGPC系は別スレ逝け
0479デフォルトの名無しさん
NGNGこれ読んでみて。解決法が書いてあるよ。
http://www.nvidia.com/Pages.nsf/Lookup/LightspeedMemoryArchitecture/$file/LightspeedMemoryArchitecture.pdf
0480名無しさん
NGNG今時1wayの命令8kB+データ16kB。
日立の技術者になんでSH2から退化してるのかって聞いたら、
複雑な奴は200MHzで動かせなかったんだって(笑)
P3より速いなんて事は無いと思うな・・・
0481デフォルトの名無しさん
NGNGXBOXかも。
0482デフォルトの名無しさん
NGNGAPIの仕様から考えて、そうではないと思いますよ。
>>477
一般的なDirectXの話題ならこちらのスレッドほうが
期待通りのレスが付きますよ。
■鬱だ氏のうDirectX
http://piza.2ch.net/test/read.cgi?bbs=tech&key=966655286&ls=10
0483デフォルトの名無しさん
NGNGSH5 400MHzがあるぞ。
http://www.superh.com/sh-5_microprocessor_architectu.html
http://www.superh.com/elecen.pdf
0484デフォルトの名無しさん
NGNG間違えた。
PDFはこっちを見てくれ。
http://semiconductor.hitachi.com/superh/sh5_whitepaper.pdf
0485デフォルトの名無しさん
NGNGL1キャッシュまでは733Mhzで動くんでしょ? X−BOXがマルチスレ
ッドでキャッシュ破壊しまくりじゃなければ、すごい速く動くんじゃないかなぁ?
0486デフォルトの名無しさん
NGNG抱かないほうがいい。もともと用途が違うんだし。
0487デフォルトの名無しさん
NGNG0488ゲーハー野郎
NGNGあなたも是非ゲーハー板にいらっしゃーい。
このへん
>DMAを工夫したところで、結局タイムスライスにしかならないし。
タイムスライスではなく、バスを32bit*4にスライスしました。
昔の話です。
そーゆー意味で言ったんじゃ無いやい!という場合は文章表現法を精進のこと。
さっきゲハ板とんでたけどね。
0489ゲーハー野郎
NGNGあなたも是非ゲーハー板にいらっしゃーい。
このへん
>DMAを工夫したところで、結局タイムスライスにしかならないし。
タイムスライスではなく、バスを32bit*4にスライスしました。
昔の話です。
そーゆー意味で言ったんじゃ無いやい!という場合は文章表現法を精進のこと。
さっきゲハ板とんでたけどね。
0490デフォルトの名無しさん
NGNGマジでっ!?
0491デフォルトの名無しさん
NGNG勝負すらできません。キャッシュうんぬんの話ではなく、レジスタ数や
命令セットの段階で致命的に足りないからです。
ただ、X-BOXの場合、ジオメトリ演算をPen3でやろうなどという無謀な
ことは流石に考えていないので、トータルでは致命的な弱点というわけ
でもないと思います。
0492デフォルトの名無しさん
NGNGに搭載されてる機能なんでしょうか?
やっぱコプロ接続クラスは欲しいかなぁ・・・。
0493デフォルトの名無しさん
NGNGもっと頭を使いましょう。
これ以上は言えないが、そのうち判るであろうよ。
0494デフォルトの名無しさん
NGNGヒントをおしえて。ALPHAの設定によっては1PassでDOT3もどきができるってこと?
0495デフォルトの名無しさん
NGNG2path。これ以上は…
0496デフォルトの名無しさん
NGNG>に搭載されてる機能なんでしょうか?
>やっぱコプロ接続クラスは欲しいかなぁ・・・。
pen3が貧弱なのでコプロクラスのものが欲しい気持ちは分かりますが、
T&Lはvu1よりも遥か遠いところにあります。
また、その演算力もvu1にはほど遠いものがあります。
でも並列度は高いので、その分のメリットは大きいと思います。
0497デフォルトの名無しさん
NGNGてことは1path(間違えてた。鬱)でフラグメント単位の明るさ
が設定できるって事か…(1pathはベーステクスチャだよね?)
サンキュ、ちょっと考えてみるよ。
0498デフォルトの名無しさん
NGNGゲハ板にいらっしゃい
0499デフォルトの名無しさん
NGNG>->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まとまった変更なら、StateBlock使うのはどう?
#たぶんそれでも遅いのかな。
0502デフォルトの名無しさん
NGNG>呼び出し続けてみると約半分の150サイクルでした。
キャッシュにヒットしてただけだったりして。:-P
0503デフォルトの名無しさん
NGNGちゃんとソースレベルでどちらも並べて書き並べ、念のため
コンパイラが勝手に最適化していないか、アセンブラソースまで
出させて確認しました。
->SetRenderState() 50個並べたコードを100回Loopさせ、
5000回呼び出した時のCPUサイクルを計測しました。
0504デフォルトの名無しさん
NGNG良い線ですね。まぁちょっと考えれば判るはず。
これの応用はいろいろとあったりして…
ところで、pathじゃなくてpassが正解だあね。
穴があったら入れ…はいりたひ。
0505デフォルトの名無しさん
NGNGマテリアルもそう。1シーン1種類で駄目か?
こういった設定を頻繁に変えるのなら別だけど、変えないのなら
Direct3Dのステートの方が有利なんじゃないかな。最初に1回設定するだけですむし。
テクスチャ変更に要するオーバーヘッドが大きいことは、MSも欠点として認めてる。
だからDirect3Dでは、テクスチャを一つにまとめてテクスチャソートをすることを推奨してる。
このぐらいは許容範囲だと個人的には思うけど。
0506デフォルトの名無しさん
NGNG頂点フォーマットに頂点色含ませればいいよ。
データサイズを選ぶか、ステート変更回数を選ぶのかは
好きな方にすればいいね。
0507デフォルトの名無しさん
NGNG>「テクスチャ参照ブロック」や「フラット/グーロ フラグ」や「アンチか否か?」
>などの情報メンバを含ませるべきです。
それは無理な話。レンダリングステートで持たせておくべきだ。
ステートマシンについて少し知識を付けることを勧める。少しでも
知識があれば(俺も少ししか知らない)上のような発想は出ないだろう。
大体、頂点単位のシェーディング設定なんてどうやったら実現できる
のだろうか?ポリゴン単位ではなくて?
煽りでは無くて、少し冷静になって考えてみよう。
0508デフォルトの名無しさん
NGNGわかったような気がするよ。
0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=966655286
Xbox固有のネタはこっちでもいいけど。
0511デフォルトの名無しさん
NGNG499な方のこの発言↓がいわゆるステートマシンというものではないでしょか?
>>「モードチェンジ特殊プリミティブ」というのを追加するなどの
>>解決方法があった筈なのですが〜
>マテリアルもそう。1シーン1種類で駄目か?
現状であれば駄目というほどでもないけど、今後、つらくなってくると思われます。
やはりこれからは、フィードバック系のイフェクトなども使われるように
なるので、Zバッファに頼ることなくある程度の自前Zソートが必要に
なってくる思います。そうすると、ビデオチップに流し込むプリミティブ順序が
異なるテクスチャブロックやマテリアルを持つプリミティブがご茶混ぜになって
しまうので、やはり最低限の情報はステートに持たせるのではなくプリミティブ
に持たせる設計が有利になると思います。(各プリミティブサイズが大きくなると
なんらかのバス帯域を圧迫しかねないので断言はできないですが)
499さんはプリミティブサイズの肥大化を懸念してますが、シェーディング情報
だとかは 数bitあれば納まる代物ですし、テクスチャ参照も32Bitもあればお釣り
が来るので、各プリミティブに混入させてもダメージは皆無だという意見が自分のところの
職場の了解です >>Direct3Dの低レベルプリミティブに関して
>>510さん
DirectX固有ネタっぽいですが、内容的には汎用的なのでこちらに書き込みました。
0512デフォルトの名無しさん
NGNG>ステートマシンについて少し知識を付けることを勧める。少しでも
>知識があれば(俺も少ししか知らない)上のような発想は出ないだろう。
>大体、頂点単位のシェーディング設定なんてどうやったら実現できる
>のだろうか?ポリゴン単位ではなくて?
>煽りでは無くて、少し冷静になって考えてみよう。
499は
>「モードチェンジ特殊プリミティブ」というのを追加するなどの
という具体的解決方法を提示しているし、これこそがいわゆるレンダリングステート概念です。
問題はその実現手段なわけですね。
たかがレンダリングステートの変更に、わざわざD3D device のメソッドを呼び出さなければ
ならないのは、確かに致命的な癌であることには自分も同意です。
0513デフォルトの名無しさん
NGNG今忙しいから暇になったら詳しく書きます。
DirectXのことは知らないんだけど、例えばDrawPrimitive中に
レンダリングステートが変わると言うのは許されているわけ?
多分DrawPrimitive中はレンダリングパイプラインにバカスカ
頂点データをおくっていると思われるけど、例えばそこで
テクスチャーの参照を変えたりできるような設計の方が問題
あると思うよ。ステートチェンジはCPUのオーバーヘッドの問題以上に
パイプラインの分断(言い方はこれであってるのかな?)という
大きな問題があるからね。それを頂点毎?
あと、トライアングルを書いてる途中(ラスターに送っている最中)に
テクスチャー参照もしくはアンチエイリアス設定が変わったら
どうなると思う?俺には想像がつかない。
さらに、テクスチャーには凄い数のパラメータがあるけど
それはどこで変更するの?タイリングの設定、フィルタリング
の設定、プライオリティー、さらにマルチテクスチャーだったら?
必要最低限な情報ならおそらくそのプリミティブにも含まれている
んじゃないかな。
頂点座標、頂点カラー、法線、uv、こんなもんか。
レンダリングステートってのは言う間でも無く色々あるわけで、
それの変更はレンダリングパイプラインを止めないといけない
(用語の使い方に自信無し)。ステートマシンの基本構成図を見て
みればすぐに分かると思う。
これ以上つっこんだ説明はできないけど、「モードチェンジ特殊プリミティブ」
は非現実的な要求なんですよ。
スレ違いにダラダラ書いてごめんなさい。でもこの位は基本
なんじゃないでしょうか?cs,pc関係なく。
あと説明もムチャクチャか。下げよう。
0514名無しさん
NGNG機能が限定されたハードでの発想のように思える。
32bitで十分とか言ってるけど、マルチテクスチャがあるし。
(あ、だからPS2ってシングルなのかな?)
まぁ確かに移植には面倒そうだが。
0515デフォルトの名無しさん
NGNGテクスチャキャッシュが寸断されそうだな。
効率性を追及したら結局はステート方式に
なるんじゃないの?
あとプリミティブデータの増大はかなりよろしくないと思うよ。
参照にすればいいとか言ったって、アドレス分の4Byte?ぐらいは
増える訳だし。100万単位のポリゴン数になったらシャレにならんと思う。
0516通りすがりの名無しさん
NGNGいえ、一般コンシューマ機と比較した上での DirectX の話ですし、
面白いのでいいんじゃないですか?
ステートマシンという考え方にも興味が湧きました。
さておき、
>「モードチェンジ特殊プリミティブ」は非現実的な要求なんですよ。
ここのところが良くわかりません。
ここでいう「モードチェンジ特殊プリミティブ」ってのは、
パイプラインが停止しても良いので、必要な時に、必要なパラメーター
のみを変更する事が可能なプリミティブのこと、でしょうか?
0517デフォルトの名無しさん
NGNGポリゴンを構成する頂点のデータフォーマットってことだろう?
頂点フォーマットに付け加えるのに、相応しいデータ相応しくないデータってのを
考えればわかりやすいんじゃないかなあ。
0518名無しさん
NGNG>パイプラインが停止しても良いので、必要な時に、必要なパラメーター
>のみを変更する事が可能なプリミティブのこと、でしょうか?
それだったら、頂点データとマテリアル変更のリストでも作って、
自分でやれば、済むんじゃないの?
0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG518の言っているように、
パイプラインが停止するなら頂点データに持たす意味なし。
ディスプレイリストみたいで使いやすくなるって程度ですね。
DrawPrimitiveで痛いのは、OpenGLと比べると
異常にオーバーヘッドが大きいことです。
OpenGLなら100頂点程度繋げばピーク性能出るらしいんですが、
DrawPrimitiveじゃ500頂点くらいはまとめないと
性能出し切れないらしいです。
0522傍観者です
NGNG> たかがレンダリングステートの変更に、わざわざD3D device のメソッドを呼び出さなければ
> ならないのは、確かに致命的な癌であることには自分も同意です。
なるほど、やっと話がつかめてきたよ。
つまり、Direct3D にて、描画チップ内の描画パラメーターを変更するには、
いちいち描画チップを停止させて、CPU 側でパラメーターを設定しなおさ
なくちゃいかんので、CPU と描画チップが並列動作できないから、
こりゃ終わってますなぁ。という話なんですね?
完全に並列動作させるには、描画パラメーターをプリミティブで変更できる
必要があって、このようなプリミティブを「モードチェンジ特殊プリミティブ」
と、ここでは呼んでいると。で、あってるかな?
0523デフォルトの名無しさん
NGNGコマンドキューって知ってる?
0524デフォルトの名無しさん
NGNGでっかい 3D ポリゴンのカリング処理、入れてますー?
手前のカリング、左端のカリング、右端のカリング、上端のカリング、下端のカリング。
これらすべてこなすと、面倒な処理を含む大規模なルーチンになりますよねぇ。
「ヤツのあの狭いメモリに載るかな・・・?」
「ヤツは分岐苦手だぞ・・・?」
などなど、いろいろと苦悩することに、なりますよね。
果たして、入れるべきか、入れざるべきか。
ウチは入れてるよ、という方、いらっしゃいます?
0525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
NGNG>コマンドキューって知ってる?
ではキュー使ったとして、
描画の終了を、いかにして CPU は即座に感知するのでしょうか?
0527デフォルトの名無しさん
NGNGオマエモナー
0528デフォルトの名無しさん
NGNG君みたいに基本がなってない人に教えるのは難しいと思う。
Direct3DをDrawPrimitiveのオーバーヘッドが大きいと非難するのはいいが
描画チップが止まるから駄目だなどと文句をつけるのは見当違いでしかないよ。
0529デフォルトの名無しさん
NGNGやっぱCOMインターフェースだからかね?
0530デフォルトの名無しさん
NGNG499 の方が書かれているように、D3D の描画の終了待ちはポーリング
しかないのだそうです。だとしたら、まぁ、死亡ですな。
で、やっと本題なんですけど、X-BOX でも同様の問題を抱えているのか?
ということなんですけど・・・。
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNGモノによるのでは。カメラの移動範囲がある程度特定(もしくは固定)でき
るものだったらシザリングするより、あらかじめ割っといて、量を出す方が
お得だと思う(<超主観)
壁に近づく迷路タイプのものは、でかい壁のみをシザリングありで描いて
内部の装飾品(あまりシザリングが必要なほど近づかないと思われる
細かいモデル)はクリップのみとか。
クソレスでゴメン。
0533524
NGNGおおっと、「カリング」じゃなくて「シザリング」でした。失礼失礼。
シザリング、つまり手前に来たポリゴンを、切断して描画するべきかどうか。
やはり、シザリングするもの、しないもの、使い分け路線しかないのかねぇ。
0534デフォルトの名無しさん
NGNGここで言ってるパイプラインの待ちって、
ラスタライザに送るまでの変換パイプラインの事でしょ?
さすがに、描画終了待ちなんかしてたら、
使い物にならないよ。
0535デフォルトの名無しさん
NGNGなんかややこしくなってきたので確認・・・。
D3D 上で、フラットポリゴンを 1000 枚描画した後に、
グーロポリゴンを 1000 枚描画したいとしましょう。
手順はこんな感じでしょうか。
(1)SetRenderState で、フラットポリゴンの状態に設定。
(2)DrawPrimitive 実行。1000 枚のフラットポリゴンが描画される。
(3)SetRenderState で、グーロポリゴンの状態に設定。
(4)DrawPrimitive 実行。1000 枚のグーロポリゴンが描画される。
で、問題は(2)と(3)の間で、この間 CPU はボーっとしてるしかない
んでしょうか?、ということなんすけど。
0536デフォルトの名無しさん
NGNG待つとかいう認識でもあるのかしらね?
そんな訳ないんだが。
0537名無しさん
NGNG何があるでしょうか。
かつては BSP ツリーが持てはやされましたが、近頃はさっぱり
聞かなくなりました。BSP ツリーの手法は脈々と引き継がれて居るのか、
それとも、新たな新機軸が打ち出されたのか。
0538デフォルトの名無しさん
NGNGだから何のためにコマンドキューがあるんだ?
CPUレベルでポーリングする必要が何処にある?
0539535
NGNGDrawPrimitive がノンブロックで終了しても、
描画チップが(2)にて 1000 枚のフラットポリを描画し終わらないと、
CPU が(3)の SetRenderState を実行できないとしたらアウトです。
0540デフォルトの名無しさん
NGNGSetRenderStateの指示もキューに置く。そのときHALデバイスは渡された値を保持しておく。
もしGetRenderStateされたら、HALデバイスが保持している値を返す。
(常に最後にセットされた値が帰るということ)
0541535
NGNGてことは、(1)〜(4) の処理はコマンドキューに投入されるだけで、
(1)〜(4)はノンブロックで通過できるということですね?
0542デフォルトの名無しさん
NGNGV-TUNEで最適化しろっていってたよ
0543デフォルトの名無しさん
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=966655286
0544デフォルトの名無しさん
NGNGタイルアーキテクチャなんて、どーなるんだよ。
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNG描画したい「無限の広い世界」にもよるなぁ。
部屋が廊下でつながれているダンジョンタイプなら、(ドアの前後で画面
切り替えが発生しないようなものなら)依然としてBSP+Portalは候補の
一つとしてあげられるし(ただ、ハードウェアレンダリングの昨今では、
QUAKE1とまったく同じ方法というわけにはいかないと思うけど)
広いランドスケープに建物が建っているタイプならランドスケープは
プログレシブメッシュ(今なら曲面で持ったほうが良いのかな?)+
Octreeで建物の絞込み+建物をLODで描画とか。
0547デフォルトの名無しさん
NGNG>CPU待つんじぇねぇの? PCのDXだけどMSがそう説明してたよ
>V-TUNEで最適化しろっていってたよ
まじっすか・・・。
搭載ビデオカードによってタイミング変わるのに、V-TUNEで最適化?
もはや支離滅裂ですな。
仮に XBOX の Direct3D HAL ではキューが有効だとした場合なんですけど、
テクスチャーデータまではさすがにでかくてキューに置けないですよね・・・。
つまり、テクスチャー転送はアーキテクチャ的にどうしても避けたかった?
だから nVIDIA は、リスクを背負ってまで UMA を選択したのかも。
「XBOX の UMA は、Direct3D のしがらみによるもの」だったのかも。
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGテクスチャデーターをキューってなんだよ。
0550デフォルトの名無しさん
NGNG支離滅裂はお前
0551デフォルトの名無しさん
NGNG>(2)DrawPrimitive 実行。1000 枚のフラットポリゴンが描画される。
>(3)SetRenderState で、グーロポリゴンの状態に設定。
>(4)DrawPrimitive 実行。1000 枚のグーロポリゴンが描画される。
>で、問題は(2)と(3)の間で、この間 CPU はボーっとしてるしかない
>んでしょうか?、ということなんすけど。
もちろんDrawPrimitive()自体はノン・ブロック関数です。
ですが、SetRenderState()は最後に発行されたDrawPrimitive()が終了する
まで待機しています。したがって、あなたのいう(3)のSetRenderState()にて
事実上、ブロックされます。(つまり残念ながらあなたの懸念は的中です)
0552デフォルトの名無しさん
NGNGnVIDIA は DirectX 以外の代替手段用意してないの?
0553デフォルトの名無しさん
NGNG> 事実上、ブロックされます。(つまり残念ながらあなたの懸念は的中です)
なるほど。
こりゃ下手すると描画ポーリングに要1スレッドですか。
たかだかポーリング用のスレッドチェンジで L2 キャッシュが
破棄されて、XBOX の UMA アーキテクチャーに大打撃とか?
0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNG○2)DrawPrimitive 実行。1000 枚のフラットポリゴンの描画コマンドが登録される。
なんで、この違いが判らないかな?
0556デフォルトの名無しさん
NGNG>○2)DrawPrimitive 実行。1000 枚のフラットポリゴンの描画コマンドが登録される。
>なんで、この違いが判らないかな?
↑ドライバベンダに対するMSの規定ではそのように定義されていません。
「::EndScene()までに描画すれば良い」という指示があるだけです。
ドライバのローカル領域が溢れた、だとかステート変更時にビデオチップ側(というかボード側の制限)により
ハンドシェイクが必要な場合など、状況に応じて溜めておいたプリミティブを
::EndScene()呼び出しを待たずしてフラッシュすることがあります。
そのタイミングの一つが ::SetRenderState()だというのが 551さんの結果記載なのでしょう。
Zソートが必要な場面で、SetRenderState() 呼び出しとDrawPrimitive()の呼び出しの
入れ替えを頻繁にせざるを得ないDirect3Dの設計に救いがないのは、諦めましょう。
所詮ソフト屋の作ったインターフェイスです。
同じソフト屋でもせめてゲーム業界のソフト屋に作らせれば、当たり前のものが仕上がったんでしょうけど。
0557デフォルトの名無しさん
NGNGだから描画コマンドをキューして、EndScene()までに描画するんでしょ?
まともな3Dカードなら、SetRenderState()で描画待ちなんかしないよ。
0558むむ
NGNGEndScene()が描画終了待ちだね。
なんかどうしても描画待ちさせたい人がいるようだけど(笑)、
PowerVR系なんかは、EndScene()を呼ばないと、描画自体を始めないよ。
0559デフォルトの名無しさん
NGNGそのシーンでのプリミティブ数に比例して、そこでCPUはブロックされてしまうのでしょうか?
0560デフォルトの名無しさん
NGNG>だから描画コマンドをキューして、EndScene()までに描画するんでしょ?
>まともな3Dカードなら、SetRenderState()で描画待ちなんかしないよ。
ここでいう描画コマンドのキューは、物理的にはどこに存在するのでしょうか?
メインラムですか?それともグラフィックチップの受け口ですか?
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNGDrawIndexedPrimitiveの直後に、SetRenderStateを3回呼んで、
処理時間を計測してみた。
モデルはSDKのイルカ君。
もし描画待ちをしてるなら、最初のSetRanderState()だけが、
凄く時間がかかる筈だ。
1回目2.79ns
2回目1.40ns
3回目1.40ns
たしかに一回目は少し遅いが、
この程度なら、パイプライン待ちといえるだろう。
ちなみに、解像度を変えても値はほとんど変化しなかった。
0563デフォルトの名無しさん
NGNGプログラムもしねー、DirectXなんか使ったこともねー、そんな段階でよくずうずうしく文句なんか
言えるもんだ。
それがイヤならPS2でスキニングすら出来ない独自エンジンでも組んでろ。
*************************DirectX関係終了*******************************
0564吾輩は名無しさんである
NGNG一発で話が通じるような話題のような気がするナリが。
吾輩はDirectXやらぬので、実際のところ知らぬし興味もないが。
0565デフォルトの名無しさん
NGNGまあX−BOXの実行結果は載せられないのかもね。PC上のエミュなら海外で
無償提供しているXDKを使えそうだけどね。どうでもいいようなので終了か。
0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNG簡単。
0568デフォルトの名無しさん
NGNGキューのフラッシュごときでブロックされたらたまらんぜ。
キューはバッファに一定の量が溜まるか、
EndScene()コールによって明示的にフラッシュされるが、
これは実行のブロックではないので注意。
もちろん、多少のオーバーヘッドは発生する。
CPUレベルで本当に実行がブロックされるのは、
ハードウェアリソースを実行ブロック防止フラグなしで
ロックした場合とか、VSYNCした時とかくらい。
そもそも、そういう時以外に実行をブロックする意味がない。
0569デフォルトの名無しさん
NGNG>凄く時間がかかる筈だ。
>1回目2.79ns
>2回目1.40ns
>3回目1.40ns
なんか無意味な計測結果を載せているリアルな厨房が〜
結局、パケットはどこかで「CPUが」転送せねばならないので
どこかでブロックされるのは確かです。
うちのPC環境ではSetRenderState()では観測されなかったけど、
EndScene()で数十万クロックも待たされました。
このクロック数はそのシーンで登録した頂点数にほぼ比例。
X-BOXに関しては565指摘のように契約絡みで計測結果載せられないし、
なにより試作機ということで無意味なデータになるしね。
ただ「パケット転送をCPUがやらねばならないのでどこかでブロックされる」
とだけ書いておこう。
SGIマシンだとか家庭用ゲーム機であれば、
このあたりDMAで手際良く転送してるけどね。
T&Lの融通性がもっと上がればこの手の転送ネタはどうでも良くなるのだけど、
現状はまだまだでしょ?
0570デフォルトの名無しさん
NGNGはぁ?SetRenderState()で待つのかって話だろ?ちゃんと読んでるか?
EndScene()で、描画待ちするのは当たり前だよ。
その後に、バッファフリップするんだから。
ゲーム機でも終了してなければ、描画終了を待つのは同じだぞ。
0571デフォルトの名無しさん
NGNGパイプラインのペナルティ以外では、
ブロックされないって事でいいのね。
パケット転送って何だろ。描画コマンドのセットアップの事かな?
0572sage
NGNG0573デフォルトの名無しさん
NGNG横ヤリになりますが、そういう議論じゃないですよ。
どこかで「転送待ち」が発生するのか否か?というのが大筋の流れでは?
>>EndScene()で、描画待ちするのは当たり前だよ。
>>その後に、バッファフリップするんだから。
>>ゲーム機でも終了してなければ、描画終了を待つのは同じだぞ。
んー、この3行でホビーな方であることが丸出しですね。
語気を強めるのはもうちょっとだけ勉強してからの方がいいですよ。
ゲーム機の場合、まずプリミティブの描画登録をします。
登録が終わったら、プリミティブ列の先頭をキックします。
で、その後、描画終了待ちなどせず次のフレームの処理へ
移行し、新たなプリミティブ描画登録を始めてしまいます。
この間、別スレッドなりDMAが、前のフレームで登録された
描画予約リストをラスターへバスの隙間をぬぐって転送します。
表示領域のフリップ時に必要な描画終了待ちは、1フレーム前に
登録された描画リストのバックグラウンド転送を待つのであって、
そのフレームで予約登録された描画リストを待つのとは根本的に
違います。(CPUネックの場合は1フレーム間に登録された描画
終了待ちは「ゼロ」になります)
あー、なんか説明下手すぎる文章。
でも、大まかにはこんな感じです。
0574デフォルトの名無しさん
NGNGあるのはなぜだ!!(いや、実際には0.1秒くらいかもしれない。
計測不能なんで目測なんだけど)
0575デフォルトの名無しさん
NGNG> 語気を強めるのはもうちょっとだけ勉強してからの方がいいですよ。
あーあ、言っちゃった・・・。ま、そゆことです。
0576デフォルトの名無しさん
NGNGいやー、そりゃD3Dでもパフォーマンス追及するなら同じだべ。
ハードパケットじゃなくて自前でスレッド走らせたりする必要
はあるんだけどな。
しかし、XBOXでDirectXレスなパワフルなメーカさんは出てくる
のかな?実際カリカリでハードパケット流してやった場合とXBOX
でヌルヌルな場合ってどれぐらい差が出るんだろ。
0577デフォルトの名無しさん
NGNGで、本題ですが、
XBOX は OS は載せないって方針を打ち立てているって聞いたのですが。
DirectX 経由でなく直接描画チップ叩けるんでしょうか?
0578デフォルトの名無しさん
NGNG俺はコンシューマのプログラマっす。
>そのフレームで予約登録された描画リストを待つのとは根本的に
>違います。
根本的に違うって程でも無いと思うぞ。
描画コマンドキューで現フレームか、
描画コマンドバッファで前フレームの違いだけ。
フリップの前に描画終了を待つのは一緒だな。
(レイテンシとメモリ効率的にはPCの方が有利だな。
DrawPrimitiveに間が開くと無駄が生じるのは欠点だけど)
あとコマンドキューにコマンドを追加するのに、
いちいちブロックなんかされないぞ(一杯じゃなければ)
0579デフォルトの名無しさん
NGNGGeForceってVSYNC-OFFの時は複数フレーム分(デフォで3フレームまで)
コマンド貯めるよ。
0580デフォルトの名無しさん
NGNGDC の時も、MS 提供のライブラリ群があったけど、
これつかうと、実行時にいきなり 0.5 秒ぐらい止まったり、散々だったらしいよね。
コンマ何秒を争うレースゲームで、いきなり 0.5 秒とまったりして、
開発者達は、かなり鼻毛が飛び出たらしいです。
0581デフォルトの名無しさん
NGNG> 描画コマンドキューで現フレームか
だからさ、その方式の並列度ロスを、みんな指摘してるんだよ。
0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNGそうか?
それはステート変更とは関係無いと思うが。
0584デフォルトの名無しさん
NGNG>根本的に違うって程でも無いと思うぞ。
>描画コマンドキューで現フレームか、
>描画コマンドバッファで前フレームの違いだけ。
>フリップの前に描画終了を待つのは一緒だな。
とりあえず手元の家庭用ゲーム機の概要書でも読んで勉強してください。
現フレームのパケット作成のバックグラウンドで前フレームで作成した
パケットがビデオチップに転送されているという並列度の点で全然異質のものです。
Direct3DでEndScene()で描画シーンの終了同期をとってしまっているのは
致命的仕様です。
0585デフォルトの名無しさん
NGNGEndScene()だけで待たされるってのでは全く話が違いますね。
EndScene()だけなのならば、
EndScene()の前に次フレームのゲームの処理をしといて、
次フレームのBeginScene()でモデルを集中描画すれば、
ロスは最小限になるんじゃないでしょうか?
まぁゲーム処理とモデル表示を切り分けた、
ゲームシステム作りが必要ですが。
0586デフォルトの名無しさん
NGNGおいおい、ステート方式致命的説が否定されたら、
今度はEndScene()が致命的かよ。
仮にもプログラマならそれぐらい工夫しろよな。
0587デフォルトの名無しさん
NGNGなんのためのマルチスレッドだろうねえ。
#案外利用者すくないらしいが<マルチスレッド
0588デフォルトの名無しさん
NGNGパフォーマンステストってどうやってやればいいのかな?
DX関係の書き込み見てても、わかってない人が多い感じ
色々テストするつっても、根底から組みなおしとかで結構大変じゃない?
0589507とか
NGNGもうこんな不毛な議論やめようよ。
0590デフォルトの名無しさん
NGNGQueryPerformanceFrequency()
QueryPerformanceCounter()
を使ってる
0591590
NGNG0592デフォルトの名無しさん
NGNG低レベルラッパー作り直しかな〜
でも実機で改善されてたら鬱だしなぁ。
>厨房で悪いんだけど、
>パフォーマンステストってどうやってやればいいのかな?
コンシューマ系であれば数MHzレベルの高精度タイマーが必ずあるので
それで調べます。
X-BOXも含めたx86系であれば、rdtsc命令で調べます。
このへんは、Intelの資料を参照。(一般公開されています)
完全正確なcpu内部サイクル数を取得できます。
0593592
NGNGお手軽なので計測にお薦めです。
0594デフォルトの名無しさん
NGNGステート方式が致命的なのではなく、
ステート変更プリミティブがないことが致命的なのでは?
0595デフォルトの名無しさん
NGNG0596507とか
NGNG作れないって言ってるのに・・・。
もう、致命的とか言っちゃって。情けない・・・。根本的な所
が理解できて無いと思うんだけど。
最近のレスはプロの人が発言しているとはとても思えない。
0597デフォルトの名無しさん
NGNG585の解決方で問題無いと思うんだが。
俺んとこはコンシューマだが、
元々タスクを描画とそれ以外の2モードにしてるから、
BeginScene()の直後に、ExecTasks(bDraw=TRUE)を呼んで、
EndScene()の前に、
ExecTasks(bDraw=FALSE)とモロモロのルーチンを呼ぶば済むな。
実行と描画がごちゃ混ぜの頭悪いシステムのゲームを、
移植するのは、確かに頭痛いかもな笑
0598デフォルトの名無しさん
NGNG↓けど、570が言ってる下記発言はあながち変な言いがかりとは言えないよ。↓
>EndScene()で、描画待ちするのは当たり前だよ。
>その後に、バッファフリップするんだから。
実際、自分のところでも EndScene() 前後で計測したら、とんでもない時間ブロック
されていたことが判明したし、多分、ここで570が言ってるように描画待ちしている
のは確実だと思う。
だとしたら、なにそれ?って感じの仕様なんですが。>>D3D
こんなところでマイCPUを奪わないで〜!って感じ。
実際の描画が1フレームくらい遅れてもいまさら誰も文句言わないよー
PS1の開発機が出た8年前当時は草の根BBSであれこれ言われたけどさ。
頼むからEndScene()はノンブロックにしてん!
あと別話題になりますが、X-BOXの瞬間停止問題、こっちでも発生します。
それも再現性がなくて困ってます。DCのWindowsCE環境でも同じ現象があった
という話はこの2chスレで初めて知って、ちょっとビビってるんですが。
0599名無しさん
NGNGEndScene()をフレームの最後の方に持っていけばいいだけだろ?
コンシューマでもVSYNC処理の中で描画待ちしてるよ。
(中には、描画打ち切りする例もあるみたいだが)
0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNGマテリアルソートする為とはいえ、一箇所にまとめたりするのは
アウトって事では?
その辺のバランスはV-TUNEで見ろって事でしょ?。XBOXは
チップ環境固定なんだから出来るんでは?
0602デフォルトの名無しさん
NGNG描画登録とBeginScene()~EndScene()も、この話題も。
0603デフォルトの名無しさん
NGNG逆だよ。
まとめたほうが、レンダーのストールの可能性が減るから、
最後の待ちも減る。
0604デフォルトの名無しさん
NGNG次のフレームで待てばいいんだよ。
もっとも既に描画が終わっていれば待つ必要がなくハッピー!なわけです。
並列処理の問題ですな。(バックグラウンドDMA)
この話題、不毛ではあるけどコアで大切な話題だと思う。
0605デフォルトの名無しさん
NGNG>作れないって言ってるのに・・・。
けど家庭用ゲーム機のハードはDC以外は全て
ステート変更プリミティブ(呼び方違うけど)を
ハードで持ってるよ。頂点配列の合間に要所要所にステート変更プリミティブを
挟んでも DrawPrimitive()などが解釈できるような設計にしておけば、
なんら問題無かったんだよね。
0606デフォルトの名無しさん
NGNGだから、最後にEndSceneすりゃ同じ事だろ。
0607デフォルトの名無しさん
NGNGそうすると次のフレームで作成した頂点をDrawPrimitive()で登録できないという意味では?
BeginScene()とEndScene()は対になっていなければならないので。
0608507とか
NGNG>>604
>この話題、不毛ではあるけどコアで大切な話題だと思う。
コアなんだけど不毛なんだよ。みんながみんなどっかで
根本的な思い違いをしている(俺だってしてるかもしれない)
から話が全く噛み合わない。
pc,cs両方の仕様を熟知した上で、設計ミスを指摘出来ているのなら
なんら問題ない。
こうなったらこのスレをそう言うスレにするのも手かも。
消化不良の知識で言い争う問題じゃ無いんだよ。
0609デフォルトの名無しさん
NGNGフレーム内でやる事の最後にEndSceneすれば、
他にやる事は何も無いから、次のフレームで待つのと一緒。
0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNGなお、CPUサイクルは正常にカウントアップしていることだけはさきほど確認しました。
0613デフォルトの名無しさん
NGNGD3D 的に、CPU とビデオチップ双方が 100% スペックで走行できるような実装スタイルを
提示して欲しいです。提示できなけりゃ、ま、厨房でしたチャンチャンってことで。
0614デフォルトの名無しさん
NGNG>>585, >>597あたりで充分説明されていると思うけど?
つーか、コンシューマ界隈でやってる人ならゲーム処理の見かけ上の裏側で
描画データの転送を行う系の処理ってあたりまえだと思ったんだけど…。
0615デフォルトの名無しさん
NGNG描画要素を全部Poolした後マテリアルソートして
DrawPrimitiveのループ、最後にEndScene呼ぶだけで
最高のパフォーマンスが出れば何の問題もないと思うけど
実際はそうじゃないわけでしょ?
0616デフォルトの名無しさん
NGNG>提示して欲しいです。
不可能なので提示しようがありません。
そもそもMSがプリミティブ転送にDMAを使うという
発想がなかったことが事の発端です。
各処理のタイミングをいろいろ工夫したところで
EndScene()呼び出し時にCPUは貴方の手からしばらく離れます。
諦めてください >>CS業界の方々
T&Lの融通性がもっともっと上がれば転送ネタとも決別できるのですが。
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNG何を言っても無駄ですな。本当の意味で時間の無駄。
0619デフォルトの名無しさん
NGNG色々試してから話せよな・・・。
0620デフォルトの名無しさん
NGNGアクションゲームをC++をゲーム組むのと、C++の速度低下を嫌うのと
どっちがドキュソ?
ゲームで継承ってあんまり意味ないと思われ
(趣味で組むならC++で遊ぶ意味もあるのでプロに聞いてみたい)
0621デフォルトの名無しさん
NGNGタスクプログラムってアセンブラとC++とは相性良いけど、
Cではイマイチすっきりしない感があるよ。
0622デフォルトの名無しさん
NGNG作品って無いよね。
つーかさー、規模が大きくなる3Dゲーム開発でハードウェア研究の
手間から開放されるなら多少の不効率は目をつぶるよ。俺は。
描画エンジンに手間暇かけられる程時間も人もいねーんだわ。
一応仕事でPGやってんならこの辺が本音じゃねーのかな?
0623デフォルトの名無しさん
NGNGんー、ゲームなんてプリミティブな機能の組み合わせで
作るもんだからさ、C++とは相性いいと思うヨ。デザイン
パターンなんかも応用できる事は多いし、621氏の言うように
パフォーマンスさえ気にしなければタスクプログラムとの相性
は絶妙だとおもうよ。
ただし、STLは使うなと言って置きます。ホントに。
あ、あと、コードの保守性がケタ違い。
0624デフォルトの名無しさん
NGNG> ただし、STLは使うなと言って置きます。ホントに。
理由を教えて欲しいなり〜
0625デフォルトの名無しさん
NGNGメモリ確保・解放が絡むのでリアルタイム物を作る時には使わない。
ん?ネタか?
sageとくか・・・
0626デフォルトの名無しさん
NGNGって言ってたときは驚いた。アセンブラオンリーっすか
0627デフォルトの名無しさん
NGNGあの人はプログラマと言うより、数学屋さんらしいからね。
0628デフォルトの名無しさん
NGNG>ん?ネタか?
いえ、単に不勉強なだけです。
>メモリ確保・解放が絡むのでリアルタイム物を作る時には使わない。
allocator overrideすればすむものではないのでしょうか?
あとdefaultのallocatorでもそこそこやりくりしてそうなのですけど、
やっぱだめですか
0629デフォルトの名無しさん
NGNGALPHA2ハードは知らんけど。
0630デフォルトの名無しさん
NGNGいまどきmallocコストなんか気にすんなよ。
stlの味を知っておいて、いまさらリスト構造とかマップとか自前で実装する気になるか?
0631デフォルトの名無しさん
NGNGだとしたらレジストリとかもあるの?
0632デフォルトの名無しさん
NGNG心配するのはmallocコストじゃなくて、
虫食い状態になることじゃないか?
このスレのしょっぱなでmalloc議論やってるぞ。
0633デフォルトの名無しさん
NGNGヘタレなマロックもそのまま使えますよ。
0634デフォルトの名無しさん
NGNGC++ って、リークしても大丈夫な環境で伸びてきた言語だと思います。
リークしても大丈夫な環境とは、大容量の HDD が搭載されていて、
いざというときは賢い OS がメモリをスワップしてくれて、プロセス
終了時にはリークしたものもキレいに掃除してくれるような環境。
例えば Windows とかね。
だから C++ は、メモリリークに関しては、ガードが甘いままここまで
来てしまったと、思うんですよ。
で、これを何も考えずにゲーム機などに持ってくると、えらいことに
なってしまうんですよね。
0635デフォルトの名無しさん
NGNGつーか、リークしてる時点で絶対ダメなんだけど。
0636デフォルトの名無しさん
NGNGうーん、ウチもそんな感じだけど、スタック使ってる気分になるよね。
そういやぁ、分断化しにくいメモリアロケーションの話が出ていたけど
実際どれほどの効果があるんだろう?
0637デフォルトの名無しさん
NGNGアルゴリズム次第だろうね。大きいサイズと小さいサイズで取得開始位置
を一番最後のアドレスと一番最初のアドレスにわけるとか・・・・???
ライブラリに頼ると移植もしにくいし、危険だからヤメておきましょう。
0638デフォルトの名無しさん
NGNG出来る人だけが集まっていればいいんだけど、この業界、基本的に
チンピラの集まりなので、そうもいきません。
0639デフォルトの名無しさん
NGNGなんてことがよく発生するんですか?
ウチが作っているレベルだと、メインプログラマがしっかりしてれば
なんか出ても1日で解決するけど。けど、いっぱいっぱいのときは謎
のストップがそのままだったから、そうもいえないか。
ウツダシノウ。
0640デフォルトの名無しさん
NGNGお、なるほどね。
0641デフォルトの名無しさん
NGNGそのメインの方は優秀ですね。
やっぱ、メインがしっかりしてないと、ヒープの導入はつらいよね〜。
0642デフォルトの名無しさん
NGNG前の会社で導入失敗したシステムを手軽だからと言って、失敗の経験を
話さずに導入しようとするヤツはドキュンですか?
0643デフォルトの名無しさん
NGNGすみません。
>大きいサイズと小さいサイズで取得開始位置
>を一番最後のアドレスと一番最初のアドレスにわけるとか・・・・???
これで断片化しにくくなるんですか?
頭の中で確保/解放のシミュレートしてみたんですが、
いまいちピンとこなくて・・・
これって定番のアルゴリズムですか?
参考文献とかあったら教えてください。
0644デフォルトの名無しさん
NGNGXboxはあくまでコンシューマゲーム専用機。
と書けば想像付くかと。
0645デフォルトの名無しさん
NGNG時代遅れも勉強不足も甚だしーと思うのは俺だけか?
0646デフォルトの名無しさん
NGNG現場での実導入例として、ポインタを極力廃止できるC++の方が
ドキュソプログラマでもメモリリークを起こしにくくなるので安心出
来ていいです。徹底してポインタさえ使わなければいいってもんじゃ
ないですけどね。
でもstatic宣言なSTLがメモリ分断化にどれだけ貢献するかは語るま
でもないと思いますが?
レベル低い話でスマンす。
0647デフォルトの名無しさん
NGNGいや、最近の新人ってホント、低レベルな話ができなくて困ってます。
特にこの季節。
ポインタ徹底排除論には賛成です。
ドキュソプログラマーでなくても、各タスクの相互参照が発生しえる環境では
大きな事故を引き起こす可能性があるので。
理想は「既に死亡してしまったタスクに対してアクセスを試みてもデバッグアウトが
出るだけで、システムが破壊されない」環境だと思います。つまり出荷時には、その手の
アクセスが完全に排除出来ているというシステムで構築できているか否か?という問題ですね。
0648デフォルトの名無しさん
NGNGヒープがどーのこーの考えるのは必要ですねん。
パソ系だって、ヒープやスタックの正体、
動的メモリ管理の仕組みを理解せずにやってる人のほうが多いわけで。
0649デフォルトの名無しさん
NGNG>凄く時間がかかる筈だ。
>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優秀な職場で働いていらっしゃるようだ。
0652デフォルトの名無しさん
NGNGだからDMA転送の仕組みどころか存在も知らねーよーなD3D厨房を
相手にマジメなリアクションしてんじゃねーよ。平気で 2.79ns などと
末尾2桁まで書いてる時点で、未来から来た消防かなんかの電波計測結果とい
うことで笑ってやるのがオトナだろ?
>つまりマテリアルソートが許されない環境で効率よくマテリアル(ステート)をペナルティなしで
>チェンジする手段について、、です。
そんな手段が用意されていないから、コンシューマ界隈の人間がD3Dを
致命的だと連呼してるんだろ?マテリアルソートを避けたいということは
おおかたZソートをしたいということだろう?
おとなしくCPUで ->DrawPrimitive() ->SetRenderState() ->DrawPrimitive() と
交互に呼びなさい。D3Dなら、これしか手段はないよ。
納期があるのならば、諦めが肝心。
15fpsくらいまで落ちることあっても平気でTGSで出品したX-BOXの
アプリ群を見習うことだな。
0653デフォルトの名無しさん
NGNG>アプリ群を見習うことだな。
不覚にもちょっと笑った。
0654デフォルトの名無しさん
NGNGあれは、ホント痛ましい光景だったね・・・。
0655654
NGNG0656デフォルトの名無しさん
NGNG個人的には単なるフィルレートの低さと解釈しているが・・・
あそこからさらに、前人未踏のUMAでしょ?(いや64があったか)
頑張ってね!>>X箱組の方々
0657デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNGM2もだよ・・・UMA(さすがにさわったこと無いが・・・みたことはある)
>>636
後は、()アロケートが頻繁に行われるものは
classの方のアロケータをオーバーライドするとか。
Cならメモリのプールを専用に用意するとか。
>>STL
STLはvectorならreserveすれば再確保は起こらないし、
list系だったらテンプレート引数に与えるアロケータ自作すればよいだけ。
なんでそんな問題無いと思うがどうか。
0659デフォルトの名無しさん
NGNGUMAは胃が痛くなるよ。
テクスチャ参照の激しい期間にサウンドに発行するとたまに音が飛んだりだとか。
結局、タイムスケジューリングする必要が出てきてなんのためのUMAだかワカランかったよ。
X箱は一体、何考えてんだろう?
0660デフォルトの名無しさん
NGNGそうすれば、DMA問題も解決してくれる。
それが駄目なら、Direct3Dに glFlush()相当のメソッドを追加して欲しいなー。
0661631
NGNG0662デフォルトの名無しさん
NGNGNVIDIAも自社のチップ向けOpenGLを出してますよね?
>それが駄目なら、Direct3Dに glFlush()相当のメソッドを追加して欲しいなー。
パケットの実転送タイミングをプログラマー側で制御できるという点で
欲しいメソッドですね。
0663637
NGNG>>大きいサイズと小さいサイズで取得開始位置
>>を一番最後のアドレスと一番最初のアドレスにわけるとか・・・・???
>これで断片化しにくくなるんですか?
2秒で思い付いたアルゴリズムで実装経験はないです。こういうのをやりくり
する必要がないシステムがよいですねというのがワシの結論。
>>645
すくなくともケータイゲーム機じゃ考える必要はあるだろうね。
メモリが2Mがしかないハードもまだ現役といえば現役だし・・・。
>>650
いますがな。
>>661
自称のやつに聞いても答えは判らないんじゃないの?
煽りたいのは判るけど、もう少し論理的にせめてほしいね。
0664デフォルトの名無しさん
NGNG俺は単にSetRenderStateで描画待ちをしない事を
言いたかっただけなんだがね。
0665デフォルトの名無しさん
NGNG>パケットの実転送タイミングをプログラマー側で制御できるという点で
>欲しいメソッドですね。
EndScene()をglFlush()の代わりに使えばいいんじゃないの?
つーかEndScene()って意味はglFlush()と同じでしょ?
DX8SDKより
シーンが完了したら、IDirect3DDevice8::EndScene メソッドを呼び出す。
EndScene メソッドは、キャッシュされているデータをフラッシュし、
レンダリング サーフェスの完全性を検証し、
シーンが進行中であることを伝える内部フラグをクリアする。
0666デフォルトの名無しさん
NGNGま、論題としては面白いがあまりムキにならない事だね。
俺はショー出展メーカ側の関係者じゃないから確証を持って言えないけど
あのフレーム落ちはフィルレートによるものじゃなくてテクスチャメモリ
の不足によるAGP転送コストのせいだと思うぜ。あちらのFPSなゲームは
リソース制限って考えが無いからね。
UMAっていうとやっぱニンテーンなあのマシンを思い浮かぶねぇ。触った
事は無いケド話を聞くだけで鬱になれる仕様だった。でも逆にコストの
折衝に成功した時のパフォーマンスは侮れないみたいだけどね。
でもさぁ、リソースのやりくりの無いマシンなんか無いんだから別に
致命傷とも思えないなぁ。そーゆーのが嫌なら非PC系ゲームプログラマ
は辞めた方がいいんじゃないかな?
0667デフォルトの名無しさん
NGNGけど、そいつが搭載している ROM-BIOS の malloc() はバグってて
今も使えないんだよな(藁
メモリの断片化が少しでも気になるんだったら、ヒープは止めた方がいいよ。
特にゲームの場合、ごく普通のWindowsアプリの使うヒープ使用頻度とは
まるで比較にならない頻度で使われるものだし。
ただし「プロジェクト内PG全員がヒープを知っている」という条件下では
威力を発揮する。
もちろん、ここでいう「知っている」とは知識レベルで知っているという意味
ではないぞ。旨みも怖さも「知っている」という意味で。
0668デフォルトの名無しさん
NGNGXboxのゲーム開発者なんですか?
それとも知ったかぶりなんですか?
0669631
NGNG0670デフォルトの名無しさん
NGNG>つーかEndScene()って意味はglFlush()と同じでしょ?
違うよ。EndScene()と glFinish() ならほぼ同義だけど。
glFlush()は描画パケットのネット転送だとかDMA転送を
意識して用意されたサービス。描画の終了を確認することなく、即座
に戻ってくるノンブロックサービスであるのに対して、
glFinish()は描画が終了するまでブロックされるサービス。
もちろんドライバがDMA転送などに対応していない場合は
glFlush()とglFinish()は全く等価値。
この場合、glFlush()にしてもパフォーマンスは全く上がらない。
0671デフォルトの名無しさん
NGNGPSやPS2のDMAって、そんなに頭いいのかな?
DCのモデルの処理ってレンダーに行くまではソフト処理だけど。
(T&LもCPU命令だし)
0672デフォルトの名無しさん
NGNGDMAされないの?
もしかしてDMAしないとか言ってる人ってウンコみたいなPC使ってるとか?
0673672
NGNG0674デフォルトの名無しさん
NGNG>glFlush()とglFinish()は全く等価値。
たとえDMA転送に対応してなくても、
描画終了を待つのとコマンドキューを
フラッシュするだけなのは違うよ。
確かに重い描画しなけりゃパフォーマンスは変わらんけどね。
0675デフォルトの名無しさん
NGNGそれすら使ってない厨房だったりしてな(藁
流石にそりゃ無いか。
でもXboxもCPUが転送してると思ってる人もいるみたいだしね。
0676デフォルトの名無しさん
NGNGPS2は便利だね。DMAパケットチェーンを組んでおけば
勝手にどんどん送ってくれる。そのパケットにT&L処理も
組み込め、別プロセッサがメインとは並列に演算してくれる。
(EEはトリプルプロセッサ)
0677デフォルトの名無しさん
NGNGPS2は便利だね。DMAパケットチェーンを組んでおけば
勝手にどんどん送ってくれる。そのパケットにT&L処理も
組み込め、別プロセッサがメインとは並列に演算してくれる。
(EEはトリプルプロセッサ)
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGCompiledVertexArrayは頂点データの変更が出来ないからワンスキンモデル
には使えないし、凄く使いづらい形式なんだよ。
毎回頂点配列をシステムメモリから転送させなきゃいけない。
0680637
NGNG>けど、そいつが搭載している ROM-BIOS の malloc() はバグってて
>今も使えないんだよな(藁
なんか守秘義務がアレですが。対応策はあるからいいじゃん。
ウチは全員が管理できるわけはないということでメインシステムがヒープ周りを
全部隠して処理するようにしました。Z80にゃあ載せられないけどね。
処理が重たすぎて。
ヒープ使うのは当然なんだけれども、全員が好き勝手に使っているわけではないと
だけ書いて寝るのであった。
0681デフォルトの名無しさん
NGNG「今更malloc使わないなんて言ってる奴はおかしい」
「malloc使う奴はおかしい」
のどちらも間違いと言う事で。バカと鋏は使いようって
やつだね。
0682デフォルトの名無しさん
NGNG内部コマンドをいくつかにまとめて転送するようなシステムの時に、
残ってるコマンドを送るように指示するものだけど。
0683デフォルトの名無しさん
NGNG実装解説してる文献とかないのだろうか?
0684デフォルトの名無しさん
NGNG実装はドライバ次第。実装の完全な仕様なんてあるもんか。
インターフェイスとインプリメンツを混同してるって。みんな。
分かるも分からないも無い。
その気があるならmesaのドライバ部のコードでも覗いてみれば?
0685デフォルトの名無しさん
NGNGOpenGLの話してるの?
まーいいけど、これからの時代は
ハードウェアジオメトリブレンディングなんじゃない?
>>677
GeFORCEやXBoxも、D3Dの描画命令やステート変更をコールしておけば、
適当なタイミングでGPUが勝手に読み出して並列に動いてくれるんだよね?
確かCPU/ハイオーダーサーフェス/TnL/ラスタライズ
のエンジンが全て並列に動くはず。
0686デフォルトの名無しさん
NGNG>ハードウェアジオメトリブレンディングなんじゃない?
完全不透明なモデルでソートの必要が一切ないという条件下であればね。
確かにそのような用途って結構あるのだけど、それでは許されない場面も
たくさんあるのだよ。
そのような場合、描画パケットをCPUでソフト的に自由に作成できる
古典的な手法に頼らねばならない >> DMA の話題になるわけです。
SGIマシンも描画パケットの転送にDMAをフル稼動させていただけに
自然とOpenGLもDMAを意識した造りになっています。
ps2もDMAのお化けだし。そこら中にDMAを張り巡らしている。
0687デフォルトの名無しさん
NGNG描画コマンドがソフト生成だから駄目って話なんだろうか?
コマンドキュー自体はGPUがバスマスタで処理するんでは?
0688デフォルトの名無しさん
NGNGしていない前時代的なインターフェイスに見えてしまいます。
0689デフォルトの名無しさん
NGNGパケットにしてDMAで送る必要があるだけなんじゃないか?
0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNG「疎結合だから」というより、「疎結合にして」、DMA環境を整備
して、並列性を高めようというコンセプトでしょ。
0693デフォルトの名無しさん
NGNGけどx86系ってCPUとビデオチップってもっともっと疎結合なんだよね?
0694駄洒落魔神
NGNG0695デフォルトの名無しさん
NGNGうん。
そもそも、ソケットなんかにビデオカードを刺している時点でアウトだよ、PCの場合。
T&Lを高機能化し、プログラマブルにするという方針の行き着く先が、
ビデオカードそのものに汎用CPUを載せてしまうことに。
そのうち、Direct3DなりOpenGLがT&Lアセンブラスクリプトを提示するんだろなー。
あれ、どこかで見たハードに似てるって?
気の精ですよ、旦那。
0696デフォルトの名無しさん
NGNG>そのうち、Direct3DなりOpenGLがT&Lアセンブラスクリプトを提示するんだろなー。
もうしてます。>VertexShader, VERTEX_PROGRAM
各コマンドのレイテンシ気にする必要がないのと、lit見たいな便利命令が
ある部分ではアレより優れていると思う。自由度はアレの方が上だけど…
0697某部隊1
NGNG0698デフォルトの名無しさん
NGNGなぁ、あんた何のシステムの話してんだ?
x86系て簡単にひと括りにすんなよ。
0699デフォルトの名無しさん
NGNGあれをしてプログラマブルというのもなんだかなぁ。
0700デフォルトの名無しさん
NGNGあのさぁ、用語の使い方がエキセントリックで読解困難。
煽りじゃなくて真面目な話な。アレ密結合じゃねーか?
0701>697
NGNG0702デフォルトの名無しさん
NGNGまぁまぁ、そう泡吹きなさんな。マターリな。
各ビデオチップメーカがしびれを切らしてT&Lを
搭載させてきた背景にも注目してみよう。
0703デフォルトの名無しさん
NGNGでも結局アレも処理の大方を占める部分ではソフトウェアパイプ
ラインによる並列化の為にあんまり分岐なんてしないでしょ?
結局どこを切り分けるかの違いでしかない気がしますなぁ。
#逆にあの構造で、某部隊1が自由度を発揮する用途って何?
#曲面とかなら、GeForce3ではハードウェアでテセレーション
#してから、各頂点をVertexShaderに送れるし…。
NVEffectBrowserとか見てみると良いよ。VertexShaderもなかなか
捨てたもんじゃ無いってわかる。
http://www.nvidia.com/marketing/Developer/DevRel.nsf/pages/6AA3B04F568A385D88256A1F00069A1E
なんて、リアルタイムにバンプの波形の計算を(GPUだけで)
やってるし、何でも工夫次第でしょう。(もっとも、これが実際
のゲームに使えるかは疑問ですけど…)
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG相互にメモリアクセス出来るんだから。
密結合・疎結合って転送速度は関係無いよ。
(多分、疎結合っていう語感だけで
PS2を馬鹿にされたと思ったんだろうな笑)
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNG疎結合とか云々の問題でなく、DMA存在意義についてじゃないかと
思うのだが。PS2のDMAは、PCとかのDMAとは根本的に立場が
別物なので、
>PS2ってEEとGSが疎結合だから、
>パケットにしてDMAで送る必要があるだけなんじゃないか?
なんてのは愚論でしょ。それこそ、描画のスケジューリングだって
DMAパケットで出来るわけだし。
0708デフォルトの名無しさん
NGNGPCのアーキテクチャだとDMAにするのが有利とは限らんよ。
0709デフォルトの名無しさん
NGNG>別物なので、
気になったのですが・・・
結局、PC/AT(やX-BOX)にはリストスキャンDMAは存在しない
ということなんでしょうか?
0710デフォルトの名無しさん
NGNG別のVertexShaderで使い分けろってことでしょ?
プログラムが大変になる反面、速度的には確実に有利だよね。
まー、中で分岐したくなることもあるんだけどさ。
0711デフォルトの名無しさん
NGNGいや、有利になると限るよ。
今どきのCPUはバスアクセスがなるべく少なくなるよう設計され
ているので、その隙間の発射量は半端じゃないっす。
だって、ビデオチップの顔色伺いながら莫大なパケットを転送する作業を
CPUにやらせるのは鬱だもん?
0712デフォルトの名無しさん
NGNGどういうときに分岐したくなります?(煽りじゃなくて、質問です。)
0713デフォルトの名無しさん
NGNGスレ汚しすぎ
0714デフォルトの名無しさん
NGNGあのー、おたく何の話してんすか?(PCの話なら他所で頼む
CPUとビデオプロセッサが主記憶共有してて“疎結合”は
ちょっと違うじゃん?つー話してたのよコッチは。どうでもいいけどさ
0715デフォルトの名無しさん
NGNG>>695
技術者の端くれならせめて基本用語ぐらい正しく使ってくださいよ。
0716デフォルトの名無しさん
NGNGついでにそれですらない騙りさんも混じってますよ(引きこもりの学生さんとか
こういった手合いに構ったところで荒れるだけですから、放っておきしょう。
0717デフォルトの名無しさん
NGNG>>702はマタリストのフリした煽らー。釣られちゃダメ
0718デフォルトの名無しさん
NGNG3DレンダリングにおけるDMAの役割をきちんと理解していないの
が発端だと思います。
0719デフォルトの名無しさん
NGNGDMAが別物ってのは、多分、
PS2-> ビデオチップへのデーター送信
XBox,PC -> ビデオチップからのメインメモリアクセス
って事でしょ。似ているようで全然違う。
リストスキャンDMAは、
あくまで1フレームのデーターを一度に処理するもんで、
キュー実行にはあまり向かないんじゃ無いかな。
でも、キューの実行をCPUがやってるって言ってる人がいるけど、
さすがにそれは無いんじゃないかなぁ。
0720デフォルトの名無しさん
NGNGいや、PS2べったりのソフト屋さんが、
DirectXを理解してないだけでしょ。
0721デフォルトの名無しさん
NGNG>DirectXを理解してないだけでしょ。
それを言うならば
「DirectXを理解してない」ではなく「PCを理解してない」ではなくて?
0722デフォルトの名無しさん
NGNGどちらも自分の慣れた環境以外理解しようとしていないだけかと。
XBOXに搭載されるCPU自体はメモリ速度も手伝ってEE+VU0+VU1
程度のパフォーマンスは平気で発揮するんだけどねぇ。何が不満
なんでしょ?
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNGMSとnVidiaだろ
0725デフォルトの名無しさん
NGNGZソートであれば、無難にマージソート。
0726デフォルトの名無しさん
NGNGそのCPUパワーがムダになってるっていう点が問題なんだけどね。
あとSSEじゃVU0+VU1にはかなわないよ。
週末になったせいか、お子様が増えてるような。
0727デフォルトの名無しさん
NGNG巡航速度が速いほうが楽でよいという考え方もあるし。
766MHzでL2も積んでるなら、まあまあじゃないの?
0728デフォルトの名無しさん
NGNG個人的にはPS2のSPRのような仕組みのが使いやすい
気がするのですが。特にDMAが絡んでいるから余計に。
0729デフォルトの名無しさん
NGNGキャッシュがなかったら、DMAが止まりまくりでおいしくないんじゃない?
DMAとの整合性はライブラリが全部やってくれると、楽でいいんだけどねぇ。
0730デフォルトの名無しさん
NGNGSPR=必殺技、って感じで私も好きです(^^;
某1のときにはSPRをスタックに割り当てるみたいな楽チン利用で
効果てきめん、大好きSPR!だったんだけど、
某2ではDもあるからねぇ・・・
お気楽に使っただけではなかなか目に見える効果が期待できない・・・
どんなふうに使うのが効果的なのか、
難しいところですね。。。
0731デフォルトの名無しさん
NGNG止めないためのSPRでしょう。
逆にキャッシュがあるとDMAのためにわざわざ
フラッシュする必要あるし。
0732デフォルトの名無しさん
NGNGにキャッシュは乗っかっているわけで。
追加でSPR(?)があるかどうかってことでしょ?
キャッシュフラッシュはどこかで絶対やってると思うんだけど。
EEってキャッシュ積んでないんだっけ?
0733デフォルトの名無しさん
NGNG意識して当てられるキャッシュってノリで考えても、許せませんか?
#個人的には「CPUの裏側をつくる」っていうイメージに近いかなぁ…。
意識しなければいけないのがデメリットであり、メリットでも
ある(パフォーマンスをある程度把握しやすくなる)けど、
パフォーマンスが優先されるゲーム用途ならこれでいいのかなぁと思う。
0734デフォルトの名無しさん
NGNGワーク領域として割り当てるのは全然問題ないし、特定条件になり
やすいゲームとしてはそうしたい場合も多々あるってのはわかります。
ただ、100%キャッシュをワークに割り当てるのはダメそうと思った
だけです。
フラッシュについては、キャッシュを持つCPUでは当たり前にやって
いることで。GCのようなレイテンシを高速化したハードでも積んでる
し。デメリットとしては上げられませんよ。(たぶん)
0735デフォルトの名無しさん
NGNG実際のところQuickSortとどっちが効率良いのだろう?
そのシーンでのポリゴンの分布によって当然、比較結果も変化する
とは思うけどな。
>>止めないためのSPRでしょう。
SPRって何?
0736デフォルトの名無しさん
NGNG某2では、DMAキック直前に必ずやってるよ。キャッシュとの調停を
とるためにね。でもその時間を計測してみれば分かるけど誤差だよ。
基本的に一度、DMAでスキャンされることを前提に作成されたチェーンパケットは
DMAキック後は絶対にCPUでいじることがないので、DMAスキャンかけている最中は
調停の必要なし。
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNG>効果てきめん、大好きSPR!だったんだけど、
某部隊1がそのノリだよね?プログラムもデータエリアも全て
キャッシュ内という常にスーパーサイヤ人状態。
某部隊1の弱点はそのエリアの小ささ。これだけだと思う。
0739デフォルトの名無しさん
NGNGでも話題的には二極化できると思う。
0740デフォルトの名無しさん
NGNG3Dレンダリングにおいて、高級言語派なんて基本的には皆無でしょ?
最初のデバッグ段階では高級言語で記述するけど、最終的にはアセンブラで
書く場合はあるけど。SSEにしても、Vertexシェーダ、Pixcelシェーダ、某部隊0&1・・・
どのプラットフォームでも確実にアセンブラへ走ってるよ。
0741740
NGNG「アプリケーション全体を低級言語で記述しよう!」という意味ではないからね。
あくまでもレンダリングなどの局所的用途にアセンブラってこと。
0742デフォルトの名無しさん
NGNGスクラッチパッドRAM
http://www.watch.impress.co.jp/mobile/column/ps2/2000/03/24/
に解説があるよ。
普通はVPU0のバッファに使うみたいだけど・・・
0743デフォルトの名無しさん
NGNG実際問題、任意のディスプレイリストをプログラマーの任意のタイミングで
キックできるOpenGLをディフォルト採用にするか否かで、
ハード全体の設計(DMAの繋ぎかただとか)に変化が起きると思うのですが。
0744デフォルトの名無しさん
NGNG> XBOXに搭載されるCPU自体はメモリ速度も手伝ってEE+VU0+VU1
>程度のパフォーマンスは平気で発揮するんだけどねぇ。何が不満
>なんでしょ?
その XBOX に搭載されている x86系 CPU ですが、
SSE 用のレジスタ数が随分少なく、行列を2個載せたら終了と聞きました。
並列積、並列加算はあっても、積和は無いので、いちいちレジスタ退避・復活が
必要とも聞いています。
ホントにそんな状態で EE+VU0+VU1 のスペックが余裕で出せるんでしょうか?
0745デフォルトの名無しさん
NGNGnVidia 自身、DirectX には心底ウンザリ来ている模様ですし。
かといって、他の選択肢と言っても OpenGL ぐらいしかない
ってのも、悲しいけど事実ですな。
0746>>744
NGNGなんでもかんでもソートが必要なわけではないので、X−BOXでは
ある程度はハードT&Lにお任せできます。なのでSSEにお世話になることも
少なく、レジスタが少ないというデメリットが表面化することも幸いに
して最小限に済みます。
ベンチマーク結果やなんかで、SSEによるソフトT&Lとビデオチップ内ハードT&Lの
スペックがいい勝負していますが、あの比較の意味自体がそもそもお子様なんです。
なぜならば、ハードT&Lを装備している時点で、CPUとの並列動作が可能に
なり、そしてこの並列動作にこそハードT&L実装のメリットが集中するからです。
0747デフォルトの名無しさん
NGNGそうなの?チップのシェア考えれば、MSに対する発言権は強いと思うんだけど
それが反映するのはDX9?
0748デフォルトの名無しさん
NGNG>かといって、他の選択肢と言っても OpenGL ぐらいしかない
>ってのも、悲しいけど事実ですな。
OpenGLへの不満といったらチェーンスキャンDMAを意識した造りになってない
という点だけですね。(一応、DMAは意識していますが)
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNGしてくれないかなぁ。さすがにPS2みたいにハードのレジスタ表が
平気で掲載されているようなハードむき出しマニュアルがドッサリ
来られては、鬱なんだけどね。
0751デフォルトの名無しさん
NGNGフラッシュの時間云々より、キャッシュの状態を意識したプログラムを
強いられるのがね〜。
皆さんは普通にパケット生成してキャッシュフラッシュするのと、最初から
アンキャッシュ書き込みや、SPRで作ってメモリにDMAで作るのと、
どちらが有効だと思います?
パケットをさらにZやマテリアルでソートしようとか考え始めると、
どれが一番効率がいいものか・・・
0752デフォルトの名無しさん
NGNG0753デフォルトの名無しさん
NGNG物理的には可能なのにね。
もち、個人的には歓迎っす
0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNG0756>744
NGNGPen3程度の普通に早いCPUの方がうれしいのでは?
0757デフォルトの名無しさん
NGNGD3D派?
0758>756
NGNGパッチをあてたGCCならVU0を使いこなしてくれるぞ。
#VU1はまた別の話だ。
0759>756
NGNGパッチをあてたGCCならVU0を使いこなしてくれるぞ。
#VU1はまた別の話だ。
0760げげ、
NGNG0761デフォルトの名無しさん
NGNG実機のターゲット用APIとしてはどうか知らんけど、
>>755のいうとおりフツーに使う分でどれ位違いがあるんだろう?
0762デフォルトの名無しさん
NGNG特定環境向けにHAL構造は無駄だな。
0763デフォルトの名無しさん
NGNG仮にあなたにとって、両者のそれ自体にはそれほどの差がないと判断するのならば、
様々なプラットフォームで泳げるOpenGLの方が何かとうまいでしょ?
0764デフォルトの名無しさん
NGNGなにか日本語壊れてるぞ。
0765デフォルトの名無しさん
NGNGGLはインターフェースが古くて冗長だし
しかもどちらも整数アーキテクチャ時代の仕様
どっちもイヤ
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNGすいません、これってどういう意味ですか?
あと>>765さんはツールのときも自前ライブラリで描画しているんですか?
0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNGもうそろそろ苦しいんじゃない?
0770デフォルトの名無しさん
NGNGハードの性能を使い切ろうとするとそうでも無いんだよねー。
OpenGLの標準機能だけじゃ使い物になりませんぜ。
拡張機能に頼りきったプログラムになるのは確実で、
結局ハード依存しまくりです。
0771デフォルトの名無しさん
NGNGDirect3Dでは拡張すらできないしね。
0772デフォルトの名無しさん
NGNG0773デフォルトの名無しさん
NGNG>>OpenGLの標準機能だけじゃ使い物になりませんぜ。
ハード直叩きで平気な人には、確かにそう言い切れるかもしれないですね。
0774デフォルトの名無しさん
NGNG>拡張機能に頼りきったプログラムになるのは確実で、
せめてATIとNVIDIAだけでも共通の拡張にしてくれんものか…
(プログラマブルシェーダー関連もATIはNVIDIAとは違う拡張を
施す模様。まぁNVIDIAの拡張もハードべったりなんで仕方ないけど…)
#スレと大幅に関係ない話なのでsage.
0775デフォルトの名無しさん
NGNG722だけどさぁ。久しぶりに見たら厨房扱いかい。
オレも抽象的な書き方で悪かったけどさ、P3対EE+VU0+1みたいな
事が言いたいんじゃなくてP3自体がEEと違って前線バリバリに
高速なCPUでその上にT&Lを積んでいるんだから普通のゲーム
の作り方したらCPUパワー自体を持て余すだけなんじゃない?
CPUで3D演算する訳じゃないんだからUMAでCPU資源が失
われたとしてそれって致命傷?というような事を暗喩してただけです。
ま、UMAの話題はもう終っちゃったみたいなんでどうでもいいです。
0776デフォルトの名無しさん
NGNG触ったことある人なら判ると思うけど、
nVIDIAのレジスターコンバイナ拡張は、
同じステージ数ならPixelShaderよりもずっと強力ですよ。
ハードウェアの性能を活かすためには拡張は必須と思われ。
0777デフォルトの名無しさん
NGNG一プリミティブが65565頂点を越えることってあるの?
普通、今の時代でもインデックスは16bitにすると思うよ。
0778
NGNG0779デフォルトの名無しさん
NGNG指定は可能でもHALレベルで制限される。
GeForceの場合は65535頂点。
D3DCAPS8のMaxPrimitiveCountと、MaxVertexIndex見れば、
サポートしている数が判る。
無視して超える数使うと、表示がおかしくなったりするらしい笑
0780デフォルトの名無しさん
NGNG0781746
NGNGそうと分かっているなら、最初からそう書いてください(笑
ee+vu+u1 vs pen3+t&l みたいな書き方したら、まるで
ベンチヲタクあがりの厨房そのものじゃないですか〜
0782デフォルトの名無しさん
NGNGコンシューマ機のD3Dは当然拡張があると思われ。
0783デフォルトの名無しさん
NGNGご存知の方、いませんか?
演算性能よりもソートに時間が消耗することがあるので、並列うんぬんよりは
こっちの方が切実な問題のような気がする
0784デフォルトの名無しさん
NGNGはい、知ってます。
某コンシューマー機の標準ライブラリが使っているアルゴリズム、
あれを初めてみたときは、マジで目からウロコが落ちた。
0785デフォルトの名無しさん
NGNG0786デフォルトの名無しさん
NGNGマージソートよりも高速なんですか?
マテリアルソートとZソートの兼ね合いによって最適アルゴは
当然変わるだろうけど。
0787デフォルトの名無しさん
NGNGメモリアクセスが遅い環境ならば、なるべくソート対象の実体入れ替えの
少ないソートアルゴでないときついでしょ。
実体入れ替えではなく、リストの繋ぎ代によるソートだと DrawPrimitive などを
細切れに発行する必要があり、これまたどちらが効率よいかのトレードOFFかと。
でもマテリアルソートならマテリアルをキーにプリミティブを積み上げていけば、
マテリアル単位でのDrawPrimitiveの発行で済むでしょ。マテリアルの種類が多い場合は
また工夫が必要なんだけどさ。
0788765
NGNGZバッファが整数アーキテクチャそのものだよ
テクスチャの大きさが1024とか2048限定なのも迷惑
REPEAT不可でいいから任意サイズが使いたい
測量系のソフト作ってるんで、頂点数もテクスチャサイズも
2000Kpolyとか20000×18000pixelとか非常識なデータばっかり
微小ポリゴンがびっしり状態だとglBegin()...glEnd()より
自前のペインターアルゴリズムアプリの方が速かったりもする
しかも社長の趣味でターゲットマシンはほとんどマルチディスプレイ
のためアクセラレータは役立たず
こんな時代にテクスチャレンダラを組んでると虚しいです
みんなマイクロソフトが悪いんです
0789デフォルトの名無しさん
NGNG悪いのはおまえとバカな社長と思われ
0790デフォルトの名無しさん
NGNGデジタイザでも作ってんですか?
どうせリアルタイムじゃないんだろうし、rendermanでも使えば?
しかしいくらなんでも20000x18000は眉唾だな。
0791デフォルトの名無しさん
NGNG測量系って良く知らないのですが、
大型のシーングラフデータを"そのまま"視覚化するメリットってなんなんですか?
テクスチャとかもそんなに細かいメッシュデータなら何枚かのテクスチャに、
前段階で切り分けられちゃうんじゃないかと思うのは素人考えですかね。
0792788
NGNG視覚化というより地形データの編集作業
つなぎ目があるから分割しても重なり部分の処理が面倒なのだ
ポリゴンの形も編集で変化するしどんな大きさにされるか分からない
>>790
リアルタイムに近いレスポンスが要求される
A1モノクロ図面をスキャナで読んで5枚くらい
張り合わせる人もいるのだ
画面解像度並のテクスチャサイズで普通は十分なのだが
こういう分野もあるということで
ゲームじゃないのでsage
0793デフォルトの名無しさん
NGNGネットで検索しまわっても、様々な手法が登場し、決め手はないみたい。
0794デフォルトの名無しさん
NGNG全体の処理負荷から占めるパーセンテージを考えたらソート
アルゴ自体は適当に択んでもほとんど問題ない負荷だと思う
んだけど、そうでもない?
目的にもよるけど、速度だけを見るならOT。それが効率
悪いのなら・・・、んー、なんでも一緒じゃないかなあ?
0795デフォルトの名無しさん
NGNGチェーンDMAがない環境であればOTの威力は激減じゃない?
0796デフォルトの名無しさん
NGNGソートするモノの数と深度の精度次第かと。
0797デフォルトの名無しさん
NGNG恐くて突然に沈黙。
そろそろみなさん、自粛しません?
0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNG簡単に言ってしまえば、単方向リンクリスト。
GPU_DMA(chain:modeフラグは0x01000401で0x1f8010a8を叩く)
には、何もしないプリミティブがあるので、
適度に挟むことで、一切のソート無しで
描画を行います。っつーか偽挿入ソートか。
0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNGウェブに公開されてた黒PSのマニュアルでも分かったから大丈夫。
0802デフォルトの名無しさん
NGNGビデオチップのbusy状態を監視する必要もなし。つかビデオチップが主語。
ソートを諦めるなら64みたいなRCP構成もありか。
けど、
フィードバック系のイフェクトやりたければ、不透明ポリゴンも
ソート対象になるから、やはりポリゴンソートは必須かも。
Zバッファ(Wバッファ)はソートミスの補正目的に成り下がる時代へ。
X-BOXの実機ではこのあたり、どう捉えているのか見物。
0803デフォルトの名無しさん
NGNGそうなるとPVRアーキテクチャの素晴らしさが身にしみて解りますなぁ。
X−BOXも半透明ソートはノータッチでしょう。
OTは・・・。知らない人結構いるのね。解んない人はSTLのmultimap
の事だと思えばOK。
0804デフォルトの名無しさん
NGNG当時の任天堂やSGIがUMAだと騒ぐその一方、
ちゃっかり専用のローカルメモリを挟んだおかげでバス帯域の混雑を
緩和してたし。
でも、いまさら、SGIですら捨てたUMAをわざわざ採用するとはねぇ
0805デフォルトの名無しさん
NGNG半透明の上に不透明が書けないけどね。
0806デフォルトの名無しさん
NGNGんっと、登録した時点ですでにソートされてるってことだよね?
だったらmultisetだよね?
いや、mapだと何がキーなのかわかんないので(^^;
0807デフォルトの名無しさん
NGNGフィードバックさえ諦めれば、文句なしのアーキテクチャですね。
NVIDIAの方針であるピクセルシェーダなんかも、PVRアーキテクチャ向きですし。
NECには頑張ってもらいたいところ。
0808デフォルトの名無しさん
NGNG使っていたり。結構古い手法じゃないかな? 使用するスプライトを全部前に
つめられるんで便利だったよ。プライオリティも好きなだけ持てるし。
転送速度が問題になったけどね。某STGでも使いました。
0809デフォルトの名無しさん
NGNG条件によってはもっと早いアルゴリズムも存在する。
0810デフォルトの名無しさん
NGNG3DのZソートに使っちまう(ハードウェアもそれ前提になってる)のは
無茶するなあって思いました。なんにせよ良く出来とります>某国民機
0811デフォルトの名無しさん
NGNGPS1登場以降での3Dポリゴンソートではクイックもマージも有得ないと思う。
メモリが1メガバイトもあるような環境ではOTソート以外はちょっと。
いや、仮にサポートするDMAがなかったとしてもね。
OTソートはソートしないソート?!なんで。
ソートごときにCPUパワーを1%でも消費してたら馬鹿らしい。
0812デフォルトの名無しさん
NGNG限定できるのならばバケツソート(OTソート)はコストはほぼ零だね。
0813デフォルトの名無しさん
NGNGmビットで表現されるキーを持つn個のデータなら
コストは n log m となるわけだよね。
キーが普通の整数や double, float ならコスト n か。
これファイルシステムに良く使われる b-tree のこと、
ですか?
0814デフォルトの名無しさん
NGNG各ノードから、単方向リストを伸ばすだけ。
0815民間人
NGNGできたらあとはDMAに勝手にガシガシ手繰らせてGPUで描画、
その間にCPUは次のフレームを処理して
新しい描画パケット群を準備って感じでいいッスか?
PS発売当時のASCIIの記事かなんかで
1/30秒、1フレーム遅れの並列処理とかあったような気がする。
0816デフォルトの名無しさん
NGNGPVRアーキテクチャはフィードバックできないのですか?
よろしければ理由を教えて下さい。
0817バケツソート
NGNGインデックスが0から100の配列用意しておいて、
それぞれの点数の数をカウントする。
結果出力は0(又は100)から配列内容見てインデックス値を
配列内のカウント分出力。これでソーティングになる。
どんなにデータ増えても処理時間はデータ個数に比例。
0818デフォルトの名無しさん
NGNGそれは度数ソートちゃう?
ま、バケツソート/バケットソート/基底ソートも似たようなもんだけども。
0819デフォルトの名無しさん
NGNG805から未来ツッコミされる808氏ってもしかして・・・。あ、いやいや、
詮索はよしときます。某STG楽しませていただきました。はい。
>>806
multimapですよ。ま、応用的な使い方ですが。
もちろんmultimapで実装するオバカさんはいないと思うけど。
ってみんなヒント与えすぎー。別にいいけど。
0820デフォルトの名無しさん
NGNG2Dの時から普通に使ってたよ。
0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNG「メガウロコ」って気に入った。
使わせてください。
目からメガウロコが落ちた。
0823デフォルトの名無しさん
NGNG>それは度数ソートちゃう?
>ま、バケツソート/バケットソート/基底ソートも似たようなもんだけども。
ってことで、3Dポリゴンのソートには、単なる度数ソート(呼び方いろいろ
ありますが)で済むので、その他のソート手法は有得ないのでは?という話題なのでは?
度数ソートはハードでサポートされていなくても、例えばマテリアルソートや
なんかでも有用です。
Direct3Dが、リストで連結されたプリミティブ群をスキャンするインターフェイスを
DirectX3の時点で用意すべきだったわけです。そうすれば、今ごろは各ビデオメーカも
そのメソッドに対応したDMA構成で対応し、今ごろ、大抵のハードに実装されている
機能になっていたわけですね。いや、歴史にイフは禁物ですが。
0824デフォルトの名無しさん
NGNG>描画パケットを、Z値の数だけ用意した単方向リストにガシガシ繋げててって、
>できたらあとはDMAに勝手にガシガシ手繰らせてGPUで描画、
>その間にCPUは次のフレームを処理して
>新しい描画パケット群を準備って感じでいいッスか?
万が一、本当に「民間人」だったらぜひ業界へ。
0825デフォルトの名無しさん
NGNG0826デフォルトの名無しさん
NGNG大昔から使ってるようなテクに偉そうな名前つけてんじゃねーよ。
ITみたいなもんだな。
0827民間人
NGNG0828デフォルトの名無しさん
NGNGそれはSCEに言ってクレー
ともかくハードを含めたアーキテクチャ自体は美しいと思うナリ。
0829デフォルトの名無しさん
NGNGメガウロコ・・・いいひびきだ。
0830デフォルトの名無しさん
NGNG>大昔から使ってるようなテクに偉そうな名前つけてんじゃねーよ。
いや、だから16Bit時代から存在するテクは32Bit時代ではDMAによる
ハードサポートが施されるようにまで順当進化したわけ。
なのに、Direct3Dではいまだにノーサポート。
これ、どういうことよ?ってな話なんでしょ?
D3D、ソートに対してあまりにも無頓着すぎる。
0831デフォルトの名無しさん
NGNGD3Dはあまりにも盲目的にOpenGLをパクり過ぎた。
何も欠点までパくらんでもいいのにな(藁
でも今からでも構わないので、是非とも「メモリ点在型パケット描画 DrawPrimitive」
なるものを用意してもらいたいものだ。
けどマニアックになるのかなー。
描画パケットをダブルバッファにしたり、キックしたパケットエリアにCPUでアクセスしては
ならなかったり・・・
0832再確認
NGNGWinやMacやLinuxみたいな
立派なOSなんか載っていない機種向けの
ゲームプログラミングについてのスレです。
とりあえず
・守秘義務は守る(つっこんだ質問はそれにふさわしい所でどうぞ)
・身元がばれないように気をつけよう。詮索もやめよう。
・プログラムの話をしよう。
みたいな感じでマターリいきましょう。
0833デフォルトの名無しさん
NGNG同じことを言ってるかよくはわからないけど、それらしいものは
DX8でついてるみたい。DX8だとVertexBufferを作って、そこに
データを書き込んでDrawPremitiveするのが普通だけど、
DX8+nVIDIAだとDrawPremitiveした時点で、VertexBufferがスワップ
されて、違う物理メモリがVertexBufferに割り当てられて
DrawPremitiveが返ってくるららしい。こうやって並列性を
高めてる。
0834デフォルトの名無しさん
NGNGハードウェアを複雑にしないで、転送を高速なCPUに任せるような、
アーキテクチャがあってもいいでしょうよ。
PS2だって速度追求の為に、VRAMの容量がトレードオフに、
なってたりするわけだし、何かしら欠点はあるでしょ。
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNGSCEの営業さん?
0837デフォルトの名無しさん
NGNGCPUが高速になればなるほど待たされるということに気が付かないかなぁ
DMAの利点は何も「データ転送」だけじゃないんだよ。
ビデオチップが欲しいと思った任意のタイミングでバスをアクセスできることに
あるのだけど。
いくら高速に転送できても、ビデオチップ側が受け付けなかったらそれまで。
だからこそビデオチップが一人称なDMA転送が必須になるんじゃん。
64だとかPS、っつーかSGI系のハードは少なくともみんな似たような構成。
0838デフォルトの名無しさん
NGNG「描画パケ作るの面倒くせぇぞゴルァ!!」
とゆう民の声に押されて粛清されたとさ。
0839どしろうと
NGNGDMA転送について議論されてますが、X-BoxはUMAだから同一メモリ上に
データはあるわけですよね?。CPUさんが「ココにあるよー」って
GPUさんに教えてあげれば「ココにあったのかー」で、転送する
必要ないような気がするんですけど、違うんでしょか?。
0840デフォルトの名無しさん
NGNGだから描画キューってのがあって、ビデオチップ側が、
受け付けないから待つなんて事は無いんだってば。
0841どどしろうと
NGNGCPUがいちいちココ、ココ、次はココねって教えてあげないとダメなんで
変わらないんじゃないかと。
0842デフォルトの名無しさん
NGNGキューって、どれくらいの容量のがどんな感じで実装されてるんスか?
そこんとこ知りたいでし。
0843デフォルトの名無しさん
NGNG公開されてないけど、
まともな実装なら、GPUにキューの状態を教えるだけだろう。
ボトムポインタを更新するとかね。
どっかにその辺の資料無いかね。
0844デフォルトの名無しさん
NGNGだから実装はドライバ次第なんだってば。話がル〜〜プ。
つい最近までのビデオカードでは大体ラスタライザにおくる前段階
までは全てCPUで処理してたからCPUロックするのも仕方ない。
XBOXは知らんがPCに過度の期待はしない方がいいかと。
0845デフォルトの名無しさん
NGNGnvidiaはrivaイチニッパからDMA使ってると思われ。
PS系の描画方式は、類似思想のdirect3Dのexecute bufferが
ゲーム開発者コミュニティから激しく拒絶された苦い経験があるので
どこも導入しないと思われ。
powerVR系のタイルアーキは、1フレーム分の描画コマンドを
ためこむバッファがメモリを圧迫するので
否定的な意見が多いと思われ。
0846デフォルトの名無しさん
NGNG容量は分からんが、GeForceの場合は、
tweekで先行計算するフレーム数を3枚以上指定出来るので、
それなりはあるのかと。
XBoxはわからん。
0847一般系プログラマ
NGNG0848デフォルトの名無しさん
NGNGどういう問題が起こるでしょうか?
0849デフォルトの名無しさん
NGNG次からは
・ゲーハー板にリンク張らない
も加えて下さい。マジで。
0850デフォルトの名無しさん
NGNG俺は、どのハードでも不満だらけ。
0851デフォルトの名無しさん
NGNG右手系と左手系ならそれ程違いはないんじゃないでしょうか。
最終的なz値をひっくり返すだけで使い分けられると思います。
行列表記のほうがややこしいんじゃないでしょうか?
最終的に転置すれば大丈夫じゃ無い?って思ってますが、実際に
使い分けた事が無いので不明です。
0852デフォルトの名無しさん
NGNGハードウェアじゃなくて会社の信者だと思われ。
信者フィルターがあればどんなハードだろうが最高にも最低にもなりうる。
0853デフォルトの名無しさん
NGNGあのー、内容から察するに学生さんですよね。一応そういった
質問はこちら(↓)のスレッドでするのが無難かと思いますよ。
■ゲームプログラミング相談室[2]
http://piza.2ch.net/test/read.cgi?bbs=tech&key=985540361&ls=10
0854デフォルトの名無しさん
NGNG>>845 >>852
一応エンジニアならさ、「思われ。」のような不明瞭で不気味な
表現は止しません?「北の国から」世代なのは理解できるけどさ。
0855
NGNG0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNG曖昧な表現になるのもしょうがないと思われ。
0858デフォルトの名無しさん
NGNG某psのライブラリみたいないいかげんなやつ使ってると座標系に対する
意識ってどんどん減っていくような気がする。
0859848
NGNG世間では、系の差異が引き起こす問題についてイロイロ議論がされていますが、
実際どれほど、致命的な問題を引き起こすんだろう?
と思いまして。
851 の方、ツボなレスをありがとうございました。
0860デフォルトの名無しさん
NGNGあと、ライトの方向とかの反転とか?
0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNGモデル座標系は右手系、投影時に左手系に直す場合、
すべての座標変換は右手系で最後にzを反転してやればいい。
OpenGLは左手系なんだけど俺は全て右手系で処理してるよ。
Z符号反転と言うのはそのまんまzに-1を掛ける行列を挟むと言う事
なんじゃない?もちろんここは投影の段階でするべき事。
ライトについても同じ行列で処理すれば良い。
0863デフォルトの名無しさん
NGNG0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNGMSとインテルのおかげでもう少しでリトルのみになるよ。(w
0866デフォルトの名無しさん
NGNG俺はビッグエンディアンの方が好き。
ネットワークエンディアンだし。Javaもビッグエンディアンだし。
どっちになるかって言ったらやっぱビッグエンディアンかなあ。
CPU的にはリトルの方が慣れていると言えばそうなんだけど。
0867865
NGNGアセンブラを人間がやるならビッグの方がミスが少ないと思うよ。
いまは使わないからどっちでもいいんだけどね。データのやりとりが
ちょっと面倒なときがあるくらいで。
0868デフォルトの名無しさん
NGNG下位アドレスには下位バイトが来る方が自然かもと、
思い直してから、宗旨変えした。
語長で、オフセットと桁の意味が変わらないし。
0869デフォルトの名無しさん
NGNG左通行と右通行でも理屈は同じだけど、人間には何かと慣れの問題があるから
なるべく多数な人間が慣れていると思われる方向に傾けるのがいいと思う。
一番いいのは、どちらに転がっても適応することに慣れること?!
0870デフォルトの名無しさん
NGNG>OpenGLは左手系なんだけど
おいおい(w
0871デフォルトの名無しさん
NGNG射影変換でz反転されてその後は左手系になるよ。
0872デフォルトの名無しさん
NGNGCPUもリトルがいーよ。PS2もリトルだしな。
マシンの外側はnetworkに敬意を表してビック。
0873デフォルトの名無しさん
NGNGえっと、どっちになると思われます? 非PC系含めて。
0874デフォルトの名無しさん
NGNG実際のとこ分からないので、このスレでアンケートとってみません。
この手の話題はプログラマならずグラフィッカーにも登場願いたいですが。
0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNG飛行機系っすか?
0877>875
NGNG0878デフォルトの名無しさん
NGNGMAX系?
0879デフォルトの名無しさん
NGNG0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=987830963
0885プチ4748m
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=987830963