Fix T85395: Texture paint external edit wrong projection on reapply
Caused by rB5b34d11b55e0. Above commit restored the view matrices in ED_view3d_draw_offscreen _before_ they can be stored in the ImBuff (see ED_view3d_draw_offscreen / texture_paint_image_from_view_exec). Now make restoring the view matrices optional and dont do this in case of reprojection, so the used matrices can still be saved in the ImBuff later. Reviewed By: campbellbarton Maniphest Tasks: T85395 Differential Revision: https://developer.blender.org/D10331
This commit is contained in:
parent
d76890bfb0
commit
97cc130f47
Notes:
blender-bot
2023-04-04 07:45:26 +02:00
Referenced by issue #85395, External edited texture applied with incorrect projection (wrong lens settings?)
|
@ -54,6 +54,7 @@ void ED_view3d_draw_offscreen(struct Depsgraph *depsgraph,
|
|||
bool draw_background,
|
||||
const char *viewname,
|
||||
const bool do_color_management,
|
||||
const bool restore_rv3d_mats,
|
||||
struct GPUOffScreen *ofs,
|
||||
struct GPUViewport *viewport);
|
||||
void ED_view3d_draw_offscreen_simple(struct Depsgraph *depsgraph,
|
||||
|
@ -84,6 +85,7 @@ struct ImBuf *ED_view3d_draw_offscreen_imbuf(struct Depsgraph *depsgraph,
|
|||
eImBufFlags imbuf_flag,
|
||||
int alpha_mode,
|
||||
const char *viewname,
|
||||
const bool restore_rv3d_mats,
|
||||
struct GPUOffScreen *ofs,
|
||||
char err_out[256]);
|
||||
struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(struct Depsgraph *depsgraph,
|
||||
|
|
|
@ -381,6 +381,7 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R
|
|||
imbuf_flags,
|
||||
alpha_mode,
|
||||
viewname,
|
||||
true,
|
||||
oglrender->ofs,
|
||||
err_out);
|
||||
|
||||
|
|
|
@ -6250,6 +6250,7 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op)
|
|||
IB_rect,
|
||||
R_ALPHAPREMUL,
|
||||
NULL,
|
||||
false,
|
||||
NULL,
|
||||
err_out);
|
||||
|
||||
|
|
|
@ -1667,6 +1667,7 @@ void ED_view3d_draw_offscreen(Depsgraph *depsgraph,
|
|||
bool draw_background,
|
||||
const char *viewname,
|
||||
const bool do_color_management,
|
||||
const bool restore_rv3d_mats,
|
||||
GPUOffScreen *ofs,
|
||||
GPUViewport *viewport)
|
||||
{
|
||||
|
@ -1755,7 +1756,11 @@ void ED_view3d_draw_offscreen(Depsgraph *depsgraph,
|
|||
region->winy = orig.region_winy;
|
||||
region->winrct = orig.region_winrct;
|
||||
|
||||
ED_view3d_mats_rv3d_restore(region->regiondata, orig.rv3d_mats);
|
||||
/* Optionally do _not_ restore rv3d matrices (e.g. they are used/stored in the ImBuff for
|
||||
* reprojection, see texture_paint_image_from_view_exec(). */
|
||||
if (restore_rv3d_mats) {
|
||||
ED_view3d_mats_rv3d_restore(region->regiondata, orig.rv3d_mats);
|
||||
}
|
||||
MEM_freeN(orig.rv3d_mats);
|
||||
|
||||
UI_Theme_Restore(&orig.theme_state);
|
||||
|
@ -1847,6 +1852,7 @@ void ED_view3d_draw_offscreen_simple(Depsgraph *depsgraph,
|
|||
draw_background,
|
||||
viewname,
|
||||
do_color_management,
|
||||
true,
|
||||
ofs,
|
||||
viewport);
|
||||
}
|
||||
|
@ -1867,6 +1873,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(Depsgraph *depsgraph,
|
|||
eImBufFlags imbuf_flag,
|
||||
int alpha_mode,
|
||||
const char *viewname,
|
||||
const bool restore_rv3d_mats,
|
||||
/* output vars */
|
||||
GPUOffScreen *ofs,
|
||||
char err_out[256])
|
||||
|
@ -1974,6 +1981,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(Depsgraph *depsgraph,
|
|||
draw_sky,
|
||||
viewname,
|
||||
do_color_management,
|
||||
restore_rv3d_mats,
|
||||
ofs,
|
||||
NULL);
|
||||
|
||||
|
@ -2099,6 +2107,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Depsgraph *depsgraph,
|
|||
imbuf_flag,
|
||||
alpha_mode,
|
||||
viewname,
|
||||
true,
|
||||
ofs,
|
||||
err_out);
|
||||
}
|
||||
|
|
|
@ -268,6 +268,7 @@ static PyObject *py_offscreen_draw_view3d(BPyGPUOffScreen *self, PyObject *args,
|
|||
true,
|
||||
"",
|
||||
false,
|
||||
true,
|
||||
self->ofs,
|
||||
NULL);
|
||||
|
||||
|
|
|
@ -1363,6 +1363,7 @@ static ImBuf *blend_file_thumb(const bContext *C,
|
|||
IB_rect,
|
||||
R_ALPHAPREMUL,
|
||||
NULL,
|
||||
true,
|
||||
NULL,
|
||||
err_out);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue