Edited at

Unity5.3.0にしてシェーダーが機能しない場合の対処方法

More than 3 years have passed since last update.


概要

Unity5.3.0.f4にプロジェクトを移行してから、シェーダーがうまく動作しなくなりました。

(OSXでのUnity Editor上でのみ)

具体的には dot関数が0ベクトルしか返さず、他にも色々と不具合が出ておりました。


原因

これを原因といってよいかわかりませんが、Unity5.3からプラットフォームごとに選択できるグラフィックAPIがデフォルトでOpenGLCoreになってるためでした。

OpenGLCoreに関しては、詳細がよくわからないこともあり、とりあえず以前の状態に戻すために設定を変更することで対応します。


手順


  1. メニューから[Edit]-[Project Settings]-[Player]を選択

  2. [Other Setting]から[Auto Graphics API for Mac]のチェックボックスを外す

  3. OpenGLCoreが最上位に来てるので、OpenGL2を最上位に変更してApplyする。

  4. 以上


コメント

本当はAdvent Calendarに投稿しようと思ってたんですが、よくわかっていないところが多く、

(例えばなんでOpenGLCoreでは動作しないのか、その理由など)

辞退しました。

とはいえ、困ってる人も多いと思うのでメモ代わりに記事にしました。

(CRI Manaを使ってる人もこれで直ったりします)