diff options
Diffstat (limited to 'source/blender/radiosity')
-rw-r--r-- | source/blender/radiosity/extern/include/radio.h | 25 | ||||
-rw-r--r-- | source/blender/radiosity/intern/source/raddisplay.c | 8 | ||||
-rw-r--r-- | source/blender/radiosity/intern/source/radio.c | 52 | ||||
-rw-r--r-- | source/blender/radiosity/intern/source/radpostprocess.c | 11 | ||||
-rw-r--r-- | source/blender/radiosity/intern/source/radpreprocess.c | 14 | ||||
-rw-r--r-- | source/blender/radiosity/intern/source/radrender.c | 10 |
6 files changed, 63 insertions, 57 deletions
diff --git a/source/blender/radiosity/extern/include/radio.h b/source/blender/radiosity/extern/include/radio.h index 847d2fb1ae9..e7f23302880 100644 --- a/source/blender/radiosity/extern/include/radio.h +++ b/source/blender/radiosity/extern/include/radio.h @@ -42,6 +42,7 @@ extern RadGlobal RG; struct View3D; +struct Scene; /* radfactors.c */ extern float calcStokefactor(RPatch *shoot, RPatch *rp, RNode *rn, float *area); @@ -66,18 +67,18 @@ extern void closehemiwindows(void); void rad_init_energy(void); /* radio.c */ -void freeAllRad(void); +void freeAllRad(struct Scene *scene); int rad_phase(void); void rad_status_str(char *str); void rad_printstatus(void); -void rad_setlimits(void); -void set_radglobal(void); -void add_radio(void); -void delete_radio(void); -int rad_go(void); -void rad_subdivshootpatch(void); -void rad_subdivshootelem(void); -void rad_limit_subdivide(void); +void rad_setlimits(struct Scene *scene); +void set_radglobal(struct Scene *scene); +void add_radio(struct Scene *scene); +void delete_radio(struct Scene *scene); +int rad_go(struct Scene *scene); +void rad_subdivshootpatch(struct Scene *scene); +void rad_subdivshootelem(struct Scene *scene); +void rad_limit_subdivide(struct Scene *scene); /* radnode.c */ extern void setnodelimit(float limit); @@ -112,7 +113,7 @@ extern void splitconnected(void); extern int vergedge(const void *v1,const void *v2); extern void addedge(float *v1, float *v2, EdSort *es); extern void setedgepointers(void); -extern void rad_collect_meshes(struct View3D *v3d); +extern void rad_collect_meshes(struct Scene *scene, struct View3D *v3d); extern void countelem(RNode *rn); extern void countglobaldata(void); extern void addelem(RNode ***el, RNode *rn, RPatch *rp); @@ -141,8 +142,8 @@ void filterFaces(void); void calcfiltrad(RNode *rn, float *cd); void filterNodes(void); void removeEqualNodes(short limit); -void rad_addmesh(void); -void rad_replacemesh(void); +void rad_addmesh(struct Scene *scene); +void rad_replacemesh(struct Scene *scene); /* raddisplay.c */ extern char calculatecolor(float col); diff --git a/source/blender/radiosity/intern/source/raddisplay.c b/source/blender/radiosity/intern/source/raddisplay.c index 753c2a5b58b..ab9e8eedc28 100644 --- a/source/blender/radiosity/intern/source/raddisplay.c +++ b/source/blender/radiosity/intern/source/raddisplay.c @@ -199,11 +199,13 @@ void drawpatch_ext(RPatch *patch, unsigned int col) View3D *v3d; glDrawBuffer(GL_FRONT); + return; // XXX + cpack(col); oldsa= NULL; // XXX curarea; - sa= G.curscreen->areabase.first; +// sa= G.curscreen->areabase.first; while(sa) { if (sa->spacetype==SPACE_VIEW3D) { v3d= sa->spacedata.first; @@ -455,9 +457,11 @@ void rad_forcedraw() { ScrArea *sa, *oldsa; + return; // XXX + oldsa= NULL; // XXX curarea; - sa= G.curscreen->areabase.first; +/// sa= G.curscreen->areabase.first; while(sa) { if (sa->spacetype==SPACE_VIEW3D) { /* use mywinget() here: othwerwise it draws in header */ diff --git a/source/blender/radiosity/intern/source/radio.c b/source/blender/radiosity/intern/source/radio.c index ec4a0eec490..63032b2d603 100644 --- a/source/blender/radiosity/intern/source/radio.c +++ b/source/blender/radiosity/intern/source/radio.c @@ -99,14 +99,14 @@ RadGlobal RG= {0, 0}; -void freeAllRad() +void freeAllRad(Scene *scene) { Base *base; extern int Ntotvert, Ntotnode, Ntotpatch; /* clear flag that disables drawing the meshes */ - if(G.scene) { - base= (G.scene->base.first); + if(scene) { + base= (scene->base.first); while(base) { if(base->object->type==OB_MESH) { base->flag &= ~OB_RADIO; @@ -190,9 +190,9 @@ void rad_printstatus() // } } -void rad_setlimits() +void rad_setlimits(Scene *scene) { - Radio *rad= G.scene->radio; + Radio *rad= scene->radio; float fac; fac= 0.0005*rad->pama; @@ -210,10 +210,10 @@ void rad_setlimits() RG.elemmin*= RG.elemmin; } -void set_radglobal() +void set_radglobal(Scene *scene) { /* always call before any action is performed */ - Radio *rad= G.scene->radio; + Radio *rad= scene->radio; if(RG.radio==0) { /* firsttime and to be sure */ @@ -223,7 +223,7 @@ void set_radglobal() if(rad==0) return; if(rad != RG.radio) { - if(RG.radio) freeAllRad(); + if(RG.radio) freeAllRad(scene); memset(&RG, 0, sizeof(RadGlobal)); RG.radio= rad; } @@ -243,16 +243,16 @@ void set_radglobal() RG.re= NULL; /* struct render, for when call it from render engine */ - rad_setlimits(); + rad_setlimits(scene); } /* called from buttons.c */ -void add_radio() +void add_radio(Scene *scene) { Radio *rad; - if(G.scene->radio) MEM_freeN(G.scene->radio); - rad= G.scene->radio= MEM_callocN(sizeof(Radio), "radio"); + if(scene->radio) MEM_freeN(scene->radio); + rad= scene->radio= MEM_callocN(sizeof(Radio), "radio"); rad->hemires= 300; rad->convergence= 0.1; @@ -271,19 +271,19 @@ void add_radio() rad->maxnode= 10000; rad->maxiter= 120; // arbitrary rad->flag= 2; - set_radglobal(); + set_radglobal(scene); } -void delete_radio() +void delete_radio(Scene *scene) { - freeAllRad(); - if(G.scene->radio) MEM_freeN(G.scene->radio); - G.scene->radio= 0; + freeAllRad(scene); + if(scene->radio) MEM_freeN(scene->radio); + scene->radio= 0; RG.radio= 0; } -int rad_go(void) /* return 0 when user escapes */ +int rad_go(Scene *scene) /* return 0 when user escapes */ { double stime= PIL_check_seconds_timer(); int retval; @@ -292,7 +292,7 @@ int rad_go(void) /* return 0 when user escapes */ G.afbreek= 0; - set_radglobal(); + set_radglobal(scene); initradiosity(); /* LUT's */ inithemiwindows(); /* views */ @@ -334,14 +334,14 @@ int rad_go(void) /* return 0 when user escapes */ return retval; } -void rad_subdivshootpatch() +void rad_subdivshootpatch(Scene *scene) { if(RG.totface) return; G.afbreek= 0; - set_radglobal(); + set_radglobal(scene); initradiosity(); /* LUT's */ inithemiwindows(); /* views */ @@ -353,14 +353,14 @@ void rad_subdivshootpatch() // XXX allqueue(REDRAWVIEW3D, 1); } -void rad_subdivshootelem(void) +void rad_subdivshootelem(Scene *scene) { if(RG.totface) return; G.afbreek= 0; - set_radglobal(); + set_radglobal(scene); initradiosity(); /* LUT's */ inithemiwindows(); /* views */ @@ -372,12 +372,12 @@ void rad_subdivshootelem(void) // XXX allqueue(REDRAWVIEW3D, 1); } -void rad_limit_subdivide() +void rad_limit_subdivide(Scene *scene) { - if(G.scene->radio==0) return; + if(scene->radio==0) return; - set_radglobal(); + set_radglobal(scene); if(RG.totpatch==0) { /* printf("exit: no relevant data\n"); */ diff --git a/source/blender/radiosity/intern/source/radpostprocess.c b/source/blender/radiosity/intern/source/radpostprocess.c index 75480eda5df..6912c737a51 100644 --- a/source/blender/radiosity/intern/source/radpostprocess.c +++ b/source/blender/radiosity/intern/source/radpostprocess.c @@ -56,6 +56,7 @@ #include "DNA_meshdata_types.h" #include "DNA_object_types.h" #include "DNA_radio_types.h" +#include "DNA_scene_types.h" #include "BKE_customdata.h" #include "BKE_global.h" @@ -694,7 +695,7 @@ unsigned int rad_find_or_add_mvert(Mesh *me, MFace *mf, RNode *orignode, float * return (unsigned int)(mvert - me->mvert); } -void rad_addmesh(void) +void rad_addmesh(Scene *scene) { Face *face = NULL; Object *ob; @@ -715,7 +716,7 @@ void rad_addmesh(void) // XXX notice("warning: cannot assign more than 16 materials to 1 mesh"); /* create the mesh */ - ob= add_object(OB_MESH); + ob= add_object(scene, OB_MESH); me= ob->data; me->totvert= totalRadVert(); @@ -799,7 +800,7 @@ void rad_addmesh(void) make_edges(me, 0); } -void rad_replacemesh(void) +void rad_replacemesh(Scene *scene) { RPatch *rp; @@ -815,9 +816,9 @@ void rad_replacemesh(void) rp= rp->next; } - copy_objectflags(); + copy_objectflags(scene); // XXX delete_obj(1); - rad_addmesh(); + rad_addmesh(scene); } diff --git a/source/blender/radiosity/intern/source/radpreprocess.c b/source/blender/radiosity/intern/source/radpreprocess.c index 6416ab0f1e5..2b3ce1a856b 100644 --- a/source/blender/radiosity/intern/source/radpreprocess.c +++ b/source/blender/radiosity/intern/source/radpreprocess.c @@ -293,7 +293,7 @@ static int materialIndex(Material *ma) return -1; } -void rad_collect_meshes(View3D *v3d) +void rad_collect_meshes(Scene *scene, View3D *v3d) { extern Material defmaterial; Base *base; @@ -314,16 +314,16 @@ void rad_collect_meshes(View3D *v3d) return; } - set_radglobal(); + set_radglobal(scene); - freeAllRad(); + freeAllRad(scene); start_fastmalloc("Radiosity"); /* count the number of verts */ RG.totvert= 0; RG.totface= 0; - base= (G.scene->base.first); + base= (scene->base.first); while(base) { if(((base)->flag & SELECT) && ((base)->lay & v3d->lay) ) { if(base->object->type==OB_MESH) { @@ -346,7 +346,7 @@ void rad_collect_meshes(View3D *v3d) mfdatatot= 0; /* min-max and material array */ - base= (G.scene->base.first); + base= (scene->base.first); while(base) { if( ((base)->flag & SELECT) && ((base)->lay & v3d->lay) ) { if(base->object->type==OB_MESH) { @@ -413,7 +413,7 @@ void rad_collect_meshes(View3D *v3d) RG.totlamp= 0; offs= 0; - base= (G.scene->base.first); + base= (scene->base.first); while(base) { if( ((base)->flag & SELECT) && ((base)->lay & v3d->lay) ) { if(base->object->type==OB_MESH) { @@ -528,7 +528,7 @@ void rad_collect_meshes(View3D *v3d) makeGlobalElemArray(); pseudoAmb(); - rad_setlimits(); + rad_setlimits(scene); } void setparelem(RNode *rn, RPatch *par) diff --git a/source/blender/radiosity/intern/source/radrender.c b/source/blender/radiosity/intern/source/radrender.c index 0233ffbcf9f..89f81e08d64 100644 --- a/source/blender/radiosity/intern/source/radrender.c +++ b/source/blender/radiosity/intern/source/radrender.c @@ -318,7 +318,7 @@ static void progressiverad_rr(Render *re) } printf(" Unshot energy:%f\n", 1000.0*maxenergy); - re->timecursor((G.scene->r.cfra)); + re->timecursor((re->scene->r.cfra)); } static RadFace *radfaces=NULL; @@ -500,10 +500,10 @@ static void make_vertex_rad_values(Render *re) /* main call, extern */ void do_radio_render(Render *re) { - if(G.scene->radio==NULL) add_radio(); - freeAllRad(); /* just in case radio-tool is still used */ + if(re->scene->radio==NULL) add_radio(re->scene); + freeAllRad(re->scene); /* just in case radio-tool is still used */ - set_radglobal(); /* init the RG struct */ + set_radglobal(re->scene); /* init the RG struct */ RG.re= re; /* only used by hemizbuf(), prevents polluting radio code all over */ initradfaces(re); /* add radface structs to render faces */ @@ -518,7 +518,7 @@ void do_radio_render(Render *re) } - freeAllRad(); /* luts, hemis, sets vars at zero */ + freeAllRad(re->scene); /* luts, hemis, sets vars at zero */ } /* free call, after rendering, extern */ |