旋转波浪shader

<languageVersion : 1.0;>

kernel NewFilter
<   namespace : "gamecube";
    vendor : "gamecube";
    version : 1;
    description : "your description";
>
{
    input image4 src;
    output pixel4 dst;
   
    parameter float2 center
    <
        minValue : float2(1.0);
        maxValue : float2(200.0);
        defaultValue : float2(0.0);
    >;
   
    parameter float radius
    <
        minValue : 0.1;
        maxValue : 50.0;
        defaultValue : 4.0;
    >;

    void
    evaluatePixel()
    {
        float radians = 3.0;
        float2 relativePos = outCoord() - center;
        float distFromCenter = length(relativePos);
        distFromCenter /= radius;

        float sincWeight = sin(distFromCenter)*radians/distFromCenter;
        
        float cosAngle = cos(sincWeight);
        float sinAngle = sin(sincWeight);
        float2x2 rotMat = float2x2(
            cosAngle,sinAngle,
            -sinAngle,cosAngle
        );
        
        relativePos *= rotMat;
        dst = sampleNearest(src,relativePos);
    }

}

你可能感兴趣的:(sha)