【Xbox360】 XNA Game Studio その4 【C#】at GAMEDEV【Xbox360】 XNA Game Studio その4 【C#】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト504:ひげねこ ◆oxtErU/kVM 08/02/24 05:17:03 XxNI12Tm では、どうすれば良いのか?ということになりますが、例としてはパーティクルシステムがあります。 それぞれのパーティクルは四角形なので全ての処理をCPU側ですると4頂点分の計算処理に加えて、 4頂点分のデータを書かないといけません。 ここで殆どの人が見落とすのがデータの書き込み自体に掛かるコストです。Xbox 360はPCに比べると速いメモリを積んでいますが、 キャッシュミスしたときのペナルティが数百サイクルと非常に大きいんです。 そして、このキャッシュミスは書き出すデータの量に比例して増大します。 ですから、通常はPosition(Vec3)、 UV(Vec2)、Color(Color) = 24バイト*4 = 56バイトとなるところを CenterPosition、Color、そしてパーティクルの四隅を計算するのに必要なパラメーター(スケール、回転など)とすると、24バイトと 半分以下にすることでメモリ書き込みのコストを減らすことができ、さらに4頂点分の計算は頂点シェーダー内で行われるので その分、CPUの計算量を減らすことができます。 Xbox 360のシェーダーにはvfetchと呼ばれる命令があり、これを使うとDX10のジオメトリシェーダーっぽいことができます。 クリエーターズクラブにあるパーティクルサンプルはvfetchを使っていませんが回転などの処理はシェーダー内で行っています。 ttp://creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Particle-3D-Sample.aspx vfetchについてはMeshインスタンスのサンプルで使われています。 http://creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Mesh-Instancing.aspx 現状、XNAをXbox360上で動かした場合、CPUに比べてGPUは暇を持て余しているのでこき使ってあげましょう。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch