Skip to content

Instantly share code, notes, and snippets.

@nheagy
Last active August 29, 2015 13:57
Show Gist options
  • Save nheagy/9907091 to your computer and use it in GitHub Desktop.
Save nheagy/9907091 to your computer and use it in GitHub Desktop.
const GLchar *blurVertex =
"attribute vec4 a_position;\n\
attribute vec4 a_texCoord;\n\
attribute vec4 a_color;\n\
\n\
uniform float texelWidthOffset;\n\
uniform float texelHeightOffset;\n\
\n\
varying vec2 blurCoordinates[15];\n\
varying lowp vec4 v_fragmentColor;\n\
\n\
void main()\n\
{\n\
gl_Position = a_position;\n\
\n\
vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n\
blurCoordinates[0] = a_texCoord.xy;\n\
blurCoordinates[1] = a_texCoord.xy + singleStepOffset * 1.496250;\n\
blurCoordinates[2] = a_texCoord.xy - singleStepOffset * 1.496250;\n\
blurCoordinates[3] = a_texCoord.xy + singleStepOffset * 3.491251;\n\
blurCoordinates[4] = a_texCoord.xy - singleStepOffset * 3.491251;\n\
blurCoordinates[5] = a_texCoord.xy + singleStepOffset * 5.486253;\n\
blurCoordinates[6] = a_texCoord.xy - singleStepOffset * 5.486253;\n\
blurCoordinates[7] = a_texCoord.xy + singleStepOffset * 7.481259;\n\
blurCoordinates[8] = a_texCoord.xy - singleStepOffset * 7.481259;\n\
blurCoordinates[9] = a_texCoord.xy + singleStepOffset * 9.476268;\n\
blurCoordinates[10] = a_texCoord.xy - singleStepOffset * 9.476268;\n\
blurCoordinates[11] = a_texCoord.xy + singleStepOffset * 11.471281;\n\
blurCoordinates[12] = a_texCoord.xy - singleStepOffset * 11.471281;\n\
blurCoordinates[13] = a_texCoord.xy + singleStepOffset * 13.466302;\n\
blurCoordinates[14] = a_texCoord.xy - singleStepOffset * 13.466302;\n\
v_fragmentColor = a_color;\n\
}\n";
const GLchar *blurFragment =
"uniform sampler2D CC_Texture0;\n\
uniform highp float texelWidthOffset;\n\
uniform highp float texelHeightOffset;\n\
\n\
varying highp vec2 blurCoordinates[15];\n\
varying vec4 v_fragmentColor;\n\
\n\
void main()\n\
{\n\
lowp vec4 sum = vec4(0.0);\n\
sum += texture2D(CC_Texture0, blurCoordinates[0]) * 0.040892;\n\
sum += texture2D(CC_Texture0, blurCoordinates[1]) * 0.080769;\n\
sum += texture2D(CC_Texture0, blurCoordinates[2]) * 0.080769;\n\
sum += texture2D(CC_Texture0, blurCoordinates[3]) * 0.076840;\n\
sum += texture2D(CC_Texture0, blurCoordinates[4]) * 0.076840;\n\
sum += texture2D(CC_Texture0, blurCoordinates[5]) * 0.070242;\n\
sum += texture2D(CC_Texture0, blurCoordinates[6]) * 0.070242;\n\
sum += texture2D(CC_Texture0, blurCoordinates[7]) * 0.061699;\n\
sum += texture2D(CC_Texture0, blurCoordinates[8]) * 0.061699;\n\
sum += texture2D(CC_Texture0, blurCoordinates[9]) * 0.052076;\n\
sum += texture2D(CC_Texture0, blurCoordinates[10]) * 0.052076;\n\
sum += texture2D(CC_Texture0, blurCoordinates[11]) * 0.042234;\n\
sum += texture2D(CC_Texture0, blurCoordinates[12]) * 0.042234;\n\
sum += texture2D(CC_Texture0, blurCoordinates[13]) * 0.032912;\n\
sum += texture2D(CC_Texture0, blurCoordinates[14]) * 0.032912;\n\
highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n\
sum += texture2D(CC_Texture0, blurCoordinates[0] + singleStepOffset * 15.461327) * 0.024645;\n\
sum += texture2D(CC_Texture0, blurCoordinates[0] - singleStepOffset * 15.461327) * 0.024645;\n\
sum += texture2D(CC_Texture0, blurCoordinates[0] + singleStepOffset * 17.456362) * 0.017732;\n\
sum += texture2D(CC_Texture0, blurCoordinates[0] - singleStepOffset * 17.456362) * 0.017732;\n\
sum += texture2D(CC_Texture0, blurCoordinates[0] + singleStepOffset * 19.451405) * 0.012260;\n\
sum += texture2D(CC_Texture0, blurCoordinates[0] - singleStepOffset * 19.451405) * 0.012260;\n\
sum += texture2D(CC_Texture0, blurCoordinates[0] + singleStepOffset * 21.446457) * 0.008144;\n\
sum += texture2D(CC_Texture0, blurCoordinates[0] - singleStepOffset * 21.446457) * 0.008144;\n\
gl_FragColor = sum;\n\
}\n\
";
@implementation GameView
@synthesize wordcounterTexture, wordlists, touchBeginTile, highscores, score=score;
#pragma mark Setup
- (id)init
{
if ((self = [super init]))
{
CCGLProgram *shaderProgram = [[CCGLProgram alloc] initWithVertexShaderByteArray:blurVertex fragmentShaderByteArray:blurFragment];
[shaderProgram addAttribute:@"a_position" index:kCCVertexAttrib_Position];
[shaderProgram addAttribute:@"a_color" index:kCCVertexAttrib_Color];
[shaderProgram addAttribute:@"a_texCoord" index:kCCVertexAttrib_TexCoords];
[shaderProgram link];
[shaderProgram updateUniforms];
[[CCShaderCache sharedShaderCache] addProgram:shaderProgram forKey:@"BlurShader"];
self.shaderProgram = [[CCShaderCache sharedShaderCache] programForKey:@"BlurShader"];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment