定義済みシェーダープリプロセッサーマクロ
ビルトインのシェーダー変数

ビルトインシェーダーヘルパー機能

Unity には、シェーダーをより簡略に容易に書くためにデザインされた多くのビルトインユーティリティー関数があります。

UnityCG.cginc で宣言された関数

Unity が提供するシェーダーの include ファイルに関する概要については、内蔵のシェーダー include ファイル を参照してください。

UnityCG.cginc の頂点変換関数

関数 説明
float4 UnityObjectToClipPos(float3 pos) 同次座標において、オブジェクト空間からカメラのクリップ空間へ点を変換します。これは、mul(UNITY_MATRIX_MVP, float4(pos, 1.0)) と同等で、その場所で使用されます。
float3 UnityObjectToViewPos(float3 pos) 点をオブジェクト空間からビュー空間へ変換します。これは、mul(UNITY_MATRIX_MV, float4(pos, 1.0)).xyz と同等で、その場所で使用されます。

UnityCG.cginc のジェネリックのヘルパー関数

関数 説明
float3 WorldSpaceViewDir (float4 v) 指定されたオブジェクト空間の頂点位置からカメラへのワールド空間方向 (正規化なし) を返します。
float3 ObjSpaceViewDir (float4 v) 指定されたオブジェクト空間の頂点位置からカメラへのオブジェクト空間方向 (正規化なし) を返します。
float2 ParallaxOffset (half h, half height, half3 viewDir) 視差法線マッピングの UV オフセットを計算します。
fixed Luminance (fixed3 c) 色を輝度 (グレイスケール) に変換します。
fixed3 DecodeLightmap (fixed4 color) 色を Unity のライトマップにデコードします (プラットフォームにより、RGBM か dLDR)。
float4 EncodeFloatRGBA (float v) 低精度のレンダーターゲットのストレージのために (0..1) の範囲の float を RGBA にエンコードします。
float DecodeFloatRGBA (float4 enc) RGBA を float にデコードします。
float2 EncodeFloatRG (float v) (0..1) の範囲の float を float2 にエンコードします。
float DecodeFloatRG (float2 enc) 以前にエンコードされた RG float をデコードします。
float2 EncodeViewNormalStereo (float3 n) ビュー空間法線を (0..1) の範囲の 2 つの数字にエンコードします。
float3 DecodeViewNormalStereo (float4 enc4) ビュー空間法線を enc4.xy からデコードします。

UnityCG.cginc の Forward Rendering ヘルパー関数

これらの関数は Forward rendering を使用する場合にのみ有用です (ForwardBase か ForwardAdd パスタイプ)。

関数 説明
float3 WorldSpaceLightDir (float4 v) オブジェクト空間の頂点位置を指定して、ライトへのワールド空間の方向 (正規化なし)を計算します。
float3 ObjSpaceLightDir (float4 v) オブジェクト空間の頂点位置を指定して、ライトへのオブジェクト空間の方向 (正規化なし)を計算します。
float3 Shade4PointLights (...) ベクターに密に格納されたライトデータをもつ 4 点ライトからイルミネーションを計算します。頂点ごとのライティングを計算するために Forward rendering によって使用されます。

UnityCG.cginc の Vertex-lit ヘルパー関数

これらの関数は頂点ごとのライティングシェーダーを使用する場合にのみ有用です (Vertex パスタイプ)。

関数 説明
float3 ShadeVertexLights (float4 vertex, float3 normal) オブジェクト空間の位置と法線を指定して、4 つの頂点ごとのライトとアンビエントからイルミネーションを計算します。
定義済みシェーダープリプロセッサーマクロ
ビルトインのシェーダー変数