frag_shader += std::string("uniform sampler2D tex_") + effect_id + ";\n";
frag_shader += std::string("vec4 ") + effect_id + "(vec2 tc) {\n";
- if (effect->num_inputs() == 0) {
- // OpenGL's origin is bottom-left, but most graphics software assumes
- // a top-left origin. Thus, for inputs that come from the user,
- // we flip the y coordinate. However, for FBOs, the origin
- // is all correct, so don't do anything.
- frag_shader += "\ttc.y = 1.0f - tc.y;\n";
- }
frag_shader += "\treturn texture2D(tex_" + effect_id + ", tc);\n";
frag_shader += "}\n";
frag_shader += "\n";
for (unsigned i = 0; i < deps.size(); ++i) {
bool start_new_phase = false;
+ // FIXME: If we sample directly from a texture, we won't need this.
if (effect->needs_texture_bounce()) {
start_new_phase = true;
}
for (unsigned i = 0; i < inputs.size(); ++i) {
inputs[i]->finalize();
}
+
+ assert(phases[0]->inputs.empty());
finalized = true;
}
}
std::set<Effect *> generated_mipmaps;
- for (unsigned i = 0; i < inputs.size(); ++i) {
- // Inputs generate their own mipmaps if they need to
- // (see input.cpp).
- generated_mipmaps.insert(inputs[i]);
- }
for (unsigned phase = 0; phase < phases.size(); ++phase) {
// See if the requested output size has changed. If so, we need to recreate