diff options
author | Miika Hamalainen <blender@miikah.org> | 2011-10-31 17:01:06 +0400 |
---|---|---|
committer | Miika Hamalainen <blender@miikah.org> | 2011-10-31 17:01:06 +0400 |
commit | 0a37e6ab976344818483df899b4fc44aedb30613 (patch) | |
tree | 4e7fb040788d18cce1e818440350940f5b397b27 /source/blender/render | |
parent | 46ae692710467d3622f58e0c5ce371674a6a7d9b (diff) |
Dynamic Paint:
* Redesigned alpha blending and paint drying algorithms. Now it gives much better results when using low brush alpha or when surface has initial color set.
* Fix: "Slow" dissolve/dry was scaled incorrect when using substeps. Also adjusted time to better match non-"slow" setting.
* Fixed possible issues when using image textured brush.
* Fix: particle brush panel was no longer visible since last commit.
* Adjusted default surface values.
* Some more code cleanup.
Diffstat (limited to 'source/blender/render')
4 files changed, 15 insertions, 15 deletions
diff --git a/source/blender/render/intern/include/texture.h b/source/blender/render/intern/include/texture.h index ac4340f88a6..d7d0a7e086d 100644 --- a/source/blender/render/intern/include/texture.h +++ b/source/blender/render/intern/include/texture.h @@ -65,7 +65,7 @@ struct ImBuf; void do_halo_tex(struct HaloRen *har, float xn, float yn, float col_r[4]); void do_sky_tex(const float rco[3], float lo[3], const float dxyview[2], float hor[3], float zen[3], float *blend, int skyflag, short thread); -void do_material_tex(struct ShadeInput *shi); +void do_material_tex(struct ShadeInput *shi, struct Render *re); void do_lamp_tex(LampRen *la, const float lavec[3], struct ShadeInput *shi, float col_r[3], int effect); void do_volume_tex(struct ShadeInput *shi, const float xyz[3], int mapto_flag, float col[3], float *val, struct Render *re); diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 5968a6e64f8..e6ecfa0b9e2 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -2290,7 +2290,7 @@ static void displace_render_vert(Render *re, ObjectRen *obr, ShadeInput *shi, Ve shi->displace[0]= shi->displace[1]= shi->displace[2]= 0.0; - do_material_tex(shi); + do_material_tex(shi, re); //printf("no=%f, %f, %f\nbefore co=%f, %f, %f\n", vr->n[0], vr->n[1], vr->n[2], //vr->co[0], vr->co[1], vr->co[2]); diff --git a/source/blender/render/intern/source/render_texture.c b/source/blender/render/intern/source/render_texture.c index c24dbbb5c7f..0c1e9096940 100644 --- a/source/blender/render/intern/source/render_texture.c +++ b/source/blender/render/intern/source/render_texture.c @@ -2146,7 +2146,7 @@ static int ntap_bump_compute(NTapBump *ntap_bump, ShadeInput *shi, MTex *mtex, T return rgbnor; } -void do_material_tex(ShadeInput *shi) +void do_material_tex(ShadeInput *shi, Render *re) { CompatibleBump compat_bump; NTapBump ntap_bump; @@ -2164,7 +2164,7 @@ void do_material_tex(ShadeInput *shi) compatible_bump_init(&compat_bump); ntap_bump_init(&ntap_bump); - if (R.r.scemode & R_NO_TEX) return; + if (re->r.scemode & R_NO_TEX) return; /* here: test flag if there's a tex (todo) */ for(tex_nr=0; tex_nr<MAX_MTEX; tex_nr++) { @@ -2400,7 +2400,7 @@ void do_material_tex(ShadeInput *shi) float len= normalize_v3(texres.nor); // can be optimized... (ton) mul_mat3_m4_v3(shi->obr->ob->obmat, texres.nor); - mul_mat3_m4_v3(R.viewmat, texres.nor); + mul_mat3_m4_v3(re->viewmat, texres.nor); normalize_v3(texres.nor); mul_v3_fl(texres.nor, len); } @@ -2433,7 +2433,7 @@ void do_material_tex(ShadeInput *shi) ImBuf *ibuf = BKE_image_get_ibuf(ima, &tex->iuser); /* don't linearize float buffers, assumed to be linear */ - if (ibuf && !(ibuf->rect_float) && R.r.color_mgt_flag & R_COLOR_MANAGEMENT) + if (ibuf && !(ibuf->rect_float) && re->r.color_mgt_flag & R_COLOR_MANAGEMENT) srgb_to_linearrgb_v3_v3(tcol, tcol); } @@ -2503,12 +2503,12 @@ void do_material_tex(ShadeInput *shi) if(mtex->normapspace == MTEX_NSPACE_CAMERA); else if(mtex->normapspace == MTEX_NSPACE_WORLD) { - mul_mat3_m4_v3(R.viewmat, nor); + mul_mat3_m4_v3(re->viewmat, nor); } else if(mtex->normapspace == MTEX_NSPACE_OBJECT) { if(shi->obr && shi->obr->ob) mul_mat3_m4_v3(shi->obr->ob->obmat, nor); - mul_mat3_m4_v3(R.viewmat, nor); + mul_mat3_m4_v3(re->viewmat, nor); } normalize_v3(nor); @@ -2656,9 +2656,9 @@ void do_material_tex(ShadeInput *shi) if(shi->amb<0.0f) shi->amb= 0.0f; else if(shi->amb>1.0f) shi->amb= 1.0f; - shi->ambr= shi->amb*R.wrld.ambr; - shi->ambg= shi->amb*R.wrld.ambg; - shi->ambb= shi->amb*R.wrld.ambb; + shi->ambr= shi->amb*re->wrld.ambr; + shi->ambg= shi->amb*re->wrld.ambg; + shi->ambb= shi->amb*re->wrld.ambb; } } } @@ -3634,6 +3634,7 @@ void RE_sample_material_color(Material *mat, float color[3], float *alpha, const MVert *mvert; float uv[3], normal[3]; ShadeInput shi = {0}; + Render re = {0}; /* Get face data */ mvert = orcoDm->getVertArray(orcoDm); @@ -3707,7 +3708,7 @@ void RE_sample_material_color(Material *mat, float color[3], float *alpha, const shi.alpha = mat->alpha; /* do texture */ - do_material_tex(&shi); + do_material_tex(&shi, &re); /* apply result */ color[0] = shi.r; @@ -3717,7 +3718,6 @@ void RE_sample_material_color(Material *mat, float color[3], float *alpha, const } else if (mat->material_type == MA_TYPE_VOLUME) { ObjectInstanceRen obi = {0}; - Render re = {0}; obi.ob = ob; shi.obi = &obi; unit_m4(re.viewinv); diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c index d7ba61dc4d7..e259c37f280 100644 --- a/source/blender/render/intern/source/shadeoutput.c +++ b/source/blender/render/intern/source/shadeoutput.c @@ -879,7 +879,7 @@ void shade_color(ShadeInput *shi, ShadeResult *shr) } if(ma->texco) - do_material_tex(shi); + do_material_tex(shi, &R); if(ma->fresnel_tra!=0.0f) shi->alpha*= fresnel_fac(shi->view, shi->vn, ma->fresnel_tra_i, ma->fresnel_tra); @@ -1675,7 +1675,7 @@ void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr) shi->b= shi->b*neg_alpha + shi->vcol[2]*shi->vcol[3]; } if(ma->texco){ - do_material_tex(shi); + do_material_tex(shi, &R); if (!(shi->mode & MA_TRANSP)) shi->alpha = 1.0f; } |