2012年7月26日木曜日

MME もとい HLSL と CgFX の違い

久しぶりの記事です。MMDAI2 の Cg (CgFX)を使った MME 互換実装を行う過程でシェーダの書き換えを行った関係で HLSL と CgFX の微妙な違いが少し見えてきたのでそのためのメモ。この記事は都度更新されるかもしれません。

[11/23 更新]

前提情報

  • Cg は 3.1 を使用
  • プロファイルは glslv/glslf を使用。arbvp/arbfp は使わない

1. shared キーワードはつかえない

キーワードとしては存在するが、利用できない。

2. [unroll] キーワードはつかえない

for 構文を展開するためのキーワード。HLSL 特有で CgFX では利用不可。マクロで分岐するしかなさそう。

3. tex2Dlod が glslf プロファイルでつかえない

cgc で glslf プロファイルでコンパイルすると texture2DLod として出力するものの、利用は出来ない。そもそも OpenGL では GLSL 1.2 以前では頂点シェーダでしか使えない。公式のドキュメント では fp40 から。

4. (cond ? A : (cond2 ? B : C)) がつかえない

HLSL では通るようだが CgFX ではコンパイルエラーになる。(cond ? A : B) の形式でしかサポートされず、複雑な条件分岐が出来ない。バグ?

5. StateBlock 構文が利用できない

毎回冗長になりがちな state 設定を省略化してくれる stateblock 構文は HLSL 特有のようで、Cg では利用出来ない。

6.  BlendFunc を使う

SrcBlend/DstBlend だと何故か定数でエラーが出てしまう。代わりに BlendFunc を使う。

MME 互換付き MMDAI2 の Bleeding Edge としてのリリースは今週末になるかと思います。ただ、シェーダは書き換えが必須で↑にあるように微妙に違うので自分が開発作業と同時にシェーダの移植作業をしています。

CgFX をデバッグするには?

MacOSX では Xcode の拡張として提供されている Graphics Tools for Xcode に含まれる OpenGL Profiler を使う。

Linux では gDEBugger を使うのだが、少なくとも MMDAI2 の専用レンダリングテストプログラムでは Qt レイヤーでクラッシュしてしまうのでまだ試すことが出来ていない。

2012年3月20日火曜日

MMDAI2 0.20.0 のリリース ※注意あり

MMDAI2 0.20.0 をリリースしました。
MMDAI Project Portal のダウンロードページ からダウンロードできます。

※今後のリリース情報は MMDAI Project Portal のお知らせで行います。当ブログでのリリース情報は 0.20.0 を最後に出しません。ご注意ください。

2012年3月10日土曜日

MMDAI2 0.19.0 のリリース

MMDAI 0.19.0 (=α19) をリリースしました。変更点は一点のみです。
  • MacOSX 32bit 上でモデルを読み込むと落ちる不具合の修正
MMDAI2 のダウンロード

2012年3月4日日曜日

2012年2月19日日曜日

MMDAI2 α17 版のリリース

MMDAI2 のα17版をリリースしました。いくつかの機能追加及び変更と不具合修正を行いました。

2012年2月5日日曜日

MMDAI2 α16 版のリリース

MMDAI2 のα16版をリリースしました。動画出力機能の実装変更と不具合修正を行いました(※大きめの仕様変更あり)。

2012年1月25日水曜日

MMDAI2 α15 版のリリース

MMDAI2 のα15版をリリースしました。UI変更を含む機能追加と不具合修正を行いました。

2012年1月16日月曜日

2012年1月10日火曜日

MMDAI2 α13 版のリリース

MMDAI2 のα13版をリリースしました(MacOSX 版のみ。Windows 版は一時的に停止します)。ジェスチャー操作の追加とバグ修正を行いました。また、ダウンロード先を今回から変更しました。

2012年1月5日木曜日

MMDAI2 α12 版のリリース

MMDAI2 のα12版をリリースしました。α11版で MacOSX 版が起動しない致命的な不具合がありました。申し訳ございません。α12版ではα11版に先ほどの不具合修正及び機能修正を加えた版です。

2012年1月4日水曜日

MMDAI2 α11 版のリリース

※ (1/5追記) α11に致命的な不具合が発見されたため、α12をリリースしました

あけましておめでとうございます。MMDAI2 のα11 版をリリースしました。プロジェクトファイルの保存に対応を主に UI 関連の改善を行いました。