1

Photobooth ios または osx アプリのようなスクイーズ効果をコーディングしようとしています。私はシェーダーを初めて使用しますが、GPUImage ライブラリを実装し、いくつかのシェーダーを微調整することができました。しかし、得られたのは球状の歪みだけで、最終的な結果は私が達成したいものとは少し異なります.

#import "GPUImageBulgeDistortionFilter.h" から改造したコードを次に示します。

特に、私はこのコードを使用していました

    NSString *const kGPUImageBulgeDistortionFragmentShaderString = SHADER_STRING
    (
     varying highp vec2 textureCoordinate;

     uniform sampler2D inputImageTexture;

     uniform highp vec2 center;
     uniform highp float radius;
     uniform highp float scale;

     void main()
     {
         highp vec2 textureCoordinateToUse = textureCoordinate;
         highp float dist = distance(center, textureCoordinate);
         highp float PI = 3.14159265358979323846264;//stone added
         textureCoordinateToUse -= center;
        textureCoordinateToUse.x = 0.5+textureCoordinateToUse.x*cos(textureCoordinateToUse.x*PI/radius)*scale;
         textureCoordinateToUse.y = 0.5 + textureCoordinateToUse.y*cos(textureCoordinateToUse.y*PI/radius)*scale;


         gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse );

     }
    );

このコードは cos と sin と PI を使用しているため、確実に球形の範囲内にあります。真ん中に小さな伸びていない部分があるので、それをより平らにするためのヒントは大きな助けになるでしょう!

4

0 に答える 0