[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