3.11 Built-in functions
VirtuaLight インタフェースは次の述べる組込関数を提供します。(アルファベット順)
Note:セクション2.1で言われていいるように、vectors、point そしてcolors は内部的に3インデックス長の配列で格納されます。
それは理論的に、各配列の構成要素が0と1の間に含まれる限りは、ベクトル配列を返す各関数は計算用のcolor配列のために使用可能であることを意味します。
それは、理論上、配列のすべてのコンポーネントが0と1の間で含まれている限り色配列を計算するためにベクトル配列を返すすべての機能を使用することができることを意味します。
float acos (float a)
0からPIの範囲のarc cosineを返します。
float asin (float a)
-PI/2からPI/2の範囲のarc sineを返します。
float atan (float a)
-PI/2からPI/2の範囲のarc tangentを返します。
float atan2 (float x, float y)
-PIからPIの範囲の y/x のarc tangentを返します。
float bias (float x, float t)
x と t は0と1の間に含まれていなければなりません。
x は入力値で、t はカーブの値です。
この関数はもし t が0に近ければの方に、t が1に近ければ1の方に入力値をプッシュします。
もし t が 0.5 と等しいなら、出力は入力を同じになります。
返される float は、0と1の間に含まれていなければなりません。biasはもしマップの値が細すぎるかあるいはその終わりまたは他方で太いなら、色のスペクトルを操作するのに特に役立ちます。
point fBm (point P)
0.1までのポイントPの、ランダムなdisplacementの結果のポイントを返します。
(fractional Brownian motion - fractional ブラウン運動)
point fBm (point P1, point P2)
ポイントP2の要素に比例する量による、ポイントP1のランダムなdisplacementの結果のポイントを返します。(fractional
ブラウン運動)
float ceil (float x)
xより小さくない、最も小さな整数(floatとして表現された)を返します。
float circular1 (point P)
ポイントPに基づいた同心円のパターンを呼び出してして、0と1の間に含まれる値を返します。
rampは 0-1, 1-0, 0-1, 1-0, etc.
float circular2 (point P)
ポイントPに基づいた同心円のパターンを呼び出してして、0と1の間に含まれる値を返します。
rampは0-1, 0-1, 0-1, 0-1, etc.
float clamp (float x, float min, float max)
もしxがminより小さければminを、もしxがmaxより大きければmaxを返します、その他の場合はxを返します。
float cos (float x)
ラジアンxのcosine を返します。
float cosh (float x)
ラジアンxのhyperbolic cosineを返します。
float degrees (float radians)
ラジアンを度に変換します。
float distance (point P1, point P2)
ポイントP1とP2間の距離を返します。
vector dnoise (point P)
ポイントPに基いた勾配ベクトルを返します。
vector dnoise (point P, float o)
ポイントPと、そしてoにより指定された3Dノイズ関数のオクターブに基いた勾配ベクトルを返します。
vector dnoise (point P, point OPN)
ポイントPと、そしてポイントOPNの各要素の値(x=オクターブ数、y=位置スケール係数、z=ノイズスケール係数)に基いたベクトルポイントを返します。
float exp (float x)
ex を返す、標準の指数関数です。
float fabs (float x)
引数の絶対値を返します。
float floor (float x)
xより大きくない、最も大きな整数(floatとして表現された)を返します。
float fmod (float a, float b)
0より大きい値、そしてある整数 n のために fmod(a,b) = a - n * b (他の用語では a - b * floor(a
/ b))のようなbより小さいかイコールの値を返すモジュール関数です。
float fnoise (point P)
これは Perlin turbulence 関数のバリエーションです。それはポイントPに基いた勾配ノイズ値を返します。
float fnoise (point P, float o)
これは Perlin turbulence 関数のバリエーションです。それはポイントPと、そしてoにより指定された3Dノイズ関数のオクターブに基いた勾配ノイズ値を返します。
float fnoise (point P, point OPN)
これは Perlin turbulence 関数のバリエーションです。
ポイントPと、そしてポイントOPNの各要素の値(x=オクターブ数、y=位置スケール係数、z=ノイズスケール係数)に基いた勾配ノイズ値を返します。
float gain (float x, float t)
xとtは0と1の間に含まれていなければなりません。
xは入力値で、tはカーブ値です。
この関数はS-形のカーブです。
もし t がほぼ0なら平坦で始まりそして平坦で終わります、そしてもし t が1に近いなら垂直で始まりそして垂直で終わります。
もし t が0.5と等しいなら、出力は入力と同じになります。返される float は0と1の間に含まれます。
float greyscale (rgb color)
入力色のgrey scale値を返します。
rgb HSVColorWheel (float x, float z)
xとzの値に基いて色ベースを返します、それは次のHSVホイールからの座標です。
float int (float x)
xの整数部分を返します。
float inversesqrt (float x)
xの平方根の逆数を返します、1 / sqrt ( x )。
float legendre (float n, float m, float x)
第1の種類のassociated ルジャンドル多項式を返します。
float length (vector V)
ベクトルの長さを返します。
float log (float x)
xの自然対数を返します(x = log(exp(x)))。
float log10 (float x)
xの10を底とする対数を返します。
float max (float a, float b)
引数の最大値を返します。
float min (float a, float b)
引数の最小値を返します。
rgb mix (rgb c1, rgb c2, float alpha)
x・(1−α)+y・α,を返します、これは色c1とc2のアルファによる線形混合です。
float noise (point P)
これはPerlin solidテクスチャノイズ関数です。
それはポイントPに基いて勾配ノイズ値を返します。
float noise (point P, float o)
これはPerlin solidテクスチャノイズ関数です。
それはポイントPと、そしてoにより指定された3Dノイズ関数のオクターブに基いた勾配ノイズ値を返します。
float noise (point P, point OPN)
これはPerlin solidテクスチャノイズ関数です。
ポイントPと、そしてポイントOPNの各要素の値(x=オクターブ数、y=位置スケール係数、z=ノイズスケール係数)に基いた勾配ノイズ値を返します。
vector normalize (vector V)
方向Vの単位ベクトルを返します。
float pow (float x, float y)
累乗、 xのy乗 を返します。
float pulse (float min, float max, float x)
矩形パルスの結果のfloatを返します、それはx=minで始まり、そしてx=maxで終わります。
float radial1 (point P)
float radial2 (point P)
ポイントPに基づいたy-軸のまわりで包む放射状の混合パターンを起動して、0と1の間で含まれていた値を返します。
float radians (float degrees)
度をラジアンに変換します。
float ramp (float x)
もしxが1より大きければxの小数点部分を、あるいはもしxが0より小さい時はxと次のより小さい数との差を返します。
これは常に0と1の間に含まれるように、どのような値でも切り捨てます。
それは0から1まで範囲をカバーする色の範囲のために有用で、それを0から1の範囲にコンバートし確実にするこの範囲内収めます。
float random
0と1の間に含まれる値を返します。
vector reflect (vector I, vector N)
与えられた入射方向 I と法線ベクトルNの反射のベクトルを返します。
vector refract (vector I, vector N, float eta)
与えられた入射方向 I 、法線ベクトルN、相対屈折率 eta の伝達ベクトルを返します。
(eta は入力されているボリュームのそれへの入射ベクトルを含んでいるボリューム中の屈折率の比率です。)
point Rotate (point P, point A)
A(Aの各要素は回転について)に含まれる角度により、Pの回転の結果のポイントを返します。
point Rotate (point P, point Axis, float Angle)
Angleによって指定された角度、Axisによって指定された回転軸によりPの回転の結果のポイントを返します。(e.g. Axisはy軸回りに回転するためには(0,1,0)でなければなりません)
float round (float x)
xに近い整数(floatとして表現された)を返します。
float sawtooth (float x)
xについての 鋸歯(sawtooth) 関数を返します。f(x) = x , 0 <= x <= 1
point Scale (point P1, point P2)
P1のP2によるスケーリングの結果のポイントを返します。
float scnoise (point P, float i)
ポイントPと i によって指定されたインパルスの数に基いて、sparse convolution ノイズの値(Lewis ノイズとして知られる)を返します。
float sign (float x)
もしその引数が負の時 -1 を、もし引数が正の時は 1 を、引数が0の時は0を返します。
float sin (float x)
ラジアンxのsineを返します。
float sinh (float x)
ラジアンxのhyperbolic sineを返します。
float smoothstep (float min, float max, float x)
もしxがminより小さいなら0を、もしxがmaxより大きいか等しいなら1を、そしてminからmaxの間隔で0と1の間でスムーズなHermite補間を行います。
point spline (int type, float t, points [v0,..,vn])
or
point spline (int type, float t, points [v0,..,vn], points [p0,..,pn])
選択されたスプラインのtypeに従って、与えられたコントロールポイントにスプラインをフィットさせます。
type は1と5の間に含まれていなければならず、そして次のようなスプラインのタイプを表します。
1=3次スプラインが最初の制御点で開始し、最後の制御点で終了する。
2=最後の制御点から最初にループバックする、閉じた3次スプライン。
3=各制御点間を結ぶポリライン。(線形補間)
4=最後の制御点から最初にループバックする、閉じたポリライン。
5=終点のために定義されたderivatives を持つ3次スプライン
そのようなケースでは、それらは正確に制御点配列より2少ないパラメータ配列[p0,...,pn]エントリがあるに違いありません。
制御点配列(3番目の引数)のシンタックスの形式:
points [ d0 , v0 , v1 , v2 , .... , dn , vn ]
アーカイブファイル "statics.vib"内にはこれらが静的に宣言されています。
C_SPLINE = 1
CLOSEDC_SPLINE = 2
POLYLINE = 3
CLOSEDPOLYLINE = 4
DERIVC_SPLINE = 5
引数 t は全体のスプラインパスに沿った、カレントのポイントを定義します。(0は最初の制御点と、1は最後の制御点の間)
splineにより返される結果のpointはこの値の機能です。
3番目の引数はカーブのパスを表す制御点の配列を定義します。
コンマが各ポイントを分離します。
もし4番目の引数が使用されているなら、それは各頂点に相当する t の値の定義を可能にします。
もし使用されていないなら、弦長(chord lenght)近似が使用されます。(頂点の間の距離/時間はそれらの間の直線距離とほぼ同じです)
float sqrt (float x)
xの正の平方根を返します。
float step (float min, float x)
もしxがminより小さければ0を、その他の場合は1を返します。
float tan (float x)
xラジアンのtangentを返します。
float tanh (float x)
xラジアンのhyperbolic tangentを返します。
rgb trace (point P, vector R)
与えられた方向RのポイントPからの光線のトレースによる結果の色を返します。
point Translate (point P1, point P2)
P1からP2に移動した結果のポイントを返します。
float vcnoise (point P)
ポイントPに基いた格子重畳関数(Lattice convolution function)です。
それは負のローブ(negative lobes)のCatmull-Romフィルターを使用します。
float visibility (point from, point at)
from からの at が可視なら 1 を返します。
0は何らかのサーフェイスが視界をブロックすることを意味します。
float vnoise (point P)
ポイントPに基いたノイズ関数の値です。
それは三次Catmull-Rom spline補間関数を使用します。
float voronoi (point P, int D)
ポイントPに基づいたVoronoiセル雑音機能(別名Worleyノイズ)。
整数Dはセルのアルゴリズムの変化をセットするために1と9の間で含まれる値です。
float fcellnoise (float u)
float fcellnoise (float u, float v)
float fcellnoise (point P)
float fcellnoise (point P, float u)
float vcellnoise (float u)
float vcellnoise (float u, float v)
float vcellnoise (point P)
float vcellnoise (point P, float u)
その引数は擬似乱数関数の値を返します。
そのドメインは 1-D(ひとつのfloat)、2-D(ふたつのfloat)、3-D(ひとつのポイント)、4-D(ひとつのポイントとひとつのfloat)で有りえます。
その戻り値は0と1の間で一様分布で、整数格子ポイント間に一定の値があり、整数位置で不連続です。
もしスペースをリージョン(セル)に分割していて、各リージョンに異なる(反復可能な)乱数を望むならば、これは有用です。
それはnoiseをコールするよりもかなり簡単で、そしてもし単に反復可能なランダムシーケンスを生成するためにnoiseを使用していたならば、それよりも望ましい。
希望するタイプは、機能を振り当てることにより示されます。
vector wave (point P, point C, float wlen, float phase)
それらがあるポイントから外側へ動いている波あるいはさざなみによって影響されているかのように、法線を修正するために使用されるベクトルを返します。
Pは評価されたポイント(それは多くの場合実行時変数 Po)を表します、Cは波の中心です、wlen は現在の波長を定義します、そして phase
は位相です。(0からの)