]> git.tdb.fi Git - libs/gl.git/blobdiff - source/materials/renderpass.cpp
Refactor winding-based culling
[libs/gl.git] / source / materials / renderpass.cpp
index 70143e96a497c7e299f088855c83903c4397fedc..9a7ceef782075ee38821aa5ae9b45f1b6e13c425 100644 (file)
@@ -21,7 +21,7 @@ RenderPass::RenderPass():
        shprog_from_material(false),
        shdata(0),
        material(0),
-       back_faces(false),
+       face_cull(CULL_BACK),
        receive_shadows(false),
        image_based_lighting(false)
 { }
@@ -124,9 +124,9 @@ int RenderPass::get_texture_index(const string &n) const
        return (shprog && i!=textures.end() ? shprog->get_uniform_binding(i->tag) : -1);
 }
 
-void RenderPass::set_back_faces(bool bf)
+void RenderPass::set_face_cull(CullMode fc)
 {
-       back_faces = bf;
+       face_cull = fc;
 }
 
 void RenderPass::set_receive_shadows(bool rs)
@@ -141,7 +141,7 @@ void RenderPass::apply(Renderer &renderer) const
        renderer.set_shader_program(shprog, shdata.get());
        if(material)
                renderer.add_shader_data(material->get_shader_data());
-       renderer.set_reverse_winding(back_faces);
+       renderer.set_face_cull(face_cull);
 }
 
 void RenderPass::set_debug_name(const string &name)
@@ -171,12 +171,12 @@ RenderPass::Loader::Loader(RenderPass &p, Collection &c):
 
 void RenderPass::Loader::init_actions()
 {
+       add("face_cull", &RenderPass::face_cull);
        add("shader",   &Loader::shader);
        add("image_based_lighting", &RenderPass::image_based_lighting);
        add("material", &Loader::material_inline);
        add("material", &Loader::material);
        add("material_slot", &RenderPass::material_slot);
-       add("back_faces",&RenderPass::back_faces);
        add("receive_shadows", &RenderPass::receive_shadows);
        add("texture", &Loader::texture);
        add("uniforms", &Loader::uniforms);