aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/shaders/je_jsl_compiler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/graphics/shaders/je_jsl_compiler.cpp')
-rw-r--r--src/libjin/graphics/shaders/je_jsl_compiler.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/libjin/graphics/shaders/je_jsl_compiler.cpp b/src/libjin/graphics/shaders/je_jsl_compiler.cpp
index e04958c..74613ad 100644
--- a/src/libjin/graphics/shaders/je_jsl_compiler.cpp
+++ b/src/libjin/graphics/shaders/je_jsl_compiler.cpp
@@ -21,6 +21,7 @@ namespace JinEngine
JinEngine::String SHADER_MAIN_TEXTURE = "jin_MainTexture";
JinEngine::String SHADER_VERTEX_COORDS = "jin_VertexCoords";
JinEngine::String SHADER_TEXTURE_COORDS = "jin_TextureCoords";
+ JinEngine::String SHADER_VERTEX_COLOR = "jin_VertexColor";
JinEngine::String SHADER_VERSION = "#version 130 core \n";
JinEngine::String SHADER_DEFINITIONS =
// Types
@@ -38,6 +39,7 @@ namespace JinEngine
"{ \n"
" vec2 xy; \n"
" vec2 uv; \n"
+ " vec4 color; \n"
"}; \n"
"\n";
JinEngine::String SHADER_UNIFORMS =
@@ -52,20 +54,23 @@ namespace JinEngine
SHADER_DEFINITIONS +
SHADER_UNIFORMS +
"in vec2 " + SHADER_VERTEX_COORDS + "; \n"
- "in vec2 " + SHADER_TEXTURE_COORDS + "; \n";
+ "in vec2 " + SHADER_TEXTURE_COORDS + "; \n"
+ "in vec4 " + SHADER_VERTEX_COLOR + "; \n"; // Color data in unsigned byte.
static JinEngine::String vert_part2 =
"\n"
"out vec4 jin_Color; \n"
"out vec2 jin_XY; \n"
"out vec2 jin_UV; \n"
+ "out vec4 jin_COLOR; \n"
"void main()\n"
"{\n"
" vec4 v = " + SHADER_MODELVIEW_MATRIX + " * vec4(" + SHADER_VERTEX_COORDS + ", 0, 1.0); \n"
- " Vertex _v = vert(Vertex(v.xy, " + SHADER_TEXTURE_COORDS + ")); \n"
+ " Vertex _v = vert(Vertex(v.xy, " + SHADER_TEXTURE_COORDS + ", " + SHADER_VERTEX_COLOR + ")); \n"
" gl_Position = " + SHADER_PROJECTION_MATRIX + " * vec4(_v.xy, 0, 1.0f); \n"
" jin_Color = gl_Color; \n"
" jin_XY = _v.xy; \n"
" jin_UV = _v.uv; \n"
+ " jin_COLOR = _v.color; \n"
"}";
return vert_part1 + vert + vert_part2;
}
@@ -78,13 +83,14 @@ namespace JinEngine
SHADER_UNIFORMS +
"in vec4 jin_Color; \n"
"in vec2 jin_XY; \n"
- "in vec2 jin_UV; \n";
+ "in vec2 jin_UV; \n"
+ "in vec4 jin_COLOR; \n";
static JinEngine::String frag_part2 =
"\n"
"out vec4 jin_OutColor; \n"
"void main() \n"
"{ \n"
- " jin_OutColor = frag(jin_Color, " + SHADER_MAIN_TEXTURE + ", Vertex(jin_XY, jin_UV)); \n"
+ " jin_OutColor = frag(jin_Color, " + SHADER_MAIN_TEXTURE + ", Vertex(jin_XY, jin_UV, jin_COLOR)); \n"
"} \n";
return frag_part1 + frag + frag_part2;
}