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:
authorTon Roosendaal <ton@blender.org>2009-01-04 17:14:06 +0300
committerTon Roosendaal <ton@blender.org>2009-01-04 17:14:06 +0300
commitf7cb86df3a9ceccc4d649e42735732a608169157 (patch)
tree558a9ba43708a2213b1afa8f46d79f5daa140bc6 /source/blender/radiosity
parent74f9e98c828c17910405092785633373d4ae88e8 (diff)
2.5
Think global, act local! The old favorite G.scene gone! Man... that took almost 2 days. Also removed G.curscreen and G.edbo. Not everything could get solved; here's some notes. - modifiers now store current scene in ModifierData. This is not meant for permanent, but it can probably stick there until we cleaned the anim system and depsgraph to cope better with timing issues. - Game engine G.scene should become an argument for staring it. Didn't solve this yet. - Texture nodes should get scene cfra, but the current implementation is too tightly wrapped to do it easily.
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 */