]> git.tdb.fi Git - libs/gl.git/blobdiff - source/materials/renderpass.cpp
Disallow loading uniforms without a custom shader
[libs/gl.git] / source / materials / renderpass.cpp
index 702bddeaab393034521ccfb93a78f1152218b697..e6a9a0a4145e87e8c2a30246f1d20f96c0228c57 100644 (file)
@@ -150,19 +150,21 @@ void RenderPass::apply(Renderer &renderer) const
 }
 
 
+DataFile::Loader::ActionMap RenderPass::Loader::shared_actions;
+
 RenderPass::Loader::Loader(RenderPass &p):
        DataFile::CollectionObjectLoader<RenderPass>(p, 0)
 {
-       init();
+       set_actions(shared_actions);
 }
 
 RenderPass::Loader::Loader(RenderPass &p, Collection &c):
        DataFile::CollectionObjectLoader<RenderPass>(p, &c)
 {
-       init();
+       set_actions(shared_actions);
 }
 
-void RenderPass::Loader::init()
+void RenderPass::Loader::init_actions()
 {
        add("shader",   &Loader::shader);
        add("material", &Loader::material_inline);
@@ -261,6 +263,8 @@ void RenderPass::Loader::texunit_named(unsigned, const string &n)
 
 void RenderPass::Loader::uniforms()
 {
+       if(!obj.shprog || obj.shprog_from_material)
+               throw runtime_error("Shader is required for uniforms");
        obj.ensure_private_shader_data();
        load_sub(*obj.shdata);
 }