X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmaterials%2Frendermethod.cpp;h=0302a9934e75ac3c3d143155a5746c522139ff13;hb=f73e671dcb36c097647cddbf5b1eaaad2ffc9299;hp=3208929cc2a98e1de31d8f18cb4edf12456859d0;hpb=18fda5b5a13215c500cb402f7d2b081e439a1f0e;p=libs%2Fgl.git diff --git a/source/materials/rendermethod.cpp b/source/materials/rendermethod.cpp index 3208929c..0302a993 100644 --- a/source/materials/rendermethod.cpp +++ b/source/materials/rendermethod.cpp @@ -16,6 +16,9 @@ namespace GL { void RenderMethod::set_material_textures() { + if(!material) + return; + const Tag *material_texture_tags = material->get_texture_tags(); for(const Tag *tag=material_texture_tags; tag->id; ++tag) set_texture(*tag, material->get_texture(*tag), material->get_sampler(*tag)); @@ -23,7 +26,7 @@ void RenderMethod::set_material_textures() void RenderMethod::maybe_create_material_shader() { - if(shprog && !shprog_from_material) + if(!material || (shprog && !shprog_from_material)) return; map extra_spec; @@ -45,6 +48,7 @@ void RenderMethod::set_shader_program(const Program *prog, const ProgramData *da shprog = prog; shprog_from_material = false; shdata = (data ? new ProgramData(*data) : 0); + maybe_create_material_shader(); } Tag RenderMethod::get_slotted_uniform_tag(Tag slot) const @@ -94,6 +98,13 @@ void RenderMethod::set_blend(const Blend &b) void RenderMethod::set_receive_shadows(bool rs) { receive_shadows = rs; + maybe_create_material_shader(); +} + +void RenderMethod::set_image_based_lighting(bool ibl) +{ + image_based_lighting = ibl; + maybe_create_material_shader(); } void RenderMethod::apply(Renderer &renderer) const