X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fpipelinetemplate.h;h=fb24ea29df547f468ff05ba142631c7bd215107d;hb=HEAD;hp=d98633539e06dff0dac89b3ef71d5f1478243676;hpb=e16855bccb78c721e2fe3f2ea8fc0310e041cb43;p=libs%2Fgl.git diff --git a/source/pipelinetemplate.h b/source/pipelinetemplate.h deleted file mode 100644 index d9863353..00000000 --- a/source/pipelinetemplate.h +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef PIPELINETEMPLATE_H_ -#define PIPELINETEMPLATE_H_ - -#include -#include -#include -#include -#include "blend.h" -#include "postprocessor.h" -#include "predicate.h" - -namespace Msp { -namespace GL { - -class DepthTest; -class Lighting; - -class PipelineTemplate -{ -public: - class Loader: public DataFile::CollectionObjectLoader - { - private: - template - struct AddPostProc - { - static void add(Loader &ldr, const std::string &kw) { ldr.add(kw, &Loader::postprocessor); } - }; - - public: - Loader(PipelineTemplate &); - Loader(PipelineTemplate &, Collection &); - private: - void init(); - - void multisample(unsigned); - void multisample_range(unsigned, unsigned); - void pass(const std::string &, const std::string &); - - template - void postprocessor(); - - friend class PipelineTemplate; - }; - - struct Pass - { - class Loader: public DataFile::CollectionObjectLoader - { - public: - Loader(Pass &); - Loader(Pass &, Collection &); - private: - void init(); - - void blend(BlendFactor, BlendFactor); - void blend_predefined(const std::string &); - void depth_test(Predicate); - void depth_test_predefined(const std::string &); - void lighting(const std::string &); - void lighting_inline(); - // TODO requires support for scenes in Resources - //void scene(const std::string &); - }; - - std::string tag; - RefPtr lighting; - RefPtr depth_test; - RefPtr blend; - std::string renderable_name; - //Renderable *default_renderable; - - ~Pass(); - }; - - typedef std::vector PassArray; - typedef std::vector PostProcessorArray; - -private: - typedef DataFile::LoadableTypeRegistry PostProcessorRegistry; - - bool hdr; - unsigned required_multisample; - unsigned max_multisample; - PassArray passes; - PostProcessorArray postprocessors; - -public: - PipelineTemplate(); - ~PipelineTemplate(); - - bool get_hdr() const { return hdr; } - unsigned get_required_multisample() const { return required_multisample; } - unsigned get_maximum_multisample() const { return max_multisample; } - const PassArray &get_passes() const { return passes; } - const PostProcessorArray &get_postprocessors() const { return postprocessors; } - - template - static void register_postprocessor(const std::string &); -private: - static PostProcessorRegistry &get_postprocessor_registry(); -}; - -template -void PipelineTemplate::register_postprocessor(const std::string &kw) -{ - get_postprocessor_registry().register_type(kw); -} - -template -void PipelineTemplate::Loader::postprocessor() -{ - RefPtr postproc = new typename T::Template; - load_sub(*postproc); - obj.postprocessors.push_back(postproc.release()); -} - -} // namespace GL -} // namespace Msp - -#endif