diff --git a/source/gui/ObjectTypes/CMiniMap.cpp b/source/gui/ObjectTypes/CMiniMap.cpp index f19b9eb303..ec0540ea03 100644 --- a/source/gui/ObjectTypes/CMiniMap.cpp +++ b/source/gui/ObjectTypes/CMiniMap.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 Wildfire Games. +/* Copyright (C) 2021 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -607,8 +607,7 @@ void CMiniMap::Draw() if (m_EntitiesDrawn > 0) { #if !CONFIG2_GLES - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); + glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); #endif u8* indexBase = m_IndexArray.Bind(); @@ -626,8 +625,7 @@ void CMiniMap::Draw() CVertexBuffer::Unbind(); #if !CONFIG2_GLES - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - glDisable(GL_VERTEX_PROGRAM_POINT_SIZE); + glDisable(GL_VERTEX_PROGRAM_POINT_SIZE); #endif } diff --git a/source/renderer/OverlayRenderer.cpp b/source/renderer/OverlayRenderer.cpp index 30bb4173cd..3ebc0087a2 100644 --- a/source/renderer/OverlayRenderer.cpp +++ b/source/renderer/OverlayRenderer.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 Wildfire Games. +/* Copyright (C) 2021 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -40,6 +40,21 @@ #include +namespace +{ + +CShaderProgramPtr GetOverlayLineShader(const CShaderDefines& defines) +{ + const char* shaderName; + if (g_RenderingOptions.GetPreferGLSL()) + shaderName = "glsl/overlayline"; + else + shaderName = "arb/overlayline"; + return g_Renderer.GetShaderManager().LoadProgram(shaderName, defines); +} + +} // anonymous namespace + /** * Key used to group quads into batches for more efficient rendering. Currently groups by the combination * of the main texture and the texture mask, to minimize texture swapping during rendering. @@ -427,22 +442,10 @@ void OverlayRenderer::RenderTexturedOverlayLines() glEnable(GL_BLEND); glDepthMask(0); - const char* shaderName; - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - { - if (g_RenderingOptions.GetPreferGLSL()) - shaderName = "glsl/overlayline"; - else - shaderName = "arb/overlayline"; - } - else - shaderName = "fixed:overlayline"; - CLOSTexture& los = g_Renderer.GetScene().GetLOSTexture(); - CShaderManager& shaderManager = g_Renderer.GetShaderManager(); - CShaderProgramPtr shaderTexLineNormal(shaderManager.LoadProgram(shaderName, m->defsOverlayLineNormal)); - CShaderProgramPtr shaderTexLineAlwaysVisible(shaderManager.LoadProgram(shaderName, m->defsOverlayLineAlwaysVisible)); + CShaderProgramPtr shaderTexLineNormal = GetOverlayLineShader(m->defsOverlayLineNormal); + CShaderProgramPtr shaderTexLineAlwaysVisible = GetOverlayLineShader(m->defsOverlayLineAlwaysVisible); // ---------------------------------------------------------------------------------------- @@ -517,19 +520,7 @@ void OverlayRenderer::RenderQuadOverlays() if (m->quadBatchMap.empty()) return; - const char* shaderName; - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - { - if (g_RenderingOptions.GetPreferGLSL()) - shaderName = "glsl/overlayline"; - else - shaderName = "arb/overlayline"; - } - else - shaderName = "fixed:overlayline"; - - CShaderManager& shaderManager = g_Renderer.GetShaderManager(); - CShaderProgramPtr shader(shaderManager.LoadProgram(shaderName, m->defsQuadOverlay)); + CShaderProgramPtr shader = GetOverlayLineShader(m->defsQuadOverlay); if (!shader) return; @@ -631,31 +622,19 @@ void OverlayRenderer::RenderForegroundOverlays(const CCamera& viewCamera) glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); - CShaderProgramPtr shader; - CShaderTechniquePtr tech; - - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - { - tech = g_Renderer.GetShaderManager().LoadEffect(str_foreground_overlay); - tech->BeginPass(); - shader = tech->GetShader(); - } + CShaderTechniquePtr tech = g_Renderer.GetShaderManager().LoadEffect(str_foreground_overlay); + tech->BeginPass(); + CShaderProgramPtr shader = tech->GetShader(); float uvs[8] = { 0,1, 1,1, 1,0, 0,0 }; - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, sizeof(float)*2, &uvs[0]); - else - glTexCoordPointer(2, GL_FLOAT, sizeof(float)*2, &uvs); + shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, sizeof(float)*2, &uvs[0]); for (size_t i = 0; i < m->sprites.size(); ++i) { SOverlaySprite* sprite = m->sprites[i]; - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - shader->BindTexture(str_baseTex, sprite->m_Texture); - else - sprite->m_Texture->Bind(); + shader->BindTexture(str_baseTex, sprite->m_Texture); if (shader) shader->Uniform(str_colorMul, sprite->m_Color); @@ -667,10 +646,7 @@ void OverlayRenderer::RenderForegroundOverlays(const CCamera& viewCamera) sprite->m_Position + right*sprite->m_X0 + up*sprite->m_Y1 }; - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - shader->VertexPointer(3, GL_FLOAT, sizeof(float)*3, &pos[0].X); - else - glVertexPointer(3, GL_FLOAT, sizeof(float)*3, &pos[0].X); + shader->VertexPointer(3, GL_FLOAT, sizeof(float)*3, &pos[0].X); glDrawArrays(GL_QUADS, 0, (GLsizei)4); @@ -678,8 +654,7 @@ void OverlayRenderer::RenderForegroundOverlays(const CCamera& viewCamera) g_Renderer.GetStats().m_OverlayTris += 2; } - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - tech->EndPass(); + tech->EndPass(); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); @@ -761,9 +736,6 @@ void OverlayRenderer::RenderSphereOverlays() #if CONFIG2_GLES #warning TODO: implement OverlayRenderer::RenderSphereOverlays for GLES #else - if (g_RenderingOptions.GetRenderPath() != RenderPath::SHADER) - return; - if (m->spheres.empty()) return; diff --git a/source/renderer/ParticleRenderer.cpp b/source/renderer/ParticleRenderer.cpp index d8c007f6c7..cd5696f792 100644 --- a/source/renderer/ParticleRenderer.cpp +++ b/source/renderer/ParticleRenderer.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2019 Wildfire Games. +/* Copyright (C) 2021 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -86,13 +86,8 @@ void ParticleRenderer::PrepareForRendering(const CShaderDefines& context) // renderer initialisation is complete, so load it the first time through here if (!m->shader) { - // Only construct the shaders when shaders are supported and enabled; otherwise - // RenderParticles will never be called so it's safe to leave the shaders as null - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - { - m->shader = g_Renderer.GetShaderManager().LoadEffect(str_particle, context, CShaderDefines()); - m->shaderSolid = g_Renderer.GetShaderManager().LoadEffect(str_particle_solid, context, CShaderDefines()); - } + m->shader = g_Renderer.GetShaderManager().LoadEffect(str_particle, context, CShaderDefines()); + m->shaderSolid = g_Renderer.GetShaderManager().LoadEffect(str_particle_solid, context, CShaderDefines()); } ++m->frameNumber; diff --git a/source/renderer/Renderer.cpp b/source/renderer/Renderer.cpp index ea6a4b2a91..7f5f75fe87 100644 --- a/source/renderer/Renderer.cpp +++ b/source/renderer/Renderer.cpp @@ -515,10 +515,10 @@ void CRenderer::RecomputeSystemShaderDefines() { CShaderDefines defines; - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER && m_Caps.m_ARBProgram) + if (m_Caps.m_ARBProgram) defines.Add(str_SYS_HAS_ARB, str_1); - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER && m_Caps.m_VertexShader && m_Caps.m_FragmentShader) + if (m_Caps.m_VertexShader && m_Caps.m_FragmentShader) defines.Add(str_SYS_HAS_GLSL, str_1); if (g_RenderingOptions.GetPreferGLSL()) @@ -554,7 +554,7 @@ void CRenderer::ReloadShaders() m->Model.VertexRendererShader = ModelVertexRendererPtr(new ShaderModelVertexRenderer()); m->Model.VertexInstancingShader = ModelVertexRendererPtr(new InstancingModelRenderer(false, g_RenderingOptions.GetPreferGLSL())); - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER && g_RenderingOptions.GetGPUSkinning()) // TODO: should check caps and GLSL etc too + if (g_RenderingOptions.GetGPUSkinning()) // TODO: should check caps and GLSL etc too { m->Model.VertexGPUSkinningShader = ModelVertexRendererPtr(new InstancingModelRenderer(true, g_RenderingOptions.GetPreferGLSL())); m->Model.NormalSkinned = ModelRendererPtr(new ShaderModelRenderer(m->Model.VertexGPUSkinningShader)); @@ -567,17 +567,8 @@ void CRenderer::ReloadShaders() m->Model.TranspSkinned = ModelRendererPtr(new ShaderModelRenderer(m->Model.VertexRendererShader)); } - // Use instancing renderers in shader mode - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - { - m->Model.NormalUnskinned = ModelRendererPtr(new ShaderModelRenderer(m->Model.VertexInstancingShader)); - m->Model.TranspUnskinned = ModelRendererPtr(new ShaderModelRenderer(m->Model.VertexInstancingShader)); - } - else - { - m->Model.NormalUnskinned = m->Model.NormalSkinned; - m->Model.TranspUnskinned = m->Model.TranspSkinned; - } + m->Model.NormalUnskinned = ModelRendererPtr(new ShaderModelRenderer(m->Model.VertexInstancingShader)); + m->Model.TranspUnskinned = ModelRendererPtr(new ShaderModelRenderer(m->Model.VertexInstancingShader)); m->ShadersDirty = false; } @@ -1240,10 +1231,6 @@ void CRenderer::RenderSilhouettes(const CShaderDefines& context) void CRenderer::RenderParticles(int cullGroup) { - // Only supported in shader modes - if (g_RenderingOptions.GetRenderPath() != RenderPath::SHADER) - return; - PROFILE3_GPU("particles"); m->particleRenderer.RenderParticles(cullGroup); @@ -1307,7 +1294,7 @@ void CRenderer::RenderSubmissions(const CBoundingBoxAligned& waterScissor) m->particleRenderer.PrepareForRendering(context); - if (m_Caps.m_Shadows && g_RenderingOptions.GetShadows() && g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) + if (m_Caps.m_Shadows && g_RenderingOptions.GetShadows()) { RenderShadowMap(context); } @@ -1512,7 +1499,7 @@ void CRenderer::SetSceneCamera(const CCamera& viewCamera, const CCamera& cullCam m_ViewCamera = viewCamera; m_CullCamera = cullCamera; - if (m_Caps.m_Shadows && g_RenderingOptions.GetShadows() && g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) + if (m_Caps.m_Shadows && g_RenderingOptions.GetShadows()) m->shadow.SetupFrame(m_CullCamera, m_LightEnv->GetSunDir()); } @@ -1658,7 +1645,7 @@ void CRenderer::RenderScene(Scene& scene) m->silhouetteRenderer.RenderSubmitCasters(*this); } - if (m_Caps.m_Shadows && g_RenderingOptions.GetShadows() && g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) + if (m_Caps.m_Shadows && g_RenderingOptions.GetShadows()) { m_CurrentCullGroup = CULL_SHADOWS; diff --git a/source/renderer/SkyManager.cpp b/source/renderer/SkyManager.cpp index 209cf980fe..437f054cca 100644 --- a/source/renderer/SkyManager.cpp +++ b/source/renderer/SkyManager.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 Wildfire Games. +/* Copyright (C) 2021 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -209,166 +209,87 @@ void SkyManager::RenderSky() const CCamera& camera = g_Renderer.GetViewCamera(); - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - { - CShaderTechniquePtr skytech = - g_Renderer.GetShaderManager().LoadEffect(str_sky_simple); - skytech->BeginPass(); - CShaderProgramPtr shader = skytech->GetShader(); - shader->BindTexture(str_baseTex, m_SkyCubeMap); + CShaderTechniquePtr skytech = + g_Renderer.GetShaderManager().LoadEffect(str_sky_simple); + skytech->BeginPass(); + CShaderProgramPtr shader = skytech->GetShader(); + shader->BindTexture(str_baseTex, m_SkyCubeMap); - // Translate so the sky center is at the camera space origin. - CMatrix3D translate; - translate.SetTranslation(camera.GetOrientation().GetTranslation()); + // Translate so the sky center is at the camera space origin. + CMatrix3D translate; + translate.SetTranslation(camera.GetOrientation().GetTranslation()); - // Currently we have a hardcoded near plane in the projection matrix. - CMatrix3D scale; - scale.SetScaling(10.0f, 10.0f, 10.0f); + // Currently we have a hardcoded near plane in the projection matrix. + CMatrix3D scale; + scale.SetScaling(10.0f, 10.0f, 10.0f); - // Rotate so that the "left" face, which contains the brightest part of - // each skymap, is in the direction of the sun from our light - // environment. - CMatrix3D rotate; - rotate.SetYRotation(M_PI + g_Renderer.GetLightEnv().GetRotation()); + // Rotate so that the "left" face, which contains the brightest part of + // each skymap, is in the direction of the sun from our light + // environment. + CMatrix3D rotate; + rotate.SetYRotation(M_PI + g_Renderer.GetLightEnv().GetRotation()); - shader->Uniform( - str_transform, - camera.GetViewProjection() * translate * rotate * scale); + shader->Uniform( + str_transform, + camera.GetViewProjection() * translate * rotate * scale); - std::vector vertexData; - // 6 sides of cube with 4 vertices with 6 floats (3 uv and 3 position). - vertexData.reserve(6 * 4 * 6); - #define ADD_VERTEX(U, V, W, X, Y, Z) \ - STMT( \ - vertexData.push_back(X); \ - vertexData.push_back(Y); \ - vertexData.push_back(Z); \ - vertexData.push_back(U); \ - vertexData.push_back(V); \ - vertexData.push_back(W);) + std::vector vertexData; + // 6 sides of cube with 4 vertices with 6 floats (3 uv and 3 position). + vertexData.reserve(6 * 4 * 6); +#define ADD_VERTEX(U, V, W, X, Y, Z) \ + STMT( \ + vertexData.push_back(X); \ + vertexData.push_back(Y); \ + vertexData.push_back(Z); \ + vertexData.push_back(U); \ + vertexData.push_back(V); \ + vertexData.push_back(W);) - // GL_TEXTURE_CUBE_MAP_NEGATIVE_X - ADD_VERTEX(+1, +1, +1, -1.0f, -1.0f, -1.0f); - ADD_VERTEX(+1, +1, -1, -1.0f, -1.0f, +1.0f); - ADD_VERTEX(+1, -1, -1, -1.0f, +1.0f, +1.0f); - ADD_VERTEX(+1, -1, +1, -1.0f, +1.0f, -1.0f); + // GL_TEXTURE_CUBE_MAP_NEGATIVE_X + ADD_VERTEX(+1, +1, +1, -1.0f, -1.0f, -1.0f); + ADD_VERTEX(+1, +1, -1, -1.0f, -1.0f, +1.0f); + ADD_VERTEX(+1, -1, -1, -1.0f, +1.0f, +1.0f); + ADD_VERTEX(+1, -1, +1, -1.0f, +1.0f, -1.0f); - // GL_TEXTURE_CUBE_MAP_POSITIVE_X - ADD_VERTEX(-1, +1, -1, +1.0f, -1.0f, +1.0f); - ADD_VERTEX(-1, +1, +1, +1.0f, -1.0f, -1.0f); - ADD_VERTEX(-1, -1, +1, +1.0f, +1.0f, -1.0f); - ADD_VERTEX(-1, -1, -1, +1.0f, +1.0f, +1.0f); + // GL_TEXTURE_CUBE_MAP_POSITIVE_X + ADD_VERTEX(-1, +1, -1, +1.0f, -1.0f, +1.0f); + ADD_VERTEX(-1, +1, +1, +1.0f, -1.0f, -1.0f); + ADD_VERTEX(-1, -1, +1, +1.0f, +1.0f, -1.0f); + ADD_VERTEX(-1, -1, -1, +1.0f, +1.0f, +1.0f); - // GL_TEXTURE_CUBE_MAP_NEGATIVE_Y - ADD_VERTEX(-1, +1, +1, +1.0f, -1.0f, -1.0f); - ADD_VERTEX(-1, +1, -1, +1.0f, -1.0f, +1.0f); - ADD_VERTEX(+1, +1, -1, -1.0f, -1.0f, +1.0f); - ADD_VERTEX(+1, +1, +1, -1.0f, -1.0f, -1.0f); + // GL_TEXTURE_CUBE_MAP_NEGATIVE_Y + ADD_VERTEX(-1, +1, +1, +1.0f, -1.0f, -1.0f); + ADD_VERTEX(-1, +1, -1, +1.0f, -1.0f, +1.0f); + ADD_VERTEX(+1, +1, -1, -1.0f, -1.0f, +1.0f); + ADD_VERTEX(+1, +1, +1, -1.0f, -1.0f, -1.0f); - // GL_TEXTURE_CUBE_MAP_POSITIVE_Y - ADD_VERTEX(+1, -1, +1, -1.0f, +1.0f, -1.0f); - ADD_VERTEX(+1, -1, -1, -1.0f, +1.0f, +1.0f); - ADD_VERTEX(-1, -1, -1, +1.0f, +1.0f, +1.0f); - ADD_VERTEX(-1, -1, +1, +1.0f, +1.0f, -1.0f); + // GL_TEXTURE_CUBE_MAP_POSITIVE_Y + ADD_VERTEX(+1, -1, +1, -1.0f, +1.0f, -1.0f); + ADD_VERTEX(+1, -1, -1, -1.0f, +1.0f, +1.0f); + ADD_VERTEX(-1, -1, -1, +1.0f, +1.0f, +1.0f); + ADD_VERTEX(-1, -1, +1, +1.0f, +1.0f, -1.0f); - // GL_TEXTURE_CUBE_MAP_NEGATIVE_Z - ADD_VERTEX(-1, +1, +1, +1.0f, -1.0f, -1.0f); - ADD_VERTEX(+1, +1, +1, -1.0f, -1.0f, -1.0f); - ADD_VERTEX(+1, -1, +1, -1.0f, +1.0f, -1.0f); - ADD_VERTEX(-1, -1, +1, +1.0f, +1.0f, -1.0f); + // GL_TEXTURE_CUBE_MAP_NEGATIVE_Z + ADD_VERTEX(-1, +1, +1, +1.0f, -1.0f, -1.0f); + ADD_VERTEX(+1, +1, +1, -1.0f, -1.0f, -1.0f); + ADD_VERTEX(+1, -1, +1, -1.0f, +1.0f, -1.0f); + ADD_VERTEX(-1, -1, +1, +1.0f, +1.0f, -1.0f); - // GL_TEXTURE_CUBE_MAP_POSITIVE_Z - ADD_VERTEX(+1, +1, -1, -1.0f, -1.0f, +1.0f); - ADD_VERTEX(-1, +1, -1, +1.0f, -1.0f, +1.0f); - ADD_VERTEX(-1, -1, -1, +1.0f, +1.0f, +1.0f); - ADD_VERTEX(+1, -1, -1, -1.0f, +1.0f, +1.0f); - #undef ADD_VERTEX + // GL_TEXTURE_CUBE_MAP_POSITIVE_Z + ADD_VERTEX(+1, +1, -1, -1.0f, -1.0f, +1.0f); + ADD_VERTEX(-1, +1, -1, +1.0f, -1.0f, +1.0f); + ADD_VERTEX(-1, -1, -1, +1.0f, +1.0f, +1.0f); + ADD_VERTEX(+1, -1, -1, -1.0f, +1.0f, +1.0f); +#undef ADD_VERTEX - shader->VertexPointer(3, GL_FLOAT, sizeof(GLfloat) * 6, &vertexData[0]); - shader->TexCoordPointer( - GL_TEXTURE0, 3, GL_FLOAT, sizeof(GLfloat) * 6, &vertexData[3]); - shader->AssertPointersBound(); + shader->VertexPointer(3, GL_FLOAT, sizeof(GLfloat) * 6, &vertexData[0]); + shader->TexCoordPointer( + GL_TEXTURE0, 3, GL_FLOAT, sizeof(GLfloat) * 6, &vertexData[3]); + shader->AssertPointersBound(); - glDrawArrays(GL_QUADS, 0, 6 * 4); + glDrawArrays(GL_QUADS, 0, 6 * 4); - skytech->EndPass(); - } - else - { - pglActiveTextureARB(GL_TEXTURE0_ARB); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - glMatrixMode(GL_MODELVIEW); - // Modify current matrix that already contains view part. - glPushMatrix(); - - // Translate so the sky center is at the camera space origin. - CVector3D cameraPos = camera.GetOrientation().GetTranslation(); - glTranslatef(cameraPos.X, cameraPos.Y, cameraPos.Z); - - // Rotate so that the "left" face, which contains the brightest part of - // each skymap, is in the direction of the sun from our light - // environment. - glRotatef( - 180.0f + RADTODEG(g_Renderer.GetLightEnv().GetRotation()), - 0.0f, 1.0f, 0.0f); - - // Currently we have a hardcoded near plane in the projection matrix. - glScalef(10.0f, 10.0f, 10.0f); - - glDisable(GL_TEXTURE_2D); - glEnable(GL_TEXTURE_CUBE_MAP); - glBindTexture(GL_TEXTURE_CUBE_MAP, m_SkyCubeMap); - - glBegin(GL_QUADS); - - // GL_TEXTURE_CUBE_MAP_NEGATIVE_X - glTexCoord3f(+1, +1, +1); glVertex3f(-1.0f, -1.0f, -1.0f); - glTexCoord3f(+1, +1, -1); glVertex3f(-1.0f, -1.0f, +1.0f); - glTexCoord3f(+1, -1, -1); glVertex3f(-1.0f, +1.0f, +1.0f); - glTexCoord3f(+1, -1, +1); glVertex3f(-1.0f, +1.0f, -1.0f); - - // GL_TEXTURE_CUBE_MAP_POSITIVE_X - glTexCoord3f(-1, +1, -1); glVertex3f(+1.0f, -1.0f, +1.0f); - glTexCoord3f(-1, +1, +1); glVertex3f(+1.0f, -1.0f, -1.0f); - glTexCoord3f(-1, -1, +1); glVertex3f(+1.0f, +1.0f, -1.0f); - glTexCoord3f(-1, -1, -1); glVertex3f(+1.0f, +1.0f, +1.0f); - - // GL_TEXTURE_CUBE_MAP_NEGATIVE_Y - glTexCoord3f(-1, +1, +1); glVertex3f(+1.0f, -1.0f, -1.0f); - glTexCoord3f(-1, +1, -1); glVertex3f(+1.0f, -1.0f, +1.0f); - glTexCoord3f(+1, +1, -1); glVertex3f(-1.0f, -1.0f, +1.0f); - glTexCoord3f(+1, +1, +1); glVertex3f(-1.0f, -1.0f, -1.0f); - - // GL_TEXTURE_CUBE_MAP_POSITIVE_Y - glTexCoord3f(+1, -1, +1); glVertex3f(-1.0f, +1.0f, -1.0f); - glTexCoord3f(+1, -1, -1); glVertex3f(-1.0f, +1.0f, +1.0f); - glTexCoord3f(-1, -1, -1); glVertex3f(+1.0f, +1.0f, +1.0f); - glTexCoord3f(-1, -1, +1); glVertex3f(+1.0f, +1.0f, -1.0f); - - // GL_TEXTURE_CUBE_MAP_NEGATIVE_Z - glTexCoord3f(-1, +1, +1); glVertex3f(+1.0f, -1.0f, -1.0f); - glTexCoord3f(+1, +1, +1); glVertex3f(-1.0f, -1.0f, -1.0f); - glTexCoord3f(+1, -1, +1); glVertex3f(-1.0f, +1.0f, -1.0f); - glTexCoord3f(-1, -1, +1); glVertex3f(+1.0f, +1.0f, -1.0f); - - // GL_TEXTURE_CUBE_MAP_POSITIVE_Z - glTexCoord3f(+1, +1, -1); glVertex3f(-1.0f, -1.0f, +1.0f); - glTexCoord3f(-1, +1, -1); glVertex3f(+1.0f, -1.0f, +1.0f); - glTexCoord3f(-1, -1, -1); glVertex3f(+1.0f, +1.0f, +1.0f); - glTexCoord3f(+1, -1, -1); glVertex3f(-1.0f, +1.0f, +1.0f); - - glEnd(); - - glBindTexture(GL_TEXTURE_CUBE_MAP, 0); - glDisable(GL_TEXTURE_CUBE_MAP); - glEnable(GL_TEXTURE_2D); - - glPopMatrix(); - - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - } + skytech->EndPass(); glDepthMask(GL_TRUE); diff --git a/source/renderer/TerrainRenderer.cpp b/source/renderer/TerrainRenderer.cpp index a4986b26b2..a69b38b989 100644 --- a/source/renderer/TerrainRenderer.cpp +++ b/source/renderer/TerrainRenderer.cpp @@ -65,15 +65,10 @@ namespace CShaderProgramPtr GetDummyShader() { const char* shaderName; - if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) - { - if (g_RenderingOptions.GetPreferGLSL()) - shaderName = "glsl/dummy"; - else - shaderName = "arb/dummy"; - } + if (g_RenderingOptions.GetPreferGLSL()) + shaderName = "glsl/dummy"; else - shaderName = "fixed:dummy"; + shaderName = "arb/dummy"; return g_Renderer.GetShaderManager().LoadProgram(shaderName, CShaderDefines()); }