diff options
author | chai <chaifix@163.com> | 2018-12-18 20:57:49 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-12-18 20:57:49 +0800 |
commit | 4957f1c346509b30940371f093139067287b6867 (patch) | |
tree | 55b77a5670dcd24593a7cc78019ef81f597436cd /src/libjin/graphics/shaders/je_jsl_compiler.cpp | |
parent | f3d4611f137ed574ae705eec61c0ce80da8af806 (diff) |
*shader
Diffstat (limited to 'src/libjin/graphics/shaders/je_jsl_compiler.cpp')
-rw-r--r-- | src/libjin/graphics/shaders/je_jsl_compiler.cpp | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/src/libjin/graphics/shaders/je_jsl_compiler.cpp b/src/libjin/graphics/shaders/je_jsl_compiler.cpp index 1be4e1c..080e668 100644 --- a/src/libjin/graphics/shaders/je_jsl_compiler.cpp +++ b/src/libjin/graphics/shaders/je_jsl_compiler.cpp @@ -22,7 +22,8 @@ namespace JinEngine JinEngine::String SHADER_VERTEX_COORDS = "jin_VertexCoords"; JinEngine::String SHADER_TEXTURE_COORDS = "jin_TextureCoords"; JinEngine::String SHADER_VERSION = "#version 130 core \n"; - JinEngine::String SHADER_COMMON = + JinEngine::String SHADER_DEFINITIONS = + // Types "#define Number float \n" "#define Texture sampler2D \n" "#define Canvas sampler2D \n" @@ -30,29 +31,33 @@ namespace JinEngine "#define Vec2 vec2 \n" "#define Vec3 vec3 \n" "#define Vec4 vec4 \n" - " \n" + // Functions "#define texel texture2D \n" - " \n" + // Structs "struct Vertex \n" "{ \n" " vec2 xy; \n" " vec2 uv; \n" "}; \n" "\n"; + JinEngine::String SHADER_UNIFORMS = + "uniform Texture " + SHADER_MAIN_TEXTURE + ";\n" + "uniform mat4 " + SHADER_PROJECTION_MATRIX + ";\n" + "uniform mat4 " + SHADER_MODELVIEW_MATRIX + ";\n"; JinEngine::String JSLCompiler::formatVertexShader(const JinEngine::String& vert) { static JinEngine::String vert_part1 = SHADER_VERSION + - SHADER_COMMON + - "uniform mat4 " + SHADER_PROJECTION_MATRIX + ";\n" - "uniform mat4 " + SHADER_MODELVIEW_MATRIX + ";\n" + SHADER_DEFINITIONS + + SHADER_UNIFORMS + "in vec2 " + SHADER_VERTEX_COORDS + ";\n" - "in vec2 " + SHADER_TEXTURE_COORDS + ";\n" + "in vec2 " + SHADER_TEXTURE_COORDS + ";\n"; + static JinEngine::String vert_part2 = + "\n" "out vec4 jin_Color; \n" "out vec2 jin_XY; \n" - "out vec2 jin_UV; \n"; - static JinEngine::String vert_part2 = + "out vec2 jin_UV; \n" "void main()\n" "{\n" " vec4 v = " + SHADER_MODELVIEW_MATRIX + " * vec4(" + SHADER_VERTEX_COORDS + ", 0, 1.0);\n" @@ -69,13 +74,14 @@ namespace JinEngine { static JinEngine::String frag_part1 = SHADER_VERSION + - SHADER_COMMON + - "uniform Texture " + SHADER_MAIN_TEXTURE + "; \n" + SHADER_DEFINITIONS + + SHADER_UNIFORMS + "in vec4 jin_Color; \n" "in vec2 jin_XY; \n" - "in vec2 jin_UV; \n" - "out vec4 jin_OutColor; \n"; + "in vec2 jin_UV; \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" @@ -90,11 +96,11 @@ namespace JinEngine int loc_END_VERTEX_SHADER = jsl.find("#END_VERTEX_SHADER"); int loc_FRAGMENT_SHADER = jsl.find("#FRAGMENT_SHADER"); int loc_END_FRAGMENT_SHADER = jsl.find("#END_FRAGMENT_SHADER"); - if (loc_VERTEX_SHADER == string::npos - || loc_END_VERTEX_SHADER == string::npos - || loc_FRAGMENT_SHADER == string::npos - || loc_END_FRAGMENT_SHADER == string::npos - ) + if ( loc_VERTEX_SHADER == string::npos + || loc_END_VERTEX_SHADER == string::npos + || loc_FRAGMENT_SHADER == string::npos + || loc_END_FRAGMENT_SHADER == string::npos + ) return false; // Load vertex and fragment shader source into buffers. { |