X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmaterials%2Frendermethod.cpp;h=3208929cc2a98e1de31d8f18cb4edf12456859d0;hb=18fda5b5a13215c500cb402f7d2b081e439a1f0e;hp=053197589ab1fe6e9d3c83c78261ffc3e27ebc0e;hpb=5a01404e40717c6c2cc389ed8357713e1f216f07;p=libs%2Fgl.git diff --git a/source/materials/rendermethod.cpp b/source/materials/rendermethod.cpp index 05319758..3208929c 100644 --- a/source/materials/rendermethod.cpp +++ b/source/materials/rendermethod.cpp @@ -14,16 +14,6 @@ using namespace std; namespace Msp { namespace GL { -RenderMethod::RenderMethod(): - shprog(0), - shprog_from_material(false), - shdata(0), - material(0), - face_cull(CULL_BACK), - receive_shadows(false), - image_based_lighting(false) -{ } - void RenderMethod::set_material_textures() { const Tag *material_texture_tags = material->get_texture_tags(); @@ -96,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; @@ -109,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) @@ -132,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); @@ -156,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());