X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Finterpolate%2Faggregated.h;h=383a436e9c10083117455211e7988adbe1e1ac61;hb=af44bff549c39ac8bb6e42a791e7a211e1013526;hp=42eb6c4c51aab54e61efcbe79191256e3b25c70a;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/plugins/interpolate/aggregated.h b/cinelerra-5.1/plugins/interpolate/aggregated.h index 42eb6c4c..383a436e 100644 --- a/cinelerra-5.1/plugins/interpolate/aggregated.h +++ b/cinelerra-5.1/plugins/interpolate/aggregated.h @@ -2,21 +2,21 @@ /* * CINELERRA * Copyright (C) 2008 Adam Williams - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * */ #ifndef INTERPOLATE_AGGREGATED @@ -24,7 +24,7 @@ // Interpolation sections performed by other plugins -static const char *interpolate_shader = +static const char *interpolate_shader = "uniform sampler2D tex;\n" "uniform vec2 pattern_offset;\n" "uniform vec2 pattern_size;\n" @@ -38,10 +38,8 @@ static const char *interpolate_shader = " vec3 result;\n" " pattern_coord -= pattern_offset;\n" " pattern_coord = fract(pattern_coord / pattern_size);\n" -" if(pattern_coord.x >= 0.5)\n" -" {\n" -" if(pattern_coord.y >= 0.5)\n" -" {\n" +" if(pattern_coord.x >= 0.5) {\n" +" if(pattern_coord.y >= 0.5) {\n" /* Bottom right of pattern */ /* Bottom right pixels are: */ /* 2 */ @@ -52,13 +50,12 @@ static const char *interpolate_shader = " vec2 pixel3 = pixel_coord + vec2(pixel_size.x, 0.0);\n" " vec2 pixel4 = pixel_coord + vec2(0.0, pixel_size.y);\n" " result = vec3((texture2D(tex, pixel1).r + \n" -" texture2D(tex, pixel3).r) / 2.0, \n" -" texture2D(tex, pixel_coord).g, \n" -" (texture2D(tex, pixel2).b + \n" -" texture2D(tex, pixel4).b) / 2.0);\n" +" texture2D(tex, pixel3).r) / 2.0, \n" +" texture2D(tex, pixel_coord).g, \n" +" (texture2D(tex, pixel2).b + \n" +" texture2D(tex, pixel4).b) / 2.0);\n" " }\n" -" else\n" -" {\n" +" else {\n" /* Top right of pattern */ /* Top right pixels are: */ /* 123 */ @@ -73,20 +70,18 @@ static const char *interpolate_shader = " vec2 pixel7 = pixel_coord + vec2(0.0, pixel_size.y);\n" " vec2 pixel8 = pixel_coord + pixel_size;\n" " result = vec3((texture2D(tex, pixel1).r + \n" -" texture2D(tex, pixel3).r + \n" -" texture2D(tex, pixel6).r + \n" -" texture2D(tex, pixel8).r) / 4.0, \n" -" (texture2D(tex, pixel4).g + \n" -" texture2D(tex, pixel2).g + \n" -" texture2D(tex, pixel5).g + \n" -" texture2D(tex, pixel7).g) / 4.0, \n" -" texture2D(tex, pixel_coord).b);\n" +" texture2D(tex, pixel3).r + \n" +" texture2D(tex, pixel6).r + \n" +" texture2D(tex, pixel8).r) / 4.0, \n" +" (texture2D(tex, pixel4).g + \n" +" texture2D(tex, pixel2).g + \n" +" texture2D(tex, pixel5).g + \n" +" texture2D(tex, pixel7).g) / 4.0, \n" +" texture2D(tex, pixel_coord).b);\n" " }\n" " }\n" -" else\n" -" {\n" -" if(pattern_coord.y >= 0.5)\n" -" {\n" +" else {\n" +" if(pattern_coord.y >= 0.5) {\n" /* Bottom left of pattern */ /* Bottom left pixels are: */ /* 123 */ @@ -100,19 +95,17 @@ static const char *interpolate_shader = " vec2 pixel6 = pixel_coord + vec2(-pixel_size.x, pixel_size.y);\n" " vec2 pixel7 = pixel_coord + vec2(0.0, pixel_size.y);\n" " vec2 pixel8 = pixel_coord + pixel_size;\n" -" result = vec3(\n" -" texture2D(tex, pixel_coord).r, \n" -" (texture2D(tex, pixel4).g + \n" -" texture2D(tex, pixel2).g + \n" -" texture2D(tex, pixel5).g + \n" -" texture2D(tex, pixel7).g) / 4.0, \n" -" (texture2D(tex, pixel1).b + \n" -" texture2D(tex, pixel3).b + \n" -" texture2D(tex, pixel6).b + \n" -" texture2D(tex, pixel8).b) / 4.0);\n" +" result = vec3(texture2D(tex, pixel_coord).r, \n" +" (texture2D(tex, pixel4).g + \n" +" texture2D(tex, pixel2).g + \n" +" texture2D(tex, pixel5).g + \n" +" texture2D(tex, pixel7).g) / 4.0, \n" +" (texture2D(tex, pixel1).b + \n" +" texture2D(tex, pixel3).b + \n" +" texture2D(tex, pixel6).b + \n" +" texture2D(tex, pixel8).b) / 4.0);\n" " }\n" -" else\n" -" {\n" +" else {\n" /* Top left of pattern */ /* Top left pixels are: */ /* 2 */ @@ -122,27 +115,23 @@ static const char *interpolate_shader = " vec2 pixel2 = pixel_coord - vec2(0.0, pixel_size.y);\n" " vec2 pixel3 = pixel_coord + vec2(pixel_size.x, 0.0);\n" " vec2 pixel4 = pixel_coord + vec2(0.0, pixel_size.y);\n" -" result = vec3(\n" -" (texture2D(tex, pixel2).r + \n" -" texture2D(tex, pixel4).r) / 2.0, \n" -" texture2D(tex, pixel_coord).g, \n" -" (texture2D(tex, pixel1).b + \n" -" texture2D(tex, pixel3).b) / 2.0);\n" +" result = vec3((texture2D(tex, pixel2).r + \n" +" texture2D(tex, pixel4).r) / 2.0, \n" +" texture2D(tex, pixel_coord).g, \n" +" (texture2D(tex, pixel1).b + \n" +" texture2D(tex, pixel3).b) / 2.0);\n" " }\n" " }\n" "\n" -"\n" " gl_FragColor = vec4(result * color_matrix, 1.0);\n" "}\n"; -#define INTERPOLATE_COMPILE(shader_stack, current_shader) \ -{ \ +#define INTERPOLATE_COMPILE(shader_stack, current_shader) do { \ shader_stack[current_shader++] = interpolate_shader; \ -} +} while(0) -#define INTERPOLATE_UNIFORMS(frag) \ -{ \ +#define INTERPOLATE_UNIFORMS(frag) do { \ int x_offset = get_output()->get_params()->get("INTERPOLATEPIXELS_X", (int)0); \ int y_offset = get_output()->get_params()->get("INTERPOLATEPIXELS_Y", (int)0); \ float color_matrix[9]; \ @@ -151,21 +140,12 @@ static const char *interpolate_shader = char string[BCTEXTLEN]; \ string[0] = 0; \ get_output()->get_params()->get("DCRAW_MATRIX", string); \ - sscanf(string, \ - "%f %f %f %f %f %f %f %f %f", \ - &color_matrix[0], \ - &color_matrix[1], \ - &color_matrix[2], \ - &color_matrix[3], \ - &color_matrix[4], \ - &color_matrix[5], \ - &color_matrix[6], \ - &color_matrix[7], \ - &color_matrix[8]); \ + sscanf(string, "%f %f %f %f %f %f %f %f %f", \ + &color_matrix[0], &color_matrix[1], &color_matrix[2], \ + &color_matrix[3], &color_matrix[4], &color_matrix[5], \ + &color_matrix[6], &color_matrix[7], &color_matrix[8]); \ glUniformMatrix3fv(glGetUniformLocation(frag, "color_matrix"), \ - 1, \ - 0, \ - color_matrix); \ + 1, 0, color_matrix); \ glUniform2f(glGetUniformLocation(frag, "pattern_offset"), \ (float)x_offset / get_output()->get_texture_w(), \ (float)y_offset / get_output()->get_texture_h()); \ @@ -175,7 +155,7 @@ static const char *interpolate_shader = glUniform2f(glGetUniformLocation(frag, "pixel_size"), \ 1.0 / get_output()->get_texture_w(), \ 1.0 / get_output()->get_texture_h()); \ -} +} while(0) #endif