Normal From Texture ノード
説明
入力 Texture で定義されるハイトマップを法線マップに変換します。UV 値は入力 UV、サンプラー状態は入力 Sampler で定義できます。これらのポートに何も接続されていない場合は、入力からデフォルト値が使用されます。詳細は ポートバインディング を参照してください。
作成された法線マップの強度は入力 Offset と入力 Strength で定義できます。Offset は法線のディテールの最大距離を定義し、Strength は結果の乗数として機能します。
ポート
| Name | Direction | タイプ | バインディング | 説明 |
|---|---|---|---|---|
| Texture | 入力 | Texture | なし | ハイトマップ |
| UV | 入力 | Vector 2 | UV | テクスチャー座標 |
| Sampler | 入力 | Sampler State | なし | Texture のサンプラー |
| Offset | 入力 | Vector 1 | なし | サンプルを補正する量 |
| Strength | 入力 | Vector 1 | なし | 強度の乗数 |
| Out | 出力 | Vector 3 | なし | 出力値 |
生成されるコードの例
以下のサンプルコードは、このノードの出力の一例を示したものです。
void Unity_NormalFromTexture_float(Texture texture, SamplerState Sampler, float2 UV, float Offset, float Strength, out float3 Out)
{
Offset = pow(Offset, 3) * 0.1;
float2 offsetU = float2(UV.x + Offset, UV.y);
float2 offsetV = float2(UV.x, UV.y + Offset);
float normalSample = Texture.Sample(Sampler, UV);
float uSample = Texture.Sample(Sampler, offsetU);
float vSample = Texture.Sample(Sampler, offsetV);
float3 va = float3(1, 0, (uSample - normalSample) * Strength);
float3 vb = float3(0, 1, (vSample - normalSample) * Strength);
Out = normalize(cross(va, vb));
}