Simplification

Signed-off-by: Leo Ma <begeekmyfriend@gmail.com>
camera2
Leo Ma 9 years ago
parent 7e3b61bd30
commit 1706a896e7

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicAmaroFilter extends GPUImageFilter{ public class MagicAmaroFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1,-1}; private int[] inputTextureHandles = {-1,-1,-1};
@ -15,7 +15,7 @@ public class MagicAmaroFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicAmaroFilter(){ public MagicAmaroFilter(){
super(MagicFilterType.AMARO, OpenGlUtils.readShaderFromRawResource(R.raw.amaro)); super(MagicFilterType.AMARO, R.raw.amaro);
} }
@Override @Override
@ -28,7 +28,7 @@ public class MagicAmaroFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -37,7 +37,7 @@ public class MagicAmaroFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -59,9 +59,9 @@ public class MagicAmaroFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_blowout.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_blowout.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/overlaymap.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/overlaymap.png");
inputTextureHandles[2] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/amaromap.png"); inputTextureHandles[2] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/amaromap.png");
} }
}); });
} }

@ -8,14 +8,13 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicAntiqueFilter extends GPUImageFilter{ public class MagicAntiqueFilter extends GPUImageFilter{
private int[] mToneCurveTexture = {-1}; private int[] mToneCurveTexture = {-1};
private int mToneCurveTextureUniformLocation; private int mToneCurveTextureUniformLocation;
public MagicAntiqueFilter(){ public MagicAntiqueFilter(){
super(MagicFilterType.ANTIQUE, OpenGlUtils.readShaderFromRawResource(R.raw.antique)); super(MagicFilterType.ANTIQUE, R.raw.antique);
} }
@Override @Override

@ -6,25 +6,20 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
/** /**
* Created by Administrator on 2016/5/22. * Created by Administrator on 2016/5/22.
*/ */
public class MagicBeautyFilter extends GPUImageFilter{ public class MagicBeautyFilter extends GPUImageFilter{
private int mSingleStepOffsetLocation; private int mSingleStepOffsetLocation;
private int mParamsLocation;
private int mBeautyLevel = 3;
public MagicBeautyFilter(){ public MagicBeautyFilter(){
super(MagicFilterType.BEAUTY, OpenGlUtils.readShaderFromRawResource(R.raw.beauty)); super(MagicFilterType.BEAUTY, R.raw.beauty);
} }
protected void onInit() { protected void onInit() {
super.onInit(); super.onInit();
mSingleStepOffsetLocation = GLES20.glGetUniformLocation(getProgram(), "singleStepOffset"); mSingleStepOffsetLocation = GLES20.glGetUniformLocation(getProgram(), "singleStepOffset");
mParamsLocation = GLES20.glGetUniformLocation(getProgram(), "params");
setBeautyLevel(mBeautyLevel);
} }
@Override @Override
@ -32,26 +27,4 @@ public class MagicBeautyFilter extends GPUImageFilter{
super.onInputSizeChanged(width, height); super.onInputSizeChanged(width, height);
setFloatVec2(mSingleStepOffsetLocation, new float[] {2.0f / width, 2.0f / height}); setFloatVec2(mSingleStepOffsetLocation, new float[] {2.0f / width, 2.0f / height});
} }
public void setBeautyLevel(int level){
switch (level) {
case 1:
setFloat(mParamsLocation, 1.0f);
break;
case 2:
setFloat(mParamsLocation, 0.8f);
break;
case 3:
setFloat(mParamsLocation,0.6f);
break;
case 4:
setFloat(mParamsLocation, 0.4f);
break;
case 5:
setFloat(mParamsLocation,0.33f);
break;
default:
break;
}
}
} }

@ -8,7 +8,6 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicBlackCatFilter extends GPUImageFilter{ public class MagicBlackCatFilter extends GPUImageFilter{
@ -16,7 +15,7 @@ public class MagicBlackCatFilter extends GPUImageFilter{
private int mToneCurveTextureUniformLocation; private int mToneCurveTextureUniformLocation;
public MagicBlackCatFilter(){ public MagicBlackCatFilter(){
super(MagicFilterType.BLACKCAT, OpenGlUtils.readShaderFromRawResource(R.raw.blackcat)); super(MagicFilterType.BLACKCAT, R.raw.blackcat);
} }
@Override @Override

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicBrannanFilter extends GPUImageFilter{ public class MagicBrannanFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1,-1,-1,-1}; private int[] inputTextureHandles = {-1,-1,-1,-1,-1};
@ -15,7 +15,7 @@ public class MagicBrannanFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicBrannanFilter(){ public MagicBrannanFilter(){
super(MagicFilterType.BRANNAN, OpenGlUtils.readShaderFromRawResource(R.raw.brannan)); super(MagicFilterType.BRANNAN, R.raw.brannan);
} }
@Override @Override
@ -28,7 +28,7 @@ public class MagicBrannanFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -37,7 +37,7 @@ public class MagicBrannanFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -59,11 +59,11 @@ public class MagicBrannanFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_process.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_process.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_blowout.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_blowout.png");
inputTextureHandles[2] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_contrast.png"); inputTextureHandles[2] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_contrast.png");
inputTextureHandles[3] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_luma.png"); inputTextureHandles[3] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_luma.png");
inputTextureHandles[4] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_screen.png"); inputTextureHandles[4] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brannan_screen.png");
} }
}); });
} }

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicBrooklynFilter extends GPUImageFilter{ public class MagicBrooklynFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1,-1}; private int[] inputTextureHandles = {-1,-1,-1};
@ -15,7 +15,7 @@ public class MagicBrooklynFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicBrooklynFilter(){ public MagicBrooklynFilter(){
super(MagicFilterType.BROOKLYN, OpenGlUtils.readShaderFromRawResource(R.raw.brooklyn)); super(MagicFilterType.BROOKLYN, R.raw.brooklyn);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicBrooklynFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -38,7 +38,7 @@ public class MagicBrooklynFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -60,9 +60,9 @@ public class MagicBrooklynFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brooklynCurves1.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brooklynCurves1.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/filter_map_first.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/filter_map_first.png");
inputTextureHandles[2] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brooklynCurves2.png"); inputTextureHandles[2] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/brooklynCurves2.png");
} }
}); });
} }

@ -9,7 +9,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicCalmFilter extends GPUImageFilter{ public class MagicCalmFilter extends GPUImageFilter{
private int[] mToneCurveTexture = {-1}; private int[] mToneCurveTexture = {-1};
@ -20,7 +20,7 @@ public class MagicCalmFilter extends GPUImageFilter{
private int mMaskGrey2UniformLocation; private int mMaskGrey2UniformLocation;
public MagicCalmFilter(){ public MagicCalmFilter(){
super(MagicFilterType.CALM, OpenGlUtils.readShaderFromRawResource(R.raw.calm)); super(MagicFilterType.CALM, R.raw.calm);
} }
@Override @Override
@ -119,8 +119,8 @@ public class MagicCalmFilter extends GPUImageFilter{
arrayOfByte[(3 + (2048 + k * 4))] = -1; arrayOfByte[(3 + (2048 + k * 4))] = -1;
} }
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 3, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte)); GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 3, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte));
mMaskGrey1TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/calm_mask1.jpg"); mMaskGrey1TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/calm_mask1.jpg");
mMaskGrey2TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/calm_mask2.jpg"); mMaskGrey2TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/calm_mask2.jpg");
} }
}); });
} }

@ -8,14 +8,13 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicCoolFilter extends GPUImageFilter { public class MagicCoolFilter extends GPUImageFilter {
private int[] mToneCurveTexture = {-1}; private int[] mToneCurveTexture = {-1};
private int mToneCurveTextureUniformLocation; private int mToneCurveTextureUniformLocation;
public MagicCoolFilter(){ public MagicCoolFilter(){
super(MagicFilterType.COOL, OpenGlUtils.readShaderFromRawResource(R.raw.cool)); super(MagicFilterType.COOL, R.raw.cool);
} }
@Override @Override

@ -6,7 +6,6 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicCrayonFilter extends GPUImageFilter{ public class MagicCrayonFilter extends GPUImageFilter{
@ -15,7 +14,7 @@ public class MagicCrayonFilter extends GPUImageFilter{
private int mStrengthLocation; private int mStrengthLocation;
public MagicCrayonFilter(){ public MagicCrayonFilter(){
super(MagicFilterType.CRAYON, OpenGlUtils.readShaderFromRawResource(R.raw.crayon)); super(MagicFilterType.CRAYON, R.raw.crayon);
} }
@Override @Override

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicEarlyBirdFilter extends GPUImageFilter{ public class MagicEarlyBirdFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1,-1,-1,-1}; private int[] inputTextureHandles = {-1,-1,-1,-1,-1};
@ -15,7 +15,7 @@ public class MagicEarlyBirdFilter extends GPUImageFilter{
protected int mGLStrengthLocation; protected int mGLStrengthLocation;
public MagicEarlyBirdFilter(){ public MagicEarlyBirdFilter(){
super(MagicFilterType.EARLYBIRD, OpenGlUtils.readShaderFromRawResource(R.raw.earlybird)); super(MagicFilterType.EARLYBIRD, R.raw.earlybird);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicEarlyBirdFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -39,7 +39,7 @@ public class MagicEarlyBirdFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -60,11 +60,11 @@ public class MagicEarlyBirdFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/earlybirdcurves.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/earlybirdcurves.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/earlybirdoverlaymap_new.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/earlybirdoverlaymap_new.png");
inputTextureHandles[2] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vignettemap_new.png"); inputTextureHandles[2] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vignettemap_new.png");
inputTextureHandles[3] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/earlybirdblowout.png"); inputTextureHandles[3] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/earlybirdblowout.png");
inputTextureHandles[4] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/earlybirdmap.png"); inputTextureHandles[4] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/earlybirdmap.png");
} }
}); });
} }

@ -8,14 +8,13 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicEmeraldFilter extends GPUImageFilter{ public class MagicEmeraldFilter extends GPUImageFilter{
private int[] mToneCurveTexture = {-1}; private int[] mToneCurveTexture = {-1};
private int mToneCurveTextureUniformLocation; private int mToneCurveTextureUniformLocation;
public MagicEmeraldFilter(){ public MagicEmeraldFilter(){
super(MagicFilterType.EMERALD, OpenGlUtils.readShaderFromRawResource(R.raw.emerald)); super(MagicFilterType.EMERALD, R.raw.emerald);
} }
@Override @Override

@ -8,14 +8,13 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicEvergreenFilter extends GPUImageFilter{ public class MagicEvergreenFilter extends GPUImageFilter{
private int[] mToneCurveTexture = {-1}; private int[] mToneCurveTexture = {-1};
private int mToneCurveTextureUniformLocation; private int mToneCurveTextureUniformLocation;
public MagicEvergreenFilter(){ public MagicEvergreenFilter(){
super(MagicFilterType.EVERGREEN, OpenGlUtils.readShaderFromRawResource(R.raw.evergreen)); super(MagicFilterType.EVERGREEN, R.raw.evergreen);
} }
@Override @Override

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicFreudFilter extends GPUImageFilter { public class MagicFreudFilter extends GPUImageFilter {
private int mTexelHeightUniformLocation; private int mTexelHeightUniformLocation;
@ -17,7 +17,7 @@ public class MagicFreudFilter extends GPUImageFilter {
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicFreudFilter(){ public MagicFreudFilter(){
super(MagicFilterType.FREUD, OpenGlUtils.readShaderFromRawResource(R.raw.freud)); super(MagicFilterType.FREUD, R.raw.freud);
} }
@Override @Override
@ -30,7 +30,7 @@ public class MagicFreudFilter extends GPUImageFilter {
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for (int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for (int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -39,7 +39,7 @@ public class MagicFreudFilter extends GPUImageFilter {
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for (int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for (int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -63,7 +63,7 @@ public class MagicFreudFilter extends GPUImageFilter {
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/freud_rand.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/freud_rand.png");
} }
}); });
} }

@ -9,7 +9,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicHealthyFilter extends GPUImageFilter{ public class MagicHealthyFilter extends GPUImageFilter{
@ -21,7 +21,7 @@ public class MagicHealthyFilter extends GPUImageFilter{
private int mTexelWidthUniformLocation; private int mTexelWidthUniformLocation;
public MagicHealthyFilter(){ public MagicHealthyFilter(){
super(MagicFilterType.HEALTHY, OpenGlUtils.readShaderFromRawResource(R.raw.healthy)); super(MagicFilterType.HEALTHY, R.raw.healthy);
} }
@Override @Override
@ -99,7 +99,7 @@ public class MagicHealthyFilter extends GPUImageFilter{
arrayOfByte[(3 + i * 4)] = -1; arrayOfByte[(3 + i * 4)] = -1;
} }
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 1, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte)); GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 1, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte));
mMaskGrey1TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/healthy_mask_1.jpg"); mMaskGrey1TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/healthy_mask_1.jpg");
} }
}); });
} }

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicHefeFilter extends GPUImageFilter{ public class MagicHefeFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1,-1,-1}; private int[] inputTextureHandles = {-1,-1,-1,-1};
@ -15,7 +15,7 @@ public class MagicHefeFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicHefeFilter(){ public MagicHefeFilter(){
super(MagicFilterType.HEFE, OpenGlUtils.readShaderFromRawResource(R.raw.hefe)); super(MagicFilterType.HEFE, R.raw.hefe);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicHefeFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -38,7 +38,7 @@ public class MagicHefeFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -60,10 +60,10 @@ public class MagicHefeFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/edgeburn.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/edgeburn.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/hefemap.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/hefemap.png");
inputTextureHandles[2] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/hefemetal.png"); inputTextureHandles[2] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/hefemetal.png");
inputTextureHandles[3] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/hefesoftlight.png"); inputTextureHandles[3] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/hefesoftlight.png");
} }
}); });
} }

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicHudsonFilter extends GPUImageFilter{ public class MagicHudsonFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1,-1}; private int[] inputTextureHandles = {-1,-1,-1};
@ -15,7 +15,7 @@ public class MagicHudsonFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicHudsonFilter(){ public MagicHudsonFilter(){
super(MagicFilterType.HUDSON, OpenGlUtils.readShaderFromRawResource(R.raw.hudson)); super(MagicFilterType.HUDSON, R.raw.hudson);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicHudsonFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -39,7 +39,7 @@ public class MagicHudsonFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -61,9 +61,9 @@ public class MagicHudsonFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/ohudsonbackground.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/ohudsonbackground.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/overlaymap.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/overlaymap.png");
inputTextureHandles[2] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/hudsonmap.png"); inputTextureHandles[2] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/hudsonmap.png");
} }
}); });
} }

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicInkwellFilter extends GPUImageFilter{ public class MagicInkwellFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1}; private int[] inputTextureHandles = {-1};
@ -15,7 +15,7 @@ public class MagicInkwellFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicInkwellFilter(){ public MagicInkwellFilter(){
super(MagicFilterType.INKWELL, OpenGlUtils.readShaderFromRawResource(R.raw.inkwell)); super(MagicFilterType.INKWELL, R.raw.inkwell);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicInkwellFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -39,7 +39,7 @@ public class MagicInkwellFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -61,7 +61,7 @@ public class MagicInkwellFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/inkwellmap.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/inkwellmap.png");
} }
}); });
} }

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicKevinFilter extends GPUImageFilter{ public class MagicKevinFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1}; private int[] inputTextureHandles = {-1};
@ -15,7 +15,7 @@ public class MagicKevinFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicKevinFilter(){ public MagicKevinFilter(){
super(MagicFilterType.KEVIN, OpenGlUtils.readShaderFromRawResource(R.raw.kevin_new)); super(MagicFilterType.KEVIN, R.raw.kevin_new);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicKevinFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -38,7 +38,7 @@ public class MagicKevinFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -60,7 +60,7 @@ public class MagicKevinFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/kelvinmap.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/kelvinmap.png");
} }
}); });
} }

@ -8,14 +8,13 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicLatteFilter extends GPUImageFilter{ public class MagicLatteFilter extends GPUImageFilter{
private int[] mToneCurveTexture = {-1}; private int[] mToneCurveTexture = {-1};
private int mToneCurveTextureUniformLocation; private int mToneCurveTextureUniformLocation;
public MagicLatteFilter(){ public MagicLatteFilter(){
super(MagicFilterType.LATTE, OpenGlUtils.readShaderFromRawResource(R.raw.latte)); super(MagicFilterType.LATTE, R.raw.latte);
} }
@Override @Override

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicLomoFilter extends GPUImageFilter{ public class MagicLomoFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1}; private int[] inputTextureHandles = {-1,-1};
@ -15,7 +15,7 @@ public class MagicLomoFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicLomoFilter(){ public MagicLomoFilter(){
super(MagicFilterType.LOMO, OpenGlUtils.readShaderFromRawResource(R.raw.lomo)); super(MagicFilterType.LOMO, R.raw.lomo);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicLomoFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -39,7 +39,7 @@ public class MagicLomoFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -61,8 +61,8 @@ public class MagicLomoFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vlomomap_new.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vlomomap_new.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vignette_map.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vignette_map.png");
} }
}); });
} }

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicN1977Filter extends GPUImageFilter{ public class MagicN1977Filter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1}; private int[] inputTextureHandles = {-1,-1};
@ -15,13 +15,13 @@ public class MagicN1977Filter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicN1977Filter(){ public MagicN1977Filter(){
super(MagicFilterType.N1977, OpenGlUtils.readShaderFromRawResource(R.raw.n1977)); super(MagicFilterType.N1977, R.raw.n1977);
} }
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -31,7 +31,7 @@ public class MagicN1977Filter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -53,8 +53,8 @@ public class MagicN1977Filter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/n1977map.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/n1977map.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/n1977blowout.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/n1977blowout.png");
} }
}); });
} }

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicNashvilleFilter extends GPUImageFilter{ public class MagicNashvilleFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1}; private int[] inputTextureHandles = {-1};
@ -15,7 +15,7 @@ public class MagicNashvilleFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicNashvilleFilter(){ public MagicNashvilleFilter(){
super(MagicFilterType.NASHVILLE, OpenGlUtils.readShaderFromRawResource(R.raw.nashville)); super(MagicFilterType.NASHVILLE, R.raw.nashville);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicNashvilleFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -38,7 +38,7 @@ public class MagicNashvilleFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -60,7 +60,7 @@ public class MagicNashvilleFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/nashvillemap.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/nashvillemap.png");
} }
}); });
} }

@ -8,7 +8,6 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicNostalgiaFilter extends GPUImageFilter{ public class MagicNostalgiaFilter extends GPUImageFilter{
private int mBlurSizeUniformLocation; private int mBlurSizeUniformLocation;
@ -20,7 +19,7 @@ public class MagicNostalgiaFilter extends GPUImageFilter{
private int mToneCurveTextureUniformLocation2; private int mToneCurveTextureUniformLocation2;
public MagicNostalgiaFilter(){ public MagicNostalgiaFilter(){
super(MagicFilterType.NOSTALGIA, OpenGlUtils.readShaderFromRawResource(R.raw.nostalgia)); super(MagicFilterType.NOSTALGIA, R.raw.nostalgia);
} }
@Override @Override

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicPixarFilter extends GPUImageFilter{ public class MagicPixarFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1}; private int[] inputTextureHandles = {-1};
@ -15,7 +15,7 @@ public class MagicPixarFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicPixarFilter(){ public MagicPixarFilter(){
super(MagicFilterType.PIXAR, OpenGlUtils.readShaderFromRawResource(R.raw.pixar)); super(MagicFilterType.PIXAR, R.raw.pixar);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicPixarFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -38,7 +38,7 @@ public class MagicPixarFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for (int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for (int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -60,7 +60,7 @@ public class MagicPixarFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/pixar_curves.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/pixar_curves.png");
} }
}); });
} }

@ -7,14 +7,14 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicRiseFilter extends GPUImageFilter{ public class MagicRiseFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1,-1}; private int[] inputTextureHandles = {-1,-1,-1};
private int[] inputTextureUniformLocations = {-1,-1,-1}; private int[] inputTextureUniformLocations = {-1,-1,-1};
public MagicRiseFilter(){ public MagicRiseFilter(){
super(MagicFilterType.RISE, OpenGlUtils.readShaderFromRawResource(R.raw.rise)); super(MagicFilterType.RISE, R.raw.rise);
} }
@Override @Override
@ -28,7 +28,7 @@ public class MagicRiseFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -38,7 +38,7 @@ public class MagicRiseFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -58,9 +58,9 @@ public class MagicRiseFilter extends GPUImageFilter{
super.onInitialized(); super.onInitialized();
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/blackboard1024.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/blackboard1024.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/overlaymap.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/overlaymap.png");
inputTextureHandles[2] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/risemap.png"); inputTextureHandles[2] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/risemap.png");
} }
}); });
} }

@ -8,7 +8,6 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicRomanceFilter extends GPUImageFilter{ public class MagicRomanceFilter extends GPUImageFilter{
@ -16,7 +15,7 @@ public class MagicRomanceFilter extends GPUImageFilter{
private int mToneCurveTextureUniformLocation; private int mToneCurveTextureUniformLocation;
public MagicRomanceFilter(){ public MagicRomanceFilter(){
super(MagicFilterType.ROMANCE, OpenGlUtils.readShaderFromRawResource(R.raw.romance)); super(MagicFilterType.ROMANCE, R.raw.romance);
} }
@Override @Override

@ -8,7 +8,6 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicSakuraFilter extends GPUImageFilter{ public class MagicSakuraFilter extends GPUImageFilter{
private int[] mToneCurveTexture = {-1}; private int[] mToneCurveTexture = {-1};
@ -17,7 +16,7 @@ public class MagicSakuraFilter extends GPUImageFilter{
private int mTexelWidthUniformLocation; private int mTexelWidthUniformLocation;
public MagicSakuraFilter(){ public MagicSakuraFilter(){
super(MagicFilterType.SAKURA, OpenGlUtils.readShaderFromRawResource(R.raw.romance)); super(MagicFilterType.SAKURA, R.raw.romance);
} }
@Override @Override

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicSierraFilter extends GPUImageFilter{ public class MagicSierraFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1,-1}; private int[] inputTextureHandles = {-1,-1,-1};
@ -15,7 +15,7 @@ public class MagicSierraFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicSierraFilter(){ public MagicSierraFilter(){
super(MagicFilterType.SIERRA, OpenGlUtils.readShaderFromRawResource(R.raw.sierra)); super(MagicFilterType.SIERRA, R.raw.sierra);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicSierraFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -39,7 +39,7 @@ public class MagicSierraFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -60,9 +60,9 @@ public class MagicSierraFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/sierravignette.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/sierravignette.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/overlaymap.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/overlaymap.png");
inputTextureHandles[2] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/sierramap.png"); inputTextureHandles[2] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/sierramap.png");
} }
}); });
} }

@ -6,7 +6,6 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicSketchFilter extends GPUImageFilter{ public class MagicSketchFilter extends GPUImageFilter{
@ -15,7 +14,7 @@ public class MagicSketchFilter extends GPUImageFilter{
private int mStrengthLocation; private int mStrengthLocation;
public MagicSketchFilter(){ public MagicSketchFilter(){
super(MagicFilterType.SKETCH, OpenGlUtils.readShaderFromRawResource(R.raw.sketch)); super(MagicFilterType.SKETCH, R.raw.sketch);
} }
@Override @Override

@ -8,7 +8,6 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicSkinWhitenFilter extends GPUImageFilter { public class MagicSkinWhitenFilter extends GPUImageFilter {
private int mTexelHeightUniformLocation; private int mTexelHeightUniformLocation;
@ -17,7 +16,7 @@ public class MagicSkinWhitenFilter extends GPUImageFilter {
private int[] mToneCurveTexture = new int[] {-1}; private int[] mToneCurveTexture = new int[] {-1};
public MagicSkinWhitenFilter() { public MagicSkinWhitenFilter() {
super(MagicFilterType.SKINWHITEN, OpenGlUtils.readShaderFromRawResource(R.raw.skinwhiten)); super(MagicFilterType.SKINWHITEN, R.raw.skinwhiten);
} }
@Override @Override
@ -40,7 +39,6 @@ public class MagicSkinWhitenFilter extends GPUImageFilter {
protected void onInitialized() { protected void onInitialized() {
super.onInitialized(); super.onInitialized();
runOnDraw(new Runnable() { runOnDraw(new Runnable() {
public void run() { public void run() {
GLES20.glActiveTexture(GLES20.GL_TEXTURE3); GLES20.glActiveTexture(GLES20.GL_TEXTURE3);
GLES20.glGenTextures(1, mToneCurveTexture, 0); GLES20.glGenTextures(1, mToneCurveTexture, 0);

@ -9,7 +9,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicSunriseFilter extends GPUImageFilter{ public class MagicSunriseFilter extends GPUImageFilter{
private int mMaskGrey1TextureId = -1; private int mMaskGrey1TextureId = -1;
@ -22,7 +22,7 @@ public class MagicSunriseFilter extends GPUImageFilter{
private int mToneCurveTextureUniformLocation; private int mToneCurveTextureUniformLocation;
public MagicSunriseFilter(){ public MagicSunriseFilter(){
super(MagicFilterType.SUNRISE, OpenGlUtils.readShaderFromRawResource(R.raw.sunrise)); super(MagicFilterType.SUNRISE, R.raw.sunrise);
} }
@Override @Override
@ -134,11 +134,11 @@ public class MagicSunriseFilter extends GPUImageFilter{
} }
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 2, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte)); GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 2, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte));
GLES20.glActiveTexture(GLES20.GL_TEXTURE4); GLES20.glActiveTexture(GLES20.GL_TEXTURE4);
mMaskGrey1TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/amaro_mask1.jpg"); mMaskGrey1TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/amaro_mask1.jpg");
GLES20.glActiveTexture(GLES20.GL_TEXTURE5); GLES20.glActiveTexture(GLES20.GL_TEXTURE5);
mMaskGrey2TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/amaro_mask2.jpg"); mMaskGrey2TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/amaro_mask2.jpg");
GLES20.glActiveTexture(GLES20.GL_TEXTURE6); GLES20.glActiveTexture(GLES20.GL_TEXTURE6);
mMaskGrey3TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toy_mask1.jpg"); mMaskGrey3TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toy_mask1.jpg");
} }
}); });
} }

@ -9,7 +9,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicSunsetFilter extends GPUImageFilter{ public class MagicSunsetFilter extends GPUImageFilter{
private int mMaskGrey1TextureId = -1; private int mMaskGrey1TextureId = -1;
@ -20,7 +20,7 @@ public class MagicSunsetFilter extends GPUImageFilter{
private int mToneCurveTextureUniformLocation; private int mToneCurveTextureUniformLocation;
public MagicSunsetFilter(){ public MagicSunsetFilter(){
super(MagicFilterType.SUNSET, OpenGlUtils.readShaderFromRawResource(R.raw.sunset)); super(MagicFilterType.SUNSET, R.raw.sunset);
} }
@Override @Override
@ -114,8 +114,8 @@ public class MagicSunsetFilter extends GPUImageFilter{
arrayOfByte[(3 + (1024 + j * 4))] = -1; arrayOfByte[(3 + (1024 + j * 4))] = -1;
} }
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 2, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte)); GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 2, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte));
mMaskGrey1TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/rise_mask1.jpg"); mMaskGrey1TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/rise_mask1.jpg");
mMaskGrey2TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/rise_mask2.jpg"); mMaskGrey2TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/rise_mask2.jpg");
} }
}); });
} }

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicSutroFilter extends GPUImageFilter{ public class MagicSutroFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1,-1,-1,-1}; private int[] inputTextureHandles = {-1,-1,-1,-1,-1};
@ -15,7 +15,7 @@ public class MagicSutroFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicSutroFilter(){ public MagicSutroFilter(){
super(MagicFilterType.SUTRO, OpenGlUtils.readShaderFromRawResource(R.raw.sutro)); super(MagicFilterType.SUTRO, R.raw.sutro);
} }
@Override @Override
@ -28,7 +28,7 @@ public class MagicSutroFilter extends GPUImageFilter{
} }
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -37,7 +37,7 @@ public class MagicSutroFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -59,11 +59,11 @@ public class MagicSutroFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vignette_map.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vignette_map.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/sutrometal.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/sutrometal.png");
inputTextureHandles[2] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/softlight.png"); inputTextureHandles[2] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/softlight.png");
inputTextureHandles[3] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/sutroedgeburn.png"); inputTextureHandles[3] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/sutroedgeburn.png");
inputTextureHandles[4] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/sutrocurves.png"); inputTextureHandles[4] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/sutrocurves.png");
} }
}); });
} }

@ -9,7 +9,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicSweetsFilter extends GPUImageFilter{ public class MagicSweetsFilter extends GPUImageFilter{
private int[] mToneCurveTexture = {-1}; private int[] mToneCurveTexture = {-1};
@ -19,7 +19,7 @@ public class MagicSweetsFilter extends GPUImageFilter{
private int mLowPerformanceUniformLocation; private int mLowPerformanceUniformLocation;
public MagicSweetsFilter(){ public MagicSweetsFilter(){
super(MagicFilterType.SWEETS, OpenGlUtils.readShaderFromRawResource(R.raw.sweets)); super(MagicFilterType.SWEETS, R.raw.sweets);
} }
@Override @Override
@ -91,7 +91,7 @@ public class MagicSweetsFilter extends GPUImageFilter{
arrayOfByte[(3 + i * 4)] = ((byte)i); arrayOfByte[(3 + i * 4)] = ((byte)i);
} }
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 1, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte)); GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 1, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte));
mMaskGrey1TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/rise_mask2.jpg"); mMaskGrey1TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/rise_mask2.jpg");
} }
}); });
} }

@ -9,7 +9,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicTenderFilter extends GPUImageFilter{ public class MagicTenderFilter extends GPUImageFilter{
private int[] mToneCurveTexture = {-1}; private int[] mToneCurveTexture = {-1};
@ -18,7 +18,7 @@ public class MagicTenderFilter extends GPUImageFilter{
private int mMaskGrey1UniformLocation; private int mMaskGrey1UniformLocation;
public MagicTenderFilter(){ public MagicTenderFilter(){
super(MagicFilterType.TENDER, OpenGlUtils.readShaderFromRawResource(R.raw.tender)); super(MagicFilterType.TENDER, R.raw.tender);
} }
@Override @Override
@ -91,7 +91,7 @@ public class MagicTenderFilter extends GPUImageFilter{
arrayOfByte[(3 + i * 4)] = ((byte)arrayOfInt4[i]); arrayOfByte[(3 + i * 4)] = ((byte)arrayOfInt4[i]);
} }
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 1, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte)); GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 1, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte));
mMaskGrey1TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/bluevintage_mask1.jpg"); mMaskGrey1TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/bluevintage_mask1.jpg");
} }
}); });
} }

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicToasterFilter extends GPUImageFilter{ public class MagicToasterFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1,-1,-1,-1}; private int[] inputTextureHandles = {-1,-1,-1,-1,-1};
@ -15,7 +15,7 @@ public class MagicToasterFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicToasterFilter(){ public MagicToasterFilter(){
super(MagicFilterType.TOASTER2, OpenGlUtils.readShaderFromRawResource(R.raw.toaster2_filter_shader)); super(MagicFilterType.TOASTER2, R.raw.toaster2_filter_shader);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicToasterFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter() { protected void onDrawArraysAfter() {
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -39,7 +39,7 @@ public class MagicToasterFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre() { protected void onDrawArraysPre() {
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -61,11 +61,11 @@ public class MagicToasterFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toastermetal.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toastermetal.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toastersoftlight.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toastersoftlight.png");
inputTextureHandles[2] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toastercurves.png"); inputTextureHandles[2] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toastercurves.png");
inputTextureHandles[3] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toasteroverlaymapwarm.png"); inputTextureHandles[3] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toasteroverlaymapwarm.png");
inputTextureHandles[4] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toastercolorshift.png"); inputTextureHandles[4] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/toastercolorshift.png");
} }
}); });
} }

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicValenciaFilter extends GPUImageFilter{ public class MagicValenciaFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1}; private int[] inputTextureHandles = {-1,-1};
@ -15,13 +15,13 @@ public class MagicValenciaFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicValenciaFilter(){ public MagicValenciaFilter(){
super(MagicFilterType.VALENCIA, OpenGlUtils.readShaderFromRawResource(R.raw.valencia)); super(MagicFilterType.VALENCIA, R.raw.valencia);
} }
@Override @Override
protected void onDrawArraysAfter() { protected void onDrawArraysAfter() {
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -31,7 +31,7 @@ public class MagicValenciaFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre() { protected void onDrawArraysPre() {
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -62,8 +62,8 @@ public class MagicValenciaFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/valenciamap.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/valenciamap.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/valenciagradientmap.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/valenciagradientmap.png");
} }
}); });
} }

@ -7,15 +7,16 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicWaldenFilter extends GPUImageFilter {
public class MagicWaldenFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1}; private int[] inputTextureHandles = {-1,-1};
private int[] inputTextureUniformLocations = {-1,-1}; private int[] inputTextureUniformLocations = {-1,-1};
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicWaldenFilter(){ public MagicWaldenFilter(){
super(MagicFilterType.WALDEN, OpenGlUtils.readShaderFromRawResource(R.raw.walden)); super(MagicFilterType.WALDEN, R.raw.walden);
} }
@Override @Override
@ -29,7 +30,7 @@ public class MagicWaldenFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -38,7 +39,7 @@ public class MagicWaldenFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ for(int i = 0; i < inputTextureHandles.length && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i+3));
@ -59,8 +60,8 @@ public class MagicWaldenFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/walden_map.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/walden_map.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vignette_map.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vignette_map.png");
} }
}); });
} }

@ -9,7 +9,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicWarmFilter extends GPUImageFilter{ public class MagicWarmFilter extends GPUImageFilter{
private int[] mToneCurveTexture = {-1}; private int[] mToneCurveTexture = {-1};
@ -20,7 +20,7 @@ public class MagicWarmFilter extends GPUImageFilter{
private int mMaskGrey2UniformLocation; private int mMaskGrey2UniformLocation;
public MagicWarmFilter(){ public MagicWarmFilter(){
super(MagicFilterType.WARM, OpenGlUtils.readShaderFromRawResource(R.raw.warm)); super(MagicFilterType.WARM, R.raw.warm);
} }
@Override @Override
@ -115,8 +115,8 @@ public class MagicWarmFilter extends GPUImageFilter{
arrayOfByte[(3 + (1024 + j * 4))] = ((byte)arrayOfInt8[j]); arrayOfByte[(3 + (1024 + j * 4))] = ((byte)arrayOfInt8[j]);
} }
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 2, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte)); GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 256, 2, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(arrayOfByte));
mMaskGrey1TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/warm_layer1.jpg"); mMaskGrey1TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/warm_layer1.jpg");
mMaskGrey2TextureId = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/bluevintage_mask1.jpg"); mMaskGrey2TextureId = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/bluevintage_mask1.jpg");
} }
}); });
} }

@ -8,7 +8,6 @@ import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R; import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.OpenGlUtils;
public class MagicWhiteCatFilter extends GPUImageFilter{ public class MagicWhiteCatFilter extends GPUImageFilter{
@ -16,7 +15,7 @@ public class MagicWhiteCatFilter extends GPUImageFilter{
private int mToneCurveTextureUniformLocation; private int mToneCurveTextureUniformLocation;
public MagicWhiteCatFilter() { public MagicWhiteCatFilter() {
super(MagicFilterType.WHITECAT, OpenGlUtils.readShaderFromRawResource(R.raw.whitecat)); super(MagicFilterType.WHITECAT, R.raw.whitecat);
} }
@Override @Override

@ -7,7 +7,7 @@ import net.ossrs.yasea.R;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicXproIIFilter extends GPUImageFilter{ public class MagicXproIIFilter extends GPUImageFilter{
private int[] inputTextureHandles = {-1,-1}; private int[] inputTextureHandles = {-1,-1};
@ -15,7 +15,7 @@ public class MagicXproIIFilter extends GPUImageFilter{
private int mGLStrengthLocation; private int mGLStrengthLocation;
public MagicXproIIFilter(){ public MagicXproIIFilter(){
super(MagicFilterType.XPROII, OpenGlUtils.readShaderFromRawResource(R.raw.xproii_filter_shader)); super(MagicFilterType.XPROII, R.raw.xproii_filter_shader);
} }
@Override @Override
@ -29,7 +29,7 @@ public class MagicXproIIFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysAfter(){ protected void onDrawArraysAfter(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3)); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3));
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
@ -39,7 +39,7 @@ public class MagicXproIIFilter extends GPUImageFilter{
@Override @Override
protected void onDrawArraysPre(){ protected void onDrawArraysPre(){
for(int i = 0; i < inputTextureHandles.length for(int i = 0; i < inputTextureHandles.length
&& inputTextureHandles[i] != OpenGlUtils.NO_TEXTURE; i++){ && inputTextureHandles[i] != OpenGLUtils.NO_TEXTURE; i++){
GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) ); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + (i+3) );
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, inputTextureHandles[i]);
GLES20.glUniform1i(inputTextureUniformLocations[i], (i + 3)); GLES20.glUniform1i(inputTextureUniformLocations[i], (i + 3));
@ -60,8 +60,8 @@ public class MagicXproIIFilter extends GPUImageFilter{
setFloat(mGLStrengthLocation, 1.0f); setFloat(mGLStrengthLocation, 1.0f);
runOnDraw(new Runnable(){ runOnDraw(new Runnable(){
public void run(){ public void run(){
inputTextureHandles[0] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/xpromap.png"); inputTextureHandles[0] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/xpromap.png");
inputTextureHandles[1] = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vignettemap_new.png"); inputTextureHandles[1] = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), "filter/vignettemap_new.png");
} }
}); });
} }

@ -5,8 +5,7 @@ import java.nio.FloatBuffer;
import java.util.List; import java.util.List;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterType; import com.seu.magicfilter.utils.OpenGLUtils;
import com.seu.magicfilter.utils.OpenGlUtils;
import android.opengl.GLES20; import android.opengl.GLES20;
@ -83,7 +82,7 @@ public class MagicBaseGroupFilter extends GPUImageFilter {
public int onDrawFrame(final int textureId, final FloatBuffer cubeBuffer, public int onDrawFrame(final int textureId, final FloatBuffer cubeBuffer,
final FloatBuffer textureBuffer) { final FloatBuffer textureBuffer) {
if (frameBuffers == null || frameBufferTextures == null) { if (frameBuffers == null || frameBufferTextures == null) {
return OpenGlUtils.NOT_INIT; return OpenGLUtils.NOT_INIT;
} }
int size = filters.size(); int size = filters.size();
int previousTexture = textureId; int previousTexture = textureId;
@ -102,12 +101,12 @@ public class MagicBaseGroupFilter extends GPUImageFilter {
filter.onDrawFrame(previousTexture, cubeBuffer, textureBuffer); filter.onDrawFrame(previousTexture, cubeBuffer, textureBuffer);
} }
} }
return OpenGlUtils.ON_DRAWN; return OpenGLUtils.ON_DRAWN;
} }
public int onDrawFrame(int textureId) { public int onDrawFrame(int textureId) {
if (frameBuffers == null || frameBufferTextures == null) { if (frameBuffers == null || frameBufferTextures == null) {
return OpenGlUtils.NOT_INIT; return OpenGLUtils.NOT_INIT;
} }
int size = filters.size(); int size = filters.size();
int previousTexture = textureId; int previousTexture = textureId;
@ -124,7 +123,7 @@ public class MagicBaseGroupFilter extends GPUImageFilter {
filter.onDrawFrame(previousTexture, mGLCubeBuffer, mGLTextureBuffer); filter.onDrawFrame(previousTexture, mGLCubeBuffer, mGLTextureBuffer);
} }
} }
return OpenGlUtils.ON_DRAWN; return OpenGLUtils.ON_DRAWN;
} }
private void destroyFramebuffers() { private void destroyFramebuffers() {

@ -5,54 +5,21 @@ import android.opengl.GLES20;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.MagicFilterType; import com.seu.magicfilter.utils.MagicFilterType;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
public class MagicLookupFilter extends GPUImageFilter { import net.ossrs.yasea.R;
public static final String LOOKUP_FRAGMENT_SHADER = "" + public class MagicLookupFilter extends GPUImageFilter {
"varying highp vec2 textureCoordinate;\n" +
" \n" +
" uniform sampler2D inputImageTexture;\n" +
" uniform sampler2D inputImageTexture2; // lookup texture\n" +
" \n" +
" void main()\n" +
" {\n" +
" lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" +
" \n" +
" mediump float blueColor = textureColor.b * 63.0;\n" +
" \n" +
" mediump vec2 quad1;\n" +
" quad1.y = floor(floor(blueColor) / 8.0);\n" +
" quad1.x = floor(blueColor) - (quad1.y * 8.0);\n" +
" \n" +
" mediump vec2 quad2;\n" +
" quad2.y = floor(ceil(blueColor) / 8.0);\n" +
" quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n" +
" \n" +
" highp vec2 texPos1;\n" +
" texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);\n" +
" texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);\n" +
" \n" +
" highp vec2 texPos2;\n" +
" texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);\n" +
" texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);\n" +
" \n" +
" lowp vec4 newColor1 = texture2D(inputImageTexture2, texPos1);\n" +
" lowp vec4 newColor2 = texture2D(inputImageTexture2, texPos2);\n" +
" \n" +
" lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n" +
" gl_FragColor = vec4(newColor.rgb, textureColor.w);\n" +
" }";
protected String table; protected String table;
public MagicLookupFilter(String table) { public MagicLookupFilter(String table) {
super(MagicFilterType.LOCKUP, LOOKUP_FRAGMENT_SHADER); super(MagicFilterType.LOCKUP, R.raw.lookup);
this.table = table; this.table = table;
} }
private int mLookupTextureUniform; private int mLookupTextureUniform;
private int mLookupSourceTexture = OpenGlUtils.NO_TEXTURE; private int mLookupSourceTexture = OpenGLUtils.NO_TEXTURE;
protected void onInit() { protected void onInit() {
super.onInit(); super.onInit();
@ -63,7 +30,7 @@ public class MagicLookupFilter extends GPUImageFilter {
super.onInitialized(); super.onInitialized();
runOnDraw(new Runnable() { runOnDraw(new Runnable() {
public void run() { public void run() {
mLookupSourceTexture = OpenGlUtils.loadTexture(MagicFilterFactory.getCurrentContext(), table); mLookupSourceTexture = OpenGLUtils.loadTexture(MagicFilterFactory.getCurrentContext(), table);
} }
}); });
} }

@ -20,22 +20,12 @@ import android.opengl.GLES20;
import com.seu.magicfilter.utils.MagicFilterType; import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R;
/** /**
* brightness value ranges from -1.0 to 1.0, with 0.0 as the normal level * brightness value ranges from -1.0 to 1.0, with 0.0 as the normal level
*/ */
public class GPUImageBrightnessFilter extends GPUImageFilter { public class GPUImageBrightnessFilter extends GPUImageFilter {
public static final String BRIGHTNESS_FRAGMENT_SHADER = "" +
"varying highp vec2 textureCoordinate;\n" +
" \n" +
" uniform sampler2D inputImageTexture;\n" +
" uniform lowp float brightness;\n" +
" \n" +
" void main()\n" +
" {\n" +
" lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" +
" \n" +
" gl_FragColor = vec4((textureColor.rgb + vec3(brightness)), textureColor.w);\n" +
" }";
private int mBrightnessLocation; private int mBrightnessLocation;
private float mBrightness; private float mBrightness;
@ -45,7 +35,7 @@ public class GPUImageBrightnessFilter extends GPUImageFilter {
} }
public GPUImageBrightnessFilter(final float brightness) { public GPUImageBrightnessFilter(final float brightness) {
super(MagicFilterType.BRIGHTNESS, BRIGHTNESS_FRAGMENT_SHADER); super(MagicFilterType.BRIGHTNESS, R.raw.brightness);
mBrightness = brightness; mBrightness = brightness;
} }

@ -20,24 +20,14 @@ import android.opengl.GLES20;
import com.seu.magicfilter.utils.MagicFilterType; import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R;
/** /**
* Changes the contrast of the image.<br> * Changes the contrast of the image.<br>
* <br> * <br>
* contrast value ranges from 0.0 to 4.0, with 1.0 as the normal level * contrast value ranges from 0.0 to 4.0, with 1.0 as the normal level
*/ */
public class GPUImageContrastFilter extends GPUImageFilter { public class GPUImageContrastFilter extends GPUImageFilter {
public static final String CONTRAST_FRAGMENT_SHADER = "" +
"varying highp vec2 textureCoordinate;\n" +
" \n" +
" uniform sampler2D inputImageTexture;\n" +
" uniform lowp float contrast;\n" +
" \n" +
" void main()\n" +
" {\n" +
" lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" +
" \n" +
" gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w);\n" +
" }";
private int mContrastLocation; private int mContrastLocation;
private float mContrast; private float mContrast;
@ -47,7 +37,7 @@ public class GPUImageContrastFilter extends GPUImageFilter {
} }
public GPUImageContrastFilter(float contrast) { public GPUImageContrastFilter(float contrast) {
super(MagicFilterType.CONTRAST, CONTRAST_FRAGMENT_SHADER); super(MagicFilterType.CONTRAST, R.raw.constrast);
mContrast = contrast; mContrast = contrast;
} }

@ -20,6 +20,8 @@ import android.opengl.GLES20;
import com.seu.magicfilter.utils.MagicFilterType; import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R;
/** /**
* exposure: The adjusted exposure (-10.0 - 10.0, with 0.0 as the default) * exposure: The adjusted exposure (-10.0 - 10.0, with 0.0 as the default)
*/ */
@ -45,7 +47,7 @@ public class GPUImageExposureFilter extends GPUImageFilter {
} }
public GPUImageExposureFilter(final float exposure) { public GPUImageExposureFilter(final float exposure) {
super(MagicFilterType.EXPOSURE, EXPOSURE_FRAGMENT_SHADER); super(MagicFilterType.EXPOSURE, R.raw.exposure);
mExposure = exposure; mExposure = exposure;
} }

@ -20,7 +20,7 @@ import android.graphics.PointF;
import android.opengl.GLES20; import android.opengl.GLES20;
import com.seu.magicfilter.utils.MagicFilterType; import com.seu.magicfilter.utils.MagicFilterType;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
import com.seu.magicfilter.utils.Rotation; import com.seu.magicfilter.utils.Rotation;
import com.seu.magicfilter.utils.TextureRotationUtil; import com.seu.magicfilter.utils.TextureRotationUtil;
@ -66,19 +66,18 @@ public class GPUImageFilter {
} }
public GPUImageFilter(MagicFilterType type) { public GPUImageFilter(MagicFilterType type) {
this(type, OpenGlUtils.readShaderFromRawResource(R.raw.default_vertex), this(type, R.raw.vertex_oes, R.raw.fragment_oes);
OpenGlUtils.readShaderFromRawResource(R.raw.default_fragment));
} }
public GPUImageFilter(MagicFilterType type, String fragmentShader) { public GPUImageFilter(MagicFilterType type, int fragmentShaderId) {
this(type, OpenGlUtils.readShaderFromRawResource(R.raw.default_vertex), fragmentShader); this(type, R.raw.vertex_oes, fragmentShaderId);
} }
public GPUImageFilter(MagicFilterType type, String vertexShader, String fragmentShader) { public GPUImageFilter(MagicFilterType type, int vertexShaderId, int fragmentShaderId) {
mType = type; mType = type;
mRunOnDraw = new LinkedList<>(); mRunOnDraw = new LinkedList<>();
mVertexShader = vertexShader; mVertexShader = OpenGLUtils.readShaderFromRawResource(vertexShaderId);
mFragmentShader = fragmentShader; mFragmentShader = OpenGLUtils.readShaderFromRawResource(fragmentShaderId);
mGLCubeBuffer = ByteBuffer.allocateDirect(TextureRotationUtil.CUBE.length * 4) mGLCubeBuffer = ByteBuffer.allocateDirect(TextureRotationUtil.CUBE.length * 4)
.order(ByteOrder.nativeOrder()) .order(ByteOrder.nativeOrder())
@ -98,7 +97,7 @@ public class GPUImageFilter {
protected void onInit() { protected void onInit() {
initVbo(); initVbo();
mGLProgId = OpenGlUtils.loadProgram(mVertexShader, mFragmentShader); mGLProgId = OpenGLUtils.loadProgram(mVertexShader, mFragmentShader);
mGLPositionIndex = GLES20.glGetAttribLocation(mGLProgId, "position"); mGLPositionIndex = GLES20.glGetAttribLocation(mGLProgId, "position");
mGLTextureCoordinateIndex = GLES20.glGetAttribLocation(mGLProgId,"inputTextureCoordinate"); mGLTextureCoordinateIndex = GLES20.glGetAttribLocation(mGLProgId,"inputTextureCoordinate");
mGLTextureTransformIndex = GLES20.glGetUniformLocation(mGLProgId, "textureTransform"); mGLTextureTransformIndex = GLES20.glGetUniformLocation(mGLProgId, "textureTransform");
@ -180,7 +179,7 @@ public class GPUImageFilter {
private void destroyFboTexture() { private void destroyFboTexture() {
if (mGLFboTexId != null) { if (mGLFboTexId != null) {
GLES20.glDeleteRenderbuffers(1, mGLFboTexId, 0); GLES20.glDeleteTextures(1, mGLFboTexId, 0);
mGLFboTexId = null; mGLFboTexId = null;
} }
if (mGLFboId != null) { if (mGLFboId != null) {
@ -191,7 +190,7 @@ public class GPUImageFilter {
public int onDrawFrame(final int textureId, final FloatBuffer cubeBuffer, final FloatBuffer textureBuffer) { public int onDrawFrame(final int textureId, final FloatBuffer cubeBuffer, final FloatBuffer textureBuffer) {
if (!mIsInitialized) { if (!mIsInitialized) {
return OpenGlUtils.NOT_INIT; return OpenGLUtils.NOT_INIT;
} }
GLES20.glUseProgram(mGLProgId); GLES20.glUseProgram(mGLProgId);
@ -203,7 +202,7 @@ public class GPUImageFilter {
GLES20.glEnableVertexAttribArray(mGLTextureCoordinateIndex); GLES20.glEnableVertexAttribArray(mGLTextureCoordinateIndex);
GLES20.glVertexAttribPointer(mGLTextureCoordinateIndex, 2, GLES20.GL_FLOAT, false, 4 * 2, textureBuffer); GLES20.glVertexAttribPointer(mGLTextureCoordinateIndex, 2, GLES20.GL_FLOAT, false, 4 * 2, textureBuffer);
if (textureId != OpenGlUtils.NO_TEXTURE) { if (textureId != OpenGLUtils.NO_TEXTURE) {
GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mGLFboTexId[0]); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mGLFboTexId[0]);
GLES20.glUniform1i(mGLInputImageTextureIndex, 0); GLES20.glUniform1i(mGLInputImageTextureIndex, 0);
@ -218,16 +217,16 @@ public class GPUImageFilter {
GLES20.glDisableVertexAttribArray(mGLPositionIndex); GLES20.glDisableVertexAttribArray(mGLPositionIndex);
GLES20.glDisableVertexAttribArray(mGLTextureCoordinateIndex); GLES20.glDisableVertexAttribArray(mGLTextureCoordinateIndex);
return OpenGlUtils.ON_DRAWN; return OpenGLUtils.ON_DRAWN;
} }
public int onDrawFrame() { public int onDrawFrame() {
if (!mIsInitialized) { if (!mIsInitialized) {
return OpenGlUtils.NOT_INIT; return OpenGLUtils.NOT_INIT;
} }
if (mGLFboId == null) { if (mGLFboId == null) {
return OpenGlUtils.NO_TEXTURE; return OpenGLUtils.NO_TEXTURE;
} }
GLES20.glUseProgram(mGLProgId); GLES20.glUseProgram(mGLProgId);
@ -267,14 +266,14 @@ public class GPUImageFilter {
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, 0); GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, 0);
return OpenGlUtils.ON_DRAWN; return OpenGLUtils.ON_DRAWN;
} }
protected void onDrawArraysPre() {} protected void onDrawArraysPre() {}
protected void onDrawArraysAfter() {} protected void onDrawArraysAfter() {}
protected void runPendingOnDrawTasks() { private void runPendingOnDrawTasks() {
while (!mRunOnDraw.isEmpty()) { while (!mRunOnDraw.isEmpty()) {
mRunOnDraw.removeFirst().run(); mRunOnDraw.removeFirst().run();
} }
@ -308,7 +307,7 @@ public class GPUImageFilter {
return mGLInputImageTextureIndex; return mGLInputImageTextureIndex;
} }
public IntBuffer getGlFboBuffer() { public IntBuffer getGLFboBuffer() {
return mGLFboBuffer; return mGLFboBuffer;
} }

@ -20,51 +20,9 @@ import android.opengl.GLES20;
import com.seu.magicfilter.utils.MagicFilterType; import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R;
public class GPUImageHueFilter extends GPUImageFilter { public class GPUImageHueFilter extends GPUImageFilter {
public static final String HUE_FRAGMENT_SHADER = "" +
"precision highp float;\n" +
"varying highp vec2 textureCoordinate;\n" +
"\n" +
"uniform sampler2D inputImageTexture;\n" +
"uniform mediump float hueAdjust;\n" +
"const highp vec4 kRGBToYPrime = vec4 (0.299, 0.587, 0.114, 0.0);\n" +
"const highp vec4 kRGBToI = vec4 (0.595716, -0.274453, -0.321263, 0.0);\n" +
"const highp vec4 kRGBToQ = vec4 (0.211456, -0.522591, 0.31135, 0.0);\n" +
"\n" +
"const highp vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0);\n" +
"const highp vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0);\n" +
"const highp vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0);\n" +
"\n" +
"void main ()\n" +
"{\n" +
" // Sample the input pixel\n" +
" highp vec4 color = texture2D(inputImageTexture, textureCoordinate);\n" +
"\n" +
" // Convert to YIQ\n" +
" highp float YPrime = dot (color, kRGBToYPrime);\n" +
" highp float I = dot (color, kRGBToI);\n" +
" highp float Q = dot (color, kRGBToQ);\n" +
"\n" +
" // Calculate the hue and chroma\n" +
" highp float hue = atan (Q, I);\n" +
" highp float chroma = sqrt (I * I + Q * Q);\n" +
"\n" +
" // Make the user's adjustments\n" +
" hue += (-hueAdjust); //why negative rotation?\n" +
"\n" +
" // Convert back to YIQ\n" +
" Q = chroma * sin (hue);\n" +
" I = chroma * cos (hue);\n" +
"\n" +
" // Convert back to RGB\n" +
" highp vec4 yIQ = vec4 (YPrime, I, Q, 0.0);\n" +
" color.r = dot (yIQ, kYIQToR);\n" +
" color.g = dot (yIQ, kYIQToG);\n" +
" color.b = dot (yIQ, kYIQToB);\n" +
"\n" +
" // Save the result\n" +
" gl_FragColor = color;\n" +
"}\n";
private float mHue; private float mHue;
private int mHueLocation; private int mHueLocation;
@ -74,7 +32,7 @@ public class GPUImageHueFilter extends GPUImageFilter {
} }
public GPUImageHueFilter(final float hue) { public GPUImageHueFilter(final float hue) {
super(MagicFilterType.HUE, HUE_FRAGMENT_SHADER); super(MagicFilterType.HUE, R.raw.hue);
mHue = hue; mHue = hue;
} }

@ -20,28 +20,12 @@ import android.opengl.GLES20;
import com.seu.magicfilter.utils.MagicFilterType; import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R;
/** /**
* saturation: The degree of saturation or desaturation to apply to the image (0.0 - 2.0, with 1.0 as the default) * saturation: The degree of saturation or desaturation to apply to the image (0.0 - 2.0, with 1.0 as the default)
*/ */
public class GPUImageSaturationFilter extends GPUImageFilter { public class GPUImageSaturationFilter extends GPUImageFilter {
public static final String SATURATION_FRAGMENT_SHADER = "" +
" varying highp vec2 textureCoordinate;\n" +
" \n" +
" uniform sampler2D inputImageTexture;\n" +
" uniform lowp float saturation;\n" +
" \n" +
" // Values from \"Graphics Shaders: Theory and Practice\" by Bailey and Cunningham\n" +
" const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721);\n" +
" \n" +
" void main()\n" +
" {\n" +
" lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" +
" lowp float luminance = dot(textureColor.rgb, luminanceWeighting);\n" +
" lowp vec3 greyScaleColor = vec3(luminance);\n" +
" \n" +
" gl_FragColor = vec4(mix(greyScaleColor, textureColor.rgb, saturation), textureColor.w);\n" +
" \n" +
" }";
private int mSaturationLocation; private int mSaturationLocation;
private float mSaturation; private float mSaturation;
@ -51,7 +35,7 @@ public class GPUImageSaturationFilter extends GPUImageFilter {
} }
public GPUImageSaturationFilter(final float saturation) { public GPUImageSaturationFilter(final float saturation) {
super(MagicFilterType.SATURATION, SATURATION_FRAGMENT_SHADER); super(MagicFilterType.SATURATION, R.raw.saturation);
mSaturation = saturation; mSaturation = saturation;
} }

@ -20,70 +20,14 @@ import android.opengl.GLES20;
import com.seu.magicfilter.utils.MagicFilterType; import com.seu.magicfilter.utils.MagicFilterType;
import net.ossrs.yasea.R;
/** /**
* Sharpens the picture. <br> * Sharpens the picture. <br>
* <br> * <br>
* sharpness: from -4.0 to 4.0, with 0.0 as the normal level * sharpness: from -4.0 to 4.0, with 0.0 as the normal level
*/ */
public class GPUImageSharpenFilter extends GPUImageFilter { public class GPUImageSharpenFilter extends GPUImageFilter {
public static final String SHARPEN_VERTEX_SHADER = "" +
"attribute vec4 position;\n" +
"attribute vec4 inputTextureCoordinate;\n" +
"\n" +
"uniform float imageWidthFactor; \n" +
"uniform float imageHeightFactor; \n" +
"uniform float sharpness;\n" +
"\n" +
"varying vec2 textureCoordinate;\n" +
"varying vec2 leftTextureCoordinate;\n" +
"varying vec2 rightTextureCoordinate; \n" +
"varying vec2 topTextureCoordinate;\n" +
"varying vec2 bottomTextureCoordinate;\n" +
"\n" +
"varying float centerMultiplier;\n" +
"varying float edgeMultiplier;\n" +
"\n" +
"void main()\n" +
"{\n" +
" gl_Position = position;\n" +
" \n" +
" mediump vec2 widthStep = vec2(imageWidthFactor, 0.0);\n" +
" mediump vec2 heightStep = vec2(0.0, imageHeightFactor);\n" +
" \n" +
" textureCoordinate = inputTextureCoordinate.xy;\n" +
" leftTextureCoordinate = inputTextureCoordinate.xy - widthStep;\n" +
" rightTextureCoordinate = inputTextureCoordinate.xy + widthStep;\n" +
" topTextureCoordinate = inputTextureCoordinate.xy + heightStep; \n" +
" bottomTextureCoordinate = inputTextureCoordinate.xy - heightStep;\n" +
" \n" +
" centerMultiplier = 1.0 + 4.0 * sharpness;\n" +
" edgeMultiplier = sharpness;\n" +
"}";
public static final String SHARPEN_FRAGMENT_SHADER = "" +
"precision highp float;\n" +
"\n" +
"varying highp vec2 textureCoordinate;\n" +
"varying highp vec2 leftTextureCoordinate;\n" +
"varying highp vec2 rightTextureCoordinate; \n" +
"varying highp vec2 topTextureCoordinate;\n" +
"varying highp vec2 bottomTextureCoordinate;\n" +
"\n" +
"varying highp float centerMultiplier;\n" +
"varying highp float edgeMultiplier;\n" +
"\n" +
"uniform sampler2D inputImageTexture;\n" +
"\n" +
"void main()\n" +
"{\n" +
" mediump vec3 textureColor = texture2D(inputImageTexture, textureCoordinate).rgb;\n" +
" mediump vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb;\n" +
" mediump vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb;\n" +
" mediump vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb;\n" +
" mediump vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb;\n" +
"\n" +
" gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(inputImageTexture, bottomTextureCoordinate).w);\n" +
"}";
private int mSharpnessLocation; private int mSharpnessLocation;
private float mSharpness; private float mSharpness;
@ -95,7 +39,7 @@ public class GPUImageSharpenFilter extends GPUImageFilter {
} }
public GPUImageSharpenFilter(final float sharpness) { public GPUImageSharpenFilter(final float sharpness) {
super(MagicFilterType.SHARPEN, SHARPEN_VERTEX_SHADER, SHARPEN_FRAGMENT_SHADER); super(MagicFilterType.SHARPEN, R.raw.vertex_sharpen, R.raw.sharpen);
mSharpness = sharpness; mSharpness = sharpness;
} }

@ -17,7 +17,7 @@ import android.opengl.GLES20;
import android.opengl.GLUtils; import android.opengl.GLUtils;
import android.util.Log; import android.util.Log;
public class OpenGlUtils { public class OpenGLUtils {
public static final int NO_TEXTURE = -1; public static final int NO_TEXTURE = -1;
public static final int NOT_INIT = -1; public static final int NOT_INIT = -1;
public static final int ON_DRAWN = 1; public static final int ON_DRAWN = 1;

@ -12,7 +12,7 @@ import android.widget.Toast;
import com.seu.magicfilter.base.gpuimage.GPUImageFilter; import com.seu.magicfilter.base.gpuimage.GPUImageFilter;
import com.seu.magicfilter.utils.MagicFilterFactory; import com.seu.magicfilter.utils.MagicFilterFactory;
import com.seu.magicfilter.utils.MagicFilterType; import com.seu.magicfilter.utils.MagicFilterType;
import com.seu.magicfilter.utils.OpenGlUtils; import com.seu.magicfilter.utils.OpenGLUtils;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
@ -32,7 +32,7 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
private SurfaceTexture surfaceTexture; private SurfaceTexture surfaceTexture;
private int mTextureId = OpenGlUtils.NO_TEXTURE; private int mOESTextureId = OpenGLUtils.NO_TEXTURE;
private int mSurfaceWidth; private int mSurfaceWidth;
private int mSurfaceHeight; private int mSurfaceHeight;
private int mPreviewWidth; private int mPreviewWidth;
@ -71,8 +71,8 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
magicFilter.init(); magicFilter.init();
magicFilter.onInputSizeChanged(mPreviewWidth, mPreviewHeight); magicFilter.onInputSizeChanged(mPreviewWidth, mPreviewHeight);
mTextureId = OpenGlUtils.getExternalOESTextureID(); mOESTextureId = OpenGLUtils.getExternalOESTextureID();
surfaceTexture = new SurfaceTexture(mTextureId); surfaceTexture = new SurfaceTexture(mOESTextureId);
surfaceTexture.setOnFrameAvailableListener(new SurfaceTexture.OnFrameAvailableListener() { surfaceTexture.setOnFrameAvailableListener(new SurfaceTexture.OnFrameAvailableListener() {
@Override @Override
public void onFrameAvailable(SurfaceTexture surfaceTexture) { public void onFrameAvailable(SurfaceTexture surfaceTexture) {
@ -95,7 +95,7 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
GLES20.glViewport(0,0,width, height); GLES20.glViewport(0,0,width, height);
mSurfaceWidth = width; mSurfaceWidth = width;
mSurfaceHeight = height; mSurfaceHeight = height;
magicFilter.onDisplaySizeChanged(mSurfaceWidth, mSurfaceHeight); magicFilter.onDisplaySizeChanged(width, height);
} }
@Override @Override
@ -108,9 +108,8 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
float[] mtx = new float[16]; float[] mtx = new float[16];
surfaceTexture.getTransformMatrix(mtx); surfaceTexture.getTransformMatrix(mtx);
magicFilter.setTextureTransformMatrix(mtx); magicFilter.setTextureTransformMatrix(mtx);
magicFilter.onDrawFrame(mOESTextureId);
magicFilter.onDrawFrame(); mGLIntBufferCache.add(magicFilter.getGLFboBuffer());
mGLIntBufferCache.add(magicFilter.getGlFboBuffer());
synchronized (writeLock) { synchronized (writeLock) {
writeLock.notifyAll(); writeLock.notifyAll();
} }
@ -150,12 +149,12 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
} }
private void deleteTextures() { private void deleteTextures() {
if(mTextureId != OpenGlUtils.NO_TEXTURE){ if(mOESTextureId != OpenGLUtils.NO_TEXTURE){
queueEvent(new Runnable() { queueEvent(new Runnable() {
@Override @Override
public void run() { public void run() {
GLES20.glDeleteTextures(1, new int[]{ mTextureId }, 0); GLES20.glDeleteTextures(1, new int[]{ mOESTextureId }, 0);
mTextureId = OpenGlUtils.NO_TEXTURE; mOESTextureId = OpenGLUtils.NO_TEXTURE;
} }
}); });
} }
@ -219,9 +218,6 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
} }
/***** set parameters *****/ /***** set parameters *****/
//params.set("orientation", "portrait");
//params.set("orientation", "landscape");
//params.setRotation(90);
params.setPictureSize(mPreviewWidth, mPreviewHeight); params.setPictureSize(mPreviewWidth, mPreviewHeight);
params.setPreviewSize(mPreviewWidth, mPreviewHeight); params.setPreviewSize(mPreviewWidth, mPreviewHeight);
int[] range = findClosestFpsRange(SrsEncoder.VFPS, params.getSupportedPreviewFpsRange()); int[] range = findClosestFpsRange(SrsEncoder.VFPS, params.getSupportedPreviewFpsRange());
@ -261,8 +257,6 @@ public class SrsCameraView extends GLSurfaceView implements GLSurfaceView.Render
} }
if (mCamera != null) { if (mCamera != null) {
// need to SET NULL CB before stop preview!!!
mCamera.setPreviewCallback(null);
mCamera.stopPreview(); mCamera.stopPreview();
mCamera.release(); mCamera.release();
mCamera = null; mCamera = null;

@ -1,29 +1,32 @@
#extension GL_OES_EGL_image_external : require #extension GL_OES_EGL_image_external : require
precision mediump float; precision highp float;
uniform samplerExternalOES inputImageTexture; uniform samplerExternalOES inputImageTexture;
uniform vec2 singleStepOffset; uniform vec2 singleStepOffset;
uniform mediump float params;
varying mediump vec2 textureCoordinate; varying vec2 textureCoordinate;
const highp vec3 W = vec3(0.299,0.587,0.114); const vec4 params = vec4(0.33, 0.63, 0.4, 0.35);
vec2 blurCoordinates[20]; const vec3 W = vec3(0.299,0.587,0.114);
const mat3 saturateMatrix = mat3(
1.1102,-0.0598,-0.061,
-0.0774,1.0826,-0.1186,
-0.0228,-0.0228,1.1772);
float hardLight(float color) vec2 blurCoordinates[24];
{
if(color <= 0.5) float hardLight(float color) {
if(color <= 0.5) {
color = color * color * 2.0; color = color * color * 2.0;
else } else {
color = 1.0 - ((1.0 - color)*(1.0 - color) * 2.0); color = 1.0 - ((1.0 - color)*(1.0 - color) * 2.0);
}
return color; return color;
} }
void main(){ void main() {
vec3 centralColor = texture2D(inputImageTexture, textureCoordinate).rgb; vec3 centralColor = texture2D(inputImageTexture, textureCoordinate).rgb;
if(params != 0.0){
blurCoordinates[0] = textureCoordinate.xy + singleStepOffset * vec2(0.0, -10.0); blurCoordinates[0] = textureCoordinate.xy + singleStepOffset * vec2(0.0, -10.0);
blurCoordinates[1] = textureCoordinate.xy + singleStepOffset * vec2(0.0, 10.0); blurCoordinates[1] = textureCoordinate.xy + singleStepOffset * vec2(0.0, 10.0);
@ -45,8 +48,12 @@ void main(){
blurCoordinates[17] = textureCoordinate.xy + singleStepOffset * vec2(-4.0, 4.0); blurCoordinates[17] = textureCoordinate.xy + singleStepOffset * vec2(-4.0, 4.0);
blurCoordinates[18] = textureCoordinate.xy + singleStepOffset * vec2(4.0, -4.0); blurCoordinates[18] = textureCoordinate.xy + singleStepOffset * vec2(4.0, -4.0);
blurCoordinates[19] = textureCoordinate.xy + singleStepOffset * vec2(4.0, 4.0); blurCoordinates[19] = textureCoordinate.xy + singleStepOffset * vec2(4.0, 4.0);
blurCoordinates[20] = textureCoordinate.xy + singleStepOffset * vec2(-2.0, -2.0);
blurCoordinates[21] = textureCoordinate.xy + singleStepOffset * vec2(-2.0, 2.0);
blurCoordinates[22] = textureCoordinate.xy + singleStepOffset * vec2(2.0, -2.0);
blurCoordinates[23] = textureCoordinate.xy + singleStepOffset * vec2(2.0, 2.0);
float sampleColor = centralColor.g * 20.0; float sampleColor = centralColor.g * 22.0;
sampleColor += texture2D(inputImageTexture, blurCoordinates[0]).g; sampleColor += texture2D(inputImageTexture, blurCoordinates[0]).g;
sampleColor += texture2D(inputImageTexture, blurCoordinates[1]).g; sampleColor += texture2D(inputImageTexture, blurCoordinates[1]).g;
sampleColor += texture2D(inputImageTexture, blurCoordinates[2]).g; sampleColor += texture2D(inputImageTexture, blurCoordinates[2]).g;
@ -67,8 +74,11 @@ void main(){
sampleColor += texture2D(inputImageTexture, blurCoordinates[17]).g * 2.0; sampleColor += texture2D(inputImageTexture, blurCoordinates[17]).g * 2.0;
sampleColor += texture2D(inputImageTexture, blurCoordinates[18]).g * 2.0; sampleColor += texture2D(inputImageTexture, blurCoordinates[18]).g * 2.0;
sampleColor += texture2D(inputImageTexture, blurCoordinates[19]).g * 2.0; sampleColor += texture2D(inputImageTexture, blurCoordinates[19]).g * 2.0;
sampleColor += texture2D(inputImageTexture, blurCoordinates[20]).g * 3.0;
sampleColor = sampleColor / 48.0; sampleColor += texture2D(inputImageTexture, blurCoordinates[21]).g * 3.0;
sampleColor += texture2D(inputImageTexture, blurCoordinates[22]).g * 3.0;
sampleColor += texture2D(inputImageTexture, blurCoordinates[23]).g * 3.0;
sampleColor = sampleColor / 62.0;
float highPass = centralColor.g - sampleColor + 0.5; float highPass = centralColor.g - sampleColor + 0.5;
@ -77,13 +87,23 @@ void main(){
highPass = hardLight(highPass); highPass = hardLight(highPass);
} }
float luminance = dot(centralColor, W); float luminance = dot(centralColor, W);
float alpha = pow(luminance, params.r);
float alpha = pow(luminance, params);
vec3 smoothColor = centralColor + (centralColor-vec3(highPass))*alpha*0.1; vec3 smoothColor = centralColor + (centralColor-vec3(highPass))*alpha*0.1;
gl_FragColor = vec4(mix(smoothColor.rgb, max(smoothColor, centralColor), alpha), 1.0); smoothColor.r = clamp(pow(smoothColor.r, params.g),0.0,1.0);
}else{ smoothColor.g = clamp(pow(smoothColor.g, params.g),0.0,1.0);
gl_FragColor = vec4(centralColor.rgb,1.0);; smoothColor.b = clamp(pow(smoothColor.b, params.g),0.0,1.0);
}
vec3 screen = vec3(1.0) - (vec3(1.0)-smoothColor) * (vec3(1.0)-centralColor);
vec3 lighten = max(smoothColor, centralColor);
vec3 softLight = 2.0 * centralColor*smoothColor + centralColor*centralColor
- 2.0 * centralColor*centralColor * smoothColor;
gl_FragColor = vec4(mix(centralColor, screen, alpha), 1.0);
gl_FragColor.rgb = mix(gl_FragColor.rgb, lighten, alpha);
gl_FragColor.rgb = mix(gl_FragColor.rgb, softLight, params.b);
vec3 satColor = gl_FragColor.rgb * saturateMatrix;
gl_FragColor.rgb = mix(gl_FragColor.rgb, satColor, params.a);
} }

@ -24,8 +24,7 @@ vec3 hsv2rgb(vec3 c) {
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
} }
void main() void main() {
{
float GreyVal; float GreyVal;
lowp vec4 textureColor; lowp vec4 textureColor;
lowp vec4 textureColorOri; lowp vec4 textureColorOri;

@ -0,0 +1,9 @@
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform lowp float brightness;
void main() {
lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
gl_FragColor = vec4((textureColor.rgb + vec3(brightness)), textureColor.w);
}

@ -0,0 +1,9 @@
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform lowp float contrast;
void main() {
lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w);
}

@ -0,0 +1,9 @@
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform highp float exposure;
void main() {
highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
gl_FragColor = vec4(textureColor.rgb * pow(2.0, exposure), textureColor.w);
}

@ -1,10 +1,8 @@
#extension GL_OES_EGL_image_external : require
precision mediump float; precision mediump float;
varying mediump vec2 textureCoordinate; varying mediump vec2 textureCoordinate;
uniform samplerExternalOES inputImageTexture; uniform sampler2D inputImageTexture;
void main() { void main() {
vec3 centralColor = texture2D(inputImageTexture, textureCoordinate).rgb; vec3 centralColor = texture2D(inputImageTexture, textureCoordinate).rgb;

@ -0,0 +1,11 @@
#extension GL_OES_EGL_image_external : require
precision mediump float;
varying mediump vec2 textureCoordinate;
uniform samplerExternalOES inputImageTexture;
void main() {
gl_FragColor = texture2D(inputImageTexture, textureCoordinate);
}

@ -0,0 +1,43 @@
precision highp float;
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform mediump float hueAdjust;
const highp vec4 kRGBToYPrime = vec4 (0.299, 0.587, 0.114, 0.0);
const highp vec4 kRGBToI = vec4 (0.595716, -0.274453, -0.321263, 0.0);
const highp vec4 kRGBToQ = vec4 (0.211456, -0.522591, 0.31135, 0.0);
const highp vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0);
const highp vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0);
const highp vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0);
void main () {
// Sample the input pixel
highp vec4 color = texture2D(inputImageTexture, textureCoordinate);
// Convert to YIQ
highp float YPrime = dot (color, kRGBToYPrime);
highp float I = dot (color, kRGBToI);
highp float Q = dot (color, kRGBToQ);
// Calculate the hue and chroma
highp float hue = atan (Q, I);
highp float chroma = sqrt (I * I + Q * Q);
// Make the user's adjustments
hue += (-hueAdjust); //why negative rotation?
// Convert back to YIQ
Q = chroma * sin (hue);
I = chroma * cos (hue);
// Convert back to RGB
highp vec4 yIQ = vec4 (YPrime, I, Q, 0.0);
color.r = dot (yIQ, kYIQToR);
color.g = dot (yIQ, kYIQToG);
color.b = dot (yIQ, kYIQToB);
// Save the result
gl_FragColor = color;
}

@ -0,0 +1,33 @@
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform sampler2D inputImageTexture2; // lookup texture\n" +
void main() {
lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" +
mediump float blueColor = textureColor.b * 63.0;
mediump vec2 quad1;
quad1.y = floor(floor(blueColor) / 8.0);
quad1.x = floor(blueColor) - (quad1.y * 8.0);
mediump vec2 quad2;\n" +
quad2.y = floor(ceil(blueColor) / 8.0);\n" +
quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n" +
highp vec2 texPos1;
texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);
texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);
highp vec2 texPos2;\n" +
texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);
texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);
lowp vec4 newColor1 = texture2D(inputImageTexture2, texPos1);
lowp vec4 newColor2 = texture2D(inputImageTexture2, texPos2);
lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor));
gl_FragColor = vec4(newColor.rgb, textureColor.w);
}

@ -0,0 +1,15 @@
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform lowp float saturation;
// Values from \"Graphics Shaders: Theory and Practice\" by Bailey and Cunningham
const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721);
void main() {
lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
lowp float luminance = dot(textureColor.rgb, luminanceWeighting);
lowp vec3 greyScaleColor = vec3(luminance);
gl_FragColor = vec4(mix(greyScaleColor, textureColor.rgb, saturation), textureColor.w);
}

@ -0,0 +1,22 @@
precision highp float;
varying highp vec2 textureCoordinate;
varying highp vec2 leftTextureCoordinate;
varying highp vec2 rightTextureCoordinate;
varying highp vec2 topTextureCoordinate;
varying highp vec2 bottomTextureCoordinate;
varying highp float centerMultiplier;
varying highp float edgeMultiplier;
uniform sampler2D inputImageTexture;
void main() {
mediump vec3 textureColor = texture2D(inputImageTexture, textureCoordinate).rgb;
mediump vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb;
mediump vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb;
mediump vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb;
mediump vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb;
gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(inputImageTexture, bottomTextureCoordinate).w);
}

@ -0,0 +1,9 @@
attribute vec4 position;
attribute vec4 inputTextureCoordinate;
varying vec2 textureCoordinate;
void main() {
textureCoordinate = inputTextureCoordinate.xy;
gl_Position = position;
}

@ -0,0 +1,31 @@
attribute vec4 position;
attribute vec4 inputTextureCoordinate;
uniform float imageWidthFactor;
uniform float imageHeightFactor;
uniform float sharpness;
varying vec2 textureCoordinate;
varying vec2 leftTextureCoordinate;
varying vec2 rightTextureCoordinate;
varying vec2 topTextureCoordinate;
varying vec2 bottomTextureCoordinate;
varying float centerMultiplier;
varying float edgeMultiplier;
void main() {
gl_Position = position;
mediump vec2 widthStep = vec2(imageWidthFactor, 0.0);
mediump vec2 heightStep = vec2(0.0, imageHeightFactor);
textureCoordinate = inputTextureCoordinate.xy;
leftTextureCoordinate = inputTextureCoordinate.xy - widthStep;
rightTextureCoordinate = inputTextureCoordinate.xy + widthStep;
topTextureCoordinate = inputTextureCoordinate.xy + heightStep;
bottomTextureCoordinate = inputTextureCoordinate.xy - heightStep;
centerMultiplier = 1.0 + 4.0 * sharpness;
edgeMultiplier = sharpness;
}
Loading…
Cancel
Save