Render TOP

概要

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 ページ
Camera(s) / camera

シーンをレンダリングする際に、どのカメラを参照するかを設定します。複数のカメラ設定し、Render Select TOPで各カメラ画像を取得することができます。

Multi-Camera Hint / multicamerahint

複数のカメラを使用している場合に、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を高速に実行することができます。
Geometry / geometry

レンダリングするシーンに含むジオメトリを設定します。Pattern Matchingを使用してオブジェクトを指定することができます。例:geo* ^geo7 とすると、 名前がgeo7 以外で geo で始まるすべてのジオメトリコンポーネントでがレンダリングされます。

Lights / lights

シーンのレンダリングに使用するライトを指定します。ここでもPattern Matchingを使用することができます。

Anti-Alias / antialias

シーンのアンチエイリアスのレベルを設定します。これを高い値に設定すると、より多くのグラフィックメモリを使用します。

  • 1x (Off) / aa1
  • 2x / aa2
  • 4x / aa4
  • 8x (Medium) / aa8mid
  • 8x (High) / aa8high
  • 16x (Low) / aa16low
  • 16x (Medium) / aa16mid
  • 16x (High) / aa16high
  • 32x / aa32
Render Mode / rendermode

通常の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
Positive Sides / posside

Render ModeがCube Mapの場合、キューブマップをレンダリングする際に、+X, +Y, +Zのいずれの面をレンダリングするかを設定します。

  • Positive Sides / possidex
  • Positive Sides / possidey
  • Positive Sides / possidez
Negative Sides / negside

Render ModeがCube Mapの場合、キューブマップをレンダリングする際に、-X, -Y, -Zのいずれの面をレンダリングするかを設定します。

  • Negative Sides / negsidex
  • Negative Sides / negsidey
  • Negative Sides / negsidez
UV Unwrap Coord / uvunwrapcoord

レンダリング モードが UV Unwrap Coord の場合、座標をレンダリングするテクスチャ レイヤを設定します。

Transparency / transparency

透過ジオメトリを適切な深度順にレンダリングするのに役立ちます。これにより、カメラからの距離に基づいてジオメトリをソートする必要がなくなります。この処理はマルチパスです。すべてのピクセルに対して、最初のパスで最も近いサーフェスがレンダリングされ、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 Peel / depthpeel

Depth peelingは、順序に依存しない透明度の一部として使用される技法ですが、このパラメータを使用することで別の方法で使用することができます。このパラメータを使用すると、順序に依存しない透明度を作成するためにブレンドを使用してすべてのレイヤーを結合せずに、Depth peelingをレンダリングすることができます。その代わり、すべてのレイヤーは分離された状態で保持され、 レンダリング選択トップを使用して検索することができます。Depth peelingは、最初に通常のジオメトリをレンダリングし、そのイメージとデプスを保存することで行われます。その後、別のレンダリングが行われますが、前のパスで遮られた最も近いピクセルが代わりにカラーバッファに書き込まれます。これは複数回行うことができ、その都度、シーンの奥へと戻っていくことになります。球体をレンダリングしている場合、最初のレンダリングは球体の外側になり、2回目の剥離レイヤーは球体の内側になります。

Transparency/Peel Layers / transpeellayers

Order Independant Transparency をオンにしたときにレンダラーが使用するパスの数を設定します。

パラメータ – Advanced ページ
Render / render

レンダリングを有効にします。 1 =オン、0 =オフ。

Dither / dither

レンダリングをディザ処理します。8 ビットディスプレイの精度制限によって生じるバンディングやその他のアーチファクトに対処するのに役立ちます。

Color Output Needed / coloroutputneeded

これは、このパスのカラー結果が実際に必要ない場合の最適化です。 これをオフにすると、オフスクリーンレンダリングバッファからTOPのテクスチャへのコピーが回避されます。 アンチエイリアシングが有効になっている場合、これをオフにすると、アンチエイリアシングのresolvingも回避されます。

Draw Depth Only / drawdepthonly

これにより、レンダーはデプスバッファに深度値のみを描画します。カラー値は作成されません。デプスバッファを利用するには、Depth TOPを使用します。

# of Color Buffers / numcolorbufs

どんなシェーダを書いても、一度に複数のRGBAバッファに出力することができます。GLSL 3.3+では、ピクセルシェーダのout変数にlayout(location = 1)指定子を使用して、2つ目のバッファに書き込むことになります。GLSL 1.2 では、シェーダ内の gl_FragColor に書き込む代わりに、gl_FragData[i] に書き込みます。

Allow Blending for Extra Buffers / allowbufblending

ブレンド(MAT共通ページ設定で有効になっている)が、最初のバッファ以外の余分なバッファに対して有効になるかどうかを設定します。多くの場合、余分なバッファは、法線や位置など、ブレンディングが望ましくない他のタイプの情報を書き込むために使用されます。

Depth Buffer Format / depthformat

24ビット固定小数点または32ビット浮動小数点のデプスバッファ(シングルチャンネルイメージ)を使用します。

  • 24-Bit Fixed-Point / fixed24
  • 32-Bit Floating-Point / float32
Cull Face / cullface

カメラに対する向きに応じて、特定のポリゴン面のレンダリングを回避します。詳細については、Back-Face Cullingの章を参照してください。

  • Neither / neither
  • Back Faces / backfaces
  • Front Faces / frontfaces
  • Both Faces / bothfaces
Override Material / overridemat

Render TOPでレンダリングされるすべてのジオメトリに適用するマテリアルを設定することができます。ライティングしてRGBを出力するのではなく、ジオメトリに関する情報を出力するプリプロセスパスに便利です。

Polygon Depth Offset / polygonoffset

この機能は、ポリゴンをわずかにスペースに戻します。これは2 つのポリゴンを直接重ねてレンダリングする時、Z-Fighting が発生している場合に便利です。詳細については、Polygon Depth Offsetの章を参照してください。これは、シャドウを行う際にも重要な機能です。

Offset Factor / polygonoffsetfactor

サーフェスがビューアに対してどの程度傾斜しているかに応じて、Z値にオフセットを追加します。

Offset Units / polygonoffsetunits

Z値に一定のオフセットを追加します。

Display Overdraw / overdraw

この機能は、シーン内のオーバードローを視覚的に表示します。詳細については、Early Depth-Testの章を参照してください。特にAnalyzing Overdrawのセクションを参照してください。

Overdraw Limit / overdrawlimit

この機能は、シーン内のオーバードローを視覚的に表示します。詳細については、Early Depth-Testの章を参照してください。特にAnalyzing Overdrawのセクションを参照してください。

パラメータ – Crop ページ
Crop Left / cropleft

レンダリングされたイメージの左端の位置を設定します。

Crop Left Unit / cropleftunit

Crop Left パラメータの単位を Pixels、Fraction(0-1)、Fraction Aspect(アスペクト比を考慮した0-1)から選択します。

  • P / pixels
  • F / fraction
  • A / fractionaspect
Crop Right / cropright

レンダリングされたイメージの右端の位置を設定します。

Crop Right Unit / croprightunit

Crop Right パラメータの単位を Pixels、Fraction(0-1)、Fraction Aspect(アスペクト比を考慮した0-1)から選択します。

  • P / pixels
  • F / fraction
  • A / fractionaspect
Crop Bottom / cropbottom

レンダリングされたイメージの下端の位置を設定します。

Crop Bottom Unit / cropbottomunit

Crop Bottom パラメータの単位を Pixels、Fraction(0-1)、Fraction Aspect(アスペクト比を考慮した0-1)から選択します。

  • P / pixels
  • F / fraction
  • A / fractionaspect
Crop Top / croptop

レンダリングされたイメージの上端の位置を設定します。

Crop Top Unit / croptopunit

Crop Top パラメータの単位を Pixels、Fraction(0-1)、Fraction Aspect(アスペクト比を考慮した0-1)から選択します。

  • P / pixels
  • F / fraction
  • A / fractionaspect
パラメータ – GLSL 1 ページ
Image Output / imageoutput

Image Output を使用すると、imageStore()およびimageLoad()GLSLを使用して、image2D、image3DなどのGLSLユニフォームに任意のデータを読み書きできます。 これにより、レンダリングプロセス中に追加のデータを保存/ロードして、後で使用することができます。 ユニフォームは、選択されたImage Outputのタイプに応じて、これらの配列の1つに名前が付けられます。mTD2DImageOutputs[]、mTD2DArrayImageOutputs []、mTD3DImageOutputs []、mTDCubeImageOutputs []。 現在サポートされているイメージ出力は1つだけなので、これらにアクセスするには常にインデックス[0]を使用する必要があります。

Resolution / imageres

Image Output の解像度。これは、メインレンダリングが行っている解像度と同じである必要はありません。

  • Resolution / imageresw
  • Resolution / imageresh
Pixel Format / format

イメージの各チャンネルのデータを保存するために使用されるフォーマット (例: 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ビット。
Type / imagetype

イメージ出力で作成するテクスチャの種類を設定します。

  • 2D Texture / texture2d
    2Dテクスチャを作成します。
  • 2D Texture Array / texture2darray
    2D テクスチャ配列を作成します。配列のスライスは、w座標に正規化されていない整数インデックスを使用してアクセスすることができます。
  • 3D Texture / texture3d
    3D テクスチャを作成します。配列のスライスは、0~1の範囲のw座標を使用してアクセスできます。スライス間のテクスチャの値は補間されます。
  • Cube Texture / texturecube
    キューブマップテクスチャを作成します。
Depth / imagedepth

出力タイプが2D Texture Arrayまたは3D Textureの場合のデプスを設定します。

Access / imageaccess

出力テクスチャのアクセス方法を設定します。テクスチャが読み込まれる場合(前のフレームの値を使用するなど)、アクセスは Write Only ではなく Read-Write に変更する必要があります。

  • Write Only / writeonly
  • Read-Write / readwrite
Sampler Name 0 / sampler0

GLSLプログラムがこのTOPからサンプリングするために使用するサンプラー名を設定します。サンプラーはTOPと同じ寸法で宣言する必要があります。(2D TOPの場合はsampler2D、3D TOPの場合はsampler3D)

TOP / top0

上のサンプラー名を参照するTOPを設定します。

Extend U / top0extendu
  • Hold / hold
  • Zero / zero
  • Repeat / repeat
  • Mirror / mirror
Extend V / top0extendv
  • Hold / hold
  • Zero / zero
  • Repeat / repeat
  • Mirror / mirror
Extend W / top0extendw
  • Hold / hold
  • Zero / zero
  • Repeat / repeat
  • Mirror / mirror
Filter / top0filter
  • Nearest / nearest
  • Linear / linear
  • Mipmap Linear / mipmaplinear
Anisotropic Filter / top0anisotropy
  • Off / off
  • 2x / 2x
  • 4x / 4x
  • 8x / 8x
  • 16x / 16x
パラメータ – GLSL 2 ページ
Uniform Name 0 / uniname0

シェーダで宣言されているユニフォーム名。

Value / value0

ユニフォームに割り当てる値。ユニフォームが float の場合は 4 つのエントリのうち最初のエントリが使用され、vec2 の場合は最初の 2 つのエントリが使用されます。

  • Value / value0x
  • Value / value0y
  • Value / value0z
  • Value / value0w
パラメータ – Common ページ

参照:共通 Common ページ