Eliminate shadows on clouds and rings when a planet is emissive.

ver1_5_1
Chris Laurel 2002-12-17 18:09:31 +00:00
parent 1675a24c38
commit 87d8fbb72b
1 changed files with 28 additions and 16 deletions

View File

@ -2792,7 +2792,7 @@ void Renderer::renderObject(Point3f pos,
renderRings(*obj.rings, ri, radius,
textureResolution,
nSimultaneousTextures > 1 &&
(renderFlags & ShowRingShadows) != 0,
(renderFlags & ShowRingShadows) != 0 && lit,
vertexShaderEnabled);
}
@ -2872,23 +2872,35 @@ void Renderer::renderObject(Point3f pos,
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1, 1, 1, 1);
if (vertexShaderEnabled)
if (lit)
{
vp::enable();
vp::use(vp::diffuseTexOffset);
vp::parameter(20, ri.sunColor * ri.color);
vp::parameter(32, ri.ambientColor * ri.color);
vp::parameter(41,
(float) -pfmod(now * atmosphere->cloudSpeed / (2*PI), 1.0),
0.0f, 0.0f, 0.0f);
if (vertexShaderEnabled)
{
vp::enable();
vp::use(vp::diffuseTexOffset);
vp::parameter(20, ri.sunColor * ri.color);
vp::parameter(32, ri.ambientColor * ri.color);
vp::parameter(41,
(float) -pfmod(now * atmosphere->cloudSpeed / (2*PI), 1.0),
0.0f, 0.0f, 0.0f);
}
lodSphere->render(Mesh::Normals | Mesh::TexCoords0,
viewFrustum,
ri.lod,
cloudTex);
if (vertexShaderEnabled)
{
vp::disable();
}
}
lodSphere->render(Mesh::Normals | Mesh::TexCoords0,
viewFrustum,
ri.lod,
cloudTex);
if (vertexShaderEnabled)
else
{
vp::disable();
glDisable(GL_LIGHTING);
lodSphere->render(Mesh::Normals | Mesh::TexCoords0,
viewFrustum,
ri.lod,
cloudTex);
glEnable(GL_LIGHTING);
}
// Reset the texture matrix
@ -2953,7 +2965,7 @@ void Renderer::renderObject(Point3f pos,
renderRings(*obj.rings, ri, radius,
textureResolution,
nSimultaneousTextures > 1 &&
(renderFlags & ShowRingShadows) != 0,
(renderFlags & ShowRingShadows) != 0 && lit,
vertexShaderEnabled);
}