X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Frenderpass.cpp;fp=source%2Frenderpass.cpp;h=7c7cf2c4a2022cbb1da62c84c385914d543c2edf;hp=34a311e79ece2f7e4df91d382010dca39137be1f;hb=ed7ca8892daceebb963950945fed5e75bd96a8a1;hpb=41368577ab4c4091e19d4e9cbbf8fbf2cfbdddca diff --git a/source/renderpass.cpp b/source/renderpass.cpp index 34a311e7..7c7cf2c4 100644 --- a/source/renderpass.cpp +++ b/source/renderpass.cpp @@ -135,7 +135,7 @@ RenderPass::Loader::Loader(RenderPass &p, Collection &c): void RenderPass::Loader::init() { - add("shader", &RenderPass::shprog); + add("shader", &Loader::shader); add("material", &Loader::material_inline); add("material", &Loader::material); add("material_slot", &RenderPass::material_slot); @@ -162,6 +162,15 @@ void RenderPass::Loader::material(const string &name) obj.finalize_material(); } +void RenderPass::Loader::shader(const string &n) +{ + obj.shprog = &get_collection().get(n); + if(obj.shdata) + obj.shdata = new ProgramData(*obj.shdata, obj.shprog); + if(obj.material) + obj.finalize_material(); +} + void RenderPass::Loader::texunit(unsigned i) { if(!obj.texturing)