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/render')
-rw-r--r--source/blender/render/extern/include/RE_pipeline.h6
-rw-r--r--source/blender/render/intern/source/convertblender.c56
-rw-r--r--source/blender/render/intern/source/envmap.c6
-rw-r--r--source/blender/render/intern/source/initrender.c2
-rw-r--r--source/blender/render/intern/source/pipeline.c50
-rw-r--r--source/blender/render/intern/source/rayshade.c6
-rw-r--r--source/blender/render/intern/source/texture.c8
7 files changed, 69 insertions, 65 deletions
diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h
index 60557403143..97ef371af76 100644
--- a/source/blender/render/extern/include/RE_pipeline.h
+++ b/source/blender/render/extern/include/RE_pipeline.h
@@ -124,10 +124,11 @@ typedef struct RenderResult {
typedef struct RenderStats {
+ int cfra;
int totface, totvert, totstrand, tothalo, totlamp, totpart;
short curfield, curblur, curpart, partsdone, convertdone;
double starttime, lastframetime;
- char *infostr;
+ char *infostr, scenename[32];
} RenderStats;
@@ -195,7 +196,7 @@ struct RenderResult *RE_MultilayerConvert(void *exrhandle, int rectx, int recty)
void RE_MergeFullSample(struct Render *re, struct Scene *sce, struct bNodeTree *ntree);
/* ancient stars function... go away! */
-void RE_make_stars(struct Render *re, void (*initfunc)(void),
+void RE_make_stars(struct Render *re, struct Scene *scenev3d, void (*initfunc)(void),
void (*vertexfunc)(float*), void (*termfunc)(void));
/* display and event callbacks */
@@ -226,6 +227,7 @@ void RE_Database_Baking(struct Render *re, struct Scene *scene, int type, struct
void RE_DataBase_GetView(struct Render *re, float mat[][4]);
void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, float mat[][4]);
+struct Scene *RE_GetScene(struct Render *re);
#endif /* RE_PIPELINE_H */
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index 8fd566da30f..b36f4337235 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -163,7 +163,7 @@ static HaloRen *initstar(Render *re, ObjectRen *obr, float *vec, float hasize)
* differ in clarity/color
*/
-void RE_make_stars(Render *re, void (*initfunc)(void),
+void RE_make_stars(Render *re, Scene *scenev3d, void (*initfunc)(void),
void (*vertexfunc)(float*), void (*termfunc)(void))
{
extern unsigned char hash[512];
@@ -179,8 +179,8 @@ void RE_make_stars(Render *re, void (*initfunc)(void),
int x, y, z, sx, sy, sz, ex, ey, ez, done = 0;
if(initfunc) {
- scene= G.scene;
- wrld= G.scene->world;
+ scene= scenev3d;
+ wrld= scene->world;
}
else {
scene= re->scene;
@@ -870,7 +870,7 @@ static float *get_object_orco(Render *re, Object *ob)
if (!orco) {
if (ELEM(ob->type, OB_CURVE, OB_FONT)) {
- orco = make_orco_curve(ob);
+ orco = make_orco_curve(re->scene, ob);
} else if (ob->type==OB_SURF) {
orco = make_orco_surf(ob);
} else if (ob->type==OB_MBALL) {
@@ -1473,7 +1473,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
MCol *mcol= 0;
float loc[3],loc1[3],loc0[3],vel[3],mat[4][4],nmat[3][3],co[3],nor[3],time;
float *orco=0,*surfnor=0,*uvco=0, strandlen=0.0f, curlen=0.0f;
- float hasize, pa_size, pa_time, r_tilt, cfra=bsystem_time(ob,(float)re->scene->r.cfra,0.0);
+ float hasize, pa_size, pa_time, r_tilt, cfra=bsystem_time(re->scene, ob, (float)re->scene->r.cfra, 0.0);
float adapt_angle=0.0, adapt_pix=0.0, random, simplify[2];
int i, a, k, max_k=0, totpart, totuv=0, totcol=0, override_uv=-1, dosimplify = 0, dosurfacecache = 0;
int path_possible=0, keys_possible=0, baked_keys=0, totchild=0;
@@ -1570,7 +1570,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
}
if(part->flag&PART_GLOB_TIME)
- cfra=bsystem_time(0,(float)re->scene->r.cfra,0.0);
+ cfra=bsystem_time(re->scene, 0, (float)re->scene->r.cfra, 0.0);
if(part->type==PART_REACTOR){
psys_get_reactor_target(ob, psys, &tob, &tpsys);
@@ -1674,7 +1674,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
}
if(path_nbr==0)
- psys->lattice=psys_get_lattice(ob,psys);
+ psys->lattice= psys_get_lattice(re->scene, ob, psys);
/* 3. start creating renderable things */
for(a=0,pa=pars; a<totpart+totchild; a++, pa++, seed++) {
@@ -1958,7 +1958,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
else{
time=0.0f;
state.time=cfra;
- if(psys_get_particle_state(ob,psys,a,&state,0)==0)
+ if(psys_get_particle_state(re->scene, ob, psys, a, &state, 0)==0)
continue;
}
@@ -2022,7 +2022,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
strandbuf->surface= cache_strand_surface(re, obr, psmd->dm, mat, timeoffset);
/* 4. clean up */
- if(ma) do_mat_ipo(ma);
+ if(ma) do_mat_ipo(re->scene, ma);
if(orco1)
MEM_freeN(orco);
@@ -2348,7 +2348,7 @@ static void init_render_mball(Render *re, ObjectRen *obr)
float *data, *nors, *orco, mat[4][4], imat[3][3], xn, yn, zn;
int a, need_orco, vlakindex, *index;
- if (ob!=find_basis_mball(ob))
+ if (ob!=find_basis_mball(re->scene, ob))
return;
MTC_Mat4MulMat4(mat, ob->obmat, re->viewmat);
@@ -2362,7 +2362,7 @@ static void init_render_mball(Render *re, ObjectRen *obr)
need_orco= 1;
}
- makeDispListMBall(ob);
+ makeDispListMBall(re->scene, ob);
dl= ob->disp.first;
if(dl==0) return;
@@ -2634,7 +2634,7 @@ static void init_render_surf(Render *re, ObjectRen *obr)
if(need_orco) orcobase= orco= get_object_orco(re, ob);
displist.first= displist.last= 0;
- makeDispListSurf(ob, &displist, 1);
+ makeDispListSurf(re->scene, ob, &displist, 1);
dl= displist.first;
/* walk along displaylist and create rendervertices/-faces */
@@ -2674,7 +2674,7 @@ static void init_render_curve(Render *re, ObjectRen *obr, int timeoffset)
/* test displist */
if(cu->disp.first==NULL)
- makeDispListCurveTypes(ob, 0);
+ makeDispListCurveTypes(re->scene, ob, 0);
dl= cu->disp.first;
if(cu->disp.first==NULL) return;
@@ -3084,7 +3084,7 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset)
me->mr->flag &= ~MULTIRES_NO_RENDER;
}
- dm= mesh_create_derived_render(ob, mask);
+ dm= mesh_create_derived_render(re->scene, ob, mask);
if(dm==NULL) return; /* in case duplicated object fails? */
if(mask & CD_MASK_ORCO) {
@@ -4233,7 +4233,7 @@ static void init_render_object_data(Render *re, ObjectRen *obr, int timeoffset)
/* the emitter mesh wasn't rendered so the modifier stack wasn't
* evaluated with render settings */
DerivedMesh *dm;
- dm = mesh_create_derived_render(ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
+ dm = mesh_create_derived_render(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
dm->release(dm);
}
@@ -4529,7 +4529,7 @@ static void dupli_render_particle_set(Render *re, Object *ob, int timeoffset, in
/* this is to make sure we get render level duplis in groups:
* the derivedmesh must be created before init_render_mesh,
* since object_duplilist does dupliparticles before that */
- dm = mesh_create_derived_render(ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
+ dm = mesh_create_derived_render(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
dm->release(dm);
for(psys=ob->particlesystem.first; psys; psys=psys->next)
@@ -4769,7 +4769,9 @@ void RE_Database_FromScene(Render *re, Scene *scene, int use_camera_view)
/* per second, per object, stats print this */
re->i.infostr= "Preparing Scene data";
-
+ re->i.cfra= scene->r.cfra;
+ strncpy(re->i.scenename, scene->id.name+2, 20);
+
/* XXX add test if dbase was filled already? */
re->memArena = BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
@@ -4834,7 +4836,7 @@ void RE_Database_FromScene(Render *re, Scene *scene, int use_camera_view)
tothalo= re->tothalo;
if(!re->test_break())
if(re->wrld.mode & WO_STARS)
- RE_make_stars(re, NULL, NULL, NULL);
+ RE_make_stars(re, NULL, NULL, NULL, NULL);
sort_halos(re, tothalo);
re->i.infostr= "Creating Shadowbuffers";
@@ -4922,8 +4924,8 @@ static void database_fromscene_vectors(Render *re, Scene *scene, int timeoffset)
if(re->scene->lay & 0xFF000000) lay= re->scene->lay & 0xFF000000;
else lay= re->scene->lay;
- /* applies changes fully, still using G.scene for timing... */
- G.scene->r.cfra+=timeoffset;
+ /* applies changes fully */
+ scene->r.cfra += timeoffset;
scene_update_for_newframe(re->scene, lay);
/* if no camera, viewmat should have been set! */
@@ -4940,7 +4942,7 @@ static void database_fromscene_vectors(Render *re, Scene *scene, int timeoffset)
project_renderdata(re, projectverto, re->r.mode & R_PANORAMA, 0, 1);
/* do this in end, particles for example need cfra */
- G.scene->r.cfra-=timeoffset;
+ scene->r.cfra -= timeoffset;
}
/* choose to use static, to prevent giving too many args to this call */
@@ -5528,7 +5530,7 @@ void RE_make_sticky(Scene *scene, View3D *v3d)
return;
}
- if(G.scene->camera==NULL) {
+ if(scene->camera==NULL) {
printf("Need camera to make sticky\n");
return;
}
@@ -5538,14 +5540,14 @@ void RE_make_sticky(Scene *scene, View3D *v3d)
}
re= RE_NewRender("_make sticky_");
- RE_InitState(re, NULL, &G.scene->r, G.scene->r.xsch, G.scene->r.ysch, NULL);
+ RE_InitState(re, NULL, &scene->r, scene->r.xsch, scene->r.ysch, NULL);
/* use renderdata and camera to set viewplane */
- RE_SetCamera(re, G.scene->camera);
+ RE_SetCamera(re, scene->camera);
/* and set view matrix */
- Mat4Ortho(G.scene->camera->obmat);
- Mat4Invert(mat, G.scene->camera->obmat);
+ Mat4Ortho(scene->camera->obmat);
+ Mat4Invert(mat, scene->camera->obmat);
RE_SetView(re, mat);
for(base= FIRSTBASE; base; base= base->next) {
@@ -5560,7 +5562,7 @@ void RE_make_sticky(Scene *scene, View3D *v3d)
me->msticky= CustomData_add_layer(&me->vdata, CD_MSTICKY,
CD_CALLOC, NULL, me->totvert);
- where_is_object(ob);
+ where_is_object(scene, ob);
Mat4MulMat4(mat, ob->obmat, re->viewmat);
ms= me->msticky;
diff --git a/source/blender/render/intern/source/envmap.c b/source/blender/render/intern/source/envmap.c
index 13fa9b17b71..5cf03272b9f 100644
--- a/source/blender/render/intern/source/envmap.c
+++ b/source/blender/render/intern/source/envmap.c
@@ -369,7 +369,7 @@ static void env_set_imats(Render *re)
Base *base;
float mat[4][4];
- base= G.scene->base.first;
+ base= re->scene->base.first;
while(base) {
MTC_Mat4MulMat4(mat, base->object->obmat, re->viewmat);
MTC_Mat4Invert(base->object->imat, mat);
@@ -463,7 +463,7 @@ static void render_envmap(Render *re, EnvMap *env)
else {
if(envre->r.mode & R_OSA) env->ok= ENV_OSA;
else env->ok= ENV_NORMAL;
- env->lastframe= G.scene->r.cfra; /* hurmf */
+ env->lastframe= re->scene->r.cfra;
}
/* restore */
@@ -496,7 +496,7 @@ void make_envmaps(Render *re)
if(tex->env && tex->env->object) {
EnvMap *env= tex->env;
- if(env->object->lay & G.scene->lay) {
+ if(env->object->lay & re->scene->lay) {
if(env->stype==ENV_LOAD) {
float orthmat[4][4], mat[4][4], tmat[4][4];
diff --git a/source/blender/render/intern/source/initrender.c b/source/blender/render/intern/source/initrender.c
index 40c0edb6e5f..eb1e80948f6 100644
--- a/source/blender/render/intern/source/initrender.c
+++ b/source/blender/render/intern/source/initrender.c
@@ -459,7 +459,7 @@ void RE_SetCamera(Render *re, Object *camera)
* and other stuff BEFORE the animation update loop is done
* */
if(cam->ipo) {
- calc_ipo(cam->ipo, frame_to_float(re->r.cfra));
+ calc_ipo(cam->ipo, frame_to_float(re->scene, re->r.cfra));
execute_ipo(&cam->id, cam->ipo);
}
lens= cam->lens;
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 21a06fdd794..729013c9cb4 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -141,7 +141,7 @@ static void stats_background(RenderStats *rs)
float megs_used_memory= mem_in_use/(1024.0*1024.0);
char str[400], *spos= str;
- spos+= sprintf(spos, "Fra:%d Mem:%.2fM ", G.scene->r.cfra, megs_used_memory);
+ spos+= sprintf(spos, "Fra:%d Mem:%.2fM ", rs->cfra, megs_used_memory);
if(rs->curfield)
spos+= sprintf(spos, "Field %d ", rs->curfield);
@@ -153,9 +153,9 @@ static void stats_background(RenderStats *rs)
}
else {
if(rs->tothalo)
- spos+= sprintf(spos, "Sce: %s Ve:%d Fa:%d Ha:%d La:%d", G.scene->id.name+2, rs->totvert, rs->totface, rs->tothalo, rs->totlamp);
+ spos+= sprintf(spos, "Sce: %s Ve:%d Fa:%d Ha:%d La:%d", rs->scenename, rs->totvert, rs->totface, rs->tothalo, rs->totlamp);
else
- spos+= sprintf(spos, "Sce: %s Ve:%d Fa:%d La:%d", G.scene->id.name+2, rs->totvert, rs->totface, rs->totlamp);
+ spos+= sprintf(spos, "Sce: %s Ve:%d Fa:%d La:%d", rs->scenename, rs->totvert, rs->totface, rs->totlamp);
}
printf("%s\n", str);
}
@@ -922,6 +922,14 @@ RenderResult *RE_GetResult(Render *re)
return NULL;
}
+/* displist.c util.... */
+Scene *RE_GetScene(Render *re)
+{
+ if(re)
+ return re->scene;
+ return NULL;
+}
+
RenderLayer *render_get_active_layer(Render *re, RenderResult *rr)
{
RenderLayer *rl= BLI_findlink(&rr->layers, re->r.actlay);
@@ -991,7 +999,6 @@ RenderStats *RE_GetStats(Render *re)
return &re->i;
}
-/* Note, when rendering from a scene, ALWAYS use G.scene->id.name, else compositing wont work */
Render *RE_NewRender(const char *name)
{
Render *re;
@@ -1839,7 +1846,7 @@ static void load_backbuffer(Render *re)
BKE_image_signal(re->backbuf, NULL, IMA_SIGNAL_RELOAD);
}
- re->backbuf= BKE_add_image_file(name);
+ re->backbuf= BKE_add_image_file(name, re->r.cfra);
ibuf= BKE_image_get_ibuf(re->backbuf, NULL);
if(ibuf==NULL) {
// error() doesnt work with render window open
@@ -1933,7 +1940,7 @@ static void render_scene(Render *re, Scene *sce, int cfra)
/* still unsure entity this... */
resc->scene= sce;
- /* ensure scene has depsgraph, base flags etc OK. Warning... also sets G.scene */
+ /* ensure scene has depsgraph, base flags etc OK */
set_scene_bg(sce);
/* copy callbacks */
@@ -1989,11 +1996,6 @@ static void ntree_render_scenes(Render *re)
}
}
}
-
- /* still the global... */
- if(G.scene!=re->scene)
- set_scene_bg(re->scene);
-
}
/* helper call to detect if theres a composite with render-result node */
@@ -2121,8 +2123,8 @@ void RE_MergeFullSample(Render *re, Scene *sce, bNodeTree *ntree)
}
/* own render result should be read/allocated */
- if(G.scene->id.flag & LIB_DOIT)
- RE_ReadRenderResult(G.scene, G.scene);
+ if(re->scene->id.flag & LIB_DOIT)
+ RE_ReadRenderResult(re->scene, re->scene);
/* and now we can draw (result is there) */
re->display_init(re->result);
@@ -2251,12 +2253,12 @@ static void yafrayRender(Render *re)
#endif /* disable yafray */
-static void renderresult_stampinfo()
+static void renderresult_stampinfo(Scene *scene)
{
RenderResult rres;
/* this is the basic trick to get the displayed float or char rect from render result */
- RE_GetResultImage(RE_GetRender(G.scene->id.name), &rres);
- BKE_stamp_buf((unsigned char *)rres.rect32, rres.rectf, rres.rectx, rres.recty, 4);
+ RE_GetResultImage(RE_GetRender(scene->id.name), &rres);
+ BKE_stamp_buf(scene, (unsigned char *)rres.rect32, rres.rectf, rres.rectx, rres.recty, 4);
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
@@ -2297,8 +2299,8 @@ static void do_render_all_options(Render *re)
re->stats_draw(&re->i);
/* stamp image info here */
- if((G.scene->r.scemode & R_STAMP_INFO) && (G.scene->r.stamp & R_STAMP_DRAW)) {
- renderresult_stampinfo();
+ if((re->r.scemode & R_STAMP_INFO) && (re->r.stamp & R_STAMP_DRAW)) {
+ renderresult_stampinfo(re->scene);
re->display_draw(re->result, NULL);
}
}
@@ -2508,7 +2510,7 @@ static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh)
printf("Append frame %d", scene->r.cfra);
}
else {
- BKE_makepicstring(name, scene->r.pic, scene->r.cfra, scene->r.imtype);
+ BKE_makepicstring(scene, name, scene->r.pic, scene->r.cfra, scene->r.imtype);
if(re->r.imtype==R_MULTILAYER) {
if(re->result) {
@@ -2528,7 +2530,7 @@ static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh)
/* float factor for random dither, imbuf takes care of it */
ibuf->dither= scene->r.dither_intensity;
- ok= BKE_write_ibuf(ibuf, name, scene->r.imtype, scene->r.subimtype, scene->r.quality);
+ ok= BKE_write_ibuf(scene, ibuf, name, scene->r.imtype, scene->r.subimtype, scene->r.quality);
if(ok==0) {
printf("Render error: cannot save %s\n", name);
@@ -2540,9 +2542,9 @@ static void do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh)
if(ok && scene->r.imtype==R_OPENEXR && (scene->r.subimtype & R_PREVIEW_JPG)) {
if(BLI_testextensie(name, ".exr"))
name[strlen(name)-4]= 0;
- BKE_add_image_extension(name, R_JPEG90);
+ BKE_add_image_extension(scene, name, R_JPEG90);
ibuf->depth= 24;
- BKE_write_ibuf(ibuf, name, R_JPEG90, scene->r.subimtype, scene->r.quality);
+ BKE_write_ibuf(scene, ibuf, name, R_JPEG90, scene->r.subimtype, scene->r.quality);
printf("\nSaved: %s", name);
}
@@ -2577,7 +2579,7 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra)
if (mh->get_next_frame) {
while (!(G.afbreek == 1)) {
- int nf = mh->get_next_frame();
+ int nf = mh->get_next_frame(&re->r);
if (nf >= 0 && nf >= scene->r.sfra && nf <= scene->r.efra) {
scene->r.cfra = re->r.cfra = nf;
@@ -2615,7 +2617,7 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra)
nfra+= tfra;
if (scene->r.mode & (R_NO_OVERWRITE | R_TOUCH) ) {
- BKE_makepicstring(name, scene->r.pic, scene->r.cfra, scene->r.imtype);
+ BKE_makepicstring(scene, name, scene->r.pic, scene->r.cfra, scene->r.imtype);
}
if (scene->r.mode & R_NO_OVERWRITE && BLI_exist(name)) {
diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c
index 13be83a6b7b..a54afafc8c9 100644
--- a/source/blender/render/intern/source/rayshade.c
+++ b/source/blender/render/intern/source/rayshade.c
@@ -1536,8 +1536,8 @@ static void ray_ao_qmc(ShadeInput *shi, float *shadfac)
float maxdist = R.wrld.aodist;
float fac=0.0f, prev=0.0f;
- float adapt_thresh = G.scene->world->ao_adapt_thresh;
- float adapt_speed_fac = G.scene->world->ao_adapt_speed_fac;
+ float adapt_thresh = R.wrld.ao_adapt_thresh;
+ float adapt_speed_fac = R.wrld.ao_adapt_speed_fac;
int samples=0;
int max_samples = R.wrld.aosamp*R.wrld.aosamp;
@@ -1684,7 +1684,7 @@ static void ray_ao_spheresamp(ShadeInput *shi, float *shadfac)
/* bias prevents smoothed faces to appear flat */
if(shi->vlr->flag & R_SMOOTH) {
- bias= G.scene->world->aobias;
+ bias= R.wrld.aobias;
nrm= shi->vn;
}
else {
diff --git a/source/blender/render/intern/source/texture.c b/source/blender/render/intern/source/texture.c
index 61e9d9cf412..19973e972d2 100644
--- a/source/blender/render/intern/source/texture.c
+++ b/source/blender/render/intern/source/texture.c
@@ -79,11 +79,9 @@ extern struct Render R;
-/* note; this is called WITH RENDER IS NULL in src/drawview.c for animated
- background image, option should move to kernel */
void init_render_texture(Render *re, Tex *tex)
{
- int cfra= G.scene->r.cfra;
+ int cfra= re->scene->r.cfra;
if(re) cfra= re->r.cfra;
@@ -95,7 +93,7 @@ void init_render_texture(Render *re, Tex *tex)
if(tex->type==TEX_PLUGIN) {
if(tex->plugin && tex->plugin->doit) {
if(tex->plugin->cfra) {
- *(tex->plugin->cfra)= frame_to_float(cfra);
+ *(tex->plugin->cfra)= frame_to_float(re->scene, cfra);
}
}
}
@@ -718,7 +716,7 @@ static int evalnodes(Tex *tex, float *texvec, TexResult *texres, short thread, s
short rv = TEX_INT;
bNodeTree *nodes = tex->nodetree;
- ntreeTexExecTree(nodes, texres, texvec, 0, thread, tex, which_output);
+ ntreeTexExecTree(nodes, texres, texvec, 0, thread, tex, which_output, R.r.cfra);
if(texres->nor) rv |= TEX_NOR;
rv |= TEX_RGB;