X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Fview.h;h=5be2d8c0adf383bf56714e113845b96006270de9;hb=2bdb31aa8da02b8762e32cd117f270ac804c88d8;hp=a1bdaf50cc605e7ae45ae7be4de270c9a53d1f1f;hpb=77db8741430ca462e3b624dd42d5ead96be7f264;p=r2c2.git diff --git a/source/3d/view.h b/source/3d/view.h index a1bdaf5..5be2d8c 100644 --- a/source/3d/view.h +++ b/source/3d/view.h @@ -1,14 +1,18 @@ #ifndef R2C2_3D_VIEW_H_ #define R2C2_3D_VIEW_H_ +#include #include +#include #include +#include +#include "sky.h" namespace R2C2 { class Layout3D; -class View3D +class View3D: public sigc::trackable { protected: Layout3D &layout; @@ -16,6 +20,10 @@ protected: unsigned height; Msp::GL::Camera camera; Msp::GL::Pipeline pipeline; + Sky3D sky; + Msp::GL::ShadowMap shadow; + Msp::GL::ColorCurve colorcurve; + Msp::GL::AmbientOcclusion ambient_occlusion; public: View3D(Layout3D &, unsigned, unsigned); @@ -24,12 +32,18 @@ public: Msp::GL::Camera &get_camera() { return camera; } Msp::GL::Pipeline &get_pipeline() { return pipeline; } - Ray create_ray(int, int); - Ray create_ray(float, float); + Ray create_ray(int, int) const; + Ray create_ray(float, float) const; +private: + void compute_bounds(Vector &, Vector &); +public: void view_all(bool = false); void render(); + +private: + void update_shadow_area(); }; } // namespace R2C2