Metasequoia BBS

| New message | Normal | Tree |
Status
Tag
Keyword
[3932] 描画順の挙動がDirectX9と11で異なる / まじかる☆しげぽん
[Bug report,Ver4.0.3] Response
DirectX9と11でアルファを使用したオブジェクトの描画順の挙動が異なります。
例えば、下記のようにな順番でアルファ抜きしたオブジェクトを下に移動し統合した場合DirectX9では正常にアルファが抜けます。

obj1 < 下地のオブジェクト
obj2 < アルファで抜いてるオブジェクト



obj1+2 < obj2をobj1に統合(DirectX9では描画順に問題ない)


これがDirectX11だと、同じ結果にならずアルファ抜きしてる部分が常に背景が透過した状態になります。
上記の方法を利用して描画順が正しいまま1オブジェクトにするというのをよくやっているので、こDirectX9と同じ挙動にして欲しいです。

対応よろしくお願いいたします。
2013-12-14 00:27
[3933] Re: 描画順の挙動がDirectX9と11で異なる / mqouser
マテリアル順にソートしてから描画しているので透過描画の結果が違います。
透過はマテリアルの並び順を変えることで対応できます。
この方法のほうが描画のパフォーマンスがよいはずなので現状維持を希望します。
2013-12-14 18:21
[3935] Re: Re: 描画順の挙動がDirectX9と11で異なる / まじかる☆しげぽん
必ずしもマテリアルが分かれてるとは限りませんの対応できません。
PCスペックも高くなっていますし、体感できるレベルで違いが出ないならDirectX9と表示の挙動は合わせて頂きたいです。

もしくは、DirectX11の設定としてどちらの処理にするか指定出来るようにしてほしいです。
2013-12-15 01:41
[3936] Re: Re: Re: 描画順の挙動がDirectX9と11で異なる / Administrator
チェス盤のように交互にマテリアルが入れ替わる状態だと体感できるレベルで著しく描画速度が落ちることが確認されております。
DirectX9は今更感があるのでマテリアル単位での描画ではなく内部の面インデックスの順序のままですが、
DirectX11ではワーストケースでも高いパフォーマンスを保てるようマテリアル単位で描画を行うようにしました。

面インデックスの順にしたところで半透明描画の不正確さは改善できないので中途半端な変更を行うつもりはありません。
複雑化するシェーダをどう管理するかが問題なので未着手ではありますが、Order independent transparencyを導入して根本解決する必要があると考えております。
2013-12-15 18:33
[3937] Re: Re: Re: Re: 描画順の挙動がDirectX9と11で異なる / まじかる☆しげぽん
そうですね、Order independent transparencyの実装が一番望ましいと思います。
ゲーム等の実機レベルでは、もちろんパフォーマンスを上げるのでそういったマテリアルによる描画優先順の処理を行ったりしますが、編集ソフトでそれを行ってしまうとオブジェクトパネルでも描画優先順がありさらに、材質パネルの順番で描画優先順が左右されてしまうとかなりややこしくなります。

Ver3の頃からこの描画順は初心者にもわかりづらい部分だったと思いますので、Order independent transparency実装よろしくお願い致します。

2013-12-15 20:22