rendered paste bodyIndex: blender/makesdna/DNA_material_types.h
===================================================================
--- blender/makesdna/DNA_material_types.h (revision 12706)
+++ blender/makesdna/DNA_material_types.h (working copy)
@@ -191,6 +191,7 @@
#define MA_GROUP_NOLAY 0x10000000
#define MA_FACETEXTURE_ALPHA 0x20000000
#define MA_STR_B_UNITS 0x40000000
+#define MA_NO_USE_AO 0x80000000
#define MA_MODE_MASK 0x4fffffff /* all valid mode bits */
Index: blender/python/api2_2x/sceneRender.c
===================================================================
--- blender/python/api2_2x/sceneRender.c (revision 12706)
+++ blender/python/api2_2x/sceneRender.c (working copy)
@@ -488,6 +488,14 @@
Py_RETURN_NONE;
}
+PyObject *RenderData_RenderBake( BPy_RenderData * self )
+{
+ Scene *oldsce;
+ objects_bake_render(0);
+
+ Py_RETURN_NONE;
+}
+
/*
* This will save the rendered image to an output file path already defined.
*/
@@ -2682,6 +2690,8 @@
"(filename) - save an image generated by a call to render() (set output path first)"},
{"renderAnim", ( PyCFunction ) RenderData_RenderAnim, METH_NOARGS,
"() - render a sequence from start frame to end frame"},
+ {"renderBake", ( PyCFunction ) RenderData_RenderBake, METH_NOARGS,
+ "() - render bake of the selected objects"},
{"play", ( PyCFunction ) RenderData_Play, METH_NOARGS,
"() - play animation of rendered images/avi (searches Pics: field)"},
{"setRenderPath", ( PyCFunction ) RenderData_SetRenderPath,
Index: blender/render/intern/source/convertblender.c
===================================================================
--- blender/render/intern/source/convertblender.c (revision 12706)
+++ blender/render/intern/source/convertblender.c (working copy)
@@ -4923,6 +4923,11 @@
}
}
}
+
+ if (re->r.renderer==R_INTERN)
+ if(!re->test_break())
+ if(re->r.mode & R_RADIO) do_radio_render(re);
+
}
void RE_DataBase_GetView(Render *re, float mat[][4])
Index: blender/render/intern/source/rayshade.c
===================================================================
--- blender/render/intern/source/rayshade.c (revision 12706)
+++ blender/render/intern/source/rayshade.c (working copy)
@@ -1508,8 +1508,19 @@
prev = fac;
if(RE_ray_tree_intersect(R.raytree, &isec)) {
- if (R.wrld.aomode & WO_AODIST) fac+= exp(-isec.labda*R.wrld.aodistfac);
- else fac+= 1.0f;
+ VlakRen *vlr= (VlakRen*)isec.face;
+ float transfact;
+ if (vlr->mat->mode & MA_RAYTRANSP){
+ transfact=vlr->mat->alpha;
+ if (vlr->mat->mode & MA_RAYMIRROR)
+ transfact=(vlr->mat->ray_mirror+transfact)/2.0f;
+ }
+ else
+ transfact=1.0;
+ if (R.wrld.aomode & WO_AODIST) {
+ fac+= transfact*exp(-isec.labda*R.wrld.aodistfac);
+ }
+ else fac+= transfact*1.0f;
}
else if(aocolor!=WO_AOPLAIN) {
float skycol[4];
@@ -1627,8 +1638,20 @@
/* do the trace */
if(RE_ray_tree_intersect(R.raytree, &isec)) {
- if (R.wrld.aomode & WO_AODIST) sh+= exp(-isec.labda*R.wrld.aodistfac);
- else sh+= 1.0f;
+ VlakRen *vlr= (VlakRen*)isec.face;
+ float transfact;
+ if (vlr->mat->mode & MA_RAYTRANSP){
+ transfact=vlr->mat->alpha;
+ if (vlr->mat->mode & MA_RAYMIRROR)
+ transfact=(vlr->mat->ray_mirror+transfact)/2.0f;
+ }
+ else
+ transfact=1.0;
+ if (R.wrld.aomode & WO_AODIST){
+ VlakRen *vlr= (VlakRen*)isec.face;
+ sh+= transfact*exp(-isec.labda*R.wrld.aodistfac);
+ }
+ else sh+= transfact*1.0f;
}
else if(aocolor!=WO_AOPLAIN) {
float skycol[4];
@@ -1683,6 +1706,9 @@
ray_ao_qmc(shi, shadfac);
else if (R.wrld.ao_samp_method == WO_AOSAMP_CONSTANT)
ray_ao_spheresamp(shi, shadfac);
+ shadfac[0]*=(1.0-shi->mat->translucency);
+ shadfac[1]*=(1.0-shi->mat->translucency);
+ shadfac[2]*=(1.0-shi->mat->translucency);
}
Index: blender/render/intern/source/shadeoutput.c
===================================================================
--- blender/render/intern/source/shadeoutput.c (revision 12706)
+++ blender/render/intern/source/shadeoutput.c (working copy)
@@ -975,7 +975,7 @@
void ambient_occlusion(ShadeInput *shi)
{
- if((R.r.mode & R_RAYTRACE) && shi->mat->amb!=0.0f)
+ if((R.r.mode & R_RAYTRACE) && shi->mat->amb!=0.0f && !(shi->mode & MA_NO_USE_AO))
ray_ao(shi, shi->ao);
else
shi->ao[0]= shi->ao[1]= shi->ao[2]= 1.0f;
Index: blender/src/buttons_shading.c
===================================================================
--- blender/src/buttons_shading.c (revision 12706)
+++ blender/src/buttons_shading.c (working copy)
@@ -3791,6 +3791,7 @@
uiDefButBitI(block, TOG, MA_SHADOW_TRA, B_MATPRV, "TraShadow", 245,120,65,19, &(ma->mode), 0, 0, 0, 0, "Receives transparent shadows based at material color and alpha");
uiDefButBitI(block, TOG, MA_ONLYSHADOW, B_MATPRV, "OnlyShad", 245,100,65,20, &(ma->mode), 0, 0, 0, 0, "Renders shadows on material as Alpha value");
uiDefButBitI(block, TOG, MA_RAYBIAS, B_MATPRV, "Bias", 245,80,65,19, &(ma->mode), 0, 0, 0, 0, "Prevents ray traced shadow errors with phong interpolated normals (terminator problem)");
+ uiDefButBitI(block, TOG, MA_NO_USE_AO, B_MATPRV, "NO AO", 245,60,65,19, &(ma->mode), 0, 0, 0, 0, "Prevents AO");
uiBlockBeginAlign(block);
uiDefIDPoinBut(block, test_grouppoin_but, ID_GR, B_MATPRV, "GR:", 9, 55, 150, 19, &ma->group, "Limit Lighting to Lamps in this Group");