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のバージョンを選択します。
- 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
作成するシェーダーのタイプ、頂点/ピクセルシェーダー、またはコンピュートシェーダーを選択します。
- Vertex/Pixel Shader / vertexpixel
- Compute Shader / compute
頂点シェーダーを保持するDATを指します。 DATをドラッグアンドドロップするか、DATへのパスを手動で入力します。
ピクセルシェーダーを保持するDATを指します。 DATをドラッグアンドドロップするか、DATへのパスを手動で入力します。
コンピュートシェーダーを保持するDATを指します。 DATをドラッグアンドドロップするか、DATへのパスを手動で入力します。
このボタンが押されると、ノードはすべてのユニフォームパラメータをシェーダで宣言されているユニフォームでプリフィルしようとします。シェーダコンパイラは未使用のユニフォームを公開しないことに注意してください。
コンピュートシェーダを実行する際に使用するディスパッチサイズを設定します。
- X / dispatchsizex
- Y / dispatchsizey
- Z / dispatchsizez
出力テクスチャのアクセス方法を制御します。テクスチャが読み込まれる場合(前のフレームの値を使用するなど)、アクセスは Write Only ではなく Read-Write に変更する必要があります。
- Write Only / writeonly
- Read Only / readonly
- Read-Write / readwrite
作成するテクスチャのタイプを指定します。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座標を使用してアクセスできます。スライス間のテクスチャの値は補間されます。
入力またはCustom Depthパラメータから3Dテクスチャのデプスを設定します。
- Input / input
- Custom / custom
3Dテクスチャのデプスを手動で設定します。
- Clear Value / clearvaluer
- Clear Value / clearvalueg
- Clear Value / clearvalueb
- Clear Value / clearvaluea
3Dテクスチャの作成時にノードの入力をシェーダーに渡す方法を設定します。 デフォルトでは、すべての入力が各スライスに渡されます。 スライスモードごとにN入力を使用する場合、最初のN入力は最初のスライスに渡され、次のN入力は2番目のスライスに渡されます。 入力が不足すると、最初の入力にループバックします。 Nは、N Value パラメータで設定されます。
- All Inputs to Every Slice / all
- N Input(s) per Slice / ninputs
Input MappingパラメータをN inputs per Slice に設定した場合、1 スライスあたり何個の入力をシェーダに渡すかを指定します。例えば、これが 2 に設定されている場合、最初の 2 つの入力は最初のスライスに渡され、次の 2 つの入力は 2 番目のスライスに渡されます。最後のスライスに到達する前に入力が切れた場合は、入力の先頭にループバックします。
UおよびVテクスチャ座標(シェーダーではSおよびTと呼ばれます)が[0-1]の範囲外にある場合に、テクスチャサンプリング関数から返されるものを設定します。
- Hold / hold
- Zero / zero
- Repeat / repeat
- Mirror / mirror
Wテクスチャ座標(シェーダーではWと呼ばれます)が[0-1]の範囲外にある場合に、テクスチャサンプリング関数から返されるものを設定します。 3Dテクスチャにのみ役立ちます。
- Hold / hold
- Zero / zero
- Repeat / repeat
- Mirror / mirror
作成するシェーダーは、一度に複数のRGBAバッファーに出力できます。 この値を大きくすると、割り当てられるカラーバッファーが増えます。この機能の使用の詳細については、Write_a_GLSL_TOP#Outputting_to_Multiple_Color_Buffers Write a GLSL TOPの章を参照してください。
これらはユニフォームとしてシェーダーに渡されます。 ユニフォームの宣言方法に応じて、シェーダーへのパスとしてパラメーターごとに使用可能な4つの値の一部のみが使用されます。 たとえば、ユニフォームがvec2として宣言されている場合、最初の2つの値のみがシェーダーに渡され、残りの2つは無視されます。
シェーダーで宣言された統一名を設定します。
ユニフォームに与える値を設定します。
- Value / value0x
- Value / value0y
- Value / value0z
- Value / value0w
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’))はこの最大値を教えてくれます。テクスチャバッファの最大値はテクスチャバッファごとの値であり、複数のテクスチャバッファを持っていても配列ごとの最大値を奪うことはありません。
制服の名前。 1つのユニフォームで最大4つのチャネルをGLSLシェーダーに送信できます。 チャネルの数は、名前の右側にあるfloat / vec2 / vec3 / vec4メニューによって決まります。 1つのチャネルを持つCHOPの場合はユニフォームをfloatとして宣言し、2つのチャネルを持つ場合はユニフォームをvec2として宣言します。データはユニフォームにインターリーブされます。 つまり、.xコンポーネントは最初のチャネル、.yは2番目のチャネルなどです。
シェーダーのユニフォームのデータ型。
- float / float
- vec2 / vec2
- vec3 / vec3
- vec4 / vec4
このパラメータで設定したCHOPからチャネルがGLSLシェーダーに送信されます。
ユニフォームの種類を設定します。
- Uniform Array / uniformarray
すべてのGPUは、Uniform Arraysを使用してGLSLシェーダに配列データを送ります。
- Texture Buffer / texturebuffer
新しいGPUでは、テクスチャバッファを使用してGLSLシェーダに配列データを送ることができます。テクスチャバッファは、テクスチャメモリとテクスチャフェッチを使用してデータにアクセスするため、より多くの値を格納することができます。
宣言します:
uniform samplerBuffer ;
そして、以下のように試してみてください。
vec4 val = texelFetch(, i);
ここで i は、値を取得したいバッファの 0 ベースのインデックス (整数) です。
マトリックスのユニフォーム名を設定します。
行列に割り当てる値を設定します。これを設定する有効な方法については、 Matrix Parameters の章を参照してください。
アトミックカウンタの初期値の受け取り方を、単一のデフォルト値(Single Value)またはCHOP(CHOP Values)のいずれかで指定します。
- Single Value / val
- CHOP Values / chop
このバインディングのすべてのアトミックカウンターが初期化される単一の値を設定します。
このバインディングのアトミックカウンターの初期値を決定するCHOPのパスを設定します。 CHOPはトラック順にスパンされるため、最初のトラックの値が最初に読み取られ、次に次のトラック(存在する場合)のように続きます。 埋める初期値がCHOPの値よりも多い場合、それらはすべて0に設定されます。アトミックカウンターは低から高のオフセットに初期化されます。
参照:共通 Common ページ