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);