diff options
Diffstat (limited to 'src/libjin/graphics/shaders/je_jsl_compiler.cpp')
-rw-r--r-- | src/libjin/graphics/shaders/je_jsl_compiler.cpp | 14 |
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; } |