chrisbatt / AndroidFastImageProcessing

A framework for speeding up image processing on android devices by taking advantage of shaders on the GPU.
MIT License
285 stars 118 forks source link

NormalBlendFilter doesn't work as I think. #5

Closed yunsun330 closed 10 years ago

yunsun330 commented 10 years ago

Hello, thanks for your great framework. It's really a helpful for me.

I have some issues to use and need your help. Following is my code part.

protected void onCreate(Bundle savedInstanceState) { .... // For Camera Input view1 = new FastImageProcessingView(this); pipeline1 = new FastImageProcessingPipeline(); view1.setPipeline(pipeline1);

    cameraInput = new CameraPreviewInput(view1);
    screen1 = new ScreenEndpoint(pipeline1);
    cameraInput.addTarget(screen1);

    pipeline1.addRootRenderer(cameraInput);
    pipeline1.startRendering();

// For Image Input view2 = new FastImageProcessingView(this); pipeline2 = new FastImageProcessingPipeline(); view2.setPipeline(pipeline2); screen2 = new ScreenEndpoint(pipeline2); .... }

private void applyFilter { ... TransformFilter transformFilter = new TransformFilter(new float[] { transformScale, 0f, 0f, 0f, 0f, transformScale, 0f, 0f, 0f, 0f, 1f, 0f, 0f, 0f, 0f, 1f }, false, false); GaussianBlurFilter gaussianBlurFilter; gaussianBlurFilter = new GaussianBlurFilter(3.0f);

        // blend
        NormalBlendFilter normalBlendFilter = new NormalBlendFilter();

        ImageResourceInput sourcePicture = new ImageResourceInput(view2, this, R.drawable.blob_texture);
        pipeline2.addRootRenderer(sourcePicture);

        // swirl
        SwirlFilter swirlFilter = new SwirlFilter(new PointF(0.5f, 0.5f), 0.5f, swirlAngle);
        swirlFilter.addTarget(gaussianBlurFilter);
        normalBlendFilter.addTarget(swirlFilter);

        curFilter = normalBlendFilter;
        cameraInput.addTarget(curFilter);
        gaussianBlurFilter.addTarget(screen1);

        sourcePicture.addTarget(transformFilter);
        transformFilter.addTarget(normalBlendFilter);

        pipeline1.startRendering();
        pipeline2.startRendering();
        view1.requestRender();

... }

I found that NormalBlendFilter doesn't work properly. Please check my code.

Thanks.

yunsun330 commented 10 years ago

Sorry, I have found that there is an example for two inputs. Thanks.