2014年04月22日

MMEのテスト その3

色々なエフェクトを参考にさせていただき、遅延レンダリングの方法が分かったのでLICを作り直してみました。といってもデータPのCroquisエフェクト[1]を改変させていただいただけです。

遅延レンダリングのやり方として、オフスクリーンに描画して、それをテクスチャとして参照する方法があるようです。

  // 法線マップ
texture CM_NormalMap : OFFSCREENRENDERTARGET <
string Description = "NormalMap";
string Format = "D3DFMT_A32B32G32R32F";
float2 ViewPortRatio = {MapTimes,MapTimes};
float4 ClearColor = {0,0,1,0};
float ClearDepth = 1.0;
bool AntiAlias = false;
int Miplevels = 1;
string DefaultEffect =
"self=hide;"
"*=NormalDraw.fx;"; // オフスクリーンレンダリングに使うfxファイル
>;
// サンプラ
sampler NormalMapSampler = sampler_state {
texture = <CM_NormalMap>;
MinFilter = POINT;
MagFilter = POINT;
AddressU = CLAMP;
AddressV = CLAMP;
};

この方法を使えば、メモリと性能の許す限り法線情報や深度情報などのG-Bufferをテクスチャとして参照することができますので、大体やりたいことはできるようになるかなと思います。

その他の方法として、sharedキーワードでエフェクトファイル間でパラメータ共有ができるようで、Excellent Shadowでもshared texture ...としてテクスチャの共有をしているようでしたので、こういうやり方でも実現できるような気はします。

また、肌のところだけ処理を外すといった処理は、techniqueのところでSubsetを指定してあげれば、指定した材質番号だけにエフェクトが適用されるようになるようです。

後は、擬似乱数がかなり適当なのでもうちょっとまともなものにしたいのですが、メルセンヌ・ツイスタやXorShiftなどをMMEで作っている人はいらっしゃらないんですかね。3次元テクスチャを使う方が楽で速いのでいいんでしょうけれど。

実行結果

あぴミクさんとぽっぴっぽーモーション[2]を使用させていただいております。



シフト演算の問題とかDirectX11であれば対応できると思うのですが、MMEのDirectX11版は公開されてないのでしょうか。MikuMikuFlex[3]とか使えばいいんですかね。

fxファイル等(素材画像は入れていません)
LIC_v002.zip

[1] http://www.nicovideo.jp/watch/sm14263863
[2] http://www.nicovideo.jp/watch/sm5838726
[3] http://www.nicovideo.jp/watch/sm22078209


posted by シンドラー at 19:02| Comment(0) | TrackBack(0) | MMD | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。