aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/shaders/je_jsl_compiler.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-12-18 20:57:49 +0800
committerchai <chaifix@163.com>2018-12-18 20:57:49 +0800
commit4957f1c346509b30940371f093139067287b6867 (patch)
tree55b77a5670dcd24593a7cc78019ef81f597436cd /src/libjin/graphics/shaders/je_jsl_compiler.cpp
parentf3d4611f137ed574ae705eec61c0ce80da8af806 (diff)
*shader
Diffstat (limited to 'src/libjin/graphics/shaders/je_jsl_compiler.cpp')
-rw-r--r--src/libjin/graphics/shaders/je_jsl_compiler.cpp42
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.
{