1
0
forked from 0ad/0ad

Disable culling of transparent objects in shadows/reflections, to fix trees

This was SVN commit r9818.
This commit is contained in:
Ykkrosh 2011-07-13 13:51:40 +00:00
parent f02e67d012
commit 7f74693052

View File

@ -943,20 +943,11 @@ void CRenderer::RenderShadowMap()
}
// Render all closed models (i.e. models where rendering back faces will produce
// the correct result)
glCullFace(GL_FRONT);
{
PROFILE("render patches");
m->terrainRenderer->RenderPatches();
}
glCullFace(GL_BACK);
// Render models that aren't closed
glDisable(GL_CULL_FACE);
{
PROFILE("render models");
m->CallModelRenderers(m->Model.ModSolid, m->Model.ModSolidInstancing,
@ -965,11 +956,12 @@ void CRenderer::RenderShadowMap()
{
PROFILE("render transparent models");
// disable face-culling for two-sided models
glDisable(GL_CULL_FACE);
m->Model.Transp->Render(transparentShadows, MODELFLAG_CASTSHADOWS);
glEnable(GL_CULL_FACE);
}
glEnable(GL_CULL_FACE);
glColor3f(1.0, 1.0, 1.0);
m->shadow->EndRender();
@ -1102,6 +1094,10 @@ void CRenderer::RenderTransparentModels(ETransparentMode transparentMode, const
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}
// disable face culling for two-sided models in sub-renders
if (flags)
glDisable(GL_CULL_FACE);
if (transparentMode == TRANSPARENT_OPAQUE)
m->Model.Transp->Render(m->Model.ModTransparentOpaque, flags);
else if (transparentMode == TRANSPARENT_BLEND)
@ -1109,6 +1105,9 @@ void CRenderer::RenderTransparentModels(ETransparentMode transparentMode, const
else
m->Model.Transp->Render(m->Model.ModTransparent, flags);
if (flags)
glEnable(GL_CULL_FACE);
if (m_ModelRenderMode == WIREFRAME)
{
// switch wireframe off again