テクスチャ空間マッピング シェーダは、テクスチャ空間の選択、作成、および再マッピング、基底ベクトルの計算、その他カラーまたはディスプレイスメントを適用する前に必要となる作業を行います。これらの機能の中には select パラメータを使用するものがあり、その値は次のいずれかになります。
0..63 | テクスチャ ベクトルを選択します。この値が定義済みのテクスチャ空間の数字を越えた場合は、既定で -1(空間内の点)になります。 |
−1 | 空間内の 3D ポイントを直接選択し、場合により空間ポイント変換を適用します。 |
−2 | 法線ベクトルを選択し、場合により空間ベクトル変換を適用します。 |
−3 | モーションベクトルを選択し、場合により空間ベクトル変換を適用します。 |
−4 | レイの方向を選択し、場合により空間ベクトル変換を適用します。 |
−5..−9 | サーフェス導関数ベクトルを選択し、場合により空間ベクトル変換を適用します。値は、∂P⁄∂U、 ∂P⁄∂V、 ∂²P⁄∂U²、 ∂²P⁄∂V²、 ∂²P⁄(∂U∂V)です。オブジェクトは導関数を含むように定義する必要があります。 |
−10 | スクリーン左下で(0, 0, 0)である 2D バックグラウンド プレート座標を選択し、スクリーン右上少し外側で(0, 0, 0)を選択します。 selspace はこのモードでは無効です。変換は mib_lookup_background で行われるものと似ています。 |
−11 | 通常はタイプ テクスチャのパラメータを評価する時点でマテリアル シェーダによって入力され、テクスチャ シェーダに使用される状態にあるテクスチャ座標が選択されます。 |
空間変換では、投影の基になっているベクトルをオブジェクト座標、ワールド座標、カメラ座標のいずれかに変換することができます。 selspace は以下のいずれかの値です。
0 | 変換を適用せず、内部空間を使用します。 |
1 | ベクトルをオブジェクト空間に変換します。 |
2 | ベクトルをワールド空間に変換します。 |
3 | ベクトルをカメラ空間に変換します。 |
4 | 現在のスクリーン スペース座標を [0,0 ... 1,1) |
ベクトルの結果に追加の投影が適用されるように project パラメータを設定します。
0 | 投影を無効にします。 |
1 | 可能な場合は UV 投影を選択します。 |
2 | 正射 XY 投影を選択します。 |
3 | 正射 XZ 投影を選択します。 |
4 | 正射 YZ 投影を選択します。 |
5 | 球面投影を選択します。 |
6 | 円柱投影を選択します。正の X では U=0、正の Y では V=0 です。Y は円柱の軸でもあります。 |
7 | ロリポップ投影(テクスチャ ベクトルの正規化後にテクスチャの中心が X=0.5 Z=1 になり、コーナーがパラメータのコーナーになります)を選択します。球では、ロリポップ ラッパーのように、テクスチャの中心は北極に、テクスチャ コーナーは南極になります。 |
3D 空間内の点(XY、XZ、YZ)の正投影、正射でない投影(球形または円筒)から得られたテクスチャ ベクトルを返します。または、テクスチャ ベクトル リストから番号付きのテクスチャ ベクトルを返します。オプションとして、このシェーダはオブジェクト、カメラ、ワールド、および画面空間に基づく計算をおこなえます。
vector "mib_texture_vector" ( integer "select", integer "selspace", integer "vertex", integer "project")
テクスチャ頂点を受け入れ、頂点のスケール、回転、移動、クロップ、結合を行います。操作の順序は、まずトランスフォームを行ってから繰り返し、alt、torus、そして最後に最小/最大のクロップです。結果が戻されます(state→tex に格納され、他のシェーダによって使用されます)。
vector "mib_texture_remap" ( vector "input", transform "transform", vector "repeat", boolean "alt_x", boolean "alt_y", boolean "alt_z", boolean "torus_x", boolean "torus_y", boolean "torus_z", vector "min", vector "max", vector "offset")
角度を 1 つ用いてサーフェスの方向をサーフェスの法線に沿って回転させます。直行ベクトルのペアが直行する法線とともに返され、回転した方向を定義します。これは特に異方性反射に便利です(以下参照)。
struct { vector "u", vector "v" } "mib_texture_rotate" ( vector "input", scalar "angle", scalar "min", scalar "max")
交差ポイントを指定して、投影方法(上記の UV、XY、XZ、YZ、球面、円柱)に基づいてバンプの基底ベクトルのペアを計算します。
struct { vector "u", vector "v" } "mib_bump_basis" ( integer "project", integer "ntex")
複数のポイントにおけるテクスチャを評価することによって U グラディエントおよび V グラディエント(基底ベクトルと乗算され、元の法線と結合され、正規化されたうえで書き込まれる)を計算し、法線ベクトルに対してテクスチャを適用します。法線も戻されます。state→tex は未定義のままにしておきます。
vector "mib_bump_map" ( vector "u", vector "v", vector "coord", vector "step", scalar "factor", boolean "torus_u", boolean "torus_v", boolean "alpha", color texture "tex", boolean "clamp")
以下のシェーダはパラメータを含めてこれまでのものと同じですが、ベクトルの代わりにカラーを戻します。このカラーは変更されません。このため、実際のマテリアル シェーダの先頭にこのシェーダを追加することによって、マテリアル シェーダ リスト内でこのシェーダを使用することができます。この設定では、このシェーダは最初に呼び出され、マテリアル シェーダが法線ベクトルを使用してイルミネーションを計算する前の状態で法線ベクトルを修正します。同時に、計算された結果となるカラーには一切影響しません。
vector "mib_passthrough_bump_map" ( vector "u", vector "v", vector "coord", vector "step", scalar "factor", boolean "torus_u", boolean "torus_v", boolean "alpha", color texture "tex", boolean "clamp")
パラメータの説明については、上記を参照してください。
これはバンプ マップ シェーダのもう 1 つのアプローチであり、state→normal を変更してから color 入力に接続されているすべてのシェーディング グラフを評価するという点が先ほどのものとは異なります。このようにしてかき乱された法線は、接続されたシェーダまたはツリーには可視になります。Phong などのイルミネーション シェーダは、color パラメータに接続するのが普通です。
バンプ マップは、テクスチャ空間 0 を使用して、テクスチャから 3 つのテクスチャ サンプルを見ます。戻された 3 つの値の相違は法線のベンドを表します。法線は bump_vectors が存在する場合はその方向にベンドされ、それ以外の場合は導関数の方向にベンドされます。変更された法線は state に保存され、続いて color の評価が呼び出されます。color にアタッチされているすべてのシェーダではこの変更された法線が使用されます。法線は最後に元の値に戻されます。
color "mib_bump_map2" ( scalar "factor", scalar "scale", color texture "tex", color "color")
Copyright © 1986, 2015 NVIDIA ARC GmbH. All rights reserved.