vector computenormal(vector P, ...)
シェーディングコンテキストでは、Pの微分の外積を使ってP位置における法線を計算します。
vector computenormal(vector P, vector N, vector Ng, ...)
シェーディングコンテキストでは、Pの微分の外積を使ってP位置における法線を計算します。 Nは本来のサーフェス法線、Ngはジオメトリ法線です。 このバージョンは、計算された法線を“調整”するので、補間された法線は相対的に正しくなります。
void computenormal(int i)
(廃止) SOPコンテキストでは、P
またはN
が変わった時に、法線を再計算するかどうかのヒントを設定します(0=再計算しない, 1=自動, 2=常に再計算する)。
微分オプション ¶
微分を計算する関数は、追加の引数を受け取ることで、微分計算の調整をすることができます。
"extrapolate
",
int
=0
微分がパッチ境界上で“滑らか”になります。ほとんどの場合、“extrapolate(外挿法)”をオンにすると、そのようになります。 微分計算はC2サーフェスに対して正確であるべきです。しかし、VEX変数が高い頻度で変化する時(例えば、P変数に高い頻度の変更を引き起こす高周波ディスプレイスメントマップ)、 微分計算の外挿法がパッチ境界間で誇張された不連続性が生じる場合があります。
"smooth
",
int
=1
パッチ上の微分の大きさを不均一に調整します。これは通常ではディスプレイスメント/テクスチャのシェーダでパッチの不連続性を減らします。 しかし、時々この機能をオフにしたい場合があります。
N = computenormal(P, "extrapolate", 1, "smooth", 0);
normals | |
shading |
|