@kouzirou SpriteBatchで使われているソートは安定ソートではないので、評価対象となる深度値が同じ場合、ソート対象の内容(要素数など)によって結果が変わってくるので、それが原因になっているのかもしれませんね。
2011-08-30 15:37:14@nakfiv @mentaro 「BlendState.NonPremultiplied」で描画する時は、画像リソースのコンテンツプロセッサで、「乗算済みアルファ」をfalseにするとかね。割と面倒。
2011-08-30 17:11:43@DARL_Japan @mentaro これの何が嫌かってXNA特有の設定なので依存度が高くなるのですよね。理解していれば大きな問題では無いのですが…
2011-08-30 17:12:54@nakfiv @mentaro 乗算済みアルファはXNA特有機能じゃないですよ。コンポジッションの世界では四半世紀前から使われていてます~ http://t.co/U5CUFTB と、いうより、NonPremultipliedは光を扱う式としては間違っているんですよ
2011-08-30 17:30:18@Higeneko @mentaro その辺は解説を読んで理解はしていますが他のAPIに移す事を考慮した時にやはり考え方が異なるものなのでどちらかと言うと推奨する追加機能の扱いにして欲しかったです。間違いを正しつつ簡単にしようというXNAの思想はわかりますが
2011-08-30 17:35:26@nakfiv @mentaro 例えばどのAPIでしょう?OpenGL ならESを含めて乗算済みアルファのブレンドステートを使えますけど
2011-08-30 17:37:45@Higeneko @mentaro API的には再現できますがデータレベルで無加工では再現できませんよね?
2011-08-30 17:38:35@nakfiv @mentaro データ無加工でもシェーダーサポートしている環境なら1命令で実現可能ですよcolor.rgb *= color.aでできます。
2011-08-30 17:45:19@Higeneko @mentaro 固定レンダリングパイプラインの環境ではテクスチャ読み込み時にデータ加工をするなりツールで処理するなり必要ですよね?個人的にそういう事が必要という事自体あまり歓迎していないというだけです
2011-08-30 17:46:58@Higeneko @nakfiv @DARL_Japan 自分はちょうどbyte配列からテクスチャをSetDataで生成してたので、乗算アルファのことがすっぽり抜けてたんですよね。 今更な話ですけど3.1以前のつもりで使っていたらかなり悩みましたw
2011-08-30 17:47:09どっちにしても開発環境の思想が気に入らないなら使うなというだけなので変更があったらその変更に合わせて使うだけなのでそもそもが割と不毛な議論である感はあるw
2011-08-30 17:48:05@nakfiv @mentaro というか、NonPremultipliedにはなんの利点もないんですよ。バイリニア使うと滲むし、原因を知らないとアーティストさんに色がにじむから滲まないようにデータ修正する余計な労力を掛けたりするだけなんですよ
2011-08-30 17:48:59@Higeneko @nakfiv @DARL_Japan ちなみに作ってるのはツールなのでWin専用。 今回はContentPipelineは通して無いです。
2011-08-30 17:49:24@nakfiv @mentaro いやいや、思想うんぬんじゃなくて、単に今までゲームの世界で間違った式が習慣的に使われていたってだけの話です
2011-08-30 17:50:56@nakfiv @mentaro After Effectとか使っている人達にとっては当たり前のことで、XNA 4.0で乗算済みアルファが標準になって「やっとかよ」みたいな反応でしたし(汗)
2011-08-30 17:54:57@Higeneko @nakfiv 乗算済みアルファは良い機能だと思いますよ。 ただ個人的には BlendState.AlphaBlend の挙動は変えずに新しく用意してもらったほうが誤解は少ないかなと思いました。
2011-08-30 17:58:46@mentaro @nakfiv そこはチーム内でも話し合いになりましたね。やはり決め手となったのは、現行の式が間違いであり、それによって色が滲むという問題に直面した人に対して簡単に説明する手段がないし、気づいた時点でデータやプログラムを修正するのは難しい (続く)
2011-08-30 18:01:47@mentaro @nakfiv それだったら、4.0へ移行した時に、目に見える形で以前と違う結果として直ぐに修正する箇所がわかるようにしようという結論になりました。同様に4.0移行時に出るコンパイルエラーもわざとエラーになるようにAPI設計されています
2011-08-30 18:04:45@mentaro @nakfiv Shawnがブログでも言っている( http://t.co/F3ltJqB )ようにXNA GSE~3.1まではDX9ベースで設計されてきましたが、いずれはDX10/11に対応しなければいけない時が来るし、(続く)
2011-08-30 18:14:40