X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmaterials%2Frendermethod.cpp;fp=source%2Fmaterials%2Frendermethod.cpp;h=3208929cc2a98e1de31d8f18cb4edf12456859d0;hb=18fda5b5a13215c500cb402f7d2b081e439a1f0e;hp=c5ad35d5b3e95976f6c35e047a0ed37fc9e630fc;hpb=2680cc0bf251db566753dbe9bf947ba6a4b083d2;p=libs%2Fgl.git diff --git a/source/materials/rendermethod.cpp b/source/materials/rendermethod.cpp index c5ad35d5..3208929c 100644 --- a/source/materials/rendermethod.cpp +++ b/source/materials/rendermethod.cpp @@ -86,6 +86,11 @@ void RenderMethod::set_face_cull(CullMode fc) face_cull = fc; } +void RenderMethod::set_blend(const Blend &b) +{ + blend = b; +} + void RenderMethod::set_receive_shadows(bool rs) { receive_shadows = rs; @@ -99,6 +104,7 @@ void RenderMethod::apply(Renderer &renderer) const if(material) renderer.add_shader_data(material->get_shader_data()); renderer.set_face_cull(face_cull); + renderer.set_blend(&blend); } void RenderMethod::set_debug_name(const string &name) @@ -122,6 +128,8 @@ RenderMethod::Loader::Loader(RenderMethod &p, Collection &c): void RenderMethod::Loader::init_actions() { + add("blend", &Loader::blend); + add("blend", &Loader::blend_factors); add("face_cull", &RenderMethod::face_cull); add("shader", &Loader::shader); add("image_based_lighting", &RenderMethod::image_based_lighting); @@ -146,6 +154,16 @@ void RenderMethod::Loader::finish() obj.maybe_create_material_shader(); } +void RenderMethod::Loader::blend() +{ + load_sub(obj.blend); +} + +void RenderMethod::Loader::blend_factors(BlendFactor src, BlendFactor dest) +{ + obj.blend = Blend(src, dest); +} + void RenderMethod::Loader::material_inline() { Material::GenericLoader ldr(get_collection());