プロシージャルテクスチャ

プロシージャルテクスチャフィルターでは、定義済みの関数とユーザー定義済みの変数を使用して、いくつかのピクセル操作を実行できます。実質的には、設定可能なパラメータを使用して、独自のフィルターを記述できます。

前
後
前と後です。バンプマップは、dotおよびdebump関数を使用して通常のマップから作成され、次に、[ソフトライト]ブレンドモードが3Dレンダーの「リライト」に使用されます。

プロシージャルテクスチャフィルターについて

このフィルターは、元のデータを破壊しないライブフィルターとして適用できます。[レイヤー]メニューの[新規ライブフィルターレイヤー]カテゴリからアクセスできます。

設定

フィルターダイアログで調整できる設定は、次のとおりです。


フィルターの使用

フィルターには、効果的に使用する上で理解しておくべきいくつかの重要な構成要素があります。


ここでは、プロシージャルテクスチャフィルターを使用できるいくつかの実用的な例を示します。カスタム入力変数は、太字で強調表示します。例について学習するには、コード行をコピーして新しい式の行に貼り付け、必要な場合はチャンネルターゲットを設定し、表の項目に従ってカスタム入力を作成してください。

ラウンドビネット

ビネット
var vignettew=vec2(rx, ry)/w; var vignetteh=vec2(rx, ry)/h; var productw=oscsc(vignettew); var producth=oscsc(vignetteh); scurveinterp(productw, producth, roundness)*(intensity*imultiplier)

3つすべてのチャンネル(RGB)を対象とします。スクリーンなどのブレンドモードを使用します。

カスタム入力タイプ 変数名 説明
[0,1]範囲の入力 roundness ビネットの丸みを制御するためにscurveinterpの変数として使用します。
[0,1]範囲の入力 intensity この値にscurveinterpの結果を乗算することで、ビネットの強度(明るさ)を変更します。
実数の入力 imultiplier この実数は、スケーリングするためにintensity値が乗算され、可能な明るさの範囲が大きくなります。

この式では4つの変数を定義します。rxryは、次の2つのベクトル結果を作成するために使用します: vignettewvignetteh。このベクトル結果はそれぞれ幅および高さで除算されます。これらから、S字カーブのオシレータ(oscsc)を使用してproductwproducthを計算します。最後に、これら2つの積の結果をS字カーブの補間器(scurveinterp)を使用して補間します。2つの結果の混合は、roundnessのカスタム入力で制御され、明るさはintensityimultiplierのカスタム入力によってスケーリングされます。

ここでは、rxry(XおよびYの相対的な位置)がベクトル作成のために使用されているため、ユーザーはキャンバスをクリックしてドラッグすることでビネットの中心点(原点)を決定することができます。

適切な描画モードでフィルターを使用すると(ライブフィルターバージョンが推奨されます)、適切なビネットエフェクトを得ることができます。

ひし形アルファマスク

ビネット
var v=vec2(rx,ry)/w; smoothoschlin(oschcr(v/(dsize*dmult)), dsmooth)

アルファチャンネル(A)のみを対象とします。

カスタム入力タイプ 変数名 説明
[0,1]範囲の入力 dsmooth マスクエッジのスムージングを制御します。
[0,1]範囲の入力 dsize マスクのサイズを決定します。
実数の入力 dmult 乗数でdsizeをスケーリングして、マスクサイズの拡大縮小を可能にします。

ここでは、rxryを使用したベクトル作成の結果を変数vに割り当てます(結果をドキュメントの幅wで除算します)。結果のvは、次にCatmull-Romスプラインのハーモニックオシレータ(oschcr)で処理され、それ自体もスムーズハーモニック線形オシレータ(smoothoschlinなど)に変換します。oschcr関数内で、vdsize*dmultで除算され、全体サイズを制御します。dsmoothsmoothoschlin関数内で使用されて、エッジの滑らかさとぼかしに影響を及ぼします。チャンネルターゲットが単にアルファ(A)に設定された場合、この式はひし形アルファマスクエフェクトを作成します。

rxry(XおよびYの相対的な位置)がベクトル作成のために使用されているため、ユーザーはキャンバスをクリックしてドラッグすることでマスクエフェクトの位置を変更できます。


関数

以下に、[数式]セクションで使用できる関数の一覧を示します。

関数がTまたはV引数を取る場合、ベクトルサイズはすべての引数で同じでなければなりません。それらは互換性がありません。

関数 使用方法 ノート
一般的な算術式
abs abs(T) 値を整数の絶対値に丸めます。
acos acos(T)
asin asin(T)
atan atan(T)
atan2 atan2(T, T)
平均 average(T, T, ...) (変数引数)
ceil ceil(T) 値を切り上げます。
copysign copysign(T, T sign)
cos cos(T)
dim dim(T x, T y)
floor floor(T) 値を切り下げます。
fma fma(T a, T b, T c) (a*b) + cを計算します。
fmod fmod(T, T)
fraction fraction(T)
idiv idiv(T, T)
irem irem(T, T)
lerp lerp(T a, T b, T t) 2つの値間の線形補間を計算します。2点間の距離に対する割合はt(0~1)によって決まります。
max max(T, T, ...) (変数引数)
mid mid(T, T)
min min(T, T, ...) (変数引数)
mix mix(T a, T b, T t) lerpと同じ。
pow pow(T x, T y) xy乗。
powr powr(T x, T y) xy乗(x>0)。
round round(T)
roundup roundup(T)
rounddown rounddown(T)
sign sign(T)
sin sin(T)
sq sq(T)
sqrt sqrt(T) 平方根。
tan tan(T)
trunc trunc(T) truncateの短縮形。
truncate truncate(T)
rgbtoi rgbtoi(S r, S g, Sb)またはrgbtoi(V rgb)
whole whole(T)
数値範囲の変換。
tocui tocui(T) 0~1までの閉区間。
tohcui tohcui(T) -1~1(ハーモニック)までの閉区間。
切り上げ/切り下げ
saturate saturate(T)
clamp clamp(T)またはclamp(T, T min, T max)
clampmin clampmin(T, T min)
clampmax clampmax(T, T max)
幾何学的関数
cross cross(V3, V3) 2つのVector3 (XYZ)の外積を計算します。
dist dist(V a, V b) distanceの短縮形。
dist_sq dist_sq(V a, V b) distance_squaredの短縮形。
distance distance(V a, V b)
distance_squared distance_squared(V a, V b)
dot dot(V, V)
length length(V)またはlength(S, S, ...)
length_squared length_squared(V)またはlength_squared(S, S, ...)
norm norm(V) normaliseまたはnormalizeの短縮形。
normalise normalise(V)
normalize normalize(V)
ベクトル作成
vec2 vec2(S)またはvec2(S, S) XY位置からのベクトル作成に適しています。例: vec2(rx, ry)
vec3 vec3(S)またはvec3(S, S, S) カラーデータからのベクトル作成に使用できます。例: vec3(R, G, B)
vec4 vec4(S)またはvec4(S, S, S, S)
vec5 vec5(S)またはvec5(S, S, S, S, S)
vec6 vec6(S)またはvec6(S, S, S, S, S, S)
tovec3 tovec3(V)
tovec4 tovec4(V)
tovec5 tovec5(V)
tovec6 tovec6(V)
ベクトル操作
rev rev(V)
rotl rotl(V) ベクトルを左回転します。
rotr rotr(V) ベクトルを右回転します。
swap12 swap12(V)
swap13 swap13(V)
swap23 swap23(V)
swapxy swapxy(V)
swapxz swapxz(V)
swapyz swapyz(V)
swaprg swaprg(V)
swaprb swaprb(V)
swapgb swapgb(V)
neg1 neg1(V)
neg2 neg2(V)
neg3 neg3(V)
neg12 neg12(V)
negx negx(V)
negy negy(V)
negz negz(V)
negxy negxy(V)
negr negr(V)
negg negg(V)
negb negb(V)
negrg negrg(V)
ベクトルユーティリティ
debump debump(S r, S g, S b)
補間
scurveinterp scurveinterp(T a, T b, T t)
sininterp sininterp(T a, T b, T t)
cubicinterp cubicinterp(T a, T b, T c, T d, T t)
scurveinterpolant scurveinterpolant(T cui)
sininterpolant sininterpolant(T cui)
scerp scerp(T a, T b, T t) scurveinterpの短縮形。
serp serp(T a, T b, T t) sininterpの短縮形。
cerp cerp(T a, T b, T c, T d, T t) cubicinterpの短縮形。
cubic scerp(T a, T b, T c, T d, T t) cubicinterpの短縮形。
scint scint(T cui) scurverinterpolantの短縮形。
sint sint(T cui) sininterpolantの短縮形。
ステップ
mapcui mapcui(T v, T edge0, T edge1)
step step(T edge, T v)
stepn stepn(T edge, T v)
smoothsteplin smoothsteplin(T edge0, T edge1, T v)またはsmoothsteplin(T in0, T in1, T out1, T out0, T v)
smoothstep smoothstep(T edge0, T edge1, T v)またはsmoothstep(T in0, T in1, T out1, T out0, T v)
smoothstepsc smoothstepsc(T edge0, T edge1, T v)またはsmoothstepsc(T in0, T in1, T out1, T out0, T v)
smoothstepsin smoothstepsin(T edge0, T edge1, T v)またはsmoothstepsin(T in0, T in1, T out1, T out0, T v)
smoothstepcs smoothstepcs(T edge0, T edge1, T v)またはsmoothstepcs(T in0, T in1, T out1, T out0, T v)
smoothstepsq smoothstepsq(T edge0, T edge1, T v)またはsmoothstepsq(T in0, T in1, T out1, T out0, T v)
smoothstepsqi smoothstepsqi(T edge0, T edge1, T v)またはsmoothstepsqi(T in0, T in1, T out1, T out0, T v)
smoothstepcb smoothstepcb(T edge0, T edge1, T v)またはsmoothstepcb(T in0, T in1, T out1, T out0, T v)
smoothstepcbi smoothstepcbi(T edge0, T edge1, T v)またはsmoothstepcbi(T in0, T in1, T out1, T out0, T v)
smoothstepsin smoothstepsin(T edge0, T edge1, T v)またはsmoothstepsin(T in0, T in1, T out1, T out0, T v)
smoothstepsini smoothstepsini(T edge0, T edge1, T v)またはsmoothstepsini(T in0, T in1, T out1, T out0, T v)
smoothstepcr smoothstepcr(T edge0, T edge1, T v)またはsmoothstepcr(T in0, T in1, T out1, T out0, T v)
smoothstepcri smoothstepcri(T edge0, T edge1, T v)またはsmoothstepcri(T in0, T in1, T out1, T out0, T v)
smoothsteprt smoothsteprt(T edge0, T edge1, T v)またはsmoothsteprt(T in0, T in1, T out1, T out0, T v)
smoothsteprti smoothsteprti(T edge0, T edge1, T v)またはsmoothsteprti(T in0, T in1, T out1, T out0, T v)
smoothstepnlin smoothstepnlin(T edge1, T edge0, T v)
smoothstepn smoothstepn(T edge1, T edge0, T v)
smoothstepnsc smoothstepnsc(T edge1, T edge0, T v)
smoothstepnsin smoothstepnsin(T edge1, T edge0, T v)
smoothstepncs smoothstepncs(T edge1, T edge0, T v)
smoothstepnsq smoothstepnsq(T edge1, T edge0, T v)
smoothstepnsqi smoothstepnsqi(T edge1, T edge0, T v)
smoothstepncb smoothstepncb(T edge1, T edge0, T v)
smoothstepncbi smoothstepncbi(T edge1, T edge0, T v)
smoothstepnpsini smoothstepnpsini(T edge1, T edge0, T v)
smoothstepncr smoothstepncr(T edge1, T edge0, T v)
smoothstepncri smoothstepncri(T edge1, T edge0, T v)
smoothstepnrt smoothstepnrt(T edge1, T edge0, T v)
smoothstepnrti smoothstepnrti(T edge1, T edge0, T v)
量子化
quantize quantize(T band, T v)またはquantize(T band, T smooth, T v)
quantizelin quantizelin(T band, T smooth, T v)
quantizesc quantizesc(T band, T smooth, T v)
quantizesin quantizesin(T band, T smooth, T v)
quantizecs quantizecs(T band, T smooth, T v)
オシレータ
osci osci(S)
osci(S, S)
osci(V2)
標準オシレーション。スカラー入力またはベクトル入力を受け付けます。
oscsc oscsc(S)
oscsc(S, S)
oscsc(V2)
S字カーブのオシレータ。
oscsin oscsin(S)
oscsin(S, S)
oscsin(V2)
osccs osccs(S)
osccs(S, S)
osccs(V2)
osccubic osccubic(S)
osccubic(S, S)
osccubic(V2)
oscsq oscsq(S)
oscsq(S, S)
oscsq(V2)
oscsqi oscsqi(S)
oscsqi(S, S)
oscsqi(V2)
osccb osccb(S)
osccb(S, S)
osccb(V2)
osccbi osccbi(S)
osccbi(S, S)
osccbi(V2)
oscpsin oscpsin(S)
oscpsin(S, S)
oscpsin(V2)
oscpsini oscpsini(S)
oscpsini(S, S)
oscpsini(V2)
osccr osccr(S)
osccr(S, S)
osccr(V2)
osccri osccri(S)
osccri(S, S)
osccri(V2)
oscrt oscrt(S)
oscrt(S, S)
oscrt(V2)
oscrti oscrti(S)
oscrti(S, S)
oscrti(V2)
smoothosclin smoothosclin(S, S smoothingwidth)
smoothosclin(S, S, S smoothingwidth)
smoothosclin(V2, S smoothingwidth)
smoothosc smoothosc(S, S smoothingwidth)
smoothosc(S, S, S smoothingwidth)
smoothosc(V2, S smoothingwidth)
smoothoscsc smoothoscsc(S, S smoothingwidth)
smoothoscsc(S, S, S smoothingwidth)
smoothoscsc(V2, S smoothingwidth)
smoothoscsin smoothoscsin(S, S smoothingwidth)
smoothoscsin(S, S, S smoothingwidth)
smoothoscsin(V2, S smoothingwidth)
smoothosccs smoothosccs(S, S smoothingwidth)
smoothosccs(S, S, S smoothingwidth)
smoothosccs(V2, S smoothingwidth)
ハーモニックオシレータ
oschi oschi(S)
oschi(S, S)
oschi(V2)
osch osch(S)
osch(S, S)
osch(V2)
oschsc oschsc(S)
oschsc(S, S)
oschsc(V2)
oschsin oschsin(S)
oschsin(S, S)
oschsin(V2)
oschcs oschcs(S)
oschcs(S, S)
oschcs(V2)
oschcubic oschcubic(S)
oschcubic(S, S)
oschcubic(V2)
oschsq oschsq(S)
oschsq(S, S)
oschsq(V2)
oschsqi oschsqi(S)
oschsqi(S, S)
oschsqi(V2)
oschcb oschcb(S)
oschcb(S, S)
oschcb(V2)
oschcbi oschcbi(S)
oschcbi(S, S)
oschcbi(V2)
oschhsin oschhsin(S)
oschhsin(S, S)
oschhsin(V2)
oschhsini oschhsini(S)
oschhsini(S, S)
oschhsini(V2)
oschcr oschcr(S)
oschcr(S, S)
oschcr(V2)
oschcri oschcri(S)
oschcri(S, S)
oschcri(V2)
oschrt oschrt(S)
oschrt(S, S)
oschrt(V2)
oschrti oschrti(S)
oschrti(S, S)
oschrti(V2)
smoothoschlin smoothoschlin(S, S smoothingwidth)
smoothoschlin(S, S, S smoothingwidth)
smoothoschlin(V2, S smoothingwidth)
smoothosch smoothosch(S, S smoothingwidth)
smoothosch(S, S, S smoothingwidth)
smoothosch(V2, S smoothingwidth)
smoothoschsc smoothoschsc(S, S smoothingwidth)
smoothoschsc(S, S, S smoothingwidth)
smoothoschsc(V2, S smoothingwidth)
smoothoschsin smoothoschsin(S, S smoothingwidth)
smoothoschsin(S, S, S smoothingwidth)
smoothoschsin(V2, S smoothingwidth)
smoothoschcs smoothoschcs(S, S smoothingwidth)
smoothoschcs(S, S, S smoothingwidth)
smoothoschcs(V2, S smoothingwidth)
シンプルノイズ
noisei noisei(S)
noisei(S, S)
noisei(S, S, S)
noisei(V2)
noisei(V3)
noise noise(S)
noise(S, S)
noise(S, S, S)
noise(V2)
noise(V3)
線形ノイズ。
noisesc noisesc(S)
noisesc(S, S)
noisesc(S, S, S)
noisesc(V2)
noisesc(V3)
S字カーブノイズ。
noisesin noisesin(S)
noisesin(S, S)
noisesin(S, S, S)
noisesin(V2)
noisesin(V3)
noisecs noisecs(S)
noisecs(S, S)
noisecs(S, S, S)
noisecs(V2)
noisecs(V3)
noisecubic noisecubic(S)
noisecubic(S, S)
noisecubic(S, S, S)
noisecubic(V2)
noisecubic(V3)
noisesq noisesq(S)
noisesq(S, S)
noisesq(S, S, S)
noisesq(V2)
noisesq(V3)
noisesqi noisesqi(S)
noisesqi(S, S)
noisesqi(S, S, S)
noisesqi(V2)
noisesqi(V3)
noisecb noisecb(S)
noisecb(S, S)
noisecb(S, S, S)
noisecb(V2)
noisecb(V3)
noisecbi noisecbi(S)
noisecbi(S, S)
noisecbi(S, S, S)
noisecbi(V2)
noisecbi(V3)
noisepsin noisepsin(S)
noisepsin(S, S)
noisepsin(S, S, S)
noisepsin(V2)
noisepsin(V3)
noisepsini noisepsini(S)
noisepsini(S, S)
noisepsini(S, S, S)
noisepsini(V2)
noisepsini(V3)
noisecr noisecr(S)
noisecr(S, S)
noisecr(S, S, S)
noisecr(V2)
noisecr(V3)
noisecri noisecri(S)
noisecri(S, S)
noisecri(S, S, S)
noisecri(V2)
noisecri(V3)
noisert noisert(S)
noisert(S, S)
noisert(S, S, S)
noisert(V2)
noisert(V3)
noiserti noiserti(S)
noiserti(S, S)
noiserti(S, S, S)
noiserti(V2)
noiserti(V3)
ハーモニックシンプルノイズ
noisehi noisehi(S)
noisehi(S, S)
noisehi(S, S, S)
noisehi(V2)
noisehi(V3)
noiseh noiseh(S)
noiseh(S, S)
noiseh(S, S, S)
noiseh(V2)
noiseh(V3)
noisehsc noisehsc(S)
noisehsc(S, S)
noisehsc(S, S, S)
noisehsc(V2)
noisehsc(V3)
noisehsin noisehsin(S)
noisehsin(S, S)
noisehsin(S, S, S)
noisehsin(V2)
noisehsin(V3)
noisehcs noisehcs(S)
noisehcs(S, S)
noisehcs(S, S, S)
noisehcs(V2)
noisehcs(V3)
noisehcubic noisehcubic(S)
noisehcubic(S, S)
noisehcubic(S, S, S)
noisehcubic(V2)
noisehcubic(V3)
noisehsq noisehsq(S)
noisehsq(S, S)
noisehsq(S, S, S)
noisehsq(V2)
noisehsq(V3)
noisehsqi noisehsqi(S)
noisehsqi(S, S)
noisehsqi(S, S, S)
noisehsqi(V2)
noisehsqi(V3)
noisehcb noisehcb(S)
noisehcb(S, S)
noisehcb(S, S, S)
noisehcb(V2)
noisehcb(V3)
noisehcbi noisehcbi(S)
noisehcbi(S, S)
noisehcbi(S, S, S)
noisehcbi(V2)
noisehcbi(V3)
noisehpsin noisehpsin(S)
noisehpsin(S, S)
noisehpsin(S, S, S)
noisehpsin(V2)
noisehpsin(V3)
noisehpsini noisehpsini(S)
noisehpsini(S, S)
noisehpsini(S, S, S)
noisehpsini(V2)
noisehpsini(V3)
noisehcr noisehcr(S)
noisehcr(S, S)
noisehcr(S, S, S)
noisehcr(V2)
noisehcr(V3)
noisehcri noisehcri(S)
noisehcri(S, S)
noisehcri(S, S, S)
noisehcri(V2)
noisehcri(V3)
noisehrt noisehrt(S)
noisehrt(S, S)
noisehrt(S, S, S)
noisehrt(V2)
noisehrt(V3)
noisehrti noisehrti(S)
noisehrti(S, S)
noisehrti(S, S, S)
noisehrti(V2)
noisehrti(V3)
パーリンノイズ
perlin perlin(S x, I octaves, S persistence)
perlin(S x, S y, I octaves, S persistence)
perlin(V2 pt, I octaves, S persistence)
perlinsc perlinsc(S x, I octaves, S persistence)
perlinsc(S x, S y, I octaves, S persistence)
perlinsc(V2 pt, I octaves, S persistence)
perlinsin perlinsin(S x, I octaves, S persistence)
perlinsin(S x, S y, I octaves, S persistence)
perlinsin(V2 pt, I octaves, S persistence)
perlincubic perlincubic(S x, I octaves, S persistence)
perlincubic(S x, S y, I octaves, S persistence)
perlincubic(V2 pt, I octaves, S persistence)
perlincs perlincs(S x, I octaves, S persistence)
perlincs(S x, S y, I octaves, S persistence)
perlincs(V2 pt, I octaves, S persistence)
ハーモニックパーリンノイズ
perlinh perlinh(S x, I octaves, S persistence)
perlinh(S x, S y, I octaves, S persistence)
perlinh(V2 pt, I octaves, S persistence)
perlinhsc perlinhsc(S x, I octaves, S persistence)
perlinhsc(S x, S y, I octaves, S persistence)
perlinhsc(V2 pt, I octaves, S persistence)
perlinhsin perlinhsin(S x, I octaves, S persistence)
perlinhsin(S x, S y, I octaves, S persistence)
perlinhsin(V2 pt, I octaves, S persistence)
perlinhcubic perlinhcubic(S x, I octaves, S persistence)
perlinhcubic(S x, S y, I octaves, S persistence)
perlinhcubic(V2 pt, I octaves, S persistence)
perlinhcs perlinhcs(S x, I octaves, S persistence)
perlinhcs(S x, S y, I octaves, S persistence)
perlinhcs(V2 pt, I octaves, S persistence)
ボロノイノイズ
cellnoise cellnoise(S x, S y)
cellnoise(S x, S y, S spread)
cellnoise2 cellnoise2(S x, S y, I degree)
cellnoisedist cellnoisedist(S x, S y)
cellnoisedist(S x, S y, S spread)
cellnoiseedge cellnoiseedge(S x, S y, S sz, S softness)
指向性ノイズ
diri diri(S)
diri(S, S)
diri(V2)
dir dir(S)
dir(S, S)
dir(V2)
dirsc dirsc(S)
dirsc(S, S)
dirsc(V2)
dirsin dirsin(S)
dirsin(S, S)
dirsin(V2)
dircs dircs(S)
dircs(S, S)
dircs(V2)
udiri udiri(S)
udiri(S, S)
udiri(V2)
udir udir(S)
udir(S, S)
udir(V2)
udirsc udirsc(S)
udirsc(S, S)
udirsc(V2)
udirsin udirsin(S)
udirsin(S, S)
udirsin(V2)
udircs udircs(S)
udircs(S, S)
udircs(V2)
dir3i dir3i(S)
dir3i(S, S)
dir3i(V2)
dir3 dir3(S)
dir3(S, S)
dir3(V2)
dir3sc dir3sc(S)
dir3sc(S, S)
dir3sc(V2)
dir3sin dir3sin(S)
dir3sin(S, S)
dir3sin(V2)
dir3cs dir3cs(S)
dir3cs(S, S)
dir3cs(V2)
udir3i udir3i(S)
udir3i(S, S)
udir3i(V2)
udir3 udir3(S)
udir3(S, S)
udir3(V2)
udir3sc udir3sc(S)
udir3sc(S, S)
udir3sc(V2)
udir3sin udir3sin(S)
udir3sin(S, S)
udir3sin(V2)
udir3cs udir3cs(S)
udir3cs(S, S)
udir3cs(V2)

関連項目: