Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
target/
tmp
objs/
obj/
obj/
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
});
Expand Down
4 changes: 2 additions & 2 deletions library/src/main/jni/Application.mk
Original file line number Diff line number Diff line change
@@ -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

Expand Down
60 changes: 19 additions & 41 deletions library/src/main/jni/source/customFilter_0.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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);
}


4 changes: 3 additions & 1 deletion library/src/main/jni/source/customFilter_0.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Binary file modified library/src/main/libs/armeabi-v7a/libCGE.so
Binary file not shown.
Binary file modified library/src/main/libs/armeabi-v7a/libCGEExt.so
Binary file not shown.
Binary file removed library/src/main/libs/armeabi-v7a/libFaceTracker.so
Binary file not shown.