UDN
Search public documentation:

MaterialsCompendiumJP
English Translation
中国翻译
한국어

Licensees can log in.

Red links require licensee log in.


Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

マテリアル要約

ドキュメントの概要: UnrealEd のマテリアル エディタで利用できるすべてのマテリアル式の説明。 ドキュメントの変更ログ: 原著: Alan Willard ; Dave Burke?Daniel Wright および Wyeth Johnson により更新

概観

本書は、マテリアル エディタで利用できるすべてのマテリアル式ノードのリファレンスです。

マテリアル作成の際のカラーについての考え方

UE3 でマテリアルについて考えるときは、多くの式が それぞれのチャンネルで独立して動作する ことを覚えておいてください。例えば Add (追加)ノードは、2 つの入力を取り、それらを一緒にチャンネルごとに追加します。2 つの RGB カラー(3 チャンネル値)を一緒に追加する場合、出力カラーは、(Red1+Red2、Green1+Green2、Blue1+Blue2) になります。チャンネルごとの演算を、グレースケールでの演算として考えます。

チャンネルごとの演算を実行するノードは、同数のチャンネルを持つ入力を必要とするのが普通です。例えば、ある RGB カラーを別の RGB カラーに add (追加) できますが、RGBA カラーを RGB カラーに追加することはできません。これは、RGB カラーにはアルファ チャンネルがないからです。この規則に対する例外は、入力のうちの一つがシングル チャンネル(グレースケール)値で、何にでも適用できるときです。したがって、RGB カラー (0.2、0.3、0.5) に 0.1 を加算して (0.3、0.4、0.6)を得ることができます。

もう一つ覚えておくべきことは、UE3 でのカラーは 浮動小数点 であるということです。言い換えると、カラーは、[0、255] の範囲での RGB 値を持ちません。その代わり、RGB 値はどのような値でも取り得ます。0.4、-1.2、3.4 などです。0.0 は、黒/無色(古いスキームでは 0) 、1.0 はフルカラー(古いスキームでは 255) を意味します。1.0 よりも大きい数を持つことはもちろん有効です。大きい数であればあるほど明るいことを意味します。(255、0、0) は、赤のために使用されましたが、UE3 では(1.0、0.0、0.0)です。しかし、本当に明るい赤は、(3.0、0.0、0.0)です。

カラーは、負でもあり得ます。カラーを 取り除く 方法として負のカラーを考えます。例えば、テクスチャに (-0.5、0.0、0.0) を加算して、テクスチャのすべての赤のカラーを 0.5 だけ減少させることができます。

中間の式は浮動小数点内で演算されますが、マテリアルの最終出力色の各チャンネルは [0,4] にクランプされます。ここで 0 はまったく寄与なしということで、1 は完全な寄与となります。1 以上の値は、結果的にはすべて同じ色となりますが、ブルーム ブライト パス、そしてチャンネルの振幅により拾われ、ブルーム寄与に直接影響を与えます。

その他の文書には マテリアルのチュートリアル の文書があり、ノードを組み合わせて様々なマテリアル効果を達成する方法を説明しています。マテリアル エディタ自体の使用方法の説明は、 テリアル エディタ? を参照してください。お客様がプログラマである場合、新しいマテリアル式の作成方法についての詳細は、 マテリアル式の作成 を参照してください。

演算

Abs (絶対値)

Abs は、数学用語「absolute value」(絶対値) を表す略語です。Abs によりマイナス符号を取り去って、負の数が正の数に変えられます。正の数には、変化はありません。

例: -0.7 の Abs は 0.7。 -1.0 の Abs は 1.0。1.0 の Abs も 1.0。

使用例: Abs は、 DotProduct (ドット積) と共に使用するのが普通です。ドット積は、 -1..0..1 の値を取り、一方で、ドット積の Abs は、 1..0..1 の値を取ります。

Abs.jpg

Add

Photoshop のスクリーン レイヤー ブレンドと同様に、Add ノードは 2 つの入力を取り、それらを一緒に加算して結果を出力します。追加は、チャンネルごとに行われます。

例: 0.2 と 0.4 の Add は 0.6 。(0.2、-0.4、0.6) と (0.1、0.5、1.0) の Add は (0.3、0.1、1.6)。(0.2、-0.4、0.6) と 1.0 の Add は (1.2、0.6、1.6) 。

使用例: Add は、カラーを明るく/暗くしたり UV をオフセットしたりするのによく使用します。    AddExample.jpg

AppendVector

3 つの異なるグレースケールから作成したフルカラーの RGB イメージのように、AppendVector によってチャンネルを一緒に組み合わせ、オリジナルよりも多くのチャンネルを持つベクトルを作成できます。例えば、2 つの別個の数 ( Constants )を割り当て、2 チャンネル値 ( Constant2Vector)(2 成分定数ベクトル))を作成できます。

例: 0.2 と 0.4 の Append は (0.2、0.4)。(0.2、0.4) と (1.6) の Append は (0.2、0.4、1.6)。

AppendVectorExample.jpg

BumpOffset

バンプオフセットは、通常「視差マッピング」として知られている Unreal Engine 3 の用語です。バンプオフセット マテリアルによってジオメトリを追加する必要なしに、デプスの錯覚を与えることができます。バンプオフセット マテリアルは、デプスの情報を与えるのに ハイトマップ を使用します。ハイトマップの値が明るければ明るいほど、マテリアルはより「ポップアウト」され、それらの領域は、カメラがサーフェスを移動するにつれて視差(シフト)します。ハイトマップの暗い方の領域は、「遠くに離れて」おり、それだけシフトしません。バンプオフセット ノードには、次のプロパティがあります。:

HeightRatio:デプスを乗算 (Multiply) します。値が大きければ大きいほど、それだけデプスが極端になります。通常の値は、.02 から .1 の範囲です。

ReferencePlane: 効果を適用するためにテクスチャ スペースの平均の高さを指定します。値が 0 の場合、テクスチャはサーフェスから完全に変形して離れているように見えます。一方、値が 0.5 (デフォルト値)である場合、サーフェスの一部が突き出ており、一部の領域が沈んでいることを意味します。

BumpOffsetExample.jpg

CameraVector

CameraVector は、サーフェス上の点から、カメラ方向を示す3チャンネルの値です。

使用例: CameraVector を ComponentMask (成分マスク) に結合して環境マップをフェークし、CameraVector の x および y チャンネルをテクスチャ座標として使用するために CameraVector を使用することがよくあります。

CameraVectorExample.jpg

CameraWorldPosition

CameraWorldPosition はワールドの空間内でのカメラの位置です。

プレビューの球は、カメラが回転するとともに色を変えます。

CameraWorldPosition.jpg

Ceil

Ceilでは、値を次の整数まで切り上げます。床関数と小数部分を参照。

使用例: Ceil of 0.2 is 1.0; Ceil of (0.2,1.6) is (1.0,2.0).

CeilExample.jpg

Clamp

クランプは、指定された範囲に値を限定するために使用し、最小値 (Min) と最大値 (Max) によって定義します。「Min 0.0、max 0.5」は、結果の値が必ず、0.0 より小さくなく、0.5 より大きくないことを意味します。

使用例: Min 0.0 と Max 1.0 で 0.3 をクランプすると、結果は 0.3 になります。Min 0.0 と Max 1.0 で 1.3 をクランプすると結果は 1.0 になります。;

ClampExample.jpg

ComponentMask

ComponentMask によって、チャンネルを取り除くか、またはチャンネルのサブセットのみを選択することができます。ComponentMask には各チャンネル (R、G、B、および A) を示す4つのチェックボックスがあり、チェックされている場合は、そのチャンネルを通過して最終結果が出ます。

使用例: (0.2、0.8、1.4) の入力で、R および B チャンネルがチェックされている ComponentMask では、出力は (0.2、1.4) です。

ComponentMaskExample.jpg

Constant

最もよく使われるマテリアル ノードの一つ、Constant は数です。Constant は整数に限定されず、小数位を持つことも負の数になることもできます。

使用例: 0.7, -0.24, 1.1

ConstantExample.jpg

Constant2Vector

Constant2Vector は 2 チャンネル値です。言い換えると、2 つの定数です。

使用例: (0.4, 0.6), (1.05, -0.3)

Constant2Example.jpg

Constant3Vector

Constant3Vector は 3 チャンネル値です。言い換えると 3 つの定数です。RGB カラーは、Constant3Vector として考えることができます。各チャンネルは、カラー(赤、緑、青)に割り当てられます。

例: (0.4, 0.6, 0.0), (1.05, -0.3, 0.3)

Constant3Example.jpg

Constant4Vector

Constant4Vector は 4 チャンネル値です。言い換えると 4 つの定数です。RGBA カラーは、Constant4Vector として考えることができます。各チャンネルは、カラー(赤、緑、青、アルファ)に割り当てられます。

使用例: (0.4, 0.6, 0.0, 1.0), (1.05, -0.3, 0.3, 0.5)

Constant4Example.jpg

ConstantBiasScale

Scale (スケール)により入力を乗算し、Bias(バイアス)を追加する便利な関数です。例えば、 [0,1] から[-1,1] に入力データを変換するには、Scale=2 および bias = -1に設定します。

ConstantClamp

クランプと同じ関数を実行しますが、単純さと簡単な使用のためにノード自体に含まれる固定の入力を使用します。時間とともに変数になる必要がないような最小クランプ値と最大クランプ値がある場合 (例えば、0 から 1 の出力をクランプする場合) に便利です。

Cosine

Cosine は、関数として余弦波を出力するノードで、その入力は通常 Time ノードに接続されています。Cosine ノードには、シグナルの周期(リピート レート)を設定する「周期」プロパティがあります。

CosineExample.jpg

CrossProduct

CrossProduct では、2 つの入力 3 ベクトルの外積を計算します。空間に 2 つの直線があるとき、外積はこれら 2 つの直線に垂直な直線を出力します。

使用例: CrossProduct は、他の 2 つの方向に垂直な方向を計算するためによく使用されます。

CrossProductExample.jpg

Custom

はカスタムHLSL シェーダコードを書けるようにします。

警告custom ノードを使用することは、定数の畳込みを防ぎ、ノードにてビルドで行なわれたバージョンより著しく命令を使用します。 定数の畳込みは最適化で、必要があれはUE3ではシェーダ命令カウントを減少するために採用します。例えば、'Time->Sin->Mul by parameter->Add to something(何かに追加)' の連鎖式は、EU3により単独の命令に折りたたまれます。これはその式の入力のすべては、ドローコールの定数であるため可能性があり、ピクセルごとに変更しません。UE3はcustom ノードで何も折りたたむことができません。これにより既存のノードから生成された同等のバージョンより効率が落ちたシェーダを生み出すことになります。結果として、既存のノードで不可能な場合にのみcustom ノードを使用するのがベストです。

その他の警告:ノードで書かれたシェーダノードは、「現状維持のままで」ターゲットプラットフォーム用にコンパイルされます。 つまりこれは、シェーダがPC用にコンパイルされた場合、HLSLにも有効とみなされるということです。もしPS3用にコンパイルされた場合は、Cgにも有効ということです。

必要に応じてできるだけ多くの入力をInput配列に追加し、名前をつけます。これが済むとCode プロパティでコードを書くことができます。例で示したようにreturn 文で関数ボディで入力するか、"Input.bgr"などのような簡単な式で入力することができます。また、OutputTypeで出力データタイプを指定しなければなりません。

Custom.jpg

CustomTexture

CustomTexture はCustom ノードの内部のHLSL コードからテクスチャを参照するようにします。通常、これは HLSL 内にサンプリングするために用いられます。

Custom ノードへ入力として通常のTextureSample を使用することは可能ですが、この場合、 Custom ノードの外側でサンプルが演算され、その結果はfloat4 値として渡されます。これは同じテクスチャをループで何回もサンプリングする、または、tex2Dbias, tex2Dlod, tex2Dproj (これらの目的については HLSL ドキュメンテーションを参照)などのようなその他のサンプリング命令を使用するには十分にフレキシブルではありません。

customtex.jpg

DepthBiasBlend

DepthBiasBlend は、他のデプスバイアス ブレンディング ノードよりも遅く、フレキシブルではありません。その代わり、 DepthBiasAlpha (デプスバイアスアルファ) を使用します。

DepthBiasBlend は、スプライトが他のジオメトリと交差するときに生じる鋭いエッジを取り除くためにスプライト パーティクル上のマテリアルで使用される最も一般的なものです。デプスバイアス ブレンディングにより、src と dst ピクセルのデプスを比較し、バイアスを使用して、ピクセルを描くために使用するアルファを決定します。詳細は、「DepthBiasBlendの使用法」を参照してください。

プログラマー: DepthBiasBlend は、デプスバイアス ブレンディング ノードの中で最も好まれません。理由は、1) 最も最近のフレーム/デプスバッファ分解からカラーとデプスをサンプルする。(スロー) 2) ブレンドが、ハードウェアのブレンディングを通してではなく、シェーダー コードで実行される。(スロー) 3) DepthBiasBlend のテクスチャ入力が、任意の式の入力ではなく Texture プロパティによる。

DepthBiasAlpha

DepthBiasAlpha は、デプスバイアス ブレンディングのために好まれて使用されるノードです。

DepthBiasAlpha は、スプライトが他のジオメトリと交差するときに生じる鋭いエッジを取り除くためにスプライト パーティクル上のマテリアルで使用される最も一般的なものです。デプスバイアス ブレンディングにより、src と dst ピクセルのデプスを比較し、バイアスを使用して、ピクセルを描くために使用するアルファを決定します。詳細は、「デプスバイアスブレンドの使用法」を参照してください。 

プログラマー: DepthBiasAlpha は、ブレンドがシェーダーではなくハードウェアで実行されるため、デプスバイアス ブレンディングをするために好まれる方法です。

DepthBiasedBlend

DepthBiasedBlend は DepthBiasAlpha を遅くするので DepthBiasAlpha を代わりに使用してください。instead.

DepthBiasedBlend は、スプライトが他のジオメトリと交差するときに生じる鋭いエッジを取り除くためにスプライト パーティクル上のマテリアルで使用される最も一般的なものです。デプスバイアス ブレンディングにより、src と dst ピクセルのデプスを比較し、バイアスを使用してピクセルを描くために使用するアルファを決定します。詳細は、「デプスバイアスブレンドの使用法」を参照してください。 

プログラマ: DepthBiasedBlend は、デプスバイアス ブレンディング ノードの中で最も好まれないものです。理由は、1) 最も最近のフレーム/デプスバッファ分解からカラーとデプスをサンプルする(スロー) 2) ブレンドが、ハードウェアのブレンディングによってではなくシェーダー コードで実行される。

DeriveNormalZ

これはXとYに与えられているタンジェントスペース法線のZコンポーネントを派生するのに便利なノードです。この入力(InXY) は、タンジェントスペース法線のXとYで、出力は3つのタンジェントスペース法線です。ZはZ = sqrt(1 - (x * x + y * y)); と計算されます。

Desaturation

Desaturation ノードによって、Percent 入力が指定する特定のパーセンテージに基づいて入力の彩度を減少させます。Percent は、0.0 (完全に彩度を減少)から 1.0 (完全なオリジナルのカラー、彩度の減少無し)の範囲に設定できます。ノードの輝度プロパティによって、チャンネルごとの彩度の減少量を指定します。

プログラマ: 彩度を減少したカラー D 、入力カラー I 、および輝度ファクタ L のとき、出力は、O = (1-Percent)*(D.dot(I)) + Percent*I になります。

DesaturationExample.jpg

DestColor

DestColor では、現在描かれているピクセルの後ろの既存のカラーをサンプルします。

使用例: 水のマテリアルでは、DestColor を使用して水中の岩のカラーをサンプルできます。

DestDepth

DestDepth では、現在描かれているピクセルの後ろの既存のデプスをサンプルします。

使用例: 水のマテリアルでは、DestDepth を使用して、水に「厚み」またはフォグ カラーを与えることができ、水が深ければ深いほど(デプスが大きければ大きいほど)、それだけ水により水中の岩は不明瞭になります。

プログラマー: DestDepth は、生のデプス値(整数 0 から 2^24-1)を返します。この非線形のデプスは、次のように標準化することができます。:

   MaxZ = 16777215
   NormalizedDepth = 1 - MaxZ / (DestDepth + MaxZ)

結果として標準化されたデプスは線形で、0.0 から 1.0 の範囲になります。

Divide

Divide は、A と B の 2 つの入力を取り、B で A を除算した結果を出力します。除算は、チャンネルごとに行われます。

例: A=(1.0、0.5、-0.4) と B=(2.0、2.0、4.0) による Divide の出力は、(0.5、0.25、-0.1)。

DivideExample.jpg

DotProduct

DotProduct は、2 入力のドット積の計算に用いられ、フォールオフを計算するための多くのテクニックで使用されます。DotProduct には、同数のチャンネルを持つ 2 つの入力が必要です。

DotProductExample.jpg

DynamicParameter

DynamicParameter ノードは、パーティクルエミッタの各パーティクルのマテリアルパラメータを提供します。それらの値は、エミッタに配置されたParameterDynamic モジュールによりCascade で設定されます。

FlipBookSample

FlipBookSample ノードは、フリップブック テクスチャのための TextureSample (テクスチャサンプル) ノードです。フリップブック テクスチャとしてインポートされたテクスチャは、FlipBookSample ノードを使用する必要があります。 水面下では、FlipBookSample は必要な UV 操作を実行し、フリップブック テクスチャの HorizontalImages、VerticalImages および FrameRate のプロパティに基づいてフリップブック テクスチャのサブイメージをレンダリングします。

Flipbook.jpg

Floor

Floor は、値を次の整数まで 切り下げ ます。 Ceil と Frac を参照。

使用例: Floor of 0.2 is 0.0; Floor of (0.2,1.6) is (0.0, 1.0).

FloorExample.jpg

FoliageNormalizedRotationAxisAndAngle

このノードは RotateAboutAxis と共に使用されるようにデザインされており、マテリアルがInteractiveFoliageActorに適用された時に、コードにより自動的に値が設定されます。RGB はInteractiveFoliageActor スプリングオフセットを適用するため、軸を回転するよう法線軸が含まれています。アルファは、スプリングオフセットを適用するため、ラジアン単位の回転の角度を含んでいます。例については InteractiveFoliageActorJP をご覧ください。

FoliageImpulseDirection

このノードの値は、マテリアルがInteractiveFoliageActorに適用されると自動的にコードにより設定されます。例については InteractiveFoliageActorJP をご覧ください。

FontSampler

通常の2Dテクスチャとして、フォントリソースからテクスチャページのサンプリングを可能にします。

このフォントのアルファチャンネルはフォントのアウトライン値を含んでいます。フォントページが指定されるのみに有効です。

これについてはFontSamplerParameter もご覧ください。

FontSampler.jpg

Frac

Frac outputs tは、数の小数部分を出力します。 Ceil と Frac を参照。

使用例: Frac of 0.2 is 0.2; Frac of (0.0,1.6) is (0.0, 0.6)

FracExample.jpg

Fresnel

法線を取ります。 指数は値が大きくなればなるほど、エッジに沿ったフォールオフが「よりタイト」になります。結果は、0、1 にクランプされ、中央には負のカラーがありません。

Fresnel.jpg

If(条件文)

If ノードが 2 つの入力、A と B を比較する場合、出力は、比較の結果に基づいて選択されます。 :

 If A is less than B, the output is ALessThanB.
 If A is the same as B, the output is AEqualsB.
 If A is greater than B, the output is AGreaterThanB.

使用例: 「If」ノードを使用できます。

IfExample.jpg

LensFlareIntensity (レンズフレアインテンシティ)

このノードはレンダリングをしているレンズ フレアの 'ConeStrength' を提供します。この円錐の強度は、フレア ソースとの関連でビューの位置に関するフレアの強烈さを決定するために提供されています。 フレア ソースがレンズ フレアの範囲の外側に位置している場合、円錐の強度は 0.0 となります。(もし、レンズ フレアの範囲が 0.0f に設定されている場合、常にオンであるとみなされます。) 範囲内にある場合は、1.0f となります。 もしレンズ フレアが指向性円錐とともに設定されている場合、ビューが円錐の内部にあり、フレアの方向を向いている場合、ConeStrength は 1.0f となります。円錐の外に向かうにつれて、0.0f に落ちていきます。

LensFlareOcclusion (レンズフレアオクルージョン)

このノードはレンダリングをしているレンズ フレアのオクルージョン値を提供します。この値は、レンズ フレアの ScreenPercentageMap の参照値として使われるプリミティブ カバー パーセンテージによって決定されます。

LensFlareRadialDistance (レンズフレア距離)

このノードは、画面中央でレンダリングされている要素の半径方向距離を提供します。この値は、レンズ フレア要素の bNormalizeRadialDistance プロパティを使用することにより、0.0f (中央) から 1.0f (端) の値まで標準化することができます。そうでない限り、値は通常 0.0f (中央) から 1.0f (縦か横の端)、また 1.4f (画面の隅) にあります。1.4f は画面の幅と高さの比率になります。

LensFlareRayDistance (レンズフレア光線距離)

このノードは、レンダリングされているフレア要素に設定された光線の距離を提供します。

LensFlareSourceDistance (レンズフレアソース距離)

このノードは、レンダリングされている要素の、画面の空間にあるソースからの距離を提供します。

LightmassReplace

LightmassReplace ノードは、通常のレンダリング目的にマテリアルがコンパイルされている時に、Realtime インプットを通して渡され、グローバルイルミネーション用にマテリアルをLightmass にエクスポートしている時には、Lightmass インプットを通して渡されます。これは、WorldPositionのようなエクスポートされたバージョンが正常に処理されないマテリアル式の対応に役に立ちます。

LightVector

LightVector は、サーフェスに対するライトの方向を示す 3 チャンネル値です。

使用例: LightVector はライトがサーフェスの上を通過するにつれて、ライトからサーフェスへテクスチャを「投影する」ために使用できます。

LightVectorExample.jpg

LightVector は カスタムライティング にとって重要です。

LinearInterpolate

LinearInterpolate は、レイヤー マスク Photoshop のように、2 つのテクスチャ間のトランジションを定義するためのマスクとして考えることができます。LinearInterpolate は3 つの入力を取ります。A と B (入力のテクスチャ/カラー)とアルファ(マスク)です。マスク アルファの強さによって、テクスチャ A と B から取るカラーの比率が決まります。アルファが 1.0/白である場合、A を使用します。アルファが 0.0/黒である場合、B を使用します。アルファがグレー(0.0 と 1.0 の間)である場合、出力は、A と B のブレンドになります。

ブレンドは、チャンネルごとに起こることを覚えておいてください。したがって、アルファが RGB カラーである場合、アルファの赤のチャンネル値により、A と B の赤のチャンネルの間のブレンドが定義されます。これは、A と B の緑のチャンネルの間のブレンドを定義する、アルファの緑のチャンネルとは 無関係 です。

プログラマー: LinearInterpolate は、パラメトリック値アルファに基づいて A と B の間のチャンネルごとの lerp を実行します。

LinInterpExample.jpg

MeshEmitterVertexColor

メッシュ パーティクル上で使用するマテリアルは、このノードを使用する必要があります。

MeshEmitterVertexColor ノードは、メッシュ パーティクル エミッタに影響するカラー モジュールの出力へのマテリアルのアクセス ポイントです。メッシュ エミッタによってパーティクルとしてレンダリングされる各メッシュには、これに利用できるカラーがあります。これがそのカラーです。

プログラマー: このカラーは定数としてシェーダーに伝達され、メッシュ パーティクルの頂点ごとのカラーではありません。 MeshEmitterVColor.jpg

MeshSubUV

Sprite(スプライト)の代わりに、メッシュのParticleSubUV のようなものです。 これはメッシュパーティクルの各フレームのテクスチャ座標の再パッキングを防ぐのに使用されます。

MeshSubUV.jpg

Multiply

Photoshop の multiply レイヤー ブレンドと同様に、Multiply ノードは 2 つの入力を取り、それらを一緒に乗算して結果を出力します。乗算はチャンネルごとに生じます。

UE3 のマテリアルは、[0、1] の範囲に限定されないことを忘れないでください。カラー/値が 1 よりも大きい場合は、Multiply によってカラーが実際に明るくなります。

例: 0.4 と 0.5 の Multiply は 0.2 。(0.2、-0.4、0.6) と (0.0、2.0、1.0) の Multiply は (0.0、-0.8、0.6)。(0.2、-0.4、0.6) と 0.5 の Multiply は (0.2、-0.4、0.6)。

使用例: Multiply は、カラー/テクスチャを明るくしたり暗くしたりするために使用することがよくあります。

MultiplyExample.jpg

Normalize

Normalize は入力を標準化します。言い換えると、各コンポーネントはベクトルの L-2 norm によって除算されます。

NormalizeExample.jpg

TIP 注:Normal マテリアル出力にプラグインする式を標準化する必要はありません。

ObjectRadius

オブジェクトの境界のワールドスペース半径です。アクティブなビューポート(ビューポートの上部の下向き矢印にて)の'show bounds' (境界を表示)ビューモードを有効にすることで、あらゆるオブジェクトの境界をプレビューできます。例については ObjectWorldPosition をご覧ください。

ObjectWorldPosition

オブジェクトの境界のワールドスペース中心ポジションです。これはfoliage(フォーリッジ)などの球体のライティングを作成するのに便利です。

このパーティクルシステムはobject positionにて1の値、また、下記のノード設定を使うobject radiusでは0の値を持つ勾配を作成するため、object position、 world position および object radiusを使用しています。
ObjectPosition.jpg
ObjectPositionNodes.jpg

OneMinus

OneMinus は一つの入力値を取り、1 からその値を引いた値を出力します。

例: 0.4 の OneMinus は 0.6 。(0.2、0.5、1.0) の OneMinus は (0.8、0.5、0.0) 。(0.0、-0.4、1.6) の OneMinus は (1.0、1.4、-0.6)。

使用例: 入力のカラーが [0、1] の範囲にある場合、OneMinus は通常「反転」と呼ばれるのと同じ効果を持ちます。すなわち、入力に追加したときに白になる補完的カラーを返します。

OneMinus.jpg

Panner

Panner はパニング テクスチャを作成するために使用します。水平および垂直のテクスチャ パニングのスピードは、SpeedX および SpeedY プロパティにより、独立してコントロールできます。

Panner により、Time 入力に応じて変化する UV が生成します。Panner ノードによって生成される UV を操作する(オフセットなど)ために座標入力を使用できます。

PannerExample.jpg

ParticleMacroUV

ParticleMacroUV は、連続的にパーティクルシステム全体であらゆる2Dテクスチャをマップするために使用されるテクスチャ座標です。これにより、テクスチャがパーティクル中でシームレスになります。UVはMacroUVPosition (MacroUV カテゴリ下のParticleSystemのCascadeで指定される ) で中心に置かれ、MacroUVRadius はUVがタイル化されるworld space radius(ワールドスペース半径) を決定します。ParticleMacroUV ノードは、法線テクスチ座標の各パーティクルテクスチャのマッピングにより導入されたパターンをブレイクするため、パーティクル上にノイズを持続的にマッピングするのに便利です。

MacroUV.jpg

ParticleMacroUV にはbUseViewSpaceと呼ばれるオプションがあり、これは各sprite(スプライト)のデプスを元にした座標を効果的にオフセットし、視差効果を生み出します。この視差効果は、放射状のブラーがかかった爆発効果に有用です。

MacroUVViewSpace.jpg

ParticleSubUV

ParticleSubUV は、テクスチャのサブイメージをパーティクルにレンダリングするために使用します。ParticleSubUV は、ParticleSubUV によりテクスチャ アニメーションが 「カスケード?」で操作ができること以外は、フリップブックと同じです。

ParticleSubUV の UV 入力は無視され、何も実行されません。

ParticleSubUV.jpg

PixelDepth

PixelDepth ノードは、現在レンダリングされているピクセルのデプスを出力します。値の使用に関する詳細は、DestDepth を参照してください。

Power

Power ノードは、 Base および Exp の 2 つの入力を取ります。出力は Exp パワーに累乗された Base です。言い換えると、Base はそれ自体で Exp 回乗算されます。

例: Base 0.5、Exp 2.0 の Power は 0.25 。

使用例: Power に渡すカラーが [0、1] である場合、Power は明るい方の値が残っているところのみに、コントラスト調節として機能することができます。

Power.jpg

ReflectionVector

ReflectonVector は、本質的には CameraVector (カメラベクトル) に似ています。ReflectonVector の出力は、カメラからサーフェス上の点へのベクトルを法線で反射させた方向となります。

使用例: ReflectionVector は環境マップで使用するのが普通です。環境マップでは、反射ベクトルの x/y コンポーネントが、キューブマップ テクスチャへの UV として使用されます。

ReflectionVectorExample.jpg

Rotator

Rotator は、回転するテクスチャを作成するために使用します。回転スピードは Speed プロパティでコントロールでき、回転の中心は CenterX と CenterY のプロパティで選択できます。

Rotator により、Time 入力に応じて変化する UV が生成します。座標入力を使用して、ローテータ ノードによって生成する UV を操作(オフセットなど)できます。

RotatorExample.jpg

RotateAboutAxis

このノードは回転軸、軸上の点、および回転角度が与えられているPosition インプットを回転します。単純なシェーダよりもより良いクオリティを持つWorldPositionOffse を使用しているアニメーションに役に立ちます。例については InteractiveFoliageActorJP をご覧ください。

ScalarParameter

ScalarParameter ノードは、単一数字 ( Constant ) (定数) に露出するため、値はコードによって即座にアクセスし、変更することができます。ScalarParameter の Name プロパティは、コードが定数にアクセスするために使用する名前です。DefaultValue (デフォルト値) は、定数が取る初期値です。

ScalarExample.jpg

SceneDepth

DestDepth と同様に、SceneDepth は既存のシーン デプスをサンプルします。DestDepth と SceneDepth が異なる点は、DestDepth が現在描かれているピクセルでのみ既存のシーン デプスをサンプルすることができるのに対して、SceneDepth はすべての位置でデプスをサンプルできることです。UV 入力の値によって、サンプルを描き始める位置を指定します。

プログラマー: SceneDepth は、生のデプス値(整数 0 から 2^24-1)を返します。この非線形デプスは、次のように標準化できます。:

   MaxZ = 16777215
   NormalizedDepth = 1 - MaxZ / (SceneDepth + MaxZ)

結果として標準化されたデプスは線形で、0.0 から 1.0 の範囲です。

SceneTexture

DestColor と同様に、SceneTexture は既存のシーン カラーをサンプルします。DestColor と SceneTexture の異なる点は、DestColor が、現在描かれているピクセルでのみカラーをサンプルできるのに対して、SceneTexture は、 すべての位置 でカラーをサンプルできることです。UV 入力の値で、サンプルを描き始める位置を指定します。

SceneTexture.jpg

ScreenPosition

ScreenPosition ノードによって、現在レンダリングされているピクセルのワールドスペース位置へのアクセスが提供されます。ScreenAlign (スクリーンアラインメント) プロパティがチェックされている場合、ScreenPosition は均一な座標によって位置を分割し、スクリーン アラインメントのために位置を [-1、-1]-[1、1] にマップします。

ScreenPosition.jpg

Sine

Sine は、関数として正弦波を出力するノードで、その入力は通常 Time ノードに接続されています。Sine ノードには、シグナルの周期(リピート レート)を設定するための「周期」プロパティがあります。

SineExample.jpg

SquareRoot

SquareRoot は入力の平方根を計算します。SquareRoot は、シングルチャンネルの入力でのみ機能します。

Subtract

Subtract ノードは A と B の 2 つの入力を取り、A-B を出力します。減算はチャンネルごとに起きます。

例: 0.5 と 0.2 の Subtract は 0.3。(0.2、-0.4、0.6) と (0.1、0.1、1.0) の Subtract は (0.1、-0.5、-0.4)。(0.2、0.4、1.0) と 0.2 の Subtract は (0.0、0.2、0.8)。

使用例: Subtract は、カラーを暗くしたり UV をオフセットしたりするのに使用できます。

SubtractExample.jpg

Static Switch Parameter (静的スイッチ パラメータ)

静的スイッチ パラメータ ノードは、2 つの入力 A と B、そしてパラメータの値が true なら出力 A を、そうでない場合は B を取ります。これらのパラメータは静的と名付けられています。というのは、実行時に変更できず、MaterialInstanceEditor? 内のみで設定できるからです。静的スイッチはコンパイル時に適用されるのであり、実行時ではありません。これは、マテリアルが落とされたいかなるブランチも実行されることはないので、静的スイッチは実行時に事実上フリーであるということを意味します。一方で、マテリアルの新しいバージョンは、マテリアル内の静的パラメータの使用されたコンビネーションごとにコンパイルされなければいけません。これは、濫用されるとシェーダ エクスプロージョンの原因となります。マテリアル内の静的パラメータ数と、実際に使われている静的パラメータの置換数を最小限に抑えるようにしてください。

例となる使用法: 静的スイッチは、マテリアルのブランチ全体をランタイム コストなしで取り除くことに使用できます。インスタンスは異なった値を持つことが可能です。これにより、性能の損失がなしでテンプレート シェーダの設定ができます。

StaticSwitch.jpg

Static Component Mask Parameter (静的コンポーネント マスク パラメータ)

静的コンポーネント マスク パラメータは、通常のコンポーネント マスクとほぼ変わらないふるまいを持ちますが、マスク値がインスタンスにより設定されることに違いがあります。これは、実行時に変更できず、MaterialInstanceEditor? 内のみで設定できるので、静的です。静的コンポーネント マスクはコンパイル時に適用されるのであり、実行時ではありません。マテリアルの新しいバージョンは、マテリアル内の静的パラメータの使用されたコンビネーションごとにコンパイルされなければいけません。これは、濫用されるとシェーダ エクスプロージョンの原因となります。マテリアル内の静的パラメータ数と、実際に使われている静的パラメータの置換数を最小限に抑えるようにしてください。

例となる使用法: 静的コンポーネント マスクは、インスタンスにどのマスク テクスチャのチャンネルを使用するかを選ばせるのに使用することができます。もしマスクが静的な場合は (実行時に変更する必要はありません)、チャンネルをマスクするベクトル パラメータによってテクスチャ参照を増加させる代わりに、このアプローチが常に使用されるべきです。なぜならば、これはテクスチャ処理能力とシェーダ指示を無駄にしてしまうからです。

StaticComponentMask.jpg

TextureCoordinate

TextureCoordinate ノードによって、マテリアルは異なる UV チャンネルを使用することができ、その他にメッシュの UV 上で動作できます。例えば、TextureCoordinate にはテクスチャ座標をタイリングする回数を示す Tiling (タイリング) プロパティがあります。

使用例: メッシュの 2 つめの UV チャンネルにアクセスするために、TextureCoordinate ノードを作成し、CoordinateIndex (座標インデックス) を 1(0 - 最初のチャンネル、1 - 2 つめのチャンネル、など)にセットし、TextureSample (テクスチャサンプル) ノードの UV 入力に接続します。

TextureCoordinateExample.jpg

TextureSample

TextureSample は、テクスチャを表すノードです。簡単でシンプルです。

TextureSample ノードによって使用するテクスチャをセットするためには、まず汎用ブラウザでテクスチャを選択します。次にノードのプロパティ ウィンドウにある Texture プロパティを選択し、[Use Current Selection] (現在の選択を使う) ボタンをクリックします。

TextureSample ノードの出力は、個々のカラー チャンネルを他のノードの入力に接続するために使用できます。すべてにわたって、TextureSample の出力は RGBA、赤、緑、青、そしてアルファです。

テクスチャがアルファ チャンネルを含まない場合は、「アルファ」チャンネルを何かに接続してゼロ(黒)の結果を得ますが、これは技術的に有効です。

デフォルトでは、TextureSample ノードはマテリアルが適用されているメッシュのテクスチャ座標を使用します。これらのテクスチャは、別のノードを UV 入力に接続することによって修正できます。例えば、Panner (パナー) ノードを UV 入力に接続して、パニング テクスチャを作成できます。

TextureSample がキューブマップ テクスチャを示さない場合、UV 座標は、2 チャンネル値ではなく 3 チャンネル値にする必要があります。

TextureSampleExample.jpg

TextureSampleParameter2D

ScalarParameter のように、露出値が、単一の値でないキューブマップ テクスチャである場合を除きます。

---+++ TextureSampleParameterCube

ScalarParameter のように、露出値が、単一の値でないキューブマップ テクスチャである場合を除きます。

TextureSampleParameterMovie

Like a ScalarParameter のように、露出値が単一の値でないムービー テクスチャである場合を除きます。

TextureSampleParameterNormal

法線マップに使用されているパラメータを指定時、なぜこのコードがTextureSampleParameter2D に対して好ましいかの説明については 法線マップフォーマット ドキュメント をご覧ください。

Time

Time ノードは、マテリアルに時間の経過を追加するために使用します。 Panner , Cosine ,またはその他の時間依存の操作などがあります。bIgnorePause プロパティがチェックされている場合は、ゲームが一時停止されても Time は継続します。

TimeExample.jpg

Transform

警告: VertexColor は補間が限定されているため Translform ノードとは互いに排他的です。Transform ノード および VertexColorの両者を使用した場合は VertexColor がすべて真っ白になります。

警告:現在、transform ノードは不均一なスケーリングを正確に処理していません。

デフォルトでは、マテリアルのすべてのシェーダー計算は接ベクトル空間で行われます。ベクトル定数、カメラ ベクトル、ライト ベクトルなどはすべて、マテリアルで使用される前に接ベクトル空間に変換されます。

Transform ノードにより、すべての 3 ベクトル値をその他の空間に変換することができます。TransformType (変換タイプ) プロパティでターゲット空間を指定しますが、これは、ワールド、ビュー、またはローカル空間の一つです。

Transform ノードで、ミラーされた UV が説明されます。例えば、キャラクタの右のエッジにのみ影響する強調が可能です。

Transform ノードは、キューブマップをサンプリングするためのワールド空間法線を生成するのに役立ちます。法線マップをワールド空間に変換することができます。以下の例は、キューブマップをサンプルするために法線をワールド空間に変換するものです。:

TransformExample1.jpg

ビュー空間へ法線を変換することは、真横向きの効果を作成するのに使用できます。この効果は、テクスチャ座標を生成するためにメッシュ法線を使用して達成できます(一般に「Sphere Mapping」 (球マッピング) と呼ばれる)。この方法を使用すると、カメラにまっすぐ面している法線はテクスチャ座標の中心にマップされ、カメラに垂直に面している法線はテクスチャ座標のエッジにマップされます。ここに、球マッピングの例があります。:

CT_SphereMap01.jpg

このマテリアルは、ライセンス取得者用のビルドにあります。: UTGame\DemoContent\Packages\UDN_ExampleMaterials\CoordinateTransform\Mat erials\ M_UDN_EM_CoordinateTransform_Materials_SphereMap01

(0、0、1) の値を持つ Constant3Vector (3 成分定数ベクトル) は、TRANSFORM_View セットを持つ Transform に供給され、次に ComponentMask (R および G のみを通る)を通って渡されます。Transform は、-1 から 1 までの範囲の値を出力するため、値を 0-1 の範囲に入れるためにバイアスする必要があります。このためには 0.5 を乗算して、次に 0.5 を加算します。その次に、その値をテクスチャの座標にプラグインするだけです。どのようなテクスチャでも機能します。筆者は、効果を際だたせるために 3 つのリングを使用して 1 つのテクスチャを作りました。

CT_SphereMap_Texture01.jpg

法線マップでこの効果を使用するためには、Constant3Vector を法線マップ テクスチャと取り換えるだけです。

ここに、小塊のような岩のメッシュに適用する SphereMap (球マップ) マテリアルの例があります。:

CT_BlobMesh01.jpg

TransformPosition

このノードは、原点からワールドの位置を導いた場合、精度に大きな問題があり、非推奨となっています。これの代わりに WorldPosition ノードを使ってください。

TransformPosition ノードは、いかなる位置をも画面の空間から、式の TransformType 変数で指定された目標空間に変換することができます。現在は、ワールドの空間への変換のみがサポートされています。この式は、マテリアル内のワールド空間座標を得るのに使用することができます。ワールド位置を視覚化するには、Emissive に直接接続してください。:

TransformPosition1.jpg

ワールド位置をプレイナー テクスチャ座標として使用することもできます。:

TransformPosition2.jpg

WorldPosition

WorldPosition ノードは、ワールド空間内の現在のピクセルの位置です。視覚化するには、出力を Emissive に接続するだけです。:

WorldPosition.jpg

一般的な使用法は、(PixelDepth からの直交距離でなく) カメラからピクセルまでの半径方向距離を調べることです。WorldPosition はテクスチャ座標として使用し、非関連のメッシュがお互いに近い場合に、テクスチャ座標を使ってマッチさせるのに使用するのも便利です。以下が WorldPosition.xy を使ってテクスチャをプレイナー マップする基本的な例です。:

WorldPosPlanarMap.jpg

WorldNormal

このノードは、 WorldPositionOffsetJP のような頂点シェーダで実行されたマテリアルインプットで使用されます。これによりワールドスペース頂点法線が提供されます。これはメッシュを大きくしたり小さくしたりするのに役に立ちます。法線に沿ってポジションをオフセットすることは、UVシームに沿ってジオメトリを分割する原因となります。

VectorParameter

ScalarParameter のように、露出値が、単一の値ではなくマルチチャンネル値である場合を除きます。

VectorParameterExample.jpg

VertexColor

Like a MeshEmitterVertexColor except for sprite particles.

警告: VertexColor は補間が限定されているため Translform ノードとは互いに排他的です。Transform ノード および VertexColorの両者を使用した場合は VertexColor がすべて真っ白になります。

プログラマー: スプライト パーティクルでは、カラーは頂点ごとにシェーダーに伝達されますが、それに対してメッシュ パーティクルのカラーはシェーダー定数としてセットされます。

WindDirectionAndSpeed

このノードは、影響を与えているあらゆるwind アクタ(WindDirectionalSource またはWindPointSource)を元にしたコードにより設定されます。RGBは強度によりスケールされた(wind)風の方向を含んでいて、アルファチャンネルは、wind アクタからのスピードを含んでいます。複数のwind アクタが影響している場合、それらのアトリビュートはウェイトを元にブレンドされます。WindPointSourceについては、このノードでマテリアルを使用しているオブジェクトがソースに近いほど、WindDirectionAndSpeed でのソースの影響がさらに強くなるということです。このノードは、 WorldPositionOffsetJP と使用するとコストの安いWind(風)アニメーションを作成するのに便利です。