ImageData:mapPixel (日本語)

全ピクセルへ関数を適用して画像を変形します。

この関数は高階関数です。別の関数を引数として扱い、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 から利用可能
number x (0)
関数を適用する ImageData にある領域の左上角の x 軸。
number y (0)
関数を適用する ImageData にある領域の左上角の y 軸。
number width (ImageData:getWidth())
関数を適用する ImageData にある領域の幅。
number height (ImageData:getHeight())
関数を適用する ImageData にある領域の高さ。

返値

ありません。

用例

画像を明るくします:

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 のミラーページ を参照してください)

関連


そのほかの言語