半透明処理

前にディザ透明処理をやって

これがFF13の半透明処理じゃぁ!

でもVPOSセマンティクスが無いCGFXでどうやってやっているんかいな!?

ってな事を書きましたが

(ディザ処理については)

↑のNo24とかね

 

どうやらFF13はAlphaToCoverageっぽいですね

まぁディザ処理をやるので、結果は変わりませんがね^^

MSAAを結構使えるようになってきた現在では

AlphaToCoverageがアルファ抜きの主流になってるのかも知れませんね^^

面倒な半透明ソートもいらんしね

 

AlphaBlendだと描画順のソートが必要になります

041.jpg

頭頂部分なんて酷いですね

で、ソートするには処理に手間がかかるってな事で

Alphatestがメインストリームに

042.jpg

AlphaTestは0か1かの1Bit抜きなので

半透明も出来無いので汚いですね^^;

で、今回のAlphaToCoverage

サブピクセルごとに深度比較が行われるので

サンプル数がしっかりしていれば、ソートもいらないってな優秀な子

 

043.jpg

 

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]だし・・・

しっかりして頂戴な!

 

コメント

タイトルとURLをコピーしました