Difference between revisions of "Shader:send (日本語)"
m (Sync to latest revision.) |
m |
||
Line 20: | Line 20: | ||
Uniform / extern 変数はシェーダのコード側では読み取り専用であり、 Shader:send の呼び出しにより変更されるまで不変です。変数が各々で宣言されている場合に限り、シェーダーの頂点およびピクセルの両方にある要素の Uniform 変数へアクセスできます。 | Uniform / extern 変数はシェーダのコード側では読み取り専用であり、 Shader:send の呼び出しにより変更されるまで不変です。変数が各々で宣言されている場合に限り、シェーダーの頂点およびピクセルの両方にある要素の Uniform 変数へアクセスできます。 | ||
+ | |||
+ | {{notice|version [[0.10.2 (日本語)|0.10.2]] では Shader:send で配列を送信すると最後の引数が無視されてしまう不具合があります。単純な解決策は複数の値を送信する時にuniform 配列へ余分な疑似引数を追加します。}} | ||
== 関数 == | == 関数 == |
Revision as of 05:32, 20 November 2016
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, ...}
table ...
- uniform の配列に格納されている行列と同じ種類である追加対象の行列。
返値
ありません。
関数
概要
Shader:send( name, texture )
引数
返値
ありません。
関数
概要
Shader:send( name, boolean, ... )
引数
string name
- シェーダーへ送信する Boolean の名前。
boolean boolean
- uniform 変数へ送信する Boolean です。
boolean ...
- uniform 変数が配列である場合に送信する追加の Boolean です。
返値
ありません。
関連
そのほかの言語
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info