summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2021-03-03 00:20:21 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2021-03-03 00:20:25 +0000
commit3dbf5028eec53f661a018ddbd969bd26aa7748b5 (patch)
tree2eb0e548461f24397a9f16da8455dd11971061fb
parentOnly calculate and bind the model transform if the shader program uses it (diff)
downloadilt-3dbf5028eec53f661a018ddbd969bd26aa7748b5.tar.bz2
ilt-3dbf5028eec53f661a018ddbd969bd26aa7748b5.tar.xz
ilt-3dbf5028eec53f661a018ddbd969bd26aa7748b5.zip
Create and use a shader program for things with absolute position
Rails in this case.
-rw-r--r--game/network/rail.cpp2
-rw-r--r--gfx/gl/shader.cpp4
-rw-r--r--gfx/gl/shader.h4
3 files changed, 7 insertions, 3 deletions
diff --git a/game/network/rail.cpp b/game/network/rail.cpp
index 6834989..d095e38 100644
--- a/game/network/rail.cpp
+++ b/game/network/rail.cpp
@@ -98,7 +98,7 @@ RailLinks::addLinksBetween(glm::vec3 start, glm::vec3 end)
void
RailLinks::render(const Shader & shader) const
{
- shader.setModel(Location {});
+ shader.setModel(Location {}, Shader::Program::StaticPos);
texture->Bind();
links.apply(&RailLink::render, shader);
}
diff --git a/gfx/gl/shader.cpp b/gfx/gl/shader.cpp
index 3021257..b97d6fc 100644
--- a/gfx/gl/shader.cpp
+++ b/gfx/gl/shader.cpp
@@ -45,6 +45,10 @@ Shader::Shader() :
{
landmassShader_vs.compile(),
landmassShader_fs.compile(),
+ },
+ {
+ landmassShader_vs.compile(),
+ basicShader_fs.compile(),
}}}
{
}
diff --git a/gfx/gl/shader.h b/gfx/gl/shader.h
index f1fe705..8b18e99 100644
--- a/gfx/gl/shader.h
+++ b/gfx/gl/shader.h
@@ -11,7 +11,7 @@ class Location;
class Shader {
public:
- enum class Program { Basic = 0, Water = 1, LandMass = 2 };
+ enum class Program { Basic = 0, Water = 1, LandMass = 2, StaticPos = 3 };
Shader();
@@ -31,7 +31,7 @@ private:
GLint viewProjection_uniform, model_uniform;
};
- std::array<ProgramHandle, 3> programs;
+ std::array<ProgramHandle, 4> programs;
};
#endif