added ambient parameter in global options{} for parser to set scene's global ambient color

git-svn-id: svn://anubis/fart/trunk@260 7f9b0f55-74a9-4bce-be96-3c2cd072584d
This commit is contained in:
Josh Holtrop committed 2010-06-29 15:39:35 +00:00
1 parent 70a5ef74d4
commit c115dec69b
4 files changed
+19 -9

No files matched your search

+4
View File
@@ -198,6 +198,10 @@ void Scene::processOptions(refptr<Node> node)
{
m_max_depth = (*it)->getInteger();
}
else if ( typeid(**it) == typeid(AmbientNode) )
{
setAmbientLight(Color((*it)->getVector()));
}
}
}
+11 -9
View File
@@ -230,6 +230,7 @@ Color Scene::computePhong(const refptr<Material> material,
Vector lightPlaneX = directionToLightC.getPerpendicular().normalize();
Vector lightPlaneY = (directionToLightC * lightPlaneX).normalize();
int jitter_samples = 0, jitter_level = (*it)->getJitter();;
Color jitterResult;
for (int jitter_index = 0; jitter_index < jitter_level; jitter_index++)
{
double jitterRadius = jitter_index * lightRadius
@@ -259,25 +260,26 @@ Color Scene::computePhong(const refptr<Material> material,
double diffuse_coef = directionToLight % surfaceNormal;
if (diffuse_coef > 0.0)
{
result += diffuseColor
* (*it)->getDiffuseColor()
* diffuse_coef
* light_contribution;
jitterResult += diffuseColor
* (*it)->getDiffuseColor()
* diffuse_coef
* light_contribution;
}
/* calculate the specular term */
double specular_coef = reflectedLightDirection % viewDirection;
if (specular_coef > 0.0)
{
result += specularColor
* (*it)->getSpecularColor()
* pow(specular_coef, shininess)
* light_contribution;
jitterResult += specularColor
* (*it)->getSpecularColor()
* pow(specular_coef, shininess)
* light_contribution;
}
}
}
}
result /= jitter_samples;
jitterResult /= jitter_samples;
result += jitterResult;
}
return result;