忍者ブログ
カレンダー
03 2024/04 05
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
プロフィール
HN:
[-_-;] (みかん)
性別:
男性
趣味:
プログラミング、XOPS
自己紹介:
中部地方在住です。
最新コメント
[11/30 NONAME]
[11/22 NONAME]
[09/24 NONAME]
[06/10 NONAME]
[01/29 NONAME]
XOPS関連サイト「みかん箱」の運営や、OpenXOPSの開発などを行う[-_-;](みかん)のブログ。近状報告や独り言などを書きます。
Prev Month123456789101112131415161718192021222324252627282930Next Month
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

category :
PR
OpenXOPSの透過テクスチャ処理の改良
ブログを更新する気が起きませんでした (殴

11月15日に投稿したOpenXOPS動画の2本目が、1週間しないうちに1000再生に
達しました! 視聴して頂き、ありがとうございます。
予想以上の反響で驚くとともに、大変嬉しく思います。
動画内で頂いたコメントも、一通り読ませてもらいました。 多くのコメントを頂いた
おかげで、個々に返事を書けないのが嬉しい悲鳴です。


さて、肝心のOpenXOPS開発の方は、ちょくちょく細かいところに手を入れています。

最近やったところで一番分かりやすいのはグラフィックですかね。
透過テクスチャの処理を改良したりしていました。


(クリックで拡大) マップは、マシンギョさんの「BASE」をお借りしました。

本家XOPSと同様に、透過テクスチャを利用したブロック面の向こう側(裏)にいる人
を正しく表示できるようにしました。
また描画順序の変更に伴い、透過テクスチャと非透過テクスチャの組み合わせも、
正しく出るようになりました。
 『やった! これはうまくできたぞー』 と喜んでいたのですが・・・。


(クリックで拡大) マップは同様。

 『うわぁぁぁ~~』
透過テクスチャ同時の組み合わせはダメで、ブロックが交差しようものには、向こう側
が表示されません。 手榴弾の爆風でも同じ不具合が出ます。

毎度のように、本家XOPSは綺麗に透過テクスチャが処理されていますね。
単純に後ろ・奥から描画処理を実施していけばいい っと理屈は分かるのですが。
テクスチャ・ポリゴン単位で前後関係を求めて処理するのは簡単ですが、2枚目の
画像のようにポリゴンが交差してしまうと、対応しようがありません。
ピクセル単位でソートすれば万事解決ですが、ピクセルシェーダーを使わずに固定
パイプラインで処理できるのかどうか。
まさか、本家XOPSは 097ft からシェーダーを使っているのか?

さて、困ったぞ。どうするかなぁ。


開発とは直接関係ないですが、OpenXOPSの公式サイトをリニューアルしようかと
思い、ページ構成とかデザインとか色々考えています。


<2014/11/25 追記>
表示デモに使わせて頂いたマシンギョさんの「BASE」は、addonとして以下のサイト
で公開されています。
 マシンギョの航跡|Machinegyo's Track
 http://machinegyo.web.fc2.com/
category : ソフト・ツール開発 comment [1]
COMMENTS
【本文以外は任意項目です】
SUBJECT(タイトル)
NAME(お名前)
MAIL(メールアドレス)
HOME(サイトURL)
COMMENT(本文)
PASS(削除パスワード)
Secret?(管理者へのみ表示)

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

無題 2014.11.29 Sat 20:24 EDIT
もう解決済みかもしれませんが柵のテクスチャの透明なところと不透明なところの境界部分を見てください。
アルファ値が滲んでいる部分は本家の方でも描画順依存になっています。
完全透明なピクセルは描画自体スキップということで本家と同等の見た目を実現できるのではないでしょうか。
from ななし
コメントを頂いた時点では解決していませんでしたが、ご指摘を元に確認し試してみた所、無事に描画されました。ありがとうございます。

別のテクスチャを用いて確認してみると、確かに、本家XOPSは完全透明なピクセルだけ描画されていないように見えます。
それに気が付かされたときも、ピクセルシェーダーを使わずに固定パイプラインのみで実現できるものなのかと、いささか疑問でした。
ただ、色々調べてみるとDirectX9にも標準で「アルファテスト」と呼ばれる機能があり、その機能を用いることで、完全透明なピクセルの描画をスキップすることができました。

本当にありがとうございました。お礼申し上げます。
from MASTER 2014.11.30 Sun 19:03

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

TOP