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:
authorAlfredo de Greef <eeshlo@yahoo.com>2004-01-27 03:15:12 +0300
committerAlfredo de Greef <eeshlo@yahoo.com>2004-01-27 03:15:12 +0300
commit8273ebce0f35309ab45b5231e9aee42bb1124534 (patch)
tree5796b8ab98fdfbf6afbdd665b4ff623a5261793e
parenta5f2e598a2673a6579338c5db397fc19e3cba9e3 (diff)
fixed problem with ray button and shadow rendering
Blender 'sphere' mode lights in yafray should now have more similar light levels render shadow button in Blender must now be enabled to render shadows in yafray too some other minor shadow related corrections
-rw-r--r--source/blender/renderconverter/intern/convertBlenderScene.c12
-rwxr-xr-xsource/blender/yafray/intern/export_File.cpp11
2 files changed, 14 insertions, 9 deletions
diff --git a/source/blender/renderconverter/intern/convertBlenderScene.c b/source/blender/renderconverter/intern/convertBlenderScene.c
index 175d9dd7ed1..4af8e8cd61c 100644
--- a/source/blender/renderconverter/intern/convertBlenderScene.c
+++ b/source/blender/renderconverter/intern/convertBlenderScene.c
@@ -1807,13 +1807,17 @@ void RE_add_render_lamp(Object *ob, int doshadbuf)
}
}
- /* to make sure we can check ray shadow easily in the render code */
- if(lar->mode & LA_SHAD_RAY) {
- if( (R.r.mode & R_RAYTRACE)==0)
- lar->mode &= ~LA_SHAD_RAY;
+ /* yafray: shadow flag should not be cleared, only used with internal renderer */
+ if ((R.r.mode & R_YAFRAY)==0) {
+ /* to make sure we can check ray shadow easily in the render code */
+ if(lar->mode & LA_SHAD_RAY) {
+ if( (R.r.mode & R_RAYTRACE)==0)
+ lar->mode &= ~LA_SHAD_RAY;
+ }
}
lar->org= MEM_dupallocN(lar);
+
}
/* ------------------------------------------------------------------------- */
diff --git a/source/blender/yafray/intern/export_File.cpp b/source/blender/yafray/intern/export_File.cpp
index 0763bbdedca..49d7b2a2539 100755
--- a/source/blender/yafray/intern/export_File.cpp
+++ b/source/blender/yafray/intern/export_File.cpp
@@ -1007,11 +1007,10 @@ void yafrayFileRender_t::writeAreaLamp(LampRen* lamp, int num)
ostr << "<light type=\"arealight\" name=\"LAMP" << num+1 << "\" dummy=\""<< md << "\" power=\"" << lamp->energy << "\" ";
if (!R.r.GIphotons) {
int psm=0, sm = lamp->ray_totsamp;
- if (sm>=16) psm = sm/4;
+ if (sm>=64) psm = sm/4;
ostr << "samples=\"" << sm << "\" psamples=\"" << psm << "\" ";
}
ostr << ">\n";
-
ostr << "\t<a x=\""<< a[0] <<"\" y=\""<< a[1] <<"\" z=\"" << a[2] <<"\" />\n";
ostr << "\t<b x=\""<< b[0] <<"\" y=\""<< b[1] <<"\" z=\"" << b[2] <<"\" />\n";
ostr << "\t<c x=\""<< c[0] <<"\" y=\""<< c[1] <<"\" z=\"" << c[2] <<"\" />\n";
@@ -1046,8 +1045,8 @@ void yafrayFileRender_t::writeLamps()
// color already premultiplied by energy, so only need distance here
float pwr;
if (lamp->mode & LA_SPHERE) {
- // best approx. as used in LFexport script, however, in yafray it seems incorrect, so LF must use another model
- pwr = lamp->dist*(lamp->dist+1)*0.125;
+ // best approx. as used in LFexport script (LF d.f.m. 4pi?)
+ pwr = lamp->dist*(lamp->dist+1)*0.25*M_1_PI;
//decay = 2;
}
else {
@@ -1059,7 +1058,9 @@ void yafrayFileRender_t::writeLamps()
}
ostr << "\" power=\"" << pwr;
string lpmode="off";
- if ((lamp->mode & LA_SHAD) || (lamp->mode & LA_SHAD_RAY)) lpmode="on";;
+ // shadows only when Blender has shadow button enabled, only spots use LA_SHAD flag
+ if (R.r.mode & R_SHADOW)
+ if (((lamp->type==LA_SPOT) && (lamp->mode & LA_SHAD)) || (lamp->mode & LA_SHAD_RAY)) lpmode="on";;
ostr << "\" cast_shadows=\"" << lpmode << "\"";
// spot specific stuff
if (lamp->type==LA_SPOT) {