Prevent shaders from being created when disabled
authorkwolekr <kwolekr@minetest.net>
Sun, 17 Nov 2013 07:46:05 +0000 (02:46 -0500)
committerkwolekr <kwolekr@minetest.net>
Sun, 17 Nov 2013 07:46:05 +0000 (02:46 -0500)
src/mapblock_mesh.cpp

index 6cbc2c5219c2f54404ab6e845611ba05b34a0744..253703ddc82ab58ba21cd6ac3e674c0a3d449117 100644 (file)
@@ -1109,18 +1109,22 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data):
        /*
                Convert MeshCollector to SMesh
        */
+       bool enable_shaders     = g_settings->getBool("enable_shaders");
        bool enable_bumpmapping = g_settings->getBool("enable_bumpmapping");
-       bool enable_shaders = g_settings->getBool("enable_shaders");
-       video::E_MATERIAL_TYPE shadermat1 = m_gamedef->getShaderSource()->
-                       getShader("test_shader_1").material;
-       video::E_MATERIAL_TYPE shadermat2 = m_gamedef->getShaderSource()->
-                       getShader("test_shader_2").material;
-       video::E_MATERIAL_TYPE shadermat3 = m_gamedef->getShaderSource()->
-                       getShader("test_shader_3").material;
-       video::E_MATERIAL_TYPE bumpmaps1 = m_gamedef->getShaderSource()->
-                       getShader("bumpmaps_solids").material;
-       video::E_MATERIAL_TYPE bumpmaps2 = m_gamedef->getShaderSource()->
-                       getShader("bumpmaps_liquids").material;
+
+       video::E_MATERIAL_TYPE  shadermat1, shadermat2, shadermat3, bumpmaps1, bumpmaps2;
+       shadermat1 = shadermat2 = shadermat3 = bumpmaps1 = bumpmaps2 = video::EMT_SOLID;
+
+       if (enable_shaders) {
+               IShaderSource *shdrsrc = m_gamedef->getShaderSource();
+               shadermat1 = shdrsrc->getShader("test_shader_1").material;
+               shadermat2 = shdrsrc->getShader("test_shader_2").material;
+               shadermat3 = shdrsrc->getShader("test_shader_3").material;
+               if (enable_bumpmapping) {
+                       bumpmaps1 = shdrsrc->getShader("bumpmaps_solids").material;
+                       bumpmaps2 = shdrsrc->getShader("bumpmaps_liquids").material;
+               }
+       }
 
        for(u32 i = 0; i < collector.prebuffers.size(); i++)
        {