シェーダを書いていて毎回、これはいつどういうときに設定されるのか悶々としてたんですが、ドキュメントがあったのでメモ。
(使いそうなものをピックアップしています)
ターゲットプラットフォーム
マクロ | 意味 |
---|---|
SHADER_API_OPENGL | デスクトップ向けOpenGL |
SHADER_API_D3D9 | Direct3D 9 |
SHADER_API_XBOX360 | Xbox 360 |
SHADER_API_PS3 | PlayStation 3 |
SHADER_API_D3D11 | デスクトップ向けDirect3D 11 |
SHADER_API_GLES | OpenGL ES 2.0 (デスクトップまたはモバイル向け)、 SHADER_API_MOBILE の存在により判定 |
SHADER_API_FLASH | Flash Stage3D |
SHADER_API_D3D11_9X | Windows RTターゲット向けのDirect3D 11 |
UnityCG.cgincなどのファイル内で処理の分岐などに使われています。
プラットフォーム差異のヘルパー
マクロ | 意味 |
---|---|
UNITY_PROJ_COORD(a) | 4成分ベクトルを渡すと、投影されたテクスチャ読み込みに適切なテクスチャ座標を戻します。殆どのプラットフォームでは渡された値そのものを戻します。 |
シャドウ マッピング マクロ
マクロ | 意味 |
---|---|
UNITY_DECLARE_SHADOWMAP(tex) | "tex" という名前のシャドウ マップ テクスチャ変数を宣言します。 |
UNITY_SAMPLE_SHADOW(tex,uv) | "tex" という名前のシャドウ マップ テクスチャを特定の "uv" 座標にサンプリングします(XY コンポーネントはテクスチャの場所、Zコンポーネントは相対的なデプス)。 0 - 1 の範囲で シャドウとしてひとつの float 変数を戻します。 |
UNITY_SAMPLE_SHADOW_PROJ(tex,uv) | 上記と同様であるが、プロジェクティブなシャドウマップ読み込みを行います。 "uv" は float4 であり、他の全てのコンポーネント は ルックアップをするために .w で除算します。 |