forked from bartvdbraak/blender
Sequencer: add textured solid option for opengl preview
This commit is contained in:
parent
b93f02042e
commit
dd0e554d9e
@ -867,6 +867,10 @@ class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, Panel):
|
||||
#col.active = render.use_sequencer_gl_preview
|
||||
col.prop(render, "sequencer_gl_preview", text="")
|
||||
|
||||
row = col.row()
|
||||
row.active = render.sequencer_gl_preview == 'SOLID'
|
||||
row.prop(render, "use_sequencer_gl_textured_solid")
|
||||
|
||||
|
||||
class SEQUENCER_PT_view(SequencerButtonsPanel_Output, Panel):
|
||||
bl_label = "View Settings"
|
||||
|
@ -363,7 +363,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, int, int, char[256]);
|
||||
typedef struct ImBuf *(*SequencerDrawView)(struct Scene *, struct Object *, int, int, unsigned int, int, int, int, int, char[256]);
|
||||
extern SequencerDrawView sequencer_view3d_cb;
|
||||
|
||||
/* copy/paste */
|
||||
|
@ -2409,8 +2409,9 @@ static ImBuf *seq_render_scene_strip(SeqRenderData context, Sequence *seq, float
|
||||
|
||||
/* opengl offscreen render */
|
||||
BKE_scene_update_for_newframe(context.bmain, scene, scene->lay);
|
||||
ibuf = sequencer_view3d_cb(scene, camera, context.rectx, context.recty,
|
||||
IB_rect, context.scene->r.seq_prev_type, TRUE, FALSE, err_out);
|
||||
ibuf = sequencer_view3d_cb(scene, camera, context.rectx, context.recty, IB_rect,
|
||||
context.scene->r.seq_prev_type, context.scene->r.seq_flag & R_SEQ_SOLID_TEX,
|
||||
TRUE, FALSE, err_out);
|
||||
if (ibuf == NULL) {
|
||||
fprintf(stderr, "seq_render_scene_strip failed to get opengl buffer: %s\n", err_out);
|
||||
}
|
||||
|
@ -269,7 +269,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,
|
||||
int draw_background, int colormanage_background, 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,
|
||||
int draw_background, int colormanage_background, char err_out[256]);
|
||||
int use_solid_tex, int draw_background, int colormanage_background, char err_out[256]);
|
||||
|
||||
|
||||
struct Base *ED_view3d_give_base_under_cursor(struct bContext *C, const int mval[2]);
|
||||
|
@ -232,7 +232,7 @@ 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, 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, FALSE, err_out);
|
||||
camera = scene->camera;
|
||||
|
||||
if (ibuf_view) {
|
||||
|
@ -2748,7 +2748,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(Scene *scene, View3D *v3d, ARegion *ar,
|
||||
|
||||
/* 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, int draw_background,
|
||||
unsigned int flag, int drawtype, int use_solid_tex, int draw_background,
|
||||
int colormanage_background, char err_out[256])
|
||||
{
|
||||
View3D v3d = {NULL};
|
||||
@ -2765,6 +2765,9 @@ ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, Object *camera, int w
|
||||
v3d.drawtype = drawtype;
|
||||
v3d.flag2 = V3D_RENDER_OVERRIDE;
|
||||
|
||||
if (use_solid_tex)
|
||||
v3d.flag2 |= V3D_SOLID_TEX;
|
||||
|
||||
rv3d.persp = RV3D_CAMOB;
|
||||
|
||||
copy_m4_m4(rv3d.viewinv, v3d.camera->obmat);
|
||||
|
@ -1198,6 +1198,7 @@ typedef struct Scene {
|
||||
/* seq_flag */
|
||||
#define R_SEQ_GL_PREV 1
|
||||
// #define R_SEQ_GL_REND 2 // UNUSED, opengl render has its own operator now.
|
||||
#define R_SEQ_SOLID_TEX 4
|
||||
|
||||
/* displaymode */
|
||||
|
||||
|
@ -3992,6 +3992,11 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
|
||||
RNA_def_property_enum_items(prop, viewport_shade_items);
|
||||
RNA_def_property_ui_text(prop, "Sequencer Preview Shading", "Method to draw in the sequencer view");
|
||||
|
||||
prop = RNA_def_property(srna, "use_sequencer_gl_textured_solid", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "seq_flag", R_SEQ_SOLID_TEX);
|
||||
RNA_def_property_ui_text(prop, "Textured Solid", "Draw face-assigned textures in solid draw method");
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_SceneSequencer_update");
|
||||
|
||||
/* layers */
|
||||
prop = RNA_def_property(srna, "layers", PROP_COLLECTION, PROP_NONE);
|
||||
RNA_def_property_collection_sdna(prop, NULL, "layers", NULL);
|
||||
|
@ -708,7 +708,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, err_out);
|
||||
IB_rect, OB_SOLID, FALSE, FALSE, FALSE, 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