X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpipelinebuilder.cpp;h=286d6cb62f747a4d97abb366389ca01695e60ea1;hb=c6604d0ee313f60b42b3a205c40ba7e1abbc3cb8;hp=705932994479c4f06b5cdc24b83bc5ae4b0cddd0;hpb=eacacdda1dc40bb655a3df14b59260ce06329fb6;p=libs%2Fgl.git 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); } }