diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-03-16 20:49:31 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-03-16 20:49:31 +0300 |
commit | d0c10cd0606a2832cdcec1fd9d3f888db06bd397 (patch) | |
tree | 475301a850e21588ba648352a16b8d6a8507d932 /source | |
parent | ecb35d463b7bad409142f02d37068459b98654bc (diff) |
draw option to only display what is rendered, used for sequencer, opengl drawing by default. since we use preview renders a lot the empties & armatures can get in the way also.
(commit 27511 by Campbell from render25 branch)
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_global.h | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/drawarmature.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/drawobject.c | 138 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 77 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_view3d_types.h | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 5 |
6 files changed, 122 insertions, 103 deletions
diff --git a/source/blender/blenkernel/BKE_global.h b/source/blender/blenkernel/BKE_global.h index 6084b0cfb73..291deb5ea70 100644 --- a/source/blender/blenkernel/BKE_global.h +++ b/source/blender/blenkernel/BKE_global.h @@ -106,7 +106,7 @@ typedef struct Global { #define G_RENDER_OGL (1 << 0) #define G_SWAP_EXCHANGE (1 << 1) /* also uses G_FILE_AUTOPLAY */ -#define G_RENDER_SHADOW (1 << 3) +/* #define G_RENDER_SHADOW (1 << 3) */ /* temp flag, removed */ #define G_BACKBUFSEL (1 << 4) #define G_PICKSEL (1 << 5) diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c index b9522b89394..3ed8fdc3eab 100644 --- a/source/blender/editors/space_view3d/drawarmature.c +++ b/source/blender/editors/space_view3d/drawarmature.c @@ -2406,7 +2406,7 @@ int draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, in bArmature *arm= ob->data; int retval= 0; - if(G.f & G_RENDER_SHADOW) + if(v3d->flag2 & V3D_RENDER_OVERRIDE) return 1; if(dt>OB_WIRE && arm->drawtype!=ARM_LINE) { diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index ea56cf25660..8fedc56df67 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -339,9 +339,6 @@ void drawaxes(float size, int flag, char drawtype) float v1[3]= {0.0, 0.0, 0.0}; float v2[3]= {0.0, 0.0, 0.0}; float v3[3]= {0.0, 0.0, 0.0}; - - if(G.f & G_RENDER_SHADOW) - return; switch(drawtype) { @@ -864,9 +861,6 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, float imat[4][4], curcol[4]; char col[4]; int drawcone= (dt>OB_WIRE && !(G.f & G_PICKSEL) && la->type == LA_SPOT && (la->mode & LA_SHOW_CONE)); - - if(G.f & G_RENDER_SHADOW) - return; if(drawcone && !v3d->transp) { /* in this case we need to draw delayed */ @@ -1164,9 +1158,6 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob float nobmat[4][4], vec[8][4], fac, facx, facy, depth; int i; - if(G.f & G_RENDER_SHADOW) - return; - cam= ob->data; glDisable(GL_LIGHTING); @@ -2004,7 +1995,8 @@ static void draw_em_measure_stats(View3D *v3d, RegionView3D *rv3d, Object *ob, E float area, col[3]; /* area of the face, color of the text to draw */ float grid= unit->system ? unit->scale_length : v3d->grid; int do_split= unit->flag & USER_UNIT_OPT_SPLIT; - if(G.f & (G_RENDER_OGL|G_RENDER_SHADOW)) + + if(v3d->flag2 & V3D_RENDER_OVERRIDE) return; /* make the precision of the pronted value proportionate to the gridsize */ @@ -2425,8 +2417,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D CHECK_OB_DRAWTEXTURE(v3d, dt)) { int faceselect= (ob==OBACT && paint_facesel_test(ob)); - - if ((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !(G.f&G_PICKSEL || paint_facesel_test(ob)) && !draw_wire) { + if ((v3d->flag&V3D_SELECT_OUTLINE) && ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) && (base->flag&SELECT) && !(G.f&G_PICKSEL || paint_facesel_test(ob)) && !draw_wire) { draw_mesh_object_outline(v3d, ob, dm); } @@ -2481,7 +2472,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D else { Paint *p; - if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire && !ob->sculpt) + if((v3d->flag&V3D_SELECT_OUTLINE) && ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) && (base->flag&SELECT) && !draw_wire && !ob->sculpt) draw_mesh_object_outline(v3d, ob, dm); glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED ); @@ -2565,7 +2556,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D dm= mesh_get_derived_final(scene, ob, v3d->customdata_mask); } - if ((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire) { + if ((v3d->flag&V3D_SELECT_OUTLINE) && ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) && (base->flag&SELECT) && !draw_wire) { draw_mesh_object_outline(v3d, ob, dm); } @@ -3734,7 +3725,8 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv setlinestyle(0); } - if((part->draw & PART_DRAW_NUM || part->draw & PART_DRAW_HEALTH) && !(G.f & G_RENDER_SHADOW)){ + + if((part->draw & PART_DRAW_NUM || part->draw & PART_DRAW_HEALTH) && (v3d->flag2 & V3D_RENDER_OVERRIDE)==0){ float vec_txt[3]; char *val_pos= val; val[0]= '\0'; @@ -4945,9 +4937,6 @@ static void draw_forcefield(Scene *scene, Object *ob, RegionView3D *rv3d) int curcol; float size; - if(G.f & G_RENDER_SHADOW) - return; - /* XXX why? */ if(ob!=scene->obedit && (ob->flag & SELECT)) { if(ob==OBACT) curcol= TH_ACTIVE; @@ -5375,9 +5364,6 @@ void drawRBpivot(bRigidBodyJointConstraint *data) float eu[3]= {radsPerDeg*data->axX, radsPerDeg*data->axY, radsPerDeg*data->axZ}; float mat[4][4]; - if(G.f & G_RENDER_SHADOW) - return; - eul_to_mat4(mat,eu); glLineWidth (4.0f); setlinestyle(2); @@ -5643,7 +5629,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) } /* draw outline for selected solid objects, mesh does itself */ - if((v3d->flag & V3D_SELECT_OUTLINE) && ob->type!=OB_MESH) { + if((v3d->flag & V3D_SELECT_OUTLINE) && ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) && ob->type!=OB_MESH) { if(dt>OB_WIRE && dt<OB_TEXTURE && (ob->mode & OB_MODE_EDIT)==0 && (flag & DRAW_SCENESET)==0) { if (!(ob->dtx&OB_DRAWWIRE) && (ob->flag&SELECT) && !(flag&DRAW_PICKING)) { @@ -5777,44 +5763,60 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) break; } case OB_EMPTY: - drawaxes(ob->empty_drawsize, flag, ob->empty_drawtype); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) + drawaxes(ob->empty_drawsize, flag, ob->empty_drawtype); break; case OB_LAMP: - drawlamp(scene, v3d, rv3d, base, dt, flag); - if(dtx || (base->flag & SELECT)) glMultMatrixf(ob->obmat); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + drawlamp(scene, v3d, rv3d, base, dt, flag); + if(dtx || (base->flag & SELECT)) glMultMatrixf(ob->obmat); + } break; case OB_CAMERA: - drawcamera(scene, v3d, rv3d, ob, flag); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) + drawcamera(scene, v3d, rv3d, ob, flag); break; case OB_LATTICE: - drawlattice(scene, v3d, ob); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + drawlattice(scene, v3d, ob); + } break; case OB_ARMATURE: - if(dt>OB_WIRE) GPU_enable_material(0, NULL); // we use default material - empty_object= draw_armature(scene, v3d, ar, base, dt, flag); - if(dt>OB_WIRE) GPU_disable_material(); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + if(dt>OB_WIRE) GPU_enable_material(0, NULL); // we use default material + empty_object= draw_armature(scene, v3d, ar, base, dt, flag); + if(dt>OB_WIRE) GPU_disable_material(); + } break; default: - drawaxes(1.0, flag, OB_ARROWS); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + drawaxes(1.0, flag, OB_ARROWS); + } } - if(ob->soft /*&& flag & OB_SBMOTION*/){ - float mrt[3][3],msc[3][3],mtr[3][3]; - SoftBody *sb = 0; - float tipw = 0.5f, tiph = 0.5f,drawsize = 4.0f; - if ((sb= ob->soft)){ - if(sb->solverflags & SBSO_ESTIMATEIPO){ - glLoadMatrixf(rv3d->viewmat); - copy_m3_m3(msc,sb->lscale); - copy_m3_m3(mrt,sb->lrot); - mul_m3_m3m3(mtr,mrt,msc); - ob_draw_RE_motion(sb->lcom,mtr,tipw,tiph,drawsize); - glMultMatrixf(ob->obmat); + if((v3d->flag2 & V3D_RENDER_OVERRIDE) == 0) { + + if(ob->soft /*&& flag & OB_SBMOTION*/){ + float mrt[3][3],msc[3][3],mtr[3][3]; + SoftBody *sb = 0; + float tipw = 0.5f, tiph = 0.5f,drawsize = 4.0f; + if ((sb= ob->soft)){ + if(sb->solverflags & SBSO_ESTIMATEIPO){ + + glLoadMatrixf(rv3d->viewmat); + copy_m3_m3(msc,sb->lscale); + copy_m3_m3(mrt,sb->lrot); + mul_m3_m3m3(mtr,mrt,msc); + ob_draw_RE_motion(sb->lcom,mtr,tipw,tiph,drawsize); + glMultMatrixf(ob->obmat); + } } } - } - if(ob->pd && ob->pd->forcefield) draw_forcefield(scene, ob, rv3d); + if(ob->pd && ob->pd->forcefield) { + draw_forcefield(scene, ob, rv3d); + } + } /* code for new particle system */ if( (warning_recursive==0) && @@ -5971,7 +5973,8 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) } } - { + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + bConstraint *con; for(con=ob->constraints.first; con; con= con->next) { @@ -5982,24 +5985,25 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) drawRBpivot(data); } } - } - /* draw extra: after normal draw because of makeDispList */ - if(dtx && !(G.f & (G_RENDER_OGL|G_RENDER_SHADOW))) { - if(dtx & OB_AXIS) { - drawaxes(1.0f, flag, OB_ARROWS); - } - if(dtx & OB_BOUNDBOX) draw_bounding_volume(scene, ob); - if(dtx & OB_TEXSPACE) drawtexspace(ob); - if(dtx & OB_DRAWNAME) { - /* patch for several 3d cards (IBM mostly) that crash on glSelect with text drawing */ - /* but, we also dont draw names for sets or duplicators */ - if(flag == 0) { - view3d_cached_text_draw_add(0.0f, 0.0f, 0.0f, ob->id.name+2, 10, 0); - } - } - /*if(dtx & OB_DRAWIMAGE) drawDispListwire(&ob->disp);*/ - if((dtx & OB_DRAWWIRE) && dt>=OB_SOLID) drawWireExtra(scene, rv3d, ob); + /* draw extra: after normal draw because of makeDispList */ + if(dtx && (G.f & G_RENDER_OGL)==0) { + + if(dtx & OB_AXIS) { + drawaxes(1.0f, flag, OB_ARROWS); + } + if(dtx & OB_BOUNDBOX) draw_bounding_volume(scene, ob); + if(dtx & OB_TEXSPACE) drawtexspace(ob); + if(dtx & OB_DRAWNAME) { + /* patch for several 3d cards (IBM mostly) that crash on glSelect with text drawing */ + /* but, we also dont draw names for sets or duplicators */ + if(flag == 0) { + view3d_cached_text_draw_add(0.0f, 0.0f, 0.0f, ob->id.name+2, 10, 0); + } + } + /*if(dtx & OB_DRAWIMAGE) drawDispListwire(&ob->disp);*/ + if((dtx & OB_DRAWWIRE) && dt>=OB_SOLID) drawWireExtra(scene, rv3d, ob); + } } if(dt<OB_SHADED) { @@ -6025,13 +6029,15 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if(warning_recursive) return; if(base->flag & OB_FROMDUPLI) return; - if(G.f & G_RENDER_SHADOW) return; + if(v3d->flag2 & V3D_RENDER_OVERRIDE) return; /* object centers, need to be drawn in viewmat space for speed, but OK for picking select */ if(ob!=OBACT || !(ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT))) { int do_draw_center= -1; /* defines below are zero or positive... */ - if((scene->basact)==base) + if(v3d->flag2 & V3D_RENDER_OVERRIDE) { + /* dont draw */ + } else if((scene->basact)==base) do_draw_center= ACTIVE; else if(base->flag & SELECT) do_draw_center= SELECT; @@ -6056,7 +6062,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) } /* not for sets, duplicators or picking */ - if(flag==0 && (!(v3d->flag & V3D_HIDE_HELPLINES))) { + if(flag==0 && (v3d->flag & V3D_HIDE_HELPLINES)== 0 && (v3d->flag2 & V3D_RENDER_OVERRIDE)== 0) { ListBase *list; /* draw hook center and offset line */ diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 16a8b1d0e8b..b1f5e959388 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -2096,6 +2096,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, int width, int height v3d.camera= scene->camera; v3d.lay= scene->lay; v3d.drawtype = drawtype; + v3d.flag2 = V3D_RENDER_OVERRIDE; rv3d.persp= RV3D_CAMOB; @@ -2223,29 +2224,32 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) // needs to be done always, gridview is adjusted in drawgrid() now rv3d->gridview= v3d->grid; - if(rv3d->view==0 || rv3d->persp!=0) { - drawfloor(scene, v3d); - if(rv3d->persp==2) { - if(scene->world) { - if(scene->world->mode & WO_STARS) { - RE_make_stars(NULL, scene, star_stuff_init_func, star_stuff_vertex_func, - star_stuff_term_func); + if ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + + if(rv3d->view==0 || rv3d->persp != RV3D_ORTHO) { + drawfloor(scene, v3d); + if(rv3d->persp==RV3D_CAMOB) { + if(scene->world) { + if(scene->world->mode & WO_STARS) { + RE_make_stars(NULL, scene, star_stuff_init_func, star_stuff_vertex_func, + star_stuff_term_func); + } } + if(v3d->flag & V3D_DISPBGPICS) draw_bgpic(scene, ar, v3d); } - if(v3d->flag & V3D_DISPBGPICS) draw_bgpic(scene, ar, v3d); } - } - else { - ED_region_pixelspace(ar); - drawgrid(&scene->unit, ar, v3d, &grid_unit); - /* XXX make function? replaces persp(1) */ - glMatrixMode(GL_PROJECTION); - glLoadMatrixf(rv3d->winmat); - glMatrixMode(GL_MODELVIEW); - glLoadMatrixf(rv3d->viewmat); - - if(v3d->flag & V3D_DISPBGPICS) { - draw_bgpic(scene, ar, v3d); + else { + ED_region_pixelspace(ar); + drawgrid(&scene->unit, ar, v3d, &grid_unit); + /* XXX make function? replaces persp(1) */ + glMatrixMode(GL_PROJECTION); + glLoadMatrixf(rv3d->winmat); + glMatrixMode(GL_MODELVIEW); + glLoadMatrixf(rv3d->viewmat); + + if(v3d->flag & V3D_DISPBGPICS) { + draw_bgpic(scene, ar, v3d); + } } } @@ -2333,12 +2337,14 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) glDisable(GL_DEPTH_TEST); } - /* draw grease-pencil stuff (3d-space strokes) */ - //if (v3d->flag2 & V3D_DISPGP) - draw_gpencil_3dview((bContext *)C, 1); - - BDR_drawSketch(C); - + if ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + /* draw grease-pencil stuff (3d-space strokes) */ + //if (v3d->flag2 & V3D_DISPGP) + draw_gpencil_3dview((bContext *)C, 1); + + BDR_drawSketch(C); + } + ED_region_pixelspace(ar); // retopo_paint_view_update(v3d); @@ -2346,14 +2352,17 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) /* Draw particle edit brush XXX (removed) */ - if(rv3d->persp>1) drawviewborder(scene, ar, v3d); - if(rv3d->rflag & RV3D_FLYMODE) drawviewborder_flymode(ar); - - /* draw grease-pencil stuff - needed to get paint-buffer shown too (since it's 2D) */ -// if (v3d->flag2 & V3D_DISPGP) - draw_gpencil_3dview((bContext *)C, 0); + if ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + + if(rv3d->persp==RV3D_CAMOB) drawviewborder(scene, ar, v3d); + if(rv3d->rflag & RV3D_FLYMODE) drawviewborder_flymode(ar); + + /* draw grease-pencil stuff - needed to get paint-buffer shown too (since it's 2D) */ + // if (v3d->flag2 & V3D_DISPGP) + draw_gpencil_3dview((bContext *)C, 0); - drawcursor(scene, ar, v3d); + drawcursor(scene, ar, v3d); + } if(U.uiflag & USER_SHOW_ROTVIEWICON) draw_view_axis(rv3d); @@ -2381,5 +2390,3 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) v3d->flag |= V3D_INVALID_BACKBUF; } - - diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index 12849d02d97..60aba105ff4 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -247,6 +247,7 @@ typedef struct View3D { #define RV3D_VIEW_CAMERA 8 /* View3d->flag2 (short) */ +#define V3D_RENDER_OVERRIDE 4 #define V3D_SOLID_TEX 8 #define V3D_DISPGP 16 diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 19dc132c834..3e8c4250c1c 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -937,6 +937,11 @@ static void rna_def_space_3dview(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag2", V3D_SOLID_TEX); RNA_def_property_ui_text(prop, "Textured Solid", "Display face-assigned textures in solid view"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + + prop= RNA_def_property(srna, "display_render_override", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag2", V3D_RENDER_OVERRIDE); + RNA_def_property_ui_text(prop, "Only Render", "Display only objects which will be rendered"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); prop= RNA_def_property(srna, "occlude_geometry", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_ZBUF_SELECT); |