diff options
author | Jeroen Bakker <jeroen@blender.org> | 2020-03-06 14:08:03 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2020-03-06 14:11:55 +0300 |
commit | 297261eb906c56c7decf4401e6a3e06cec1691e8 (patch) | |
tree | f9833fb55af46edc0bc3849cffeb2dee83a3c6c9 /source/blender/editors | |
parent | 9fa29fe7652a9adc4a11ba3dc2975595489f7bcd (diff) |
CodeCleanup: Added enums to opengl render functions
Motivation the functions get 3 different kind of flag parameters (ImBuf,
DrawType, OffscreenRendering) the naming of the flags were not clear,
leading to mistakes and unnecessary time spend debugging.
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/include/ED_view3d.h | 60 | ||||
-rw-r--r-- | source/blender/editors/include/ED_view3d_offscreen.h | 90 | ||||
-rw-r--r-- | source/blender/editors/render/render_opengl.c | 11 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_image_proj.c | 1 | ||||
-rw-r--r-- | source/blender/editors/space_sequencer/space_sequencer.c | 4 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 17 |
6 files changed, 126 insertions, 57 deletions
diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index 66468275a1e..9627e7d7617 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -45,7 +45,6 @@ struct EditBone; struct GPUOffScreen; struct GPUViewport; struct ID; -struct ImBuf; struct MVert; struct Main; struct MetaElem; @@ -101,6 +100,24 @@ typedef struct ViewDepths { bool damaged; } ViewDepths; +typedef struct ViewDrawOffscreenContext { + struct Depsgraph *depsgraph; + struct Scene *scene; + int drawtype; + struct View3D *v3d; + struct ARegion *ar; + int winx; + int winy; + float viewmat[4][4]; + float winmat[4][4]; + bool do_sky; + bool is_persp; + const char *viewname; + const bool do_color_management; + struct GPUOffScreen *ofs; + struct GPUViewport *viewport; +} ViewDrawOffscreenContext; + /* Rotate 3D cursor on placement. */ enum eV3DCursorOrient { V3D_CURSOR_ORIENT_NONE = 0, @@ -564,21 +581,6 @@ void ED_draw_object_facemap(struct Depsgraph *depsgraph, struct RenderEngineType *ED_view3d_engine_type(struct Scene *scene, int drawtype); bool ED_view3d_context_activate(struct bContext *C); -void ED_view3d_draw_offscreen(struct Depsgraph *depsgraph, - struct Scene *scene, - int drawtype, - struct View3D *v3d, - struct ARegion *ar, - int winx, - int winy, - float viewmat[4][4], - float winmat[4][4], - bool do_sky, - bool is_persp, - const char *viewname, - const bool do_color_management, - struct GPUOffScreen *ofs, - struct GPUViewport *viewport); void ED_view3d_draw_setup_view(struct wmWindow *win, struct Depsgraph *depsgraph, struct Scene *scene, @@ -588,32 +590,6 @@ void ED_view3d_draw_setup_view(struct wmWindow *win, float winmat[4][4], const struct rcti *rect); -struct ImBuf *ED_view3d_draw_offscreen_imbuf(struct Depsgraph *depsgraph, - struct Scene *scene, - int drawtype, - struct View3D *v3d, - struct ARegion *ar, - int sizex, - int sizey, - unsigned int flag, - int alpha_mode, - const char *viewname, - struct GPUOffScreen *ofs, - char err_out[256]); -struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(struct Depsgraph *depsgraph, - struct Scene *scene, - struct View3DShading *shading_override, - int drawtype, - struct Object *camera, - int width, - int height, - unsigned int flag, - unsigned int draw_flags, - int alpha_mode, - const char *viewname, - struct GPUOffScreen *ofs, - char err_out[256]); - struct Base *ED_view3d_give_base_under_cursor(struct bContext *C, const int mval[2]); struct Object *ED_view3d_give_object_under_cursor(struct bContext *C, const int mval[2]); bool ED_view3d_is_object_under_cursor(struct bContext *C, const int mval[2]); diff --git a/source/blender/editors/include/ED_view3d_offscreen.h b/source/blender/editors/include/ED_view3d_offscreen.h new file mode 100644 index 00000000000..5a31516ec64 --- /dev/null +++ b/source/blender/editors/include/ED_view3d_offscreen.h @@ -0,0 +1,90 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2008 Blender Foundation. + * All rights reserved. + */ + +/** \file + * \ingroup editors + */ + +#ifndef __ED_VIEW3D_OFFSCREEN_H__ +#define __ED_VIEW3D_OFFSCREEN_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* ********* exports for space_view3d/ module for offscreen rendering ********** */ +struct Depsgraph; +struct Scene; +struct View3D; +struct ARegion; +struct GPUOffScreen; +struct GPUViewport; +struct View3DShading; + +#include "DNA_view3d_types.h" +#include "DNA_object_enums.h" +#include "IMB_imbuf_types.h" + +void ED_view3d_draw_offscreen(struct Depsgraph *depsgraph, + struct Scene *scene, + eObjectDrawType drawtype, + struct View3D *v3d, + struct ARegion *ar, + int winx, + int winy, + float viewmat[4][4], + float winmat[4][4], + bool do_sky, + bool is_persp, + const char *viewname, + const bool do_color_management, + struct GPUOffScreen *ofs, + struct GPUViewport *viewport); + +struct ImBuf *ED_view3d_draw_offscreen_imbuf(struct Depsgraph *depsgraph, + struct Scene *scene, + eObjectDrawType drawtype, + struct View3D *v3d, + struct ARegion *ar, + int sizex, + int sizey, + eImBufFlags imbuf_flag, + int alpha_mode, + const char *viewname, + struct GPUOffScreen *ofs, + char err_out[256]); +struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(struct Depsgraph *depsgraph, + struct Scene *scene, + struct View3DShading *shading_override, + eObjectDrawType drawtype, + struct Object *camera, + int width, + int height, + eImBufFlags imbuf_flags, + eV3DOffscreenDrawFlag draw_flags, + int alpha_mode, + const char *viewname, + struct GPUOffScreen *ofs, + char err_out[256]); + +#ifdef __cplusplus +} +#endif + +#endif /* __ED_VIEW3D_H__ */ diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c index f212eb07e2e..add023fe57a 100644 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@ -67,6 +67,7 @@ #include "ED_screen.h" #include "ED_view3d.h" +#include "ED_view3d_offscreen.h" #include "ED_gpencil.h" #include "RE_pipeline.h" @@ -368,7 +369,8 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R char err_out[256] = "unknown"; ImBuf *ibuf_view; const int alpha_mode = (draw_sky) ? R_ADDSKY : R_ALPHAPREMUL; - int output_flags = oglrender->color_depth <= R_IMF_CHAN_DEPTH_8 ? IB_rect : IB_rectfloat; + eImBufFlags imbuf_flags = oglrender->color_depth <= R_IMF_CHAN_DEPTH_8 ? IB_rect : + IB_rectfloat; if (view_context) { ibuf_view = ED_view3d_draw_offscreen_imbuf(depsgraph, @@ -378,7 +380,7 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R ar, sizex, sizey, - output_flags, + imbuf_flags, alpha_mode, viewname, oglrender->ofs, @@ -397,7 +399,7 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R scene->camera, oglrender->sizex, oglrender->sizey, - output_flags, + imbuf_flags, V3D_OFSDRAW_SHOW_ANNOTATION, alpha_mode, viewname, @@ -1382,6 +1384,3 @@ void RENDER_OT_opengl(wmOperatorType *ot) "Use the current 3D view for rendering, else use scene settings"); RNA_def_property_flag(prop, PROP_SKIP_SAVE); } - -/* function for getting an opengl buffer from a View3D, used by sequencer */ -// extern void *sequencer_view3d_cb; diff --git a/source/blender/editors/sculpt_paint/paint_image_proj.c b/source/blender/editors/sculpt_paint/paint_image_proj.c index c980ffdc5d1..163111ce32f 100644 --- a/source/blender/editors/sculpt_paint/paint_image_proj.c +++ b/source/blender/editors/sculpt_paint/paint_image_proj.c @@ -87,6 +87,7 @@ #include "ED_screen.h" #include "ED_uvedit.h" #include "ED_view3d.h" +#include "ED_view3d_offscreen.h" #include "GPU_extensions.h" #include "GPU_init_exit.h" diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 1e2470c1866..d225c70b56b 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -38,10 +38,12 @@ #include "BKE_lib_id.h" #include "BKE_screen.h" #include "BKE_sequencer.h" +#include "BKE_sequencer_offscreen.h" #include "ED_space_api.h" #include "ED_screen.h" -#include "ED_view3d.h" /* only for sequencer view3d drawing callback */ +#include "ED_view3d.h" +#include "ED_view3d_offscreen.h" /* only for sequencer view3d drawing callback */ #include "WM_api.h" #include "WM_types.h" diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 4ff8a9a3884..c58c4b33f05 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -67,6 +67,7 @@ #include "ED_screen.h" #include "ED_screen_types.h" #include "ED_transform.h" +#include "ED_view3d_offscreen.h" #include "DEG_depsgraph_query.h" @@ -1630,7 +1631,7 @@ static void view3d_stereo3d_setup_offscreen(Depsgraph *depsgraph, void ED_view3d_draw_offscreen(Depsgraph *depsgraph, Scene *scene, - int drawtype, + eObjectDrawType drawtype, View3D *v3d, ARegion *ar, int winx, @@ -1710,12 +1711,12 @@ void ED_view3d_draw_offscreen(Depsgraph *depsgraph, */ ImBuf *ED_view3d_draw_offscreen_imbuf(Depsgraph *depsgraph, Scene *scene, - int drawtype, + eObjectDrawType drawtype, View3D *v3d, ARegion *ar, int sizex, int sizey, - uint flag, + eImBufFlags imbuf_flag, int alpha_mode, const char *viewname, /* output vars */ @@ -1755,7 +1756,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(Depsgraph *depsgraph, GPU_offscreen_bind(ofs, true); /* read in pixels & stamp */ - ImBuf *ibuf = IMB_allocImBuf(sizex, sizey, 32, flag); + ImBuf *ibuf = IMB_allocImBuf(sizex, sizey, 32, imbuf_flag); /* render 3d view */ if (rv3d->persp == RV3D_CAMOB && v3d->camera) { @@ -1856,12 +1857,12 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(Depsgraph *depsgraph, ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Depsgraph *depsgraph, Scene *scene, View3DShading *shading_override, - int drawtype, + eObjectDrawType drawtype, Object *camera, int width, int height, - uint flag, - uint draw_flags, + eImBufFlags imbuf_flag, + eV3DOffscreenDrawFlag draw_flags, int alpha_mode, const char *viewname, GPUOffScreen *ofs, @@ -1934,7 +1935,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Depsgraph *depsgraph, &ar, width, height, - flag, + imbuf_flag, alpha_mode, viewname, ofs, |