MikuMikuEffectエラーメモ


数ヶ月前に、MikuMikuEffectなるものを発見しました。調度そのとき仕事でシェーダを触らせてもらえてたから、これはいいと思ってダウンロード。しかしサンプルすらエラーが出る始末でしばらく放置してたのですが、なんかいきなり動くようになりました。忘れないようにメモ。


エフェクトファイルの読み込みに失敗しました:
Error:some techniques cannot run on this hawdware: MainTec

みたいなエラーが表示されるのですが、いかんせん初心者だったので何がどうダメなのか全くわからず。ぐぐって見ても、MikuMikuEffect落としなおしてみなよくらいしか記述がなく困っていました。いろいろコメントアウトしてすこしづつ復活させてもほとんどがだめで、諦めてました。ハードウェアって事でグラボ変えてみたりとかもしたけど全く変わらず。んで、わかった結果が下。


グラボちゃんと詰んでるのに描画がエラーになる場合は、テクニック指定時にシェーダのバージョンを3.0以降にしてみる。

// 変更前 オブジェクト描画用テクニック
technique MainTec < string MMDPass = "object"; > {
    pass DrawObject
    {
        VertexShader = compile vs_2_0 Basic_VS();
        PixelShader  = compile ps_2_0 Basic_PS();
    }
}

//変更後 オブジェクト描画用テクニック
technique MainTec < string MMDPass = "object"; > {
    pass DrawObject
    {
        VertexShader = compile vs_3_0 Basic_VS();
        PixelShader  = compile ps_3_0 Basic_PS();
    }
}

仕事でシェーダを何個か書いてたので、本日再挑戦してみた。#if 0 で削って、段々戻していったら、動かないものの共通点はTEXCOORD[n]のセマンティクスを使っている部分だということまでわかった。関係ねえかーとか思いつつシェーダのバージョン指定を2.0から3.0にしたら直った・・・。2.0はTEXCOORDセマンティクスは複数個使えないの・・・?そんなことはなかったと思うのだが・・・。何故動くかまでは現在の知識では見当もつかないのです…。

あとはポストエフェクト系はアクセサリとして読むこと!これは超個人的な備忘録ですw


ようやくシェーダかけるところまで行ったので、ガウシアンぼかしのサンプルを改造してラジアルブラー作ってみました。まだちょっと調整が要りますが、最低限の部分は問題なく動きますね。これからいろんなエフェクト作るぞ!!