--- /dev/null
+#include "effect.h"
+#include "sampler.h"
+
+namespace Msp {
+namespace GL {
+
+WeakPtr<Sampler> Effect::linear_sampler;
+
+Effect::Effect(Renderable &r):
+ renderable(r)
+{
+ enabled_passes.insert(Tag());
+}
+
+void Effect::enable_for_pass(const Tag &tag)
+{
+ enabled_passes.insert(tag);
+}
+
+void Effect::disable_for_pass(const Tag &tag)
+{
+ enabled_passes.erase(tag);
+}
+
+RefPtr<Sampler> Effect::get_linear_sampler()
+{
+ RefPtr<Sampler> sampler = linear_sampler;
+ if(!sampler)
+ {
+ sampler = new Sampler;
+ sampler->set_filter(LINEAR);
+ sampler->set_wrap(CLAMP_TO_EDGE);
+ linear_sampler = sampler;
+ }
+ return sampler;
+}
+
+} // namespace GL
+} // namespace Msp