64 this->initialized = other.initialized;
65 this->used = other.used;
66 this->directional = other.directional;
67 this->punctual = other.punctual;
68 other.directional =
nullptr;
69 other.punctual =
nullptr;
92 float shadow_lod_min_get(const ::Light *la);
93 float shadow_shape_size_get(const ::Light *la);
94 float attenuation_radius_get(const ::Light *la,
float light_threshold,
float light_power);
95 void shape_parameters_set(const ::Light *la,
100 float shape_radiance_get();
101 float point_radiance_get();
118 static constexpr uint max_memory_threshold = 32 * 1024 * 1024;
119 static constexpr uint max_word_count_threshold = max_memory_threshold /
sizeof(
uint);
120 static constexpr uint max_tile_count_threshold = 8192;
130 float light_threshold_ = 0.01f;
132 bool use_scene_lights_ =
false;
134 bool use_sun_lights_ =
false;
136 int sun_lights_len_ = 0;
137 int local_lights_len_ = 0;
160 uint total_word_count_ = 0;
162 bool view_is_flipped_ =
false;
168 PassSimple debug_draw_ps_ = {
"LightCulling.Debug"};
194 void culling_pass_sync();
195 void update_pass_sync();
196 void debug_pass_sync();
A running instance of the engine.
LightModule(Instance &inst)
void sync_light(const Object *ob, ObjectHandle &handle)
void set_view(View &view, const int2 extent)
void bind_resources(PassType &pass)
void debug_draw(View &view, GPUFrameBuffer *view_fb)
#define LIGHT_ZBIN_BUF_SLOT
#define LIGHT_TILE_BUF_SLOT
#define LIGHT_CULL_BUF_SLOT
void shadow_discard_safe(ShadowModule &shadows)
ShadowDirectional * directional
void shadow_ensure(ShadowModule &shadows)
void sync(ShadowModule &shadows, float4x4 object_to_world, char visibility_flag, const ::Light *la, const LightLinking *light_linking, float threshold)
ShadowPunctual * punctual