はかせのラボ

私の頭の中を書いていく雑記ブログです

DirectX 透過処理が出来たっぽい

あいさつ

どうも、はかせです。
今回は前回まで悪戦苦闘していた透過処理の続きです。

結論から言うと出来てたっぽい?

前回までで半透明には出来ても輪郭まわりが
黒くにじんだようになっていました。
f:id:hakase0274:20190122211704p:plain

今日も今日とてこの黒にじみを解決しようと
設定を変えたりパイプライン周りの情報を集めたりしていました。

ただどこのサイトを見ても私がやっていたことと違いはありませんでした。
完全な手詰まりになっていました。
なので黒くにじむのはあきらめてエフェクト作って次進めようとして
とりあえず爆破の画像を探してつけてみました。
すると予想外のことが起こりました。

なんか求めてたものになってる・・・!?

正直原因は今だ理解できておりません。
依然レーザーは黒くにじみますし
半透明色にしたゲージやオプションユニットは色が暗くなります。

ただこの爆破画像は望んだ形になっていました。
なので敵が死んだときに表示してみました。
youtu.be

爆破の画像や回り方とかが未調整だから安っぽく見えるけど
フェードしてエフェクトが消えた!
 ワーイ♪♪\(^ω^\)( /^ω^)/♪♪ワーイ 

ちなみにレーザーとかが黒くにじんでいないのは透過処理を外したからです。
コード自体は前回までのと変わっていないので省略します。

あとがき

今回は透過処理出来てないと思ってたけど実は出来てたでした。
おそらく爆破画像と背景が補間ブレンディングだけで
キレイに見える配色だったからとか
そんな理由でうまく見えているんだと思います。
これから色々画像を差し替えたりして試してみたいと思います。

ただ調べてわかったのがDirectX11には乗算済みアルファブレンディングを行う
という設定や命令はなさそうです。
自前でどうにかレンダーターゲットのカラー情報を取得して
シェーダーを書くしか完全な解決方法はなさそうです。

それでは今回はこの辺でノシ

今回作ったものはgithubに上げました。
github.com