|
@@ -2851,7 +2851,7 @@ void RasterizerStorageGLES3::_update_material(Material *material) {
|
|
|
}
|
|
|
|
|
|
for (Map<RasterizerScene::InstanceBase *, int>::Element *E = material->instance_owners.front(); E; E = E->next()) {
|
|
|
- E->key()->base_material_changed();
|
|
|
+ E->key()->base_changed(false, true);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -3477,7 +3477,7 @@ void RasterizerStorageGLES3::mesh_add_surface(RID p_mesh, uint32_t p_format, VS:
|
|
|
}
|
|
|
|
|
|
mesh->surfaces.push_back(surface);
|
|
|
- mesh->instance_change_notify();
|
|
|
+ mesh->instance_change_notify(true, false);
|
|
|
|
|
|
info.vertex_mem += surface->total_data_size;
|
|
|
}
|
|
@@ -3550,7 +3550,7 @@ void RasterizerStorageGLES3::mesh_surface_set_material(RID p_mesh, int p_surface
|
|
|
_material_add_geometry(mesh->surfaces[p_surface]->material, mesh->surfaces[p_surface]);
|
|
|
}
|
|
|
|
|
|
- mesh->instance_material_change_notify();
|
|
|
+ mesh->instance_change_notify(false, true);
|
|
|
}
|
|
|
RID RasterizerStorageGLES3::mesh_surface_get_material(RID p_mesh, int p_surface) const {
|
|
|
|
|
@@ -3746,13 +3746,11 @@ void RasterizerStorageGLES3::mesh_remove_surface(RID p_mesh, int p_surface) {
|
|
|
|
|
|
info.vertex_mem -= surface->total_data_size;
|
|
|
|
|
|
- mesh->instance_material_change_notify();
|
|
|
-
|
|
|
memdelete(surface);
|
|
|
|
|
|
mesh->surfaces.remove(p_surface);
|
|
|
|
|
|
- mesh->instance_change_notify();
|
|
|
+ mesh->instance_change_notify(true, true);
|
|
|
}
|
|
|
|
|
|
int RasterizerStorageGLES3::mesh_get_surface_count(RID p_mesh) const {
|
|
@@ -3768,7 +3766,7 @@ void RasterizerStorageGLES3::mesh_set_custom_aabb(RID p_mesh, const AABB &p_aabb
|
|
|
ERR_FAIL_COND(!mesh);
|
|
|
|
|
|
mesh->custom_aabb = p_aabb;
|
|
|
- mesh->instance_change_notify();
|
|
|
+ mesh->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
AABB RasterizerStorageGLES3::mesh_get_custom_aabb(RID p_mesh) const {
|
|
@@ -4667,7 +4665,7 @@ void RasterizerStorageGLES3::update_dirty_multimeshes() {
|
|
|
multimesh->dirty_aabb = false;
|
|
|
multimesh->dirty_data = false;
|
|
|
|
|
|
- multimesh->instance_change_notify();
|
|
|
+ multimesh->instance_change_notify(true, false);
|
|
|
|
|
|
multimesh_update_list.remove(multimesh_update_list.first());
|
|
|
}
|
|
@@ -4778,7 +4776,7 @@ void RasterizerStorageGLES3::immediate_end(RID p_immediate) {
|
|
|
|
|
|
im->building = false;
|
|
|
|
|
|
- im->instance_change_notify();
|
|
|
+ im->instance_change_notify(true, false);
|
|
|
}
|
|
|
void RasterizerStorageGLES3::immediate_clear(RID p_immediate) {
|
|
|
|
|
@@ -4787,7 +4785,7 @@ void RasterizerStorageGLES3::immediate_clear(RID p_immediate) {
|
|
|
ERR_FAIL_COND(im->building);
|
|
|
|
|
|
im->chunks.clear();
|
|
|
- im->instance_change_notify();
|
|
|
+ im->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
AABB RasterizerStorageGLES3::immediate_get_aabb(RID p_immediate) const {
|
|
@@ -4802,7 +4800,7 @@ void RasterizerStorageGLES3::immediate_set_material(RID p_immediate, RID p_mater
|
|
|
Immediate *im = immediate_owner.get(p_immediate);
|
|
|
ERR_FAIL_COND(!im);
|
|
|
im->material = p_material;
|
|
|
- im->instance_material_change_notify();
|
|
|
+ im->instance_change_notify(false, true);
|
|
|
}
|
|
|
|
|
|
RID RasterizerStorageGLES3::immediate_get_material(RID p_immediate) const {
|
|
@@ -5008,7 +5006,7 @@ void RasterizerStorageGLES3::update_dirty_skeletons() {
|
|
|
}
|
|
|
|
|
|
for (Set<RasterizerScene::InstanceBase *>::Element *E = skeleton->instances.front(); E; E = E->next()) {
|
|
|
- E->get()->base_changed();
|
|
|
+ E->get()->base_changed(true, false);
|
|
|
}
|
|
|
|
|
|
skeleton_update_list.remove(skeleton_update_list.first());
|
|
@@ -5074,7 +5072,7 @@ void RasterizerStorageGLES3::light_set_param(RID p_light, VS::LightParam p_param
|
|
|
case VS::LIGHT_PARAM_SHADOW_BIAS: {
|
|
|
|
|
|
light->version++;
|
|
|
- light->instance_change_notify();
|
|
|
+ light->instance_change_notify(true, false);
|
|
|
} break;
|
|
|
default: {}
|
|
|
}
|
|
@@ -5088,7 +5086,7 @@ void RasterizerStorageGLES3::light_set_shadow(RID p_light, bool p_enabled) {
|
|
|
light->shadow = p_enabled;
|
|
|
|
|
|
light->version++;
|
|
|
- light->instance_change_notify();
|
|
|
+ light->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
void RasterizerStorageGLES3::light_set_shadow_color(RID p_light, const Color &p_color) {
|
|
@@ -5121,7 +5119,7 @@ void RasterizerStorageGLES3::light_set_cull_mask(RID p_light, uint32_t p_mask) {
|
|
|
light->cull_mask = p_mask;
|
|
|
|
|
|
light->version++;
|
|
|
- light->instance_change_notify();
|
|
|
+ light->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
void RasterizerStorageGLES3::light_set_reverse_cull_face_mode(RID p_light, bool p_enabled) {
|
|
@@ -5132,7 +5130,7 @@ void RasterizerStorageGLES3::light_set_reverse_cull_face_mode(RID p_light, bool
|
|
|
light->reverse_cull = p_enabled;
|
|
|
|
|
|
light->version++;
|
|
|
- light->instance_change_notify();
|
|
|
+ light->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
void RasterizerStorageGLES3::light_omni_set_shadow_mode(RID p_light, VS::LightOmniShadowMode p_mode) {
|
|
@@ -5143,7 +5141,7 @@ void RasterizerStorageGLES3::light_omni_set_shadow_mode(RID p_light, VS::LightOm
|
|
|
light->omni_shadow_mode = p_mode;
|
|
|
|
|
|
light->version++;
|
|
|
- light->instance_change_notify();
|
|
|
+ light->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
VS::LightOmniShadowMode RasterizerStorageGLES3::light_omni_get_shadow_mode(RID p_light) {
|
|
@@ -5161,7 +5159,7 @@ void RasterizerStorageGLES3::light_omni_set_shadow_detail(RID p_light, VS::Light
|
|
|
|
|
|
light->omni_shadow_detail = p_detail;
|
|
|
light->version++;
|
|
|
- light->instance_change_notify();
|
|
|
+ light->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
void RasterizerStorageGLES3::light_directional_set_shadow_mode(RID p_light, VS::LightDirectionalShadowMode p_mode) {
|
|
@@ -5171,7 +5169,7 @@ void RasterizerStorageGLES3::light_directional_set_shadow_mode(RID p_light, VS::
|
|
|
|
|
|
light->directional_shadow_mode = p_mode;
|
|
|
light->version++;
|
|
|
- light->instance_change_notify();
|
|
|
+ light->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
void RasterizerStorageGLES3::light_directional_set_blend_splits(RID p_light, bool p_enable) {
|
|
@@ -5181,7 +5179,7 @@ void RasterizerStorageGLES3::light_directional_set_blend_splits(RID p_light, boo
|
|
|
|
|
|
light->directional_blend_splits = p_enable;
|
|
|
light->version++;
|
|
|
- light->instance_change_notify();
|
|
|
+ light->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
bool RasterizerStorageGLES3::light_directional_get_blend_splits(RID p_light) const {
|
|
@@ -5312,7 +5310,7 @@ void RasterizerStorageGLES3::reflection_probe_set_update_mode(RID p_probe, VS::R
|
|
|
ERR_FAIL_COND(!reflection_probe);
|
|
|
|
|
|
reflection_probe->update_mode = p_mode;
|
|
|
- reflection_probe->instance_change_notify();
|
|
|
+ reflection_probe->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
void RasterizerStorageGLES3::reflection_probe_set_intensity(RID p_probe, float p_intensity) {
|
|
@@ -5353,7 +5351,7 @@ void RasterizerStorageGLES3::reflection_probe_set_max_distance(RID p_probe, floa
|
|
|
ERR_FAIL_COND(!reflection_probe);
|
|
|
|
|
|
reflection_probe->max_distance = p_distance;
|
|
|
- reflection_probe->instance_change_notify();
|
|
|
+ reflection_probe->instance_change_notify(true, false);
|
|
|
}
|
|
|
void RasterizerStorageGLES3::reflection_probe_set_extents(RID p_probe, const Vector3 &p_extents) {
|
|
|
|
|
@@ -5361,7 +5359,7 @@ void RasterizerStorageGLES3::reflection_probe_set_extents(RID p_probe, const Vec
|
|
|
ERR_FAIL_COND(!reflection_probe);
|
|
|
|
|
|
reflection_probe->extents = p_extents;
|
|
|
- reflection_probe->instance_change_notify();
|
|
|
+ reflection_probe->instance_change_notify(true, false);
|
|
|
}
|
|
|
void RasterizerStorageGLES3::reflection_probe_set_origin_offset(RID p_probe, const Vector3 &p_offset) {
|
|
|
|
|
@@ -5369,7 +5367,7 @@ void RasterizerStorageGLES3::reflection_probe_set_origin_offset(RID p_probe, con
|
|
|
ERR_FAIL_COND(!reflection_probe);
|
|
|
|
|
|
reflection_probe->origin_offset = p_offset;
|
|
|
- reflection_probe->instance_change_notify();
|
|
|
+ reflection_probe->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
void RasterizerStorageGLES3::reflection_probe_set_as_interior(RID p_probe, bool p_enable) {
|
|
@@ -5393,7 +5391,7 @@ void RasterizerStorageGLES3::reflection_probe_set_enable_shadows(RID p_probe, bo
|
|
|
ERR_FAIL_COND(!reflection_probe);
|
|
|
|
|
|
reflection_probe->enable_shadows = p_enable;
|
|
|
- reflection_probe->instance_change_notify();
|
|
|
+ reflection_probe->instance_change_notify(true, false);
|
|
|
}
|
|
|
void RasterizerStorageGLES3::reflection_probe_set_cull_mask(RID p_probe, uint32_t p_layers) {
|
|
|
|
|
@@ -5401,7 +5399,7 @@ void RasterizerStorageGLES3::reflection_probe_set_cull_mask(RID p_probe, uint32_
|
|
|
ERR_FAIL_COND(!reflection_probe);
|
|
|
|
|
|
reflection_probe->cull_mask = p_layers;
|
|
|
- reflection_probe->instance_change_notify();
|
|
|
+ reflection_probe->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
void RasterizerStorageGLES3::reflection_probe_set_resolution(RID p_probe, int p_resolution) {
|
|
@@ -5489,7 +5487,7 @@ void RasterizerStorageGLES3::gi_probe_set_bounds(RID p_probe, const AABB &p_boun
|
|
|
|
|
|
gip->bounds = p_bounds;
|
|
|
gip->version++;
|
|
|
- gip->instance_change_notify();
|
|
|
+ gip->instance_change_notify(true, false);
|
|
|
}
|
|
|
AABB RasterizerStorageGLES3::gi_probe_get_bounds(RID p_probe) const {
|
|
|
|
|
@@ -5506,7 +5504,7 @@ void RasterizerStorageGLES3::gi_probe_set_cell_size(RID p_probe, float p_size) {
|
|
|
|
|
|
gip->cell_size = p_size;
|
|
|
gip->version++;
|
|
|
- gip->instance_change_notify();
|
|
|
+ gip->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
float RasterizerStorageGLES3::gi_probe_get_cell_size(RID p_probe) const {
|
|
@@ -5539,7 +5537,7 @@ void RasterizerStorageGLES3::gi_probe_set_dynamic_data(RID p_probe, const PoolVe
|
|
|
|
|
|
gip->dynamic_data = p_data;
|
|
|
gip->version++;
|
|
|
- gip->instance_change_notify();
|
|
|
+ gip->instance_change_notify(true, false);
|
|
|
}
|
|
|
PoolVector<int> RasterizerStorageGLES3::gi_probe_get_dynamic_data(RID p_probe) const {
|
|
|
|
|
@@ -5771,7 +5769,7 @@ void RasterizerStorageGLES3::lightmap_capture_set_bounds(RID p_capture, const AA
|
|
|
LightmapCapture *capture = lightmap_capture_data_owner.getornull(p_capture);
|
|
|
ERR_FAIL_COND(!capture);
|
|
|
capture->bounds = p_bounds;
|
|
|
- capture->instance_change_notify();
|
|
|
+ capture->instance_change_notify(true, false);
|
|
|
}
|
|
|
AABB RasterizerStorageGLES3::lightmap_capture_get_bounds(RID p_capture) const {
|
|
|
|
|
@@ -5792,7 +5790,7 @@ void RasterizerStorageGLES3::lightmap_capture_set_octree(RID p_capture, const Po
|
|
|
PoolVector<uint8_t>::Read r = p_octree.read();
|
|
|
copymem(w.ptr(), r.ptr(), p_octree.size());
|
|
|
}
|
|
|
- capture->instance_change_notify();
|
|
|
+ capture->instance_change_notify(true, false);
|
|
|
}
|
|
|
PoolVector<uint8_t> RasterizerStorageGLES3::lightmap_capture_get_octree(RID p_capture) const {
|
|
|
|
|
@@ -6015,7 +6013,7 @@ void RasterizerStorageGLES3::particles_set_custom_aabb(RID p_particles, const AA
|
|
|
ERR_FAIL_COND(!particles);
|
|
|
particles->custom_aabb = p_aabb;
|
|
|
_particles_update_histories(particles);
|
|
|
- particles->instance_change_notify();
|
|
|
+ particles->instance_change_notify(true, false);
|
|
|
}
|
|
|
|
|
|
void RasterizerStorageGLES3::particles_set_speed_scale(RID p_particles, float p_scale) {
|
|
@@ -6441,7 +6439,7 @@ void RasterizerStorageGLES3::update_particles() {
|
|
|
particles->particle_valid_histories[0] = true;
|
|
|
}
|
|
|
|
|
|
- particles->instance_change_notify(); //make sure shadows are updated
|
|
|
+ particles->instance_change_notify(true, false); //make sure shadows are updated
|
|
|
}
|
|
|
|
|
|
glDisable(GL_RASTERIZER_DISCARD);
|