前にディザ透明処理をやって
これがFF13の半透明処理じゃぁ!
でもVPOSセマンティクスが無いCGFXでどうやってやっているんかいな!?
ってな事を書きましたが
↑のNo24とかね
どうやらFF13はAlphaToCoverageっぽいですね
まぁディザ処理をやるので、結果は変わりませんがね^^
MSAAを結構使えるようになってきた現在では
AlphaToCoverageがアルファ抜きの主流になってるのかも知れませんね^^
面倒な半透明ソートもいらんしね
AlphaBlendだと描画順のソートが必要になります
頭頂部分なんて酷いですね
で、ソートするには処理に手間がかかるってな事で
Alphatestがメインストリームに
AlphaTestは0か1かの1Bit抜きなので
半透明も出来無いので汚いですね^^;
で、今回のAlphaToCoverage
サブピクセルごとに深度比較が行われるので
サンプル数がしっかりしていれば、ソートもいらないってな優秀な子
MSAA×2でこの程度なので
4や16になるとかなり綺麗になるんじゃないでしょうか?しかもソートいらず・・・
KILLZONEとかFF13とかで使われているみたいですが
MSAAが得意な360では僕の持っているゲーム内で
AlphaToCoverageっぽいなぁ~って思ったことは無かったり・・・
サンプリング数が大きいからわからないのかなぁ~??
そうそう、前に作ったセルフシャドウ付きのパララックスシェーダー
CGFX用に書きなおしましたがね
XSIの頂点座標の扱いがDirectXともOpenGL違い、ちょいと正確に出てるかわからないため
公開を躊躇してますヨォゥ~
DirectXやOpenGLだと
mul(pos,mWVP);でOKな頂点変換が
mul(mWVP,pos);だったりするんですよね・・・
とう言うことは、mulを結構使うパララックスではどうなんじゃい!ってな感じです
リアルタイムDirectXの方はまともなんですけどね
リアルタイムOpenGLの方はちょいと不思議ちゃんに仕上がっているみたいです
もしかしたら、DirectX吐き出しと同じく
作成時のバグを修正していないだけかも知れませんね
マニュアルではCGFXでもタンジェントをTangent0で扱えるはずなのに
実際にはTEXCOOR[N]だし・・・
しっかりして頂戴な!
コメント