Page Menu
Home
Search
Configure Global Search
Log In
Files
F15476
ma_transp-rev35281.diff
Public
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Authored By
Ervin Weber (lusque)
Nov 13 2013, 3:11 PM
Size
6 KB
Subscribers
None
ma_transp-rev35281.diff
View Options
Index: release/scripts/ui/properties_material.py
===================================================================
--- release/scripts/ui/properties_material.py (revision 35281)
+++ release/scripts/ui/properties_material.py (working copy)
@@ -373,11 +373,13 @@
row.prop(mat, "transparency_method", expand=True)
split = layout.split()
+ split.active = base_mat.use_transparency # LUSQUE: mat.use_transparency
col = split.column()
col.prop(mat, "alpha")
row = col.row()
- row.active = base_mat.use_transparency and (not mat.use_shadeless)
+ #row.active = base_mat.use_transparency and (not mat.use_shadeless) #LUSQUE
+ row.active = (mat.transparency_method != 'NONE') and (not mat.use_shadeless)
row.prop(mat, "specular_alpha", text="Specular")
col = split.column()
Index: source/blender/blenloader/intern/readfile.c
===================================================================
--- source/blender/blenloader/intern/readfile.c (revision 35281)
+++ source/blender/blenloader/intern/readfile.c (working copy)
@@ -11482,6 +11482,29 @@
/* put compatibility code here until next subversion bump */
{
+ /* LUSQUE: 2.5x material transparency*/
+ Material *mat;
+ int tex_nr, transp_tex;
+
+ for(mat = main->mat.first; mat; mat = mat->id.next){
+ if(!(mat->mode & MA_TRANSP) && !(mat->material_type & MA_TYPE_VOLUME) && (mat->mode &(MA_ZTRANSP|MA_RAYTRANSP))){
+
+ transp_tex= 0;
+
+ for(tex_nr=0; tex_nr<MAX_MTEX; tex_nr++){
+ if(!mat->mtex[tex_nr]) continue;
+ if(mat->mtex[tex_nr]->mapto & MAP_ALPHA) transp_tex= 1;
+ }
+
+ if(mat->alpha < 1.0f || mat->fresnel_tra > 0.0f || transp_tex){
+ mat->mode |= MA_TRANSP;
+ mat->mode &= ~(MA_ZTRANSP|MA_RAYTRANSP);
+ }
+ }
+ }
+ }
+
+ {
bScreen *sc;
Brush *brush;
Index: source/blender/makesrna/intern/rna_material.c
===================================================================
--- source/blender/makesrna/intern/rna_material.c (revision 35281)
+++ source/blender/makesrna/intern/rna_material.c (working copy)
@@ -1567,6 +1567,7 @@
{MA_TYPE_HALO, "HALO", 0, "Halo", "Render object as halo particles"},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem transparency_items[] = {
+ {0, "MASK", 0, "Mask", "Mask the foreground"}, /* LUSQUE: MASK = 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 35281)
+++ source/blender/render/intern/source/convertblender.c (working copy)
@@ -3369,7 +3369,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 disable total transparency*/
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 35281)
+++ source/blender/render/intern/source/rayshade.c (working copy)
@@ -762,7 +762,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_l & (MA_ZTRANSP | MA_RAYTRANSP))) { /* LUSQUE: Z+RAY transparency only (no NONE transp) */
float nf, f, refract[3], tracol[4];
tracol[0]= shi.r;
Index: source/blender/render/intern/source/shadeoutput.c
===================================================================
--- source/blender/render/intern/source/shadeoutput.c (revision 35281)
+++ source/blender/render/intern/source/shadeoutput.c (working copy)
@@ -878,7 +878,9 @@
if(ma->fresnel_tra!=0.0f)
shi->alpha*= fresnel_fac(shi->view, shi->vn, ma->fresnel_tra_i, ma->fresnel_tra);
-
+
+ if (!(ma->mode & MA_TRANSP)) shi->alpha= 1.0f; /*LUSQUE: disable MA_FACETEXTURE_ALPHA, transp tex, fresnel, transp shadow (call from rayshade.c)*/
+
shr->diff[0]= shi->r;
shr->diff[1]= shi->g;
shr->diff[2]= shi->b;
@@ -1540,7 +1542,8 @@
}
if(ir>0.0f) {
accum/= ir;
- shr->alpha= (shi->mat->alpha)*(1.0f-accum);
+ /*LUSQUE: onlyshadow: why shi->mat->alpha instead of shi->alpha?*/
+ shr->alpha= (shi->mat->mode & MA_TRANSP) ? (shi->mat->alpha)*(1.0f-accum) : 1.0f-accum;
}
else shr->alpha= 0.f;
}
@@ -1583,6 +1586,8 @@
memset(shr, 0, sizeof(ShadeResult));
+ if(!(ma->mode & MA_TRANSP)) shi->alpha = 1.0f; /* LUSQUE: disable alpha*/
+
/* separate loop */
if(ma->mode & MA_ONLYSHADOW) {
shade_lamp_loop_only_shadow(shi, shr);
@@ -1599,10 +1604,12 @@
shi->g= shi->vcol[1];
shi->b= shi->vcol[2];
if(ma->mode & (MA_FACETEXTURE_ALPHA))
- shi->alpha= shi->vcol[3];
+ shi->alpha= (ma->mode & MA_TRANSP) ? shi->vcol[3] : 1.0f; /*LUSQUE: MA_FACETEXTURE_ALPHA*/
}
- if(ma->texco)
+ 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;
@@ -1757,11 +1764,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: disable fresnel transparency*/
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: disable specular transparency*/
if(shi->spectra!=0.0f) {
float t = MAX3(shr->spec[0], shr->spec[1], shr->spec[2]);
t *= shi->spectra;
@@ -1831,7 +1838,7 @@
shr->combined[0] *= obcol[0];
shr->combined[1] *= obcol[1];
shr->combined[2] *= obcol[2];
- shr->alpha *= obcol[3];
+ if (ma->mode & MA_TRANSP) shr->alpha *= obcol[3];/*LUSQUE: MA_OBCOLOR*/
}
}
File Metadata
Details
Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
1f/a3/5872ee82cf61377a4c544b686cac
Event Timeline
Log In to Comment