aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-01-06 23:33:08 +0800
committerchai <chaifix@163.com>2019-01-06 23:33:08 +0800
commitda056982e50bdd9cb9f944691cc88ca98b053b77 (patch)
tree490842e50d98f48affd38ff23f5bb7fda1937a7f
parentc446e8186afa31c8d346383c0db8b8070fa563cd (diff)
*misc
-rw-r--r--bin/jin.exebin573440 -> 573440 bytes
-rw-r--r--samples/post-processing/config.lua2
-rw-r--r--samples/post-processing/shaders/rgb-split.jsl2
-rw-r--r--src/libjin/graphics/fonts/je_texture_font.cpp3
-rw-r--r--src/libjin/graphics/fonts/je_ttf.cpp3
-rw-r--r--src/libjin/graphics/je_graphic.cpp8
-rw-r--r--src/libjin/graphics/je_mesh.cpp4
-rw-r--r--src/libjin/graphics/je_shapes.cpp20
-rw-r--r--src/libjin/graphics/shaders/je_shader.cpp22
-rw-r--r--src/libjin/graphics/shaders/je_shader.h9
10 files changed, 51 insertions, 22 deletions
diff --git a/bin/jin.exe b/bin/jin.exe
index 1478b8e..92e0cbc 100644
--- a/bin/jin.exe
+++ b/bin/jin.exe
Binary files differ
diff --git a/samples/post-processing/config.lua b/samples/post-processing/config.lua
index 095ee28..3c6ff07 100644
--- a/samples/post-processing/config.lua
+++ b/samples/post-processing/config.lua
@@ -1,6 +1,6 @@
return
{
- title = "window form",
+ title = "post-processing",
icon = "splash.png",
vsync = true
} \ No newline at end of file
diff --git a/samples/post-processing/shaders/rgb-split.jsl b/samples/post-processing/shaders/rgb-split.jsl
index 41e7762..aba401b 100644
--- a/samples/post-processing/shaders/rgb-split.jsl
+++ b/samples/post-processing/shaders/rgb-split.jsl
@@ -9,7 +9,7 @@ Vertex vert(Vertex v)
Color frag(Color col, Texture tex, Vertex v)
{
float t = jin_Time.x;
- t = 0.02;
+ //t = 0.02;
float a = abs(sin(t)) * 3.14;
vec2 p = vec2(0.5*cos(a) + 0.5, 0.5*sin(a) + 0.5);
vec2 dir = v.uv - p;
diff --git a/src/libjin/graphics/fonts/je_texture_font.cpp b/src/libjin/graphics/fonts/je_texture_font.cpp
index 016367c..49ac797 100644
--- a/src/libjin/graphics/fonts/je_texture_font.cpp
+++ b/src/libjin/graphics/fonts/je_texture_font.cpp
@@ -276,7 +276,7 @@ namespace JinEngine
const vector<GlyphArrayDrawInfo>& glyphinfolist = page->glyphinfolist;
const vector<GlyphVertex>& glyphvertices = page->glyphvertices;
Matrix modelMatrix = gl.getModelViewMatrix(x, y, 1, 1, 0, 0, 0);
- shader->prepare()
+ shader->begin()
.sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
.sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
for (int i = 0; i < glyphinfolist.size(); ++i)
@@ -288,6 +288,7 @@ namespace JinEngine
gl.drawArrays(GL_QUADS, 0, info.count);
gl.bindTexture(0);
}
+ shader->end();
}
void TextureFont::render(const Content& text, int x, int y, int lineheight, int spacing)
diff --git a/src/libjin/graphics/fonts/je_ttf.cpp b/src/libjin/graphics/fonts/je_ttf.cpp
index 1df7fa7..89aa096 100644
--- a/src/libjin/graphics/fonts/je_ttf.cpp
+++ b/src/libjin/graphics/fonts/je_ttf.cpp
@@ -295,7 +295,7 @@ namespace JinEngine
const vector<GlyphArrayDrawInfo>& glyphinfolist = page->glyphinfolist;
const vector<GlyphVertex>& glyphvertices = page->glyphvertices;
Matrix modelMatrix = gl.getModelViewMatrix(x, y, 1, 1, 0, 0, 0);
- shader->prepare()
+ shader->begin()
.sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
.sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
for (int i = 0; i < glyphinfolist.size(); ++i)
@@ -307,6 +307,7 @@ namespace JinEngine
gl.drawArrays(GL_QUADS, 0, info.count);
gl.bindTexture(0);
}
+ shader->end();
}
void TTF::render(const Text& text, int x, int y, int lineheight, int spacing /* = 0 */)
diff --git a/src/libjin/graphics/je_graphic.cpp b/src/libjin/graphics/je_graphic.cpp
index 18dbf42..e2c22d1 100644
--- a/src/libjin/graphics/je_graphic.cpp
+++ b/src/libjin/graphics/je_graphic.cpp
@@ -71,7 +71,7 @@ namespace JinEngine
textureCoords[6] = 1; textureCoords[7] = 0;
// Set shader.
Shader* shader = gl.getShader();
- shader->prepare()
+ shader->begin()
.sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix)
.sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
.uploadVertices(2, GL_FLOAT, 0, vertexCoords)
@@ -80,6 +80,8 @@ namespace JinEngine
gl.bindTexture(getGLTexture());
gl.drawArrays(GL_QUADS, 0, 4);
gl.bindTexture(0);
+
+ shader->end();
}
void Graphic::render(const Math::Quad& slice, float x, float y, float sx, float sy, float r, float ax, float ay) const
@@ -105,7 +107,7 @@ namespace JinEngine
Math::Matrix modelViewMatrix = gl.getModelViewMatrix(x, y, sx, sy, r, ax, ay);
Shader* shader = gl.getShader();
- shader->prepare()
+ shader->begin()
.sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix)
.sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
.uploadVertices(2, GL_FLOAT, 0, vertexCoords)
@@ -114,6 +116,8 @@ namespace JinEngine
gl.bindTexture(getGLTexture());
gl.drawArrays(GL_QUADS, 0, 4);
gl.bindTexture(0);
+
+ shader->end();
}
void Graphic::render(const Math::Transform& transform) const
diff --git a/src/libjin/graphics/je_mesh.cpp b/src/libjin/graphics/je_mesh.cpp
index 2d453b0..e3bebe6 100644
--- a/src/libjin/graphics/je_mesh.cpp
+++ b/src/libjin/graphics/je_mesh.cpp
@@ -60,7 +60,7 @@ namespace JinEngine
Math::Matrix modelViewMatrix = gl.getModelViewMatrix(x, y, sx, sy, r, ox, oy);
Shader* shader = gl.getShader();
- shader->prepare()
+ shader->begin()
.sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix)
.sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
.uploadVertices(2, GL_FLOAT, sizeof(Vertex), &(mVertices[0].xy))
@@ -70,6 +70,8 @@ namespace JinEngine
gl.bindTexture(mGraphic->getGLTexture());
gl.drawArrays(GL_POLYGON, 0, mVertices.size());
gl.bindTexture(0);
+
+ shader->end();
};
} // namespace Graphics
diff --git a/src/libjin/graphics/je_shapes.cpp b/src/libjin/graphics/je_shapes.cpp
index ce5c7e7..493e173 100644
--- a/src/libjin/graphics/je_shapes.cpp
+++ b/src/libjin/graphics/je_shapes.cpp
@@ -25,12 +25,14 @@ namespace JinEngine
Matrix modelMatrix = gl.getModelViewMatrix();
Shader* shader = gl.getShader();
- shader->prepare()
+ shader->begin()
.uploadVertices(2, GL_FLOAT, 0, verts)
.sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
.sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
gl.drawArrays(GL_POINTS, 0, 1);
+
+ shader->end();
}
void points(int n, GLshort* p)
@@ -38,12 +40,14 @@ namespace JinEngine
Matrix modelMatrix = gl.getModelViewMatrix();
Shader* shader = gl.getShader();
- shader->prepare()
+ shader->begin()
.uploadVertices(2, GL_SHORT, 0, p)
.sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
.sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
gl.drawArrays(GL_POINTS, 0, n);
+
+ shader->end();
}
void line(int x1, int y1, int x2, int y2)
@@ -56,12 +60,14 @@ namespace JinEngine
Matrix modelMatrix = gl.getModelViewMatrix();
Shader* shader = gl.getShader();
- shader->prepare()
+ shader->begin()
.uploadVertices(2, GL_FLOAT, 0, verts)
.sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
.sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
gl.drawArrays(GL_LINES, 0, 2);
+
+ shader->end();
}
void circle(RenderMode mode, int x, int y, int r)
@@ -105,12 +111,14 @@ namespace JinEngine
{
Shader* shader = gl.getShader();
Matrix modelMatrix = gl.getModelViewMatrix();
- shader->prepare()
+ shader->begin()
.sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
.sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
.uploadVertices(2, GL_FLOAT, 0, p);
gl.drawArrays(GL_LINE_LOOP, 0, count);
+
+ shader->end();
}
void polygon(RenderMode mode, float* p, int count)
@@ -123,12 +131,14 @@ namespace JinEngine
{
Shader* shader = gl.getShader();
Matrix modelMatrix = gl.getModelViewMatrix();
- shader->prepare()
+ shader->begin()
.sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
.sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
.uploadVertices(2, GL_FLOAT, 0, p);
gl.drawArrays(GL_POLYGON, 0, count);
+
+ shader->end();
}
}
diff --git a/src/libjin/graphics/shaders/je_shader.cpp b/src/libjin/graphics/shaders/je_shader.cpp
index 059c411..0803e65 100644
--- a/src/libjin/graphics/shaders/je_shader.cpp
+++ b/src/libjin/graphics/shaders/je_shader.cpp
@@ -58,7 +58,8 @@ namespace JinEngine
//
const int DEFAULT_TEXTURE_UNIT = 0;
- GLint Shader::mTextureUnit = DEFAULT_TEXTURE_UNIT;
+ static GLint textureUnit = 0;
+
GLint Shader::mAttributeIndex = 0;
Shader::Shader(const string& program)
@@ -79,8 +80,11 @@ namespace JinEngine
glDeleteShader(mPID);
}
- Shader& Shader::prepare()
+ Shader& Shader::begin()
{
+
+ textureUnit = DEFAULT_TEXTURE_UNIT;
+
// Send uniforms.
sendInt(SHADER_MAIN_TEXTURE, DEFAULT_TEXTURE_UNIT);
sendVec2(SHADER_TIME, Time::getSecond(), Time::getDeltaTime());
@@ -93,15 +97,17 @@ namespace JinEngine
{
sendVec2(SHADER_RENDERTARGET_SIZE, rt->getWidth(), rt->getHeight());
}
- // Reset attribute index.
- for(; mAttributeIndex > 0; --mAttributeIndex)
- glDisableVertexAttribArray(mAttributeIndex);
-
- mTextureUnit = DEFAULT_TEXTURE_UNIT;
return *this;
}
+ void Shader::end()
+ {
+ // Reset attribute index.
+ for (; mAttributeIndex > 0; --mAttributeIndex)
+ glDisableVertexAttribArray(mAttributeIndex);
+ }
+
bool Shader::compile(const string& program)
{
string vertex_shader, fragment_shader;
@@ -159,7 +165,7 @@ namespace JinEngine
// return 0;
//mTextureUnits[name] = mCurrentTextureUnit;
//return mCurrentTextureUnit;
- return mTextureUnit++;
+ return textureUnit++;
}
GLint Shader::getUniformLocation(const char* uniform)
diff --git a/src/libjin/graphics/shaders/je_shader.h b/src/libjin/graphics/shaders/je_shader.h
index c3ca721..402805a 100644
--- a/src/libjin/graphics/shaders/je_shader.h
+++ b/src/libjin/graphics/shaders/je_shader.h
@@ -47,7 +47,12 @@ namespace JinEngine
///
/// Prepare shader and set default uniforms.
///
- Shader& prepare();
+ Shader& begin();
+
+ ///
+ /// End use shader.
+ ///
+ void end();
///
/// Send float value to shader.
@@ -181,7 +186,7 @@ namespace JinEngine
///
bool compile(const std::string& program);
- static GLint mTextureUnit;
+ //static GLint mTextureUnit;
static GLint mAttributeIndex;
GLuint mPID;