X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect_chain.cpp;h=d45c2fc4f86ba5c76bad0aa0da52129f05f25b3d;hp=b3c9099ed4a864aa6bbb498d926fc35236bd764b;hb=91c70600f2d0a6a42420ee98949cf182859b798f;hpb=873b60b640a96c8fb4c2d8c88c85d20e0a2dca6b diff --git a/effect_chain.cpp b/effect_chain.cpp index b3c9099..d45c2fc 100644 --- a/effect_chain.cpp +++ b/effect_chain.cpp @@ -14,6 +14,7 @@ #include "lift_gamma_gain_effect.h" #include "colorspace_conversion_effect.h" #include "saturation_effect.h" +#include "mirror_effect.h" #include "vignette_effect.h" #include "texture_enum.h" @@ -45,6 +46,8 @@ Effect *instantiate_effect(EffectId effect) return new LiftGammaGainEffect(); case EFFECT_SATURATION: return new SaturationEffect(); + case EFFECT_MIRROR: + return new MirrorEffect(); case EFFECT_VIGNETTE: return new VignetteEffect(); } @@ -156,25 +159,7 @@ void EffectChain::finalize() current_gamma_curve = output_format.gamma_curve; } - std::string vert_shader = read_file("vs-header.glsl"); - for (unsigned i = 0; i < effects.size(); ++i) { - char effect_id[256]; - sprintf(effect_id, "eff%d", i); - - vert_shader += "\n"; - vert_shader += std::string("#define FUNCNAME ") + effect_id + "\n"; - vert_shader += replace_prefix(effects[i]->output_convenience_uniforms(), effect_id); - vert_shader += replace_prefix(effects[i]->output_vertex_shader(), effect_id); - vert_shader += "#undef PREFIX\n"; - vert_shader += "#undef FUNCNAME\n"; - vert_shader += "#undef LAST_INPUT\n"; - vert_shader += std::string("#define LAST_INPUT ") + effect_id + "\n"; - vert_shader += "\n"; - } - vert_shader.append(read_file("vs-footer.glsl")); - printf("%s\n", vert_shader.c_str()); - - std::string frag_shader = read_file("fs-header.glsl"); + std::string frag_shader = read_file("header.frag"); for (unsigned i = 0; i < effects.size(); ++i) { char effect_id[256]; sprintf(effect_id, "eff%d", i); @@ -189,11 +174,11 @@ void EffectChain::finalize() frag_shader += std::string("#define LAST_INPUT ") + effect_id + "\n"; frag_shader += "\n"; } - frag_shader.append(read_file("fs-footer.glsl")); + frag_shader.append(read_file("footer.frag")); printf("%s\n", frag_shader.c_str()); glsl_program_num = glCreateProgram(); - GLuint vs_obj = compile_shader(vert_shader, GL_VERTEX_SHADER); + GLuint vs_obj = compile_shader(read_file("vs.vert"), GL_VERTEX_SHADER); GLuint fs_obj = compile_shader(frag_shader, GL_FRAGMENT_SHADER); glAttachShader(glsl_program_num, vs_obj); check_error();