[Unity][Shader] シェーダーのビルドターゲット簡易まとめ


UnityでのShader実行環境環境について

Shader の簡単な実行環境まとめ

結論的には、モバイルでも全部動かすなら、#pragma target 2.0で動くようにする。
2.0が殆どの機種依存を考慮した最低限の環境と考えるのがよさそうではある。

コンパイルターゲット#pragma target

  • 2.0 が DX9シェーダーモデル2.0
  • 2.5 が ShaderLab のデフォルト値
  • 3.0 が DX9シェーダーモデル3.0
  • 3.5 から OpenGL ES 3.0 (ジオメトリシェーダーは含まない)
  • 4.0 から DX11 + ジオメトリシェーダー
  • 4.6 基本的には、これが最高レベル。 Mac にサポートされる OpenGL レベル。セッテレーション対応。

ジオメトリシェーダー

  • #pragma geometryで自動的に target 4.0 になる。
  • Metalではサポートしない。実装に否定的らしいので、当面は将来的にも微妙かもしれない。

セッテレーション

  • #pragma hullで 自動的にtarget 4.6

GPU インスタタンシング

  • Windows DX11 以上
  • Metal はサポートしている為、Mac、Iphoneは対応できる
  • その他、Vulkan、PlayStation 4、Xbox One、WebGL などに対応

参考資料

https://docs.unity3d.com/ja/2018.2/Manual/SL-ShaderCompileTargets.html
など