[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30266] branches/render25/source/blender/ render/intern/source: Render Branch: restore behavior that when material ambient is zero, the
Brecht Van Lommel
brecht at blender.org
Tue Jul 13 14:27:44 CEST 2010
Revision: 30266
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30266
Author: blendix
Date: 2010-07-13 14:27:44 +0200 (Tue, 13 Jul 2010)
Log Message:
-----------
Render Branch: restore behavior that when material ambient is zero, the
material is also skipped in the AO pass. Not really correct but avoids
performance bottleneck rendering AO for hair.
Modified Paths:
--------------
branches/render25/source/blender/render/intern/source/material.c
branches/render25/source/blender/render/intern/source/shadeoutput.c
Modified: branches/render25/source/blender/render/intern/source/material.c
===================================================================
--- branches/render25/source/blender/render/intern/source/material.c 2010-07-13 11:50:04 UTC (rev 30265)
+++ branches/render25/source/blender/render/intern/source/material.c 2010-07-13 12:27:44 UTC (rev 30266)
@@ -664,6 +664,12 @@
return 0;
if(!((re->params.r.mode & R_RAYTRACE) || re->db.wrld.ao_gather_method == WO_LIGHT_GATHER_APPROX))
return 0;
+
+ /* some materials don't need it */
+ if(ma->mode & MA_SHLESS)
+ return 0;
+ else if(ma->amb == 0.0f && !(ma->mapto & MAP_AMB))
+ return 0;
/* if requested for passes, always render it */
if(shi->shading.passflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))
@@ -674,11 +680,13 @@
if(!(shi->shading.combinedflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT)))
return 0;
+#if 0
/* some materials don't need it */
if(ma->mode & MA_SHLESS)
return 0;
else if(ma->amb == 0.0f && !(ma->mapto & MAP_AMB))
return 0;
+#endif
return 1;
}
Modified: branches/render25/source/blender/render/intern/source/shadeoutput.c
===================================================================
--- branches/render25/source/blender/render/intern/source/shadeoutput.c 2010-07-13 11:50:04 UTC (rev 30265)
+++ branches/render25/source/blender/render/intern/source/shadeoutput.c 2010-07-13 12:27:44 UTC (rev 30266)
@@ -115,6 +115,13 @@
/***************************** AO / Env / Indirect *****************************/
+static void default_ao_env_indirect(ShadeInput *shi)
+{
+ shi->shading.ao[0]= shi->shading.ao[1]= shi->shading.ao[2]= 1.0f;
+ shi->shading.env[0]= shi->shading.env[1]= shi->shading.env[2]= 0.0f;
+ shi->shading.indirect[0]= shi->shading.indirect[1]= shi->shading.indirect[2]= 0.0f;
+}
+
void shade_ao_env_indirect(Render *re, ShadeInput *shi)
{
if(re->db.wrld.ao_gather_method == WO_LIGHT_GATHER_APPROX) {
@@ -154,11 +161,6 @@
if(ao)
ao[1]= ao[2]= ao[0];
}
- else {
- shi->shading.ao[0]= shi->shading.ao[1]= shi->shading.ao[2]= 1.0f;
- shi->shading.env[0]= shi->shading.env[1]= shi->shading.env[2]= 0.0f;
- shi->shading.indirect[0]= shi->shading.indirect[1]= shi->shading.indirect[2]= 0.0f;
- }
}
/* wrld mode was checked for */
@@ -309,6 +311,8 @@
shr->alpha= (shr->alpha + f)*f;
}
}
+ else
+ default_ao_env_indirect(shi);
}
/**************************** Color & Alpha Pass *****************************/
@@ -689,18 +693,19 @@
int post_sss= ((ma->sss_flag & MA_DIFF_SSS) && sss_pass_done(re, ma));
if(!post_sss || (passflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) {
- if(mat_need_ao_env_indirect(re, shi)) {
+ if(mat_need_ao_env_indirect(re, shi))
shade_ao_env_indirect(re, shi);
+ else
+ default_ao_env_indirect(shi);
- if(re->db.wrld.mode & WO_ENV_LIGHT)
- environment_lighting_apply(re, shi, shr);
+ if(re->db.wrld.mode & WO_ENV_LIGHT)
+ environment_lighting_apply(re, shi, shr);
- if(re->db.wrld.mode & WO_INDIRECT_LIGHT)
- indirect_lighting_apply(re, shi, shr);
+ if(re->db.wrld.mode & WO_INDIRECT_LIGHT)
+ indirect_lighting_apply(re, shi, shr);
- if(re->db.wrld.mode & WO_AMB_OCC)
- ambient_occlusion_apply(re, shi, shr);
- }
+ if(re->db.wrld.mode & WO_AMB_OCC)
+ ambient_occlusion_apply(re, shi, shr);
/* ambient light */
madd_v3_v3fl(shr->diff, &re->db.wrld.ambr, shi->material.amb);
More information about the Bf-blender-cvs
mailing list