X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmaterials%2Frenderpass.cpp;h=9a7ceef782075ee38821aa5ae9b45f1b6e13c425;hb=bea2bcf1aa353b1dd8d1728931ef0508677bd2c6;hp=62056ff9f56c63f103edb920ee8b546c7b13fe91;hpb=3ac3a51c623271da815c8ee60c484445871753bf;p=libs%2Fgl.git diff --git a/source/materials/renderpass.cpp b/source/materials/renderpass.cpp index 62056ff9..9a7ceef7 100644 --- a/source/materials/renderpass.cpp +++ b/source/materials/renderpass.cpp @@ -9,7 +9,6 @@ #include "renderer.h" #include "texture.h" #include "texture2d.h" -#include "texturing.h" #include "uniform.h" using namespace std; @@ -22,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) { } @@ -31,7 +30,7 @@ void RenderPass::set_material_textures() { 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()); + set_texture(*tag, material->get_texture(*tag), material->get_sampler(*tag)); } void RenderPass::maybe_create_material_shader() @@ -125,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) @@ -139,9 +138,10 @@ void RenderPass::apply(Renderer &renderer) const { for(vector::const_iterator i=textures.begin(); i!=textures.end(); ++i) renderer.set_texture(i->tag, i->texture, i->sampler); - renderer.set_material(material); renderer.set_shader_program(shprog, shdata.get()); - renderer.set_reverse_winding(back_faces); + if(material) + renderer.add_shader_data(material->get_shader_data()); + 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);