GLSL TOP

概要

GLSL TOPは、GLSLシェーダーをTOP画像にレンダリングします。 Info DATを使用して、シェーダーのコンパイルエラーをチェックします。
GLSL TOPは、ピクセルシェーダー、またはより一般的で複雑なコンピュートシェーダーとして機能します。 注意:コンピュートシェーダーにはGLSL 4.30以降が必要です。
このTOPの使用の詳細については、GLSL TOPの作成に関する章を参照してください。
GLSL TOPには、1つのドッキングされたコンピュートシェーダーと通常のGLSLシェーダーがあります。 Mode をCompute Shader に変更します。 glsl1_compute DATを参照します。
詳細についてはGLSLカテゴリ、Compute Shaderの章を参照してください。

パラメータ – GLSL ページ
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
Mode / mode

作成するシェーダーのタイプ、頂点/ピクセルシェーダー、またはコンピュートシェーダーを選択します。

  • Vertex/Pixel Shader / vertexpixel
  • Compute Shader / compute
Preprocess Directives / predat
Vertex Shader / vertexdat

頂点シェーダーを保持するDATを指します。 DATをドラッグアンドドロップするか、DATへのパスを手動で入力します。

Pixel Shader / pixeldat

ピクセルシェーダーを保持するDATを指します。 DATをドラッグアンドドロップするか、DATへのパスを手動で入力します。

Compute Shader / computedat

コンピュートシェーダーを保持するDATを指します。 DATをドラッグアンドドロップするか、DATへのパスを手動で入力します。

Load Uniform Names / loaduniformnames

このボタンが押されると、ノードはすべてのユニフォームパラメータをシェーダで宣言されているユニフォームでプリフィルしようとします。シェーダコンパイラは未使用のユニフォームを公開しないことに注意してください。

Dispatch Size / dispatchsize

コンピュートシェーダを実行する際に使用するディスパッチサイズを設定します。

  • X / dispatchsizex
  • Y / dispatchsizey
  • Z / dispatchsizez
Output Access / outputaccess

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

  • Write Only / writeonly
  • Read Only / readonly
  • Read-Write / readwrite
Output Type / type

作成するテクスチャのタイプを指定します。3D テクスチャを作成する場合、TOP は出力のスライスごとに 1 回レンダリングされます。詳細については、3D Textures and 2D Texture Arraysの章を参照してください。

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

入力またはCustom Depthパラメータから3Dテクスチャのデプスを設定します。

  • Input / input
  • Custom / custom
Custom Depth / customdepth

3Dテクスチャのデプスを手動で設定します。

Clear Outputs / clearoutputs
Clear Value / clearvalue
  • Clear Value / clearvaluer
  • Clear Value / clearvalueg
  • Clear Value / clearvalueb
  • Clear Value / clearvaluea
Input Mapping / inputmapping

3Dテクスチャの作成時にノードの入力をシェーダーに渡す方法を設定します。 デフォルトでは、すべての入力が各スライスに渡されます。 スライスモードごとにN入力を使用する場合、最初のN入力は最初のスライスに渡され、次のN入力は2番目のスライスに渡されます。 入力が不足すると、最初の入力にループバックします。 Nは、N Value パラメータで設定されます。

  • All Inputs to Every Slice / all
  • N Input(s) per Slice / ninputs
N Value / nval

Input MappingパラメータをN inputs per Slice に設定した場合、1 スライスあたり何個の入力をシェーダに渡すかを指定します。例えば、これが 2 に設定されている場合、最初の 2 つの入力は最初のスライスに渡され、次の 2 つの入力は 2 番目のスライスに渡されます。最後のスライスに到達する前に入力が切れた場合は、入力の先頭にループバックします。

Input Extend Mode UV / inputextenduv

UおよびVテクスチャ座標(シェーダーではSおよびTと呼ばれます)が[0-1]の範囲外にある場合に、テクスチャサンプリング関数から返されるものを設定します。

  • Hold / hold
  • Zero / zero
  • Repeat / repeat
  • Mirror / mirror
Input Extend Mode W / inputextendw

Wテクスチャ座標(シェーダーではWと呼ばれます)が[0-1]の範囲外にある場合に、テクスチャサンプリング関数から返されるものを設定します。 3Dテクスチャにのみ役立ちます。

  • Hold / hold
  • Zero / zero
  • Repeat / repeat
  • Mirror / mirror
# of Color Buffers / numcolorbufs

作成するシェーダーは、一度に複数のRGBAバッファーに出力できます。 この値を大きくすると、割り当てられるカラーバッファーが増えます。この機能の使用の詳細については、Write_a_GLSL_TOP#Outputting_to_Multiple_Color_Buffers Write a GLSL TOPの章を参照してください。

パラメータ – Vectors ページ

これらはユニフォームとしてシェーダーに渡されます。 ユニフォームの宣言方法に応じて、シェーダーへのパスとしてパラメーターごとに使用可能な4つの値の一部のみが使用されます。 たとえば、ユニフォームがvec2として宣言されている場合、最初の2つの値のみがシェーダーに渡され、残りの2つは無視されます。

Uniform Name 0 / uniname0

シェーダーで宣言された統一名を設定します。

Value / value0

ユニフォームに与える値を設定します。

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

CHOPユニフォームを使用すると、CHOPチャネルデータを配列としてGLSLシェーダーに送信できます。 使用する配列タイプによっては、シェーダーに送信できる値の数が制限される場合があります。 均一配列を使用している場合は、組み込み変数を使用できます。
int(var(‘SYS_GFX_GLSL_MAX_UNIFORMS’))を使用して、シェーダに渡すことができる値の数の目安を得ることができます。現在のGPUはvec4ベースのユニフォーム配列であるため、最大配列サイズはint(var( ‘SYS_GFX_GLSL_MAX_UNIFORMS’))/ 4.です。他のユニフォームはこの最大値から離れます。 テクスチャバッファを使用している場合、配列の最大サイズははるかに大きく、int(var(‘SYS_GFX_MAX_TEXTURE_BUFFER_SIZE’))はこの最大値を教えてくれます。テクスチャバッファの最大値はテクスチャバッファごとの値であり、複数のテクスチャバッファを持っていても配列ごとの最大値を奪うことはありません。

Uniform Name 0 / chopuniname0

制服の名前。 1つのユニフォームで最大4つのチャネルをGLSLシェーダーに送信できます。 チャネルの数は、名前の右側にあるfloat / vec2 / vec3 / vec4メニューによって決まります。 1つのチャネルを持つCHOPの場合はユニフォームをfloatとして宣言し、2つのチャネルを持つ場合はユニフォームをvec2として宣言します。データはユニフォームにインターリーブされます。 つまり、.xコンポーネントは最初のチャネル、.yは2番目のチャネルなどです。

Type / chopunitype0

シェーダーのユニフォームのデータ型。

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

このパラメータで設定したCHOPからチャネルがGLSLシェーダーに送信されます。

Array Type / choparraytype0

ユニフォームの種類を設定します。

  • Uniform Array / uniformarray
    すべてのGPUは、Uniform Arraysを使用してGLSLシェーダに配列データを送ります。
  • Texture Buffer / texturebuffer
    新しいGPUでは、テクスチャバッファを使用してGLSLシェーダに配列データを送ることができます。テクスチャバッファは、テクスチャメモリとテクスチャフェッチを使用してデータにアクセスするため、より多くの値を格納することができます。

宣言します:
uniform samplerBuffer ;

そして、以下のように試してみてください。
vec4 val = texelFetch(, i);
ここで i は、値を取得したいバッファの 0 ベースのインデックス (整数) です。

パラメータ – Matrices ページ
Uniform Name 0 / matuniname0

マトリックスのユニフォーム名を設定します。

Matrix / matvalue0

行列に割り当てる値を設定します。これを設定する有効な方法については、 Matrix Parameters の章を参照してください。

パラメータ – Atomic Counters ページ
Uniform Name 0 / acname0
Initial Value Type / acinitval0

アトミックカウンタの初期値の受け取り方を、単一のデフォルト値(Single Value)またはCHOP(CHOP Values)のいずれかで指定します。

  • Single Value / val
  • CHOP Values / chop
Initial Value / acsingleval0

このバインディングのすべてのアトミックカウンターが初期化される単一の値を設定します。

Initial Values CHOP / acchopval0

このバインディングのアトミックカウンターの初期値を決定するCHOPのパスを設定します。 CHOPはトラック順にスパンされるため、最初のトラックの値が最初に読み取られ、次に次のトラック(存在する場合)のように続きます。 埋める初期値がCHOPの値よりも多い場合、それらはすべて0に設定されます。アトミックカウンターは低から高のオフセットに初期化されます。

パラメータ – Common ページ

参照:共通 Common ページ