2008/05/23

Pixel Bender Toolkitで遊ぶ 〜 Sin波

[解説]
画像をSin波で波立たせます。

[パラメータ]
frequency_x/y - 周波数
distance_x/y - 効果量
width/height - 画像の幅と高さ

[コード]

<languageVersion : 1.0;>
kernel SinWave
<   namespace : "ASADA";
    vendor : "Asada Santohei";
    version : 3;
    description : "Sin Wave";
>
{
    const float PI = 3.14159265;
    parameter int frequency_x
    <
    maxValue : 100;
    minValue : 0;
    defaultValue : 0;
    >;
    parameter int frequency_y
    <
    maxValue : 100;
    minValue : 0;
    defaultValue : 0;
    >;
    parameter int distance_x
    <
    maxValue : 2000;
    minValue : 0;
    defaultValue : 50;
    >;
    parameter int distance_y
    <
    maxValue : 2000;
    minValue : 0;
    defaultValue : 50;
    >;
    parameter int width
    <
    maxValue : 2000;
    minValue : 0;
    defaultValue : 500;
    >;
    parameter int height
    <
    maxValue : 2000;
    minValue : 0;
    defaultValue : 500;
    >;

    input image4 src;
    output pixel4 dst;

    void
    evaluatePixel()
    {
        float sinX = sin(2.0 * PI * float(frequency_x) * (outCoord().x / float(width)));
        float sinY = sin(2.0 * PI * float(frequency_y) * (outCoord().y / float(height)));
        dst = sampleNearest(src, outCoord() + float2(sinY * float(distance_y), sinX * float(distance_x)));
    }
}

0 コメント: