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/blenkernel/intern/texture.c')
-rw-r--r--source/blender/blenkernel/intern/texture.c50
1 files changed, 43 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index 8afa83b7fa7..32856145727 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -1349,7 +1349,7 @@ void do_material_tex()
{
Object *ob;
Material *mat_col, *mat_colspec, *mat_colmir, *mat_ref;
- Material *mat_spec, *mat_har, *mat_emit, *mat_alpha;
+ Material *mat_spec, *mat_har, *mat_emit, *mat_alpha, *mat_ray_mirr, *mat_translu;
MTex *mtex;
Tex *tex;
float *co = NULL, *dx = NULL, *dy = NULL, fact,
@@ -1359,7 +1359,7 @@ void do_material_tex()
/* here: test flag if there's a tex (todo) */
- mat_col=mat_colspec=mat_colmir=mat_ref=mat_spec=mat_har=mat_emit=mat_alpha= R.mat;
+ mat_col=mat_colspec=mat_colmir=mat_ref=mat_spec=mat_har=mat_emit=mat_alpha=mat_ray_mirr=mat_translu= R.mat;
for(tex_nr=0; tex_nr<8; tex_nr++) {
@@ -1612,11 +1612,17 @@ void do_material_tex()
}
if(mtex->mapto & MAP_COLMIR) {
if(mtex->blendtype==MTEX_BLEND) {
- R.refcol[0]= fact + facm*R.refcol[0];
-
- R.refcol[1]= fact*Tr + facm*R.refcol[1];
- R.refcol[2]= fact*Tg + facm*R.refcol[2];
- R.refcol[3]= fact*Tb + facm*R.refcol[3];
+ // exception for envmap only
+ if(tex->type==TEX_ENVMAP) {
+ R.refcol[0]= fact + facm*R.refcol[0];
+ R.refcol[1]= fact*Tr + facm*R.refcol[1];
+ R.refcol[2]= fact*Tg + facm*R.refcol[2];
+ R.refcol[3]= fact*Tb + facm*R.refcol[3];
+ } else {
+ R.matren->mirr= fact*Tr + facm*mat_colmir->mirr;
+ R.matren->mirg= fact*Tg + facm*mat_colmir->mirg;
+ R.matren->mirb= fact*Tb + facm*mat_colmir->mirb;
+ }
}
else if(mtex->blendtype==MTEX_MUL) {
R.matren->mirr= (facm+fact*Tr)*mat_colmir->mirr;
@@ -1735,6 +1741,36 @@ void do_material_tex()
}
mat_har= R.matren;
}
+ if(mtex->mapto & MAP_RAYMIRR) {
+ if(mtex->maptoneg & MAP_RAYMIRR) {factt= facm; facmm= fact;}
+ else {factt= fact; facmm= facm;}
+
+ if(mtex->blendtype==MTEX_BLEND)
+ R.matren->ray_mirror= factt*mtex->def_var+ facmm*mat_ray_mirr->ray_mirror;
+ else if(mtex->blendtype==MTEX_MUL)
+ R.matren->ray_mirror= (facmul+factt)*mat_ray_mirr->ray_mirror;
+ else {
+ R.matren->ray_mirror= factt+mat_ray_mirr->ray_mirror;
+ if(R.matren->ray_mirror<0.0) R.matren->ray_mirror= 0.0;
+ else if(R.matren->ray_mirror>1.0) R.matren->ray_mirror= 1.0;
+ }
+ mat_ray_mirr= R.matren;
+ }
+ if(mtex->mapto & MAP_TRANSLU) {
+ if(mtex->maptoneg & MAP_TRANSLU) {factt= facm; facmm= fact;}
+ else {factt= fact; facmm= facm;}
+
+ if(mtex->blendtype==MTEX_BLEND)
+ R.matren->translucency= factt*mtex->def_var+ facmm*mat_translu->translucency;
+ else if(mtex->blendtype==MTEX_MUL)
+ R.matren->translucency= (facmul+factt)*mat_translu->translucency;
+ else {
+ R.matren->translucency= factt+mat_translu->translucency;
+ if(R.matren->translucency<0.0) R.matren->translucency= 0.0;
+ else if(R.matren->translucency>1.0) R.matren->translucency= 1.0;
+ }
+ mat_translu= R.matren;
+ }
}
}
}