Skip to content

Commit

Permalink
Overhauled the way that filter properties are set, which eliminates s…
Browse files Browse the repository at this point in the history
…ome redundant calls and is necessary for my next framework change.
  • Loading branch information
BradLarson committed Aug 12, 2012
1 parent dc15a41 commit b5529fb
Show file tree
Hide file tree
Showing 68 changed files with 342 additions and 478 deletions.
Expand Up @@ -21,11 +21,13 @@ - (void)viewDidLoad
{
[super viewDidLoad];

videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
// videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
// videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionFront];
// videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset1280x720 cameraPosition:AVCaptureDevicePositionBack];
videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset1280x720 cameraPosition:AVCaptureDevicePositionBack];
// videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset1920x1080 cameraPosition:AVCaptureDevicePositionBack];

videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;

filter = [[GPUImageSepiaFilter alloc] init];

// filter = [[GPUImageTiltShiftFilter alloc] init];
Expand Down Expand Up @@ -72,7 +74,7 @@ - (void)viewDidLoad
// [videoCamera.inputCamera setTorchMode:AVCaptureTorchModeOn];
// [videoCamera.inputCamera unlockForConfiguration];

double delayInSeconds = 10.0;
double delayInSeconds = 60.0;
dispatch_time_t stopTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(stopTime, dispatch_get_main_queue(), ^(void){

Expand Down Expand Up @@ -123,6 +125,7 @@ - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceO
break;
}
videoCamera.outputImageOrientation = orient;

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
Expand Down
4 changes: 1 addition & 3 deletions framework/Source/GPUImage3x3ConvolutionFilter.m
Expand Up @@ -71,10 +71,8 @@ - (id)init;
- (void)setConvolutionKernel:(GPUMatrix3x3)newValue;
{
_convolutionKernel = newValue;
[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];

glUniformMatrix3fv(convolutionMatrixUniform, 1, GL_FALSE, (GLfloat *)&_convolutionKernel);
[self setMatrix3f:(GLfloat *)&_convolutionKernel forUniform:convolutionMatrixUniform program:filterProgram];
}

@end
15 changes: 5 additions & 10 deletions framework/Source/GPUImage3x3TextureSamplingFilter.m
Expand Up @@ -73,8 +73,8 @@ - (void)setupFilterForSize:(CGSize)filterFrameSize;
_texelWidth = 1.0 / filterFrameSize.width;
_texelHeight = 1.0 / filterFrameSize.height;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
// REFACTOR: Enclose this in block on image processing queue
[GPUImageOpenGLESContext setActiveShaderProgram:filterProgram];
if (GPUImageRotationSwapsWidthAndHeight(inputRotation))
{
glUniform1f(texelWidthUniform, _texelHeight);
Expand All @@ -97,20 +97,15 @@ - (void)setTexelWidth:(CGFloat)newValue;
hasOverriddenImageSizeFactor = YES;
_texelWidth = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(texelWidthUniform, _texelWidth);
[self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram];
}

- (void)setTexelHeight:(CGFloat)newValue;
{
hasOverriddenImageSizeFactor = YES;
_texelHeight = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(texelHeightUniform, _texelHeight);
}

[self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram];
}

@end
4 changes: 1 addition & 3 deletions framework/Source/GPUImageAlphaBlendFilter.m
Expand Up @@ -45,9 +45,7 @@ - (void)setMix:(CGFloat)newValue;
{
_mix = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(mixUniform, _mix);
[self setFloat:_mix forUniform:mixUniform program:filterProgram];
}


Expand Down
8 changes: 2 additions & 6 deletions framework/Source/GPUImageBoxBlurFilter.m
Expand Up @@ -84,12 +84,8 @@ - (void)setBlurSize:(CGFloat)newValue;
{
_blurSize = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(firstBlurSizeUniform, _blurSize);

[secondFilterProgram use];
glUniform1f(secondBlurSizeUniform, _blurSize);
[self setFloat:_blurSize forUniform:firstBlurSizeUniform program:filterProgram];
[self setFloat:_blurSize forUniform:secondBlurSizeUniform program:secondFilterProgram];
}

@end
Expand Down
4 changes: 1 addition & 3 deletions framework/Source/GPUImageBrightnessFilter.m
Expand Up @@ -42,9 +42,7 @@ - (void)setBrightness:(CGFloat)newValue;
{
_brightness = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(brightnessUniform, _brightness);
[self setFloat:_brightness forUniform:brightnessUniform program:filterProgram];
}

@end
Expand Down
6 changes: 2 additions & 4 deletions framework/Source/GPUImageBuffer.m
Expand Up @@ -70,14 +70,12 @@ - (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates
return;
}

[GPUImageOpenGLESContext useImageProcessingContext];
[GPUImageOpenGLESContext setActiveShaderProgram:filterProgram];
[self setFilterFBO];

glBindTexture(GL_TEXTURE_2D, [[bufferedTextures lastObject] intValue]);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, [[bufferedTextures lastObject] intValue], 0);

[filterProgram use];


glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha);
glClear(GL_COLOR_BUFFER_BIT);

Expand Down
19 changes: 4 additions & 15 deletions framework/Source/GPUImageBulgeDistortionFilter.m
Expand Up @@ -69,34 +69,23 @@ - (void)setRadius:(CGFloat)newValue;
{
_radius = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(radiusUniform, _radius);
[self setFloat:_radius forUniform:radiusUniform program:filterProgram];
}

- (void)setScale:(CGFloat)newValue;
{
_scale = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(scaleUniform, _scale);

[self setFloat:_scale forUniform:scaleUniform program:filterProgram];
}

- (void)setCenter:(CGPoint)newValue;
{
_center = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];

CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation];

GLfloat centerPosition[2];
centerPosition[0] = rotatedPoint.x;
centerPosition[1] = rotatedPoint.y;

glUniform2fv(centerUniform, 1, centerPosition);
[self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram];
}

@end
15 changes: 4 additions & 11 deletions framework/Source/GPUImageChromaKeyBlendFilter.m
Expand Up @@ -67,28 +67,21 @@ - (void)setColorToReplaceRed:(GLfloat)redComponent green:(GLfloat)greenComponent
colorToReplace[1] = greenComponent;
colorToReplace[2] = blueComponent;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform3fv(colorToReplaceUniform, 1, colorToReplace);
[self setVec3:colorToReplace forUniform:colorToReplaceUniform program:filterProgram];
}

- (void)setThresholdSensitivity:(CGFloat)newValue;
{
_thresholdSensitivity = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(thresholdSensitivityUniform, _thresholdSensitivity);
}

[self setFloat:_thresholdSensitivity forUniform:thresholdSensitivityUniform program:filterProgram];
}

- (void)setSmoothing:(CGFloat)newValue;
{
_smoothing = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(smoothingUniform, _smoothing);
[self setFloat:_smoothing forUniform:smoothingUniform program:filterProgram];
}

@end
Expand Down
9 changes: 3 additions & 6 deletions framework/Source/GPUImageColorMatrixFilter.m
Expand Up @@ -53,18 +53,15 @@ - (id)init;
- (void)setIntensity:(CGFloat)newIntensity;
{
_intensity = newIntensity;
[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(intensityUniform, _intensity);

[self setFloat:_intensity forUniform:intensityUniform program:filterProgram];
}

- (void)setColorMatrix:(GPUMatrix4x4)newColorMatrix;
{
_colorMatrix = newColorMatrix;
[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];

glUniformMatrix4fv(colorMatrixUniform, 1, GL_FALSE, (GLfloat *)&_colorMatrix);
[self setMatrix4f:(GLfloat *)&_colorMatrix forUniform:colorMatrixUniform program:filterProgram];
}

@end
8 changes: 3 additions & 5 deletions framework/Source/GPUImageColorPackingFilter.m
Expand Up @@ -72,13 +72,11 @@ - (void)setupFilterForSize:(CGSize)filterFrameSize;
{
texelWidth = 0.5 / inputTextureSize.width;
texelHeight = 0.5 / inputTextureSize.height;
[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];

// REFACTOR: Wrap this in a block on the image processing queue
[GPUImageOpenGLESContext setActiveShaderProgram:filterProgram];
glUniform1f(texelWidthUniform, texelWidth);
glUniform1f(texelHeightUniform, texelHeight);

NSLog(@"Texel width: %f, height: %f", texelWidth, texelHeight);
}

#pragma mark -
Expand Down
4 changes: 1 addition & 3 deletions framework/Source/GPUImageContrastFilter.m
Expand Up @@ -42,9 +42,7 @@ - (void)setContrast:(CGFloat)newValue;
{
_contrast = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(contrastUniform, _contrast);
[self setFloat:_contrast forUniform:contrastUniform program:filterProgram];
}

@end
Expand Down
12 changes: 3 additions & 9 deletions framework/Source/GPUImageCrosshairGenerator.m
Expand Up @@ -70,12 +70,10 @@ - (void)renderCrosshairsFromArray:(GLfloat *)crosshairCoordinates count:(NSUInte
return;
}

[GPUImageOpenGLESContext useImageProcessingContext];
[GPUImageOpenGLESContext setActiveShaderProgram:filterProgram];

[self setFilterFBO];

[filterProgram use];

glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);

Expand All @@ -98,9 +96,7 @@ - (void)setCrosshairWidth:(CGFloat)newValue;
{
_crosshairWidth = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(crosshairWidthUniform, _crosshairWidth);
[self setFloat:_crosshairWidth forUniform:crosshairWidthUniform program:filterProgram];
}

- (void)setCrosshairColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent;
Expand All @@ -110,9 +106,7 @@ - (void)setCrosshairColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent
colorToReplace[1] = greenComponent;
colorToReplace[2] = blueComponent;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform3fv(crosshairColorUniform, 1, colorToReplace);
[self setVec3:colorToReplace forUniform:crosshairColorUniform program:filterProgram];
}

@end
8 changes: 2 additions & 6 deletions framework/Source/GPUImageCrosshatchFilter.m
Expand Up @@ -100,18 +100,14 @@ - (void)setCrossHatchSpacing:(CGFloat)newValue;
_crossHatchSpacing = newValue;
}

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(crossHatchSpacingUniform, _crossHatchSpacing);
[self setFloat:_crossHatchSpacing forUniform:crossHatchSpacingUniform program:filterProgram];
}

- (void)setLineWidth:(CGFloat)newValue;
{
_lineWidth = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(lineWidthUniform, _lineWidth);
[self setFloat:_lineWidth forUniform:lineWidthUniform program:filterProgram];
}

@end
22 changes: 7 additions & 15 deletions framework/Source/GPUImageDirectionalNonMaximumSuppressionFilter.m
Expand Up @@ -66,8 +66,8 @@ - (void)setupFilterForSize:(CGSize)filterFrameSize;
_texelWidth = 1.0 / filterFrameSize.width;
_texelHeight = 1.0 / filterFrameSize.height;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
// REFACTOR: Wrap this appropriately
[GPUImageOpenGLESContext setActiveShaderProgram:filterProgram];
glUniform1f(texelWidthUniform, _texelWidth);
glUniform1f(texelHeightUniform, _texelHeight);
}
Expand All @@ -81,37 +81,29 @@ - (void)setTexelWidth:(CGFloat)newValue;
hasOverriddenImageSizeFactor = YES;
_texelWidth = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(texelWidthUniform, _texelWidth);
[self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram];
}

- (void)setTexelHeight:(CGFloat)newValue;
{
hasOverriddenImageSizeFactor = YES;
_texelHeight = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(texelHeightUniform, _texelHeight);
[self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram];
}

- (void)setLowerThreshold:(CGFloat)newValue;
{
_lowerThreshold = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(lowerThresholdUniform, _lowerThreshold);
[self setFloat:_lowerThreshold forUniform:lowerThresholdUniform program:filterProgram];
}

- (void)setUpperThreshold:(CGFloat)newValue;
{
_upperThreshold = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(upperThresholdUniform, _upperThreshold);

[self setFloat:_upperThreshold forUniform:upperThresholdUniform program:filterProgram];
}


Expand Down
4 changes: 1 addition & 3 deletions framework/Source/GPUImageDissolveBlendFilter.m
Expand Up @@ -45,9 +45,7 @@ - (void)setMix:(CGFloat)newValue;
{
_mix = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(mixUniform, _mix);
[self setFloat:_mix forUniform:mixUniform program:filterProgram];
}

@end
Expand Down
3 changes: 0 additions & 3 deletions framework/Source/GPUImageEmbossFilter.m
Expand Up @@ -29,9 +29,6 @@ - (void)setIntensity:(CGFloat)newValue;

_intensity = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];

GPUMatrix3x3 newConvolutionMatrix;
newConvolutionMatrix.one.one = _intensity * (-2.0);
newConvolutionMatrix.one.two = -_intensity;
Expand Down
4 changes: 1 addition & 3 deletions framework/Source/GPUImageExposureFilter.m
Expand Up @@ -42,9 +42,7 @@ - (void)setExposure:(CGFloat)newValue;
{
_exposure = newValue;

[GPUImageOpenGLESContext useImageProcessingContext];
[filterProgram use];
glUniform1f(exposureUniform, _exposure);
[self setFloat:_exposure forUniform:exposureUniform program:filterProgram];
}

@end
Expand Down

0 comments on commit b5529fb

Please sign in to comment.