Difference between revisions of "Shader:send (日本語)"
(Created page with "{{newin (日本語)|0.9.0|090|type=関数|text=PixelEffect:send から名称変更}} シェーダーの内部にある特別な変数 (''e...") |
(translation updated.) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | {{newin (日本語)|[[0.9.0]]|090|type=関数|text=[[PixelEffect:send (日本語)|PixelEffect:send]] から名称変更}} | + | {{newin (日本語)|[[0.9.0 (日本語)|0.9.0]]|090|type=関数|text=[[PixelEffect:send (日本語)|PixelEffect:send]] から名称変更}} |
− | シェーダーの内部にある特別な変数 ('' | + | シェーダーの内部にある特別な変数 (''uniform'') へ値を送信します。Uniform 変数は ''uniform'' または ''extern'' キーワードで区別します。例えば、 |
<source lang="glsl"> | <source lang="glsl"> | ||
− | + | uniform float time; // "float" は GLSL シェーダーで使用される数値型です。 | |
− | + | uniform float vars[2]; | |
− | + | uniform vec2 light_pos; | |
− | + | uniform vec4 colors[4]; | |
</source> | </source> | ||
− | + | send の相当コードは、 | |
<source lang="lua"> | <source lang="lua"> | ||
Line 19: | Line 19: | ||
− | + | Uniform / extern 変数はシェーダのコード側では読み取り専用であり、 Shader:send の呼び出しにより変更されるまで不変です。変数が各々で宣言されている場合に限り、シェーダーの頂点およびピクセルの両方にある要素の Uniform 変数へアクセスできます。 | |
+ | |||
+ | {{notice|version [[0.10.2 (日本語)|0.10.2]] では Shader:send で配列を送信すると最後の引数が無視されてしまう不具合があります。解決策は複数の値を送信する時にuniform 配列へ余分な疑似引数を追加します。}} | ||
== 関数 == | == 関数 == | ||
Line 28: | Line 30: | ||
=== 引数 === | === 引数 === | ||
{{param|string|name|シェーダーへ送信する number の名前。}} | {{param|string|name|シェーダーへ送信する number の名前。}} | ||
− | {{param|number|number| | + | {{param|number|number|uniform 変数へ格納するために送信する number}} |
− | {{param|number|...| | + | {{param|number|...|uniform 変数が配列である場合に送信する追加の number}} |
=== 返値 === | === 返値 === | ||
ありません。 | ありません。 | ||
=== 注釈 === | === 注釈 === | ||
− | Lua | + | Lua において全ての数値は浮動小数点数であるため、 version [[0.10.2]] 以降ではシェーダーのコードで <code>uniform int</code> 変数の値を送信するには [[Shader:send (日本語)|Shader:sendInt]] 関数を使用してください。 |
== 関数 == | == 関数 == | ||
Line 42: | Line 44: | ||
=== 引数 === | === 引数 === | ||
{{param|string|name|シェーダーへ送信するベクトルの名前。}} | {{param|string|name|シェーダーへ送信するベクトルの名前。}} | ||
− | {{param|table|vector|ベクトルとして | + | {{param|table|vector|ベクトルとして uniform 変数へ格納するために送信する number です。テーブルにある要素数でベクトルの種類を決定します (例えば、数値が二つであれば -> vec2)。最低2つおよび最高4つまでの数値を使用できます。}} |
− | {{param|table|...| | + | {{param|table|...|uniform 変数が配列である場合に送信する追加のベクトル。ベクトルの大きさは全て同一にしてください (例えば vec3 のみ)。}} |
=== 返値 === | === 返値 === | ||
ありません。 | ありません。 | ||
Line 54: | Line 56: | ||
=== 引数 === | === 引数 === | ||
{{param|string|name|シェーダーへ送信する行列の名前。}} | {{param|string|name|シェーダーへ送信する行列の名前。}} | ||
− | {{param|table|matrix| | + | {{param|table|matrix|uniform 変数へ送信する 2x2, 3x3, または 4x4 の行列。テーブル形式を使用してください: <code><nowiki>{{a,b,c,d}, {e,f,g,h}, ... }</nowiki></code> または ( version [[0.10.2]] から) <code>{a,b,c,d, e,f,g,h, ...}</code> [[0.10.2 (日本語)|0.10.2]] 以前までの順列は縦列方向でしたが、 [[11.0 (日本語)|11.0]] 以降の順列は横列方向へ変更されました。}} |
− | {{param|table|...| | + | {{param|table|...|uniform の配列に格納されている''matrix'' (行列) と同じ種類である追加対象の行列。}} |
=== 返値 === | === 返値 === | ||
ありません。 | ありません。 | ||
Line 66: | Line 68: | ||
=== 引数 === | === 引数 === | ||
{{param|string|name|シェーダーへ送信する [[Texture (日本語)|Texture]] の名前。}} | {{param|string|name|シェーダーへ送信する [[Texture (日本語)|Texture]] の名前。}} | ||
− | {{param|Texture|texture| | + | {{param|Texture|texture|uniform 変数へ送信するテクスチャ ([[Image (日本語)|Image]] または [[Canvas (日本語)|Canvas]])}} |
=== 返値 === | === 返値 === | ||
ありません。 | ありません。 | ||
Line 77: | Line 79: | ||
=== 引数 === | === 引数 === | ||
{{param|string|name|シェーダーへ送信する Boolean の名前。}} | {{param|string|name|シェーダーへ送信する Boolean の名前。}} | ||
− | {{param|boolean|boolean| | + | {{param|boolean|boolean|uniform 変数へ送信する Boolean です。}} |
− | {{param|boolean|...| | + | {{param|boolean|...|uniform 変数が配列である場合に送信する追加の Boolean です。}} |
+ | === 返値 === | ||
+ | ありません。 | ||
+ | |||
+ | == 関数 == | ||
+ | {{newin (日本語)|[[11.0 (日本語)|11.0]]|110|type=異形}} | ||
+ | === 概要 === | ||
+ | <source lang="lua"> | ||
+ | Shader:send( name, matrixlayout, matrix, ... ) | ||
+ | </source> | ||
+ | === 引数 === | ||
+ | {{param|string|name|シェーダーへ送信する行列 (matrix) の名前。}} | ||
+ | {{param|MatrixLayout|matrixlayout|行列の配置方法 (縦列または横列方向)。}} | ||
+ | {{param|table|matrix|uniform 変数へ送信する 2x2, 3x3, または 4x4 の行列。テーブル形式を使用してください: <code><nowiki>{{a,b,c,d}, {e,f,g,h}, ... }</nowiki></code> または <code>{a,b,c,d, e,f,g,h, ...}</code>}} | ||
+ | {{param|table|...|uniform の配列に格納されている''matrix'' (行列) と同じ種類である追加対象の行列。}} | ||
+ | |||
+ | == 関数 == | ||
+ | {{newin (日本語)|[[11.0 (日本語)|11.0]]|110|type=異形}} | ||
+ | [[Data (日本語)|Data]] オブジェクトの内容を元にシェーダへ uniform 値を送信します。これはデータのバイトを直接複写します。 | ||
+ | === 概要 === | ||
+ | <source lang="lua"> | ||
+ | Shader:send( name, data, offset, size ) | ||
+ | </source> | ||
+ | === 引数 === | ||
+ | {{param|string|name|シェーダーへ送信する uniform の名前。}} | ||
+ | {{param|Data|data|送信する値がある Data オブジェクト。}} | ||
+ | {{param|number|offset (0)|Data オブジェクトの先頭からのオフセット (バイト単位)。}} | ||
+ | {{param|number|size (all)|送信データの大きさ (バイト単位)。 nil ならば、指定された uniform と同じバイト数を複写します。}} | ||
+ | === 返値 === | ||
+ | ありません。 | ||
+ | |||
+ | == 関数 == | ||
+ | {{newin (日本語)|[[11.0 (日本語)|11.0]]|110|type=異形}} | ||
+ | [[Data (日本語)|Data]] オブジェクトの内容を元にシェーダへ uniform 行列を送信します。これはデータのバイトを直接複写します。 | ||
+ | === 概要 === | ||
+ | <source lang="lua"> | ||
+ | Shader:send( name, data, matrixlayout, offset, size ) | ||
+ | </source> | ||
+ | === 引数 === | ||
+ | {{param|string|name|シェーダーへ送信する uniform 行列の名前。}} | ||
+ | {{param|Data|data|送信する値がある Data オブジェクト。}} | ||
+ | {{param|MatrixLayout|matrixlayout|行列の配置方法 (縦列または横列方向)。}} | ||
+ | {{param|number|offset (0)|Data オブジェクトの先頭からのオフセット (バイト単位)。}} | ||
+ | {{param|number|size (all)|送信データの大きさ (バイト単位)。 nil ならば、指定された uniform と同じバイト数を複写します。}} | ||
=== 返値 === | === 返値 === | ||
ありません。 | ありません。 | ||
Line 84: | Line 129: | ||
== 関連 == | == 関連 == | ||
* [[parent::Shader (日本語)]] | * [[parent::Shader (日本語)]] | ||
− | + | ||
[[Category:Functions]] | [[Category:Functions]] | ||
{{#set:Since=090}} | {{#set:Since=090}} | ||
{{#set:PrettySince=0.9.0}} | {{#set:PrettySince=0.9.0}} | ||
− | {{#set:Description= | + | {{#set:Description=シェーダーへ値を送信します。}} |
+ | |||
== そのほかの言語 == | == そのほかの言語 == | ||
− | {{i18n|Shader:send}} | + | {{i18n (日本語)|Shader:send}} |
Latest revision as of 03:09, 23 July 2019
LÖVE 0.9.0 から使用可能 |
PixelEffect:send から名称変更。 |
シェーダーの内部にある特別な変数 (uniform) へ値を送信します。Uniform 変数は uniform または extern キーワードで区別します。例えば、
uniform float time; // "float" は GLSL シェーダーで使用される数値型です。
uniform float vars[2];
uniform vec2 light_pos;
uniform vec4 colors[4];
send の相当コードは、
shader:send("time", t)
shader:send("vars",a,b)
shader:send("light_pos", {light_x, light_y})
shader:send("colors", {r1, g1, b1, a1}, {r2, g2, b2, a2}, {r3, g3, b3, a3}, {r4, g4, b4, a4})
Uniform / extern 変数はシェーダのコード側では読み取り専用であり、 Shader:send の呼び出しにより変更されるまで不変です。変数が各々で宣言されている場合に限り、シェーダーの頂点およびピクセルの両方にある要素の Uniform 変数へアクセスできます。
version 0.10.2 では Shader:send で配列を送信すると最後の引数が無視されてしまう不具合があります。解決策は複数の値を送信する時にuniform 配列へ余分な疑似引数を追加します。 |
Contents
関数
概要
Shader:send( name, number, ... )
引数
string name
- シェーダーへ送信する number の名前。
number number
- uniform 変数へ格納するために送信する number
number ...
- uniform 変数が配列である場合に送信する追加の number
返値
ありません。
注釈
Lua において全ての数値は浮動小数点数であるため、 version 0.10.2 以降ではシェーダーのコードで uniform int
変数の値を送信するには Shader:sendInt 関数を使用してください。
関数
概要
Shader:send( name, vector, ... )
引数
string name
- シェーダーへ送信するベクトルの名前。
table vector
- ベクトルとして uniform 変数へ格納するために送信する number です。テーブルにある要素数でベクトルの種類を決定します (例えば、数値が二つであれば -> vec2)。最低2つおよび最高4つまでの数値を使用できます。
table ...
- uniform 変数が配列である場合に送信する追加のベクトル。ベクトルの大きさは全て同一にしてください (例えば vec3 のみ)。
返値
ありません。
関数
概要
Shader:send( name, matrix, ... )
引数
string name
- シェーダーへ送信する行列の名前。
table matrix
- uniform 変数へ送信する 2x2, 3x3, または 4x4 の行列。テーブル形式を使用してください:
{{a,b,c,d}, {e,f,g,h}, ... }
または ( version 0.10.2 から){a,b,c,d, e,f,g,h, ...}
0.10.2 以前までの順列は縦列方向でしたが、 11.0 以降の順列は横列方向へ変更されました。 table ...
- uniform の配列に格納されているmatrix (行列) と同じ種類である追加対象の行列。
返値
ありません。
関数
概要
Shader:send( name, texture )
引数
返値
ありません。
関数
概要
Shader:send( name, boolean, ... )
引数
string name
- シェーダーへ送信する Boolean の名前。
boolean boolean
- uniform 変数へ送信する Boolean です。
boolean ...
- uniform 変数が配列である場合に送信する追加の Boolean です。
返値
ありません。
関数
LÖVE 11.0 から使用可能 |
この異形は以前のバージョンでは非対応です。 |
概要
Shader:send( name, matrixlayout, matrix, ... )
引数
string name
- シェーダーへ送信する行列 (matrix) の名前。
MatrixLayout matrixlayout
- 行列の配置方法 (縦列または横列方向)。
table matrix
- uniform 変数へ送信する 2x2, 3x3, または 4x4 の行列。テーブル形式を使用してください:
{{a,b,c,d}, {e,f,g,h}, ... }
または{a,b,c,d, e,f,g,h, ...}
table ...
- uniform の配列に格納されているmatrix (行列) と同じ種類である追加対象の行列。
関数
LÖVE 11.0 から使用可能 |
この異形は以前のバージョンでは非対応です。 |
Data オブジェクトの内容を元にシェーダへ uniform 値を送信します。これはデータのバイトを直接複写します。
概要
Shader:send( name, data, offset, size )
引数
string name
- シェーダーへ送信する uniform の名前。
Data data
- 送信する値がある Data オブジェクト。
number offset (0)
- Data オブジェクトの先頭からのオフセット (バイト単位)。
number size (all)
- 送信データの大きさ (バイト単位)。 nil ならば、指定された uniform と同じバイト数を複写します。
返値
ありません。
関数
LÖVE 11.0 から使用可能 |
この異形は以前のバージョンでは非対応です。 |
Data オブジェクトの内容を元にシェーダへ uniform 行列を送信します。これはデータのバイトを直接複写します。
概要
Shader:send( name, data, matrixlayout, offset, size )
引数
string name
- シェーダーへ送信する uniform 行列の名前。
Data data
- 送信する値がある Data オブジェクト。
MatrixLayout matrixlayout
- 行列の配置方法 (縦列または横列方向)。
number offset (0)
- Data オブジェクトの先頭からのオフセット (バイト単位)。
number size (all)
- 送信データの大きさ (バイト単位)。 nil ならば、指定された uniform と同じバイト数を複写します。
返値
ありません。
関連