Fixed small bug in shadows.

This commit is contained in:
Jonathas Costa
2016-06-06 18:23:06 -04:00
parent 2f4f50b796
commit de6446282f
5 changed files with 20 additions and 21 deletions

View File

@@ -330,13 +330,6 @@ void RenderablePlanet::render(const RenderData& data)
// setup the data to the shader
double lt;
glm::dvec3 p =
SpiceManager::ref().targetPosition("SUN", _target, "GALACTIC", {}, _time, lt);
p *= 1000.0; // from Km to m
psc sun_pos = PowerScaledCoordinate::CreatePowerScaledCoordinate(p.x, p.y, p.z);
//_programObject->setUniform("light_dir", sun_pos.vec4());
glm::dvec3 pt =
SpiceManager::ref().targetPosition(_target, "SUN", "GALACTIC", {}, _time, lt);
psc tmppos = PowerScaledCoordinate::CreatePowerScaledCoordinate(pt.x, pt.y, pt.z);
@@ -409,9 +402,13 @@ void RenderablePlanet::render(const RenderData& data)
float xp_test = shadowConf.caster.second * sc_length / (shadowConf.source.second + shadowConf.caster.second);
float rp_test = shadowConf.caster.second * (glm::length(planetCaster_proj) + xp_test) / xp_test;
float casterDistSun = glm::length(casterPos);
float planetDistSun = glm::length(data.position.vec3());
ShadowRenderingStruct shadowData;
shadowData.isShadowing = false;
if ((d_test - rp_test) < _planetRadius) {
if (((d_test - rp_test) < _planetRadius) &&
(casterDistSun < planetDistSun) ) {
// The current caster is shadowing the current planet
shadowData.isShadowing = true;
shadowData.rs = shadowConf.source.second;

View File

@@ -74,14 +74,14 @@ vec4 calcShadow(const ShadowRenderingStruct shadowInfoArray[numberOfShadows], co
float r_u_pi = shadowInfoArray[0].rc * (shadowInfoArray[0].xu - length_pc_proj) / shadowInfoArray[0].xu;
if ( length_d < r_u_pi ) { // umbra
return vec4(0.0, 0.0, 0.0, 1.0);
//return vec4(0.0, 0.0, 0.0, 1.0);
//return vec4(1.0, 0.0, 0.0, 1.0);
//return butterworthFunc(length_d, r_u_pi, 4.0);
return butterworthFunc(length_d, r_u_pi, 4.0);
}
else if ( length_d < r_p_pi ) {// penumbra
return vec4(0.5, 0.5, 0.5, 1.0);
//return vec4(0.5, 0.5, 0.5, 1.0);
//return vec4(0.0, 1.0, 0.0, 1.0);
//return vec4(vec3(length_d/r_p_pi), 1.0);
return vec4(vec3(length_d/r_p_pi), 1.0);
}
}

View File

@@ -76,14 +76,14 @@ vec4 calcShadow(const ShadowRenderingStruct shadowInfoArray[numberOfShadows], co
float r_u_pi = shadowInfoArray[0].rc * (shadowInfoArray[0].xu - length_pc_proj) / shadowInfoArray[0].xu;
if ( length_d < r_u_pi ) { // umbra
return vec4(0.0, 0.0, 0.0, 1.0);
//return vec4(0.0, 0.0, 0.0, 1.0);
//return vec4(1.0, 0.0, 0.0, 1.0);
//return butterworthFunc(length_d, r_u_pi, 4.0);
return butterworthFunc(length_d, r_u_pi, 4.0);
}
else if ( length_d < r_p_pi ) {// penumbra
return vec4(0.5, 0.5, 0.5, 1.0);
//return vec4(0.5, 0.5, 0.5, 1.0);
//return vec4(0.0, 1.0, 0.0, 1.0);
//return vec4(vec3(length_d/r_p_pi), 1.0);
return vec4(vec3(length_d/r_p_pi), 1.0);
}
}