forked from bartvdbraak/blender
Grease Pencil sketches get included when doing OpenGL previews for scene strips in sequencer
After double checking the sequencer code, there doesn't seem to be any reason to exclude these from the sequencer previews. This makes it possible to use the sequencer to non-destructively chain together difference Grease Pencil animated shots together without having to render each image sequence first, allowing for a smoother workflow. Just in case the initial assumption isn't entirely correct, I've put in place an extra arg to the relevant functions which can be hooked up to a suitable option on the scene strip later to turn this on/off as needed.
This commit is contained in:
parent
844909b294
commit
3673a03226
@ -393,7 +393,7 @@ struct Sequence *BKE_sequencer_add_sound_strip(struct bContext *C, ListBase *seq
|
||||
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 */
|
||||
typedef struct ImBuf *(*SequencerDrawView)(struct Scene *, struct Object *, int, int, unsigned int, int, bool, bool, int, char[256]);
|
||||
typedef struct ImBuf *(*SequencerDrawView)(struct Scene *, struct Object *, int, int, unsigned int, int, bool, bool, bool, int, char[256]);
|
||||
extern SequencerDrawView sequencer_view3d_cb;
|
||||
|
||||
/* copy/paste */
|
||||
|
@ -2586,7 +2586,7 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq
|
||||
ibuf = sequencer_view3d_cb(scene, camera, width, height, IB_rect,
|
||||
context->scene->r.seq_prev_type,
|
||||
(context->scene->r.seq_flag & R_SEQ_SOLID_TEX) != 0,
|
||||
true, scene->r.alphamode, err_out);
|
||||
true, true, scene->r.alphamode, err_out);
|
||||
if (ibuf == NULL) {
|
||||
fprintf(stderr, "seq_render_scene_strip failed to get opengl buffer: %s\n", err_out);
|
||||
}
|
||||
|
@ -309,7 +309,7 @@ void ED_view3d_draw_offscreen(struct Scene *scene, struct View3D *v3d, struct AR
|
||||
struct ImBuf *ED_view3d_draw_offscreen_imbuf(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int sizex, int sizey, unsigned int flag,
|
||||
bool draw_background, int alpha_mode, char err_out[256]);
|
||||
struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(struct Scene *scene, struct Object *camera, int width, int height, unsigned int flag, int drawtype,
|
||||
bool use_solid_tex, bool draw_background, int alpha_mode, char err_out[256]);
|
||||
bool use_solid_tex, bool use_gpencil, bool draw_background, int alpha_mode, char err_out[256]);
|
||||
void ED_view3d_offscreen_sky_color_get(struct Scene *scene, float sky_color[3]);
|
||||
|
||||
struct Base *ED_view3d_give_base_under_cursor(struct bContext *C, const int mval[2]);
|
||||
|
@ -272,7 +272,7 @@ static void screen_opengl_render_apply(OGLRender *oglrender)
|
||||
/* 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_rect, OB_SOLID, false, true,
|
||||
IB_rect, OB_SOLID, false, true, true,
|
||||
(draw_sky) ? R_ADDSKY : R_ALPHAPREMUL, err_out);
|
||||
camera = scene->camera;
|
||||
|
||||
|
@ -3147,7 +3147,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(Scene *scene, View3D *v3d, ARegion *ar, in
|
||||
|
||||
/* creates own 3d views, used by the sequencer */
|
||||
ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, Object *camera, int width, int height, unsigned int flag, int drawtype,
|
||||
bool use_solid_tex, bool draw_background, int alpha_mode, char err_out[256])
|
||||
bool use_solid_tex, bool use_gpencil, bool draw_background, int alpha_mode, char err_out[256])
|
||||
{
|
||||
View3D v3d = {NULL};
|
||||
ARegion ar = {NULL};
|
||||
@ -3163,6 +3163,9 @@ ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, Object *camera, int w
|
||||
v3d.drawtype = drawtype;
|
||||
v3d.flag2 = V3D_RENDER_OVERRIDE;
|
||||
|
||||
if (use_gpencil)
|
||||
v3d.flag2 |= V3D_SHOW_GPENCIL;
|
||||
|
||||
if (use_solid_tex)
|
||||
v3d.flag2 |= V3D_SOLID_TEX;
|
||||
|
||||
|
@ -840,7 +840,7 @@ static ImBuf *blend_file_thumb(Scene *scene, bScreen *screen, int **thumb_pt)
|
||||
if (scene->camera) {
|
||||
ibuf = ED_view3d_draw_offscreen_imbuf_simple(scene, scene->camera,
|
||||
BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2,
|
||||
IB_rect, OB_SOLID, false, false, R_ADDSKY, err_out);
|
||||
IB_rect, OB_SOLID, false, false, false, R_ADDSKY, err_out);
|
||||
}
|
||||
else {
|
||||
ibuf = ED_view3d_draw_offscreen_imbuf(scene, v3d, ar, BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2,
|
||||
|
Loading…
Reference in New Issue
Block a user