Unity には、シェーダーをより簡略に容易に書くためにデザインされた多くのビルトインユーティリティー関数があります。
Unity が提供するシェーダーの include ファイルに関する概要については、内蔵のシェーダー include ファイル を参照してください。
関数 | 説明 |
---|---|
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 と同等で、その場所で使用されます。 |
関数 | 説明 |
---|---|
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) |
低精度のレンダーターゲットのストレージのために (01) の範囲の float を RGBA にエンコードします。 |
float DecodeFloatRGBA (float4 enc) |
RGBA を float にデコードします。 |
float2 EncodeFloatRG (float v) |
(01) の範囲の float を float2 にエンコードします。 |
float DecodeFloatRG (float2 enc) |
以前にエンコードされた RG float をデコードします。 |
float2 EncodeViewNormalStereo (float3 n) |
ビュー空間法線を (0..1) の範囲の 2 つの数字にエンコードします。 |
float3 DecodeViewNormalStereo (float4 enc4) |
ビュー空間法線を enc4.xy からデコードします。 |
これらの関数はフォワードレンダリングを使用する場合にのみ有用です (ForwardBase か ForwardAdd パスタイプ)。
関数 | 説明 |
---|---|
float3 WorldSpaceLightDir (float4 v) |
オブジェクト空間の頂点位置を指定して、ライトへのワールド空間の方向 (正規化なし)を計算します。 |
float3 ObjSpaceLightDir (float4 v) |
オブジェクト空間の頂点位置を指定して、ライトへのオブジェクト空間の方向 (正規化なし)を計算します。 |
float3 Shade4PointLights (...) |
ベクターに密に格納されたライトデータをもつ 4 点ライトからイルミネーションを計算します。頂点ごとのライティングを計算するためにフォワードレンダリングによって使用されます。 |
以下は、スクリーンスペーステクスチャをサンプリングするための座標を計算するためのヘルパー関数です。関数は、テクスチャをサンプルする最終的な座標の値を持つ float4
を返します。座標は透視分割によって計算されます (例えば xy/w
)。
関数はまた、レンダーテクスチャ座標における プラットフォームの違い にも対応します。
関数 | 説明 |
---|---|
float4 ComputeScreenPos (float4 clipPos) |
スクリーンスペースでマッピングをしたテクスチャサンプルのテクスチャ座標を計算します。入力はクリップスペース位置。 |
float4 ComputeGrabScreenPos (float4 clipPos) |
GrabPass テクスチャをサンプルするためのテクスチャ座標を計算します。入力はクリップスペース位置。 |
これらの関数は頂点ごとのライティングシェーダーを使用する場合にのみ有用です (Vertex パスタイプ)。
関数 | 説明 |
---|---|
float3 ShadeVertexLights (float4 vertex, float3 normal) |
オブジェクト空間の位置と法線を指定して、4 つの頂点ごとのライトとアンビエントからイルミネーションを計算します。 |