diff --git a/binaries/data/mods/public/shaders/arb/model_solid.vp b/binaries/data/mods/public/shaders/arb/model_solid.vp new file mode 100644 index 0000000000..28b2461244 --- /dev/null +++ b/binaries/data/mods/public/shaders/arb/model_solid.vp @@ -0,0 +1,22 @@ +!!ARBvp1.0 +#ifdef USE_INSTANCING + PARAM instancingTransform[4] = { program.local[0..3] }; + TEMP position; + DP4 position.x, instancingTransform[0], vertex.position; + DP4 position.y, instancingTransform[1], vertex.position; + DP4 position.z, instancingTransform[2], vertex.position; + MOV position.w, 1.0; +#else + ATTRIB position = vertex.position; +#endif + +PARAM transform[4] = { program.local[4..7] }; + +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; + +MOV result.color, vertex.color; + +END diff --git a/binaries/data/mods/public/shaders/arb/model_solid.xml b/binaries/data/mods/public/shaders/arb/model_solid.xml index fae78742b4..f6f7c2d795 100644 --- a/binaries/data/mods/public/shaders/arb/model_solid.xml +++ b/binaries/data/mods/public/shaders/arb/model_solid.xml @@ -1,7 +1,7 @@ - + diff --git a/binaries/data/mods/public/shaders/arb/model_solid_player.xml b/binaries/data/mods/public/shaders/arb/model_solid_player.xml index 652a01c7b2..d1c5a716e7 100644 --- a/binaries/data/mods/public/shaders/arb/model_solid_player.xml +++ b/binaries/data/mods/public/shaders/arb/model_solid_player.xml @@ -1,7 +1,7 @@ - + diff --git a/binaries/data/mods/public/shaders/arb/solid.fp b/binaries/data/mods/public/shaders/arb/solid.fp index 4c67baec5e..8c80de1116 100644 --- a/binaries/data/mods/public/shaders/arb/solid.fp +++ b/binaries/data/mods/public/shaders/arb/solid.fp @@ -1,3 +1,7 @@ !!ARBfp1.0 -MOV result.color, fragment.color; + +PARAM color = program.local[0]; + +MOV result.color, color; + END diff --git a/binaries/data/mods/public/shaders/arb/solid.vp b/binaries/data/mods/public/shaders/arb/solid.vp index 28b2461244..71ffba043a 100644 --- a/binaries/data/mods/public/shaders/arb/solid.vp +++ b/binaries/data/mods/public/shaders/arb/solid.vp @@ -1,22 +1,14 @@ !!ARBvp1.0 -#ifdef USE_INSTANCING - PARAM instancingTransform[4] = { program.local[0..3] }; - TEMP position; - DP4 position.x, instancingTransform[0], vertex.position; - DP4 position.y, instancingTransform[1], vertex.position; - DP4 position.z, instancingTransform[2], vertex.position; - MOV position.w, 1.0; -#else - ATTRIB position = vertex.position; -#endif -PARAM transform[4] = { program.local[4..7] }; +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; +TEMP position; -MOV result.color, vertex.color; +DP4 position.x, transform[0], vertex.position; +DP4 position.y, transform[1], vertex.position; +DP4 position.z, transform[2], vertex.position; +MOV position.w, 1.0; + +MOV result.position, position; END diff --git a/binaries/data/mods/public/shaders/arb/solid.xml b/binaries/data/mods/public/shaders/arb/solid.xml new file mode 100644 index 0000000000..efa7e90e92 --- /dev/null +++ b/binaries/data/mods/public/shaders/arb/solid.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/binaries/data/mods/public/shaders/effects/solid.xml b/binaries/data/mods/public/shaders/effects/solid.xml new file mode 100644 index 0000000000..6a99b45b21 --- /dev/null +++ b/binaries/data/mods/public/shaders/effects/solid.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/binaries/data/mods/public/shaders/glsl/solid.vs b/binaries/data/mods/public/shaders/glsl/solid.vs new file mode 100644 index 0000000000..a94bb0a0a5 --- /dev/null +++ b/binaries/data/mods/public/shaders/glsl/solid.vs @@ -0,0 +1,10 @@ +#version 110 + +uniform mat4 transform; + +attribute vec3 a_vertex; + +void main() +{ + gl_Position = transform * vec4(a_vertex, 1.0); +} diff --git a/binaries/data/mods/public/shaders/glsl/solid.xml b/binaries/data/mods/public/shaders/glsl/solid.xml new file mode 100644 index 0000000000..3670d41aa8 --- /dev/null +++ b/binaries/data/mods/public/shaders/glsl/solid.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/source/ps/CStrInternStatic.h b/source/ps/CStrInternStatic.h index 368c8a7122..d0b0cc34ff 100644 --- a/source/ps/CStrInternStatic.h +++ b/source/ps/CStrInternStatic.h @@ -150,6 +150,7 @@ X2(skinBlendMatrices_0, "skinBlendMatrices[0]") X(skyBoxRot) X(skyCube) X(sky_simple) +X(solid) X(sunColor) X(sunDir) X(tex) diff --git a/source/renderer/DebugRenderer.cpp b/source/renderer/DebugRenderer.cpp index d4327dbf66..89458398fa 100644 --- a/source/renderer/DebugRenderer.cpp +++ b/source/renderer/DebugRenderer.cpp @@ -226,7 +226,7 @@ void CDebugRenderer::DrawBoundingBox(const CBoundingBoxAligned& boundingBox, con void CDebugRenderer::DrawBoundingBox(const CBoundingBoxAligned& boundingBox, const CColor& color, const CMatrix3D& transform) { - CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); + CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_solid); shaderTech->BeginPass(); CShaderProgramPtr shader = shaderTech->GetShader(); @@ -272,7 +272,7 @@ void CDebugRenderer::DrawBoundingBoxOutline(const CBoundingBoxAligned& boundingB void CDebugRenderer::DrawBoundingBoxOutline(const CBoundingBoxAligned& boundingBox, const CColor& color, const CMatrix3D& transform) { - CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); + CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_solid); shaderTech->BeginPass(); CShaderProgramPtr shader = shaderTech->GetShader(); @@ -315,7 +315,7 @@ void CDebugRenderer::DrawBoundingBoxOutline(const CBoundingBoxAligned& boundingB void CDebugRenderer::DrawBrush(const CBrush& brush, const CColor& color) { - CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); + CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_solid); shaderTech->BeginPass(); CShaderProgramPtr shader = shaderTech->GetShader(); @@ -362,7 +362,7 @@ void CDebugRenderer::DrawBrush(const CBrush& brush, const CColor& color) void CDebugRenderer::DrawBrushOutline(const CBrush& brush, const CColor& color) { - CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); + CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_solid); shaderTech->BeginPass(); CShaderProgramPtr shader = shaderTech->GetShader(); diff --git a/source/renderer/SilhouetteRenderer.cpp b/source/renderer/SilhouetteRenderer.cpp index bc11153ef5..66fb7389b3 100644 --- a/source/renderer/SilhouetteRenderer.cpp +++ b/source/renderer/SilhouetteRenderer.cpp @@ -464,7 +464,7 @@ void SilhouetteRenderer::RenderDebugOverlays(const CCamera& UNUSED(camera)) m = proj * m; - CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); + CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_solid); shaderTech->BeginPass(); CShaderProgramPtr shader = shaderTech->GetShader(); diff --git a/source/renderer/TerrainRenderer.cpp b/source/renderer/TerrainRenderer.cpp index 21457a2858..6e3eb3ee64 100644 --- a/source/renderer/TerrainRenderer.cpp +++ b/source/renderer/TerrainRenderer.cpp @@ -276,7 +276,7 @@ void TerrainRenderer::RenderTerrainShader(const CShaderDefines& context, int cul return; // render the solid black sides of the map first - CShaderTechniquePtr techSolid = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); + CShaderTechniquePtr techSolid = g_Renderer.GetShaderManager().LoadEffect(str_solid); techSolid->BeginPass(); CShaderProgramPtr shaderSolid = techSolid->GetShader(); shaderSolid->Uniform(str_transform, g_Renderer.GetViewCamera().GetViewProjection());