X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fpipelinebuilder.cpp;h=286d6cb62f747a4d97abb366389ca01695e60ea1;hp=705932994479c4f06b5cdc24b83bc5ae4b0cddd0;hb=e85d8669d6c389ded738c7b536f83ea54176662f;hpb=c3b339da673601c283abf9222b5e8f66ba80a688 diff --git a/source/pipelinebuilder.cpp b/source/pipelinebuilder.cpp index 70593299..286d6cb6 100644 --- a/source/pipelinebuilder.cpp +++ b/source/pipelinebuilder.cpp @@ -17,6 +17,10 @@ PipelineBuilder::PipelineBuilder(const PipelineTemplate &t): const vector &passes = tmpl.get_passes(); for(vector::const_iterator i=passes.begin(); i!=passes.end(); ++i) renderables[i->renderable_name] = 0; + const vector &postprocs = tmpl.get_postprocessors(); + for(PipelineTemplate::PostProcessorArray::const_iterator i=postprocs.begin(); i!=postprocs.end(); ++i) + if(!i->slot_name.empty()) + postprocessors[i->slot_name] = 0; } void PipelineBuilder::set_renderable(const string &name, Renderable &rend) @@ -24,6 +28,11 @@ void PipelineBuilder::set_renderable(const string &name, Renderable &rend) get_item(renderables, name) = &rend; } +void PipelineBuilder::set_postprocessor(const string &name, PostProcessor &pproc) +{ + get_item(postprocessors, name) = &pproc; +} + void PipelineBuilder::build(Pipeline &pipeline) const { pipeline.set_hdr(tmpl.get_hdr()); @@ -49,8 +58,13 @@ void PipelineBuilder::build(Pipeline &pipeline) const const PipelineTemplate::PostProcessorArray &postprocs = tmpl.get_postprocessors(); for(PipelineTemplate::PostProcessorArray::const_iterator i=postprocs.begin(); i!=postprocs.end(); ++i) { - PostProcessor *proc = (*i)->create(pipeline.get_width(), pipeline.get_height()); - pipeline.add_postprocessor_owned(proc); + PostProcessor *proc = 0; + if(!i->slot_name.empty()) + proc = get_item(postprocessors, i->slot_name); + if(!proc && i->postprocessor_template) + proc = i->postprocessor_template->create(pipeline.get_width(), pipeline.get_height()); + if(proc) + pipeline.add_postprocessor_owned(proc); } }