[Bf-blender-cvs] [408515810e9] blender2.8: Merge branch 'master' into blender2.8
Sergey Sharybin
noreply at git.blender.org
Mon Nov 27 14:08:53 CET 2017
Commit: 408515810e99d40a6dd53c3d50f1e4be7eb52c87
Author: Sergey Sharybin
Date: Mon Nov 27 14:08:35 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB408515810e99d40a6dd53c3d50f1e4be7eb52c87
Merge branch 'master' into blender2.8
===================================================================
===================================================================
diff --cc source/blender/blenkernel/BKE_sequencer.h
index 532334c31ff,6c9dc12b44f..2264167eca1
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@@ -421,12 -421,21 +421,22 @@@ struct Sequence *BKE_sequencer_add_soun
struct Sequence *BKE_sequencer_add_movie_strip(struct bContext *C, ListBase *seqbasep, struct SeqLoadInfo *seq_load);
/* view3d draw callback, run when not in background view */
+ /* NOTE: Keep in sync with V3D_OFSDRAW_* flags. */
+ enum {
+ SEQ_OFSDRAW_NONE = (0),
+ SEQ_OFSDRAW_USE_BACKGROUND = (1 << 0),
+ SEQ_OFSDRAW_USE_FULL_SAMPLE = (1 << 1),
+ SEQ_OFSDRAW_USE_GPENCIL = (1 << 2),
+ SEQ_OFSDRAW_USE_SOLID_TEX = (1 << 2),
+ SEQ_OFSDRAW_USE_CAMERA_DOF = (1 << 3),
+ };
+
typedef struct ImBuf *(*SequencerDrawView)(
- const struct EvaluationContext *eval_ctx, struct Scene *,
- struct ViewLayer *view_layer, struct Object *, int, int,
- unsigned int, int, bool, bool, bool,
- int, int, bool, const char *,
- struct GPUFX *, struct GPUOffScreen *, char[256]);
- struct Scene *scene, struct Object *camera, int width, int height,
++ const struct EvaluationContext *eval_ctx, struct Scene *scene,
++ struct ViewLayer *view_layer, struct Object *camera, int width, int height,
+ unsigned int flag, unsigned int draw_flags, int drawtype, int alpha_mode,
+ int samples, const char *viewname,
+ struct GPUFX *fx, struct GPUOffScreen *ofs, char err_out[256]);
extern SequencerDrawView sequencer_view3d_cb;
/* copy/paste */
diff --cc source/blender/blenkernel/intern/sequencer.c
index a83eba145c9,9e8e202c2bc..ced94af26d2
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@@ -3314,15 -3313,11 +3321,13 @@@ static ImBuf *seq_render_scene_strip(co
context->scene->r.seq_prev_type = 3 /* == OB_SOLID */;
/* opengl offscreen render */
- BKE_scene_update_for_newframe(context->eval_ctx, context->bmain, scene, scene->lay);
+ context->eval_ctx->engine = RE_engines_find(scene->view_render.engine_id);
+ BKE_scene_graph_update_for_newframe(context->eval_ctx, depsgraph, context->bmain, scene, view_layer);
ibuf = sequencer_view3d_cb(
/* set for OpenGL render (NULL when scrubbing) */
- scene, camera, width, height, IB_rect, draw_flags, context->scene->r.seq_prev_type,
+ context->eval_ctx, scene, view_layer, camera, width, height, IB_rect,
- context->scene->r.seq_prev_type,
- (context->scene->r.seq_flag & R_SEQ_SOLID_TEX) != 0,
- use_gpencil, use_background, scene->r.alphamode,
- context->gpu_samples, context->gpu_full_samples, viewname,
++ draw_flags, context->scene->r.seq_prev_type,
+ scene->r.alphamode, context->gpu_samples, viewname,
context->gpu_fx, context->gpu_offscreen, err_out);
if (ibuf == NULL) {
fprintf(stderr, "seq_render_scene_strip failed to get opengl buffer: %s\n", err_out);
diff --cc source/blender/editors/include/ED_view3d.h
index 12f72bcff3a,2cc928117c5..feb3686db9f
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@@ -382,20 -364,30 +382,32 @@@ void ED_view3d_draw_offscreen
struct GPUFX *fx, struct GPUFXSettings *fx_settings,
struct GPUOffScreen *ofs);
void ED_view3d_draw_setup_view(
- struct wmWindow *win, struct Scene *scene, struct ARegion *ar, struct View3D *v3d,
+ struct wmWindow *win, const struct EvaluationContext *eval_ctx, struct Scene *scene, struct ARegion *ar, struct View3D *v3d,
float viewmat[4][4], float winmat[4][4], const struct rcti *rect);
+ enum {
+ V3D_OFSDRAW_NONE = (0),
+
+ V3D_OFSDRAW_USE_BACKGROUND = (1 << 0),
+ V3D_OFSDRAW_USE_FULL_SAMPLE = (1 << 1),
+
+ /* Only works with ED_view3d_draw_offscreen_imbuf_simple(). */
+ V3D_OFSDRAW_USE_GPENCIL = (1 << 2),
+ V3D_OFSDRAW_USE_SOLID_TEX = (1 << 2),
+ V3D_OFSDRAW_USE_CAMERA_DOF = (1 << 3),
+ };
+
struct ImBuf *ED_view3d_draw_offscreen_imbuf(
- struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int sizex, int sizey,
- unsigned int flag, unsigned int draw_flags,
+ const struct EvaluationContext *eval_ctx, struct Scene *scene,
+ struct ViewLayer *view_layer, struct View3D *v3d, struct ARegion *ar,
- int sizex, int sizey, unsigned int flag, bool draw_background,
- int alpha_mode, int samples, bool full_samples, const char *viewname,
++ int sizex, int sizey, unsigned int flag, unsigned int draw_flags,
+ int alpha_mode, int samples, const char *viewname,
struct GPUFX *fx, struct GPUOffScreen *ofs, char err_out[256]);
struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
- struct Scene *scene, struct Object *camera, int width, int height,
+ const struct EvaluationContext *eval_ctx, struct Scene *scene,
+ struct ViewLayer *view_layer, struct Object *camera, int width, int height,
- unsigned int flag, int drawtype, bool use_solid_tex, bool use_gpencil, bool draw_background,
- int alpha_mode, int samples, bool full_samples, const char *viewname,
+ unsigned int flag, unsigned int draw_flags, int drawtype, int alpha_mode,
+ int samples, const char *viewname,
struct GPUFX *fx, struct GPUOffScreen *ofs, char err_out[256]);
struct Base *ED_view3d_give_base_under_cursor(struct bContext *C, const int mval[2]);
diff --cc source/blender/editors/render/render_opengl.c
index a445f8dafea,b7a23bafced..77535a65e58
--- a/source/blender/editors/render/render_opengl.c
+++ b/source/blender/editors/render/render_opengl.c
@@@ -352,11 -353,15 +352,15 @@@ static void screen_opengl_render_doit(c
ImBuf *ibuf_view;
const int alpha_mode = (draw_sky) ? R_ADDSKY : R_ALPHAPREMUL;
+ unsigned int draw_flags = V3D_OFSDRAW_NONE;
+ draw_flags |= (oglrender->ofs_full_samples) ? V3D_OFSDRAW_USE_FULL_SAMPLE : 0;
+
if (view_context) {
+ draw_flags |= (draw_bgpic) ? V3D_OFSDRAW_USE_BACKGROUND : 0;
+
ibuf_view = ED_view3d_draw_offscreen_imbuf(
- scene, v3d, ar, sizex, sizey,
+ &eval_ctx, scene, view_layer, v3d, ar, sizex, sizey,
- IB_rect, draw_bgpic,
- alpha_mode, oglrender->ofs_samples, oglrender->ofs_full_samples, viewname,
+ IB_rect, draw_flags, alpha_mode, oglrender->ofs_samples, viewname,
oglrender->fx, oglrender->ofs, err_out);
/* for stamp only */
@@@ -365,10 -370,11 +369,11 @@@
}
}
else {
+ draw_flags |= (V3D_OFSDRAW_USE_GPENCIL | V3D_OFSDRAW_USE_BACKGROUND);
ibuf_view = ED_view3d_draw_offscreen_imbuf_simple(
- scene, scene->camera, oglrender->sizex, oglrender->sizey,
+ &eval_ctx, scene, view_layer, scene->camera, oglrender->sizex, oglrender->sizey,
- IB_rect, OB_SOLID, false, true, true,
- alpha_mode, oglrender->ofs_samples, oglrender->ofs_full_samples, viewname,
+ IB_rect, draw_flags, OB_SOLID,
+ alpha_mode, oglrender->ofs_samples, viewname,
oglrender->fx, oglrender->ofs, err_out);
camera = scene->camera;
}
diff --cc source/blender/editors/sculpt_paint/paint_image_proj.c
index 89b5107fdfc,6fa45f1932a..900ca844dbf
--- a/source/blender/editors/sculpt_paint/paint_image_proj.c
+++ b/source/blender/editors/sculpt_paint/paint_image_proj.c
@@@ -5473,8 -5459,8 +5473,8 @@@ static int texture_paint_image_from_vie
if (h > maxsize) h = maxsize;
ibuf = ED_view3d_draw_offscreen_imbuf(
- scene, CTX_wm_view3d(C), CTX_wm_region(C),
+ &eval_ctx, scene, view_layer, CTX_wm_view3d(C), CTX_wm_region(C),
- w, h, IB_rect, false, R_ALPHAPREMUL, 0, false, NULL,
+ w, h, IB_rect, V3D_OFSDRAW_NONE, R_ALPHAPREMUL, 0, NULL,
NULL, NULL, err_out);
if (!ibuf) {
/* Mostly happens when OpenGL offscreen buffer was failed to create, */
diff --cc source/blender/editors/space_sequencer/sequencer_draw.c
index 01b7c8793ba,bb7e2d75482..399e76e71b8
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@@ -56,11 -56,11 +56,12 @@@
#include "IMB_colormanagement.h"
#include "IMB_imbuf.h"
-#include "BIF_gl.h"
#include "BIF_glutil.h"
-#include "GPU_basic_shader.h"
+ #include "GPU_compositing.h"
+#include "GPU_immediate.h"
+#include "GPU_immediate_util.h"
+#include "GPU_matrix.h"
#include "ED_anim_api.h"
#include "ED_gpencil.h"
diff --cc source/blender/editors/space_view3d/view3d_draw.c
index 4bc4c373df4,9e220f4b141..8024a733f40
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@@ -1406,924 -3153,888 +1406,931 @@@ static void drawcursor(Scene *scene, AR
}
}
-/* ED_view3d_draw_offscreen_init should be called before this to initialize
- * stuff like shadow buffers
- */
-void ED_view3d_draw_offscreen(
- Scene *scene, View3D *v3d, ARegion *ar, int winx, int winy,
- float viewmat[4][4], float winmat[4][4],
- bool do_bgpic, bool do_sky, bool is_persp, const char *viewname,
- GPUFX *fx, GPUFXSettings *fx_settings,
- GPUOffScreen *ofs)
+static void draw_view_axis(RegionView3D *rv3d, rcti *rect)
{
- struct bThemeState theme_state;
- int bwinx, bwiny;
- rcti brect;
- bool do_compositing = false;
- RegionView3D *rv3d = ar->regiondata;
+ const float k = U.rvisize * U.pixelsize; /* axis size */
+ const int bright = - 20 * (10 - U.rvibright); /* axis alpha offset (rvibright has range 0-10) */
- glPushMatrix();
+ const float startx = rect->xmin + k + 1.0f; /* axis center in screen coordinates, x=y */
+ const float starty = rect->ymin + k + 1.0f;
- /* set temporary new size */
- bwinx = ar->winx;
- bwiny = ar->winy;
- brect = ar->winrct;
+ float axis_pos[3][2];
+ unsigned char axis_col[3][4];
- ar->winx = winx;
- ar->winy = winy;
- ar->winrct.xmin = 0;
- ar->winrct.ymin = 0;
- ar->winrct.xmax = winx;
- ar->winrct.ymax = w
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list