Making Tera

たまに書く不定期ブログ

Unity5のCustomShaderの互換性

昨日の記事に引き続き、まずはPBRの部分を無視してShader機能の互換性について調査。

アップデート時の注意点をまとめてみた。

・ライトの光の強度が2倍になったよ

・サーフェイスシェーダのインタポレーターと命令数の増加でSM2.0だと命令数リミットにより動作しない可能性があるよ→問題が出たらSM3.0にしてみたら?

・ノンユニフォームメッシュはCPUの段階で事前スケールされなくなったことにより NormalやTangentベクトルのNormalizeの必要性がでたよ(サーフェイスシェーダーの場合は生成してくれる)

・フォグの描画タイミングを変更 #pragmaにnofogと表記することで明示的にフォグのサポート状況を管理できるようになったよ

・サーフェイスシェーダーのAlphaチャンネルにデフォルトで1.0が出力されるようになったよ

・パフォーマンス改善のためForward描画中にマテリアルインデックス順に描画していた仕様を変更→ソートは行わないためインデックスに依存した仕様だった場合は注意ね

・見たこともないいくつかの固定関数シェーダーの廃止(使ったら警告がでる)

プログラマブルシェーダーと固定関数シェーダーの併用ができなくなったよ

・シェーダーコンパイラが変更され少し速くなったよ

・変数「unity_Scale」は廃止するから 今後はWorldスペースに変換してスケール行列を適用してね

・Forwardで描写された影のEffectPass(ShadowCollectorパス)の処理は移動したので古いパスは削除して問題ないよ

結構深いことをしていないとクリティカルな問題は生じなそうな変更点ですね。

UnityからGPUに渡す部分をシンプルにしたい思惑が見て取れます。