diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2023-02-24 19:29:27 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2023-02-24 19:29:27 +0000 |
commit | 2c6257a4460de7b0c75723aebf96cf265e078530 (patch) | |
tree | f1abacfc6f64b5718a7ef6398001655f0103bf04 | |
parent | Fixed up vector operator+ element (diff) | |
download | ilt-2c6257a4460de7b0c75723aebf96cf265e078530.tar.bz2 ilt-2c6257a4460de7b0c75723aebf96cf265e078530.tar.xz ilt-2c6257a4460de7b0c75723aebf96cf265e078530.zip |
Support for model colours mixed with textures
-rw-r--r-- | gfx/gl/shaders/basicShader.fs | 3 | ||||
-rw-r--r-- | gfx/gl/shaders/basicShader.vs | 3 | ||||
-rw-r--r-- | gfx/gl/shaders/landmassShader.vs | 3 | ||||
-rw-r--r-- | gfx/models/mesh.cpp | 2 | ||||
-rw-r--r-- | gfx/models/vertex.hpp | 5 |
5 files changed, 12 insertions, 4 deletions
diff --git a/gfx/gl/shaders/basicShader.fs b/gfx/gl/shaders/basicShader.fs index 9c4945b..93f0a3f 100644 --- a/gfx/gl/shaders/basicShader.fs +++ b/gfx/gl/shaders/basicShader.fs @@ -3,6 +3,7 @@ in vec3 FragPos; in vec2 TexCoords; in vec3 Normal; +in vec4 Colour; out vec4 gPosition; out vec4 gNormal; @@ -16,5 +17,5 @@ main() float clear = round(texture(texture0, TexCoords).a); gPosition = vec4(FragPos, clear); gNormal = vec4(Normal, clear); - gAlbedoSpec = texture(texture0, TexCoords); + gAlbedoSpec = mix(texture(texture0, TexCoords), vec4(Colour.rgb, 1), Colour.a); } diff --git a/gfx/gl/shaders/basicShader.vs b/gfx/gl/shaders/basicShader.vs index bc7ea5d..ff9a401 100644 --- a/gfx/gl/shaders/basicShader.vs +++ b/gfx/gl/shaders/basicShader.vs @@ -3,10 +3,12 @@ in vec3 position; in vec2 texCoord; in vec3 normal; +in vec4 colour; out vec3 FragPos; out vec2 TexCoords; out vec3 Normal; +out vec4 Colour; uniform mat4 viewProjection; uniform mat4 model; @@ -19,6 +21,7 @@ main() FragPos = worldPos.xyz; TexCoords = texCoord; Normal = (model * vec4(normal, 0.0)).xyz; + Colour = colour; gl_Position = viewProjection * worldPos; } diff --git a/gfx/gl/shaders/landmassShader.vs b/gfx/gl/shaders/landmassShader.vs index 6bf39b0..30c4ef4 100644 --- a/gfx/gl/shaders/landmassShader.vs +++ b/gfx/gl/shaders/landmassShader.vs @@ -3,10 +3,12 @@ in vec3 position; in vec2 texCoord; in vec3 normal; +in vec4 colour; out vec3 FragPos; out vec2 TexCoords; out vec3 Normal; +out vec4 Colour; uniform mat4 viewProjection; @@ -16,6 +18,7 @@ main() FragPos = position; TexCoords = texCoord; Normal = normal; + Colour = colour; gl_Position = viewProjection * vec4(position, 1.0); } diff --git a/gfx/models/mesh.cpp b/gfx/models/mesh.cpp index 85be84c..3db1ad5 100644 --- a/gfx/models/mesh.cpp +++ b/gfx/models/mesh.cpp @@ -7,7 +7,7 @@ Mesh::Mesh(const std::span<const Vertex> vertices, const std::span<const unsigned int> indices, GLenum m) :
m_numIndices {static_cast<GLsizei>(indices.size())}, mode {m}
{
- VertexArrayObject<Vertex>::configure<&Vertex::pos, &Vertex::texCoord, &Vertex::normal>(
+ VertexArrayObject<Vertex>::configure<&Vertex::pos, &Vertex::texCoord, &Vertex::normal, &Vertex::colour>(
m_vertexArrayObject, m_vertexArrayBuffers[0], m_vertexArrayBuffers[1], vertices, indices);
}
diff --git a/gfx/models/vertex.hpp b/gfx/models/vertex.hpp index 095c82f..325aab1 100644 --- a/gfx/models/vertex.hpp +++ b/gfx/models/vertex.hpp @@ -4,12 +4,13 @@ class Vertex { public: - constexpr Vertex(glm::vec3 pos, glm::vec2 texCoord, glm::vec3 normal) : - pos {std::move(pos)}, texCoord {std::move(texCoord)}, normal {std::move(normal)} + constexpr Vertex(glm::vec3 pos, glm::vec2 texCoord, glm::vec3 normal, glm::vec4 colour = {}) : + pos {std::move(pos)}, texCoord {std::move(texCoord)}, normal {std::move(normal)}, colour {std::move(colour)} { } glm::vec3 pos; glm::vec2 texCoord; glm::vec3 normal; + glm::vec4 colour; }; |