Difference between revisions of "Shader:send (日本語)"

(Created page with "{{newin (日本語)|0.9.0|090|type=関数|text=PixelEffect:send から名称変更}} シェーダーの内部にある特別な変数 (''e...")
 
m (Sync to latest revision.)
Line 1: Line 1:
 
{{newin (日本語)|[[0.9.0]]|090|type=関数|text=[[PixelEffect:send (日本語)|PixelEffect:send]] から名称変更}}
 
{{newin (日本語)|[[0.9.0]]|090|type=関数|text=[[PixelEffect:send (日本語)|PixelEffect:send]] から名称変更}}
シェーダーの内部にある特別な変数 (''extern'') へ一つ以上の値を送信します。extern 変数は ''extern'' キーワードを使用して区分する必要があります。例えば、
+
シェーダーの内部にある特別な変数 (''uniform'') へ一つ以上の値を送信します。Uniform 変数は ''uniform'' または ''extern'' キーワードを使用して区分する必要があります。例えば、
  
 
<source lang="glsl">
 
<source lang="glsl">
extern number time;
+
uniform float time; // "float" は GLSL シェーダーで使用される数値型です。
extern number vars[2];
+
uniform float vars[2];
extern vec2 light_pos;
+
uniform vec2 light_pos;
extern vec4 colors[4];
+
uniform vec4 colors[4];
 
</source>
 
</source>
  
Line 19: Line 19:
  
  
変数が各々で宣言されている場合に限り、シェーダーの頂点およびピクセルの両方にある要素の extern 変数へアクセスできます。
+
Uniform / extern 変数はシェーダのコード側では読み取り専用であり、 Shader:send の呼び出しにより変更されるまで不変です。変数が各々で宣言されている場合に限り、シェーダーの頂点およびピクセルの両方にある要素の Uniform 変数へアクセスできます。
  
 
== 関数 ==
 
== 関数 ==
Line 28: Line 28:
 
=== 引数 ===
 
=== 引数 ===
 
{{param|string|name|シェーダーへ送信する number の名前。}}
 
{{param|string|name|シェーダーへ送信する number の名前。}}
{{param|number|number|extern へ格納するために送信する number}}
+
{{param|number|number|uniform 変数へ格納するために送信する number}}
{{param|number|...|extern が配列である場合に送信する追加の number}}
+
{{param|number|...|uniform 変数が配列である場合に送信する追加の number}}
 
=== 返値 ===
 
=== 返値 ===
 
ありません。
 
ありません。
 
=== 注釈 ===
 
=== 注釈 ===
Lua において全ての数値は浮動小数点数であるため、シェーダーのコードで extern int 変数の値を送信するには [[Shader:sendInt (日本語)|Shader:sendInt]] 関数を使用する必要があります。
+
Lua において全ての数値は浮動小数点数であるため、 version [[0.10.2]] 以降ではシェーダーのコードで <code>uniform int</code> 変数の値を送信するには [[Shader:send (日本語)|Shader:sendInt]] 関数を使用する必要があります。
  
 
== 関数 ==
 
== 関数 ==
Line 42: Line 42:
 
=== 引数 ===
 
=== 引数 ===
 
{{param|string|name|シェーダーへ送信するベクトルの名前。}}
 
{{param|string|name|シェーダーへ送信するベクトルの名前。}}
{{param|table|vector|ベクトルとして extern へ格納するために送信する number です。テーブルにある要素数でベクトルの種類を決定します (例えば、数値が二つであれば -> vec2)。最低2つおよび最高4つまでの数値を使用できます。}}
+
{{param|table|vector|ベクトルとして uniform 変数へ格納するために送信する number です。テーブルにある要素数でベクトルの種類を決定します (例えば、数値が二つであれば -> vec2)。最低2つおよび最高4つまでの数値を使用できます。}}
{{param|table|...|extern が配列である場合に送信する追加のベクトル。ベクトルの大きさは全て同一である必要があります (例えば、 vec3 のものだけ)。}}
+
{{param|table|...|uniform 変数が配列である場合に送信する追加のベクトル。ベクトルの大きさは全て同一である必要があります (例えば、 vec3 のものだけ)。}}
 
=== 返値 ===
 
=== 返値 ===
 
ありません。
 
ありません。
Line 54: Line 54:
 
=== 引数 ===
 
=== 引数 ===
 
{{param|string|name|シェーダーへ送信する行列の名前。}}
 
{{param|string|name|シェーダーへ送信する行列の名前。}}
{{param|table|matrix|extern へ送信する 2x2, 3x3, または 4x4 の行列。テーブル形式を使用してください:  <code><nowiki>{{a,b,c,d}, {e,f,g,h}, ... }</nowiki></code>}}
+
{{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>
{{param|table|...|extern の配列に格納されている''行列''と同じ種類である追加対象の行列。}}
+
}}
 +
{{param|table|...|uniform の配列に格納されている''行列''と同じ種類である追加対象の行列。}}
 
=== 返値 ===
 
=== 返値 ===
 
ありません。
 
ありません。
Line 66: Line 67:
 
=== 引数 ===
 
=== 引数 ===
 
{{param|string|name|シェーダーへ送信する [[Texture (日本語)|Texture]] の名前。}}
 
{{param|string|name|シェーダーへ送信する [[Texture (日本語)|Texture]] の名前。}}
{{param|Texture|texture|extern へ送信するテクスチャ ([[Image (日本語)|Image]] または [[Canvas (日本語)|Canvas]])}}
+
{{param|Texture|texture|uniform 変数へ送信するテクスチャ ([[Image (日本語)|Image]] または [[Canvas (日本語)|Canvas]])}}
 
=== 返値 ===
 
=== 返値 ===
 
ありません。
 
ありません。
Line 77: Line 78:
 
=== 引数 ===
 
=== 引数 ===
 
{{param|string|name|シェーダーへ送信する Boolean の名前。}}
 
{{param|string|name|シェーダーへ送信する Boolean の名前。}}
{{param|boolean|boolean|extern へ送信する Boolean です。}}
+
{{param|boolean|boolean|uniform 変数へ送信する Boolean です。}}
{{param|boolean|...|extern が配列である場合に送信する追加の Boolean です。}}
+
{{param|boolean|...|uniform 変数が配列である場合に送信する追加の Boolean です。}}
 
=== 返値 ===
 
=== 返値 ===
 
ありません。
 
ありません。
Line 84: Line 85:
 
== 関連 ==
 
== 関連 ==
 
* [[parent::Shader (日本語)]]
 
* [[parent::Shader (日本語)]]
* [[Shader:sendInt (日本語)]]
+
 
 
[[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}}

Revision as of 12:56, 9 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 変数へアクセスできます。

関数

概要

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 )

引数

string name
シェーダーへ送信する Texture の名前。
Texture texture
uniform 変数へ送信するテクスチャ (Image または Canvas)

返値

ありません。

関数

概要

Shader:send( name, boolean, ... )

引数

string name
シェーダーへ送信する Boolean の名前。
boolean boolean
uniform 変数へ送信する Boolean です。
boolean ...
uniform 変数が配列である場合に送信する追加の Boolean です。

返値

ありません。

関連



そのほかの言語