• ひにけにGD

    XNA Game Studio 4.0のエフェクト・コンパイラーとコンテント・パイプライン・オートメーション

    • 4 Comments
    今までのXNAにはEffect.CompileEffectFromSourceメソッドがありました。Xbox 360上ではランタイム時にシェーダーのコンパイルは使えず、Windows上でのみ使えるメソッドでXbox 360とwindows用のシェーダーをコンパイルすることができました。しかし、この方法では以下の問題がありました。 ランタイム用のAPIのように見えるのに、すべてのプラットフォームで使えない Windows再配布コンポーネントにはXbox 360用のシェーダーコンパイラーが含まれている...
  • ひにけにGD

    XNA Game Studio 4.0のEffectインターフェース

    • 0 Comments
      XNAでモデル描画する場合は、一般的に以下のようなコードを書きます。 Matrix [] transforms = new Matrix [model.Bones.Count]; model.CopyAbsoluteBoneTransformsTo(transforms); foreach ( ModelMesh mesh in model.Meshes) { foreach ( BasicEffect effect in mesh.Effects) { ...
  • ひにけにGD

    ちょっと一息

    • 4 Comments
    とりあえず、今月19回目の投稿になります。月に19回というのは、ひにけにXNA始まって以来の記録更新になります。別に本業の方が暇になったというわけではなく(Twitter見てる人には忙しさが伝わってると思いますが)、ビルド待ち時間やテストする為のネットワークサービス待ちというのがやたら多かったので、その待ち時間の間に沢山投稿することができました。 さて、 Shawn のXNA Game Studio 4.0の新機能の紹介投稿も収まってきて、翻訳したい投稿も三つ程と減ってきました。 ちなみに私がメモしてある...
  • ひにけにGD

    新しいエフェクトとコンテントパイプライン

    • 2 Comments
    今までのXNAではコンテント・パイプライン内では以下のようにしてマテリアルを読み込んでいました。 もし、FBXかXファイルモデルが.fxファイルを参照している場合、EffectMaterialContentとしてインポートし、ゲーム内ではカスタム・エフェクトとなります。 それ以外であれば、BasicMaterialContentとしてインポートして、実行時にはBasicEffectとなります。 BasicMaterialContnetのテクスチャ、ディフューズカラー、スペキュラ係数といったプロパティはFBXやXファイルのマテリアルの値を設定します...
  • ひにけにGD

    ビルトイン・エフェクトの組み合わせとパフォーマンス

    • 0 Comments
    私のMIXでのトーク から拝借して、XNA Game Studio 4.0の 五つのビルトイン・エフェクト と、 その最適化のための組み合わせ の情報をまとめて紹介します。 簡単に言えば、シェーダー命令数が少ないほど実行速度が速くなります。ただし、 CPUバウンドだったり 、 GPUの別の部分がボトルネック の場合は効果がないことに注意してください。 BasicEffect   頂点シェーダー ピクセルシェーダー LightingEnable = false 5 1 頂点ライティングx1...
  • ひにけにGD

    コード探偵 ファイル06 「暗闇にさす光」

    • 0 Comments
    とあるプロジェクトで処理落ち問題が発生し、最適化をすることになりました。二人の技術者が同じ時間を掛けてプログラムの違う箇所の最適化���行い、その結果、二人の技術者は以下のように報告しました。 技術者A「俺はAの部分を5倍速くしたよ」 技術者B「僕はBの部分を2倍の速度に最適化しました」 さて、仮にあなたがこのプロジェクトの管理者だとして、どちらか一人の技術者に成功報酬をあげるとしたら、どっちの技術者を選びますか? もしAかBのどちらかをこれだけの質問で選ぶことができたら、管理能力に難ありです。どっちも選ばずに自分の懐に入れると思った人は管理者というよりも人としてなにか間違っているでしょう...
  • ひにけにGD

    コード探偵 ファイル05 「無口なGPU」

    • 0 Comments
    前回 はCPUのボトルネックを割り出す方法を紹介しましたが、今回はGPUのボトルネック部分を割り出す方法を紹介します。   今日、取調室に呼び出されたのはGPUです。CPUと違ってGPUは決して自供することはありません。どんな質問を投げかけてもかたくなに黙秘権を行使します。ただし、いくつかの質問をすると微妙に表情が変わることが判りました。 グラフィクスプログラマーはこのGPUの微妙な表情の違いからGPUのボトルネック部分を探し出す必要があります。   GPUのボトルネックを見つけ出すにはGPUのパイプラインがどのようになっているのかを知る必要があります...
  • ひにけにGD

    コード探偵 ファイル04 「CPUは正直者」

    • 0 Comments
    前回 と 前々回 で紹介した方法で処理落ちの犯人を割り出すことができました。犯人を割り出したら、次はどのようにして犯行現場を特定する必要があります。 今日、取調室に呼び出されたのはCPU。CPUは多彩な知能犯で、数百から数千もある複数の箇所を駆け巡り、ありとあらゆる方法で、時にはこちらが想像もしない方法で犯行を行います。CPUの犯行現場は数百から数千もある複数の候補箇所から割り出す必要があります。これら全ての候補ををしらみつぶしに探していくには途方もない労力と時間が必要になってしまいます。  ...
  • ひにけにGD

    コード探偵 ファイル03「タイムルーラーで現場測定」

    • 0 Comments
    タイムルーラー を使ってゲームの更新部分と描画部分に掛かった時間は以下のコードで測定することができます。 /// <summary> /// ゲームの更新(衝突判定、入力処理、オーディオの再生など) /// </summary> /// <param name="gameTime"> タイミング値のスナップショット </param> protected override void Update( GameTime gameTime...
  • ひにけにGD

    コード探偵 ファイル02「FPSで犯人割り出し」

    • 0 Comments
    パフォーマンス殺害の容疑者は常に二人居ます。CPUとGPUです。この二人の容疑者から考えられるのは以下の三つ。 CPUが犯人(CPUバウンド) GPUが犯人(GPUバウンド) 二人は共犯者(CPUとGPUのバランスが取れている) まずはパフォーマンスを殺した犯人を特定するのが先決で、その後に犯行の動機や手段を洗い出します。 FPSを測定して犯人を特定する CPUバウンドかGPUパウンド を見つけだすには、 FPSを測定 する方法と、 タイムルーラー を使う二つの方法があります。 FPSを測定する場合は...
  • ひにけにGD

    コード探偵 ファイル01「パフォーマンス殺害事件」

    • 0 Comments
    PCやゲーム機の仕組みが非常に複雑になった現在、処理落ちしている状態、つまりパフォーマンス問題がある場合、その原因究明にはシャーロック・ホームズ(もしくは、コナン君、金田一君、夢羽など)と同じような探偵としてのスキルが求められます。 もちろん、ここでいうスキルというのは、殺人事件に出くわす確立が異常に高いというものではなく、事件を解決する能力です。 パフォーマンスは死んだ 誰が殺したか? この事件を解決するには、探偵と同じように仮定を立て、証拠を集め、推理力を働かせることで犯人...
  • ひにけにGD

    CPUバウンドとGPUバウンド

    • 0 Comments
    もしあなたが60FPSのゲームを作ると決めた場合、ゲーム内全ての処理を1/60秒、つまり16.66ミリ秒以内に終わらせないといけません。ゲームの規模が大きくなればなるほど、処理する内容も多くなるとともに16.66ミリ以内に処理を終えることが難しくなってきて、ついには16.66ミリ秒以内に処理を終えることのできない状態、つまり処理落ち状態になってしまいます。 XNAフレームワーク上でゲームを作っている場合、 固定更新設定にしていれば 処理落ちした場合は描画部分をスキップするという機能があるので、ある程度の処理落ちは軽減することができます...
  • ひにけにGD

    XNA Game Studio 4.0で追加された新しいビルトイン・エフェクト

    • 0 Comments
    訳者注:今回はちょっと口語訳っぽくしてみました。途中までフォーマルな感じで訳していたのですが、原文の雰囲気と合わなかったので、合わせて口語訳にしてみました。 この記事は記録(?)されたもので、Shanwは今いません(今週末に結婚するんだ、俺)(訳注:死亡フラグみたいですが、Shawnは無事に結婚して、新婚旅行から帰ってきました) チェス盤と麦(もしくは米)の問題 を聞いたことがあるかい?シェーダープログラマーは同じ問題を抱えているんだ。 <チェス盤と麦の問題とは> ...
  • ひにけにGD

    Game Studio 4.0におけるBasicEffectの最適化

    • 0 Comments
    Game Studio 4.0で、BasicEffect API自体は変わっていませんが、今までより更に最適化が進んでいます。 以前のバージョンでのBasicEffectはシェーダープログラムの手始めとして初心者向けに設計されたものでした。なぜならシェーダープログラムの知識のある人達は直ぐに自前のシェーダーを書くだろうと思っていたからです。ですから、BasicEffectの最適化には多くの時間を割かず、WindowsとXbox 360上でそれなりの速度がでる程度の最適化しかしていませんでした。 Windows...
  • ひにけにGD

    XNA Game Studio 4.0におけるViewport

    • 0 Comments
    XNA Game Studio 4.0ではViewportオブジェクトを使う場面で便利な機能を追加しました。まずは以下のコンストラクタを追加しました。 public Viewport( Rectangle bounds); public Viewport( int x, int y, int width, int height); そして、BoundsプロパティをViewport、Texture2DとPresentationPrametersへ追加しました。 public...
  • ひにけにGD

    XNAフレームワーク開発者の1日

    • 0 Comments
    前回のポストの 原文の方 には「2時間って時間掛かりすぎじゃない?」や「いやいや、2時間は短い方でしょ」などのコメントが寄せられていました。 このコメントに対してShawnは以下のように答えています。 2時間というのは単に開発に掛かった時間で、非常に短い時間です。実際にはこの他にもドキュメントの更新や、テストにも時間が掛かっています。 この変更で開発に掛かった時間を細かく分けると以下のようになります。 プロパティの削除:5分 関連するユニットテストの更新:5分 この更新がサンプルに影響しているかのテスト...
  • ひにけにGD

    Game Studio 4.0におけるElapsedRealTimeとTotalRealTime

    • 0 Comments
    新しい機能についてのブログポストを書くとき、よく、今までに書いたデザインドキュメントや、バグデータベースを参考にします。殆どの場合はその内容をそのまま引用することはないのですが、今回は既存の文章がそのまま使えるので、盗用することにしました。 すべでは私が登録したバグの記述から始まります。 「GameTimeクラスのRealTimeメンバーは混乱のもとだし、特に良い使い道もない。更に通常、常にRealTime以外のメンバーを使うことが良いというのであれば、混乱を少なくするためにRealTimeメンバーを削除するのがいいのではないか...
  • ひにけにGD

    消えたResolveBackBufferとResolveTexture2D

    • 0 Comments
    Game Studio 4.0ではResolveBackBuffer APIとResolveTexture2Dクラスが削除されました。 このAPIは基本的なRenderTarget2D(GPUによって描画された結果がテクスチャとなる)と同様のもので、多少の違いがあるだけでした。重複する機能を提供することが常に悪いこととは限りませんが、完全に同じ機能を提供するときには注意が必要です。 重複している機能を提供する場合、それらの機能を提供したと仮定して、フレームワークを使っている人たちからの「どっちを使ったら良いの...
  • ひにけにGD

    XNA Game Studio 4.0におけるRenderTargetの変更点

    • 1 Comments
    XNA Game Studio 4.0ではユーザービリティ向上、エラー数低減を目指してAPI設計をしました。そのひとつがRenderTarget関連のAPI変更です。 いまだに共通して混乱の元となっているのはRenderTargetUsage.DiscardContentsの振る舞いですが、この振る舞いは変わっていません。PreserveContentsモードはXbox 360上では非常に遅く、Windows Phone上では更に遅くなってしまいます。これはタイルレンダリングなどの分割レンダリングを採用するプラットフォームでは良くあることです...
  • ひにけにGD

    ひにけに、ひげねこ、つぶやきXNA

    • 0 Comments
    突然ですが、 Twitterでつぶやきはじめました 。アカウント自体は一年くらい前に作ったのですが、つぶやくことがなくて放置していたのですが、今年に入ってXNAチームでもTwitter使いましょうという話がきたので、遅ればせながらはじめることにしました。 以下はXNAチームメンバでXNAのことをつぶやいている人達のTwitterアカウントです。 Shwan Hargreaves Michael Klucher Tom Miller Jason Kepner Mitch Walker Nick Gravelyn...
  • ひにけにGD

    XNA Game Studio 4.0における頂点データ

    • 0 Comments
    以前のXNAでは、VertexBuffer(頂点バッファ)は弱い方定義がされたバイト列の入れ物でしかありませんでした。これとは別にVertexDeclaration(頂点宣言)オブジェクトによって、これらのバイト列をどのようなフォーマットとして扱うのかを指定していました。 XNA Game Studio 4.0ではVertexBuffer生成時にVertexDeclarationを指定することでVertexBufferとVertrexDeclaratoinを関連付けるようになりました。このことによってVertexBufferは強い型定義となり...
Page 1 of 1 (21 items)