Revision: 38689
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38689
Author:   campbellbarton
Date:     2011-07-25 11:34:09 +0000 (Mon, 25 Jul 2011)
Log Message:
-----------
found some changes were missed from previous manual merge

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/intern/displist.c
    branches/bmesh/blender/source/blender/editors/object/object_modifier.c
    branches/bmesh/blender/source/blender/editors/util/ed_util.c

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/displist.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/displist.c  
2011-07-25 10:51:24 UTC (rev 38688)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/displist.c  
2011-07-25 11:34:09 UTC (rev 38689)
@@ -65,9 +65,6 @@
 #include "BKE_lattice.h"
 #include "BKE_modifier.h"
 
-#include "RE_pipeline.h"
-#include "RE_shader_ext.h"
-
 #include "BLO_sys_types.h" // for intptr_t support
 
 #include "ED_curve.h" /* for BKE_curve_nurbs */
@@ -286,499 +283,6 @@
        return 1;
 }
 
-/* ***************************** shade displist. note colors now are in rgb(a) 
order ******************** */
-
-/* create default shade input... save cpu cycles with ugly global */
-/* XXXX bad code warning: local ShadeInput initialize... */
-static ShadeInput shi;
-static void init_fastshade_shadeinput(Render *re)
-{
-       memset(&shi, 0, sizeof(ShadeInput));
-       shi.lay= RE_GetScene(re)->lay;
-       shi.view[2]= -1.0f;
-       shi.passflag= SCE_PASS_COMBINED;
-       shi.combinedflag= -1;
-}
-
-static Render *fastshade_get_render(Scene *UNUSED(scene))
-{
-       // XXX 2.5: this crashes combined with previewrender
-       // due to global R so disabled for now
-#if 0
-       /* XXX ugly global still, but we can't do preview while rendering */
-       if(G.rendering==0) {
-               
-               Render *re= RE_GetRender("_Shade View_");
-               if(re==NULL) {
-                       re= RE_NewRender("_Shade View_");
-               
-                       RE_Database_Baking(re, scene, 0, 0);    /* 0= no faces 
*/
-               }
-               return re;
-       }
-#endif
-       
-       return NULL;
-}
-
-/* called on file reading */
-void fastshade_free_render(void)
-{
-       Render *re= RE_GetRender("_Shade View_");
-       
-       if(re) {
-               RE_Database_Free(re);
-               RE_FreeRender(re);
-       }
-}
-
-
-static void fastshade_customdata(CustomData *fdata, int a, int j, Material *ma)
-{
-       CustomDataLayer *layer;
-       MTFace *mtface;
-       int index, needuv= ma->texco & TEXCO_UV;
-       char *vertcol;
-
-       shi.totuv= 0;
-       shi.totcol= 0;
-
-       for(index=0; index<fdata->totlayer; index++) {
-               layer= &fdata->layers[index];
-               
-               if(needuv && layer->type == CD_MTFACE && shi.totuv < 
MAX_MTFACE) {
-                       mtface= &((MTFace*)layer->data)[a];
-
-                       shi.uv[shi.totuv].uv[0]= 2.0f*mtface->uv[j][0]-1.0f;
-                       shi.uv[shi.totuv].uv[1]= 2.0f*mtface->uv[j][1]-1.0f;
-                       shi.uv[shi.totuv].uv[2]= 1.0f;
-
-                       shi.uv[shi.totuv].name= layer->name;
-                       shi.totuv++;
-               }
-               else if(layer->type == CD_MCOL && shi.totcol < MAX_MCOL) {
-                       vertcol= (char*)&((MCol*)layer->data)[a*4 + j];
-
-                       shi.col[shi.totcol].col[0]= ((float)vertcol[3])/255.0f;
-                       shi.col[shi.totcol].col[1]= ((float)vertcol[2])/255.0f;
-                       shi.col[shi.totcol].col[2]= ((float)vertcol[1])/255.0f;
-
-                       shi.col[shi.totcol].name= layer->name;
-                       shi.totcol++;
-               }
-       }
-
-       if(needuv && shi.totuv == 0)
-               VECCOPY(shi.uv[0].uv, shi.lo);
-
-       if(shi.totcol)
-               VECCOPY(shi.vcol, shi.col[0].col);
-}
-
-static void fastshade(float *co, float *nor, float *orco, Material *ma, char 
*col1, char *col2)
-{
-       ShadeResult shr;
-       int a;
-       
-       VECCOPY(shi.co, co);
-       shi.vn[0]= -nor[0];
-       shi.vn[1]= -nor[1];
-       shi.vn[2]= -nor[2];
-       VECCOPY(shi.vno, shi.vn);
-       VECCOPY(shi.facenor, shi.vn);
-       
-       if(ma->texco) {
-               VECCOPY(shi.lo, orco);
-               
-               if(ma->texco & TEXCO_GLOB) {
-                       VECCOPY(shi.gl, shi.lo);
-               }
-               if(ma->texco & TEXCO_WINDOW) {
-                       VECCOPY(shi.winco, shi.lo);
-               }
-               if(ma->texco & TEXCO_STICKY) {
-                       VECCOPY(shi.sticky, shi.lo);
-               }
-               if(ma->texco & TEXCO_OBJECT) {
-                       VECCOPY(shi.co, shi.lo);
-               }
-               if(ma->texco & TEXCO_NORM) {
-                       VECCOPY(shi.orn, shi.vn);
-               }
-               if(ma->texco & TEXCO_REFL) {
-                       float inp= 2.0f * (shi.vn[2]);
-                       shi.ref[0]= (inp*shi.vn[0]);
-                       shi.ref[1]= (inp*shi.vn[1]);
-                       shi.ref[2]= (-1.0f + inp*shi.vn[2]);
-               }
-       }
-       
-       shi.mat= ma;    /* set each time... node shaders change it */
-       // RE_shade_external(NULL, &shi, &shr);
-       
-       a= 256.0f*(shr.combined[0]);
-       col1[0]= CLAMPIS(a, 0, 255);
-       a= 256.0f*(shr.combined[1]);
-       col1[1]= CLAMPIS(a, 0, 255);
-       a= 256.0f*(shr.combined[2]);
-       col1[2]= CLAMPIS(a, 0, 255);
-       
-       if(col2) {
-               shi.vn[0]= -shi.vn[0];
-               shi.vn[1]= -shi.vn[1];
-               shi.vn[2]= -shi.vn[2];
-               
-               shi.mat= ma;    /* set each time... node shaders change it */
-               // RE_shade_external(NULL, &shi, &shr);
-               
-               a= 256.0f*(shr.combined[0]);
-               col2[0]= CLAMPIS(a, 0, 255);
-               a= 256.0f*(shr.combined[1]);
-               col2[1]= CLAMPIS(a, 0, 255);
-               a= 256.0f*(shr.combined[2]);
-               col2[2]= CLAMPIS(a, 0, 255);
-       }
-}
-
-static void init_fastshade_for_ob(Render *re, Object *ob, int *need_orco_r, 
float mat[4][4], float imat[3][3])
-{
-       float tmat[4][4];
-       float amb[3]= {0.0f, 0.0f, 0.0f};
-       int a;
-       
-       /* initialize globals in render */
-       // RE_shade_external(re, NULL, NULL);
-
-       /* initialize global here */
-       init_fastshade_shadeinput(re);
-       
-       RE_DataBase_GetView(re, tmat);
-       mul_m4_m4m4(mat, ob->obmat, tmat);
-       
-       invert_m4_m4(tmat, mat);
-       copy_m3_m4(imat, tmat);
-       if(ob->transflag & OB_NEG_SCALE) mul_m3_fl(imat, -1.0);
-       
-       if (need_orco_r) *need_orco_r= 0;
-       for(a=0; a<ob->totcol; a++) {
-               Material *ma= give_current_material(ob, a+1);
-               if(ma) {
-                       init_render_material(ma, 0, amb);
-
-                       if(ma->texco & TEXCO_ORCO) {
-                               if (need_orco_r) *need_orco_r= 1;
-                       }
-               }
-       }
-}
-
-static void end_fastshade_for_ob(Object *ob)
-{
-       int a;
-       
-       for(a=0; a<ob->totcol; a++) {
-               Material *ma= give_current_material(ob, a+1);
-               if(ma)
-                       end_render_material(ma);
-       }
-}
-
-
-static void mesh_create_shadedColors(Render *re, Object *ob, int onlyForMesh, 
unsigned int **col1_r, unsigned int **col2_r)
-{
-       Mesh *me= ob->data;
-       DerivedMesh *dm;
-       MVert *mvert;
-       MFace *mface;
-       unsigned int *col1, *col2;
-       float *orco, *vnors, *nors, imat[3][3], mat[4][4], vec[3];
-       int a, i, need_orco, totface, totvert;
-       CustomDataMask dataMask = CD_MASK_BAREMESH | CD_MASK_MCOL
-                                                         | CD_MASK_MTFACE | 
CD_MASK_NORMAL;
-
-
-       init_fastshade_for_ob(re, ob, &need_orco, mat, imat);
-
-       if(need_orco)
-               dataMask |= CD_MASK_ORCO;
-
-       if (onlyForMesh)
-               dm = mesh_get_derived_deform(RE_GetScene(re), ob, dataMask);
-       else
-               dm = mesh_get_derived_final(RE_GetScene(re), ob, dataMask);
-       
-       mvert = dm->getVertArray(dm);
-       // mface = dm->getFaceArray(dm);
-       // nors = dm->getFaceDataArray(dm, CD_NORMAL);
-       totvert = dm->getNumVerts(dm);
-       totface = dm->getNumFaces(dm);
-       orco= dm->getVertDataArray(dm, CD_ORCO);
-
-       if (onlyForMesh) {
-               col1 = *col1_r;
-               col2 = NULL;
-       } else {
-               *col1_r = col1 = MEM_mallocN(sizeof(*col1)*totface*4, "col1");
-
-               if (col2_r && (me->flag & ME_TWOSIDED))
-                       col2 = MEM_mallocN(sizeof(*col2)*totface*4, "col2");
-               else
-                       col2 = NULL;
-               
-               if (col2_r) *col2_r = col2;
-       }
-
-               /* vertexnormals */
-       vnors= MEM_mallocN(totvert*3*sizeof(float), "vnors disp");
-       for (a=0; a<totvert; a++) {
-               MVert *mv = &mvert[a];
-               float *vn= &vnors[a*3];
-               float xn= mv->no[0]; 
-               float yn= mv->no[1]; 
-               float zn= mv->no[2];
-               
-                       /* transpose ! */
-               vn[0]= imat[0][0]*xn+imat[0][1]*yn+imat[0][2]*zn;
-               vn[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn;
-               vn[2]= imat[2][0]*xn+imat[2][1]*yn+imat[2][2]*zn;
-               normalize_v3(vn);
-       }               
-
-       for (i=0; i<totface; i++) {
-               MFace *mf= &mface[i];
-               Material *ma= give_current_material(ob, mf->mat_nr+1);
-               int j, vidx[4], nverts= mf->v4?4:3;
-               unsigned char *col1base= (unsigned char*) &col1[i*4];
-               unsigned char *col2base= (unsigned char*) 
(col2?&col2[i*4]:NULL);
-               float nor[3], n1[3];
-               
-               if(ma==NULL) ma= &defmaterial;
-               
-               vidx[0]= mf->v1;
-               vidx[1]= mf->v2;
-               vidx[2]= mf->v3;
-               vidx[3]= mf->v4;
-
-               if (nors) {
-                       VECCOPY(nor, &nors[i*3]);
-               } else {
-                       if (mf->v4)
-                               normal_quad_v3( nor,mvert[mf->v1].co, 
mvert[mf->v2].co, mvert[mf->v3].co, mvert[mf->v4].co);
-                       else
-                               normal_tri_v3( nor,mvert[mf->v1].co, 
mvert[mf->v2].co, mvert[mf->v3].co);
-               }
-
-               n1[0]= imat[0][0]*nor[0]+imat[0][1]*nor[1]+imat[0][2]*nor[2];
-               n1[1]= imat[1][0]*nor[0]+imat[1][1]*nor[1]+imat[1][2]*nor[2];
-               n1[2]= imat[2][0]*nor[0]+imat[2][1]*nor[1]+imat[2][2]*nor[2];
-               normalize_v3(n1);
-
-               for (j=0; j<nverts; j++) {
-                       MVert *mv= &mvert[vidx[j]];
-                       char *col1= (char*)&col1base[j*4];
-                       char *col2= (char*)(col2base?&col2base[j*4]:NULL);
-                       float *vn = (mf->flag & ME_SMOOTH)?&vnors[3*vidx[j]]:n1;
-
-                       mul_v3_m4v3(vec, mat, mv->co);
-
-                       mul_v3_v3fl(vec, vn, 0.001f);
-
-                       fastshade_customdata(&dm->faceData, i, j, ma);
-                       fastshade(vec, vn, orco?&orco[vidx[j]*3]:mv->co, ma, 
col1, col2);
-               }
-       } 
-       MEM_freeN(vnors);
-
-       dm->release(dm);
-
-       end_fastshade_for_ob(ob);
-}
-
-void shadeMeshMCol(Scene *scene, Object *ob, Mesh *me)
-{
-       Render *re= fastshade_get_render(scene);
-       int a;
-       char *cp;
-       unsigned int *mcol= (unsigned int*)me->mcol;
-       
-       if(re) {
-               mesh_create_shadedColors(re, ob, 1, &mcol, NULL);
-               me->mcol= (MCol*)mcol;
-
-               /* swap bytes */
-               for(cp= (char *)me->mcol, a= 4*me->totface; a>0; a--, cp+=4) {
-                       SWAP(char, cp[0], cp[3]);
-                       SWAP(char, cp[1], cp[2]);
-               }
-       }
-}
-
-/* has base pointer, to check for layer */
-/* called from drawobject.c */
-void shadeDispList(Scene *scene, Base *base)
-{
-       Object *ob= base->object;
-       DispList *dl, *dlob;
-       Material *ma = NULL;
-       Render *re;
-       float imat[3][3], mat[4][4], vec[3];
-       float *fp, *nor, n1[3];
-       unsigned int *col1;
-       int a, need_orco;
-       
-       re= fastshade_get_render(scene);
-       if(re==NULL)
-               return;
-       
-       dl = find_displist(&ob->disp, DL_VERTCOL);
-       if (dl) {
-               BLI_remlink(&ob->disp, dl);
-               free_disp_elem(dl);
-       }
-
-       if(ob->type==OB_MESH) {
-               dl= MEM_callocN(sizeof(DispList), "displistshade");
-               dl->type= DL_VERTCOL;
-
-               mesh_create_shadedColors(re, ob, 0, &dl->col1, &dl->col2);
-
-               /* add dl to ob->disp after mesh_create_shadedColors, because it
-                  might indirectly free ob->disp */
-               BLI_addtail(&ob->disp, dl);
-       }
-       else {
-
-               init_fastshade_for_ob(re, ob, &need_orco, mat, imat);
-               
-               if (ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) {
-               
-                       /* now we need the normals */
-                       dl= ob->disp.first;
-                       
-                       while(dl) {
-                               dlob= MEM_callocN(sizeof(DispList), 
"displistshade");
-                               BLI_addtail(&ob->disp, dlob);
-                               dlob->type= DL_VERTCOL;
-                               dlob->parts= dl->parts;
-                               dlob->nr= dl->nr;
-                               
-                               if(dl->type==DL_INDEX3) {
-                                       col1= dlob->col1= 
MEM_mallocN(sizeof(int)*dl->nr, "col1");
-                               }
-                               else {
-                                       col1= dlob->col1= 
MEM_mallocN(sizeof(int)*dl->parts*dl->nr, "col1");
-                               }
-                               
-                       
-                               ma= give_current_material(ob, dl->col+1);
-                               if(ma==NULL) ma= &defmaterial;
-                               
-                               if(dl->type==DL_INDEX3) {
-                                       if(dl->nors) {
-                                               /* there's just one normal */
-                                               n1[0]= 
imat[0][0]*dl->nors[0]+imat[0][1]*dl->nors[1]+imat[0][2]*dl->nors[2];

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to