Page MenuHome

ma_transp_alpha2.diff

Authored By
Ervin Weber (lusque)
Nov 13 2013, 3:11 PM
Size
5 KB
Subscribers
None

ma_transp_alpha2.diff

Index: release/scripts/ui/properties_material.py
===================================================================
--- release/scripts/ui/properties_material.py (revision 34263)
+++ release/scripts/ui/properties_material.py (working copy)
@@ -318,15 +318,16 @@
rayt = mat.raytrace_transparency
row = layout.row()
- row.active = mat.use_transparency and (not mat.use_shadeless)
+ row.active = mat.use_transparency
row.prop(mat, "transparency_method", expand=True)
split = layout.split()
+ split.active = mat.use_transparency
col = split.column()
col.prop(mat, "alpha")
row = col.row()
- row.active = mat.use_transparency and (not mat.use_shadeless)
+ row.active = (mat.transparency_method != 'NONE') and (not mat.use_shadeless)
row.prop(mat, "specular_alpha", text="Specular")
col = split.column()
@@ -903,4 +904,4 @@
pass
if __name__ == "__main__":
- register()
+ register()
\ No newline at end of file
Index: source/blender/blenloader/intern/readfile.c
===================================================================
--- source/blender/blenloader/intern/readfile.c (revision 34263)
+++ source/blender/blenloader/intern/readfile.c (working copy)
@@ -11274,6 +11274,20 @@
}
}
}
+
+ {
+ /* LUSQUE: 2.5x material transparency*/
+ Material *mat;
+
+ for(mat = main->mat.first; mat; mat = mat->id.next){
+ if(!(mat->mode & MA_TRANSP)){
+ if(mat->alpha < 1.0f || mat->fresnel_tra > 0.0f){
+ mat->mode |= MA_TRANSP;
+ mat->mode &= ~(MA_ZTRANSP|MA_RAYTRANSP);
+ }
+ }
+ }
+ }
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
/* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */
Index: source/blender/makesrna/intern/rna_material.c
===================================================================
--- source/blender/makesrna/intern/rna_material.c (revision 34263)
+++ source/blender/makesrna/intern/rna_material.c (working copy)
@@ -1539,6 +1539,7 @@
{MA_TYPE_HALO, "HALO", 0, "Halo", "Render object as halo particles"},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem transparency_items[] = {
+ {0, "NONE", 0, "None", "Masking the foreground"}, /* LUSQUE: None = old material beavior*/
{MA_ZTRANSP, "Z_TRANSPARENCY", 0, "Z Transparency", "Use alpha buffer for transparent faces"},
{MA_RAYTRANSP, "RAYTRACE", 0, "Raytrace", "Use raytracing for transparent refraction rendering"},
{0, NULL, 0, NULL, NULL}};
Index: source/blender/render/intern/source/convertblender.c
===================================================================
--- source/blender/render/intern/source/convertblender.c (revision 34263)
+++ source/blender/render/intern/source/convertblender.c (working copy)
@@ -3255,7 +3255,7 @@
/* test for 100% transparant */
ok= 1;
- if(ma->alpha==0.0f && ma->spectra==0.0f && ma->filter==0.0f) {
+ if(ma->alpha==0.0f && ma->spectra==0.0f && ma->filter==0.0f && (ma->mode & MA_TRANSP)) { /*LUSQUE only if MA_TRANSPed*/
ok= 0;
/* texture on transparency? */
for(a=0; a<MAX_MTEX; a++) {
Index: source/blender/render/intern/source/rayshade.c
===================================================================
--- source/blender/render/intern/source/rayshade.c (revision 34263)
+++ source/blender/render/intern/source/rayshade.c (working copy)
@@ -764,7 +764,7 @@
if(depth>0) {
float fr, fg, fb, f, f1;
- if((shi.mat->mode_l & MA_TRANSP) && shr.alpha < 1.0f) {
+ if((shi.mat->mode_l & MA_TRANSP) && shr.alpha < 1.0f && (shi.mat->mode & (MA_ZTRANSP | MA_RAYTRANSP))) { /* LUSQUE: only if transp not NONE */
float nf, f, refract[3], tracol[4];
tracol[0]= shi.r;
Index: source/blender/render/intern/source/shadeinput.c
===================================================================
--- source/blender/render/intern/source/shadeinput.c (revision 34263)
+++ source/blender/render/intern/source/shadeinput.c (working copy)
@@ -109,7 +109,8 @@
float fac= shi->translucency;
shade_input_init_material(shi);
-
+ if(!(shi->mat->mode & MA_TRANSP)) shi->alpha = 1.0f; /* LUSQUE: alpha only if MA_TRANSPed*/
+
VECCOPY(shi->vn, shi->vno);
VECMUL(shi->vn, -1.0f);
VECMUL(shi->facenor, -1.0f);
@@ -173,6 +174,7 @@
shade_volume_outside(shi, shr);
}
} else { /* MA_TYPE_SURFACE, MA_TYPE_WIRE */
+ if(!(shi->mat->mode & MA_TRANSP)) shi->alpha = 1.0f; /* LUSQUE: alpha only if MA_TRANSPed*/
shade_material_loop(shi, shr);
}
}
Index: source/blender/render/intern/source/shadeoutput.c
===================================================================
--- source/blender/render/intern/source/shadeoutput.c (revision 34263)
+++ source/blender/render/intern/source/shadeoutput.c (working copy)
@@ -1598,6 +1598,7 @@
}
if(ma->texco)
do_material_tex(shi);
+ if (!(ma->mode & MA_TRANSP)) shi->alpha = 1.0f; /* LUSQUE: disable transparent texture*/
shr->col[0]= shi->r*shi->alpha;
shr->col[1]= shi->g*shi->alpha;
@@ -1752,11 +1753,11 @@
/* alpha in end, spec can influence it */
if(passflag & (SCE_PASS_COMBINED)) {
- if(ma->fresnel_tra!=0.0f)
+ if((ma->fresnel_tra!=0.0f) && (shi->mode & MA_TRANSP)) /* LUSQUE: fresnel active only if material is MA_TRANSPed*/
shi->alpha*= fresnel_fac(shi->view, shi->vn, ma->fresnel_tra_i, ma->fresnel_tra);
/* note: shi->mode! */
- if(shi->mode & MA_TRANSP) {
+ if(shi->mode & MA_TRANSP && (shi->mode & (MA_ZTRANSP|MA_RAYTRANSP))) { /*LUSQUE: only if transparent rendering*/
if(shi->spectra!=0.0f) {
float t = MAX3(shr->spec[0], shr->spec[1], shr->spec[2]);
t *= shi->spectra;

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
ee/07/847f321bbea7dd05730cf5a57070

Event Timeline