Index: ps/trunk/binaries/data/mods/public/shaders/arb/dummy.fp =================================================================== --- ps/trunk/binaries/data/mods/public/shaders/arb/dummy.fp +++ ps/trunk/binaries/data/mods/public/shaders/arb/dummy.fp @@ -0,0 +1,6 @@ +!!ARBfp1.0 +TEMP color; +MOV color, 0.0; +MOV color.a, 1.0; +MOV result.color, color; +END Index: ps/trunk/binaries/data/mods/public/shaders/arb/dummy.vp =================================================================== --- ps/trunk/binaries/data/mods/public/shaders/arb/dummy.vp +++ ps/trunk/binaries/data/mods/public/shaders/arb/dummy.vp @@ -0,0 +1,12 @@ +!!ARBvp1.0 + +ATTRIB position = vertex.position; + +PARAM transform[4] = { program.local[0..3] }; + +DP4 result.position.x, transform[0], position; +DP4 result.position.y, transform[1], position; +DP4 result.position.z, transform[2], position; +DP4 result.position.w, transform[3], position; + +END Index: ps/trunk/binaries/data/mods/public/shaders/arb/dummy.xml =================================================================== --- ps/trunk/binaries/data/mods/public/shaders/arb/dummy.xml +++ ps/trunk/binaries/data/mods/public/shaders/arb/dummy.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + Index: ps/trunk/binaries/data/mods/public/shaders/glsl/dummy.fs =================================================================== --- ps/trunk/binaries/data/mods/public/shaders/glsl/dummy.fs +++ ps/trunk/binaries/data/mods/public/shaders/glsl/dummy.fs @@ -0,0 +1,6 @@ +#version 110 + +void main() +{ + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); +} Index: ps/trunk/binaries/data/mods/public/shaders/glsl/dummy.vs =================================================================== --- ps/trunk/binaries/data/mods/public/shaders/glsl/dummy.vs +++ ps/trunk/binaries/data/mods/public/shaders/glsl/dummy.vs @@ -0,0 +1,10 @@ +#version 110 + +attribute vec3 a_vertex; + +uniform mat4 transform; + +void main() +{ + gl_Position = transform * vec4(a_vertex, 1.0); +} Index: ps/trunk/binaries/data/mods/public/shaders/glsl/dummy.xml =================================================================== --- ps/trunk/binaries/data/mods/public/shaders/glsl/dummy.xml +++ ps/trunk/binaries/data/mods/public/shaders/glsl/dummy.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + Index: ps/trunk/source/graphics/ShaderProgramFFP.cpp =================================================================== --- ps/trunk/source/graphics/ShaderProgramFFP.cpp +++ ps/trunk/source/graphics/ShaderProgramFFP.cpp @@ -1135,6 +1135,7 @@ /*static*/ CShaderProgram* CShaderProgram::ConstructFFP(const std::string& id, const CShaderDefines& defines) { + LOGWARNING("CShaderProgram::ConstructFFP: '%s': fixed pipeline is going to be removed soon, don't use its programs", id.c_str()); if (id == "dummy") return new CShaderProgramFFP_Dummy(); if (id == "overlayline") Index: ps/trunk/source/renderer/TerrainRenderer.cpp =================================================================== --- ps/trunk/source/renderer/TerrainRenderer.cpp +++ ps/trunk/source/renderer/TerrainRenderer.cpp @@ -59,6 +59,25 @@ /////////////////////////////////////////////////////////////////////////////////////////////// // TerrainRenderer implementation +namespace +{ + +CShaderProgramPtr GetDummyShader() +{ + const char* shaderName; + if (g_RenderingOptions.GetRenderPath() == RenderPath::SHADER) + { + if (g_RenderingOptions.GetPreferGLSL()) + shaderName = "glsl/dummy"; + else + shaderName = "arb/dummy"; + } + else + shaderName = "fixed:dummy"; + return g_Renderer.GetShaderManager().LoadProgram(shaderName, CShaderDefines()); +} + +} // anonymous namespace /** * TerrainRenderer keeps track of which phase it is in, to detect @@ -185,7 +204,7 @@ if (visiblePatches.empty() && visibleDecals.empty()) return; - CShaderProgramPtr dummyShader = g_Renderer.GetShaderManager().LoadProgram("fixed:dummy", CShaderDefines()); + CShaderProgramPtr dummyShader = GetDummyShader(); dummyShader->Bind(); // render the solid black sides of the map first @@ -403,7 +422,7 @@ glLoadMatrixf(&textureMatrix._11); glMatrixMode(GL_MODELVIEW); - CShaderProgramPtr dummyShader = g_Renderer.GetShaderManager().LoadProgram("fixed:dummy", CShaderDefines()); + CShaderProgramPtr dummyShader = GetDummyShader(); dummyShader->Bind(); CPatchRData::RenderStreams(visiblePatches, dummyShader, STREAM_POS|STREAM_POSTOUV0); dummyShader->Unbind(); @@ -540,7 +559,7 @@ #if CONFIG2_GLES #warning TODO: implement TerrainRenderer::RenderPatches for GLES #else - CShaderProgramPtr dummyShader = g_Renderer.GetShaderManager().LoadProgram("fixed:dummy", CShaderDefines()); + CShaderProgramPtr dummyShader = GetDummyShader(); dummyShader->Bind(); glEnableClientState(GL_VERTEX_ARRAY); @@ -903,7 +922,7 @@ glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE); glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_ALPHA); - CShaderProgramPtr dummyShader = g_Renderer.GetShaderManager().LoadProgram("fixed:dummy", CShaderDefines()); + CShaderProgramPtr dummyShader = GetDummyShader(); dummyShader->Bind(); glEnableClientState(GL_VERTEX_ARRAY);