aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libjin/graphics/shaders/je_base.shader.h77
-rw-r--r--src/libjin/graphics/shaders/je_jsl_compiler.cpp68
-rw-r--r--src/libjin/graphics/shaders/je_jsl_compiler.h12
-rw-r--r--src/libjin/graphics/shaders/je_shader.h2
4 files changed, 80 insertions, 79 deletions
diff --git a/src/libjin/graphics/shaders/je_base.shader.h b/src/libjin/graphics/shaders/je_base.shader.h
deleted file mode 100644
index 9fed6a1..0000000
--- a/src/libjin/graphics/shaders/je_base.shader.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef __JE_BASE_SHADER_H__
-#define __JE_BASE_SHADER_H__
-
-#include "../../common/je_string.h"
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-static const JinEngine::String SHADER_PROJECTION_MATRIX = "jin_ProjectionMatrix";
-static const JinEngine::String SHADER_MODELVIEW_MATRIX = "jin_ModelViewMatrix";
-static const JinEngine::String SHADER_MAIN_TEXTURE = "jin_MainTexture";
-static const JinEngine::String SHADER_VERTEX_COORDS = "jin_VertexCoords";
-static const JinEngine::String SHADER_TEXTURE_COORDS = "jin_TextureCoords";
-static const JinEngine::String SHADER_VERSION = "#version 130 core \n";
-static const JinEngine::String SHADER_COMMON = R"(
-#define Number float
-#define Texture sampler2D
-#define Canvas sampler2D
-#define Color vec4
-#define Vec2 vec2
-#define Vec3 vec3
-#define Vec4 vec4
-
-#define texel texture2D
-
-struct Vertex
-{
- vec2 xy;
- vec2 uv;
-};
-)";
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-static JinEngine::String 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"
- "in vec2 " + SHADER_VERTEX_COORDS + ";\n"
- "in vec2 " + SHADER_TEXTURE_COORDS + ";\n"
- "out vec4 jin_Color; \n"
- "out vec2 jin_XY; \n"
- "out vec2 jin_UV; \n";
- static JinEngine::String vert_part2 =
- "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"
- " 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"
- "}";
- return vert_part1 + vert + vert_part2;
-}
-
-static JinEngine::String formatFragmentShader(const JinEngine::String& frag)
-{
- static JinEngine::String frag_part1 =
- SHADER_VERSION +
- SHADER_COMMON +
- "uniform Texture " + SHADER_MAIN_TEXTURE + "; \n"
- "in vec4 jin_Color; \n"
- "in vec2 jin_XY; \n"
- "in vec2 jin_UV; \n"
- "out vec4 jin_OutColor; \n";
- static JinEngine::String frag_part2 =
- "void main() \n"
- "{\n"
- " jin_OutColor = frag(jin_Color, " + SHADER_MAIN_TEXTURE + ", Vertex(jin_XY, jin_UV));\n"
- "}\n";
- return frag_part1 + frag + frag_part2;
-}
-
-#endif // __JE_BASE_SHADER_H__ \ No newline at end of file
diff --git a/src/libjin/graphics/shaders/je_jsl_compiler.cpp b/src/libjin/graphics/shaders/je_jsl_compiler.cpp
index 437cacd..3cd8299 100644
--- a/src/libjin/graphics/shaders/je_jsl_compiler.cpp
+++ b/src/libjin/graphics/shaders/je_jsl_compiler.cpp
@@ -1,6 +1,7 @@
#include "../../core/je_configuration.h"
#if defined(jin_graphics) && (jin_graphics & jin_graphics_shader)
+#include "../../common/je_string.h"
#include "../../Filesystem/je_buffer.h"
#include "je_jsl_compiler.h"
@@ -15,7 +16,72 @@ namespace JinEngine
namespace Shaders
{
- #include "je_base.shader.h"
+ JinEngine::String SHADER_PROJECTION_MATRIX = "jin_ProjectionMatrix";
+ JinEngine::String SHADER_MODELVIEW_MATRIX = "jin_ModelViewMatrix";
+ JinEngine::String SHADER_MAIN_TEXTURE = "jin_MainTexture";
+ 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 = R"(
+ #define Number float
+ #define Texture sampler2D
+ #define Canvas sampler2D
+ #define Color vec4
+ #define Vec2 vec2
+ #define Vec3 vec3
+ #define Vec4 vec4
+
+ #define texel texture2D
+
+ struct Vertex
+ {
+ vec2 xy;
+ vec2 uv;
+ };
+ )";
+
+ 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"
+ "in vec2 " + SHADER_VERTEX_COORDS + ";\n"
+ "in vec2 " + SHADER_TEXTURE_COORDS + ";\n"
+ "out vec4 jin_Color; \n"
+ "out vec2 jin_XY; \n"
+ "out vec2 jin_UV; \n";
+ static JinEngine::String vert_part2 =
+ "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"
+ " 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"
+ "}";
+ return vert_part1 + vert + vert_part2;
+ }
+
+ JinEngine::String JSLCompiler::formatFragmentShader(const JinEngine::String& frag)
+ {
+ static JinEngine::String frag_part1 =
+ SHADER_VERSION +
+ SHADER_COMMON +
+ "uniform Texture " + SHADER_MAIN_TEXTURE + "; \n"
+ "in vec4 jin_Color; \n"
+ "in vec2 jin_XY; \n"
+ "in vec2 jin_UV; \n"
+ "out vec4 jin_OutColor; \n";
+ static JinEngine::String frag_part2 =
+ "void main() \n"
+ "{\n"
+ " jin_OutColor = frag(jin_Color, " + SHADER_MAIN_TEXTURE + ", Vertex(jin_XY, jin_UV));\n"
+ "}\n";
+ return frag_part1 + frag + frag_part2;
+ }
bool JSLCompiler::compile(const string& jsl, string* vertex_shader, string* fragment_shader)
{
diff --git a/src/libjin/graphics/shaders/je_jsl_compiler.h b/src/libjin/graphics/shaders/je_jsl_compiler.h
index 337d389..bca55bc 100644
--- a/src/libjin/graphics/shaders/je_jsl_compiler.h
+++ b/src/libjin/graphics/shaders/je_jsl_compiler.h
@@ -6,6 +6,7 @@
#include <string>
+#include "../../common/je_string.h"
#include "../../common/je_singleton.hpp"
namespace JinEngine
@@ -15,6 +16,14 @@ namespace JinEngine
namespace Shaders
{
+ extern JinEngine::String SHADER_PROJECTION_MATRIX;
+ extern JinEngine::String SHADER_MODELVIEW_MATRIX;
+ extern JinEngine::String SHADER_MAIN_TEXTURE;
+ extern JinEngine::String SHADER_VERTEX_COORDS;
+ extern JinEngine::String SHADER_TEXTURE_COORDS;
+ extern JinEngine::String SHADER_VERSION;
+ extern JinEngine::String SHADER_COMMON;
+
///
/// Compile JSL into GLSL.
///
@@ -32,6 +41,9 @@ namespace JinEngine
bool compile(const std::string& jsl, std::string* glsl_vertex, std::string* glsl_fragment);
private:
+ JinEngine::String formatVertexShader(const JinEngine::String& vert);
+
+ JinEngine::String formatFragmentShader(const JinEngine::String& frag);
};
diff --git a/src/libjin/graphics/shaders/je_shader.h b/src/libjin/graphics/shaders/je_shader.h
index 2ccc537..d17531f 100644
--- a/src/libjin/graphics/shaders/je_shader.h
+++ b/src/libjin/graphics/shaders/je_shader.h
@@ -13,7 +13,7 @@
#include "../je_texture.h"
#include "../je_canvas.h"
-#include "je_base.shader.h"
+#include "je_jsl_compiler.h"
namespace JinEngine
{