X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frenderer.h;h=1254b7adf3951ffc6b2dfd1d1890e9ceb8598290;hb=9cf5d10abe5bdff0708c41544f6e8b15aca5151f;hp=91d20674a2c5a476a390c9d63c9ab9404adb93ec;hpb=2e6a73a93eac0a18063ec675a24a8e6eeeb80a0c;p=libs%2Fgl.git diff --git a/source/renderer.h b/source/renderer.h index 91d20674..1254b7ad 100644 --- a/source/renderer.h +++ b/source/renderer.h @@ -13,6 +13,7 @@ class Batch; class Buffer; class Camera; class Material; +class Lighting; class Program; class ProgramData; class Renderable; @@ -65,9 +66,12 @@ private: const Texture *texture; const Texturing *texturing; const Material *material; + const Lighting *lighting; + Matrix lighting_matrix; const Program *shprog; unsigned shdata_count; const WindingTest *winding_test; + bool reverse_winding; State(); }; @@ -88,10 +92,10 @@ private: const Camera *camera; std::vector state_stack; State *state; + bool lighting_changed; std::vector shdata_stack; bool shdata_changed; const VertexArray *vertex_array; - bool vertex_array_changed; const Buffer *element_buffer; std::set excluded; @@ -107,6 +111,8 @@ public: void set_texturing(const Texturing *); void set_material(const Material *); + void set_lighting(const Lighting *); + /** Sets the shader program to use. An initial set of data can be set as well, with the same semantics as add_shader_data. */ void set_shader_program(const Program *prog, const ProgramData *data = 0); @@ -119,6 +125,7 @@ public: void set_vertex_array(const VertexArray *); void set_element_buffer(const Buffer *); void set_winding_test(const WindingTest *); + void set_reverse_winding(bool); /** Saves the current state so it can be restored later. */ void push_state();