From fa0805e287e762df3638df1982297c794c4cf4b7 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 5 Jan 2013 15:33:18 +0000 Subject: Changes for opengl render to reflect new alpha premul pipeline without hurting quick texture painting - ED_view3d_draw_offscreen will now output buffer with transparent alpha, if sky needed it should be alpha-undered later. - ED_view3d_draw_offscreen_imbuf now accepts alpha mode as an argument which could be either R_ADDSKY or R_PREMULALPHA - OpenGL render and sequencer's opengl preview will now reflect scene's Alpha Mode - Quick Edit will use OpenGL with transparent alpha mode --- source/blender/editors/render/render_opengl.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'source/blender/editors/render') diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c index cbc076b3342..7ba6a92e4be 100644 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@ -43,6 +43,7 @@ #include "DNA_scene_types.h" #include "DNA_object_types.h" +#include "DNA_world_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -192,7 +193,7 @@ static void screen_opengl_render_apply(OGLRender *oglrender) } if ((scene->r.mode & R_OSA) == 0) { - ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, winmat, TRUE, FALSE); + ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, winmat, TRUE); GPU_offscreen_read_pixels(oglrender->ofs, GL_FLOAT, rr->rectf); } else { @@ -206,7 +207,7 @@ static void screen_opengl_render_apply(OGLRender *oglrender) BLI_jitter_init(jit_ofs[0], scene->r.osa); /* first sample buffer, also initializes 'rv3d->persmat' */ - ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, winmat, TRUE, FALSE); + ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, winmat, TRUE); GPU_offscreen_read_pixels(oglrender->ofs, GL_FLOAT, accum_buffer); /* skip the first sample */ @@ -216,7 +217,7 @@ static void screen_opengl_render_apply(OGLRender *oglrender) (jit_ofs[j][0] * 2.0f) / sizex, (jit_ofs[j][1] * 2.0f) / sizey); - ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, winmat_jitter, TRUE, FALSE); + ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, winmat_jitter, TRUE); GPU_offscreen_read_pixels(oglrender->ofs, GL_FLOAT, accum_tmp); add_vn_vn(accum_buffer, accum_tmp, sizex * sizey * sizeof(float)); } @@ -232,7 +233,8 @@ static void screen_opengl_render_apply(OGLRender *oglrender) else { /* shouldnt suddenly give errors mid-render but possible */ char err_out[256] = "unknown"; - ImBuf *ibuf_view = ED_view3d_draw_offscreen_imbuf_simple(scene, scene->camera, oglrender->sizex, oglrender->sizey, IB_rectfloat, OB_SOLID, FALSE, TRUE, FALSE, err_out); + ImBuf *ibuf_view = ED_view3d_draw_offscreen_imbuf_simple(scene, scene->camera, oglrender->sizex, oglrender->sizey, + IB_rectfloat, OB_SOLID, FALSE, TRUE, R_ALPHAPREMUL, err_out); camera = scene->camera; if (ibuf_view) { @@ -243,7 +245,13 @@ static void screen_opengl_render_apply(OGLRender *oglrender) fprintf(stderr, "%s: failed to get buffer, %s\n", __func__, err_out); } } - + + if (scene->r.alphamode == R_ADDSKY) { + float sky_color[3]; + ED_view3d_offscreen_sky_color_get(scene, sky_color); + IMB_alpha_under_color_float(rr->rectf, sizex, sizey, sky_color); + } + /* note on color management: * * OpenGL renders into sRGB colors, but render buffers are expected to be -- cgit v1.2.3 From 1005cdc72a3f54554fcb9d8f1172e66492d4f627 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Sat, 5 Jan 2013 17:57:17 +0000 Subject: Trackpad pans for UV/Image and MovieClip editors were inverse compared to all other editors. --- source/blender/editors/render/render_preview.c | 29 +++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'source/blender/editors/render') diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 8d748d3ea20..cb3d92fbc67 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -84,6 +84,8 @@ #include "IMB_imbuf_types.h" #include "IMB_colormanagement.h" +#include "GPU_extensions.h" + #include "BIF_gl.h" #include "BIF_glutil.h" @@ -885,6 +887,8 @@ static void icon_preview_startjob(void *customdata, short *stop, short *do_updat ID *id = sp->id; short idtype = GS(id->name); + printf("icon start job %s\n", id->name); + if (idtype == ID_IM) { Image *ima = (Image *)id; ImBuf *ibuf = NULL; @@ -1007,8 +1011,27 @@ static void icon_preview_endjob(void *customdata) { IconPreview *ip = customdata; - if (ip->id && GS(ip->id->name) == ID_BR) - WM_main_add_notifier(NC_BRUSH | NA_EDITED, ip->id); + if (ip->id) { + printf("icon end job %s\n", ip->id->name); + + if (GS(ip->id->name) == ID_BR) + WM_main_add_notifier(NC_BRUSH | NA_EDITED, ip->id); + + if (GS(ip->id->name) == ID_MA) { + Material *ma = (Material *)ip->id; + PreviewImage *prv_img = ma->preview; + int i; + + /* signal to gpu texture */ + for (i = 0; i < NUM_ICON_SIZES; ++i) { + if (prv_img->gputexture[i]) { + GPU_texture_free(prv_img->gputexture[i]); + prv_img->gputexture[i] = NULL; + WM_main_add_notifier(NC_MATERIAL|ND_SHADING_DRAW, ip->id); + } + } + } + } } static void icon_preview_free(void *customdata) @@ -1044,7 +1067,7 @@ void ED_preview_icon_job(const bContext *C, void *owner, ID *id, unsigned int *r /* setup job */ WM_jobs_customdata_set(wm_job, ip, icon_preview_free); - WM_jobs_timer(wm_job, 0.25, NC_MATERIAL, NC_MATERIAL); + WM_jobs_timer(wm_job, 0.1, NC_MATERIAL, NC_MATERIAL); WM_jobs_callbacks(wm_job, icon_preview_startjob_all_sizes, NULL, NULL, icon_preview_endjob); WM_jobs_start(CTX_wm_manager(C), wm_job); -- cgit v1.2.3 From c6a0818642ed57b8529e4e21f549367fe42cf68f Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Sat, 5 Jan 2013 18:23:05 +0000 Subject: Removal of old code trying to detect trackpads. This was causing error in previous commit "wheel only worked after using trackpad once". --- source/blender/editors/render/render_preview.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source/blender/editors/render') diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index cb3d92fbc67..10cb5620808 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -1016,12 +1016,12 @@ static void icon_preview_endjob(void *customdata) if (GS(ip->id->name) == ID_BR) WM_main_add_notifier(NC_BRUSH | NA_EDITED, ip->id); - +#if 0 if (GS(ip->id->name) == ID_MA) { Material *ma = (Material *)ip->id; PreviewImage *prv_img = ma->preview; int i; - + /* signal to gpu texture */ for (i = 0; i < NUM_ICON_SIZES; ++i) { if (prv_img->gputexture[i]) { @@ -1031,6 +1031,7 @@ static void icon_preview_endjob(void *customdata) } } } +#endif } } -- cgit v1.2.3 From bbd95fafefa88390a9bb3fef3664719cf8539d85 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Sun, 6 Jan 2013 18:28:39 +0000 Subject: Three fixes: - Old issue: on scrolling button views, tooltips could open or stayed open. - New fix: alt+swipe now changes button values again - Removed test print, from WIP code project. --- source/blender/editors/render/render_preview.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'source/blender/editors/render') diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 10cb5620808..2b714daecf8 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -886,8 +886,6 @@ static void icon_preview_startjob(void *customdata, short *stop, short *do_updat ShaderPreview *sp = customdata; ID *id = sp->id; short idtype = GS(id->name); - - printf("icon start job %s\n", id->name); if (idtype == ID_IM) { Image *ima = (Image *)id; @@ -1012,7 +1010,6 @@ static void icon_preview_endjob(void *customdata) IconPreview *ip = customdata; if (ip->id) { - printf("icon end job %s\n", ip->id->name); if (GS(ip->id->name) == ID_BR) WM_main_add_notifier(NC_BRUSH | NA_EDITED, ip->id); -- cgit v1.2.3 From 6747dec926ded010641cef37bd4384fff15dc961 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 Jan 2013 03:24:22 +0000 Subject: style cleanup --- source/blender/editors/render/render_preview.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source/blender/editors/render') diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 2b714daecf8..25ad1f61aaf 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -712,7 +712,7 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs else { /* validate owner */ //if (ri->rect == NULL) - // ri->rect= MEM_mallocN(sizeof(int)*ri->pr_rectx*ri->pr_recty, "BIF_previewrender"); + // ri->rect= MEM_mallocN(sizeof(int) * ri->pr_rectx*ri->pr_recty, "BIF_previewrender"); //RE_ResultGet32(re, ri->rect); } -- cgit v1.2.3