*/
class EnvironmentMap: public Effect
{
-private:
+public:
+ struct Template: Effect::Template
+ {
+ class Loader: public DataFile::DerivedObjectLoader<Template, Effect::Template::Loader>
+ {
+ private:
+ static ActionMap shared_actions;
+
+ public:
+ Loader(Template &, Collection &);
+ private:
+ virtual void init_actions();
+
+ void fixed_position(float, float, float);
+ };
+
+ unsigned size = 512;
+ PixelFormat format = RGB16F;
+ std::string environment_name;
+ unsigned roughness_levels = 5;
+ Vector3 fixed_position;
+ bool use_fixed_position = false;
+ float near_clip = 0.1f;
+ float far_clip = 100.0f;
+
+ virtual EnvironmentMap *create(const std::map<std::string, Renderable *> &) const;
+ };
+
+protected:
struct Face
{
Framebuffer fbo;
const Sampler &sampler;
const Sampler &mip_sampler;
ProgramData shdata;
- bool rendered;
- unsigned update_interval;
- unsigned update_delay;
+ bool rendered = false;
+ unsigned update_interval = 1;
+ unsigned update_delay = 0;
public:
EnvironmentMap(unsigned size, PixelFormat, Renderable &rend, Renderable &env);