X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbuilders%2Fsequencetemplate.h;h=044cbd5e083f7ee90610cec18753c7bb404212e7;hp=660a043297bb2f8046c283bf6954ae538d620f09;hb=18fda5b5a13215c500cb402f7d2b081e439a1f0e;hpb=ff8a8bfa114a690b7b25d9503bb5ed811d6aeca9 diff --git a/source/builders/sequencetemplate.h b/source/builders/sequencetemplate.h index 660a0432..044cbd5e 100644 --- a/source/builders/sequencetemplate.h +++ b/source/builders/sequencetemplate.h @@ -5,10 +5,9 @@ #include #include #include -#include "blend.h" #include "depthtest.h" #include "postprocessor.h" -#include "predicate.h" +#include "resources.h" #include "stenciltest.h" namespace Msp { @@ -70,17 +69,11 @@ public: std::string inline_base_name; public: - Loader(Step &); Loader(Step &, Collection &); - private: - void init(); - public: void set_inline_base_name(const std::string &); private: - void blend(); - void blend_factors(BlendFactor, BlendFactor); void depth_test(); void depth_compare(Predicate); void lighting(const std::string &); @@ -91,14 +84,11 @@ public: }; std::string tag; - const Lighting *lighting; + const Lighting *lighting = 0; DepthTest depth_test; StencilTest stencil_test; - Blend blend; std::string slot_name; - Renderable *default_renderable; - - ~Step(); + Renderable *default_renderable = 0; }; struct PostProcessor @@ -110,18 +100,31 @@ public: }; private: + class ClearLoader: public DataFile::ObjectLoader + { + public: + ClearLoader(SequenceTemplate &); + + private: + void color(float, float, float, float); + void depth(float); + void stencil(int); + }; + typedef TypeRegistry PostProcessorRegistry; - bool hdr; - bool alpha; - unsigned required_multisample; - unsigned max_multisample; + bool hdr = false; + bool alpha = false; + unsigned required_multisample = 0; + unsigned max_multisample = 0; std::vector steps; std::vector postprocessors; - bool clear_enabled; + bool clear_enabled = false; + std::vector clear_colors; + float clear_depth = 1.0f; + int clear_stencil = 0; public: - SequenceTemplate(); ~SequenceTemplate(); bool get_hdr() const { return hdr; } @@ -131,6 +134,9 @@ public: const std::vector &get_steps() const { return steps; } const std::vector &get_postprocessors() const { return postprocessors; } bool is_clear_enabled() const { return clear_enabled; } + const std::vector &get_clear_colors() const { return clear_colors; } + float get_clear_depth() const { return clear_depth; } + int get_clear_stencil() const { return clear_stencil; } template static void register_postprocessor(const std::string &);