frag_shader += string("#define INPUT ") + phase->effect_ids[phase->effects.back()] + "\n";
// If we're the last phase, add the right #defines for Y'CbCr multi-output as needed.
frag_shader += string("#define INPUT ") + phase->effect_ids[phase->effects.back()] + "\n";
// If we're the last phase, add the right #defines for Y'CbCr multi-output as needed.
if (phase->output_node->outgoing_links.empty() && output_color_ycbcr) {
switch (output_ycbcr_splitting) {
case YCBCR_OUTPUT_INTERLEAVED:
// No #defines set.
if (phase->output_node->outgoing_links.empty() && output_color_ycbcr) {
switch (output_ycbcr_splitting) {
case YCBCR_OUTPUT_INTERLEAVED:
// No #defines set.
// output needs to see it (YCbCrConversionEffect and DitherEffect
// do, too).
frag_shader_header += "#define YCBCR_ALSO_OUTPUT_RGBA 1\n";
// output needs to see it (YCbCrConversionEffect and DitherEffect
// do, too).
frag_shader_header += "#define YCBCR_ALSO_OUTPUT_RGBA 1\n";
// Collect the resulting location numbers for each uniform.
collect_uniform_locations(phase->glsl_program_num, &phase->uniforms_sampler2d);
// Collect the resulting location numbers for each uniform.
collect_uniform_locations(phase->glsl_program_num, &phase->uniforms_sampler2d);