diff options
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/include/render_types.h | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 23 | ||||
-rw-r--r-- | source/blender/render/intern/source/rendercore.c | 38 | ||||
-rw-r--r-- | source/blender/render/intern/source/sunsky.c | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/zbuf.c | 1 |
5 files changed, 33 insertions, 33 deletions
diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index f0323340899..f9942bef61f 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -335,7 +335,7 @@ typedef struct ObjectRen { char (*mcol)[MAX_CUSTOMDATA_LAYER_NAME]; int actmtface, actmcol, bakemtface; - char tangent_mask; /* which tangent layer should be calculated */ + short tangent_mask; /* which tangent layer should be calculated */ float obmat[4][4]; /* only used in convertblender.c, for instancing */ diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 41ff8e046e7..9633d95855e 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -3439,10 +3439,9 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset) if (need_nmap_tangent_concrete || need_tangent) { int uv_start = CustomData_get_layer_index(&dm->faceData, CD_MTFACE); int uv_index = CustomData_get_named_layer_index(&dm->faceData, CD_MTFACE, layer->name); - BLI_assert(uv_start >= 0 && uv_index >= 0); - if ((uv_start < 0 || uv_index < 0)) - continue; - int n = uv_index - uv_start; + + /* if there are no UVs, orco tangents are in first slot */ + int n = (uv_start >= 0 && uv_index >= 0) ? uv_index - uv_start : 0; const float *tangent = (const float *) layer->data; float *ftang = RE_vlakren_get_nmap_tangent(obr, vlr, n, true); @@ -4658,14 +4657,22 @@ static void add_render_object(Render *re, Object *ob, Object *par, DupliObject * index= (dob)? dob->persistent_id[0]: 0; + /* It seems that we may generate psys->renderdata recursively in some nasty intricated cases of + * several levels of bupliobject (see T51524). + * For now, basic rule is, do not restore psys if it was already in 'render state'. + * Another, more robust solution could be to add some reference counting to that renderdata... */ + bool psys_has_renderdata = false; + /* the emitter has to be processed first (render levels of modifiers) */ /* so here we only check if the emitter should be rendered */ if (ob->particlesystem.first) { show_emitter= 0; for (psys=ob->particlesystem.first; psys; psys=psys->next) { show_emitter += psys->part->draw & PART_DRAW_EMITTER; - if (!(re->r.scemode & R_VIEWPORT_PREVIEW)) + if (!(re->r.scemode & R_VIEWPORT_PREVIEW)) { + psys_has_renderdata |= (psys->renderdata != NULL); psys_render_set(ob, psys, re->viewmat, re->winmat, re->winx, re->winy, timeoffset); + } } /* if no psys has "show emitter" selected don't render emitter */ @@ -4701,12 +4708,6 @@ static void add_render_object(Render *re, Object *ob, Object *par, DupliObject * if (ob->particlesystem.first) { psysindex= 1; for (psys=ob->particlesystem.first; psys; psys=psys->next, psysindex++) { - /* It seems that we may generate psys->renderdata recursively in some nasty intricated cases of - * several levels of bupliobject (see T51524). - * For now, basic rule is, do not restore psys if it was already in 'render state'. - * Another, more robust solution could be to add some reference counting to that renderdata... */ - const bool psys_has_renderdata = (psys->renderdata != NULL); - if (!psys_check_enabled(ob, psys, G.is_rendering)) continue; diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index 59c7ea85c1d..77f399d08d1 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -464,48 +464,48 @@ static void add_filt_passes(RenderLayer *rl, int curmask, int rectx, int offset, float *fp, *col= NULL; int pixsize= 3; - if(STREQ(rpass->name, RE_PASSNAME_COMBINED)) { + if (STREQ(rpass->name, RE_PASSNAME_COMBINED)) { add_filt_fmask(curmask, shr->combined, rpass->rect + 4*offset, rectx); } - else if(STREQ(rpass->name, RE_PASSNAME_Z)) { + else if (STREQ(rpass->name, RE_PASSNAME_Z)) { fp = rpass->rect + offset; *fp = shr->z; } - else if(STREQ(rpass->name, RE_PASSNAME_RGBA)) { + else if (STREQ(rpass->name, RE_PASSNAME_RGBA)) { col = shr->col; pixsize = 4; } - else if(STREQ(rpass->name, RE_PASSNAME_EMIT)) { + else if (STREQ(rpass->name, RE_PASSNAME_EMIT)) { col = shr->emit; } - else if(STREQ(rpass->name, RE_PASSNAME_DIFFUSE)) { + else if (STREQ(rpass->name, RE_PASSNAME_DIFFUSE)) { col = shr->diff; } - else if(STREQ(rpass->name, RE_PASSNAME_SPEC)) { + else if (STREQ(rpass->name, RE_PASSNAME_SPEC)) { col = shr->spec; } - else if(STREQ(rpass->name, RE_PASSNAME_SHADOW)) { + else if (STREQ(rpass->name, RE_PASSNAME_SHADOW)) { col = shr->shad; } - else if(STREQ(rpass->name, RE_PASSNAME_AO)) { + else if (STREQ(rpass->name, RE_PASSNAME_AO)) { col = shr->ao; } - else if(STREQ(rpass->name, RE_PASSNAME_ENVIRONMENT)) { + else if (STREQ(rpass->name, RE_PASSNAME_ENVIRONMENT)) { col = shr->env; } - else if(STREQ(rpass->name, RE_PASSNAME_INDIRECT)) { + else if (STREQ(rpass->name, RE_PASSNAME_INDIRECT)) { col = shr->indirect; } - else if(STREQ(rpass->name, RE_PASSNAME_REFLECT)) { + else if (STREQ(rpass->name, RE_PASSNAME_REFLECT)) { col = shr->refl; } - else if(STREQ(rpass->name, RE_PASSNAME_REFRACT)) { + else if (STREQ(rpass->name, RE_PASSNAME_REFRACT)) { col = shr->refr; } - else if(STREQ(rpass->name, RE_PASSNAME_NORMAL)) { + else if (STREQ(rpass->name, RE_PASSNAME_NORMAL)) { col = shr->nor; } - else if(STREQ(rpass->name, RE_PASSNAME_UV)) { + else if (STREQ(rpass->name, RE_PASSNAME_UV)) { /* box filter only, gauss will screwup UV too much */ if (shi->totuv) { float mult = (float)count_mask(curmask)/(float)R.osa; @@ -515,7 +515,7 @@ static void add_filt_passes(RenderLayer *rl, int curmask, int rectx, int offset, fp[2]+= mult; } } - else if(STREQ(rpass->name, RE_PASSNAME_INDEXOB)) { + else if (STREQ(rpass->name, RE_PASSNAME_INDEXOB)) { /* no filter */ if (shi->vlr) { fp = rpass->rect + offset; @@ -523,7 +523,7 @@ static void add_filt_passes(RenderLayer *rl, int curmask, int rectx, int offset, *fp = (float)shi->obr->ob->index; } } - else if(STREQ(rpass->name, RE_PASSNAME_INDEXMA)) { + else if (STREQ(rpass->name, RE_PASSNAME_INDEXMA)) { /* no filter */ if (shi->vlr) { fp = rpass->rect + offset; @@ -531,12 +531,12 @@ static void add_filt_passes(RenderLayer *rl, int curmask, int rectx, int offset, *fp = (float)shi->mat->index; } } - else if(STREQ(rpass->name, RE_PASSNAME_MIST)) { + else if (STREQ(rpass->name, RE_PASSNAME_MIST)) { /* */ col = &shr->mist; pixsize = 1; } - else if(STREQ(rpass->name, RE_PASSNAME_VECTOR)) { + else if (STREQ(rpass->name, RE_PASSNAME_VECTOR)) { /* add minimum speed in pixel, no filter */ fp = rpass->rect + 4*offset; if ( (ABS(shr->winspeed[0]) + ABS(shr->winspeed[1]))< (ABS(fp[0]) + ABS(fp[1])) ) { @@ -548,7 +548,7 @@ static void add_filt_passes(RenderLayer *rl, int curmask, int rectx, int offset, fp[3] = shr->winspeed[3]; } } - else if(STREQ(rpass->name, RE_PASSNAME_RAYHITS)) { + else if (STREQ(rpass->name, RE_PASSNAME_RAYHITS)) { /* */ col = shr->rayhits; pixsize= 4; diff --git a/source/blender/render/intern/source/sunsky.c b/source/blender/render/intern/source/sunsky.c index d4e53eb7305..f0cf29e98ca 100644 --- a/source/blender/render/intern/source/sunsky.c +++ b/source/blender/render/intern/source/sunsky.c @@ -398,7 +398,7 @@ void InitAtmosphere(struct SunSky *sunSky, float sun_intens, float mief, float r vLambda2[0] = fLambda2[0]; vLambda2[1] = fLambda2[1]; vLambda2[2] = fLambda2[2]; - + vLambda4[0] = fLambda4[0]; vLambda4[1] = fLambda4[1]; vLambda4[2] = fLambda4[2]; diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c index e497ec1a870..68707f163af 100644 --- a/source/blender/render/intern/source/zbuf.c +++ b/source/blender/render/intern/source/zbuf.c @@ -1601,7 +1601,6 @@ void zspan_scanconvert(ZSpan *zspan, void *handle, float *v1, float *v2, float * * Note: uses globals. * \param v1 start coordinate s * \param v2 target coordinate t - * \param b1 * \param b2 * \param b3 * \param a index for coordinate (x, y, or z) |