2

水平でない GPUImageTiltShiftFilter 回転が必要です。任意の回転角度に回転させたい。また、フィルターを高速にして、UIRotationGestureRecongizer を使用して UI で回転できるようにしたいと考えています。

どうすればいいですか?

4

1 に答える 1

0

あ、わかった!

GPUImageTiltShiftFilter を変更する代わりに、新しい GPUImageFilterGroup を GPUImageGaussianSelectiveBlurFilter の変更バージョンとして作成し、回転を追加します。

追加した:

   uniform highp float rotation;

kGPUImageSMTiltShiftFragmentShaderString 内で、distanceFromCenter 行を GPUImageGaussianSelectiveBlurFilter のメインに追加して、GPUImageGaussianSelectiveBlurFilter を回転付きのチルト シフトに変えました。

 void main()
{
   lowp vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate);
   lowp vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2);

   highp vec2 textureCoordinateToUse = vec2(textureCoordinate2.x, (textureCoordinate2.y * aspectRatio + 0.5 - 0.5 * aspectRatio));

   highp float distanceFromCenter = abs((textureCoordinate2.x - excludeCirclePoint.x) * aspectRatio*cos(rotation) + (textureCoordinate2.y-excludeCirclePoint.y)*sin(rotation));

   gl_FragColor = mix(sharpImageColor, blurredImageColor, smoothstep(excludeCircleRadius - excludeBlurSize, excludeCircleRadius, distanceFromCenter));
 }
于 2013-05-06T21:53:02.453 に答える