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:
authorMiika Hamalainen <blender@miikah.org>2011-10-31 17:01:06 +0400
committerMiika Hamalainen <blender@miikah.org>2011-10-31 17:01:06 +0400
commit0a37e6ab976344818483df899b4fc44aedb30613 (patch)
tree4e7fb040788d18cce1e818440350940f5b397b27 /source/blender/render
parent46ae692710467d3622f58e0c5ce371674a6a7d9b (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')
-rw-r--r--source/blender/render/intern/include/texture.h2
-rw-r--r--source/blender/render/intern/source/convertblender.c2
-rw-r--r--source/blender/render/intern/source/render_texture.c22
-rw-r--r--source/blender/render/intern/source/shadeoutput.c4
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;
}