diff --git a/.gitignore b/.gitignore index 4227df62..24802334 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,4 @@ target/ tmp objs/ -obj/ +obj/ \ No newline at end of file diff --git a/cgeDemo/src/main/java/org/wysaid/cgeDemo/CameraDemoActivity.java b/cgeDemo/src/main/java/org/wysaid/cgeDemo/CameraDemoActivity.java index 48af6873..74320896 100755 --- a/cgeDemo/src/main/java/org/wysaid/cgeDemo/CameraDemoActivity.java +++ b/cgeDemo/src/main/java/org/wysaid/cgeDemo/CameraDemoActivity.java @@ -357,7 +357,7 @@ public void customFilterClicked(View view) { mCameraView.queueEvent(new Runnable() { @Override public void run() { - long customFilter = CGENativeLibrary.cgeCreateCustomNativeFilter(customFilterIndex, 1.0f, true); + long customFilter = CGENativeLibrary.cgeCreateCustomNativeFilter(customFilterIndex, 1.0f, false); mCameraView.getRecorder().setNativeFilter(customFilter); } }); diff --git a/library/src/main/jni/Application.mk b/library/src/main/jni/Application.mk index c78c9099..e296842b 100644 --- a/library/src/main/jni/Application.mk +++ b/library/src/main/jni/Application.mk @@ -1,6 +1,6 @@ -APP_ABI := armeabi armeabi-v7a arm64-v8a x86 mips -#APP_ABI := armeabi-v7a +#APP_ABI := armeabi armeabi-v7a arm64-v8a x86 mips +APP_ABI := armeabi-v7a APP_PLATFORM := android-14 diff --git a/library/src/main/jni/source/customFilter_0.cpp b/library/src/main/jni/source/customFilter_0.cpp index a5642b8d..2ae8d398 100644 --- a/library/src/main/jni/source/customFilter_0.cpp +++ b/library/src/main/jni/source/customFilter_0.cpp @@ -12,48 +12,17 @@ using namespace CGE; static CGEConstString s_fsh = CGE_SHADER_STRING_PRECISION_H ( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform vec2 vSteps; - - const vec2 vignetteCenter = vec2(0.5, 0.5); - - vec3 hardLight(vec3 src1, vec3 src2, float alpha) -{ - if(src2.r < 0.5) - src2.r = (src1.r * src2.r) * 2.0; - else src2.r = (src1.r + src2.r) * 2.0 - (src1.r * src2.r) * 2.0 - 1.0; - - if(src2.g < 0.5) - src2.g = (src1.g * src2.g) * 2.0; - else src2.g = (src1.g + src2.g) * 2.0 - (src1.g * src2.g) * 2.0 - 1.0; - - if(src2.b < 0.5) - src2.b = (src1.b * src2.b) * 2.0; - else src2.b = (src1.b + src2.b) * 2.0 - (src1.b * src2.b) * 2.0 - 1.0; - - return mix(src1, src2, alpha); -} - - void main(void) +varying vec2 textureCoordinate; +uniform sampler2D inputImageTexture; +uniform vec2 vSteps; +uniform float intensity; + + +void main(void) { - vec4 src = texture2D(inputImageTexture, textureCoordinate); - float max_r = 0.87055 / min(vSteps.x, vSteps.y); - float lens_fac = max_r * max_r; - float lens_facinv = 1073741824.0 / lens_fac; - float lens_amount = 102.0; - float dis = length(textureCoordinate - vignetteCenter); - float bd = (lens_fac + dis) * lens_facinv / 262144.0; - bd = bd * bd / 1024.0; - bd = 536870912.0 / bd; - float alpha = 1.0 + lens_amount*(bd - 32768.0)/256.0/32768.0; - alpha = clamp(alpha, 0.0, 1.0); - vec3 dst = src.rgb * alpha; - - float lum = dot(dst, vec3(0.299, 0.587, 0.114)); - vec3 tmp = vec3(lum, lum, 1.0 - lum); - dst = hardLight(dst, tmp, 0.5); - gl_FragColor = vec4(dst,src.a); + vec4 originalColor = texture2D(inputImageTexture, textureCoordinate); + vec4 invertedColor = vec4(((intensity * 0.5 + 0.5) - originalColor.rgb), originalColor.w); + gl_FragColor = invertedColor; }); bool CustomFilter_0::init() @@ -84,4 +53,13 @@ void CustomFilter_0::render2Texture(CGEImageHandlerInterface* handler, GLuint sr glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } +CGEConstString CustomFilter_0::paramIntensity = "intensity"; + +void CustomFilter_0::setIntensity(float value) +{ + CGE_LOG_ERROR("setIntensity %g", value); + m_program.bind(); + m_program.sendUniformf(paramIntensity, value); +} + diff --git a/library/src/main/jni/source/customFilter_0.h b/library/src/main/jni/source/customFilter_0.h index 82e0c4bd..54c506b7 100644 --- a/library/src/main/jni/source/customFilter_0.h +++ b/library/src/main/jni/source/customFilter_0.h @@ -18,11 +18,13 @@ class CustomFilter_0 : public CGE::CGEImageFilterInterface public: bool init(); - + void setIntensity(float value); //Range: [0, 1] + void render2Texture(CGE::CGEImageHandlerInterface* handler, GLuint srcTexture, GLuint vertexBufferID); protected: GLint mStepLoc; + static CGEConstString paramIntensity; }; #endif diff --git a/library/src/main/libs/armeabi-v7a/libCGE.so b/library/src/main/libs/armeabi-v7a/libCGE.so index 9f7a430c..883c1f51 100755 Binary files a/library/src/main/libs/armeabi-v7a/libCGE.so and b/library/src/main/libs/armeabi-v7a/libCGE.so differ diff --git a/library/src/main/libs/armeabi-v7a/libCGEExt.so b/library/src/main/libs/armeabi-v7a/libCGEExt.so index 47bc1947..6ca8202b 100755 Binary files a/library/src/main/libs/armeabi-v7a/libCGEExt.so and b/library/src/main/libs/armeabi-v7a/libCGEExt.so differ diff --git a/library/src/main/libs/armeabi-v7a/libFaceTracker.so b/library/src/main/libs/armeabi-v7a/libFaceTracker.so deleted file mode 100755 index 9c8de788..00000000 Binary files a/library/src/main/libs/armeabi-v7a/libFaceTracker.so and /dev/null differ