Version: 2023.1
言語: 日本語
ビルトインのマクロ
ビルトインのシェーダー変数

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

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) ビュー空間法線を (01) の範囲の 2 つの数字にエンコードします。
float3 DecodeViewNormalStereo (float4 enc4) ビュー空間法線を enc4.xy からデコードします。

UnityCG.cginc のフォワードレンダリングのヘルパー関数

これらの関数はフォワードレンダリングを使用する場合にのみ有用です (ForwardBase か ForwardAdd パスタイプ)。

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

UnityCG.cginc のスクリーン空間のヘルパー関数

以下は、スクリーンスペーステクスチャをサンプリングするための座標を計算するためのヘルパー関数です。関数は、テクスチャをサンプルする最終的な座標の値を持つ float4 を返します。座標は透視分割によって計算されます (例えば xy/w)。

関数はまた、レンダーテクスチャ座標における プラットフォームの違い にも対応します。

機能 説明
float4 ComputeScreenPos (float4 clipPos) スクリーンスペースでマッピングをしたテクスチャサンプルのテクスチャ座標を計算します。入力はクリップスペース位置。
float4 ComputeGrabScreenPos (float4 clipPos) GrabPass テクスチャをサンプルするためのテクスチャ座標を計算します。入力はクリップスペース位置。

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

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

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