baked_light.h
1 #ifndef BAKED_LIGHT_H
2 #define BAKED_LIGHT_H
3 
4 #include "resource.h"
5 #include "scene/resources/texture.h"
6 
7 class BakedLight : public Resource {
8 
9  OBJ_TYPE( BakedLight, Resource);
10 public:
11  enum Mode {
12 
13  MODE_OCTREE,
14  MODE_LIGHTMAPS
15  };
16 
17  enum Format {
18 
19  FORMAT_RGB,
20  FORMAT_HDR8,
21  FORMAT_HDR16
22  };
23 
24  enum BakeFlags {
25  BAKE_DIFFUSE,
26  BAKE_SPECULAR,
27  BAKE_TRANSLUCENT,
28  BAKE_CONSERVE_ENERGY,
29  BAKE_LINEAR_COLOR,
30  BAKE_MAX
31  };
32 
33 private:
34 
35  RID baked_light;
36  Mode mode;
37  struct LightMap {
38  Size2i gen_size;
39  Ref<Texture> texture;
40  };
41 
42 
43  Vector< LightMap> lightmaps;
44 
45  //bake vars
46  int cell_subdiv;
47  int lattice_subdiv;
48  float plot_size;
49  float energy_multiply;
50  float gamma_adjust;
51  float cell_extra_margin;
52  float edge_damp;
53  float normal_damp;
54  float tint;
55  float ao_radius;
56  float ao_strength;
57  float saturation;
58  int bounces;
59  bool transfer_only_uv2;
60  Format format;
61  bool flags[BAKE_MAX];
62 
63 
64 
65  void _update_lightmaps();
66 
67  Array _get_lightmap_data() const;
68  void _set_lightmap_data(Array p_array);
69 
70 protected:
71 
72  bool _set(const StringName& p_name, const Variant& p_value);
73  bool _get(const StringName& p_name,Variant &r_ret) const;
74  void _get_property_list( List<PropertyInfo> *p_list) const;
75 
76  static void _bind_methods();
77 
78 public:
79 
80  void set_cell_subdivision(int p_subdiv);
81  int get_cell_subdivision() const;
82 
83  void set_initial_lattice_subdiv(int p_size);
84  int get_initial_lattice_subdiv() const;
85 
86  void set_plot_size(float p_size);
87  float get_plot_size() const;
88 
89  void set_bounces(int p_size);
90  int get_bounces() const;
91 
92  void set_energy_multiplier(float p_multiplier);
93  float get_energy_multiplier() const;
94 
95  void set_gamma_adjust(float p_adjust);
96  float get_gamma_adjust() const;
97 
98  void set_cell_extra_margin(float p_margin);
99  float get_cell_extra_margin() const;
100 
101  void set_edge_damp(float p_margin);
102  float get_edge_damp() const;
103 
104  void set_normal_damp(float p_margin);
105  float get_normal_damp() const;
106 
107  void set_tint(float p_margin);
108  float get_tint() const;
109 
110  void set_saturation(float p_saturation);
111  float get_saturation() const;
112 
113  void set_ao_radius(float p_ao_radius);
114  float get_ao_radius() const;
115 
116  void set_ao_strength(float p_ao_strength);
117  float get_ao_strength() const;
118 
119  void set_bake_flag(BakeFlags p_flags,bool p_enable);
120  bool get_bake_flag(BakeFlags p_flags) const;
121 
122  void set_format(Format p_margin);
123  Format get_format() const;
124 
125  void set_transfer_lightmaps_only_to_uv2(bool p_enable);
126  bool get_transfer_lightmaps_only_to_uv2() const;
127 
128  void set_mode(Mode p_mode);
129  Mode get_mode() const;
130 
131  void set_octree(const DVector<uint8_t>& p_octree);
132  DVector<uint8_t> get_octree() const;
133 
134  void set_light(const DVector<uint8_t>& p_light);
135  DVector<uint8_t> get_light() const;
136 
137  void set_sampler_octree(const DVector<int>& p_sampler_octree);
138  DVector<int> get_sampler_octree() const;
139 
140 
141 
142  void add_lightmap(const Ref<Texture> &p_texture,Size2 p_gen_size=Size2(256,256));
143  void set_lightmap_gen_size(int p_idx,const Size2& p_size);
144  Size2 get_lightmap_gen_size(int p_idx) const;
145  void set_lightmap_texture(int p_idx,const Ref<Texture> &p_texture);
146  Ref<Texture> get_lightmap_texture(int p_idx) const;
147  void erase_lightmap(int p_idx);
148  int get_lightmaps_count() const;
149  void clear_lightmaps();
150 
151  virtual RID get_rid() const;
152 
153  BakedLight();
154  ~BakedLight();
155 };
156 
157 
158 VARIANT_ENUM_CAST(BakedLight::Format);
159 VARIANT_ENUM_CAST(BakedLight::Mode);
160 VARIANT_ENUM_CAST(BakedLight::BakeFlags);
161 
162 #endif // BAKED_LIGHT_H
Definition: array.h:38
Definition: baked_light.h:7
Definition: variant.h:74
Definition: math_2d.h:369
Definition: string_db.h:48
Definition: resource.h:89
Definition: rid.h:47
Definition: math_2d.h:65