1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
#ifndef __JE_BASE_SHADER_H__
#define __JE_BASE_SHADER_H__
static const char* base_shared = 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 const int BASE_SHARED_SIZE = strlen(base_shared);
static const char* base_vertex = R"(
#version 130 core
%s
uniform mat4 jin_ProjectionMatrix;
uniform mat4 jin_ModelMatrix;
in vec2 jin_VertexCoords;
in vec2 jin_TextureCoords;
out vec4 jin_Color;
out vec2 jin_XY;
out vec2 jin_UV;
%s
void main()
{
vec4 v = jin_ModelMatrix * vec4(jin_VertexCoords, 0, 1.0);
Vertex _v = vert(Vertex(v.xy, jin_TextureCoords));
gl_Position = jin_ProjectionMatrix * vec4(_v.xy, 0, 1.0f);
jin_Color = gl_Color;
jin_XY = _v.xy;
jin_UV = _v.uv;
}
)";
static const int BASE_VERTEX_SHADER_SIZE = strlen(base_vertex) + BASE_SHARED_SIZE;
#define formatVertexShader(buf, program) sprintf(buf,base_vertex, base_shared, program)
static const char* base_fragment = R"(
#version 130 core
%s
uniform Texture jin_MainTexture;
in vec4 jin_Color;
in vec2 jin_XY;
in vec2 jin_UV;
out vec4 jin_OutColor;
%s
void main()
{
jin_OutColor = frag(jin_Color, jin_MainTexture, Vertex(jin_XY, jin_UV));
}
)";
static const int BASE_FRAGMENT_SHADER_SIZE = strlen(base_fragment) + BASE_SHARED_SIZE;
#define formatFragmentShader(buf, program) sprintf(buf, base_fragment, base_shared, program)
static const char* SHADER_PROJECTION_MATRIX = "jin_ProjectionMatrix";
static const char* SHADER_MODEL_MATRIX = "jin_ModelMatrix";
static const char* SHADER_MAIN_TEXTURE = "jin_MainTexture";
static const char* SHADER_VERTEX_COORDS = "jin_VertexCoords";
static const char* SHADER_TEXTURE_COORDS = "jin_TextureCoords";
#endif // __JE_BASE_SHADER_H__
|