Difference between revisions of "ImageData:mapPixel (日本語)"
m (誤訳の修正: 高次関数 → 高階関数 (higher-order function )) |
m |
||
(2 intermediate revisions by the same user not shown) | |||
Line 13: | Line 13: | ||
end | end | ||
</source> | </source> | ||
+ | バージョン [[11.0 (日本語)|11.0]] 以前まで、配色成分における値の範囲は小数値の 0 〜 1 ではなく整数値の 0 〜 255 です。 | ||
== 関数 == | == 関数 == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== 概要 === | === 概要 === | ||
<source lang="lua"> | <source lang="lua"> | ||
Line 32: | Line 22: | ||
=== 引数 === | === 引数 === | ||
{{param|function|pixelFunction|全ピクセルへ適用する関数の引数。}} | {{param|function|pixelFunction|全ピクセルへ適用する関数の引数。}} | ||
− | {{param|number|x|関数を適用する ImageData にある領域の左上角の x 軸。}} | + | {{New feature (日本語)|0.9.0| |
− | {{param|number|y|関数を適用する ImageData にある領域の左上角の y 軸。}} | + | {{param|number|x (0)|関数を適用する ImageData にある領域の左上角の x 軸。}} |
− | {{param|number|width|関数を適用する ImageData にある領域の幅。}} | + | {{param|number|y (0)|関数を適用する ImageData にある領域の左上角の y 軸。}} |
− | {{param|number|height|関数を適用する ImageData にある領域の高さ。}} | + | {{param|number|width (ImageData:getWidth())|関数を適用する ImageData にある領域の幅。}} |
+ | {{param|number|height (ImageData:getHeight())|関数を適用する ImageData にある領域の高さ。}} | ||
+ | }} | ||
=== 返値 === | === 返値 === | ||
ありません。 | ありません。 | ||
Line 43: | Line 35: | ||
<source lang="lua"> | <source lang="lua"> | ||
function brighten( x, y, r, g, b, a ) | function brighten( x, y, r, g, b, a ) | ||
− | r = math.min(r * 3, | + | r = math.min(r * 3, 1) |
− | g = math.min(g * 3, | + | g = math.min(g * 3, 1) |
− | b = math.min(b * 3, | + | b = math.min(b * 3, 1) |
return r,g,b,a | return r,g,b,a | ||
end | end | ||
Line 54: | Line 46: | ||
<source lang="lua"> | <source lang="lua"> | ||
function stripey( x, y, r, g, b, a ) | function stripey( x, y, r, g, b, a ) | ||
− | r = math.min(r * math.sin(x*100)*2, | + | r = math.min(r * math.sin(x*100)*2, 1) |
− | g = math.min(g * math.cos(x*150)*2, | + | g = math.min(g * math.cos(x*150)*2, 1) |
− | b = math.min(b * math.sin(x*50)*2, | + | b = math.min(b * math.sin(x*50)*2, 1) |
return r,g,b,a | return r,g,b,a | ||
end | end | ||
Line 70: | Line 62: | ||
{{#set:Since=000}} | {{#set:Since=000}} | ||
== そのほかの言語 == | == そのほかの言語 == | ||
− | {{i18n|ImageData:mapPixel}} | + | {{i18n (日本語)|ImageData:mapPixel}} |
Latest revision as of 11:40, 17 October 2019
全ピクセルへ関数を適用して画像を変形します。
この関数は高階関数です。別の関数を引数として扱い、ImageData にある各ピクセルに対して一括で呼び出します。
渡されたは関数へ各ピクセルの順番により 6 つの引数から呼ばれます。引数はピクセルの x と y 座標および赤、緑、青、および透過の値を数値として表記したものです。関数はピクセルに対して赤、緑、青、および透過の値を返します。
function pixelFunction(x, y, r, g, b, a)
-- ピクセル・マッピング関数を定義するための雛形です。
-- ここで r, g, b および a へ新しい値を与えるための演算を行います
-- ...
return r, g, b, a
end
バージョン 11.0 以前まで、配色成分における値の範囲は小数値の 0 〜 1 ではなく整数値の 0 〜 255 です。
関数
概要
ImageData:mapPixel( pixelFunction, x, y, width, height )
引数
function pixelFunction
- 全ピクセルへ適用する関数の引数。
LÖVE 0.9.0 から利用可能
返値
ありません。
用例
画像を明るくします:
function brighten( x, y, r, g, b, a )
r = math.min(r * 3, 1)
g = math.min(g * 3, 1)
b = math.min(b * 3, 1)
return r,g,b,a
end
imageData:mapPixel( brighten )
画像へ色付きの縞模様を追加します:
function stripey( x, y, r, g, b, a )
r = math.min(r * math.sin(x*100)*2, 1)
g = math.min(g * math.cos(x*150)*2, 1)
b = math.min(b * math.sin(x*50)*2, 1)
return r,g,b,a
end
imageData:mapPixel( stripey )
出典: http://khason.net/blog/hlsl-pixel-shader-effects-tutorial/ (リンク切れを 11月16日に確認。代わりに Microsoft (イスラエル) または Internet Archive のミラーページ を参照してください)
関連