]> git.tdb.fi Git - libs/gl.git/blobdiff - source/materials/renderpass.cpp
Redesign the way shader programs are loaded
[libs/gl.git] / source / materials / renderpass.cpp
index 835e78a672cd6203649cdd9cbba4345421fa41b8..561eab6a7045f9f5448701398737cf370b4c1af6 100644 (file)
@@ -1,4 +1,5 @@
 #include <msp/datafile/collection.h>
+#include <msp/io/print.h>
 #include <msp/strings/format.h>
 #include "error.h"
 #include "material.h"
@@ -175,6 +176,17 @@ void RenderPass::Loader::init()
        add("uniform_slot", &Loader::uniform_slot2);
 }
 
+// Temporary compatibility feature
+string RenderPass::Loader::get_shader_name(const string &n)
+{
+       if(n.size()>=5 && !n.compare(n.size()-5, 5, ".glsl"))
+       {
+               IO::print(IO::cerr, "Warning: Loading module '%s' as shader is deprecated\n", n);
+               return n+".shader";
+       }
+       return n;
+}
+
 void RenderPass::Loader::material_inline()
 {
        Material::GenericLoader ldr(coll);
@@ -192,7 +204,7 @@ void RenderPass::Loader::material(const string &name)
 
 void RenderPass::Loader::shader(const string &n)
 {
-       obj.shprog = &get_collection().get<Program>(n);
+       obj.shprog = &get_collection().get<Program>(get_shader_name(n));
        obj.shprog.keep();
        obj.shprog_from_material = false;
        if(obj.shdata)