You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-19 14:31:59 +00:00
Properly redraw if something animated is visible
This commit is contained in:
@@ -202,12 +202,12 @@ RasterizerStorageGLES2::Texture *RasterizerCanvasGLES2::_bind_canvas_texture(con
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
texture = texture->get_ptr();
|
|
||||||
|
|
||||||
if (texture->redraw_if_visible) {
|
if (texture->redraw_if_visible) {
|
||||||
VisualServerRaster::redraw_request();
|
VisualServerRaster::redraw_request();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
texture = texture->get_ptr();
|
||||||
|
|
||||||
if (texture->render_target) {
|
if (texture->render_target) {
|
||||||
texture->render_target->used_in_frame = true;
|
texture->render_target->used_in_frame = true;
|
||||||
}
|
}
|
||||||
@@ -244,12 +244,12 @@ RasterizerStorageGLES2::Texture *RasterizerCanvasGLES2::_bind_canvas_texture(con
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
normal_map = normal_map->get_ptr();
|
|
||||||
|
|
||||||
if (normal_map->redraw_if_visible) { //check before proxy, because this is usually used with proxies
|
if (normal_map->redraw_if_visible) { //check before proxy, because this is usually used with proxies
|
||||||
VisualServerRaster::redraw_request();
|
VisualServerRaster::redraw_request();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
normal_map = normal_map->get_ptr();
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 2);
|
glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 2);
|
||||||
glBindTexture(GL_TEXTURE_2D, normal_map->tex_id);
|
glBindTexture(GL_TEXTURE_2D, normal_map->tex_id);
|
||||||
state.current_normal = p_normal_map;
|
state.current_normal = p_normal_map;
|
||||||
@@ -1412,6 +1412,10 @@ void RasterizerCanvasGLES2::canvas_render_items(Item *p_item_list, int p_z, cons
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (t->redraw_if_visible) {
|
||||||
|
VisualServerRaster::redraw_request();
|
||||||
|
}
|
||||||
|
|
||||||
t = t->get_ptr();
|
t = t->get_ptr();
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
@@ -1422,10 +1426,6 @@ void RasterizerCanvasGLES2::canvas_render_items(Item *p_item_list, int p_z, cons
|
|||||||
if (t->render_target)
|
if (t->render_target)
|
||||||
t->render_target->used_in_frame = true;
|
t->render_target->used_in_frame = true;
|
||||||
|
|
||||||
if (t->redraw_if_visible) {
|
|
||||||
VisualServerRaster::redraw_request();
|
|
||||||
}
|
|
||||||
|
|
||||||
glBindTexture(t->target, t->tex_id);
|
glBindTexture(t->target, t->tex_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1312,12 +1312,12 @@ bool RasterizerSceneGLES2::_setup_material(RasterizerStorageGLES2::Material *p_m
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
t = t->get_ptr();
|
|
||||||
|
|
||||||
if (t->redraw_if_visible) { //must check before proxy because this is often used with proxies
|
if (t->redraw_if_visible) { //must check before proxy because this is often used with proxies
|
||||||
VisualServerRaster::redraw_request();
|
VisualServerRaster::redraw_request();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t = t->get_ptr();
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
if (t->detect_3d) {
|
if (t->detect_3d) {
|
||||||
t->detect_3d(t->detect_3d_ud);
|
t->detect_3d(t->detect_3d_ud);
|
||||||
@@ -1671,11 +1671,10 @@ void RasterizerSceneGLES2::_render_geometry(RenderList::Element *p_element) {
|
|||||||
if (c.texture.is_valid() && storage->texture_owner.owns(c.texture)) {
|
if (c.texture.is_valid() && storage->texture_owner.owns(c.texture)) {
|
||||||
RasterizerStorageGLES2::Texture *t = storage->texture_owner.get(c.texture);
|
RasterizerStorageGLES2::Texture *t = storage->texture_owner.get(c.texture);
|
||||||
|
|
||||||
t = t->get_ptr();
|
|
||||||
|
|
||||||
if (t->redraw_if_visible) {
|
if (t->redraw_if_visible) {
|
||||||
VisualServerRaster::redraw_request();
|
VisualServerRaster::redraw_request();
|
||||||
}
|
}
|
||||||
|
t = t->get_ptr();
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
if (t->detect_3d) {
|
if (t->detect_3d) {
|
||||||
|
|||||||
@@ -222,12 +222,12 @@ RasterizerStorageGLES3::Texture *RasterizerCanvasGLES3::_bind_canvas_texture(con
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
texture = texture->get_ptr();
|
|
||||||
|
|
||||||
if (texture->redraw_if_visible) { //check before proxy, because this is usually used with proxies
|
if (texture->redraw_if_visible) { //check before proxy, because this is usually used with proxies
|
||||||
VisualServerRaster::redraw_request();
|
VisualServerRaster::redraw_request();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
texture = texture->get_ptr();
|
||||||
|
|
||||||
if (texture->render_target)
|
if (texture->render_target)
|
||||||
texture->render_target->used_in_frame = true;
|
texture->render_target->used_in_frame = true;
|
||||||
|
|
||||||
@@ -263,12 +263,12 @@ RasterizerStorageGLES3::Texture *RasterizerCanvasGLES3::_bind_canvas_texture(con
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
normal_map = normal_map->get_ptr();
|
|
||||||
|
|
||||||
if (normal_map->redraw_if_visible) { //check before proxy, because this is usually used with proxies
|
if (normal_map->redraw_if_visible) { //check before proxy, because this is usually used with proxies
|
||||||
VisualServerRaster::redraw_request();
|
VisualServerRaster::redraw_request();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
normal_map = normal_map->get_ptr();
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE1);
|
glActiveTexture(GL_TEXTURE1);
|
||||||
glBindTexture(GL_TEXTURE_2D, normal_map->tex_id);
|
glBindTexture(GL_TEXTURE_2D, normal_map->tex_id);
|
||||||
state.current_normal = p_normal_map;
|
state.current_normal = p_normal_map;
|
||||||
@@ -1402,12 +1402,12 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
t = t->get_ptr();
|
|
||||||
|
|
||||||
if (t->redraw_if_visible) { //check before proxy, because this is usually used with proxies
|
if (t->redraw_if_visible) { //check before proxy, because this is usually used with proxies
|
||||||
VisualServerRaster::redraw_request();
|
VisualServerRaster::redraw_request();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t = t->get_ptr();
|
||||||
|
|
||||||
if (storage->config.srgb_decode_supported && t->using_srgb) {
|
if (storage->config.srgb_decode_supported && t->using_srgb) {
|
||||||
//no srgb in 2D
|
//no srgb in 2D
|
||||||
glTexParameteri(t->target, _TEXTURE_SRGB_DECODE_EXT, _SKIP_DECODE_EXT);
|
glTexParameteri(t->target, _TEXTURE_SRGB_DECODE_EXT, _SKIP_DECODE_EXT);
|
||||||
|
|||||||
@@ -1199,12 +1199,12 @@ bool RasterizerSceneGLES3::_setup_material(RasterizerStorageGLES3::Material *p_m
|
|||||||
|
|
||||||
if (t) {
|
if (t) {
|
||||||
|
|
||||||
t = t->get_ptr(); //resolve for proxies
|
|
||||||
|
|
||||||
if (t->redraw_if_visible) { //must check before proxy because this is often used with proxies
|
if (t->redraw_if_visible) { //must check before proxy because this is often used with proxies
|
||||||
VisualServerRaster::redraw_request();
|
VisualServerRaster::redraw_request();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t = t->get_ptr(); //resolve for proxies
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
if (t->detect_3d) {
|
if (t->detect_3d) {
|
||||||
t->detect_3d(t->detect_3d_ud);
|
t->detect_3d(t->detect_3d_ud);
|
||||||
@@ -1629,11 +1629,10 @@ void RasterizerSceneGLES3::_render_geometry(RenderList::Element *e) {
|
|||||||
|
|
||||||
RasterizerStorageGLES3::Texture *t = storage->texture_owner.get(c.texture);
|
RasterizerStorageGLES3::Texture *t = storage->texture_owner.get(c.texture);
|
||||||
|
|
||||||
t = t->get_ptr(); //resolve for proxies
|
|
||||||
|
|
||||||
if (t->redraw_if_visible) {
|
if (t->redraw_if_visible) {
|
||||||
VisualServerRaster::redraw_request();
|
VisualServerRaster::redraw_request();
|
||||||
}
|
}
|
||||||
|
t = t->get_ptr(); //resolve for proxies
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
if (t->detect_3d) {
|
if (t->detect_3d) {
|
||||||
|
|||||||
@@ -123,7 +123,6 @@ void VisualServerRaster::draw(bool p_swap_buffers, double frame_step) {
|
|||||||
|
|
||||||
frame_drawn_callbacks.pop_front();
|
frame_drawn_callbacks.pop_front();
|
||||||
}
|
}
|
||||||
|
|
||||||
VS::get_singleton()->emit_signal("frame_post_draw");
|
VS::get_singleton()->emit_signal("frame_post_draw");
|
||||||
}
|
}
|
||||||
void VisualServerRaster::sync() {
|
void VisualServerRaster::sync() {
|
||||||
|
|||||||
Reference in New Issue
Block a user