Render TOPは、TouchDesignerのすべての3Dシーンをレンダリングするために使用します。最低限カメラオブジェクトとジオメトリオブジェクトを設定する必要があります。
ジオメトリオブジェクトには、マテリアルが割り当てられている必要があります。マテリアルには、Phongマテリアルのようなパッケージ済みのものや、OpenGL GLSLシェーダーを使用することができます。TouchDesignerマテリアルのテクスチャとバンプマップはすべてTOPです。
TouchDesignerのレンダリングは、レンダリングTOPをはじめとするすべてのTOPを使ったコンポジットと連携しています。
Render TOPは、多くのRGBAおよびシングルチャンネルフォーマットで、8ビット固定小数点から32ビット浮動小数点までのピクセルコンポーネントごとにレンダリングします。
Multi-Pass Depth Peelingを使用して透明なサーフェスを正しくレンダリングすることができます。Order Independent Transparencyの章を参照してください。
マルチ・カメラ:Render TOPは、1つのノードで複数のカメラを(別々にレンダリングするよりも)高速にレンダリングすることができます。1つのCameraパラメータで複数のカメラを指定し、Render Select TOPを使用してそれらのカメラの結果を出力します。この機能は、マルチカメラレンダリングをサポートしているGPUではさらに高速です。
Rendering、Rendering Categoryのすべての章、Render Pass TOP、およびトラブルシューティング・ページのWhy is My Render Blackの章も参照してください。
注意: 非リアルタイムGPU集約型レンダリング(1つのSOPをレンダリングするのに数秒かかるもの)を行っている場合は、Movie File Out TOPのWindows GPU Driver Timeoutsの注意事項を参照してください。
シーンをレンダリングする際に、どのカメラを参照するかを設定します。複数のカメラ設定し、Render Select TOPで各カメラ画像を取得することができます。
複数のカメラを使用している場合に、Render TOPがレンダリングを最適化するのに役立ちます。このノードのマルチカメラレンダリングの動作を制御します。
- Automatic / automatic
ノードはGPUとセットアップに基づいてマルチカメラレンダリングが使用できるか判断し、可能であれば有効にします。現在、マルチカメラレンダリングは、サポートされているGPU上での2Dおよび Cube Map レンダリングで動作します。2D レンダリングは、複数のカメラの Camera Light Mask パラメータがシーンで同じライトを使用しない場合、複数のカメラを 1 回のパスでレンダリングすることはできません。Depth Peeling や Order Independent Transparency を使用すると、マルチカメラレンダリングは無効になります。
- Off (One Pass Per Camera) / off
マルチカメラレンダリングを強制的に無効にして、各カメラを1パスずつレンダリングします。
- X-Offset Stereo Cameras / stereocameras
ほとんどの VR ヘッドセットの場合のように、適用後に X 軸のみに違いが生じるような変換/投影マトリクスをカメラのペアが持っている場合に設定する必要があります。FOV、near/far plane などのカメラ間のその他の違いは無視され、最初のカメラの値が使用されます。このヒントにより、適切なハードウェアが利用可能な場合には、この特定のケースでTOPを高速に実行することができます。
レンダリングするシーンに含むジオメトリを設定します。Pattern Matchingを使用してオブジェクトを指定することができます。例:geo* ^geo7 とすると、 名前がgeo7 以外で geo で始まるすべてのジオメトリコンポーネントでがレンダリングされます。
シーンのレンダリングに使用するライトを指定します。ここでもPattern Matchingを使用することができます。
シーンのアンチエイリアスのレベルを設定します。これを高い値に設定すると、より多くのグラフィックメモリを使用します。
- 1x (Off) / aa1
- 2x / aa2
- 4x / aa4
- 8x (Medium) / aa8mid
- 8x (High) / aa8high
- 16x (Low) / aa16low
- 16x (Medium) / aa16mid
- 16x (High) / aa16high
- 32x / aa32
通常の2D、キューブマップ、フィッシュアイ(180)、デュアルパラボロイドなどの異なる投影をレンダリングできます。キューブマップは、Phong MATやEnvironment Light COMPの環境マップに必要な6つのビューをレンダリングします。
Cube Map TOP と Projection TOP も参照してください。
- 2D / render2d
- Cube Map / cubemap
- Fish-Eye (180) / fisheye180
- Dual Paraboloid / dualparaboloid
- UV Unwrap / uvunwrap
Render ModeがCube Mapの場合、キューブマップをレンダリングする際に、+X, +Y, +Zのいずれの面をレンダリングするかを設定します。
- Positive Sides / possidex
- Positive Sides / possidey
- Positive Sides / possidez
Render ModeがCube Mapの場合、キューブマップをレンダリングする際に、-X, -Y, -Zのいずれの面をレンダリングするかを設定します。
- Negative Sides / negsidex
- Negative Sides / negsidey
- Negative Sides / negsidez
レンダリング モードが UV Unwrap Coord の場合、座標をレンダリングするテクスチャ レイヤを設定します。
透過ジオメトリを適切な深度順にレンダリングするのに役立ちます。これにより、カメラからの距離に基づいてジオメトリをソートする必要がなくなります。この処理はマルチパスです。すべてのピクセルに対して、最初のパスで最も近いサーフェスがレンダリングされ、2番目に近いサーフェスが2番目にレンダリングされ、以下のTransparency Passesパラメータで指定されたパス数までレンダリングされます。このオプションをオンにすると、Render TOPの高度な機能の一部とアンチエイリアシングが無効になります。
この機能はピクセルベースのアプローチであり、オブジェクトベースではありません。そのため、その性能はオブジェクトの数に直接関係するものではなく、それらがどのようにレイヤー化されているかに直接関係しています。
これはDepth Peelingと呼ばれる技術を使用しています。最初に通常のフレームをレンダリングします。次のレンダリングでは、最初のフレームで見えたピクセルをすべて剥がし、その奥のピクセルを明らかにします。次のフレームも同じように、2回目のレンダリングで見えたピクセルを剥がします。このようにして、次のフレームも同じようにします。すべてのレンダリングが終わったら、一番奥のレイヤーから順に、それぞれのレイヤーを重ねて合成していきます。
例えば球体を例にすると、1回目は球体の正面、2回目は球体の内側をパスするというように、2回のパスが必要になります。
10個の球体があった場合、ある球体は他の球体の後ろになります。正しいイメージを得るためには19〜20回のパスが必要です。
もし10個の球体が隣り合っているなら、2回のパスが必要になります。
許容できるイメージを得るためには、実際には3-5回のパスが必要になります。100%正確ではないかもしれませんが、ほぼ正確に見えます。
各パスはフルレンダリングなので、かなりのオーバーヘッドが発生します。
- Sorted Draw with Blending / sortedblending
- Order Independent Transparency / orderind
- Alpha-to-Coverage / alphatocoverage
Depth peelingは、順序に依存しない透明度の一部として使用される技法ですが、このパラメータを使用することで別の方法で使用することができます。このパラメータを使用すると、順序に依存しない透明度を作成するためにブレンドを使用してすべてのレイヤーを結合せずに、Depth peelingをレンダリングすることができます。その代わり、すべてのレイヤーは分離された状態で保持され、 レンダリング選択トップを使用して検索することができます。Depth peelingは、最初に通常のジオメトリをレンダリングし、そのイメージとデプスを保存することで行われます。その後、別のレンダリングが行われますが、前のパスで遮られた最も近いピクセルが代わりにカラーバッファに書き込まれます。これは複数回行うことができ、その都度、シーンの奥へと戻っていくことになります。球体をレンダリングしている場合、最初のレンダリングは球体の外側になり、2回目の剥離レイヤーは球体の内側になります。
Order Independant Transparency をオンにしたときにレンダラーが使用するパスの数を設定します。
レンダリングを有効にします。 1 =オン、0 =オフ。
レンダリングをディザ処理します。8 ビットディスプレイの精度制限によって生じるバンディングやその他のアーチファクトに対処するのに役立ちます。
これは、このパスのカラー結果が実際に必要ない場合の最適化です。 これをオフにすると、オフスクリーンレンダリングバッファからTOPのテクスチャへのコピーが回避されます。 アンチエイリアシングが有効になっている場合、これをオフにすると、アンチエイリアシングのresolvingも回避されます。
これにより、レンダーはデプスバッファに深度値のみを描画します。カラー値は作成されません。デプスバッファを利用するには、Depth TOPを使用します。
どんなシェーダを書いても、一度に複数のRGBAバッファに出力することができます。GLSL 3.3+では、ピクセルシェーダのout変数にlayout(location = 1)指定子を使用して、2つ目のバッファに書き込むことになります。GLSL 1.2 では、シェーダ内の gl_FragColor に書き込む代わりに、gl_FragData[i] に書き込みます。
ブレンド(MAT共通ページ設定で有効になっている)が、最初のバッファ以外の余分なバッファに対して有効になるかどうかを設定します。多くの場合、余分なバッファは、法線や位置など、ブレンディングが望ましくない他のタイプの情報を書き込むために使用されます。
24ビット固定小数点または32ビット浮動小数点のデプスバッファ(シングルチャンネルイメージ)を使用します。
- 24-Bit Fixed-Point / fixed24
- 32-Bit Floating-Point / float32
カメラに対する向きに応じて、特定のポリゴン面のレンダリングを回避します。詳細については、Back-Face Cullingの章を参照してください。
- Neither / neither
- Back Faces / backfaces
- Front Faces / frontfaces
- Both Faces / bothfaces
Render TOPでレンダリングされるすべてのジオメトリに適用するマテリアルを設定することができます。ライティングしてRGBを出力するのではなく、ジオメトリに関する情報を出力するプリプロセスパスに便利です。
この機能は、ポリゴンをわずかにスペースに戻します。これは2 つのポリゴンを直接重ねてレンダリングする時、Z-Fighting が発生している場合に便利です。詳細については、Polygon Depth Offsetの章を参照してください。これは、シャドウを行う際にも重要な機能です。
サーフェスがビューアに対してどの程度傾斜しているかに応じて、Z値にオフセットを追加します。
Z値に一定のオフセットを追加します。
この機能は、シーン内のオーバードローを視覚的に表示します。詳細については、Early Depth-Testの章を参照してください。特にAnalyzing Overdrawのセクションを参照してください。
この機能は、シーン内のオーバードローを視覚的に表示します。詳細については、Early Depth-Testの章を参照してください。特にAnalyzing Overdrawのセクションを参照してください。
レンダリングされたイメージの左端の位置を設定します。
Crop Left パラメータの単位を Pixels、Fraction(0-1)、Fraction Aspect(アスペクト比を考慮した0-1)から選択します。
- P / pixels
- F / fraction
- A / fractionaspect
レンダリングされたイメージの右端の位置を設定します。
Crop Right パラメータの単位を Pixels、Fraction(0-1)、Fraction Aspect(アスペクト比を考慮した0-1)から選択します。
- P / pixels
- F / fraction
- A / fractionaspect
レンダリングされたイメージの下端の位置を設定します。
Crop Bottom パラメータの単位を Pixels、Fraction(0-1)、Fraction Aspect(アスペクト比を考慮した0-1)から選択します。
- P / pixels
- F / fraction
- A / fractionaspect
レンダリングされたイメージの上端の位置を設定します。
Crop Top パラメータの単位を Pixels、Fraction(0-1)、Fraction Aspect(アスペクト比を考慮した0-1)から選択します。
- P / pixels
- F / fraction
- A / fractionaspect
Image Output を使用すると、imageStore()およびimageLoad()GLSLを使用して、image2D、image3DなどのGLSLユニフォームに任意のデータを読み書きできます。 これにより、レンダリングプロセス中に追加のデータを保存/ロードして、後で使用することができます。 ユニフォームは、選択されたImage Outputのタイプに応じて、これらの配列の1つに名前が付けられます。mTD2DImageOutputs[]、mTD2DArrayImageOutputs []、mTD3DImageOutputs []、mTDCubeImageOutputs []。 現在サポートされているイメージ出力は1つだけなので、これらにアクセスするには常にインデックス[0]を使用する必要があります。
Image Output の解像度。これは、メインレンダリングが行っている解像度と同じである必要はありません。
- Resolution / imageresw
- Resolution / imageresh
イメージの各チャンネルのデータを保存するために使用されるフォーマット (例: R、G、B、A)。詳細は Pixel Formatsの章 を参照してください。
- Use Output / useoutput
Render TOPのCommonパラメータページで設定した出力ピクセルフォーマットを使用します。
- 8-bit fixed (RGBA) / rgba8fixed
各チャンネルに8ビットの整数値を使用します。
- sRGB 8-bit fixed (RGBA) / srgba8fixed
各チャンネルに8ビットの整数値を使用し、sRGB色空間に色を格納します。ただし、これはピクセル値に sRGB カーブを適用するのではなく、sRGB カーブを使用して格納することに注意してください。つまり、暗い値にはより多くのデータが使用され、明るい値にはより少ないデータが使用されます。値が下流に読み込まれると、それらの値は線形に変換されます。詳細はsRGBの章を参照してください。
- 16-bit float (RGBA) / rgba16float
カラーチャンネルあたり16ビット、ピクセルあたり64ビットを使用しています。
- 32-bit float (RGBA) / rgba32float
カラーチャンネルあたり32ビット、ピクセルあたり128ビットを使用しています。
- 10-bit RGB, 2-bit Alpha, fixed (RGBA) / rgb10a2fixed
カラーチャンネルごとに10ビット、アルファに2ビット、1ピクセルあたり合計32ビットを使用しています。
- 16-bit fixed (RGBA) / rgba16fixed
カラーチャンネルあたり16ビット、1ピクセルあたり合計64ビットを使用しています。
- 11-bit float (RGB), Positive Values Only / rgba11float
RGB浮動小数点フォーマットで、赤と緑のチャンネルが11ビット、青のチャンネルが10ビットで、1ピクセルあたり合計32ビットです(したがって、8ビットRGBAと同じメモリ使用量)。このフォーマットのアルファチャンネルは常に1です。値は 1 以上にすることができますが、負の値にすることはできません。
- 16-bit float (RGB) / rgb16float
- 32-bit float (RGB) / rgb32float
- 8-bit fixed (Mono) / mono8fixed
シングルチャンネルで、RGBはすべて同じ値を持ち、Alphaは1.0になります。ピクセルあたり8ビット。
- 16-bit fixed (Mono) / mono16fixed
シングルチャンネルで、RGBはすべて同じ値を持ち、Alphaは1.0になります。ピクセルあたり16ビット。
- 16-bit float (Mono) / mono16float
シングルチャンネルで、RGBはすべて同じ値を持ち、Alphaは1.0になります。ピクセルあたり16ビット。
- 32-bit float (Mono) / mono32float
シングルチャンネルで、RGBはすべて同じ値を持ち、Alphaは1.0になります。ピクセルあたり32ビット。
- 8-bit fixed (RG) / rg8fixed
2チャンネルフォーマットで、RとGは値を持ち、Bは常に0、Alphaは1.0です。1チャンネルあたり8ビット、1ピクセルあたり合計16ビット。
- 16-bit fixed (RG) / rg16fixed
2チャンネルフォーマットで、RとGは値を持ち、Bは常に0、Alphaは1.0です。1チャンネルあたり16ビット、1ピクセルあたり合計32ビット。
- 16-bit float (RG) / rg16float
2チャンネルフォーマットで、RとGは値を持ち、Bは常に0、Alphaは1.0です。1チャンネルあたり16ビット、1ピクセルあたり合計32ビット。
- 32-bit float (RG) / rg32float
2チャンネルフォーマットで、RとGは値を持ち、Bは常に0、Alphaは1.0です。1チャンネルあたり32ビット、1ピクセルあたり合計64ビット。
- 8-bit fixed (A) / a8fixed
1チャンネルあたり8ビット、1ピクセルあたり8ビットのアルファ専用フォーマット。
- 16-bit fixed (A) / a16fixed
1チャンネルあたり16ビット、1ピクセルあたり16ビットのアルファ専用フォーマット。
- 16-bit float (A) / a16float
1チャンネルあたり16ビット、1ピクセルあたり16ビットのアルファ専用フォーマット。
- 32-bit float (A) / a32float
1チャンネルあたり32ビット、1ピクセルあたり32ビットのアルファ専用フォーマット。
- 8-bit fixed (Mono+Alpha) / monoalpha8fixed
2チャンネルのフォーマットで、RGBに1つの値、アルファに1つの値。チャンネルあたり8ビット、ピクセルあたり16ビット。
- 16-bit fixed (Mono+Alpha) / monoalpha16fixed
2チャンネルのフォーマットで、RGBに1つの値、アルファに1つの値。チャネルあたり16ビット、ピクセルあたり32ビット。
- 16-bit float (Mono+Alpha) / monoalpha16float
2チャンネルのフォーマットで、RGBに1つの値、アルファに1つの値。チャネルあたり16ビット、ピクセルあたり32ビット。
- 32-bit float (Mono+Alpha) / monoalpha32float
2チャンネルのフォーマットで、RGBに1つの値、アルファに1つの値。1チャンネルあたり32ビット、1ピクセルあたり64ビット。
イメージ出力で作成するテクスチャの種類を設定します。
- 2D Texture / texture2d
2Dテクスチャを作成します。
- 2D Texture Array / texture2darray
2D テクスチャ配列を作成します。配列のスライスは、w座標に正規化されていない整数インデックスを使用してアクセスすることができます。
- 3D Texture / texture3d
3D テクスチャを作成します。配列のスライスは、0~1の範囲のw座標を使用してアクセスできます。スライス間のテクスチャの値は補間されます。
- Cube Texture / texturecube
キューブマップテクスチャを作成します。
出力タイプが2D Texture Arrayまたは3D Textureの場合のデプスを設定します。
出力テクスチャのアクセス方法を設定します。テクスチャが読み込まれる場合(前のフレームの値を使用するなど)、アクセスは Write Only ではなく Read-Write に変更する必要があります。
- Write Only / writeonly
- Read-Write / readwrite
GLSLプログラムがこのTOPからサンプリングするために使用するサンプラー名を設定します。サンプラーはTOPと同じ寸法で宣言する必要があります。(2D TOPの場合はsampler2D、3D TOPの場合はsampler3D)
上のサンプラー名を参照するTOPを設定します。
- Hold / hold
- Zero / zero
- Repeat / repeat
- Mirror / mirror
- Hold / hold
- Zero / zero
- Repeat / repeat
- Mirror / mirror
- Hold / hold
- Zero / zero
- Repeat / repeat
- Mirror / mirror
- Nearest / nearest
- Linear / linear
- Mipmap Linear / mipmaplinear
- Off / off
- 2x / 2x
- 4x / 4x
- 8x / 8x
- 16x / 16x
シェーダで宣言されているユニフォーム名。
ユニフォームに割り当てる値。ユニフォームが float の場合は 4 つのエントリのうち最初のエントリが使用され、vec2 の場合は最初の 2 つのエントリが使用されます。
- Value / value0x
- Value / value0y
- Value / value0z
- Value / value0w
参照:共通 Common ページ