atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
FPSを作ってみる@wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
FPSを作ってみる@wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
FPSを作ってみる@wiki
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • FPSを作ってみる@wiki
  • 進捗状況(2009
  • 04)

FPSを作ってみる@wiki

04)

最終更新:2009年04月21日 21:57

slice

- view
管理者のみ編集可

(2009/04/21)

トップページが頻繁に更新されてるのを見ればわかるかもしれないが、
特に理由は無いが少々急ぎ気味でグラフィック関連のおさらいをしている。
実装したらその都度目に見える形で結果が出る、ついでにwikiにも乗せられる
のはやる気の持続という点では非常に良いですな。
今は水面処理やってたりする。もうちょっとでそれなりのエフェクトになるかも。

で、こうして色々やってくと自然にグラフィックカードが欲しくなるのはお約束なのだろうか?
買うとしてもどの程度のカードか迷う。迷いまくる。
やっぱGeForceなのか。Radeonも好きなんだが。
GeForce8000番台以降は物理演算補助機能があるっぽいし(統合されたPhysXのこと)
あとGPGPUにも興味あるし。

バリバリにゲームやらなそうなので予算は一万前後かな~
プログラミングの間にちょくちょく調べてあたりをつけておこうか
(補助電源コネクタ付いてるのは遠慮しとく方向で)
GeForce9600GTの省電力版が狙い目かな

(2009/04/18)

STGばっかりだったしFPSっぽい事もしなきゃ。
てなわけで個人的にリアルタイムシャドウの大革命だと思っているVariance Shadow Mapというのを実装してみた。
途中で致命的な単純ミスを2つも犯してしまったのでえらく時間食った。
(何が致命的かというと解決するまでの時間が致命的。勘違いとも言う)

というかこの実装考えた人スゲー
それまでリアルタイムシャドウといえばDOOM3のような超シャープな物(シャドウボリューム)か、輪郭のギザギザが当たり前(シャドウバッファ)だったのが
このシャドウバッファの影判定に細工をする技術によって解決してしまったわけだ。
次は弾痕のパララクスマッピングしようかな。

(2009/04/18)

そういえばFPS動画その2で弾痕をバンプマップの親戚であるパララクスマップで表現したら・・・という
意見が出てたっけ。多分やります。やりますとも。
F.E.A.Rでやってたもんね。

でもマップにもそれを、となるとちょっと難儀するかなあ。
マップポリゴンにバンプマップを掛けるならともかく、パララクスマップを掛けるとなると
パラメタの調整を重ねないとヌメッとした質感になってしまって
なんか、壁や床が物凄い熱で溶けたんじゃないかという印象を受けるからです。
例としてはどっかから拾ってきた画像とか、わかりやすいかも。
いやまあこれは極端な例ですけどね。

それとは別に、弾痕を消すタイミングが難しいな~
全部残しとくわけにもいかんだろうし。かといってすぐ消えてるのも不自然だし。
対戦系のゲームでは通信負荷が問題になるのか、30秒くらいでスーっと消えたりしてるなあ。
通信プレイ中では仕方ない所だろうが、シングルプレイでは・・・・?
処理時間の余裕を見て一つのバッファに纏めるかなあ。

(2009/04/14)

今何やってるかっていうと、シャドウマップ(初期の実装で、ジャギが目立つ)の実装だったりする。
理由は特に無くてなんかそろそろやりたくなったから、やってる。
別に珍しい技術じゃなくて、逆に箱○とかPS3で出る今時のゲームは淵のぼかし処理を含めて
やってないとm9(^Д^)プギャーされてしまうのだろう。
---と思ったらSource Engineは対応してなかったっけ。あれは投影シャドウだったかな?
Left4Deadやってたときに銃やフラッシュライトがリアルタイムに影を計算されてない気がした。まあいいか。
なんにしてもオプションで切り替えして負荷を調節出来るのがベストだと思っております。

で、実装自体はそんなに難しくなくってどっかから論文なりwebサイトを探してきてサンプル通りやれば大体出来る。
(と言いつつパラメタ設定ミスって中々上手く動かなかったり)
でも理論を理解しておかないと応用が利かないから自分的に困る。
力仕事ページにサイトのURLを幾つか載せておいたけど
そこの説明がわかりやすくていいですね。っていうか皆さん凄いですね。

一応60fps(2009/04/09)

実験の結果一応60fps達成したところでジオメトリ(ryに関しては終了。
ソフトウェア頂点処理しか出来ない環境なのでハードウェア頂点処理の時の挙動がわからん!
これ以上は何かしらのビデオカード買わないとどうにも。

それはそれとして。次回のソース書き直しで
モーションブラーとかのエフェクト掛ける場合にフレームワークどうしようかね~とか考えてたり。
もちろんピクセル単位ライティングとリアルタイムシャドウ、HDR表現、水面エフェクト等も視野に入れて。あと被写界深度だっけ?そんなのも。
物理演算(剛体シミュ)は放置。まだそのレベルまで行かんと思う。

相変わらず動画作るにはまだ素材が足らないのでチマチマ作成中。

単純ミス(2009/04/08)

あ~やってもうた......
モデルの読み込みの時に複数のメッシュに含まれる頂点を一本の頂点データに変換するルーチンで
頂点インデックスのオフセットかますの忘れて最初のメッシュだけ正常に描画されてあとのはぐちゃぐちゃに。
結果を書けばこれだけなんだけど。一日近く無駄にしたか情けない。
ともあれまだインスタンシングやってないけど、関節に属するモデル数分ではなくモデル1体につき1回描画コールになった。
それにより関節が10個ある物体を10体描画したら30fpsに落ち込んでいた所が54fpsへ改善した。
加えてジオメトリインスタンシング(勝手にGIって略そうとしたらGlobal Illuminationになってしまうな)をする事で
60fpsを保てるようになるか、どうか。

ジオメトリインスタンシング(2009/04/06)

あの後いくつか描画手順を試した結果
結論から言って「何度も描画命令を発行すると遅い」

DirectXの描画命令発行は予想以上に重い。
具体的な数値を用意できればよかったのだが面倒なので例え話で
あるオブジェクトAがあったとして
Aを2個分描画するよりもAの3倍のポリゴン数であるBを1個描画した方が軽い、みたいだ。
ただし自分の環境での実験結果(AMD690Gでソフトウェア処理の頂点シェーダー2.0、ピクセルシェーダーなしの条件)だからねえ。
ビデオカード使用時ではどの程度参考になるかわかったもんじゃあないが。
まぁ、まとめて描画した方がかえって遅い事はないと思う。

従って次にエンジンを作り直す時は纏めて描画することに重点を置いた設計にする方針で。
頂点バッファの切り替え、テクスチャの切り替えなんぞは大して意識しなくて良いのではないかと。

で、どんな感じでまとめて処理するかな~と調べたら
同じ形状のオブジェクトを位置や向きを変えて複数描画する場合にモデル形状は共有させて
姿勢情報だけとっかえひっかえして描画する、ジオメトリインスタンシングがDirectX9.0cから存在するようだ。
初代Far Cryの草木の描画で使用されている割と枯れた手法と言ってしまって良いかも知れない。

ところでMSDNの該当項目では使用するには頂点シェーダー3.0のサポートが必要って書いてあるけど、本当かね?
もし3.0でないと使えないとなれば行列を4個分ずつ設定して4個ずつ描画するとかで代用してみようか。



すまぬ、また来年(2009/04/05)

ああ、もう4月になってしまった。
4月1日に何かネタかませれば面白いなあと思って急いで作業してたけど目に見えて品質が低下していくので
来年って事で一つ。中途半端なのは嫌です。
申し訳ない。

今はアプリケーション終了時にVC++の
ランタイムデバッグルーチンで「メモリが破壊されてるぞゴルァ」というエラーが出るんで調査中。
なんだかバックグラウンドでリソースを読み込む処理を追加してからボチボチ出てる様なので面倒そうだ。

もう一つの問題は敵モデルを12,3体程出すと動作が凄い重い事。
これも色々試して調べてるんだけどイマイチ原因がつかめない。
描画が重いのかと踏んでテクスチャを1x1にしても、
頂点数(ポリゴン数)を削減しても殆ど変化が見られないのだ。
敵の動作処理だけやってモデルを全く描画しないと軽いのだが。

なので前に作った(というかGameProgrammingGems1に載ってるのと大部分同じ)プロファイラを
急遽改良実装して更なる原因究明へ乗り出した。
具体的には描画ポリゴン数、[頂点バッファ、インデックスバッファ、テクスチャ]の切り替え回数、
Vsync待ちにどの程度時間使ったかを表示するように改良した。
これを使ってもう少し詳しく調べられればいいな。

「04)」をウィキ内検索
LINE
シェア
Tweet
FPSを作ってみる@wiki
記事メニュー
  • トップページ
  • 参考資料ブックマーク等
  • Tips

Media

  • 頂き物
Screen shot
  • FPS_page1
  • FPS_page2
  • FPS_page3
  • Other_page1
Drawing
  • Drawing(analog)
  • Drawing(digital)
  • Drawing(digital) 2
  • Drawing(digital) 3
  • Drawing(digital) 4
  • Drawing(digital) 5
  • Drawing(digital) 6
  • Drawing(digital) 7
  • Drawing(digital) 8
  • Drawing(digital) 9
  • Drawing(digital) 10
  • Drawing(digital) 11
  • Drawing(digital) 12
  • Drawing(digital) 13
Movie
  • movies-list

Old Contents

  • トップページ(old)
  • メモ書き
  • 力仕事UP場
  • ゲームシステムとか
  • バグ・動作報告
  • program(twilve)

Progress log

  • (2018/03)
  • (2017/04)
  • (2017/03)
  • (2016/10)
  • (2016/09)
  • (2016/08)
  • (2016/07)
  • (2016/06)
  • (2016/05)
  • (2016/04)
  • (2016/03)
  • (2016/02)
  • (2016/01)
  • (2015/12)
  • (2015/11)
  • (2015/10)
  • (2015/09)
  • (2015/08)
  • (2015/07)
  • (2015/06)
  • (2015/05)
  • (2015/04)
  • (2015/03)
  • (2015/02)
  • (2015/01)
  • (2014/12)
  • (2014/11)
  • (2014/10)
  • (2014/09)
  • (2014/08)
  • (2014/07)
  • (2014/06)
  • (2014/05)
  • (2014/04)
  • (2014/03)
  • (2014/02)
  • (2014/01)
  • (2013/12)
  • (2013/11)
  • (2013/10)
  • (2013/09)
  • (2013/08)
  • (2013/07)
  • (2013/06)
  • (2013/05)
  • (2013/04)
  • (2013/03)
  • (2013/02)
  • (2013/01)
  • (2012/12)
  • (2012/11)
  • (2012/10)
  • (2012/09)
  • (2012/08)
  • (2012/07)
  • (2012/06)
  • (2012/05)
  • (2012/04)
  • (2012/03)
  • (2012/02)
  • (2012/01)
  • (2011/12)
  • (2011/11)
  • (2011/10)
  • (2011/09)
  • (2011/08)
  • (2011/07)
  • (2011/06)
  • (2011/05)
  • (2011/04)
  • (2011/03)
  • (2011/02)
  • (2011/01)
  • (2010/12)
  • (2010/11)
  • (2010/10)
  • (2010/09)
  • (2010/08)
  • (2010/07)
  • (2010/06)
  • (2010/05)
  • (2010/04)
  • (2010/03)
  • (2010/02)
  • (2010/01)
  • (2009/12)
  • (2009/11)
  • (2009/10)
  • (2009/09)
  • (2009/08)
  • (2009/07)
  • (2009/06)
  • (2009/05)
  • (2009/04)
  • (2009/03)
  • (2009/02)
  • (2009/01)
  • (2008/12)
  • (2008/11)
  • (2008/10)
  • (2008/09)
  • (2008/08)
  • (2008/07)
  • (2008/06)
  • (2008/05)
  • (2008/04)



記事メニュー2

Update Log

取得中です。
人気記事ランキング
  1. Drawing_analog
もっと見る
最近更新されたページ
  • 2686日前

    menu_L
  • 2686日前

    進捗状況(2018/03)
  • 2686日前

    Drawing_digital_13
  • 2686日前

    Drawing_digital_12
  • 2686日前

    トップページ
  • 2892日前

    Drawing_digital_11
  • 2973日前

    Drawing_digital_10
  • 3005日前

    進捗状況(2017/04)
  • 3046日前

    進捗状況(2017/03)
  • 3097日前

    頂き物
もっと見る
人気記事ランキング
  1. Drawing_analog
もっと見る
最近更新されたページ
  • 2686日前

    menu_L
  • 2686日前

    進捗状況(2018/03)
  • 2686日前

    Drawing_digital_13
  • 2686日前

    Drawing_digital_12
  • 2686日前

    トップページ
  • 2892日前

    Drawing_digital_11
  • 2973日前

    Drawing_digital_10
  • 3005日前

    進捗状況(2017/04)
  • 3046日前

    進捗状況(2017/03)
  • 3097日前

    頂き物
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. AviUtl2のWiki
  3. R.E.P.O. 日本語解説Wiki
  4. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  5. シュガードール情報まとめウィキ
  6. ソードランページ @ 非公式wiki
  7. ドラゴンボール Sparking! ZERO 攻略Wiki
  8. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  9. 星飼いの詩@ ウィキ
  10. Dark War Survival攻略
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 検索してはいけない言葉 @ ウィキ
  6. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  7. 発車メロディーwiki
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. オレカバトル アプリ版 @ ウィキ
  10. SDガンダム ジージェネレーションジェネシス 攻略Wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 過去の行動&発言まとめ - 鹿乃つの氏 周辺注意喚起@ウィキ
  2. マイティーストライクフリーダムガンダム - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  3. 魚拓まとめ - 鹿乃つの氏 周辺注意喚起@ウィキ
  4. 参加者一覧 - ストグラ まとめ @ウィキ
  5. 1103環境(遊戯王) - アニヲタWiki(仮)
  6. 前作からの変更点 - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  7. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  8. コレクター・ユイ - アニヲタWiki(仮)
  9. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  10. 画像倉庫 - 鹿乃つの氏 周辺注意喚起@ウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.