GLSL MAT

概要

GLSL MATを使うと、TouchDesignerにカスタムマテリアルを書き込んだり、インポートしたりすることができます。GLSLシェーダーにコンパイルエラーがあると、青/赤のチェッカーボードエラーシェーダーが表示されます。
シェーダーの書き方については、Write a GLSL Material、GLSL Categoryの章を参照してください。

パラメータ – Load ページ
GLSL Version / glslversion

シェーダーをコンパイルするGLSLのバージョンを設定します。

  • 1.20 / glsl120
  • 3.30 / glsl330
  • 4.00 / glsl400
  • 4.10 / glsl410
  • 4.20 / glsl420
  • 4.30 / glsl430
  • 4.40 / glsl440
  • 4.50 / glsl450
  • 4.60 / glsl460
Preprocess Directives / predat

このDATを使って、#extensionのようなプリプロセッサ・ディレクティブをシェーダーの最初に配置します。これはシェーダーの最初の行である必要があり、TouchDesignerはシェーダーの最初にユニフォームや関数を宣言するコードを追加します。

Vertex Shader / vdat

バーテックス・シェーダー・コードを格納するDATへのパスを設定します。

Pixel Shader / pdat

ピクセルシェーダのコードを格納するDATへのパスを設定します。

Load Uniform Names / loaduniformnames

これは、コンパイルされたGLSLシェーダで宣言された(そして使用された)すべてのユニフォームを読み込み、ユニフォームパラメータのさまざまなネームフィールドを埋めます。

Clear Uniform Names / clearuniformnames

ユニフォーム・パラメーターのネーム・フィールドがすべて消去されます。

Geometry Shader / gdat

ジオメトリシェーダのコードを格納するDATへのパスを設定します。

Input Primitive Type / inprim

ジオメトリシェーダに入力されるジオメトリの種類を設定します。

  • Points / points
  • Lines / lines
  • Triangles / triangles
Output Primitive Type / outprim

ジオメトリシェーダが出力するジオメトリの種類を設定します。

  • Points / points
  • Line Strip / linestrip
  • Triangle Strip / tristrip
Num Output Vertices / numout

Geometry Shaderが出力する最大の頂点数を設定します。

Two Sided Coloring / twocolor

両面カラーリングのサポートを有効にします。この機能を有効にすると、VertexシェーダやGeometryシェーダがgl_FrontColor、gl_BackColor、gl_FrontSecondaryColor、gl_BackSecondaryColorに書き込むことができ、Pixelシェーダのgl_Colorとgl_SecondaryColorには、プリミティブの表側と裏側のどちらがカメラに向いているかに応じて、正しい色が配置されます。これを無効にすると、gl_FrontColorとgl_FrontSecondaryColorに入れられた値は、プリミティブのどちらの面がカメラに向いているかにかかわらず、gl_Colorとgl_SecondaryColorに渡されます。

Inherit Uniforms/Samplers from / inherit

このマテリアルは、このパラメータで参照されているGLSLマテリアルのすべてのテクスチャとユニフォームを継承します。

Lighting Space / lightingspace

ライティングスペースを、現在のデフォルトのワールドスペースから、TouchDesigner 088で使用されていたレガシーカメラスペースに切り替えることができます。

  • World Space / worldspace
  • Camera Space (Legacy 088 shaders) / cameraspace
パラメータ – Samplers ページ
Sampler Name 0 / sampler0

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

TOP / top0

上記のサンプラー名で参照されるTOPです。
共通 Texture Sampling パラメータの章を参照してください。

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
パラメータ – Vectors ページ
Uniform Name 0 / uniname0

ユニフォームの名前を設定します。

Value / value0

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

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

CHOP Uniformsでは、CHOPチャンネルデータを配列としてGLSLシェーダに送ることができます。使用する配列タイプによっては、シェーダーに送信できる値の数が制限されることがあります。ユニフォーム配列を使用している場合は、組み込み変数$SYS_GFX_GLSL_MAX_UNIFORMSを使って、シェーダーに渡せる値の数を知ることができます。現在のGPUはvec4ベースのユニフォーム配列であるため、最大の配列サイズは$SYS_GFX_GLSL_MAX_UNIFORMS / 4となります。SYS_GFX_MAX_TEXTURE_BUFFER_SIZEは、この最大値を教えてくれます。テクスチャバッファの最大値は、テクスチャバッファごとのものであり、複数のテクスチャバッファを持っていても、各配列の最大値からは外れません。

Uniform Name 0 / chopuniname0

ユニフォーム名を設定します。

Type / chopunitype0

ユニフォームの種類です。1つのユニフォームで最大4つのチャンネルをGLSLシェーダに送ることができます。1チャンネルのCHOPではユニフォームをfloatと宣言し、2チャンネルのCHOPではユニフォームをvec2などと宣言します。データはユニフォームの中でインターリーブされます。例えば、.x成分は1つ目のチャンネル、.yは2つ目のチャンネル、といった具合です。

  • float / float
  • vec2 / vec2
  • vec3 / vec3
  • vec4 / vec4
CHOP / chop0

GLSLシェーダに送信されるチャンネルのCHOPを設定します。

Array Type / choparraytype0

GPUでは、ユニフォームアレイやテクスチャバッファを使って、配列データをGLSLシェーダに送ることができます。ユニフォーム配列は、データの保存に非常に限られたメモリを使用し、他の通常のユニフォーム値と同様にアクセスできます(ただし、配列内での話です)。テクスチャバッファは、テクスチャメモリとテクスチャフェッチを使ってデータにアクセスし、より多くの値を保存できます。
いずれの場合も、インデックスは、値を取得したい配列/バッファの0ベースのインデックス(整数)です。

  • Uniform Array / uniformarray
    ユニフォーム配列は、次のように宣言して使用します。

    // Array type is vec3, and it takes up to 20 values from the CHOP
    uniform vec3 arrayName[20];
    // Grab the value at index 10
    vec3 aValue = arrayName[10];

  • Texture Buffer / texturebuffer
    テクスチャバッファは以下のように宣言され、使用されます。

    // A texture buffer will also be a vec4, but only the first 1, 2, 3 or 4 component will contain data, depending on the type you choose.
    uniform samplerBuffer arrayName;
    // sampler the value at index 10. It be default returns a vec4, so change it to a vec3 in thisexample using .xyz
    vec3 aValue = texelFetch(arrayName, 10).xyz;

Channel Scope / chanscope0

CHOPからどのチャンネルを使用してアレイを埋めるかを選択できます。スコープされた最初の4チャンネルまでが使用されます(ユニフォームアレイのタイプによって異なります)。

  • * / *
パラメータ – Matrices ページ

Relative Xformsは、ポイントやベクトルをある空間から別の空間に変換する行列です。

Uniform Name 0 / matuniname0

ユニフォーム名を設定します。ユニフォームはmat4として宣言する必要があります。

Matrix 0 / matvalue0

マトリックスに割り当てる値です。有効な指定方法については、Matrix Parameters の章を参照してください。

Uniform Name 0 / unimatrixname0

ユニフォーム名を設定します。ユニフォームはmat4として宣言する必要があります。

Xform from / fromcomp0

Transform from this COMPs world transform.
設定したCOMPsのワールドトランスフォームから変換します。

To / tocomp0

設定したCOMPsのワールドトランスフォームへ変換します。

パラメータ – Deform ページ

参照:共通 Deform ページ

パラメータ – Common ページ

参照:共通 Common ページ