Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/radiosity')
-rw-r--r--source/blender/radiosity/extern/include/radio.h25
-rw-r--r--source/blender/radiosity/intern/source/raddisplay.c8
-rw-r--r--source/blender/radiosity/intern/source/radio.c52
-rw-r--r--source/blender/radiosity/intern/source/radpostprocess.c11
-rw-r--r--source/blender/radiosity/intern/source/radpreprocess.c14
-rw-r--r--source/blender/radiosity/intern/source/radrender.c10
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 */