Two small corrections for subsurf + wire render;

- when edges data exists, it skips adding faces to renderlist
- edges are rendered according to "Optimal" subsurf setting
This commit is contained in:
Ton Roosendaal 2005-04-13 14:03:10 +00:00
parent 84359bf996
commit c3221bac83

@ -1438,6 +1438,12 @@ static void init_render_mesh(Object *ob)
} }
} }
/* if wire material, and we got edges, don't do the faces */
if(ma->mode & MA_WIRE) {
end= dlm?dlm->totedge:me->totedge;
if(end) ok= 0;
}
if(ok) { if(ok) {
TFace *tface= NULL; TFace *tface= NULL;
@ -1560,32 +1566,36 @@ static void init_render_mesh(Object *ob)
if(end && (ma->mode & MA_WIRE)) { if(end && (ma->mode & MA_WIRE)) {
MEdge *medge; MEdge *medge;
medge= dlm?dlm->medge:me->medge; medge= dlm?dlm->medge:me->medge;
for(a1=0; a1<end; a1++, medge++) { for(a1=0; a1<end; a1++, medge++) {
MVert *v0 = &mvert[vertofs+medge->v1];
MVert *v1 = &mvert[vertofs+medge->v2];
vlr= RE_findOrAddVlak(R.totvlak++); if( (me->flag & ME_OPT_EDGES)==0 || (medge->flag & ME_EDGEDRAW)) {
vlr->ob= vlr_set_ob(ob); MVert *v0 = &mvert[vertofs+medge->v1];
vlr->v1= RE_findOrAddVert(vertofs+medge->v1); MVert *v1 = &mvert[vertofs+medge->v2];
vlr->v2= RE_findOrAddVert(vertofs+medge->v2);
vlr->v3= vlr->v2;
vlr->v4= NULL;
xn= (v0->no[0]+v1->no[0]); vlr= RE_findOrAddVlak(R.totvlak++);
yn= (v0->no[1]+v1->no[1]); vlr->ob= vlr_set_ob(ob);
zn= (v0->no[2]+v1->no[2]); vlr->v1= RE_findOrAddVert(vertofs+medge->v1);
if(do_puno==0) { vlr->v2= RE_findOrAddVert(vertofs+medge->v2);
/* transpose ! */ vlr->v3= vlr->v2;
vlr->n[0]= imat[0][0]*xn+imat[0][1]*yn+imat[0][2]*zn; vlr->v4= NULL;
vlr->n[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn;
vlr->n[2]= imat[2][0]*xn+imat[2][1]*yn+imat[2][2]*zn; xn= (v0->no[0]+v1->no[0]);
Normalise(vlr->n); yn= (v0->no[1]+v1->no[1]);
zn= (v0->no[2]+v1->no[2]);
if(do_puno==0) {
/* transpose ! */
vlr->n[0]= imat[0][0]*xn+imat[0][1]*yn+imat[0][2]*zn;
vlr->n[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn;
vlr->n[2]= imat[2][0]*xn+imat[2][1]*yn+imat[2][2]*zn;
Normalise(vlr->n);
}
vlr->mat= ma;
vlr->flag= 0;
vlr->ec= ME_V1V2;
vlr->lay= ob->lay;
} }
vlr->mat= ma;
vlr->flag= 0;
vlr->ec= ME_V1V2;
vlr->lay= ob->lay;
} }
} }
} }