Preload shaders that delay kart selection screen the most

Plus some suggestion from #1787
This commit is contained in:
Benau
2016-12-18 14:51:27 +08:00
parent 7ea4f30824
commit 4477dbb0fb
2 changed files with 61 additions and 3 deletions

View File

@@ -641,7 +641,9 @@ ShaderBasedRenderer::ShaderBasedRenderer()
m_skybox = NULL;
m_spherical_harmonics = new SphericalHarmonics(irr_driver->getAmbientLight().toSColor());
m_nb_static_glowing = 0;
Log::info("ShaderBasedRenderer", "Preloading shaders...");
preloadShaderFiles();
if (CVS->isAZDOEnabled())
{
m_geometry_passes = new GeometryPasses<MultidrawPolicy>();
@@ -657,7 +659,7 @@ ShaderBasedRenderer::ShaderBasedRenderer()
m_geometry_passes = new GeometryPasses<GL3DrawPolicy>();
Log::info("ShaderBasedRenderer", "Geometry will be rendered with GL3 policy.");
}
m_post_processing = new PostProcessing(irr_driver->getVideoDriver());
}
@@ -962,4 +964,60 @@ void ShaderBasedRenderer::renderToTexture(GL3RenderTarget *render_target,
} //renderToTexture
// ----------------------------------------------------------------------------
void ShaderBasedRenderer::preloadShaderFiles()
{
ShaderFilesManager* sfm = ShaderFilesManager::getInstance();
sfm->addShaderFile("object_pass.vert", GL_VERTEX_SHADER);
sfm->addShaderFile("object_pass1.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("splatting.frag", GL_FRAGMENT_SHADER);
if (CVS->supportsHardwareSkinning())
sfm->addShaderFile("skinning.vert", GL_VERTEX_SHADER);
sfm->addShaderFile("transparent.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("coloredquad.vert", GL_VERTEX_SHADER);
sfm->addShaderFile("coloredquad.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("screenquad.vert", GL_VERTEX_SHADER);
sfm->addShaderFile("tonemap.frag", GL_FRAGMENT_SHADER);
if (!GraphicsRestrictions::isDisabled
(GraphicsRestrictions::GR_FRAMEBUFFER_SRGB_WORKING))
sfm->addShaderFile("passthrough.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("billboard.vert", GL_VERTEX_SHADER);
sfm->addShaderFile("billboard.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("pointemitter.vert", GL_VERTEX_SHADER);
sfm->addShaderFile("particle.vert", GL_VERTEX_SHADER);
sfm->addShaderFile("particle.frag", GL_FRAGMENT_SHADER);
if (CVS->supportsIndirectInstancingRendering())
{
sfm->addShaderFile("instanced_object_pass.vert", GL_VERTEX_SHADER);
if (CVS->supportsHardwareSkinning())
sfm->addShaderFile("instanced_skinning.vert", GL_VERTEX_SHADER);
sfm->addShaderFile("instanced_object_pass1.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("instanced_object_pass2.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("instanced_objectref_pass1.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("instanced_objectref_pass2.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("instanced_object_unlit.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("instanced_normalmap.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("instanced_grass.vert", GL_VERTEX_SHADER);
sfm->addShaderFile("instanced_grass_pass2.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("instanced_objectpass_spheremap.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("instanced_detailed_object_pass2.frag", GL_FRAGMENT_SHADER);
}
else
{
sfm->addShaderFile("object_pass2.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("objectref_pass1.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("objectref_pass2.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("object_unlit.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("normalmap.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("grass_pass.vert", GL_VERTEX_SHADER);
sfm->addShaderFile("grass_pass2.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("objectpass_spheremap.frag", GL_FRAGMENT_SHADER);
sfm->addShaderFile("detailed_object_pass2.frag", GL_FRAGMENT_SHADER);
}
} //preloadShaderFiles
#endif // !SERVER_ONLY

View File

@@ -85,7 +85,7 @@ private:
void debugPhysics();
void renderPostProcessing(Camera * const camera);
void preloadShaderFiles();
public:
ShaderBasedRenderer();