Difference between revisions of "Shader Variables (日本語)"

(Created page with "{{newin (日本語)|0.9.0|090|type=組み込みシェーダー変数|plural=y}} LÖVE が頂点およびピクセル・シェーダーに対して提供する若干の組...")
 
m (グローバル組み込み変数)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{newin (日本語)|[[0.9.0]]|090|type=組み込みシェーダー変数|plural=y}}
+
{{newin (日本語)|[[0.9.0 (日本語)|0.9.0]]|090|type=組み込みシェーダー変数|plural=y}}
LÖVE が頂点およびピクセル・シェーダーに対して提供する若干の組み込み変数です。全ての組み込み変数は特に断りがない限り読み取り専用です。
+
頂点、およびピクセル・シェーダーで用いる LÖVE の組み込み変数です。特に断りがない限り読み取り専用です。
  
 
== グローバル組み込み変数 ==
 
== グローバル組み込み変数 ==
{{param|mat4|TransformMatrix|[[love.graphics.translate (日本語)|love.graphics.translate]] および関連関数により影響を受ける変換行列。}}
+
{{param|mat4|TransformMatrix|[[love.graphics.translate (日本語)|love.graphics.translate]] および関連関数により影響を受ける変換行列。注意点として、自動バッチ処理をした頂点は CPU で変換後に TransformMatrix で単位行列として扱われます。}}
  
 
{{param|mat4|ProjectionMatrix|直交射影行列}}
 
{{param|mat4|ProjectionMatrix|直交射影行列}}
Line 9: Line 9:
 
{{param|mat4|TransformProjectionMatrix|結合された変換行列および射影行列。[[love.graphics.newShader (日本語)#頂点シェーダー関数|頂点シェーダーの位置]]関数で <code>transform_projection</code> は引数として使用されます。}}
 
{{param|mat4|TransformProjectionMatrix|結合された変換行列および射影行列。[[love.graphics.newShader (日本語)#頂点シェーダー関数|頂点シェーダーの位置]]関数で <code>transform_projection</code> は引数として使用されます。}}
  
{{param|vec4|VaryingTexCoord|補完された頂点ごとのテクスチャ座標です。[[love.graphics.newShader (日本語)#頂点シェーダー関数|位置]]関数が呼び出される前に頂点シェーダーにて自動的に <code>VertexTexCoord</code> の値を設定します。 <code>texture_coords</code> は[[love.graphics.newShader (日本語)#ピクセル・シェーダー関数|ピクセル・シェーダー・エフェクト]]関数の引数として使用されます。頂点シェーダーで書き込み可能です。この変数は頂点シェーダーにあるテクスチャの座標を変更するために使用してください。}}
+
{{param|vec4|VaryingTexCoord|補完処理をした各頂点のテクスチャ座標です。[[love.graphics.newShader (日本語)#頂点シェーダー関数|position]] 関数の呼び出し前に頂点シェーダーにて自動的に <code>VertexTexCoord</code> の値を設定します。 <code>texture_coords</code> は[[love.graphics.newShader (日本語)#ピクセル・シェーダー関数|ピクセル・シェーダー・エフェクト]]関数の引数として使用されます。頂点シェーダーで書き込み可能です。この変数は頂点シェーダーにあるテクスチャの座標を変更するために使用してください。}}
  
{{param|vec4|VaryingColor|頂点ごとに補完された色です。[[love.graphics.newShader (日本語)#頂点シェーダー関数|位置]]関数が呼び出される前に、頂点シェーダーで LÖVE [[0.10.0]] 以降では <code>ConstantColor * gammaCorrectColor(VertexColor)</code> を、または [[0.9.2]] 以前では <code>VertexColor</code> の値を自動設定します。 <code>color</code> は[[love.graphics.newShader (日本語)#ピクセル・シェーダー関数|ピクセル・シェーダー・エフェクト]]関数の引数として使用されます。頂点シェーダーにおいては書き込み可能です。この関数は頂点シェーダーにある各頂点または定数色を変更するために使用してください。}}
+
{{param|vec4|VaryingColor|各頂点の補完色です。[[love.graphics.newShader (日本語)#頂点シェーダー関数|position]] 関数の呼び出し前に、頂点シェーダーは LÖVE [[0.10.0]] 以降では <code>ConstantColor * gammaCorrectColor(VertexColor)</code> を、または [[0.9.2]] 以前では <code>VertexColor</code> の値を自動設定します。 <code>color</code> は[[love.graphics.newShader (日本語)#ピクセル・シェーダー関数|ピクセル・シェーダー・エフェクト]]関数の引数として使用されます。頂点シェーダーにおいては書き込み可能です。この関数は頂点シェーダーにある各頂点または定数色を変更するために使用してください。}}
  
{{newin (日本語)|[[0.9.1]]|091|type=組み込みシェーダー変数}}
+
{{newin (日本語)|[[0.9.1 (日本語)|0.9.1]]|091|type=組み込みシェーダー変数}}
{{param|vec4|love_ScreenSize|x および y 要素の変数に格納された現在表示されている画面(または Canvas) の幅と高さです。 z および w 要素は LÖVE により内部的に使用されます。それは <code>love_ScreenSize.xy</code> または <code>vec2(love_ScreenSize)</code> により vec2へ変換することができます。}}
+
{{param|vec4|love_ScreenSize|x および y 要素の変数に格納された現在表示されている画面(または Canvas) の幅と高さです。 z および w 要素は LÖVE により内部的に使用されます。それは <code>love_ScreenSize.xy</code> または <code>vec2(love_ScreenSize)</code> により vec2 へ変換することができます。}}
  
 
== 頂点シェーダー組み込み変数 ==
 
== 頂点シェーダー組み込み変数 ==
Line 23: Line 23:
 
{{param|vec4|VertexColor|[[Mesh (日本語)|Mesh]], [[SpriteBatch (日本語)|SpriteBatch]], または [[Text (日本語)|Text]] オブジェクトならば、頂点の色、スプライト、またはテキスト文字は各頂点の色で描画されるか、 LÖVE [[0.9.2]] 以前では大域色は [[love.graphics.setColor (日本語)|love.graphics.setColor]] で設定されます。なお、[[love.graphics.isGammaCorrect (日本語)|ガンマ補正]]は適用されません。}}
 
{{param|vec4|VertexColor|[[Mesh (日本語)|Mesh]], [[SpriteBatch (日本語)|SpriteBatch]], または [[Text (日本語)|Text]] オブジェクトならば、頂点の色、スプライト、またはテキスト文字は各頂点の色で描画されるか、 LÖVE [[0.9.2]] 以前では大域色は [[love.graphics.setColor (日本語)|love.graphics.setColor]] で設定されます。なお、[[love.graphics.isGammaCorrect (日本語)|ガンマ補正]]は適用されません。}}
  
{{newin (日本語)|[[0.10.0]]|100|type=組み込みシェーダー変数}}
+
{{newin (日本語)|[[0.10.0 (日本語)|0.10.0]]|100|type=組み込みシェーダー変数}}
 
{{param|vec4|ConstantColor|大域色は [[love.graphics.setColor (日本語)|love.graphics.setColor]] で設定されます。大域[[love.graphics.isGammaCorrect (日本語)|ガンマ補正]]が有効ならば、常にガンマ補正処理が行われます。}}
 
{{param|vec4|ConstantColor|大域色は [[love.graphics.setColor (日本語)|love.graphics.setColor]] で設定されます。大域[[love.graphics.isGammaCorrect (日本語)|ガンマ補正]]が有効ならば、常にガンマ補正処理が行われます。}}
  
 
== ピクセル・シェーダー組み込み変数 ==
 
== ピクセル・シェーダー組み込み変数 ==
{{param|vec4 array|love_Canvases|[[love.graphics.setCanvas (日本語)|love.graphics.setCanvas]] により複数のキャンバスが設定される場合および[[love.graphics.newShader (日本語)#ピクセル・シェーダー関数|エフェクト]]関数が <code>effect</code> の代わりに使用される場合、配列はキャンバスごとのピクセルの色として設定するために使用されます。シェーダーにおける配列は 0-基数であることに注意してください。'''エフェクト'''関数が使用される場合、ピクセル・シェーダーは書きこみ可能です。}}
+
{{param|vec4 array|love_Canvases[]|[[love.graphics.setCanvas (日本語)|love.graphics.setCanvas]] により複数のキャンバスが設定される場合および[[love.graphics.newShader (日本語)#ピクセル・シェーダー関数|エフェクト]]関数が <code>effect</code> の代わりに使用される場合、配列はキャンバスごとのピクセルの色として設定するために使用されます。シェーダーにおける配列は 0-基数であることに注意してください。'''エフェクト'''関数が使用される場合、ピクセル・シェーダーは書きこみ可能です。}}
 +
 
 +
{{param|vec2|love_PixelCoord|画面上のピクセル座標です。これは <code>vec4 エフェクト</code>として[[love.graphics.newShader (日本語)#ピクセル・シェーダー関数|シェーダー関数]]へ渡される <code>screen_coords</code> と同じものです}}
 +
 +
=== 注釈 ===
 +
描画処理でテクスチャへアクセスしたい場合、適切な型の uniform (ユニフォーム) の名前として <code>MainTex</code> を定義します。すなわち  <code>uniform Image MainTex;</code> です。
  
 
== 関連 ==
 
== 関連 ==
Line 34: Line 39:
  
 
== そのほかの言語 ==
 
== そのほかの言語 ==
{{i18n|Shader_Variables}}
+
{{i18n (日本語)|Shader_Variables}}

Latest revision as of 07:52, 23 September 2019

LÖVE 0.9.0 から使用可能
これらの組み込みシェーダー変数は以前のバージョンでは非対応です。

頂点、およびピクセル・シェーダーで用いる LÖVE の組み込み変数です。特に断りがない限り読み取り専用です。

グローバル組み込み変数

mat4 TransformMatrix
love.graphics.translate および関連関数により影響を受ける変換行列。注意点として、自動バッチ処理をした頂点は CPU で変換後に TransformMatrix で単位行列として扱われます。
mat4 ProjectionMatrix
直交射影行列
mat4 TransformProjectionMatrix
結合された変換行列および射影行列。頂点シェーダーの位置関数で transform_projection は引数として使用されます。
vec4 VaryingTexCoord
補完処理をした各頂点のテクスチャ座標です。position 関数の呼び出し前に頂点シェーダーにて自動的に VertexTexCoord の値を設定します。 texture_coordsピクセル・シェーダー・エフェクト関数の引数として使用されます。頂点シェーダーで書き込み可能です。この変数は頂点シェーダーにあるテクスチャの座標を変更するために使用してください。
vec4 VaryingColor
各頂点の補完色です。position 関数の呼び出し前に、頂点シェーダーは LÖVE 0.10.0 以降では ConstantColor * gammaCorrectColor(VertexColor) を、または 0.9.2 以前では VertexColor の値を自動設定します。 colorピクセル・シェーダー・エフェクト関数の引数として使用されます。頂点シェーダーにおいては書き込み可能です。この関数は頂点シェーダーにある各頂点または定数色を変更するために使用してください。
LÖVE 0.9.1 から使用可能
この組み込みシェーダー変数は以前のバージョンでは非対応です。
vec4 love_ScreenSize
x および y 要素の変数に格納された現在表示されている画面(または Canvas) の幅と高さです。 z および w 要素は LÖVE により内部的に使用されます。それは love_ScreenSize.xy または vec2(love_ScreenSize) により vec2 へ変換することができます。

頂点シェーダー組み込み変数

vec4 VertexPosition
頂点の事前変形された位置です。vertex_position頂点シェーダーの位置関数の引数として使用されます。ベクトルの第三、第四要素において通常は (0, 1) です。
vec4 VertexTexCoord
頂点のテクスチャ座標です。ベクトルの第三、第四要素において通常は (0, 1) です。 Mesh に対してカスタム・テクスチャの座標を可能にします。
vec4 VertexColor
Mesh, SpriteBatch, または Text オブジェクトならば、頂点の色、スプライト、またはテキスト文字は各頂点の色で描画されるか、 LÖVE 0.9.2 以前では大域色は love.graphics.setColor で設定されます。なお、ガンマ補正は適用されません。
LÖVE 0.10.0 から使用可能
この組み込みシェーダー変数は以前のバージョンでは非対応です。
vec4 ConstantColor
大域色は love.graphics.setColor で設定されます。大域ガンマ補正が有効ならば、常にガンマ補正処理が行われます。

ピクセル・シェーダー組み込み変数

vec4 array love_Canvases[]
love.graphics.setCanvas により複数のキャンバスが設定される場合およびエフェクト関数が effect の代わりに使用される場合、配列はキャンバスごとのピクセルの色として設定するために使用されます。シェーダーにおける配列は 0-基数であることに注意してください。エフェクト関数が使用される場合、ピクセル・シェーダーは書きこみ可能です。
vec2 love_PixelCoord
画面上のピクセル座標です。これは vec4 エフェクトとしてシェーダー関数へ渡される screen_coords と同じものです

注釈

描画処理でテクスチャへアクセスしたい場合、適切な型の uniform (ユニフォーム) の名前として MainTex を定義します。すなわち uniform Image MainTex; です。

関連

そのほかの言語