diff options
Diffstat (limited to 'source/blender/render/intern/source')
-rw-r--r-- | source/blender/render/intern/source/bake_api.c | 4 | ||||
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 23 | ||||
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 4 | ||||
-rw-r--r-- | source/blender/render/intern/source/rendercore.c | 38 | ||||
-rw-r--r-- | source/blender/render/intern/source/shadeinput.c | 6 | ||||
-rw-r--r-- | source/blender/render/intern/source/sunsky.c | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/zbuf.c | 1 |
7 files changed, 39 insertions, 39 deletions
diff --git a/source/blender/render/intern/source/bake_api.c b/source/blender/render/intern/source/bake_api.c index 73424a4e846..588c327ab91 100644 --- a/source/blender/render/intern/source/bake_api.c +++ b/source/blender/render/intern/source/bake_api.c @@ -684,6 +684,10 @@ void RE_bake_pixels_populate( int mat_nr = mp->mat_nr; int image_id = bake_images->lookup[mat_nr]; + if (image_id < 0) { + continue; + } + bd.bk_image = &bake_images->data[image_id]; bd.primitive_id = ++p_id; 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/pipeline.c b/source/blender/render/intern/source/pipeline.c index 929eae495cf..e078365e1ed 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -723,6 +723,8 @@ void RE_InitState(Render *re, Render *source, RenderData *rd, re->r.size = source->r.size; } + re_init_resolution(re, source, winx, winy, disprect); + /* disable border if it's a full render anyway */ if (re->r.border.xmin == 0.0f && re->r.border.xmax == 1.0f && re->r.border.ymin == 0.0f && re->r.border.ymax == 1.0f) @@ -730,8 +732,6 @@ void RE_InitState(Render *re, Render *source, RenderData *rd, re->r.mode &= ~R_BORDER; } - re_init_resolution(re, source, winx, winy, disprect); - if (re->rectx < 1 || re->recty < 1 || (BKE_imtype_is_movie(rd->im_format.imtype) && (re->rectx < 16 || re->recty < 16) )) { 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/shadeinput.c b/source/blender/render/intern/source/shadeinput.c index 20602314526..b4ff5f52fcf 100644 --- a/source/blender/render/intern/source/shadeinput.c +++ b/source/blender/render/intern/source/shadeinput.c @@ -292,12 +292,8 @@ void shade_input_set_triangle_i(ShadeInput *shi, ObjectInstanceRen *obi, VlakRen } } -/* note, facenr declared volatile due to over-eager -O2 optimization's - * on cygwin (particularly -frerun-cse-after-loop) - */ - /* copy data from face to ShadeInput, scanline case */ -void shade_input_set_triangle(ShadeInput *shi, volatile int obi, volatile int facenr, int UNUSED(normal_flip)) +void shade_input_set_triangle(ShadeInput *shi, int obi, int facenr, int UNUSED(normal_flip)) { if (facenr > 0) { shi->obi = &R.objectinstance[obi]; 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) |