忍者ブログ
カレンダー
11 2024/12 01
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
プロフィール
HN:
[-_-;] (みかん)
性別:
男性
趣味:
プログラミング、XOPS
自己紹介:
中部地方在住です。
最新コメント
[11/30 NONAME]
[11/22 NONAME]
[09/24 NONAME]
[06/10 NONAME]
[01/29 NONAME]
XOPS関連サイト「みかん箱」の運営や、OpenXOPSの開発などを行う[-_-;](みかん)のブログ。近状報告や独り言などを書きます。
Prev Month12345678910111213141516171819202122232425262728293031Next Month
OpenXOPSへのシェーダー実装と当たり判定改良
タイトルの通りですが、
OpenXOPS(本流)に対して、DirectX 9.0cのシェーダーを実装し、
人とマップの当たり判定を作り直したコードをコミットしました。


本家XOPSレベルであればシェーダーなんて必要なく、DirectXの
固定パイプラインで十分であり、OpenXOPSでも2014年の立ち上げ
当初から固定パイプラインを使い続けていました。
ただ、DirectXやOpenGLの最新バージョンでは固定パイプラインから
シェーダーに移り変わっており、1月末よりMicrosoft公式による
DirectX SDKの公開が終了したこともあり、
OpenXOPSもシェーダーで動作するコードも仮実装することに
しました。
相変わらずDirectX 9.0cですけれども。
 DirectX End-User RuntimesとDirectX SDK公開終了
 (2021.02.12)

DirectX9.0cのシェーダー自体は、今回新規に作ったものではなく、
2018年6月頃に作ったまま ぬか漬けにしていたものを掘り起こして
使っています。
2020年8月に影を付けるサンプルを作った際のベースになったもの
でもあります。
当時から一部コードは修正していますが。
 OpenXOPSにシェーダーで影を付ける(2020.08.16)

現時点で、2020年8月にやっていた影を付けるコードをコミット
する予定はないですが、今回のシェーダーのコードは色々応用が
効くはずです。
あと、DirectX 9.0cから次期バージョンへの移植をする上でも、
ベースにすることができると思います。
OpenXOPS標準では、今まで通り固定パイプラインでコンパイル
されますが、ソースコード内の定数を変更することでシェーダー
のコードが有効になります。


人とマップの当たり判定については、ここ1ヶ月ぐらいやってた
作業内容のコミットです。

前の記事でも触れた通り、「第n回」の改良着手でしたが、
今までの完全オリジナル計算による実装を諦め、本家XOPSの
アルゴリズムを実装するアプローチを取りました。

今までの人とマップの当たり判定のコードは、ほとんど廃棄し
ゼロから組み直しています。
その組み直したコードも さらに一度作り直している上に、実際に
本家XOPSを動かし挙動を確認しながら、複数種類のアルゴリズム
を試しては改良を重ね、コミット直前まで微調整していました。
いやーメチャクチャ大変だった・・。本当に1ヶ月近く掛かって
しまいました。。

自分で言うのもアレですが、過去最高の完成度になったと自負
しています。
まだまだ調整が甘く、バグがゼロではない上、調整や修正が必要
な部分もありますが、全体的には凄く良い感じです。

AIもそうですが、やはり独自アルゴリズムではなく、本家の計算
を参考にするには有効ですね。
AIや当たり判定は、計算方法や数字のちょっとした差異で、全然
違う挙動になり標準ミッションやaddonが崩壊するので、本家
と同じ計算・値を用いるのは非常に大切です。

AIの時と同様、本家XOPSの解析にあたり 今回も黒猫氏に全面
協力頂きました。本当にありがとうございました。

ソースコードはOpenXOPSの本流にコミットしたので、その
該当部のコードを見れば1から10まで全部分かるのですが、
もしかしたら人とマップの当たり判定について、いつか詳細を
解説するかもしれません。
OpenXOPS技術解説書」を更新しても良いですね・・ってか
更新しないとなぁ(汗


っというわけで、今回はシェーダーと当たり判定を改良した回
でした。さて次は何をしましょうかね。夢いっぱいOpenXOPS。
今度こそオンラインかな(^^;
category : ソフト・ツール開発 comment [0]
PR
COMMENTS
【本文以外は任意項目です】
SUBJECT(タイトル)
NAME(お名前)
MAIL(メールアドレス)
HOME(サイトURL)
COMMENT(本文)
PASS(削除パスワード)
Secret?(管理者へのみ表示)

※スパム防止のため「Hello!」「website」「ブランド」「みかんの戦闘ブログ」
「http」などの一部キーワードを禁止しています。ご了承ください。

※過去のブログ記事は 原則として編集・修正していません。
 各記事の内容は投稿時のものであり、現在では異なる場合があります。
 最新の情報は、関係する内容について書かれた 最新の記事をご覧ください。

TOP